From nobody Tue Aug 25 14:34:35 2026 Received: from fra-out-001.esa.eu-central-1.outbound.mail-perimeter.amazon.com (fra-out-001.esa.eu-central-1.outbound.mail-perimeter.amazon.com [18.156.205.64]) (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 0D73D427F97; Wed, 5 Aug 2026 19:55:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=18.156.205.64 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785959748; cv=fail; b=B0r13uO/TuS2PkVhhEnf2IzCdk24r3Ddy6dVGcUymeorP3Y5JbxGU0u2GroBEsDB9SHofTdtwRBfSrA2S5oP+dRe6SBEQPsraF1TAYtRU51FimR2XulVvZEjyNLzHctRYQ+ff1OtpP0lsxXE2j9hMZYRoO2gGFMT5qHpeDTZp1Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785959748; c=relaxed/simple; bh=ZaCRjYfIjw2kNu3DrICHJolETJJY0746QsN5wVmeG/w=; h=Content-Type:MIME-Version:From:To:CC:Subject:Date:Message-ID: References:In-Reply-To:MIME-Version; b=tWJqtbfhwSPbARrzGr4B7GDhajVa1DRaM9XcWOC52VszO2jnVUjJivO4g1zCWOUovuQkskPE5q7yBBfqj4POSi3Uatq+RgfR8eSBTMT2cJgrt7erA+sfnTXZ6IA34zxO3T6guo6+yk2WGJvoirWuZi0YVCsDbLVHsA95iMwS1/8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.co.uk; spf=pass smtp.mailfrom=amazon.co.uk; dkim=pass (2048-bit key) header.d=amazon.co.uk header.i=@amazon.co.uk header.b=Rnk2uolt; arc=fail smtp.client-ip=18.156.205.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.co.uk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=amazon.co.uk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=amazon.co.uk header.i=@amazon.co.uk header.b="Rnk2uolt" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.co.uk; i=@amazon.co.uk; q=dns/txt; s=amazoncorp2; t=1785959746; x=1817495746; h=from:to:cc:subject:date:message-id:references: in-reply-to; bh=J6ayiSCTaQlH1glWOxR280+LBKoVrczZBGAn4hq2B5k=; b=Rnk2uolt8YmeUZ8hcDWdEtn8F/0E+MfGhOUpnHossUxmWla/8b1NOWk3 2NoP08WSGGHjSdmHPx4mq9ELry81E3VPnsK5HNdC6Jfi/LE4okQ2qI08g 3htu2w71XJ284441NI7k/GP742uCuOYfTZcjJ3msFPtT5f3RE4WnbsX9Q AZSyLwUjqYRdwISYa+/WLfjvTIPfEJ2JFfn96ENmDQ1vLDQcXYiDCkRFa jUjtHeJ/Wj15qNKbdvZIaicEFI2da8PJHaQ+NpHNtHsXiyzJicng2h5TI pWtJYGs/1fOKWLTI2e4yZAjwbFUe4LmDqVcEJ1yFc8EbQY/71yyyxlFOO g==; X-CSE-ConnectionGUID: AWcTbD5NTDiQdiPVH5FpMA== X-CSE-MsgGUID: qslL7uG2TimdjU3L6hv9Cw== X-Amazon-filename: smime.p7s X-IronPort-AV: E=Sophos;i="6.25,207,1779148800"; d="p7s'346?scan'346,208,346";a="17142845" Content-Type: multipart/mixed; boundary="===============4076452882560077655==" Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Received: from ip-10-6-6-97.eu-central-1.compute.internal (HELO smtpout.naws.eu-central-1.prod.farcaster.email.amazon.dev) ([10.6.6.97]) by internal-fra-out-001.esa.eu-central-1.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Aug 2026 19:55:42 +0000 Received: from EX19MTAEUC001.ant.amazon.com [54.240.197.225:1967] by smtpin.naws.eu-central-1.prod.farcaster.email.amazon.dev [10.0.15.0:2525] with esmtp (Farcaster) id 70c464ee-a1e9-419c-a2a6-745b024a8e25; Wed, 5 Aug 2026 19:55:41 +0000 (UTC) X-Farcaster-Flow-ID: 70c464ee-a1e9-419c-a2a6-745b024a8e25 Received: from EX19EXOEUC002.ant.amazon.com (10.252.51.145) by EX19MTAEUC001.ant.amazon.com (10.252.51.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45; Wed, 5 Aug 2026 19:55:41 +0000 Received: from EX19EXOEUA002.ant.amazon.com (10.252.50.139) by EX19EXOEUC002.ant.amazon.com (10.252.51.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45; Wed, 5 Aug 2026 19:55:41 +0000 Received: from LO2P265CU024.outbound.protection.outlook.com (10.252.51.94) by EX19EXOEUA002.ant.amazon.com (10.252.50.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45 via Frontend Transport; Wed, 5 Aug 2026 19:55:41 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DUmIFi8UmyH8e03KV6pyf9/zNjdCt2SsBHC32g2YjGeXFJvX7eO+WYtzckJUdH6NGCGTLDJAlomT5NVYeZWsD0+OniJ7Z6WJ2FBwapi90Kl48+xL8AGrBYP3kgOrtOgTRXJ6Ln9q44RDJMyYZqJP11La2/WMw8beePyTfXXkzMo5jVUVbXAucwStrbPXMpDpQewsM4FaAbQ49IP7L8u2Qe7GWrZ+uLh12MFf9gO4s1jayhH55s//rKZu/kXRAaHnsjpvDlkiXPN5ww3VNudDa4vbHpIvbPwCr1DUshA552gJZZooFMDMLkILMgWdGBd2vJZfMWXXeoKEg02T558NJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:MIME-Version; bh=QbbaeiSGu/RXJRzRfoK56xcdhyDdwi2icWARLY3jaPQ=; b=eGhxlHDmQ9iWxP8jmgDk8FX+bZCv16s2Gpc3KI4xb3h6lInKstzvgx6RBH4Uk9Z/15VTOk7aZyrMSOchepAz05lCrK7seZ5Zr88LxQliaqmDKSu6lnUrUUlClV60umDZUlGfM1BARGR5jAVjfeOdFZRZMhrLCT+yCJ4lcmgkJP2Lncs0T/3qzEjgsJuUlQjQqBSNVRMOruuNPnZZmat3J1HC4bJ7ITYamvh6JYreAp3lqTelUuplNPaUeAJfBZjmttwM0A0PBjQ7Uw5gddZLU1VLrCAqPdk+JveQCP9YvivGYU0Nf4a8mPL7lsobE6x+AOoU5yZuRjpeDxSETN6mIg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amazon.co.uk; dmarc=pass action=none header.from=amazon.co.uk; dkim=pass header.d=amazon.co.uk; arc=none Received: from LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:4b4::12) by LO3P123MB3417.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:bd::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.19; Wed, 5 Aug 2026 19:55:36 +0000 Received: from LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM ([fe80::c7e3:476c:6170:8f6]) by LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM ([fe80::c7e3:476c:6170:8f6%6]) with mapi id 15.21.0292.018; Wed, 5 Aug 2026 19:55:36 +0000 From: "Woodhouse, David" To: "seanjc@google.com" , "pbonzini@redhat.com" , "akpm@linux-foundation.org" CC: "bigeasy@linutronix.de" , "peterz@infradead.org" , "mingo@redhat.com" , "will@kernel.org" , "longman@redhat.com" , "boqun@kernel.org" , "tglx@kernel.org" , "paul@xen.org" , "Stollmaier, Carsten" , "dwmw2@infradead.org" , "Woodhouse, David" , "daniel.vetter@ffwll.ch" , "mhocko@suse.com" , "jgg@nvidia.com" , "christian.koenig@amd.com" , "jglisse@redhat.com" , "david@kernel.org" , "ljs@kernel.org" , "liam@infradead.org" , "vbabka@kernel.org" , "rppt@kernel.org" , "surenb@google.com" , "bp@alien8.de" , "dave.hansen@linux.intel.com" , "hpa@zytor.com" , "x86@kernel.org" , "kvm@vger.kernel.org" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , "syzbot+0948c82180d475ad24e2@syzkaller.appspotmail.com" , "syzbot+fb7c2dd166d3ea63df2a@syzkaller.appspotmail.com" , "stable@vger.kernel.org" Subject: [PATCH v3 1/7] KVM: pfncache: use a dedicated invalidation sequence for cache refresh Thread-Topic: [PATCH v3 1/7] KVM: pfncache: use a dedicated invalidation sequence for cache refresh Thread-Index: AQHdJRRitrDUC7gEH0eDi6O5EYFcdA== Date: Wed, 5 Aug 2026 19:55:36 +0000 Message-ID: <20260805195528.3853473-2-dwmw@amazon.co.uk> References: <20260805195528.3853473-1-dwmw@amazon.co.uk> In-Reply-To: <20260805195528.3853473-1-dwmw@amazon.co.uk> Accept-Language: en-GB, en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amazon.co.uk; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LOZP123MB8516:EE_|LO3P123MB3417:EE_ x-ms-office365-filtering-correlation-id: b84317d5-45da-4122-3cf9-08def32b84b5 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|6049299003|7416014|23010399003|376014|366016|1800799024|38070700021|4053099003|10067099003|11063799006|56012099006|18002099003|22082099003; x-microsoft-antispam-message-info: MCkAKauzvu2HTthJA3kcxGMkMwRgsM+loGLAK7SlwF7hf0mbWbGtOm/dm7sPTWV/cncY2mzoaWd4vKDjrez/g6fYBT94x9ledvGTLn4Brnt/dxj5Qe6K0rtngT45C1ADfGUaViC92gSAQ5Spo2BV038+9dAo9tkAIZluKxq9NKhRVKlONEGibrdRp6QQsPoZVurjRnqS9lVuAo4hl1zuBq4FSjQ12+3BqbzsNDKOP1eKBHJiGCUPoOdy1oQmLnnBCf3gxvSMDqudAoIdOWcT0sNt+DcwafywaZT2oGmoQFo6BBKit7VB84Kw8tchXMEqAkS52AUULvSe+ZaZvXcUPY6Qt3aAdIH3IxFe5d+XA+E8oOZdUcG5OdSkdfek199vVQxoTZaLFKz7BBhEs4mXfp2HbNwpZD59tDAZKNlbJeEbtQb5WCUJSA6LKBcMzIBDI1PFivh5YpfcGCrfBKe+KDjCx649cOWrNaBSeRLEsRIJGvXYsAmdPSfJN6tCmslpG1wIFiIANazFpxqt+ONTJknLlSxbMU1Xl4tfoXEO3j7022RqOOSyCTxGeE+tJ13l8FxEp9GleXzKelU6C+cKKDpLqrw/cqVpnZ61WLyTk45sXg0M4hi/vi+TGcDJAh/KuZH615y5OuE7NiA2oepmuuC6pg7sEfLyjPZ2HjRgGPmtX1vV9VWSZve+TOf9mpUetHp3j/xXMntmfw6pV/b10wzQPeWshfyuhi29ZS/7FuY= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(6049299003)(7416014)(23010399003)(376014)(366016)(1800799024)(38070700021)(4053099003)(10067099003)(11063799006)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?yQmspfNEIE2y6Gj1u6BwoClPG5z/1vkdZ16wjw/O6bQH1FtXt8wkaMPsuI?= =?iso-8859-1?Q?N3oes5+N2LY1DRjj4uBTjqx+yHvA9Hr8bG/IeWhCsGLVZWSF8Fi69SCHxA?= =?iso-8859-1?Q?f349/zvZYkqOWa4VW2WCOla6TQ1rw9STAbd8axJCTtKqam07xzynQ2tZ1M?= =?iso-8859-1?Q?dCK/8+Brnk4QJRvzoSUKJuF1WEC2BTqK2eFPkPwDkrPV3h8PZ8E0Cq/QJu?= =?iso-8859-1?Q?yd6hue5A2CXyf9nSXf/Fo4tByjddPB2fU0h8tInIR0F1TT4zHswiZyIPr6?= =?iso-8859-1?Q?/GpVbek0n/LW66lMCG8e2AbCL5uc6t6XlMuYfmFXzYUNK4uq4f5j9QT204?= =?iso-8859-1?Q?9nS0W0BIMVlaAg7cD64n8LWE8Cw+A2tLgi3zag0xU3Z0lOV5W3+JkfkLti?= =?iso-8859-1?Q?neotfZtejlwQTJhXD+kkZwVdVqg/A78Sk+GDe0YdSb7n9mwTCQ4TYrD87t?= =?iso-8859-1?Q?FUglIrbCtxCqYI4rAqrZD9OUGeypTnEiuf/u3lN/MEMYpeV64rednkxJuN?= =?iso-8859-1?Q?fgmjM4uVvscbCkWV3fKlTgy03qCB25j/qdVjhfnILF7UTxslCk8bmm6vfA?= =?iso-8859-1?Q?IxG3NTi9+XkXPx7p8GIpSMg1BKBktiZgLWeLAmq/GQYC/PzNXG08LNts2M?= =?iso-8859-1?Q?2VZrbsDqExAuRDj1pT8lesgD6K4r9EjROuJx5BKPbJABXJ0B8ktCdzAHR2?= =?iso-8859-1?Q?9EXQuBpR1TLWZvzTSUzzxdzlDdHxRh5zpUR8vyK/XN5Ro4ldlanto3732B?= =?iso-8859-1?Q?ttGB9C9whx3G8koCLen0NaERVsYM+HmbVdcDoxXlxySBTUmSvyt7/iQHCB?= =?iso-8859-1?Q?WwBUjTHGznQ+H/tBrwGoNcIL1zDCRKy/h+N77UhD74z/9AZ3rtSPSFNUev?= =?iso-8859-1?Q?4bdJ8OyciNG03NfVyUeXqMYV6xa7oIzQUroxrBU3URh0w5AvK6n+gJ7EIH?= =?iso-8859-1?Q?TjWX5Ujd56biulVvG6XYKABqXQk4aKtLbeA2oH9I0pGUJILTVGBH/KQM/j?= =?iso-8859-1?Q?V2qmcsz4XqenHjKxn8YalP9pZgb5RsZVC/6k9QMZq2mNaYDvGpitkJC9gk?= =?iso-8859-1?Q?bftC/qbi2McGBIDYGH8jdJnXtJ+oxCYAJUQ74OoJmwwmkXINuZjmR+Den4?= =?iso-8859-1?Q?LoxpIyAnrT6bECtfjMiM7VlDNlguueu0EhnNhsxbFwV0ms1iR7DMVyIsj6?= =?iso-8859-1?Q?RgDhSs0co1YnRwtckWatVAT3KikZDMIoBX9Bz9XwYQQlLN9H7JKjCeJQZH?= =?iso-8859-1?Q?9hLbrgx7O4geNh2AmxG6H8J7xo60vI94ftMkX8pH8+esQ0CZPXTZ/hmTXH?= =?iso-8859-1?Q?K86580TVXw/pN2RBWy8d/gM5xvsBrS4WxVjrYJV5Xh3fNejFYBL1bT/07c?= =?iso-8859-1?Q?FnwCnjCJ4LAe5rx1Aj82NSoHvVI9ClzOqq1oYPJTHrDm+0rdpQBsp6Tgpt?= =?iso-8859-1?Q?IZ8WIgwOds5Hd67QtLB6+5VF9M8zx1Hyh3NjWmz2ZB6VmumjVt9flFk6/G?= =?iso-8859-1?Q?ftbRLmaSOzrm6TstDEKfApNhNBn+QJZ98mstUvpy08OdNSCLPLO211tekV?= =?iso-8859-1?Q?CXVMAec+QxaWOxriTKQbj4rEJWgeERyDGbduLdJ+olCLi2mIfSsck5zl1Q?= =?iso-8859-1?Q?SH2ariSAGVQV5onEIggSa02oCQkuDIRv1iYQQ+iclpHTeuzwFqw3dW1BvL?= =?iso-8859-1?Q?WMtBDiUCBwyOEAbD6PyjRzcrRkB359pwDXaLoom6gwVzV6T1yZIIB7hQU5?= =?iso-8859-1?Q?eRWUaGJD7I0xCyZ2rKYgso+ytLAqamHulXmuCubrFYvhrI?= MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: LEFif/QFQQ/RdRMkaHE/nQAWg3svbQxFC9M0HJTdnQ3udvJL7wdXdHlRRhwBY+vzoAto6r0NKCkCkkwZ8OHDLjCgmp4S4czT5jy18l9JTpU845tfXB/ZowxwxzFZOYUrdzlzIvEx+gJQg7hkgPLEnzsTb3IN2v7BIa27U6IikO6+fiLUYAebeOxI4NtN/6MgfXppff/0i1nQaq+rS/84I/Nae/Jh/Vzo0rKscwp2mGXD/VmL4DbNLIwmb4vLYlsCcFwMOLn1nmK+GnzH1ynWRt61Vq5avwY4k41kV19PaxO7mVNUGKXE4jlX/Y0vgj7HLbJprzrgr3SOp5ey8Ny3hw== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: b84317d5-45da-4122-3cf9-08def32b84b5 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2026 19:55:36.8510 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5280104a-472d-4538-9ccf-1e1d0efe8b1b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 5XFrnTEdDKWxoC4FpNvqBgvxjf93TSl9CxcR4P/jBoLJuCdABoouGkvx+tvLcsRbKXEBy3HtcfxgYQNCSkKj1w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO3P123MB3417 X-OriginatorOrg: amazon.co.uk --===============4076452882560077655== Content-Language: en-US Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha-256; boundary="----A5620834ADBE581CC9892966FA9ECB3A" ------A5620834ADBE581CC9892966FA9ECB3A MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The gfn_to_pfn_cache refresh path guards against mmu notifier invalidations which complete while it has dropped gpc->lock for the HVA->PFN lookup: hva_to_pfn_retry() samples kvm->mmu_invalidate_seq and retries if it changed, or if mn_active_invalidate_count is still elevated. That is insufficient for HVA-based caches. mmu_invalidate_seq is only advanced by kvm_mmu_invalidate_end() when the invalidated range overlaps a memslot, and an HVA-based cache (e.g. the Xen shared_info page mapped with KVM_XEN_ATTR_TYPE_SHARED_INFO_HVA) need not be backed by any memslot at all. An invalidation of the cached HVA which starts and ends entirely within the lookup window is thus invisible to the retry check: mn_active_invalidate_count is back to zero and the sequence never moved. The refresh then publishes a mapping of a page which has already been freed, and the next reader dereferences it: BUG: KASAN: use-after-free in kvm_xen_shared_info_init+0x3c6/0x440 Read of size 4 at addr ffff8880599c2900 by task syz.2.383/7257 Since gfn_to_pfn_cache_invalidate_start() deliberately skips caches which are not currently valid (including one whose refresh is in progress, as the refresh clears the valid flag before dropping the lock), the retry check is the only line of defence, and it must fire for *any* invalidation, not just those hitting a memslot. Add a dedicated kvm->gpc_invalidate_seq, incremented by every kvm_mmu_notifier_invalidate_range_end() under mn_invalidate_lock before mn_active_invalidate_count is decremented, and check it in hva_to_pfn_retry() instead of mmu_invalidate_seq. Incrementing in range_end() in the same critical section as the in-progress count also closes the variant where the cache is activated with the contested HVA only after invalidate_range_start() has run. The same bug is also reachable through the per-vCPU vcpu_info cache (KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO_HVA), where the stale mapping is then dereferenced by kvm_setup_guest_pvclock() on the next KVM_RUN: BUG: KASAN: use-after-free in kvm_setup_guest_pvclock+0x5bf/0x660 This intentionally makes refresh retry on *unrelated* mmu notifier events; restoring precision (and reworking the GPC locking more generally) is left for a subsequent series. Reproducers: https://david.woodhou.se/xen_shinfo_race.c https://david.woodhou.se/vcpu_info_race.c Suggested-by: Sean Christopherson Reported-by: syzbot+0948c82180d475ad24e2@syzkaller.appspotmail.com Closes: https://lore.kernel.org/all/6a0c5f2c.a00a0220.2c7954.0000.GAE@google.com/ Tested-by: syzbot+0948c82180d475ad24e2@syzkaller.appspotmail.com Reported-by: syzbot+fb7c2dd166d3ea63df2a@syzkaller.appspotmail.com Closes: https://lore.kernel.org/all/6a426dd2.854d4ab9.360e1d.0008.GAE@google.com/ Fixes: b9220d32799a ("KVM: x86/xen: allow shared_info to be mapped by fixed HVA") Cc: stable@vger.kernel.org Signed-off-by: David Woodhouse Assisted-by: Claude:claude-mythos-5 --- include/linux/kvm_host.h | 2 ++ virt/kvm/kvm_main.c | 10 ++++++++++ virt/kvm/pfncache.c | 18 +++++++++--------- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index 03bfc92864b6..3dd04605f2e5 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -855,6 +855,8 @@ struct kvm { gfn_t mmu_invalidate_range_start; gfn_t mmu_invalidate_range_end; + unsigned long gpc_invalidate_seq; + struct list_head devices; u64 manual_dirty_log_protect; struct dentry *debugfs_dentry; diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 345d56a15fa4..41c88a8ade95 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -812,6 +812,16 @@ static void kvm_mmu_notifier_invalidate_range_end(struct mmu_notifier *mn, /* Pairs with the increment in range_start(). */ spin_lock(&kvm->mn_invalidate_lock); + kvm->gpc_invalidate_seq++; + + /* + * As with the MMU sequence counter and mmu_invalidate_in_progress, the + * GPC sequence increase must be visible before the invalidate count + * goes to zero. Pairs with the smp_rmb() in + * mmu_notifier_retry_cache(). + */ + smp_wmb(); + if (!WARN_ON_ONCE(!kvm->mn_active_invalidate_count)) --kvm->mn_active_invalidate_count; wake = !kvm->mn_active_invalidate_count; diff --git a/virt/kvm/pfncache.c b/virt/kvm/pfncache.c index 728d2c1b488a..3659686b97c2 100644 --- a/virt/kvm/pfncache.c +++ b/virt/kvm/pfncache.c @@ -124,7 +124,7 @@ static void gpc_unmap(kvm_pfn_t pfn, void *khva) #endif } -static inline bool mmu_notifier_retry_cache(struct kvm *kvm, unsigned long mmu_seq) +static inline bool mmu_notifier_retry_cache(struct kvm *kvm, unsigned long gpc_seq) { /* * mn_active_invalidate_count acts for all intents and purposes @@ -136,20 +136,20 @@ static inline bool mmu_notifier_retry_cache(struct kvm *kvm, unsigned long mmu_s * Note, it does not matter that mn_active_invalidate_count * is not protected by gpc->lock. It is guaranteed to * be elevated before the mmu_notifier acquires gpc->lock, and - * isn't dropped until after mmu_invalidate_seq is updated. + * isn't dropped until after gpc_invalidate_seq is updated. */ if (kvm->mn_active_invalidate_count) return true; /* * Ensure mn_active_invalidate_count is read before - * mmu_invalidate_seq. This pairs with the smp_wmb() in - * mmu_notifier_invalidate_range_end() to guarantee either the + * gpc_invalidate_seq. This pairs with the smp_wmb() in + * kvm_mmu_notifier_invalidate_range_end() to guarantee either the * old (non-zero) value of mn_active_invalidate_count or the - * new (incremented) value of mmu_invalidate_seq is observed. + * new (incremented) value of gpc_invalidate_seq is observed. */ smp_rmb(); - return kvm->mmu_invalidate_seq != mmu_seq; + return kvm->gpc_invalidate_seq != gpc_seq; } static kvm_pfn_t hva_to_pfn_retry(struct gfn_to_pfn_cache *gpc) @@ -158,7 +158,7 @@ static kvm_pfn_t hva_to_pfn_retry(struct gfn_to_pfn_cache *gpc) void *old_khva = (void *)PAGE_ALIGN_DOWN((uintptr_t)gpc->khva); kvm_pfn_t new_pfn = KVM_PFN_ERR_FAULT; void *new_khva = NULL; - unsigned long mmu_seq; + unsigned long gpc_seq; struct page *page; struct kvm_follow_pfn kfp = { @@ -181,7 +181,7 @@ static kvm_pfn_t hva_to_pfn_retry(struct gfn_to_pfn_cache *gpc) gpc->valid = false; do { - mmu_seq = gpc->kvm->mmu_invalidate_seq; + gpc_seq = gpc->kvm->gpc_invalidate_seq; smp_rmb(); write_unlock_irq(&gpc->lock); @@ -232,7 +232,7 @@ static kvm_pfn_t hva_to_pfn_retry(struct gfn_to_pfn_cache *gpc) * attempting to refresh. */ WARN_ON_ONCE(gpc->valid); - } while (mmu_notifier_retry_cache(gpc->kvm, mmu_seq)); + } while (mmu_notifier_retry_cache(gpc->kvm, gpc_seq)); gpc->valid = true; gpc->pfn = new_pfn; base-commit: 51ba04112e93ac6e04c627eddcea5caf9cbc0134 -- 2.43.0 ------A5620834ADBE581CC9892966FA9ECB3A Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" MII+PgYJKoZIhvcNAQcCoII+LzCCPisCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGg gjpEMIIGEDCCA/igAwIBAgIQTZQsENQ74JQJxYEtOisGTzANBgkqhkiG9w0BAQwFADCBiDELMAkG A1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYD VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlm aWNhdGlvbiBBdXRob3JpdHkwHhcNMTgxMTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBljELMAkG A1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEY MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0 aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBAMo87ZQKQf/e+Ua56NY75tqSvysQTqoavIK9viYcKSoq0s2cUIE/bZQu85eoZ9X140qO TKl1HyLTJbazGl6nBEibivHbSuejQkq6uIgymiqvTcTlxZql19szfBxxo0Nm9l79L9S+TZNTEDyg NfcXlkHKRhBhVFHdJDfqB6Mfi/Wlda43zYgo92yZOpCWjj2mz4tudN55/yE1+XvFnz5xsOFbme/S oY9WAa39uJORHtbC0x7C7aYivToxuIkEQXaumf05Vcf4RgHs+Yd+mwSTManRy6XcCFJE6k/LHt3n dD3sA3If/JBz6OX2ZebtQdHnKav7Azf+bAhudg7PkFOTuRMCAwEAAaOCAWQwggFgMB8GA1UdIwQY MBaAFFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBQJwPL8C9qU21/+K9+omULPyeCtADAO BgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAgYI KwYBBQUHAwQwEQYDVR0gBAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwu dXNlcnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNvbS9VU0VSVHJ1 c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNlcnRydXN0LmNv bTANBgkqhkiG9w0BAQwFAAOCAgEAQUR1AKs5whX13o6VbTJxaIwA3RfXehwQOJDI47G9FzGR87bj grShfsbMIYdhqpFuSUKzPM1ZVPgNlT+9istp5UQNRsJiD4KLu+E2f102qxxvM3TEoGg65FWM89YN 5yFTvSB5PelcLGnCLwRfCX6iLPvGlh9j30lKzcT+mLO1NLGWMeK1w+vnKhav2VuQVHwpTf64ZNnX UF8p+5JJpGtkUG/XfdJ5jR3YCq8H0OPZkNoVkDQ5CSSF8Co2AOlVEf32VBXglIrHQ3v9AAS0yPo4 Xl1FdXqGFe5TcDQSqXh3TbjugGnG+d9yZX3lB8bwc/Tn2FlIl7tPbDAL4jNdUNA7jGee+tAnTtlZ 6bFz+CsWmCIb6j6lDFqkXVsp+3KyLTZGXq6F2nnBtN4t5jO3ZIj2gpIKHAYNBAWLG2Q2fG7Bt2tP C8BLC9WIM90gbMhAmtMGquITn/2fORdsNmaV3z/sPKuIn8DvdEhmWVfh0fyYeqxGlTw0RfwhBlak dYYrkDmdWC+XszE19GUi8K8plBNKcIvyg2omAdebrMIHiAHAOiczxX/aS5ABRVrNUDcjfvp4hYbD OO6qHcfzy/uY0fO5ssebmHQREJJA3PpSgdVnLernF6pthJrGkNDPeUI05svqw1o5A2HcNzLOpklh NwZ+4uWYLcAi14ACHuVvJsmzNicwggXeMIIDxqADAgECAhAB/W0w/KPKUagbvGQONQMtMA0GCSqG SIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxML SmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNF UlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xMDAyMDEwMDAwMDBaFw0zODAx MTgyMzU5NTlaMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxML SmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNF UlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIP ADCCAgoCggIBAIASZRc2DsPbCLPQrFcNdu3NJ9NMrVCDYeKqIE0JLWQJ3M6Jn8w9qez2z8Hc8dOx 1ns3KBErR9o5xrw6GbRfpr19naNjQrZ28qk7K5H44m/Q7BYgkAk+4uh0yRi0kdRiZNt/owbxiBhq kCI8vP4T8IcUe/bkH47U5FHGEWdGCFHLhhRUP7wz/n5snP8WnRi9UY41pqdmyHJn2yFmsdSbeAPA UDrozPDcvJ5M/q8FljUfV1q3/875PbcstvZU3cjnEjpNrkyKt1yatLcgPcp/IjSufjtoZgFE5wFO RlObM2D3lL5TN5BzQ/Myw1Pv26r+dE5px2uMYJPexMcM3+EyrsyTO1F4lWeL7j1W/gzQaQ8bD/Ml JmszbfduR/pzQ+V+DqVmsSl8MoRjVYnEDcGTVDAZE6zTfTen6106bDVc20HXEtqpSQvf2ICKCZNi jrVmzyWIzYS4sT+kOQ/ZAp7rEkyVfPNrBaleFoPMuGfi6BOdzFuC00yz7Vv/3uVzrCM7LQC/NVV0 CUnYSVgaf5I25lGSDvMmfRxNF7zJ7EMm0L9BX0CpRET0medXh55QH1dUqD79dGMvsVBlCeZYQi5D Gky08CVHWfoEHpPUJkZKUIGy3r54t/xnFeHJV4QeD2PW6WK61l9VLupcxigIBCU5uA4rqfJMlxwH Pw1S9e3vL4IPAgMBAAGjQjBAMB0GA1UdDgQWBBRTeb9aqitKz1SA4dibwJ3ysgNmyzAOBgNVHQ8B Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQwFAAOCAgEAXNR8Dc/3AX1BmWUM c8VSn8v4z5kGfxvaQxWfngJVV5YU8VI8J4eUKO0fOgE3onb8U1DAhJvGa066jCFPoo5VYpHzaRXY vIjjxKoL/e+o6UtVKgYgbVV4KRnuXzBcSyQRVf8kmm5eKivuC02ff/cBOJQUlUMHCftgqe4cqxKM oJpep5hqWW2LPwj7yNFFrxgVZJASD3MoLsXiJE78WOzw9EX+IrPrL47S2UVhBcGXb6h2co+LjDav vw0FznGN5qZvH2ymcWLF2NCDcgzxZxGJDJwTTHI037zVcd+qcd3huWyMPBJdZdq9VxK2Q2v/5d5N ZhFRz5mu7Be26HGRjN5J/t01caIVJ5Qcz2HjJrtvo2clIV3m3R0LLmgbO4Kv7INnhdSYUXSxuZmA if9/eBlceUpgLpJArkw3KizJx2LIDl33NlvK4CUlAbTdGgecdwA/0NzV7D3U+rs/zIXWb3+pLd+5 Avf1l5q1NdrDZ7CHSqkoniOO/1wna+GwT/MH7gAu1FmHy1JBler0R9fuZEFVfI1ZApXdYp3Cue5a KHSEpZu3kMcMB9/1iTZ0MtYowbCwC+CcTMMc1vzjabVHRoEvooKr02NEcMSN/y0zuq2Pe7VwiK4+ Gc9AKNj8yJC7XZki9VLmWMUfiDFD7ogd18aOPENqHacY3n09FvFi+cqQqP0wggYQMIID+KADAgEC AhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UE CBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJV U1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UE CBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdv IExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQg U2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyjztlApB/975 Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUfItMltrMaXqcESJuK 8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeWQcpGEGFUUd0kN+oH ox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YBrf24k5Ee1sLTHsLt piK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewDch/8kHPo5fZl5u1B 0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAUU3m/WqorSs9UgOHY m8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1UdDwEB/wQEAwIBhjAS BgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDARBgNVHSAE CjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VT RVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUFBwEBBGowaDA/Bggr BgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJTQUFkZFRydXN0Q0Eu Y3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUA A4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+xswhh2GqkW5JQrM8 zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9IHk96VwsacIvBF8J fqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7kkmka2RQb9d90nmN HdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1eoYV7lNwNBKpeHdN uO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4KxaYIhvqPqUMWqRd Wyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL1Ygz3SBsyECa0waq 4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQOZ1YL5ezMTX0ZSLw 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 DTI4MDEwOTIzNTk1OVowgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0 ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMT0wOwYDVQQD EzRDT01PRE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvrOeV6wodnVAFsc4A5jTxhh2IVDzJXkLTLWg 0X06WD6cpzEup/Y0dtmEatrQPTRI5Or1u6zf+bGBSyD9aH95dDSmeny1nxdlYCeXIoymMv6pQHJG NcIDpFDIMypVpVSRsivlJTRENf+RKwrB6vcfWlP8dSsE3Rfywq09N0ZfxcBa39V0wsGtkGWC+eQK iz4pBZYKjrc5NOpG9qrxpZxyb4o4yNNwTqzaaPpGRqXB7IMjtf7tTmU2jqPMLxFNe1VXj9XB1rHv bRikw8lBoNoSWY66nJN/VCJv5ym6Q0mdCbDKCMPybTjoNCQuelc0IAaO4nLUXk0BOSxSxt8kCvsU tQIDAQABo4IBPDCCATgwHwYDVR0jBBgwFoAUu69+Aj36pvE8hI6t7jiY7NkyMtQwHQYDVR0OBBYE FIKvbIz4xf6WYXzoHz0rcUhexIvAMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEA MBEGA1UdIAQKMAgwBgYEVR0gADBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9kb2Nh LmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEFBQcBAQRlMGMw OwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQUFkZFRydXN0Q0Eu Y3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZIhvcNAQEMBQAD ggIBAHhcsoEoNE887l9Wzp+XVuyPomsX9vP2SQgG1NgvNc3fQP7TcePo7EIMERoh42awGGsma65u /ITse2hKZHzT0CBxhuhb6txM1n/y78e/4ZOs0j8CGpfb+SJA3GaBQ+394k+z3ZByWPQedXLL1OdK 8aRINTsjk/H5Ns77zwbjOKkDamxlpZ4TKSDMKVmU/PUWNMKSTvtlenlxBhh7ETrN543j/Q6qqgCW gWuMAXijnRglp9fyadqGOncjZjaaSOGTTFB+E2pvOUtY+hPebuPtTbq7vODqzCM6ryEhNhzf+enm 0zlpXK7q332nXttNtjv7VFNYG+I31gnMrwfHM5tdhYF/8v5UY5g2xANPECTQdu9vWPoqNSGDt87b 3gXb1AiGGaI06vzgkejL580ul+9hz9D0S0U4jkhJiA7EuTecP/CFtR72uYRBcunwwH3fciPjviDD AI9SnC/2aPY8ydehzuZutLbZdRJ5PDEJM/1tyZR2niOYihZ+FCbtf3D9mB12D4ln9icgc7CwaxpN SCPt8i/GqK2HsOgkL3VYnwtx7cJUmpvVdZ4ognzgXtgtdk3ShrtOS1iAN2ZBXFiRmjVzmehoMof0 6r1xub+85hFQzVxZx5/bRaTKTlL8YXLI8nAbR9HWdFqzcOoB/hxfEyIQpx9/s81rgzdEZOofSlZH ynoSMIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkG A1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEa MBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv biBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3F z0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPm NHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gc 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 TU9ET1JTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHEGCCsGAQUFBwEBBGUwYzA7BggrBgEF BQcwAoYvaHR0cDovL2NydC5jb21vZG9jYS5jb20vQ09NT0RPUlNBQWRkVHJ1c3RDQS5jcnQwJAYI KwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9kb2NhLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAeFyy gSg0TzzuX1bOn5dW7I+iaxf28/ZJCAbU2C81zd9A/tNx4+jsQgwRGiHjZrAYayZrrm78hOx7aEpk fNPQIHGG6Fvq3EzWf/Lvx7/hk6zSPwIal9v5IkDcZoFD7f3iT7PdkHJY9B51csvU50rxpEg1OyOT 8fk2zvvPBuM4qQNqbGWlnhMpIMwpWZT89RY0wpJO+2V6eXEGGHsROs3njeP9DqqqAJaBa4wBeKOd GCWn1/Jp2oY6dyNmNppI4ZNMUH4Tam85S1j6E95u4+1Nuru84OrMIzqvISE2HN/56ebTOWlcrurf fade2022O/tUU1gb4jfWCcyvB8czm12FgX/y/lRjmDbEA08QJNB2729Y+io1IYO3ztveBdvUCIYZ ojTq/OCR6MvnzS6X72HP0PRLRTiOSEmIDsS5N5w/8IW1Hva5hEFy6fDAfd9yI+O+IMMAj1KcL/Zo 9jzJ16HO5m60ttl1Enk8MQkz/W3JlHaeI5iKFn4UJu1/cP2YHXYPiWf2JyBzsLBrGk1II+3yL8ao rYew6CQvdVifC3HtwlSam9V1niiCfOBe2C12TdKGu05LWIA3ZkFcWJGaNXOZ6Ggyh/TqvXG5v7zm EVDNXFnHn9tFpMpOUvxhcsjycBtH0dZ0WrNw6gH+HF8TIhCnH3+zzWuDN0Rk6h9KVkfKehIwggXY MIIDwKADAgECAhBMqvnK22Nv4B/3TthbA4adMA0GCSqGSIb3DQEBDAUAMIGFMQswCQYDVQQGEwJH QjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQK ExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1 dGhvcml0eTAeFw0xMDAxMTkwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGFMQswCQYDVQQGEwJHQjEb MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD T01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhv cml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJHoVJLSClaxrA0k3cXPRGd0mSs3 o30jcABxvFPfxPoqEo9LfxBWvZ9wcrdhf8lLDxenPeOwBGHu/xGXx/SGPgr6Plz5k+Y0etkUa+ec s4Wggnp2r3GQ1+z9DfqcbPrfsIL0FH75vsSmL09/mX+1/GdDcr0MANaJ62ss0+2PmBwUq37l4278 2KjkkiTaQ2tiuFX96sG8bLaL8w6NmuSbbGmZ+HhIMEXVreENPEVg/DKWUSe8Z8PKLrZr6kbHxyCg sR9l3kgIuqROqfKDRjeE6+jMgUhDZ05yKptcvUwbKIpcInu0q5jZ7uBRg8MJRk5tPpn6lRfafDNX QTyNUe0LtlyvLGMa31fIP7zpXcSbr0WZ4qNaJLS6qVY9z2+q/0lYvvCo//S4rek3+7q49As6+ehD Qh6J2ITLE/HZu+GJYLiMKFasFB2cCudx688O3T2plqFIvTz3r7UNIkzAEYHsVjv206LiW7eyBCJS lYCTaeiOTGXxkQMtcHQC6otnFSlpUgK7199QalVGv6CjKGF/cNDDoqosIapHziicBkV2v4IYJ7TV rrTLUOZr9EyGcTDppt8WhuDY/0Dd+9BCiH+jMzouXB5BEYFjzhhxayvspoq3MVw6akfgw3lZ1iAa r/JqmKpyvFdK0kuduxD8sExB5e0dPV4onZzMv7NR2qdH5YRTAgMBAAGjQjBAMB0GA1UdDgQWBBS7 r34CPfqm8TyEjq3uOJjs2TIy1DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkq hkiG9w0BAQwFAAOCAgEACvHVRoS3rlG7bLJNQRQAk0ycy+XAVM+gJY4C+f2wog31IJg8Ey2sVqKw 1n4Rkukuup4umnKxvRlEbGE1opq0FhJpWozh1z6kGugvA/SuYR0QGyqki3rF/gWm4cDWyP6ero8r uj2Z+NhzCVhGbqac9Ncn05XaN4NyHNNz4KJHmQM4XdVJeQApHMfsmyAcByRpV3iyOfw6hKC1nHyN vy6TYie3OdoXGK69PAlo/4SbPNXWCwPjV54U99HrT8i9hyO3tklDeYVcuuuSC6HG6GioTBaxGpkK 6FMskruhCRh1DGWoe8sjtxrCKIXDG//QK2LvpHsJkZhnjBQBzWgGamMhdQOAiIpugcaF8qmkLef0 pSQQR4PKzfSNeVixBpvnGirZnQHXlH3tA0rK8NvoqQE+9VaZyR6OST275Qm54E9Jkj0WgkDMzFnG 5jrtEi5pPGyVsf2qHXt/hr4eDjJG+/sTj3V/TItLRmP+ADRAcMHDuaHdpnDiBLNBvOmAkepknHrh IgOpnG5vDmVPbIeHXvNuoPl1pZtA6FOyJ51KucB3IY3/h/LevIzvF9+3SQvR8m4wCxoOTnbtEfz1 6Vayfb/HbQqTjKXQwLYdvjpOlKLXbmwLwop8+iDzxOTlzQ2oy5GSsXyF7LUUaWYOgufNzsgtplF/ IcE1U4UGSl2frbsbX3QwggSvMIIDl6ADAgECAhEA4CPLFRKDU4mtYW56VGdrITANBgkqhkiG9w0B AQsFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRy dXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBS b290MB4XDTE0MTIyMjAwMDAwMFoXDTIwMDUzMDEwNDgzOFowgZsxCzAJBgNVBAYTAkdCMRswGQYD VQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9E TyBDQSBMaW1pdGVkMUEwPwYDVQQDEzhDT01PRE8gU0hBLTI1NiBDbGllbnQgQXV0aGVudGljYXRp b24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAImx Ddp6UxlOcFIdvFamBia3uEngludRq/HwWhNJFaO0jBtgvHpRQqd5jKQi3xdhTpHVdiMKFNNKAn+2 HQmAbqUEPdm6uxb+oYepLkNSQxZ8rzJQyKZPWukI2M+TJZx7iOgwZOak+FaA/SokFDMXmaxE5WmL o0YGS8Iz1OlAnwawsayTQLm1CJM6nCpToxDbPSBhPFUDjtlOdiUCISn6o3xxdk/u4V+B6ftUgNvD ezVSt4TeIj0sMC0xf1m9UjewM2ktQ+v61qXxl3dnUYzZ7ifrvKUHOHaMpKk4/9+M9QOsSb7K93OZ Og8yq5yVOhM9DkY6V3RhUL7GQD/L5OKfoiECAwEAAaOCARcwggETMB8GA1UdIwQYMBaAFK29mHo0 tCb3+sQmVO8DveAky1QaMB0GA1UdDgQWBBSSYWuC4aKgqk/sZ/HCo/e0gADB7DAOBgNVHQ8BAf8E BAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQw EQYDVR0gBAowCDAGBgRVHSAAMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0 LmNvbS9BZGRUcnVzdEV4dGVybmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUH MAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQELBQADggEBABsqbqxVwTqr iMXY7c1V86prYSvACRAjmQ/FZmpvsfW0tXdeDwJhAN99Bf4Ss6SAgAD8+x1banICCkG8BbrBWNUm wurVTYT7/oKYz1gb4yJjnFL4uwU2q31Ypd6rO2Pl2tVz7+zg+3vio//wQiOcyraNTT7kSxgDsqgt 1Ni7QkuQaYUQ26Y3NOh74AEQpZzKOsefT4g0bopl0BqKu6ncyso20fT8wmQpNa/WsadxEdIDQ7GP PprsnjJT9HaSyoY0B7ksyuYcStiZDcGG4pCS+1pCaiMhEOllx/XVu37qjIUgAmLq0ToHLFnFmTPy OInltukWeh95FPZKEBom+nyK+5swggYVMIIE/aADAgECAhBUK7v3iZFOwcXku0+rFipmMA0GCSqG SIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAw DgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3Rp Z28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTI0MTIx NTAwMDAwMFoXDTI2MTIxNTIzNTk1OVowIjEgMB4GCSqGSIb3DQEJARYRZHdtd0BhbWF6b24uY28u dWswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDYY7Ok+LSdJXMOPurGsBJ9haMJobp1 AbJ0lXHAfmgO7N2XfT2VeOglOqYQJQlqSpNchVXA9UZ3OLsde6OC21IBV4iqzkUtI4hf+TmtK1xt xSEhtV3Y7fKDyiKvvWdbNnuyKYuVlo+ABv8ZZB/2DDHLS/TvAgkR0q4YgoWxP4Eee8fTwJ7eWnmW dmFs2hjjnnHmmXvrurxwhyE0ZpJ0gJwF/2jaDSTbEAhnH6xPN8vYh5j/ARa0kWamowSpSqvLciXe RZ0sDx95ElHEJRzsIiHwkRVz+K6V0me5yjhGa90lx9OgA2PYGba0qcAW7sylgzxljEbkZ8/KII/2 Og3lONswf2QCIuW9Ac1n+LtKwREA+cbaTgsWB3Np10GhUlrt+pD9SWjahJROdTkPdhMlSn1tzeqm XCoga1Yo12NhLUfv+VvYsURZxLOJyHm/eEn/dlDBHhvXsNslb3GF1zT2onBp65BEjQtff2vGF8UB GX65gXgD0/b4kCYZ9zvrA+KT9ErN0o1WXOhDu736D9O27dp/WBNPF0j5MXMm9Sf+Lf/gLJJCnmBQ RnaY4MXfoixcY0sAcrWbod/uw7h1H4PO+lgOOInkA64R0o7r7gGdVm/FlLK6c63C6GI6hZm/23+v 8sqMZbd9ZnYDwvhS3PmLtQUMFwtyTG672xQVU7Z+V9hCgwIDAQABo4IB0DCCAcwwHwYDVR0jBBgw FoAUCcDy/AvalNtf/ivfqJlCz8ngrQAwHQYDVR0OBBYEFFr7QNV7ElfMY4HxUC/w1EzSGybuMA4G A1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMEMFAGA1UdIARJ MEcwOgYMKwYBBAGyMQECAQoCMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc2VjdGlnby5jb20vU01J TUVDUFMwCQYHZ4EMAQUBAzBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLnNlY3RpZ28uY29t L1NlY3RpZ29SU0FDbGllbnRBdXRoZW50aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3JsMIGKBggr BgEFBQcBAQR+MHwwVQYIKwYBBQUHMAKGSWh0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1JT QUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcnQwIwYIKwYBBQUHMAGGF2h0 dHA6Ly9vY3NwLnNlY3RpZ28uY29tMBwGA1UdEQQVMBOBEWR3bXdAYW1hem9uLmNvLnVrMA0GCSqG SIb3DQEBCwUAA4IBAQBA+k/q3z9lz3S3x6AneZ9YhiHGGrlnzx0XWTdk8O2uzRFyJJtsmTYszkqa dzazIljgTdd14Kp2C7KnacSYW48CnMyl+dP6n4YZDh7a0NBkZLnMmyuOOwGrpfNHGU/E91hvVPXY ZdwrfzLsigVkINzGJW1E+ruJAvT5PK3fnEdeLbWEVFgyk0tgay+3vI6TZrQqBGpA5DGODK6aDMDN X+ADVamfHJw57cF6uaK5mSJLDdg6sbCi5qxclQDjYakkk+9iJgXyFVoRUUwhfbU3COcBP9EpJduR WZkrAQdi1IHnICuzGcsPQ6P29LGEvvGJgP7o1AqjW9HzyQRPwfbwaJobMYIDvjCCA7oCAQEwgasw gZYxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1Nh bGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE+MDwGA1UEAxM1U2VjdGlnbyBSU0EgQ2xp ZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEFQru/eJkU7BxeS7T6sWKmYw DQYJYIZIAWUDBAIBBQCggeQwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUx DxcNMjYwODA1MTk1NTQzWjAvBgkqhkiG9w0BCQQxIgQgiV+HGLyiVZ8X5xOaT6jZ/+7MJpDgVHO7 CSsfaKqw0XIweQYJKoZIhvcNAQkPMWwwajALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCG SAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4D AgcwDQYIKoZIhvcNAwICASgwDQYJKoZIhvcNAQEBBQAEggIAmhAL/zYcMNKNvp8YEa+UtIAG1zqV 9fcPGtQpWdyuBZLSijAyCcgFFO+9dX2sxN6ReQPqseFdMw/9u+JZ8+DwbXsAcpdNr6Sjcs2AjkmZ nA221tnm6671dGu6oKNP4RyrBcMdrhux0Mq1nrMZXr+WkFGUGwSrQ005E6FpDXySgtfngE7NjKlN UTlYTxszfT5JXYPjHfffrCOEyLSKg2QqG/rZFE+kFCyFZM0dOYv7jbk8Aonjjcl7EV89jqcU/9cd /bzn7t/gMUlBBfEyh75EJXxNpGznGQbK8If3cdYyyPilFa8nHKdoYlhMda2Y/+cXnl3yVCEHKppW CRjzF8VTPzoqkcbHi5icdtF9fg6oUTmScoJHRu8Ug2SpzgYDr2iGjdu2yoP7OwgmZPZqyUVCJHQb cSSdBbqz6lVV3exUdnt1Wa200iWor9Az2wRvnMzvHpgx0UIXy4NM/zuqxDaNsFsDdEIV9nojBjg6 9K574W8zFORiM0pv4YuYiI5/pKzsIacateOghUqVGuTsXnV0ebYGNwICQKYObx4uFafXItmJig5z A7eUVixlL4NAIwa1lqo33Y3Oj47+zP5vH5sSkUu7yCIwFUdfQstFMuqOWhQLcaF3GEAz2tubtpli 0rkV1BSYQy7K4w34e2zPsRViLxGFxlExOfQWlojcv3/56o8= ------A5620834ADBE581CC9892966FA9ECB3A-- --===============4076452882560077655== Content-Type: multipart/alternative; boundary="===============4862635828317429347==" MIME-Version: 1.0 Content-Disposition: inline --===============4862635828317429347== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Amazon Development Centre (London) Ltd. Registered in England and Wales wit= h registration number 04543232 with its registered office at 1 Principal Pl= ace, Worship Street, London EC2A 2FA, United Kingdom. --===============4862635828317429347== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable


Amazon Development Centre (London) Ltd.Registered in England an= d Wales with registration number 04543232 with its registered office at 1 P= rincipal Place, Worship Street, London EC2A 2FA, United Kingdom.


--===============4862635828317429347==-- --===============4076452882560077655==-- From nobody Tue Aug 25 14:34:35 2026 Received: from fra-out-006.esa.eu-central-1.outbound.mail-perimeter.amazon.com (fra-out-006.esa.eu-central-1.outbound.mail-perimeter.amazon.com [18.197.217.180]) (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 D1B43423794; Wed, 5 Aug 2026 19:55:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=18.197.217.180 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785959755; cv=fail; b=Q0mvJAIihM8MM9DLdI0/yszAsvaToOKngaEyLyEzEZnL/AcmMpYJjd3psrxFW+S2L8HkRg5c6Q0OvXjncsOjH/qd4rF8J6ahqGtCD0C1Z/xqtYIhxaR62j4JYYrml0hJ/ZhPFdFG1dre0Dod+ODJq++eJc9XwMlmRnGaks7PjZM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785959755; c=relaxed/simple; bh=FfLO1BUMBAMnyxwaT4PTToAiWiKkXvsXY0YvkGIVzYI=; h=Content-Type:MIME-Version:From:To:CC:Subject:Date:Message-ID: References:In-Reply-To:MIME-Version; b=dVsliTpM+SgEl+Vk1ZOBdQjN+TWIWzd5JetVleZYgwsVVmjMOWARc/jvM+gwbKutMHhOCBRqVrYXfu7GlHj/5USIqO5ndeKvVMO/DL2trxHX7toVXy/CHFzSMMh+KQVAvUmRGGHhn74q73AEOIUgBMkta12HbnjkngOfk0g+vO4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.co.uk; spf=pass smtp.mailfrom=amazon.co.uk; dkim=pass (2048-bit key) header.d=amazon.co.uk header.i=@amazon.co.uk header.b=lB4BQvEy; arc=fail smtp.client-ip=18.197.217.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.co.uk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=amazon.co.uk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=amazon.co.uk header.i=@amazon.co.uk header.b="lB4BQvEy" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.co.uk; i=@amazon.co.uk; q=dns/txt; s=amazoncorp2; t=1785959753; x=1817495753; h=from:to:cc:subject:date:message-id:references: in-reply-to; bh=njTDX1l4CAMUN/iEQUDf+0M5RTBTQgWABYStuDaS7VY=; b=lB4BQvEy+sekQmJv3Y/MZa5GJ3jxAdSR9M0OEUFG6xK+vL+cq/WBwAdb 2E4IGnfd7EBduLJaOk7Ep7bpJZK9VQAsMkWEmVEGXILEnOqSNJmTGlJSw YC+1pI2STz14kS/8kAglxwEeyqkxivI3lZKZMN7n0bYgk+c9Ycqcv1JRz A67Yr3BvpWwtXgWW661bJl1StsHE9gnzOZy19N4YuGbnk2q+XVGVEyyKS TxBRj9YcZ4Zv/mdW6y9/U4PA9F3tIN7XTF+wx5uBlbvmLamZ/dDZbjaqx ZB99WsjYLP+YEXEmYzXy4+LQ310rrcoCzmvg1naVPm6H4DkE2ZuYMi8lW A==; X-CSE-ConnectionGUID: dJr9cmJqReS75e5DfuF/1w== X-CSE-MsgGUID: fzKmzQ4wSomoJ7AkBdW2FQ== X-Amazon-filename: smime.p7s X-IronPort-AV: E=Sophos;i="6.25,207,1779148800"; d="p7s'346?scan'346,208,346";a="17438940" Content-Type: multipart/mixed; boundary="===============2525170940429881838==" Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Received: from ip-10-6-11-83.eu-central-1.compute.internal (HELO smtpout.naws.eu-central-1.prod.farcaster.email.amazon.dev) ([10.6.11.83]) by internal-fra-out-006.esa.eu-central-1.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Aug 2026 19:55:48 +0000 Received: from EX19MTAEUA001.ant.amazon.com [54.240.197.233:29786] by smtpin.naws.eu-central-1.prod.farcaster.email.amazon.dev [10.0.15.0:2525] with esmtp (Farcaster) id 2fb6c594-df1c-439d-9767-69952b92e381; Wed, 5 Aug 2026 19:55:48 +0000 (UTC) X-Farcaster-Flow-ID: 2fb6c594-df1c-439d-9767-69952b92e381 Received: from EX19EXOEUC002.ant.amazon.com (10.252.51.145) by EX19MTAEUA001.ant.amazon.com (10.252.50.50) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45; Wed, 5 Aug 2026 19:55:47 +0000 Received: from LO2P265CU024.outbound.protection.outlook.com (10.252.51.199) by EX19EXOEUC002.ant.amazon.com (10.252.51.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45 via Frontend Transport; Wed, 5 Aug 2026 19:55:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=P1BqVgaDvHS9XbneNuHQcZfc8QEwjWNbYiFGVQ7wsWiIUvFiAa9vvZTuxXTlfdsDQD/FlMcZch3yYcHSQNljF46SNI7m1zio1TRHGdZZwlmgmJvuujSOOxc1BqQenGRgUCrjSlI6BVwTDGn7korls8qQxjkFx3OOPHEc5xY1SRLw4UbO3VY8HRfgGhGxxCXex/Jm+FsyLDPsnV3DmDvcoJMI56+NApONHaUY8w2VrC6NTeZdrei2sJGjOg4I/t/+uuK1OAbjscqa+2gHJBd7AGgVAfnFLsSeqA+vMJ/6Em7yWO9uj/Aj0ToEJu6qiFxQR9PR6zgyXFfIrze+UvF5qA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:MIME-Version; bh=bT3fymG17kWp32rRdkPivHdHo5QDE2woxfI3mm9HRIQ=; b=A2u0Rq/IG0FuGmr7WlDaZ30LRkm+N6yyPhIt5VNDy2vGC9Ce3TZQhgKp+x5ggU6PNZQm/n9aREMXMC/6jUCBVI5waaE/7wU+g6EA8fLgkLWHcghtY6hWHcOcxhq8MSvLiVdMsadraWyptt7lMxI4v46uPQ75oRRIxHI1ZzhlUlroM0RIy9cZVEFlxFtS2H2Mv1xB80Jyt01rz8BL+wEDYQbln7J7RT3Z4OOqta2vQ7tvQZP1gCgEkAc+AwHqpjppobyJHnt7PykP0wNB4PGV6H24IIAFV8UojL0uMbEIzJgeVjwBkY28mug7dETKtrIlAue4h3XWXUcgc25J1mB3Pw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amazon.co.uk; dmarc=pass action=none header.from=amazon.co.uk; dkim=pass header.d=amazon.co.uk; arc=none Received: from LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:4b4::12) by LO3P123MB3417.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:bd::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.19; Wed, 5 Aug 2026 19:55:43 +0000 Received: from LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM ([fe80::c7e3:476c:6170:8f6]) by LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM ([fe80::c7e3:476c:6170:8f6%6]) with mapi id 15.21.0292.018; Wed, 5 Aug 2026 19:55:43 +0000 From: "Woodhouse, David" To: "seanjc@google.com" , "pbonzini@redhat.com" , "akpm@linux-foundation.org" CC: "bigeasy@linutronix.de" , "peterz@infradead.org" , "mingo@redhat.com" , "will@kernel.org" , "longman@redhat.com" , "boqun@kernel.org" , "tglx@kernel.org" , "paul@xen.org" , "Stollmaier, Carsten" , "dwmw2@infradead.org" , "Woodhouse, David" , "daniel.vetter@ffwll.ch" , "mhocko@suse.com" , "jgg@nvidia.com" , "christian.koenig@amd.com" , "jglisse@redhat.com" , "david@kernel.org" , "ljs@kernel.org" , "liam@infradead.org" , "vbabka@kernel.org" , "rppt@kernel.org" , "surenb@google.com" , "bp@alien8.de" , "dave.hansen@linux.intel.com" , "hpa@zytor.com" , "x86@kernel.org" , "kvm@vger.kernel.org" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" Subject: [PATCH v3 2/7] mm/mmu_notifier: Remove non_block_start/end() from notifier invocation Thread-Topic: [PATCH v3 2/7] mm/mmu_notifier: Remove non_block_start/end() from notifier invocation Thread-Index: AQHdJRRl4fRVBAHJ5keGRxUdcdrlzw== Date: Wed, 5 Aug 2026 19:55:43 +0000 Message-ID: <20260805195528.3853473-3-dwmw@amazon.co.uk> References: <20260805195528.3853473-1-dwmw@amazon.co.uk> In-Reply-To: <20260805195528.3853473-1-dwmw@amazon.co.uk> Accept-Language: en-GB, en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amazon.co.uk; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LOZP123MB8516:EE_|LO3P123MB3417:EE_ x-ms-office365-filtering-correlation-id: 56523a69-8d5d-48df-e66f-08def32b886d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|6049299003|7416014|23010399003|376014|366016|1800799024|38070700021|4053099003|6133799003|10067099003|11063799006|56012099006|5023799004|18002099003|22082099003; x-microsoft-antispam-message-info: +ReZBZezTIucOLcL1rMqgrdvG6rhqGLrejv8hbkKxrBFG3aqMbYdAr0QCWuCm4ZvKQZCqTmeL7VwV1oD4xtNNQGLO5PGknmItxQ0PBjSjmDnBlXwgFrFdrXTeTZLlizxWKlmoJUKxFd6QOZG76dReiZcUBrK9uHfOKgDbBaUrcdvzOa7olGM4ivPmCp0woUV5MA89NBiQ2s9L/HcrjXmdZ0mxUM2gh3iBRBiCriHooHX1ADgTwGeG+NumA7iP+JKsPWQB5Jv5HxpTYvxtRunUdpjp1eBjzPmIu/1DmzyVf1IfTB1Yr0lj/h3xlhGj5JVD6e+mRu5lhFUoA7U2Yvr8DdiOYV2DaaEAgCchAfOqw0/HqXRTOT595W5N+5P8o5qX174t+S5Y0k6yDrYtu1dDnctc+foq2D/5/NkmXCke2PNaPBrHSFl9T0Jnfo5/62VOs3G6Gde8VGPFArTVLM/jJC0E3hxq3cdOjzs0e4ux4SbgMHDFytIPhQGIOs2CmC/aPVgwAu2vAIrrsvfNS/SLE28BdjiGAyg1BynVPnFsESrQX8UxHQDr3aPDNBYti+/kg17kRxQtv98DSfGt47qP3dbg2MD3hQpFILwYOaBUdbz31e7q9Gsux/LNJ7+AojhhMdL9OUAfwdpgDqc58kGw56xWM+czGsk84aGwmrA+ur+E4hDLc0jA2axFA9wevpzCHQrCBkGpYJZXsDUvH3xa9qTAitjZmoht+DmIHPwVn8= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(6049299003)(7416014)(23010399003)(376014)(366016)(1800799024)(38070700021)(4053099003)(6133799003)(10067099003)(11063799006)(56012099006)(5023799004)(18002099003)(22082099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Q0dwWEVaTHhYcmgwOXdEUm1TTERGckxBOFhvUmZ2Z0ViR256YlZyM0NlNmxl?= =?utf-8?B?Z3pWVDFIRVVMOGlXNXg0c2JTVG1mcitpemtGbWtwakJPNXJFWWtNdkl0U2N4?= =?utf-8?B?YlNGZW5raWwzWWQzdHN4ekl4SzZLT2lnZ1RNMEk5TkdzV0ZqcUZNa0tLSUha?= =?utf-8?B?Y0Zqc0hBaVcwMTlHb1NERktiZHBxOEMzMGNnTjRFYUxMUS9kbjRtRG5UakdT?= =?utf-8?B?VS9IUWRyTHZPQ2pSSzVhTHU2Wm1BSUlXSTVJZFFidHJxL1BpSWlkZmtjRE1r?= =?utf-8?B?cEM5enVISXFKQ2IwQkVIblVQZHdDNXRDZXdTZElaMkhEVnp3aXk3VDVJaWtU?= =?utf-8?B?OEVyMHhzR2YveDdKOXVJVXV5MXdZVDFKb0Evek9KT1NwRGNxZFVuT3JQR3Br?= =?utf-8?B?SURkMzg0T3lzRUlaOHlkQi9HY0Rkem1qL1VzQ0VkQmRVU3RCbnQyWlpGMmY2?= =?utf-8?B?dHRSc2dGdmtMSnhXY2FtanBMRE9hQzNsbzF0aGZybElWakJqVVBGUHFiZVR1?= =?utf-8?B?V0ZGbE9lWjljaERGMGtoeGlvQzFmSFZlWEJ6UzZHSnVmK3V3aWpOWm9GWlkv?= =?utf-8?B?TzVWK2V3WThDejJPVDVYdWgwTWFDamQ4QjZKQzVEb04wT2R3U1hJMzdxWURL?= =?utf-8?B?b1QvQ3BMZHJIcXZrNEYzT0Nma0w2K3UyYjBDYUFyRE00cW1TWW5VdnVOaFRu?= =?utf-8?B?T2NKekorbjRtbTFHSUEwQ3B2YkVnMGFqT3cyd3BBcmR3dUVmczJDYS9GVXRV?= =?utf-8?B?WFBRQU93TElLOFd3YXdvYVR3WUpQV2t4NHI0cnRDN29DeWxMTlBGY1hIc3p1?= =?utf-8?B?MXlkSUZzdC91WTh6eUFTdDZ5SEE2STZCUVJ1SFYyKzhRVnNQM1dMQkxWdzFB?= =?utf-8?B?amMyZ2lQbmpHYlROOE1Ra3dVZ3JTZFpsVVVtU1ZjVElGMEZGS3lUeDdUSC95?= =?utf-8?B?TDhBVTQwaUpSblVjZTdXZER3TW02SkF3em1DeHFLbnV1clpLVWlqYUh2eEtk?= =?utf-8?B?Z1FoNVRMS2I0VlNVVGY1TGxuVmtjaFFidkU4bEJaR3JwTUpZMWE1cEJIdmhO?= =?utf-8?B?N1hYSng2elNTVGZ3UHdJTzJPNHdYenRsc0laSm9pY05tbVl4eGdHUEpBVm1Q?= =?utf-8?B?Q3VoN3ZPTGkrMW5adnRZeWVFMm1DRlcrN1VQbjA2SVVPYm9DYWVyaE00c2c2?= =?utf-8?B?OTV0VDNRSHc1TW5YbTdhTlozZmxDNjdYTjlKWEFHSWxPNE5zUXNSTllsdTRz?= =?utf-8?B?bGZ2L2QrRzN2bUxYSTdWbWdybkYzQm0wQlpydWlYY1NHWndnOWdRZzN3MWps?= =?utf-8?B?TG0yOGF3b1lFWXdZVWNhWHExNjNLVHRSRHpFQkdvbFAxbkdHOEZVN0ZlM2Mz?= =?utf-8?B?WHpnWFB6bU4yMVpVbEFLK1o2VkE2NTB5c2RJeWJleCtwaGhmdnczenFhZmhX?= =?utf-8?B?RDRKczc2SmYvOFQwVTBIOHR1aWpqbXp0S3lBTVpaTTV2OUxsTWNBZ2t5T0k0?= =?utf-8?B?bXBPYnhYY0VmdWZLV20vR2QweWlUQUQxdUkzSUhvUTdqOHNHOWdUVUhZRXA0?= =?utf-8?B?SkhsbEs2YTFaTHVkR1FkeUYrTXRXWUlxaVEyZ0Y4SzV5Uy9LTzM2MVZEN01l?= =?utf-8?B?NmI3aTJuTzA5TnM2azZFTFM1TmJtM2RNMHhHRGlvVDgxallaNCs1WU4zVzcx?= =?utf-8?B?TVhhakxtOEF4em9sYTJnbU9rbXRJMnNUUVdDeERsQWNXSHpPSER1WnMzOG1Y?= =?utf-8?B?K00ySmhYNDVOdXpSRDJUdVAxSTlyZkRsRGhPNFEwVlkrYUxVc1RPeTB2UGsx?= =?utf-8?B?aUZsTERQU0tFV2VPaTZkZ1hSSXg2MDk3SjJBckJ5UkdOZ2tjYXE5cUVPU2VH?= =?utf-8?B?NlpweG85WnBQZitUS01CdlJXOU02TmM5U1lzVUgxY1pyVVZhQld4RzFidzZV?= =?utf-8?B?T3ZLa29KNThycmR0ZFMzakd1UnFuRXlNTG1pcmdUcVozY1hUWlBHbTA4RVUv?= =?utf-8?B?YzRLbjFYYkthMjFmd3FQRCtBNEpqK0h0Z044T2tkdnBhcXJyRGI2RUpBV3kx?= =?utf-8?B?N21hTEtvYTlQSGNDK2FlUzhMZVJnTzJybW00aXNlUkVFRCtBTnp5N0JjVlNC?= =?utf-8?B?bzltSC9KU1NlOFlvUnByQ1RTWE9DV3diTE1SU3RiK08velpDSmNpQmRoUHZS?= =?utf-8?B?dEdtYm5UNC9UNjFTR3l2R2tDZk0zVWwvMkhkcFY1ZGVTbC9HdW5RbWFvQTFI?= =?utf-8?B?R0wvSU5Yd081QlVuNHl1eWIxcm9sanUrOEUzU0dRZ1l5MW5sMm1LWFlvM29m?= =?utf-8?Q?9CuXMmoiJJPNXMrcR0?= MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: Qx98TTpSbkfvm/mfdOVsNSzMJNIennZjQxEViJJXPcPH6wbeul7biSBa9cEDhd4v3PZuUGD17uKfLPmppX7EA2TwNyND2B1JAwJT7Ja/6RtP4GNHYR4sr0454muMOC8ujs6gD6TZQ2NeRIkjPP9qA8iOeIzNnQmiV9Kqp8jVj6RPBOj/wYOBmsYAC29nK9vpqjWP0fDK8wp38qJ+XxDTaq2ijPdQwpRfNUJVoTHlGwuk5zrq3Crnjj9xv0jI7e1kef0WYby4fcaYHZ8m23bRURrkpYsGfty8pcdoxFvln7fwRte3PocgtYrZ2WUCQIzWfSjvXpj7RYznJSuPjAJC+A== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 56523a69-8d5d-48df-e66f-08def32b886d X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2026 19:55:43.0336 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5280104a-472d-4538-9ccf-1e1d0efe8b1b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: fhVgbFydsx4YN+PgABxcRhXzXfUah51p1HXm+wC8NGrgUzKdFX3xqAhz4mLstPq+gy7x+NkVBU+p+EIH0u8GNw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO3P123MB3417 X-OriginatorOrg: amazon.co.uk --===============2525170940429881838== Content-Language: en-US Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha-256; boundary="----F3F7044912BB47D11515E6DE65EE77DA" ------F3F7044912BB47D11515E6DE65EE77DA MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhpcyBlZmZlY3RpdmVseSByZXZlcnRzIGNvbW1pdCBiYTE3MGY3NmI2OWQgKCJtbSwgbm90aWZp ZXI6IENhdGNoCnNsZWVwaW5nL2Jsb2NraW5nIGZvciAhYmxvY2thYmxlIikgZm9yIHRoZSBtbXVf bm90aWZpZXIgY2FsbCBzaXRlcy4KClRoZSBub25fYmxvY2tfc3RhcnQvZW5kKCkgYW5ub3RhdGlv biBjYXVzZXMgdGhlIHNjaGVkdWxlciB0byBjb21wbGFpbgphYm91dCAqYW55KiB2b2x1bnRhcnkg c2xlZXAgaW4gYSBub24tYmxvY2thYmxlIG5vdGlmaWVyLiBCdXQgdGhhdCB3YXMKbmV2ZXIgdGhl IGFjdHVhbCBjb25zdHJhaW50LiBBcyBNaWNoYWwgSG9ja28gcHV0IGl0IHdoZW4gdGhlCmFubm90 YXRpb24gd2FzIGZpcnN0IHByb3Bvc2VkLCB0aGUgT09NIHJlYXBlciAic2hvdWxkbid0IGRlcGVu ZCBvbiBhbnkKbG9ja3Mgb3Igc2xlZXBhYmxlIGNvbmRpdGlvbmFscyIgYW5kIGNoZWNraW5nIGZv ciBzbGVlcGFibGUgY29udGV4dAp3YXMgInRoZSBiZXN0IHRoaW5nIHdlIGNvdWxkIGNvbWUgdXAg d2l0aCB0aGF0IHdvdWxkIGRlc2NyaWJlIHRoZXNlCmRlbWFuZHMgYXQgbGVhc3QgcGFydGlhbGx5 Ii4gVGhlIHJlYWwgcmVxdWlyZW1lbnQgaXMgdGhhdCB0aGUgcmVhcGVyCm11c3Qgbm90IGJsb2Nr IG9uIGFueXRoaW5nIHdoaWNoIG1heSBpdHNlbGYgZGVwZW5kIG9uIG1lbW9yeQphbGxvY2F0aW9u IChvciBvbiB0aGUgZHlpbmcgbW0pIHRvIG1ha2UgcHJvZ3Jlc3Mg4oCUIHdoaWNoIGlzIHdoeQpz cGlubmluZyBsb2NrcyB3ZXJlIGFsd2F5cyBjb25zaWRlcmVkIGZpbmUuCgpUaGF0IGRpc3RpbmN0 aW9uIG5vdyBtYXR0ZXJzIGluIGJvdGggZGlyZWN0aW9uczoKCiAtIE9uIFBSRUVNUFRfUlQsIHNw aW5uaW5nIGxvY2tzIGJlY29tZSBzbGVlcGluZyBsb2NrcywgYW5kIHBlcmZlY3RseQogICBsZWdp dGltYXRlIHNwaW5sb2NrL3J3bG9jayB1c2FnZSBpbiBub3RpZmllciBpbXBsZW1lbnRhdGlvbnMg KGUuZy4KICAgS1ZNJ3MgbW5faW52YWxpZGF0ZV9sb2NrIGFuZCBnZm5fdG9fcGZuX2NhY2hlIGxv Y2tzKSB0cmlnZ2VycyB0aGUKICAgc3BsYXQgZGVzcGl0ZSBoYXZpbmcgbm8gYWxsb2NhdG9yIGRl cGVuZGVuY3kgd2hhdHNvZXZlci4KCiAtIEEgbm90aWZpZXIgaW1wbGVtZW50YXRpb24gbWF5IGxl Z2l0aW1hdGVseSBuZWVkIHRvIHdhaXQgZm9yIGFuIFJDVQogICBncmFjZSBwZXJpb2QgYmVmb3Jl IGFsbG93aW5nIHRoZSBjYWxsZXIgdG8gcHJvY2VlZCB3aXRoIHVubWFwcGluZwogICAoaW4gdGhl IG1hbm5lciBvZiBhIFRMQiBzaG9vdGRvd24sIHdhaXRpbmcgZm9yIHJlYWRlcnMgb2YgYSBjYWNo ZWQKICAgdHJhbnNsYXRpb24gdG8gZHJhaW4pLiBBIGdyYWNlIHBlcmlvZCBjb21wbGV0ZXMgd2l0 aG91dCBhbnkgbWVtb3J5CiAgIGFsbG9jYXRpb24gYW5kIGNhbm5vdCBkZWFkbG9jayBhZ2FpbnN0 IHRoZSByZWFwZXIsIGJ1dCB0aGUKICAgYW5ub3RhdGlvbiBmb3JiaWRzIGl0LgoKQ2hlY2tpbmcg Zm9yIGdlbnVpbmVseSBmb3JiaWRkZW4gZGVwZW5kZW5jaWVzIG1lY2hhbmljYWxseSB3b3VsZApy ZXF1aXJlIHRyYWNraW5nICp3aGF0KiBpcyBiZWluZyB3YWl0ZWQgb24sIHdoaWNoIHRoaXMgYW5u b3RhdGlvbgpuZXZlciBkaWQuIFJlbW92ZSBpdCBmcm9tIHRoZSBub3RpZmllciBpbnZvY2F0aW9u IGFuZCBsZWF2ZSB0aGUKY29uc3RyYWludCB3aGVyZSBpdCBhbHdheXMgcmVhbGx5IGxpdmVkOiBp biByZXZpZXcgYW5kIGRvY3VtZW50YXRpb24Kb2YgdGhlIG5vdGlmaWVyIGltcGxlbWVudGF0aW9u cy4KClNpZ25lZC1vZmYtYnk6IERhdmlkIFdvb2Rob3VzZSA8ZHdtd0BhbWF6b24uY28udWs+CkFz c2lzdGVkLWJ5OiBDbGF1ZGU6Y2xhdWRlLW15dGhvcy01Ci0tLQogbW0vbW11X25vdGlmaWVyLmMg fCAxMSArLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxMCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9tbS9tbXVfbm90aWZpZXIuYyBiL21tL21tdV9ub3RpZmll ci5jCmluZGV4IDI0NWI3NGYzOWY5MS4uY2Q1ZDE1Y2Q2NDZhIDEwMDY0NAotLS0gYS9tbS9tbXVf bm90aWZpZXIuYworKysgYi9tbS9tbXVfbm90aWZpZXIuYwpAQCAtNTIwLDExICs1MjAsNyBAQCBz dGF0aWMgaW50IG1uX2hsaXN0X2ludmFsaWRhdGVfcmFuZ2Vfc3RhcnQoCiAJCWlmIChvcHMtPmlu dmFsaWRhdGVfcmFuZ2Vfc3RhcnQpIHsKIAkJCWludCBfcmV0OwogCi0JCQlpZiAoIW1tdV9ub3Rp Zmllcl9yYW5nZV9ibG9ja2FibGUocmFuZ2UpKQotCQkJCW5vbl9ibG9ja19zdGFydCgpOwogCQkJ X3JldCA9IG9wcy0+aW52YWxpZGF0ZV9yYW5nZV9zdGFydChzdWJzY3JpcHRpb24sIHJhbmdlKTsK LQkJCWlmICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJsZShyYW5nZSkpCi0JCQkJbm9uX2Js b2NrX2VuZCgpOwogCQkJaWYgKF9yZXQpIHsKIAkJCQlwcl9pbmZvKCIlcFMgY2FsbGJhY2sgZmFp bGVkIHdpdGggJWQgaW4gJXNibG9ja2FibGUgY29udGV4dC5cbiIsCiAJCQkJCW9wcy0+aW52YWxp ZGF0ZV9yYW5nZV9zdGFydCwgX3JldCwKQEAgLTU5MSwxNCArNTg3LDkgQEAgbW5faGxpc3RfaW52 YWxpZGF0ZV9lbmQoc3RydWN0IG1tdV9ub3RpZmllcl9zdWJzY3JpcHRpb25zICpzdWJzY3JpcHRp b25zLAogCWlkID0gc3JjdV9yZWFkX2xvY2soJnNyY3UpOwogCWhsaXN0X2Zvcl9lYWNoX2VudHJ5 X3NyY3Uoc3Vic2NyaXB0aW9uLCAmc3Vic2NyaXB0aW9ucy0+bGlzdCwgaGxpc3QsCiAJCQkJIHNy Y3VfcmVhZF9sb2NrX2hlbGQoJnNyY3UpKSB7Ci0JCWlmIChzdWJzY3JpcHRpb24tPm9wcy0+aW52 YWxpZGF0ZV9yYW5nZV9lbmQpIHsKLQkJCWlmICghbW11X25vdGlmaWVyX3JhbmdlX2Jsb2NrYWJs ZShyYW5nZSkpCi0JCQkJbm9uX2Jsb2NrX3N0YXJ0KCk7CisJCWlmIChzdWJzY3JpcHRpb24tPm9w cy0+aW52YWxpZGF0ZV9yYW5nZV9lbmQpCiAJCQlzdWJzY3JpcHRpb24tPm9wcy0+aW52YWxpZGF0 ZV9yYW5nZV9lbmQoc3Vic2NyaXB0aW9uLAogCQkJCQkJCQlyYW5nZSk7Ci0JCQlpZiAoIW1tdV9u b3RpZmllcl9yYW5nZV9ibG9ja2FibGUocmFuZ2UpKQotCQkJCW5vbl9ibG9ja19lbmQoKTsKLQkJ fQogCX0KIAlzcmN1X3JlYWRfdW5sb2NrKCZzcmN1LCBpZCk7CiB9Ci0tIAoyLjQzLjAKCg== ------F3F7044912BB47D11515E6DE65EE77DA Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" MII+PgYJKoZIhvcNAQcCoII+LzCCPisCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGg gjpEMIIGEDCCA/igAwIBAgIQTZQsENQ74JQJxYEtOisGTzANBgkqhkiG9w0BAQwFADCBiDELMAkG A1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYD VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlm aWNhdGlvbiBBdXRob3JpdHkwHhcNMTgxMTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBljELMAkG A1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEY MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0 aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBAMo87ZQKQf/e+Ua56NY75tqSvysQTqoavIK9viYcKSoq0s2cUIE/bZQu85eoZ9X140qO TKl1HyLTJbazGl6nBEibivHbSuejQkq6uIgymiqvTcTlxZql19szfBxxo0Nm9l79L9S+TZNTEDyg NfcXlkHKRhBhVFHdJDfqB6Mfi/Wlda43zYgo92yZOpCWjj2mz4tudN55/yE1+XvFnz5xsOFbme/S oY9WAa39uJORHtbC0x7C7aYivToxuIkEQXaumf05Vcf4RgHs+Yd+mwSTManRy6XcCFJE6k/LHt3n dD3sA3If/JBz6OX2ZebtQdHnKav7Azf+bAhudg7PkFOTuRMCAwEAAaOCAWQwggFgMB8GA1UdIwQY MBaAFFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBQJwPL8C9qU21/+K9+omULPyeCtADAO BgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAgYI KwYBBQUHAwQwEQYDVR0gBAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwu dXNlcnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNvbS9VU0VSVHJ1 c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNlcnRydXN0LmNv bTANBgkqhkiG9w0BAQwFAAOCAgEAQUR1AKs5whX13o6VbTJxaIwA3RfXehwQOJDI47G9FzGR87bj grShfsbMIYdhqpFuSUKzPM1ZVPgNlT+9istp5UQNRsJiD4KLu+E2f102qxxvM3TEoGg65FWM89YN 5yFTvSB5PelcLGnCLwRfCX6iLPvGlh9j30lKzcT+mLO1NLGWMeK1w+vnKhav2VuQVHwpTf64ZNnX UF8p+5JJpGtkUG/XfdJ5jR3YCq8H0OPZkNoVkDQ5CSSF8Co2AOlVEf32VBXglIrHQ3v9AAS0yPo4 Xl1FdXqGFe5TcDQSqXh3TbjugGnG+d9yZX3lB8bwc/Tn2FlIl7tPbDAL4jNdUNA7jGee+tAnTtlZ 6bFz+CsWmCIb6j6lDFqkXVsp+3KyLTZGXq6F2nnBtN4t5jO3ZIj2gpIKHAYNBAWLG2Q2fG7Bt2tP C8BLC9WIM90gbMhAmtMGquITn/2fORdsNmaV3z/sPKuIn8DvdEhmWVfh0fyYeqxGlTw0RfwhBlak dYYrkDmdWC+XszE19GUi8K8plBNKcIvyg2omAdebrMIHiAHAOiczxX/aS5ABRVrNUDcjfvp4hYbD OO6qHcfzy/uY0fO5ssebmHQREJJA3PpSgdVnLernF6pthJrGkNDPeUI05svqw1o5A2HcNzLOpklh NwZ+4uWYLcAi14ACHuVvJsmzNicwggXeMIIDxqADAgECAhAB/W0w/KPKUagbvGQONQMtMA0GCSqG SIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxML SmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNF UlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xMDAyMDEwMDAwMDBaFw0zODAx MTgyMzU5NTlaMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxML SmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNF UlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIP ADCCAgoCggIBAIASZRc2DsPbCLPQrFcNdu3NJ9NMrVCDYeKqIE0JLWQJ3M6Jn8w9qez2z8Hc8dOx 1ns3KBErR9o5xrw6GbRfpr19naNjQrZ28qk7K5H44m/Q7BYgkAk+4uh0yRi0kdRiZNt/owbxiBhq kCI8vP4T8IcUe/bkH47U5FHGEWdGCFHLhhRUP7wz/n5snP8WnRi9UY41pqdmyHJn2yFmsdSbeAPA UDrozPDcvJ5M/q8FljUfV1q3/875PbcstvZU3cjnEjpNrkyKt1yatLcgPcp/IjSufjtoZgFE5wFO RlObM2D3lL5TN5BzQ/Myw1Pv26r+dE5px2uMYJPexMcM3+EyrsyTO1F4lWeL7j1W/gzQaQ8bD/Ml JmszbfduR/pzQ+V+DqVmsSl8MoRjVYnEDcGTVDAZE6zTfTen6106bDVc20HXEtqpSQvf2ICKCZNi jrVmzyWIzYS4sT+kOQ/ZAp7rEkyVfPNrBaleFoPMuGfi6BOdzFuC00yz7Vv/3uVzrCM7LQC/NVV0 CUnYSVgaf5I25lGSDvMmfRxNF7zJ7EMm0L9BX0CpRET0medXh55QH1dUqD79dGMvsVBlCeZYQi5D Gky08CVHWfoEHpPUJkZKUIGy3r54t/xnFeHJV4QeD2PW6WK61l9VLupcxigIBCU5uA4rqfJMlxwH Pw1S9e3vL4IPAgMBAAGjQjBAMB0GA1UdDgQWBBRTeb9aqitKz1SA4dibwJ3ysgNmyzAOBgNVHQ8B Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQwFAAOCAgEAXNR8Dc/3AX1BmWUM c8VSn8v4z5kGfxvaQxWfngJVV5YU8VI8J4eUKO0fOgE3onb8U1DAhJvGa066jCFPoo5VYpHzaRXY vIjjxKoL/e+o6UtVKgYgbVV4KRnuXzBcSyQRVf8kmm5eKivuC02ff/cBOJQUlUMHCftgqe4cqxKM oJpep5hqWW2LPwj7yNFFrxgVZJASD3MoLsXiJE78WOzw9EX+IrPrL47S2UVhBcGXb6h2co+LjDav vw0FznGN5qZvH2ymcWLF2NCDcgzxZxGJDJwTTHI037zVcd+qcd3huWyMPBJdZdq9VxK2Q2v/5d5N ZhFRz5mu7Be26HGRjN5J/t01caIVJ5Qcz2HjJrtvo2clIV3m3R0LLmgbO4Kv7INnhdSYUXSxuZmA if9/eBlceUpgLpJArkw3KizJx2LIDl33NlvK4CUlAbTdGgecdwA/0NzV7D3U+rs/zIXWb3+pLd+5 Avf1l5q1NdrDZ7CHSqkoniOO/1wna+GwT/MH7gAu1FmHy1JBler0R9fuZEFVfI1ZApXdYp3Cue5a KHSEpZu3kMcMB9/1iTZ0MtYowbCwC+CcTMMc1vzjabVHRoEvooKr02NEcMSN/y0zuq2Pe7VwiK4+ Gc9AKNj8yJC7XZki9VLmWMUfiDFD7ogd18aOPENqHacY3n09FvFi+cqQqP0wggYQMIID+KADAgEC AhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UE CBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJV U1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UE CBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdv IExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQg U2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyjztlApB/975 Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUfItMltrMaXqcESJuK 8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeWQcpGEGFUUd0kN+oH ox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YBrf24k5Ee1sLTHsLt piK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewDch/8kHPo5fZl5u1B 0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAUU3m/WqorSs9UgOHY m8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1UdDwEB/wQEAwIBhjAS BgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDARBgNVHSAE CjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VT RVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUFBwEBBGowaDA/Bggr BgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJTQUFkZFRydXN0Q0Eu Y3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUA A4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+xswhh2GqkW5JQrM8 zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9IHk96VwsacIvBF8J fqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7kkmka2RQb9d90nmN HdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1eoYV7lNwNBKpeHdN uO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4KxaYIhvqPqUMWqRd Wyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL1Ygz3SBsyECa0waq 4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQOZ1YL5ezMTX0ZSLw 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 DTI4MDEwOTIzNTk1OVowgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0 ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMT0wOwYDVQQD EzRDT01PRE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvrOeV6wodnVAFsc4A5jTxhh2IVDzJXkLTLWg 0X06WD6cpzEup/Y0dtmEatrQPTRI5Or1u6zf+bGBSyD9aH95dDSmeny1nxdlYCeXIoymMv6pQHJG NcIDpFDIMypVpVSRsivlJTRENf+RKwrB6vcfWlP8dSsE3Rfywq09N0ZfxcBa39V0wsGtkGWC+eQK iz4pBZYKjrc5NOpG9qrxpZxyb4o4yNNwTqzaaPpGRqXB7IMjtf7tTmU2jqPMLxFNe1VXj9XB1rHv bRikw8lBoNoSWY66nJN/VCJv5ym6Q0mdCbDKCMPybTjoNCQuelc0IAaO4nLUXk0BOSxSxt8kCvsU tQIDAQABo4IBPDCCATgwHwYDVR0jBBgwFoAUu69+Aj36pvE8hI6t7jiY7NkyMtQwHQYDVR0OBBYE FIKvbIz4xf6WYXzoHz0rcUhexIvAMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEA MBEGA1UdIAQKMAgwBgYEVR0gADBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9kb2Nh LmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEFBQcBAQRlMGMw OwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQUFkZFRydXN0Q0Eu Y3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZIhvcNAQEMBQAD ggIBAHhcsoEoNE887l9Wzp+XVuyPomsX9vP2SQgG1NgvNc3fQP7TcePo7EIMERoh42awGGsma65u /ITse2hKZHzT0CBxhuhb6txM1n/y78e/4ZOs0j8CGpfb+SJA3GaBQ+394k+z3ZByWPQedXLL1OdK 8aRINTsjk/H5Ns77zwbjOKkDamxlpZ4TKSDMKVmU/PUWNMKSTvtlenlxBhh7ETrN543j/Q6qqgCW gWuMAXijnRglp9fyadqGOncjZjaaSOGTTFB+E2pvOUtY+hPebuPtTbq7vODqzCM6ryEhNhzf+enm 0zlpXK7q332nXttNtjv7VFNYG+I31gnMrwfHM5tdhYF/8v5UY5g2xANPECTQdu9vWPoqNSGDt87b 3gXb1AiGGaI06vzgkejL580ul+9hz9D0S0U4jkhJiA7EuTecP/CFtR72uYRBcunwwH3fciPjviDD AI9SnC/2aPY8ydehzuZutLbZdRJ5PDEJM/1tyZR2niOYihZ+FCbtf3D9mB12D4ln9icgc7CwaxpN SCPt8i/GqK2HsOgkL3VYnwtx7cJUmpvVdZ4ognzgXtgtdk3ShrtOS1iAN2ZBXFiRmjVzmehoMof0 6r1xub+85hFQzVxZx5/bRaTKTlL8YXLI8nAbR9HWdFqzcOoB/hxfEyIQpx9/s81rgzdEZOofSlZH ynoSMIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkG A1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEa MBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv biBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3F z0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPm NHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gc 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 TU9ET1JTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHEGCCsGAQUFBwEBBGUwYzA7BggrBgEF BQcwAoYvaHR0cDovL2NydC5jb21vZG9jYS5jb20vQ09NT0RPUlNBQWRkVHJ1c3RDQS5jcnQwJAYI KwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9kb2NhLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAeFyy gSg0TzzuX1bOn5dW7I+iaxf28/ZJCAbU2C81zd9A/tNx4+jsQgwRGiHjZrAYayZrrm78hOx7aEpk fNPQIHGG6Fvq3EzWf/Lvx7/hk6zSPwIal9v5IkDcZoFD7f3iT7PdkHJY9B51csvU50rxpEg1OyOT 8fk2zvvPBuM4qQNqbGWlnhMpIMwpWZT89RY0wpJO+2V6eXEGGHsROs3njeP9DqqqAJaBa4wBeKOd GCWn1/Jp2oY6dyNmNppI4ZNMUH4Tam85S1j6E95u4+1Nuru84OrMIzqvISE2HN/56ebTOWlcrurf fade2022O/tUU1gb4jfWCcyvB8czm12FgX/y/lRjmDbEA08QJNB2729Y+io1IYO3ztveBdvUCIYZ ojTq/OCR6MvnzS6X72HP0PRLRTiOSEmIDsS5N5w/8IW1Hva5hEFy6fDAfd9yI+O+IMMAj1KcL/Zo 9jzJ16HO5m60ttl1Enk8MQkz/W3JlHaeI5iKFn4UJu1/cP2YHXYPiWf2JyBzsLBrGk1II+3yL8ao rYew6CQvdVifC3HtwlSam9V1niiCfOBe2C12TdKGu05LWIA3ZkFcWJGaNXOZ6Ggyh/TqvXG5v7zm EVDNXFnHn9tFpMpOUvxhcsjycBtH0dZ0WrNw6gH+HF8TIhCnH3+zzWuDN0Rk6h9KVkfKehIwggXY MIIDwKADAgECAhBMqvnK22Nv4B/3TthbA4adMA0GCSqGSIb3DQEBDAUAMIGFMQswCQYDVQQGEwJH QjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQK ExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1 dGhvcml0eTAeFw0xMDAxMTkwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGFMQswCQYDVQQGEwJHQjEb MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD T01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhv cml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJHoVJLSClaxrA0k3cXPRGd0mSs3 o30jcABxvFPfxPoqEo9LfxBWvZ9wcrdhf8lLDxenPeOwBGHu/xGXx/SGPgr6Plz5k+Y0etkUa+ec s4Wggnp2r3GQ1+z9DfqcbPrfsIL0FH75vsSmL09/mX+1/GdDcr0MANaJ62ss0+2PmBwUq37l4278 2KjkkiTaQ2tiuFX96sG8bLaL8w6NmuSbbGmZ+HhIMEXVreENPEVg/DKWUSe8Z8PKLrZr6kbHxyCg sR9l3kgIuqROqfKDRjeE6+jMgUhDZ05yKptcvUwbKIpcInu0q5jZ7uBRg8MJRk5tPpn6lRfafDNX QTyNUe0LtlyvLGMa31fIP7zpXcSbr0WZ4qNaJLS6qVY9z2+q/0lYvvCo//S4rek3+7q49As6+ehD Qh6J2ITLE/HZu+GJYLiMKFasFB2cCudx688O3T2plqFIvTz3r7UNIkzAEYHsVjv206LiW7eyBCJS lYCTaeiOTGXxkQMtcHQC6otnFSlpUgK7199QalVGv6CjKGF/cNDDoqosIapHziicBkV2v4IYJ7TV rrTLUOZr9EyGcTDppt8WhuDY/0Dd+9BCiH+jMzouXB5BEYFjzhhxayvspoq3MVw6akfgw3lZ1iAa r/JqmKpyvFdK0kuduxD8sExB5e0dPV4onZzMv7NR2qdH5YRTAgMBAAGjQjBAMB0GA1UdDgQWBBS7 r34CPfqm8TyEjq3uOJjs2TIy1DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkq hkiG9w0BAQwFAAOCAgEACvHVRoS3rlG7bLJNQRQAk0ycy+XAVM+gJY4C+f2wog31IJg8Ey2sVqKw 1n4Rkukuup4umnKxvRlEbGE1opq0FhJpWozh1z6kGugvA/SuYR0QGyqki3rF/gWm4cDWyP6ero8r uj2Z+NhzCVhGbqac9Ncn05XaN4NyHNNz4KJHmQM4XdVJeQApHMfsmyAcByRpV3iyOfw6hKC1nHyN vy6TYie3OdoXGK69PAlo/4SbPNXWCwPjV54U99HrT8i9hyO3tklDeYVcuuuSC6HG6GioTBaxGpkK 6FMskruhCRh1DGWoe8sjtxrCKIXDG//QK2LvpHsJkZhnjBQBzWgGamMhdQOAiIpugcaF8qmkLef0 pSQQR4PKzfSNeVixBpvnGirZnQHXlH3tA0rK8NvoqQE+9VaZyR6OST275Qm54E9Jkj0WgkDMzFnG 5jrtEi5pPGyVsf2qHXt/hr4eDjJG+/sTj3V/TItLRmP+ADRAcMHDuaHdpnDiBLNBvOmAkepknHrh IgOpnG5vDmVPbIeHXvNuoPl1pZtA6FOyJ51KucB3IY3/h/LevIzvF9+3SQvR8m4wCxoOTnbtEfz1 6Vayfb/HbQqTjKXQwLYdvjpOlKLXbmwLwop8+iDzxOTlzQ2oy5GSsXyF7LUUaWYOgufNzsgtplF/ IcE1U4UGSl2frbsbX3QwggSvMIIDl6ADAgECAhEA4CPLFRKDU4mtYW56VGdrITANBgkqhkiG9w0B AQsFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRy dXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBS b290MB4XDTE0MTIyMjAwMDAwMFoXDTIwMDUzMDEwNDgzOFowgZsxCzAJBgNVBAYTAkdCMRswGQYD VQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9E TyBDQSBMaW1pdGVkMUEwPwYDVQQDEzhDT01PRE8gU0hBLTI1NiBDbGllbnQgQXV0aGVudGljYXRp b24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAImx Ddp6UxlOcFIdvFamBia3uEngludRq/HwWhNJFaO0jBtgvHpRQqd5jKQi3xdhTpHVdiMKFNNKAn+2 HQmAbqUEPdm6uxb+oYepLkNSQxZ8rzJQyKZPWukI2M+TJZx7iOgwZOak+FaA/SokFDMXmaxE5WmL o0YGS8Iz1OlAnwawsayTQLm1CJM6nCpToxDbPSBhPFUDjtlOdiUCISn6o3xxdk/u4V+B6ftUgNvD ezVSt4TeIj0sMC0xf1m9UjewM2ktQ+v61qXxl3dnUYzZ7ifrvKUHOHaMpKk4/9+M9QOsSb7K93OZ Og8yq5yVOhM9DkY6V3RhUL7GQD/L5OKfoiECAwEAAaOCARcwggETMB8GA1UdIwQYMBaAFK29mHo0 tCb3+sQmVO8DveAky1QaMB0GA1UdDgQWBBSSYWuC4aKgqk/sZ/HCo/e0gADB7DAOBgNVHQ8BAf8E BAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQw EQYDVR0gBAowCDAGBgRVHSAAMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0 LmNvbS9BZGRUcnVzdEV4dGVybmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUH MAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQELBQADggEBABsqbqxVwTqr iMXY7c1V86prYSvACRAjmQ/FZmpvsfW0tXdeDwJhAN99Bf4Ss6SAgAD8+x1banICCkG8BbrBWNUm wurVTYT7/oKYz1gb4yJjnFL4uwU2q31Ypd6rO2Pl2tVz7+zg+3vio//wQiOcyraNTT7kSxgDsqgt 1Ni7QkuQaYUQ26Y3NOh74AEQpZzKOsefT4g0bopl0BqKu6ncyso20fT8wmQpNa/WsadxEdIDQ7GP PprsnjJT9HaSyoY0B7ksyuYcStiZDcGG4pCS+1pCaiMhEOllx/XVu37qjIUgAmLq0ToHLFnFmTPy OInltukWeh95FPZKEBom+nyK+5swggYVMIIE/aADAgECAhBUK7v3iZFOwcXku0+rFipmMA0GCSqG SIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAw DgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3Rp Z28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTI0MTIx NTAwMDAwMFoXDTI2MTIxNTIzNTk1OVowIjEgMB4GCSqGSIb3DQEJARYRZHdtd0BhbWF6b24uY28u dWswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDYY7Ok+LSdJXMOPurGsBJ9haMJobp1 AbJ0lXHAfmgO7N2XfT2VeOglOqYQJQlqSpNchVXA9UZ3OLsde6OC21IBV4iqzkUtI4hf+TmtK1xt xSEhtV3Y7fKDyiKvvWdbNnuyKYuVlo+ABv8ZZB/2DDHLS/TvAgkR0q4YgoWxP4Eee8fTwJ7eWnmW dmFs2hjjnnHmmXvrurxwhyE0ZpJ0gJwF/2jaDSTbEAhnH6xPN8vYh5j/ARa0kWamowSpSqvLciXe RZ0sDx95ElHEJRzsIiHwkRVz+K6V0me5yjhGa90lx9OgA2PYGba0qcAW7sylgzxljEbkZ8/KII/2 Og3lONswf2QCIuW9Ac1n+LtKwREA+cbaTgsWB3Np10GhUlrt+pD9SWjahJROdTkPdhMlSn1tzeqm XCoga1Yo12NhLUfv+VvYsURZxLOJyHm/eEn/dlDBHhvXsNslb3GF1zT2onBp65BEjQtff2vGF8UB GX65gXgD0/b4kCYZ9zvrA+KT9ErN0o1WXOhDu736D9O27dp/WBNPF0j5MXMm9Sf+Lf/gLJJCnmBQ RnaY4MXfoixcY0sAcrWbod/uw7h1H4PO+lgOOInkA64R0o7r7gGdVm/FlLK6c63C6GI6hZm/23+v 8sqMZbd9ZnYDwvhS3PmLtQUMFwtyTG672xQVU7Z+V9hCgwIDAQABo4IB0DCCAcwwHwYDVR0jBBgw FoAUCcDy/AvalNtf/ivfqJlCz8ngrQAwHQYDVR0OBBYEFFr7QNV7ElfMY4HxUC/w1EzSGybuMA4G A1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMEMFAGA1UdIARJ MEcwOgYMKwYBBAGyMQECAQoCMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc2VjdGlnby5jb20vU01J TUVDUFMwCQYHZ4EMAQUBAzBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLnNlY3RpZ28uY29t L1NlY3RpZ29SU0FDbGllbnRBdXRoZW50aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3JsMIGKBggr BgEFBQcBAQR+MHwwVQYIKwYBBQUHMAKGSWh0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1JT QUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcnQwIwYIKwYBBQUHMAGGF2h0 dHA6Ly9vY3NwLnNlY3RpZ28uY29tMBwGA1UdEQQVMBOBEWR3bXdAYW1hem9uLmNvLnVrMA0GCSqG SIb3DQEBCwUAA4IBAQBA+k/q3z9lz3S3x6AneZ9YhiHGGrlnzx0XWTdk8O2uzRFyJJtsmTYszkqa dzazIljgTdd14Kp2C7KnacSYW48CnMyl+dP6n4YZDh7a0NBkZLnMmyuOOwGrpfNHGU/E91hvVPXY ZdwrfzLsigVkINzGJW1E+ruJAvT5PK3fnEdeLbWEVFgyk0tgay+3vI6TZrQqBGpA5DGODK6aDMDN X+ADVamfHJw57cF6uaK5mSJLDdg6sbCi5qxclQDjYakkk+9iJgXyFVoRUUwhfbU3COcBP9EpJduR WZkrAQdi1IHnICuzGcsPQ6P29LGEvvGJgP7o1AqjW9HzyQRPwfbwaJobMYIDvjCCA7oCAQEwgasw gZYxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1Nh bGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE+MDwGA1UEAxM1U2VjdGlnbyBSU0EgQ2xp ZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEFQru/eJkU7BxeS7T6sWKmYw DQYJYIZIAWUDBAIBBQCggeQwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUx DxcNMjYwODA1MTk1NTQ5WjAvBgkqhkiG9w0BCQQxIgQg4QdgwQtSAJTIhI0UGAhoQbr04cS5MtfO Cir5eX98kuAweQYJKoZIhvcNAQkPMWwwajALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCG SAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4D AgcwDQYIKoZIhvcNAwICASgwDQYJKoZIhvcNAQEBBQAEggIALS405sC2D7dwNzUrldV73kXbTCET 2uNJcnqTrhlc9uZvfDyyGTn7f+JycmmHpbJAdy0H4+Id5DBwWruBPIm9L7a7ExE8NtykNhAEKABx B20adb75mesYoR8k1ZXxfGam9fzLKzvgWAwzLFWp5iCmHGjtxYCO2kQhZmsX5Cq2hWR5TcStlqSz EGhvIW/rJpPpv1fGio4caQlc7lEyGsL5OAp+APXx/hhDKaPTdC6XSrxBXc9E/7nZQP+//82d5T8I NSncvx8MvH6NfLMWRk0PiDrZDLHx9HkO8i8AdVjUULC6OnHV1Bnm17ZrRrxwg/SwXSSOJ2pTDeZ8 Nh7/UlkSYzuQSSOd8YHz9Q9DwFzwVCQmmCF+oQG2DDGabCBcmXpdcq44DOqJ5FoQZ9iHOLz73LkZ i2wvpHj4DRsbSk24m3m3cn73pq5J4oC6TLlGpVs7K8gehGIOJMHUZ6fGq1jHZj7Ko19+9JJ/kR5t AqScl0+HkvSlu2t8oy7qP0e0WDUIz2OA+AhS+0AcGVjonOUnu/8nw4HQd+80klDakE4gargiul1l XVyWiM1CYQHGWDpHWgnxxSeagVB5xz988an9jTleADiL2jPzmcHsidcvUDWV6YQSycdPL67CMczL CdByFtfP6VP3kCDPp9mJLwiPJ0podxsvwxNoOzwo3EqsNpA= ------F3F7044912BB47D11515E6DE65EE77DA-- --===============2525170940429881838== Content-Type: multipart/alternative; boundary="===============3309014326949955468==" MIME-Version: 1.0 Content-Disposition: inline --===============3309014326949955468== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Amazon Development Centre (London) Ltd. Registered in England and Wales wit= h registration number 04543232 with its registered office at 1 Principal Pl= ace, Worship Street, London EC2A 2FA, United Kingdom. --===============3309014326949955468== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable


Amazon Development Centre (London) Ltd.Registered in England an= d Wales with registration number 04543232 with its registered office at 1 P= rincipal Place, Worship Street, London EC2A 2FA, United Kingdom.


--===============3309014326949955468==-- --===============2525170940429881838==-- From nobody Tue Aug 25 14:34:35 2026 Received: from fra-out-004.esa.eu-central-1.outbound.mail-perimeter.amazon.com (fra-out-004.esa.eu-central-1.outbound.mail-perimeter.amazon.com [3.74.81.189]) (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 65B1F424D6E; Wed, 5 Aug 2026 19:56:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=3.74.81.189 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785959763; cv=fail; b=IHtOym0twTmwCRUJPKcTx+5fnVcvHYVyW6x8MVZnpBlcMHh98v7DTdN1aglsIyFqHjfeu+79N32/Pa52CgIhf5WYVwE71bgxWQneUdfmx0VyNbrpFQykbspESLv83Qlz0hz8+oSts34rBTVMkw8MdTCnghP6167i+WQsqTQbwRU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785959763; c=relaxed/simple; bh=HlFRgaAZgGZjcpje+vD/4IfrZlkZH6iNzyqIj36hxZ8=; h=Content-Type:MIME-Version:From:To:CC:Subject:Date:Message-ID: References:In-Reply-To:MIME-Version; b=OU7OiPKhad5z4YtOrxoLfnr+yeEx+zb3ZSLMm01NveryUO/jWH061DmsNfJ1DEQQGKEfv1nvK15r9P42NdGO/I/r94TQqzvuSq2tXHZAnO3ZV73Yc1aLXup8n8wQlW0imjXd24TOaI4Ezk2WabFbZcE0ryR+g2j78SGQpXUbDhY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.co.uk; spf=pass smtp.mailfrom=amazon.co.uk; dkim=pass (2048-bit key) header.d=amazon.co.uk header.i=@amazon.co.uk header.b=aSglA1cl; arc=fail smtp.client-ip=3.74.81.189 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.co.uk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=amazon.co.uk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=amazon.co.uk header.i=@amazon.co.uk header.b="aSglA1cl" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.co.uk; i=@amazon.co.uk; q=dns/txt; s=amazoncorp2; t=1785959760; x=1817495760; h=from:to:cc:subject:date:message-id:references: in-reply-to; bh=A6YRrOHe0n07eDhyujNLz0NzuZtgx5NtiK+tf0cV4ZA=; b=aSglA1clCYPZ4mNMsqq2KZ6mMLHUVFAgRd02qeisyNxFZHQocbM7gWPT Drz+NWaCzKWtDCLyWvrEo64VapwG21uzTCEaKlqqRgAkzSTt455B0DHv7 jCCn+IKGcjFyVj0k4nKRUqW2nev1AcGoDS02o1Qp92+9C8vXfVbl7yFKv IlMkB54esCzqXCWmK1PQF4aFOaqvwkvLAB8Q57DTNDqu67lDiiEM+QdUI DTkvrefLFsjr9PK/Ynl2583y19eN/g1NoMnCO5lOF3YBKPw7cPHTPNGT0 dKEydb3H1Pr3+eZRgxNFKCF003cKg/3I5QYnsqLZ7XPI8g1JdSb/lMYrx g==; X-CSE-ConnectionGUID: Aw0cB8VaQKOBCPwmI26GuA== X-CSE-MsgGUID: WTJxQZOBRbWeVNNBIKZKJw== X-Amazon-filename: smime.p7s X-IronPort-AV: E=Sophos;i="6.25,207,1779148800"; d="p7s'346?scan'346,208,346";a="17446053" Content-Type: multipart/mixed; boundary="===============0447233886121387104==" Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Received: from ip-10-6-11-83.eu-central-1.compute.internal (HELO smtpout.naws.eu-central-1.prod.farcaster.email.amazon.dev) ([10.6.11.83]) by internal-fra-out-004.esa.eu-central-1.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Aug 2026 19:55:56 +0000 Received: from EX19MTAEUB001.ant.amazon.com [54.240.197.234:29451] by smtpin.naws.eu-central-1.prod.farcaster.email.amazon.dev [10.0.15.0:2525] with esmtp (Farcaster) id 85377bc1-e35f-4d8b-87d0-c3c4a5bc5575; Wed, 5 Aug 2026 19:55:55 +0000 (UTC) X-Farcaster-Flow-ID: 85377bc1-e35f-4d8b-87d0-c3c4a5bc5575 Received: from EX19EXOEUA002.ant.amazon.com (10.252.50.139) by EX19MTAEUB001.ant.amazon.com (10.252.51.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45; Wed, 5 Aug 2026 19:55:55 +0000 Received: from EX19EXOEUB001.ant.amazon.com (10.252.51.80) by EX19EXOEUA002.ant.amazon.com (10.252.50.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45; Wed, 5 Aug 2026 19:55:55 +0000 Received: from LO2P265CU024.outbound.protection.outlook.com (10.252.51.199) by EX19EXOEUB001.ant.amazon.com (10.252.51.80) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45 via Frontend Transport; Wed, 5 Aug 2026 19:55:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=X+mhMP09kOgSKKQOMgxDniqlWFqWigbhSfgaHjfRPxxbwFWmcy0MCk9J3fBWEvVHcZA3/yiNDurL9EWIajUEYSgU/2YgHdjDh9yyec64bDm2jDlcsvCBvFvwtf9yehuJBNVV7BRfl6XnKWW+tWwd+yBJYW03DyW4ZcVXTYik10HhRxbDqgqmwJvqbgNUQZ9GVGILBk/03QfTVs7aZ3jcg58ViqifY+5enzZlQVPGZpmDlYsQgrDng5nFNp+5mfF+sPviBvB2eIaU+ZxvhYEvCNhCBvkxVc/GR8+5XFN59YhMtH2rrP3VfIFD9iXivCvWeyzkrD78yQC//42n6bZ0TA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:MIME-Version; bh=u5dLiskRACBoTNi8Nai0ORlxzMpznAZ/JGXzS/6pEIU=; b=EdtiYR8eKRQy182CwoYDMqfU4mVS4qGG5/Gka0+PwKfODLZ+Mkg2shVqOQKKnfS2cArU5Xa15zkYacgsfDgpMCZ7vCXDDur5l2sKuzEXyvFmLcjd2Rnpp9nffxKMrgB84tDfLjZmSmWhLXs5Rb77rxmGGojdcehs7C/79MtqXUvJTkHN08R7XCzY5ivKaDIzAEWKJk4mvgxGuF48PWrwNnkbmvNWDBHbHXLYmipgU92DY0BXdQTTpBYWWNlpcAZ55gcZBy25ZMu4JhVJ8r+Cq+VSxgvz5r8+HLUYxocITOSt4laa1Lh4v1qG7D532F+6cFNrxFL1BhDhROtvZxFzjg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amazon.co.uk; dmarc=pass action=none header.from=amazon.co.uk; dkim=pass header.d=amazon.co.uk; arc=none Received: from LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:4b4::12) by LO0P123MB7404.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:334::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.19; Wed, 5 Aug 2026 19:55:49 +0000 Received: from LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM ([fe80::c7e3:476c:6170:8f6]) by LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM ([fe80::c7e3:476c:6170:8f6%6]) with mapi id 15.21.0292.018; Wed, 5 Aug 2026 19:55:49 +0000 From: "Woodhouse, David" To: "seanjc@google.com" , "pbonzini@redhat.com" , "akpm@linux-foundation.org" CC: "bigeasy@linutronix.de" , "peterz@infradead.org" , "mingo@redhat.com" , "will@kernel.org" , "longman@redhat.com" , "boqun@kernel.org" , "tglx@kernel.org" , "paul@xen.org" , "Stollmaier, Carsten" , "dwmw2@infradead.org" , "Woodhouse, David" , "daniel.vetter@ffwll.ch" , "mhocko@suse.com" , "jgg@nvidia.com" , "christian.koenig@amd.com" , "jglisse@redhat.com" , "david@kernel.org" , "ljs@kernel.org" , "liam@infradead.org" , "vbabka@kernel.org" , "rppt@kernel.org" , "surenb@google.com" , "bp@alien8.de" , "dave.hansen@linux.intel.com" , "hpa@zytor.com" , "x86@kernel.org" , "kvm@vger.kernel.org" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , "syzbot+208f7f3e5f59c11aeb90@syzkaller.appspotmail.com" Subject: [PATCH v3 3/7] KVM: pfncache: Use RCU for readers instead of a rwlock Thread-Topic: [PATCH v3 3/7] KVM: pfncache: Use RCU for readers instead of a rwlock Thread-Index: AQHdJRRpFlpkWk3u/UiNo2AE00Ua3A== Date: Wed, 5 Aug 2026 19:55:49 +0000 Message-ID: <20260805195528.3853473-4-dwmw@amazon.co.uk> References: <20260805195528.3853473-1-dwmw@amazon.co.uk> In-Reply-To: <20260805195528.3853473-1-dwmw@amazon.co.uk> Accept-Language: en-GB, en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amazon.co.uk; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LOZP123MB8516:EE_|LO0P123MB7404:EE_ x-ms-office365-filtering-correlation-id: e8b6d328-80f9-40f9-b264-08def32b8c22 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|6049299003|1800799024|376014|7416014|23010399003|22082099003|18002099003|11063799006|5023799004|56012099006|3023799007|4053099003|38070700021|6133799003|10067099003; x-microsoft-antispam-message-info: T+J9MdTO9lY0V6ZeylXVr39zQ/K6ddnpWPQJ8DlKa/OA/ubWSBCiRmbGLMD/06H5asq+rWtQ2TUYZEGT+KEjBSWyBmegqZmJotbIiwuJS8S003GgB49L42Ow0O123gSLoQ6SijKXgmX9PZGMsUJHbhAJOXfmRnmJcIQvC1MU0iRVlIatcW4E9y1KtARzVxki4tvH7assekOEH+X8r6TmUvfzbg/C9Zd+Tva8qHBEHcUU7kAaS91Aa7Pg5jMW8faW7+Je8W/lYkC9fNQgkY5cfZDhuWHGF+b2K6FF8sE1qMYzr9Wi3RmtGNzdTfSgvQGDEXAnf2yvnnbGxeDpgwgLW/rR3MGdgcx0TdhJd9BF2pDTjP/s4/eI0RHqgN/ZFJFs/IhFjph5g1AhcxuevyvGw2khvAdsQuzBUKnhfiK3iuCutTTgXKSSF5KWUIlULjkbBBqqeK6vQip1Nq0I8sKv9lcVIihl1FgUwP5XS0MgRZWT7R4EwWxG0DbHuCm9Xe3MC1Hwp9KhXpBrJgLLVMgB/q4GRwHiQPloX2yOV+RiB+5lNFozwM7xoUQhMLtkdTjD1jWIhfqTE2HmuYTI14ols0XSgn5GOnExEg8h5v5iDGhoMo1s17HzSvOG9Oui6D6ddb/gaPussYLD6QYV9BAtulIS7VGULCjTcSzyIfld/PEMRDWOriQ4nOxNQqw1zPah0whlzjNfA9IXBd8Ma/6nAz/P7Qx18NXdwfyKUYp24C4= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(6049299003)(1800799024)(376014)(7416014)(23010399003)(22082099003)(18002099003)(11063799006)(5023799004)(56012099006)(3023799007)(4053099003)(38070700021)(6133799003)(10067099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bEplcHgwbllQVmdJc2tIa3BWUHBWM3pMTUFKa2ZRdTVtbVh5Nm5ENC9tVXY1?= =?utf-8?B?NjhwdTBROFgxck9rZG1sS3dEVXVQMFRVM2g1YStqaWtVR3JJc2FiM2ZQcHNI?= =?utf-8?B?M1pHcTNwWHluUFV2b0NlOHlMVkFkcmRzKzVURlNsajF0cUdRM3Fpc1RXZm5U?= =?utf-8?B?bzgrMVdVL3d5bHFpTjhrbkFZa2kraE85ZWRZUURoNGRrQUl1RGc5VGMrRTQw?= =?utf-8?B?S0dQcnBoRnZtaGxjUmM3dTc2QXBlc1MzYnBMNjNNamx5SC9zeVF5TDFYQkJL?= =?utf-8?B?aVpaNFBPUUdlemtoaGxnRVdIK0dRK0x6dXRxNktSZUZIb2VxK01IUlpITlN3?= =?utf-8?B?WjJzWDZ5aXcrV0lkZnJqb3ZSc21ObHFhdW9BSHZNZ1JJWWxxbDhVbWZxV3lP?= =?utf-8?B?aHlyODE1Ykg5NkptcTd6cDlJdEpzWmdvYzFya3kwYUNqYnpJYk1BbUZyN2pW?= =?utf-8?B?RmtlencrQm1aSFlrbVd5R2V6ZXRidGN5QmI5aHdveHRTd04wSzRsWm8yWUJl?= =?utf-8?B?eEFZaWdkZnc1ZG9makl0VmJ3WjBFRGtCRFNpc0VIOWJhMldiYUcxbVo2bTNN?= =?utf-8?B?QkxWSngxSkpVNklYWE9FZTYxRDEvK2FxaWJ0Y0tzRERNYTF1VVd5Ri9CMkc5?= =?utf-8?B?Q011bDJzY1YwVStwKzFBcnMxMDcwVkduTWphSlpIZko4MWJUL0JnamVnL0h0?= =?utf-8?B?d2dzdlhxbGhvSDUxeDNVc0w1UjlDOWNXQVZBdzVrQnQ0aDdQYUtCeXA4SXBq?= =?utf-8?B?VElZUVZWR0ZTNDg4N2JkK1dsRVBLazZucmRsNTZYc21leDZKQllnVEFxaStL?= =?utf-8?B?a2ZPK2pOUVVvT05ZMC9YR0pZT3VXT1pPcGdreEcwN1NaaENOMG9CK2JCS0pj?= =?utf-8?B?RDdOUkZTS2VvbzNva0hnWkFzSG9EUW9zUjljTU1BczRqZWZjdTkrY3M0TEkz?= =?utf-8?B?aXIzbWkxbEMwUWRKeXlFc2NqQy9pMGI3NU8xa2hJVjNJU3BaS2g0VVFVcGlC?= =?utf-8?B?SUxvcmJjOWpmV243by93Rm9zTUw2c1plemVPaVFaRGVFZVBiNFNIYWtSM3Jj?= =?utf-8?B?Rk1GT1BIQ1NiakZnTjl1NFFweVEvRnZIT1NKRDlYZXQ1WERFZ0l2anl3MHY3?= =?utf-8?B?ODFaVTNTL1JsZTVldzBCZ3VBNmtaOXd6Z1M4VEdvK3FFQStQeEQwVWhJMUZ1?= =?utf-8?B?SGlzTlFkbmNwTU1Ec2pFYzJuT21yYjFMMHNsVEt5YWIxb08yTTlWc3pVSE94?= =?utf-8?B?RmRwRk9KL20rK1FzbXNtTmg3eW9KN1UvQStlYnU0ckZSNTlzaGJEWDFUWGto?= =?utf-8?B?cnNPYmc2NSsxZm5jdFZ4R2MvNmkwb2huWmNoOUF4OVYvTm9VUVdpeFc2UUJU?= =?utf-8?B?YVd2Z05UYjF2R0FOSmE3TVQ3SDN6NGRGeGdpcnErVThuK0l6bnVqc3U4cHVQ?= =?utf-8?B?SFlMSUxVa2hDUFV0MVlKRkJyME1EWk9QQlE1c2VzdnU1elJJdXRYOWNUaTBt?= =?utf-8?B?ZEcxcldyYUlIT0xiS2QvTmlVM0d3TG52RThkTVlxYkNjOE1zQ3hPUHZ4ZG5J?= =?utf-8?B?SHVIS216Qm5ibFdXUEJ2QXJhZks3NFFwWnVFUldTY1FwRHMxT21SUzJHMW1y?= =?utf-8?B?aDNxOFVVTFhoSXVHVE5PVkM3R2xyRXRNS0hSTEhMSDhEQ3h5RDdsMDRQMmVO?= =?utf-8?B?K1Y0TVJiUFpqcVFKVWIzUGd5aU4rOG5qWWdvK2ZQRHc1Z2ZTSWw4ZGFCV1Fz?= =?utf-8?B?NVBYeFhGV1poRWIzKzJ1TC9lMjh4STlxUUJXeDh5U296aW1CQ04wbUdNQVZU?= =?utf-8?B?LzNRbkJveEVENUxwR0R6M1hlTkpVSHhSUkFZbE95M0d0K1BaajJJR2xuR0p6?= =?utf-8?B?L3o0SEZQTC9Cbm1kS0lJYlE4OTlIWXJETWYxN0NTU0Zzak9BZmVIMG1ibnF6?= =?utf-8?B?ZThERFdPaFFlUkMraFd3K0VndEU3YWhobkJtN3NFUGVPRVRNcS9yaWNtcnc5?= =?utf-8?B?am4wV092ZGlESEVvcGg2djhSbExoRFBKVzZubVlKOVdXR1VxWXBPbldWOGJY?= =?utf-8?B?WHRmYUpYZ28vY1dJbG5CeHZWVTBwYUV1dngxQm05dllvL0tmVzdZNnFZRVhL?= =?utf-8?B?QWhrS0dNZytROEVFbzhLaU1SUFZyTmJJaCtNaGVGU3JoUHBuTVhBTTRmdHlC?= =?utf-8?B?UjlKc1dnamZWK1lQaElLWVFRb1NmVFZZVG8rZ3hWS3dYam8zZkxyOHRlQjVy?= =?utf-8?B?TG9XbnlNK2lTQXN1ZGNEakFLYU4wK1U3V0FLZ1htUjV3dzRybTlVT3ZtSEpR?= =?utf-8?Q?Lkg7z5hGeQH44okkUL?= MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: ihu7BnxtnJsOINsVKvAdWwWaBcubwG5IENGuBeFot/MUVEfQMV49Pzs8q1BX0xssmUINSSrSvbGcLZhtya8Kb4fdN8MnJXTjhfFDLIEMArtkVA1+FHslgd1IeTGLedtV84Td/NRX9znz3UsQd2/nqbBmNUetMHeY9mtofk32QCvOA24SMH9njyBGUmA+wcErZxCLITfL7Y/hLLUW78e11SmPBBrNqgJjsb3XlHpcu9kX323FJ5l3pJ1qNVl8QwkZPsysMweWBVKMHdgnPWUx06fk1U4wuLZxy6a33LMXHlTR8LoN94vMVGieFtc4MUfgNsBbKDel8STiTh5q+WNiig== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: e8b6d328-80f9-40f9-b264-08def32b8c22 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2026 19:55:49.3212 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5280104a-472d-4538-9ccf-1e1d0efe8b1b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: L8/EjAGolOaL26TINbO7t82pWhekNjRUKkGSE8nE267sePqNm61xZXcUu6M2PpOmzrdIAywI87SXXri1RzxIgg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO0P123MB7404 X-OriginatorOrg: amazon.co.uk --===============0447233886121387104== Content-Language: en-US Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha-256; boundary="----EF41DE7C369FEE6126A3D401734EB001" ------EF41DE7C369FEE6126A3D401734EB001 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UmVwbGFjZSB0aGUgcGVyLWNhY2hlIHJ3bG9jayB3aXRoIFJDVSBmb3IgdGhlIHJlYWQgc2lkZS4g UmVhZGVycyBub3cKcnVuIHVuZGVyIHJjdV9yZWFkX2xvY2soKSBhbG9uZSwgd2hpY2ggd29ya3Mg aW4gYW55IGNvbnRleHQgKGluY2x1ZGluZwpoYXJkaXJxIGFuZCBzY2hlZC1vdXQgcGF0aHMpIGFu ZCBuZXZlciBmYWlscyBvciBzcGlucyDigJQgZWxpbWluYXRpbmcgdGhlCnJlYWRfdHJ5bG9jaygp IGNvbnRvcnRpb25zIGluIHRoZSBhdG9taWMgcGF0aHMsIHRoZSBkb3VibGUtbG9jayBkYW5jZQp3 aXRoIHRoZSBsb2NrZGVwIHN1YmNsYXNzIGhhY2sgaW4gdGhlIHJ1bnN0YXRlIHVwZGF0ZSwgYW5k IHRoZQpQUkVFTVBUX1JUIHByb2JsZW1zIGluaGVyZW50IHRvIHRha2luZyBhbiByd2xvY2sgaW4g dGhvc2UgY29udGV4dHMuCkluIHBhcnRpY3VsYXIsIGt2bV94ZW5fc2V0X2V2dGNobl9mYXN0KCkg aXMgY2FsbGVkIGZyb20gaGFyZGlycQpjb250ZXh0ICh0aW1lciBjYWxsYmFjaywga3ZtX2FyY2hf c2V0X2lycV9pbmF0b21pYygpKSwgd2hlcmUgdGFraW5nCmdwYy0+bG9jayBpcyBhIHNsZWVwaW5n LWxvY2staW4tYXRvbWljLWNvbnRleHQgYnVnIG9uIFBSRUVNUFRfUlQuCgpUaGUgaW52YXJpYW50 IGlzIHRoYXQgYSBjYWNoZSdzIGZpZWxkcyAocGZuLCBraHZhLCB1aHZhLCBncGEpIGFyZSBvbmx5 CmV2ZXIgbXV0YXRlZCBhZnRlciBjbGVhcmluZyBncGMtPnZhbGlkIGFuZCB3YWl0aW5nIGZvciBh IGZ1bGwgZ3JhY2UKcGVyaW9kLCBzbyBhbnkgcmVhZGVyIHdoaWNoIG9ic2VydmVkIC0+dmFsaWQg PT0gdHJ1ZSAod2l0aCBhbiBhY3F1aXJlCmxvYWQsIHBhaXJlZCB3aXRoIHRoZSByZWxlYXNlIHN0 b3JlIHB1Ymxpc2hpbmcgdGhlIGZpZWxkcykgaGFzIHN0YWJsZQp2YWx1ZXMgZm9yIGl0cyBlbnRp cmUgUkNVIHJlYWQtc2lkZSBjcml0aWNhbCBzZWN0aW9uIOKAlCBpbmNsdWRpbmcKd3JpdGVzIHRo cm91Z2gga2h2YSwgd2hpY2ggYXJlIGd1YXJhbnRlZWQgdG8gbGFuZCBiZWZvcmUgdGhlIGJhY2tp bmcKcGFnZSBjYW4gYmUgdW5tYXBwZWQsIGV4YWN0bHkgYXMgd2l0aCBhIFRMQiBzaG9vdGRvd24u CgpUaGUgbW11X25vdGlmaWVyIGludmFsaWRhdGlvbiBwYXRoIGNsZWFycyAtPnZhbGlkIG9uIGFu eSBvdmVybGFwcGluZwpjYWNoZSBhbmQgdGhlbiBkb2VzIHN5bmNocm9uaXplX3JjdSgpIGJlZm9y ZSByZXR1cm5pbmcsIHNvIHRoZSBwcmltYXJ5Ck1NVSBjYW5ub3QgcHJvY2VlZCB0byB6YXAgdGhl IHBhZ2UgdGFibGVzIHVudGlsIGFsbCByZWFkZXJzIG9mIHRoZQpzdGFsZSBtYXBwaW5nIGhhdmUg ZHJhaW5lZC4gVGhpcyB3YWl0IGhhcHBlbnMgZXZlbiBvbiB1bmJsb2NrYWJsZQooT09NIHJlYXBl cikgcmFuZ2VzOiB0aGUgYWN0dWFsIGNvbnN0cmFpbnQgb24gdGhvc2UgaXMgbm90ICJubwpzbGVl cGluZyIgYnV0ICJubyBibG9ja2luZyBvbiBhbnl0aGluZyB3aGljaCBtYXkgaXRzZWxmIGRlcGVu ZCBvbgptZW1vcnkgYWxsb2NhdGlvbiB0byBtYWtlIHByb2dyZXNzIiwgYW5kIGFuIFJDVSBncmFj ZSBwZXJpb2QgaGFzIG5vCnN1Y2ggZGVwZW5kZW5jeSDigJQgR1BDIHJlYWRlcnMgbmV2ZXIgYWxs b2NhdGUsIG5ldmVyIHRha2UgbW1hcF9sb2NrLAphbmQgbmV2ZXIgc2xlZXAuIFRoZSBwcmV2aW91 cyBwYXRjaCByZW1vdmVkIHRoZSBvdmVyLWJyb2FkCm5vbl9ibG9ja19zdGFydCgpIGRlYnVnIGFu bm90YXRpb24gd2hpY2ggd291bGQgaGF2ZSBzcGxhdHRlZCBvbiBhbnkKdm9sdW50YXJ5IHNjaGVk dWxlIHJlZ2FyZGxlc3MuCgpBcyB3aXRoIHRoZSByd2xvY2sgdmVyc2lvbiwgYSByZWZyZXNoIHdo aWNoIHJlc29sdmVzIHRvIHRoZSBzYW1lIHVIVkEsCmluIHRoZSBzYW1lIG1lbXNsb3QsIGZvciB0 aGUgc2FtZSBnUEEgZG9lcyBub3QgbmVlZCB0byBpbnZhbGlkYXRlIHRoZQpjYWNoZSBhdCBhbGw6 IHRoZSBnUEEgPT4gdUhWQSB0cmFuc2xhdGlvbiBoYXMgbm90IGNoYW5nZWQsIGFuZApncGMtPnZh bGlkIGFscmVhZHkgYXNzZXJ0cyB0aGF0IHRoZSB1SFZBID0+IFBGTiBtYXBwaW5nIGlzIGdvb2Qu IFN1Y2ggYQpyZWZyZXNoIHVwZGF0ZXMgb25seSB0aGUgbWVtc2xvdCBnZW5lcmF0aW9uIGFuZCBy ZXR1cm5zLCBsZWF2aW5nCmNvbmN1cnJlbnQgcmVhZGVycyB1bmRpc3R1cmJlZCBhbmQgc2tpcHBp bmcgdGhlIGdyYWNlIHBlcmlvZCBlbnRpcmVseS4KVGhpcyBtYXR0ZXJzIGJlY2F1c2UgdGhlIG1t dV9ub3RpZmllciBpbnZhbGlkYXRlcyBjYWNoZXMgb24gYW55IGhvc3QKbWVtb3J5IG1hbmFnZW1l bnQgYWN0aXZpdHkgKHBhZ2UgbWlncmF0aW9uLCBOVU1BIGJhbGFuY2luZywgS1NNKSwgYW5kCnRo ZSBhZmZlY3RlZCBwYWdlcyB1c3VhbGx5IGNvbWUgc3RyYWlnaHQgYmFjayBhdCB0aGUgc2FtZSB1 SFZBOyBtYWtpbmcKZWFjaCBvZiB0aG9zZSBjb3N0IGEgZnVsbCBSQ1UgZ3JhY2UgcGVyaW9kIGlu IHRoZSByZWFkZXIncyByZWZyZXNoIHBhdGgKd291bGQgYWRkIHNlY29uZHMgdG8gYSBndWVzdCBi b290LgoKUmVmcmVzaGVzIGFyZSBzZXJpYWxpemVkIGJ5IHRoZSBleGlzdGluZyByZWZyZXNoX2xv Y2sgbXV0ZXgsIGFuZCB0aGUKZ3BjX2ludmFsaWRhdGVfc2VxIG1lY2hhbmlzbSBjb250aW51ZXMg dG8gY2F0Y2ggaW52YWxpZGF0aW9ucyB3aGljaApyYWNlIHdpdGggdGhlIChsb2NrbGVzcykgSFZB LT5QRk4gbG9va3VwLgoKRml4ZXM6IDE0MjQzYjM4NzEzNyAoIktWTTogeDg2L3hlbjogQWRkIEtW TV9JUlFfUk9VVElOR19YRU5fRVZUQ0hOIGFuZCBldmVudCBjaGFubmVsIGRlbGl2ZXJ5IikKUmVw b3J0ZWQtYnk6IHN5emJvdCsyMDhmN2YzZTVmNTljMTFhZWI5MEBzeXprYWxsZXIuYXBwc3BvdG1h aWwuY29tCkNsb3NlczogaHR0cHM6Ly9zeXprYWxsZXIuYXBwc3BvdC5jb20vYnVnP2V4dGlkPTIw OGY3ZjNlNWY1OWMxMWFlYjkwClNpZ25lZC1vZmYtYnk6IERhdmlkIFdvb2Rob3VzZSA8ZHdtd0Bh bWF6b24uY28udWs+CkFzc2lzdGVkLWJ5OiBDbGF1ZGU6Y2xhdWRlLW15dGhvcy01Ci0tLQogYXJj aC94ODYva3ZtL3g4Ni5jICAgICAgICB8ICAgOSArLQogYXJjaC94ODYva3ZtL3hlbi5jICAgICAg ICB8ICA5MSArKysrKy0tLS0tLS0tCiBpbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmggIHwgIDE2ICst LQogaW5jbHVkZS9saW51eC9rdm1fdHlwZXMuaCB8ICAgMSAtCiB2aXJ0L2t2bS9wZm5jYWNoZS5j ICAgICAgIHwgMjYwICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiA1IGZp bGVzIGNoYW5nZWQsIDIwNiBpbnNlcnRpb25zKCspLCAxNzEgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4Ni5jCmluZGV4IGQ5NGI1 OTE0MGM0NS4uMDk0MjVmNzJmNGE1IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rdm0veDg2LmMKKysr IGIvYXJjaC94ODYva3ZtL3g4Ni5jCkBAIC0xNzE5LDE4ICsxNzE5LDE3IEBAIHN0YXRpYyB2b2lk IGt2bV9zZXR1cF9ndWVzdF9wdmNsb2NrKHN0cnVjdCBwdmNsb2NrX3ZjcHVfdGltZV9pbmZvICpy ZWZfaHZfY2xvY2ssCiB7CiAJc3RydWN0IHB2Y2xvY2tfdmNwdV90aW1lX2luZm8gKmd1ZXN0X2h2 X2Nsb2NrOwogCXN0cnVjdCBwdmNsb2NrX3ZjcHVfdGltZV9pbmZvIGh2X2Nsb2NrOwotCXVuc2ln bmVkIGxvbmcgZmxhZ3M7CiAKIAltZW1jcHkoJmh2X2Nsb2NrLCByZWZfaHZfY2xvY2ssIHNpemVv Zihodl9jbG9jaykpOwogCi0JcmVhZF9sb2NrX2lycXNhdmUoJmdwYy0+bG9jaywgZmxhZ3MpOwor CXJjdV9yZWFkX2xvY2soKTsKIAl3aGlsZSAoIWt2bV9ncGNfY2hlY2soZ3BjLCBvZmZzZXQgKyBz aXplb2YoKmd1ZXN0X2h2X2Nsb2NrKSkpIHsKLQkJcmVhZF91bmxvY2tfaXJxcmVzdG9yZSgmZ3Bj LT5sb2NrLCBmbGFncyk7CisJCXJjdV9yZWFkX3VubG9jaygpOwogCiAJCWlmIChrdm1fZ3BjX3Jl ZnJlc2goZ3BjLCBvZmZzZXQgKyBzaXplb2YoKmd1ZXN0X2h2X2Nsb2NrKSkpCiAJCQlyZXR1cm47 CiAKLQkJcmVhZF9sb2NrX2lycXNhdmUoJmdwYy0+bG9jaywgZmxhZ3MpOworCQlyY3VfcmVhZF9s b2NrKCk7CiAJfQogCiAJZ3Vlc3RfaHZfY2xvY2sgPSAodm9pZCAqKShncGMtPmtodmEgKyBvZmZz ZXQpOwpAQCAtMTc1NSw3ICsxNzU0LDcgQEAgc3RhdGljIHZvaWQga3ZtX3NldHVwX2d1ZXN0X3B2 Y2xvY2soc3RydWN0IHB2Y2xvY2tfdmNwdV90aW1lX2luZm8gKnJlZl9odl9jbG9jaywKIAlndWVz dF9odl9jbG9jay0+dmVyc2lvbiA9ICsraHZfY2xvY2sudmVyc2lvbjsKIAogCWt2bV9ncGNfbWFy a19kaXJ0eV9pbl9zbG90KGdwYyk7Ci0JcmVhZF91bmxvY2tfaXJxcmVzdG9yZSgmZ3BjLT5sb2Nr LCBmbGFncyk7CisJcmN1X3JlYWRfdW5sb2NrKCk7CiAKIAl0cmFjZV9rdm1fcHZjbG9ja191cGRh dGUodmNwdS0+dmNwdV9pZCwgJmh2X2Nsb2NrKTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2 bS94ZW4uYyBiL2FyY2gveDg2L2t2bS94ZW4uYwppbmRleCBmMmM2NzU3ZmMxZmEuLjZiY2VjZTI0 MzlmNSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL3hlbi5jCisrKyBiL2FyY2gveDg2L2t2bS94 ZW4uYwpAQCAtNDYsMTUgKzQ2LDE1IEBAIHN0YXRpYyBpbnQga3ZtX3hlbl9zaGFyZWRfaW5mb19p bml0KHN0cnVjdCBrdm0gKmt2bSkKIAlpbnQgcmV0ID0gMDsKIAlpbnQgaWR4ID0gc3JjdV9yZWFk X2xvY2soJmt2bS0+c3JjdSk7CiAKLQlyZWFkX2xvY2tfaXJxKCZncGMtPmxvY2spOworCXJjdV9y ZWFkX2xvY2soKTsKIAl3aGlsZSAoIWt2bV9ncGNfY2hlY2soZ3BjLCBQQUdFX1NJWkUpKSB7Ci0J CXJlYWRfdW5sb2NrX2lycSgmZ3BjLT5sb2NrKTsKKwkJcmN1X3JlYWRfdW5sb2NrKCk7CiAKIAkJ cmV0ID0ga3ZtX2dwY19yZWZyZXNoKGdwYywgUEFHRV9TSVpFKTsKIAkJaWYgKHJldCkKIAkJCWdv dG8gb3V0OwogCi0JCXJlYWRfbG9ja19pcnEoJmdwYy0+bG9jayk7CisJCXJjdV9yZWFkX2xvY2so KTsKIAl9CiAKIAkvKgpAQCAtOTcsNyArOTcsNyBAQCBzdGF0aWMgaW50IGt2bV94ZW5fc2hhcmVk X2luZm9faW5pdChzdHJ1Y3Qga3ZtICprdm0pCiAJc21wX3dtYigpOwogCiAJd2MtPnZlcnNpb24g PSB3Y192ZXJzaW9uICsgMTsKLQlyZWFkX3VubG9ja19pcnEoJmdwYy0+bG9jayk7CisJcmN1X3Jl YWRfdW5sb2NrKCk7CiAKIG91dDoKIAlzcmN1X3JlYWRfdW5sb2NrKCZrdm0tPnNyY3UsIGlkeCk7 CkBAIC0xNTQsMjIgKzE1NCwyMSBAQCBzdGF0aWMgaW50IHhlbl9nZXRfZ3Vlc3RfcHZjbG9jayhz dHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsCiAJCQkJIHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMs CiAJCQkJIHVuc2lnbmVkIGludCBvZmZzZXQpCiB7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKIAlp bnQgcjsKIAotCXJlYWRfbG9ja19pcnFzYXZlKCZncGMtPmxvY2ssIGZsYWdzKTsKKwlyY3VfcmVh ZF9sb2NrKCk7CiAJd2hpbGUgKCFrdm1fZ3BjX2NoZWNrKGdwYywgb2Zmc2V0ICsgc2l6ZW9mKCpo dl9jbG9jaykpKSB7Ci0JCXJlYWRfdW5sb2NrX2lycXJlc3RvcmUoJmdwYy0+bG9jaywgZmxhZ3Mp OworCQlyY3VfcmVhZF91bmxvY2soKTsKIAogCQlyID0ga3ZtX2dwY19yZWZyZXNoKGdwYywgb2Zm c2V0ICsgc2l6ZW9mKCpodl9jbG9jaykpOwogCQlpZiAocikKIAkJCXJldHVybiByOwogCi0JCXJl YWRfbG9ja19pcnFzYXZlKCZncGMtPmxvY2ssIGZsYWdzKTsKKwkJcmN1X3JlYWRfbG9jaygpOwog CX0KIAogCW1lbWNweShodl9jbG9jaywgZ3BjLT5raHZhICsgb2Zmc2V0LCBzaXplb2YoKmh2X2Ns b2NrKSk7Ci0JcmVhZF91bmxvY2tfaXJxcmVzdG9yZSgmZ3BjLT5sb2NrLCBmbGFncyk7CisJcmN1 X3JlYWRfdW5sb2NrKCk7CiAKIAkvKgogCSAqIFNhbml0eSBjaGVjayBUU0Mgc2hpZnQrbXVsdGlw bGllciB0byB2ZXJpZnkgdGhlIGd1ZXN0J3MgdmlldyBvZiB0aW1lCkBAIC0zMjQsNyArMzIzLDYg QEAgc3RhdGljIHZvaWQga3ZtX3hlbl91cGRhdGVfcnVuc3RhdGVfZ3Vlc3Qoc3RydWN0IGt2bV92 Y3B1ICp2LCBib29sIGF0b21pYykKIAlzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjMiA9ICZ2 eC0+cnVuc3RhdGUyX2NhY2hlOwogCXNpemVfdCB1c2VyX2xlbiwgdXNlcl9sZW4xLCB1c2VyX2xl bjI7CiAJc3RydWN0IHZjcHVfcnVuc3RhdGVfaW5mbyByczsKLQl1bnNpZ25lZCBsb25nIGZsYWdz OwogCXNpemVfdCB0aW1lc19vZnM7CiAJdWludDhfdCAqdXBkYXRlX2JpdCA9IE5VTEw7CiAJdWlu dDY0X3QgZW50cnlfdGltZTsKQEAgLTQxNiwyMCArNDE0LDEyIEBAIHN0YXRpYyB2b2lkIGt2bV94 ZW5fdXBkYXRlX3J1bnN0YXRlX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdiwgYm9vbCBhdG9taWMp CiAKICByZXRyeToKIAkvKgotCSAqIEF0dGVtcHQgdG8gb2J0YWluIHRoZSBHUEMgbG9jayBvbiAq Ym90aCogKGlmIHRoZXJlIGFyZSB0d28pCi0JICogZ2ZuX3RvX3BmbiBjYWNoZXMgdGhhdCBjb3Zl ciB0aGUgcmVnaW9uLgorCSAqIENoZWNrICpib3RoKiAoaWYgdGhlcmUgYXJlIHR3bykgZ2ZuX3Rv X3BmbiBjYWNoZXMgdGhhdCBjb3ZlcgorCSAqIHRoZSByZWdpb24sIHVuZGVyIGEgc2luZ2xlIFJD VSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbi4KIAkgKi8KLQlpZiAoYXRvbWljKSB7Ci0JCWxv Y2FsX2lycV9zYXZlKGZsYWdzKTsKLQkJaWYgKCFyZWFkX3RyeWxvY2soJmdwYzEtPmxvY2spKSB7 Ci0JCQlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7Ci0JCQlyZXR1cm47Ci0JCX0KLQl9IGVsc2Ug ewotCQlyZWFkX2xvY2tfaXJxc2F2ZSgmZ3BjMS0+bG9jaywgZmxhZ3MpOwotCX0KKwlyY3VfcmVh ZF9sb2NrKCk7CiAJd2hpbGUgKCFrdm1fZ3BjX2NoZWNrKGdwYzEsIHVzZXJfbGVuMSkpIHsKLQkJ cmVhZF91bmxvY2tfaXJxcmVzdG9yZSgmZ3BjMS0+bG9jaywgZmxhZ3MpOworCQlyY3VfcmVhZF91 bmxvY2soKTsKIAogCQkvKiBXaGVuIGludm9rZWQgZnJvbSBrdm1fc2NoZWRfb3V0KCkgd2UgY2Fu bm90IHNsZWVwICovCiAJCWlmIChhdG9taWMpCkBAIC00MzgsNyArNDI4LDcgQEAgc3RhdGljIHZv aWQga3ZtX3hlbl91cGRhdGVfcnVuc3RhdGVfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2LCBib29s IGF0b21pYykKIAkJaWYgKGt2bV9ncGNfcmVmcmVzaChncGMxLCB1c2VyX2xlbjEpKQogCQkJcmV0 dXJuOwogCi0JCXJlYWRfbG9ja19pcnFzYXZlKCZncGMxLT5sb2NrLCBmbGFncyk7CisJCXJjdV9y ZWFkX2xvY2soKTsKIAl9CiAKIAlpZiAobGlrZWx5KCF1c2VyX2xlbjIpKSB7CkBAIC00NTgsMjQg KzQ0OCwxMSBAQCBzdGF0aWMgdm9pZCBrdm1feGVuX3VwZGF0ZV9ydW5zdGF0ZV9ndWVzdChzdHJ1 Y3Qga3ZtX3ZjcHUgKnYsIGJvb2wgYXRvbWljKQogCX0gZWxzZSB7CiAJCS8qCiAJCSAqIFRoZSBn dWVzdCdzIHJ1bnN0YXRlX2luZm8gaXMgc3BsaXQgYWNyb3NzIHR3byBwYWdlcyBhbmQgd2UKLQkJ ICogbmVlZCB0byBob2xkIGFuZCB2YWxpZGF0ZSBib3RoIEdQQ3Mgc2ltdWx0YW5lb3VzbHkuIFdl IGNhbgotCQkgKiBkZWNsYXJlIGEgbG9jayBvcmRlcmluZyBHUEMxID4gR1BDMiBiZWNhdXNlIG5v dGhpbmcgZWxzZQotCQkgKiB0YWtlcyB0aGVtIG1vcmUgdGhhbiBvbmUgYXQgYSB0aW1lLiBTZXQg YSBzdWJjbGFzcyBvbiB0aGUKLQkJICogZ3BjMSBsb2NrIHRvIG1ha2UgbG9ja2RlcCBzaHV0IHVw IGFib3V0IGl0LgorCQkgKiBuZWVkIHRvIHZhbGlkYXRlIGJvdGggR1BDcyBzaW11bHRhbmVvdXNs eS4gVGhleSBhcmUgYm90aAorCQkgKiBjb3ZlcmVkIGJ5IHRoZSBzaW5nbGUgUkNVIHJlYWQtc2lk ZSBjcml0aWNhbCBzZWN0aW9uIGFib3ZlLgogCQkgKi8KLQkJbG9ja19zZXRfc3ViY2xhc3MoJmdw YzEtPmxvY2suZGVwX21hcCwgMSwgX1RISVNfSVBfKTsKLQkJaWYgKGF0b21pYykgewotCQkJaWYg KCFyZWFkX3RyeWxvY2soJmdwYzItPmxvY2spKSB7Ci0JCQkJcmVhZF91bmxvY2tfaXJxcmVzdG9y ZSgmZ3BjMS0+bG9jaywgZmxhZ3MpOwotCQkJCXJldHVybjsKLQkJCX0KLQkJfSBlbHNlIHsKLQkJ CXJlYWRfbG9jaygmZ3BjMi0+bG9jayk7Ci0JCX0KLQogCQlpZiAoIWt2bV9ncGNfY2hlY2soZ3Bj MiwgdXNlcl9sZW4yKSkgewotCQkJcmVhZF91bmxvY2soJmdwYzItPmxvY2spOwotCQkJcmVhZF91 bmxvY2tfaXJxcmVzdG9yZSgmZ3BjMS0+bG9jaywgZmxhZ3MpOworCQkJcmN1X3JlYWRfdW5sb2Nr KCk7CiAKIAkJCS8qIFdoZW4gaW52b2tlZCBmcm9tIGt2bV9zY2hlZF9vdXQoKSB3ZSBjYW5ub3Qg c2xlZXAgKi8KIAkJCWlmIChhdG9taWMpCkBAIC01NzQsMTMgKzU1MSwxMSBAQCBzdGF0aWMgdm9p ZCBrdm1feGVuX3VwZGF0ZV9ydW5zdGF0ZV9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnYsIGJvb2wg YXRvbWljKQogCQlzbXBfd21iKCk7CiAJfQogCi0JaWYgKHVzZXJfbGVuMikgeworCWlmICh1c2Vy X2xlbjIpCiAJCWt2bV9ncGNfbWFya19kaXJ0eV9pbl9zbG90KGdwYzIpOwotCQlyZWFkX3VubG9j aygmZ3BjMi0+bG9jayk7Ci0JfQogCiAJa3ZtX2dwY19tYXJrX2RpcnR5X2luX3Nsb3QoZ3BjMSk7 Ci0JcmVhZF91bmxvY2tfaXJxcmVzdG9yZSgmZ3BjMS0+bG9jaywgZmxhZ3MpOworCXJjdV9yZWFk X3VubG9jaygpOwogfQogCiB2b2lkIGt2bV94ZW5fdXBkYXRlX3J1bnN0YXRlKHN0cnVjdCBrdm1f dmNwdSAqdiwgaW50IHN0YXRlKQpAQCAtNjM5LDcgKzYxNCw2IEBAIHZvaWQga3ZtX3hlbl9pbmpl Y3RfcGVuZGluZ19ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2KQogewogCXVuc2lnbmVkIGxvbmcg ZXZ0Y2huX3BlbmRpbmdfc2VsID0gUkVBRF9PTkNFKHYtPmFyY2gueGVuLmV2dGNobl9wZW5kaW5n X3NlbCk7CiAJc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYyA9ICZ2LT5hcmNoLnhlbi52Y3B1 X2luZm9fY2FjaGU7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCWlmICghZXZ0Y2huX3BlbmRp bmdfc2VsKQogCQlyZXR1cm47CkBAIC02NDksMTQgKzYyMywxNCBAQCB2b2lkIGt2bV94ZW5faW5q ZWN0X3BlbmRpbmdfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdikKIAkgKiBkb2VzIGFueXdheS4g UGFnZSBpdCBpbiBhbmQgcmV0cnkgdGhlIGluc3RydWN0aW9uLiBXZSdyZSBqdXN0IGEKIAkgKiBs aXR0bGUgbW9yZSBob25lc3QgYWJvdXQgaXQuCiAJICovCi0JcmVhZF9sb2NrX2lycXNhdmUoJmdw Yy0+bG9jaywgZmxhZ3MpOworCXJjdV9yZWFkX2xvY2soKTsKIAl3aGlsZSAoIWt2bV9ncGNfY2hl Y2soZ3BjLCBzaXplb2Yoc3RydWN0IHZjcHVfaW5mbykpKSB7Ci0JCXJlYWRfdW5sb2NrX2lycXJl c3RvcmUoJmdwYy0+bG9jaywgZmxhZ3MpOworCQlyY3VfcmVhZF91bmxvY2soKTsKIAogCQlpZiAo a3ZtX2dwY19yZWZyZXNoKGdwYywgc2l6ZW9mKHN0cnVjdCB2Y3B1X2luZm8pKSkKIAkJCXJldHVy bjsKIAotCQlyZWFkX2xvY2tfaXJxc2F2ZSgmZ3BjLT5sb2NrLCBmbGFncyk7CisJCXJjdV9yZWFk X2xvY2soKTsKIAl9CiAKIAkvKiBOb3cgZ3BjLT5raHZhIGlzIGEgdmFsaWQga2VybmVsIGFkZHJl c3MgZm9yIHRoZSB2Y3B1X2luZm8gKi8KQEAgLTY4Niw3ICs2NjAsNyBAQCB2b2lkIGt2bV94ZW5f aW5qZWN0X3BlbmRpbmdfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdikKIAl9CiAKIAlrdm1fZ3Bj X21hcmtfZGlydHlfaW5fc2xvdChncGMpOwotCXJlYWRfdW5sb2NrX2lycXJlc3RvcmUoJmdwYy0+ bG9jaywgZmxhZ3MpOworCXJjdV9yZWFkX3VubG9jaygpOwogCiAJLyogRm9yIHRoZSBwZXItdkNQ VSBsYXBpYyB2ZWN0b3IsIGRlbGl2ZXIgaXQgYXMgTVNJLiAqLwogCWlmICh2LT5hcmNoLnhlbi51 cGNhbGxfdmVjdG9yKQpAQCAtNjk2LDcgKzY3MCw2IEBAIHZvaWQga3ZtX3hlbl9pbmplY3RfcGVu ZGluZ19ldmVudHMoc3RydWN0IGt2bV92Y3B1ICp2KQogaW50IF9fa3ZtX3hlbl9oYXNfaW50ZXJy dXB0KHN0cnVjdCBrdm1fdmNwdSAqdikKIHsKIAlzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3Bj ID0gJnYtPmFyY2gueGVuLnZjcHVfaW5mb19jYWNoZTsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwog CXU4IHJjID0gMDsKIAogCS8qCkBAIC03MTIsOSArNjg1LDkgQEAgaW50IF9fa3ZtX3hlbl9oYXNf aW50ZXJydXB0KHN0cnVjdCBrdm1fdmNwdSAqdikKIAlCVUlMRF9CVUdfT04oc2l6ZW9mKHJjKSAh PQogCQkgICAgIHNpemVvZl9maWVsZChzdHJ1Y3QgY29tcGF0X3ZjcHVfaW5mbywgZXZ0Y2huX3Vw Y2FsbF9wZW5kaW5nKSk7CiAKLQlyZWFkX2xvY2tfaXJxc2F2ZSgmZ3BjLT5sb2NrLCBmbGFncyk7 CisJcmN1X3JlYWRfbG9jaygpOwogCXdoaWxlICgha3ZtX2dwY19jaGVjayhncGMsIHNpemVvZihz dHJ1Y3QgdmNwdV9pbmZvKSkpIHsKLQkJcmVhZF91bmxvY2tfaXJxcmVzdG9yZSgmZ3BjLT5sb2Nr LCBmbGFncyk7CisJCXJjdV9yZWFkX3VubG9jaygpOwogCiAJCS8qCiAJCSAqIFRoaXMgZnVuY3Rp b24gZ2V0cyBjYWxsZWQgZnJvbSBrdm1fdmNwdV9ibG9jaygpIGFmdGVyIHNldHRpbmcgdGhlCkBA IC03MzQsMTEgKzcwNywxMSBAQCBpbnQgX19rdm1feGVuX2hhc19pbnRlcnJ1cHQoc3RydWN0IGt2 bV92Y3B1ICp2KQogCQkJICovCiAJCQlyZXR1cm4gMDsKIAkJfQotCQlyZWFkX2xvY2tfaXJxc2F2 ZSgmZ3BjLT5sb2NrLCBmbGFncyk7CisJCXJjdV9yZWFkX2xvY2soKTsKIAl9CiAKIAlyYyA9ICgo c3RydWN0IHZjcHVfaW5mbyAqKWdwYy0+a2h2YSktPmV2dGNobl91cGNhbGxfcGVuZGluZzsKLQly ZWFkX3VubG9ja19pcnFyZXN0b3JlKCZncGMtPmxvY2ssIGZsYWdzKTsKKwlyY3VfcmVhZF91bmxv Y2soKTsKIAlyZXR1cm4gcmM7CiB9CiAKQEAgLTE0MzcsMTIgKzE0MTAsMTEgQEAgc3RhdGljIGJv b2wgd2FpdF9wZW5kaW5nX2V2ZW50KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IG5yX3BvcnRz LAogCXN0cnVjdCBrdm0gKmt2bSA9IHZjcHUtPmt2bTsKIAlzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNo ZSAqZ3BjID0gJmt2bS0+YXJjaC54ZW4uc2hpbmZvX2NhY2hlOwogCXVuc2lnbmVkIGxvbmcgKnBl bmRpbmdfYml0czsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWJvb2wgcmV0ID0gdHJ1ZTsKIAlp bnQgaWR4LCBpOwogCiAJaWR4ID0gc3JjdV9yZWFkX2xvY2soJmt2bS0+c3JjdSk7Ci0JcmVhZF9s b2NrX2lycXNhdmUoJmdwYy0+bG9jaywgZmxhZ3MpOworCXJjdV9yZWFkX2xvY2soKTsKIAlpZiAo IWt2bV9ncGNfY2hlY2soZ3BjLCBQQUdFX1NJWkUpKQogCQlnb3RvIG91dF9yY3U7CiAKQEAgLTE0 NjMsNyArMTQzNSw3IEBAIHN0YXRpYyBib29sIHdhaXRfcGVuZGluZ19ldmVudChzdHJ1Y3Qga3Zt X3ZjcHUgKnZjcHUsIGludCBucl9wb3J0cywKIAl9CiAKICBvdXRfcmN1OgotCXJlYWRfdW5sb2Nr X2lycXJlc3RvcmUoJmdwYy0+bG9jaywgZmxhZ3MpOworCXJjdV9yZWFkX3VubG9jaygpOwogCXNy Y3VfcmVhZF91bmxvY2soJmt2bS0+c3JjdSwgaWR4KTsKIAogCXJldHVybiByZXQ7CkBAIC0xODAy LDcgKzE3NzQsNiBAQCBpbnQga3ZtX3hlbl9zZXRfZXZ0Y2huX2Zhc3Qoc3RydWN0IGt2bV94ZW5f ZXZ0Y2huICp4ZSwgc3RydWN0IGt2bSAqa3ZtKQogCXN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpn cGMgPSAma3ZtLT5hcmNoLnhlbi5zaGluZm9fY2FjaGU7CiAJc3RydWN0IGt2bV92Y3B1ICp2Y3B1 OwogCXVuc2lnbmVkIGxvbmcgKnBlbmRpbmdfYml0cywgKm1hc2tfYml0czsKLQl1bnNpZ25lZCBs b25nIGZsYWdzOwogCWludCBwb3J0X3dvcmRfYml0OwogCWJvb2wga2lja192Y3B1ID0gZmFsc2U7 CiAJaW50IHZjcHVfaWR4LCBpZHgsIHJjOwpAQCAtMTgyNCw3ICsxNzk1LDcgQEAgaW50IGt2bV94 ZW5fc2V0X2V2dGNobl9mYXN0KHN0cnVjdCBrdm1feGVuX2V2dGNobiAqeGUsIHN0cnVjdCBrdm0g Kmt2bSkKIAogCWlkeCA9IHNyY3VfcmVhZF9sb2NrKCZrdm0tPnNyY3UpOwogCi0JcmVhZF9sb2Nr X2lycXNhdmUoJmdwYy0+bG9jaywgZmxhZ3MpOworCXJjdV9yZWFkX2xvY2soKTsKIAlpZiAoIWt2 bV9ncGNfY2hlY2soZ3BjLCBQQUdFX1NJWkUpKQogCQlnb3RvIG91dF9yY3U7CiAKQEAgLTE4NTUs MTAgKzE4MjYsOCBAQCBpbnQga3ZtX3hlbl9zZXRfZXZ0Y2huX2Zhc3Qoc3RydWN0IGt2bV94ZW5f ZXZ0Y2huICp4ZSwgc3RydWN0IGt2bSAqa3ZtKQogCX0gZWxzZSB7CiAJCXJjID0gMTsgLyogRGVs aXZlcmVkIHRvIHRoZSBiaXRtYXAgaW4gc2hhcmVkX2luZm8uICovCiAJCS8qIE5vdyBzd2l0Y2gg dG8gdGhlIHZDUFUncyB2Y3B1X2luZm8gdG8gc2V0IHRoZSBpbmRleCBhbmQgcGVuZGluZ19zZWwg Ki8KLQkJcmVhZF91bmxvY2tfaXJxcmVzdG9yZSgmZ3BjLT5sb2NrLCBmbGFncyk7CiAJCWdwYyA9 ICZ2Y3B1LT5hcmNoLnhlbi52Y3B1X2luZm9fY2FjaGU7CiAKLQkJcmVhZF9sb2NrX2lycXNhdmUo JmdwYy0+bG9jaywgZmxhZ3MpOwogCQlpZiAoIWt2bV9ncGNfY2hlY2soZ3BjLCBzaXplb2Yoc3Ry dWN0IHZjcHVfaW5mbykpKSB7CiAJCQkvKgogCQkJICogQ291bGQgbm90IGFjY2VzcyB0aGUgdmNw dV9pbmZvLiBTZXQgdGhlIGJpdCBpbi1rZXJuZWwKQEAgLTE4OTIsNyArMTg2MSw3IEBAIGludCBr dm1feGVuX3NldF9ldnRjaG5fZmFzdChzdHJ1Y3Qga3ZtX3hlbl9ldnRjaG4gKnhlLCBzdHJ1Y3Qg a3ZtICprdm0pCiAJfQogCiAgb3V0X3JjdToKLQlyZWFkX3VubG9ja19pcnFyZXN0b3JlKCZncGMt PmxvY2ssIGZsYWdzKTsKKwlyY3VfcmVhZF91bmxvY2soKTsKIAlzcmN1X3JlYWRfdW5sb2NrKCZr dm0tPnNyY3UsIGlkeCk7CiAKIAlpZiAoa2lja192Y3B1KSB7CmRpZmYgLS1naXQgYS9pbmNsdWRl L2xpbnV4L2t2bV9ob3N0LmggYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgKaW5kZXggM2RkMDQ2 MDVmMmU1Li5kYTBiMzY2OWYxYTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgva3ZtX2hvc3Qu aAorKysgYi9pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgKQEAgLTE1MTAsMTIgKzE1MTAsOSBAQCBp bnQga3ZtX2dwY19hY3RpdmF0ZV9odmEoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgdW5z aWduZWQgbG9uZyBodmEsIHVuc2lnbgogICogQHJldHVybjoJICAgJXRydWUgaWYgdGhlIGNhY2hl IGlzIHN0aWxsIHZhbGlkIGFuZCB0aGUgYWRkcmVzcyBtYXRjaGVzLgogICoJCSAgICVmYWxzZSBp ZiB0aGUgY2FjaGUgaXMgbm90IHZhbGlkLgogICoKLSAqIENhbGxlcnMgb3V0c2lkZSBJTl9HVUVT VF9NT0RFIGNvbnRleHQgc2hvdWxkIGhvbGQgYSByZWFkIGxvY2sgb24gQGdwYy0+bG9jawotICog d2hpbGUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCBhbmQgdGhlbiBjb250aW51ZSB0byBob2xkIHRo ZSBsb2NrIHVudGlsIHRoZQotICogYWNjZXNzIGlzIGNvbXBsZXRlLgotICoKLSAqIENhbGxlcnMg aW4gSU5fR1VFU1RfTU9ERSBtYXkgZG8gc28gd2l0aG91dCBsb2NraW5nLCBhbHRob3VnaCB0aGV5 IHNob3VsZAotICogc3RpbGwgaG9sZCBhIHJlYWQgbG9jayBvbiBrdm0tPnNjcnUgZm9yIHRoZSBt ZW1zbG90IGNoZWNrcy4KKyAqIENhbGxlcnMgbXVzdCBob2xkIHRoZSBSQ1UgcmVhZCBsb2NrIGFj cm9zcyB0aGlzIGZ1bmN0aW9uIGFuZCBhbnkKKyAqIHN1YnNlcXVlbnQgYWNjZXNzIHRvIHRoZSB0 YXJnZXQgcGFnZSwgYW5kIG11c3QgaG9sZCBhIHJlYWQgbG9jayBvbgorICoga3ZtLT5zcmN1IGZv ciB0aGUgbWVtc2xvdCBjaGVja3MuCiAgKi8KIGJvb2wga3ZtX2dwY19jaGVjayhzdHJ1Y3QgZ2Zu X3RvX3Bmbl9jYWNoZSAqZ3BjLCB1bnNpZ25lZCBsb25nIGxlbik7CiAKQEAgLTE1MzIsOCArMTUy OSw4IEBAIGJvb2wga3ZtX2dwY19jaGVjayhzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCB1 bnNpZ25lZCBsb25nIGxlbik7CiAgKiBUaGlzIHdpbGwgYXR0ZW1wdCB0byByZWZyZXNoIGEgZ2Zu X3RvX3Bmbl9jYWNoZS4gTm90ZSB0aGF0IGEgc3VjY2Vzc2Z1bAogICogcmV0dXJuIGZyb20gdGhp cyBmdW5jdGlvbiBkb2VzIG5vdCBtZWFuIHRoZSBwYWdlIGNhbiBiZSBpbW1lZGlhdGVseQogICog YWNjZXNzZWQgYmVjYXVzZSBpdCBtYXkgaGF2ZSByYWNlZCB3aXRoIGFuIGludmFsaWRhdGlvbi4g Q2FsbGVycyBtdXN0Ci0gKiBzdGlsbCBsb2NrIGFuZCBjaGVjayB0aGUgY2FjaGUgc3RhdHVzLCBh cyB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybgotICogd2l0aCB0aGUgbG9jayBzdGlsbCBo ZWxkIHRvIHBlcm1pdCBhY2Nlc3MuCisgKiBzdGlsbCBjaGVjayB0aGUgY2FjaGUgc3RhdHVzIHVu ZGVyIHRoZSBSQ1UgcmVhZCBsb2NrLCB2aWEKKyAqIGt2bV9ncGNfY2hlY2soKSwgYmVmb3JlIGFj Y2Vzc2luZyB0aGUgdGFyZ2V0IHBhZ2UuCiAgKi8KIGludCBrdm1fZ3BjX3JlZnJlc2goc3RydWN0 IGdmbl90b19wZm5fY2FjaGUgKmdwYywgdW5zaWduZWQgbG9uZyBsZW4pOwogCkBAIC0xOTc0LDcg KzE5NzEsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2lzX2dwYV9pbl9tZW1zbG90KHN0cnVj dCBrdm0gKmt2bSwgZ3BhX3QgZ3BhKQogCiBzdGF0aWMgaW5saW5lIHZvaWQga3ZtX2dwY19tYXJr X2RpcnR5X2luX3Nsb3Qoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYykKIHsKLQlsb2NrZGVw X2Fzc2VydF9oZWxkKCZncGMtPmxvY2spOworCVJDVV9MT0NLREVQX1dBUk4oIXJjdV9yZWFkX2xv Y2tfaGVsZCgpLAorCQkJICJrdm1fZ3BjX21hcmtfZGlydHlfaW5fc2xvdCgpIHdpdGhvdXQgUkNV IHJlYWQgbG9jayIpOwogCiAJaWYgKCFncGMtPm1lbXNsb3QpCiAJCXJldHVybjsKZGlmZiAtLWdp dCBhL2luY2x1ZGUvbGludXgva3ZtX3R5cGVzLmggYi9pbmNsdWRlL2xpbnV4L2t2bV90eXBlcy5o CmluZGV4IGE1NjhkOGU2ZjRlOC4uZmRmN2QyMjczMjk4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xp bnV4L2t2bV90eXBlcy5oCisrKyBiL2luY2x1ZGUvbGludXgva3ZtX3R5cGVzLmgKQEAgLTg4LDcg Kzg4LDYgQEAgc3RydWN0IGdmbl90b19wZm5fY2FjaGUgewogCXN0cnVjdCBrdm1fbWVtb3J5X3Ns b3QgKm1lbXNsb3Q7CiAJc3RydWN0IGt2bSAqa3ZtOwogCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsK LQlyd2xvY2tfdCBsb2NrOwogCXN0cnVjdCBtdXRleCByZWZyZXNoX2xvY2s7CiAJdm9pZCAqa2h2 YTsKIAlrdm1fcGZuX3QgcGZuOwpkaWZmIC0tZ2l0IGEvdmlydC9rdm0vcGZuY2FjaGUuYyBiL3Zp cnQva3ZtL3BmbmNhY2hlLmMKaW5kZXggMzY1OTY4NmI5N2MyLi4zYmFlNGRmNDkxNjUgMTAwNjQ0 Ci0tLSBhL3ZpcnQva3ZtL3BmbmNhY2hlLmMKKysrIGIvdmlydC9rdm0vcGZuY2FjaGUuYwpAQCAt MjYsMzUgKzI2LDQ5IEBAIHZvaWQgZ2ZuX3RvX3Bmbl9jYWNoZV9pbnZhbGlkYXRlX3N0YXJ0KHN0 cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQgbG9uZyBzdGFydCwKIAkJCQkgICAgICAgdW5zaWduZWQg bG9uZyBlbmQpCiB7CiAJc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYzsKKwlib29sIGNsZWFy ZWQgPSBmYWxzZTsKIAogCXNwaW5fbG9jaygma3ZtLT5ncGNfbG9jayk7CiAJbGlzdF9mb3JfZWFj aF9lbnRyeShncGMsICZrdm0tPmdwY19saXN0LCBsaXN0KSB7Ci0JCXJlYWRfbG9ja19pcnEoJmdw Yy0+bG9jayk7Ci0KLQkJLyogT25seSBhIHNpbmdsZSBwYWdlIHNvIG5vIG5lZWQgdG8gY2FyZSBh Ym91dCBsZW5ndGggKi8KLQkJaWYgKGdwYy0+dmFsaWQgJiYgIWlzX2Vycm9yX25vc2xvdF9wZm4o Z3BjLT5wZm4pICYmCisJCS8qCisJCSAqIE9ubHkgYSBzaW5nbGUgcGFnZSBzbyBubyBuZWVkIHRv IGNhcmUgYWJvdXQgbGVuZ3RoLgorCQkgKiBBIGNhY2hlIHdob3NlIHJlZnJlc2ggaXMgaW4gZmxp Z2h0IGhhcyB2YWxpZCA9PSBmYWxzZQorCQkgKiBhbmQgaXMgY2F1Z2h0IGJ5IHRoZSBncGNfaW52 YWxpZGF0ZV9zZXEgY2hlY2sgaW4KKwkJICogaHZhX3RvX3Bmbl9yZXRyeSgpIGluc3RlYWQuCisJ CSAqLworCQkvKgorCQkgKiBUaGUgYWNxdWlyZSBwYWlycyB3aXRoIHRoZSByZWxlYXNlLXB1Ymxp c2ggb2YgdmFsaWQgaW4KKwkJICogaHZhX3RvX3Bmbl9yZXRyeSgpOiBpZiB2YWxpZCBpcyBzZWVu IHRydWUsIHRoZSB1aHZhIHJlYWQKKwkJICogYmVsb3cgaXMgZ3VhcmFudGVlZCB0byBzZWUgdGhl IHZhbHVlIHdoaWNoIHdhcyBzdG9yZWQKKwkJICogYmVmb3JlIHZhbGlkIHdhcyBwdWJsaXNoZWQs IG5vdCBhIHN0YWxlIG9uZS4gKEEgc3RhbGUKKwkJICogdWh2YSBwYWlyZWQgd2l0aCBhIGZyZXNo IHZhbGlkIGNvdWxkIG90aGVyd2lzZSBjYXVzZSBhCisJCSAqIGNhY2hlIHdob3NlIG5ldyB1aHZh IGlzIGluIHRoZSBpbnZhbGlkYXRlZCByYW5nZSB0byBiZQorCQkgKiBza2lwcGVkLikKKwkJICov CisJCWlmIChzbXBfbG9hZF9hY3F1aXJlKCZncGMtPnZhbGlkKSAmJgogCQkgICAgZ3BjLT51aHZh ID49IHN0YXJ0ICYmIGdwYy0+dWh2YSA8IGVuZCkgewotCQkJcmVhZF91bmxvY2tfaXJxKCZncGMt PmxvY2spOwotCi0JCQkvKgotCQkJICogVGhlcmUgaXMgYSBzbWFsbCB3aW5kb3cgaGVyZSB3aGVy ZSB0aGUgY2FjaGUgY291bGQKLQkJCSAqIGJlIG1vZGlmaWVkLCBhbmQgaW52YWxpZGF0aW9uIHdv dWxkIG5vIGxvbmdlciBiZQotCQkJICogbmVjZXNzYXJ5LiBIZW5jZSBjaGVjayBhZ2FpbiB3aGV0 aGVyIGludmFsaWRhdGlvbgotCQkJICogaXMgc3RpbGwgbmVjZXNzYXJ5IG9uY2UgdGhlIHdyaXRl IGxvY2sgaGFzIGJlZW4KLQkJCSAqIGFjcXVpcmVkLgotCQkJICovCi0KLQkJCXdyaXRlX2xvY2tf aXJxKCZncGMtPmxvY2spOwotCQkJaWYgKGdwYy0+dmFsaWQgJiYgIWlzX2Vycm9yX25vc2xvdF9w Zm4oZ3BjLT5wZm4pICYmCi0JCQkgICAgZ3BjLT51aHZhID49IHN0YXJ0ICYmIGdwYy0+dWh2YSA8 IGVuZCkKLQkJCQlncGMtPnZhbGlkID0gZmFsc2U7Ci0JCQl3cml0ZV91bmxvY2tfaXJxKCZncGMt PmxvY2spOwotCQkJY29udGludWU7CisJCQlXUklURV9PTkNFKGdwYy0+dmFsaWQsIGZhbHNlKTsK KwkJCWNsZWFyZWQgPSB0cnVlOwogCQl9Ci0KLQkJcmVhZF91bmxvY2tfaXJxKCZncGMtPmxvY2sp OwogCX0KIAlzcGluX3VubG9jaygma3ZtLT5ncGNfbG9jayk7CisKKwkvKgorCSAqIFJlYWRlcnMg bWF5IHN0aWxsIGJlIHVzaW5nIHRoZSBvbGQgbWFwcGluZywgaGF2aW5nIHNhbXBsZWQKKwkgKiBn cGMtPnZhbGlkIGJlZm9yZSBpdCB3YXMgY2xlYXJlZC4gV2FpdCBmb3IgdGhlbSBhbGwgdG8gZHJh aW4KKwkgKiBiZWZvcmUgdGhlIGNhbGxlciBwcm9jZWVkcyB0byB6YXAgdGhlIHBhZ2UgdGFibGVz OyBsaWtlIGEgVExCCisJICogc2hvb3Rkb3duLCB0aGlzIGd1YXJhbnRlZXMgbm8gYWNjZXNzIHZp YSB0aGUgc3RhbGUgbWFwcGluZworCSAqIG9uY2UgdGhlIGludmFsaWRhdGlvbiBjb21wbGV0ZXMu CisJICoKKwkgKiBUaGlzIHdhaXQgaXMgc2FmZSBldmVuIG9uIHVuYmxvY2thYmxlIHJhbmdlcyAo dGhlIE9PTSByZWFwZXIpOgorCSAqIHRoZSBjb25zdHJhaW50IHRoZXJlIGlzIG5vdCAibm8gc2xl ZXBpbmciIGJ1dCAibm8gYmxvY2tpbmcgb24KKwkgKiBhbnl0aGluZyB3aGljaCBtYXkgaXRzZWxm IGRlcGVuZCBvbiBtZW1vcnkgYWxsb2NhdGlvbiB0byBtYWtlCisJICogcHJvZ3Jlc3MiIChzZWUg dGhlIHJlYXNvbmluZyBpbiBjb21taXQgMzEyMzY0ZjM1MzRjIGFuZCBpdHMKKwkgKiBkaXNjdXNz aW9uKS4gQW4gUkNVIGdyYWNlIHBlcmlvZCBoYXMgbm8gc3VjaCBkZXBlbmRlbmN5OiBHUEMKKwkg KiByZWFkZXJzIG5ldmVyIGFsbG9jYXRlLCBuZXZlciB0YWtlIG1tYXBfbG9jaywgYW5kIG5ldmVy IHNsZWVwLgorCSAqLworCWlmIChjbGVhcmVkKQorCQlzeW5jaHJvbml6ZV9yY3UoKTsKIH0KIAog c3RhdGljIGJvb2wga3ZtX2dwY19pc192YWxpZF9sZW4oZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25n IHVodmEsCkBAIC03NCw2ICs4OCwyMiBAQCBib29sIGt2bV9ncGNfY2hlY2soc3RydWN0IGdmbl90 b19wZm5fY2FjaGUgKmdwYywgdW5zaWduZWQgbG9uZyBsZW4pCiB7CiAJc3RydWN0IGt2bV9tZW1z bG90cyAqc2xvdHMgPSBrdm1fbWVtc2xvdHMoZ3BjLT5rdm0pOwogCisJUkNVX0xPQ0tERVBfV0FS TighcmN1X3JlYWRfbG9ja19oZWxkKCksCisJCQkgImt2bV9ncGNfY2hlY2soKSB3aXRob3V0IFJD VSByZWFkIGxvY2siKTsKKworCS8qCisJICogQ2hlY2sgdmFsaWQgKmZpcnN0Ki4gVGhlIGFjcXVp cmUgcGFpcnMgd2l0aCB0aGUgcmVsZWFzZS1wdWJsaXNoCisJICogaW4gaHZhX3RvX3Bmbl9yZXRy eSgpLCBzbyBldmVyeSBmaWVsZCByZWFkIGJlbG93IOKAlCBhbmQgYW55IHVzZQorCSAqIG9mIGdw Yy0+a2h2YSBieSB0aGUgY2FsbGVyIOKAlCBpcyBndWFyYW50ZWVkIHRvIGJlIGZyb20gdGhlCisJ ICogcHVibGlzaGVkIGdlbmVyYXRpb24sIG5vdCBhIHN0YWxlIHZhbHVlIHJlb3JkZXJlZCBmcm9t IGJlZm9yZQorCSAqIHRoZSBwdWJsaXNoLiBUaGUgZmllbGRzIGFyZSB0aGVuIHN0YWJsZSBmb3Ig dGhlIHJlbWFpbmRlciBvZgorCSAqIHRoZSBSQ1UgcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb24s IGJlY2F1c2UgZXZlcnkgbXV0YXRvcgorCSAqIGNsZWFycyB2YWxpZCBhbmQgd2FpdHMgYSBmdWxs IGdyYWNlIHBlcmlvZCBiZWZvcmUgY2hhbmdpbmcKKwkgKiBhbnl0aGluZy4KKwkgKi8KKwlpZiAo IXNtcF9sb2FkX2FjcXVpcmUoJmdwYy0+dmFsaWQpKQorCQlyZXR1cm4gZmFsc2U7CisKIAlpZiAo IWdwYy0+YWN0aXZlKQogCQlyZXR1cm4gZmFsc2U7CiAKQEAgLTkwLDkgKzEyMCw2IEBAIGJvb2wg a3ZtX2dwY19jaGVjayhzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCB1bnNpZ25lZCBsb25n IGxlbikKIAlpZiAoIWt2bV9ncGNfaXNfdmFsaWRfbGVuKGdwYy0+Z3BhLCBncGMtPnVodmEsIGxl bikpCiAJCXJldHVybiBmYWxzZTsKIAotCWlmICghZ3BjLT52YWxpZCkKLQkJcmV0dXJuIGZhbHNl OwotCiAJcmV0dXJuIHRydWU7CiB9CiAKQEAgLTEzNCw4ICsxNjEsOCBAQCBzdGF0aWMgaW5saW5l IGJvb2wgbW11X25vdGlmaWVyX3JldHJ5X2NhY2hlKHN0cnVjdCBrdm0gKmt2bSwgdW5zaWduZWQg bG9uZyBncGNfcwogCSAqIGlzIGVsZXZhdGVkLgogCSAqCiAJICogTm90ZSwgaXQgZG9lcyBub3Qg bWF0dGVyIHRoYXQgbW5fYWN0aXZlX2ludmFsaWRhdGVfY291bnQKLQkgKiBpcyBub3QgcHJvdGVj dGVkIGJ5IGdwYy0+bG9jay4gIEl0IGlzIGd1YXJhbnRlZWQgdG8KLQkgKiBiZSBlbGV2YXRlZCBi ZWZvcmUgdGhlIG1tdV9ub3RpZmllciBhY3F1aXJlcyBncGMtPmxvY2ssIGFuZAorCSAqIGlzIG5v dCBwcm90ZWN0ZWQgYnkgYW55IGxvY2sgdGhlIHJlZnJlc2hlciBob2xkcy4gIEl0IGlzCisJICog Z3VhcmFudGVlZCB0byBiZSBlbGV2YXRlZCBiZWZvcmUgdGhlIG1tdV9ub3RpZmllciB3YWxrLCBh bmQKIAkgKiBpc24ndCBkcm9wcGVkIHVudGlsIGFmdGVyIGdwY19pbnZhbGlkYXRlX3NlcSBpcyB1 cGRhdGVkLgogCSAqLwogCWlmIChrdm0tPm1uX2FjdGl2ZV9pbnZhbGlkYXRlX2NvdW50KQpAQCAt MTcxLDIxICsxOTgsMTIgQEAgc3RhdGljIGt2bV9wZm5fdCBodmFfdG9fcGZuX3JldHJ5KHN0cnVj dCBnZm5fdG9fcGZuX2NhY2hlICpncGMpCiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZncGMtPnJl ZnJlc2hfbG9jayk7CiAKLQlsb2NrZGVwX2Fzc2VydF9oZWxkX3dyaXRlKCZncGMtPmxvY2spOwot Ci0JLyoKLQkgKiBJbnZhbGlkYXRlIHRoZSBjYWNoZSBwcmlvciB0byBkcm9wcGluZyBncGMtPmxv Y2ssIHRoZSBncGE9PnVodmEKLQkgKiBhc3NldHMgaGF2ZSBhbHJlYWR5IGJlZW4gdXBkYXRlZCBh bmQgc28gYSBjb25jdXJyZW50IGNoZWNrKCkgZnJvbSBhCi0JICogZGlmZmVyZW50IHRhc2sgbWF5 IG5vdCBmYWlsIHRoZSBncGEvdWh2YS9nZW5lcmF0aW9uIGNoZWNrcy4KLQkgKi8KLQlncGMtPnZh bGlkID0gZmFsc2U7CisJV0FSTl9PTl9PTkNFKGdwYy0+dmFsaWQpOwogCiAJZG8gewogCQlncGNf c2VxID0gZ3BjLT5rdm0tPmdwY19pbnZhbGlkYXRlX3NlcTsKIAkJc21wX3JtYigpOwogCi0JCXdy aXRlX3VubG9ja19pcnEoJmdwYy0+bG9jayk7Ci0KIAkJLyoKIAkJICogSWYgdGhlIHByZXZpb3Vz IGl0ZXJhdGlvbiAiZmFpbGVkIiBkdWUgdG8gYW4gbW11X25vdGlmaWVyCiAJCSAqIGV2ZW50LCBy ZWxlYXNlIHRoZSBwZm4gYW5kIHVubWFwIHRoZSBrZXJuZWwgdmlydHVhbCBhZGRyZXNzCkBAIC0y MTMsNyArMjMxLDcgQEAgc3RhdGljIGt2bV9wZm5fdCBodmFfdG9fcGZuX3JldHJ5KHN0cnVjdCBn Zm5fdG9fcGZuX2NhY2hlICpncGMpCiAJCS8qCiAJCSAqIE9idGFpbiBhIG5ldyBrZXJuZWwgbWFw cGluZyBpZiBLVk0gaXRzZWxmIHdpbGwgYWNjZXNzIHRoZQogCQkgKiBwZm4uICBOb3RlLCBrbWFw KCkgYW5kIG1lbXJlbWFwKCkgY2FuIGJvdGggc2xlZXAsIHNvIHRoaXMKLQkJICogdG9vIG11c3Qg YmUgZG9uZSBvdXRzaWRlIG9mIGdwYy0+bG9jayEKKwkJICogY2FuIHNsZWVwLCB3aGljaCBpcyBm aW5lOiB0aGlzIHBhdGggaG9sZHMgbm8gc3Bpbm5pbmcgbG9ja3MuCiAJCSAqLwogCQlpZiAobmV3 X3BmbiA9PSBncGMtPnBmbikKIAkJCW5ld19raHZhID0gb2xkX2todmE7CkBAIC0yMjQsMjAgKzI0 MiwxNyBAQCBzdGF0aWMga3ZtX3Bmbl90IGh2YV90b19wZm5fcmV0cnkoc3RydWN0IGdmbl90b19w Zm5fY2FjaGUgKmdwYykKIAkJCWt2bV9yZWxlYXNlX3BhZ2VfdW51c2VkKHBhZ2UpOwogCQkJZ290 byBvdXRfZXJyb3I7CiAJCX0KLQotCQl3cml0ZV9sb2NrX2lycSgmZ3BjLT5sb2NrKTsKLQotCQkv KgotCQkgKiBPdGhlciB0YXNrcyBtdXN0IHdhaXQgZm9yIF90aGlzXyByZWZyZXNoIHRvIGNvbXBs ZXRlIGJlZm9yZQotCQkgKiBhdHRlbXB0aW5nIHRvIHJlZnJlc2guCi0JCSAqLwotCQlXQVJOX09O X09OQ0UoZ3BjLT52YWxpZCk7CiAJfSB3aGlsZSAobW11X25vdGlmaWVyX3JldHJ5X2NhY2hlKGdw Yy0+a3ZtLCBncGNfc2VxKSk7CiAKLQlncGMtPnZhbGlkID0gdHJ1ZTsKIAlncGMtPnBmbiA9IG5l d19wZm47CiAJZ3BjLT5raHZhID0gbmV3X2todmEgKyBvZmZzZXRfaW5fcGFnZShncGMtPnVodmEp OwogCisJLyoKKwkgKiBQdWJsaXNoLiBQYWlycyB3aXRoIHRoZSBzbXBfbG9hZF9hY3F1aXJlKCkg aW4ga3ZtX2dwY19jaGVjaygpOworCSAqIHRoZSBwZm4va2h2YSBzdG9yZXMgYWJvdmUgbXVzdCBi ZSB2aXNpYmxlIGJlZm9yZSB2YWxpZCBpcy4KKwkgKi8KKwlzbXBfc3RvcmVfcmVsZWFzZSgmZ3Bj LT52YWxpZCwgdHJ1ZSk7CisKIAkvKgogCSAqIFB1dCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBfbmV3 XyBwYWdlLiAgVGhlIHBhZ2UgaXMgbm93IHRyYWNrZWQgYnkgdGhlCiAJICogY2FjaGUgYW5kIGNh biBiZSBzYWZlbHkgbWlncmF0ZWQsIHN3YXBwZWQsIGV0Yy4uLiBhcyB0aGUgY2FjaGUgd2lsbApA QCAtMjQ4LDggKzI2Myw2IEBAIHN0YXRpYyBrdm1fcGZuX3QgaHZhX3RvX3Bmbl9yZXRyeShzdHJ1 Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjKQogCXJldHVybiAwOwogCiBvdXRfZXJyb3I6Ci0Jd3Jp dGVfbG9ja19pcnEoJmdwYy0+bG9jayk7Ci0KIAlyZXR1cm4gLUVGQVVMVDsKIH0KIApAQCAtMjU5 LDcgKzI3Miw3IEBAIHN0YXRpYyBpbnQgX19rdm1fZ3BjX3JlZnJlc2goc3RydWN0IGdmbl90b19w Zm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsCiAJYm9vbCB1bm1hcF9vbGQgPSBm YWxzZTsKIAl1bnNpZ25lZCBsb25nIG9sZF91aHZhOwogCWt2bV9wZm5fdCBvbGRfcGZuOwotCWJv b2wgaHZhX2NoYW5nZSA9IGZhbHNlOworCWJvb2wgd2FzX3ZhbGlkOwogCXZvaWQgKm9sZF9raHZh OwogCWludCByZXQ7CiAKQEAgLTI2OSwxMSArMjgyLDg1IEBAIHN0YXRpYyBpbnQgX19rdm1fZ3Bj X3JlZnJlc2goc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25l ZCBsCiAKIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZncGMtPnJlZnJlc2hfbG9jayk7CiAKLQl3cml0 ZV9sb2NrX2lycSgmZ3BjLT5sb2NrKTsKKwlpZiAoIWdwYy0+YWN0aXZlKQorCQlyZXR1cm4gLUVJ TlZBTDsKIAotCWlmICghZ3BjLT5hY3RpdmUpIHsKLQkJcmV0ID0gLUVJTlZBTDsKLQkJZ290byBv dXRfdW5sb2NrOworCS8qCisJICogUmVzb2x2ZSB0aGUgdGFyZ2V0IHVIVkEgKGFuZCBtZW1zbG90 LCBmb3IgYSBHUEEtYmFzZWQgY2FjaGUpIGJlZm9yZQorCSAqIGRlY2lkaW5nIHdoZXRoZXIgYW55 dGhpbmcgbmVlZHMgdG8gYmUgaW52YWxpZGF0ZWQgYXQgYWxsLgorCSAqCisJICogSWYgdGhlIGNh Y2hlIGlzIHN0aWxsIHZhbGlkIGFuZCB0aGlzIHJlZnJlc2ggcmVzb2x2ZXMgdG8gZXhhY3RseSB0 aGUKKwkgKiBzYW1lIHVIVkEsIGluIHRoZSBzYW1lIG1lbXNsb3QsIGZvciB0aGUgc2FtZSBHUEEs IHRoZW4gbm90aGluZyB3aGljaAorCSAqIGEgcmVhZGVyIGNhbiBvYnNlcnZlIGlzIGNoYW5naW5n OiB0aGUgZ1BBID0+IHVIVkEgdHJhbnNsYXRpb24gaXMKKwkgKiB1bmNoYW5nZWQsIGFuZCBncGMt PnZhbGlkIGJlaW5nIHNldCBpcyBwcmVjaXNlbHkgdGhlIGFzc2VydGlvbiB0aGF0CisJICogdGhl IHNlY29uZCBzdGFnZSAodUhWQSA9PiBQRk4sIGFuZCB0aGUga2VybmVsIG1hcHBpbmcgb2YgaXQp IGlzCisJICogc3RpbGwgZ29vZC4gTm8gbWFwcGluZyBpcyByZXRpcmVkLCBzbyB0aGVyZSBpcyBu b3RoaW5nIGZvciBhIGdyYWNlCisJICogcGVyaW9kIHRvIHdhaXQgZm9yLiBBdCBtb3N0IHRoZSBt ZW1zbG90IGdlbmVyYXRpb24gbmVlZHMgdXBkYXRpbmcsCisJICogd2hpY2ggbm8gcmVhZGVyIGNv bnN1bHRzIGV4Y2VwdCB2aWEga3ZtX2dwY19jaGVjaygpIGl0c2VsZi4KKwkgKgorCSAqIEFsbCBv ZiB0aGUgZm9sbG93aW5nIG11c3QgaG9sZCB0byB0YWtlIHRoaXMgc2hvcnRjdXQ6CisJICoKKwkg KiAgLSBncGMtPnZhbGlkOiB0aGUgUEZOIGFuZCBpdHMga2VybmVsIG1hcHBpbmcgYXJlIHN0aWxs IGdvb2QuCisJICogIC0gdGhlIHJlc29sdmVkIHVIVkEgaXMgdW5jaGFuZ2VkLiBrdm1fZ3BjX2No ZWNrKCkgdmFsaWRhdGVzCisJICogICAgJ29mZnNldCArIGxlbiA8PSBQQUdFX1NJWkUnIGZyb20g Z3BjLT51aHZhL2dwYSBvbiB0aGUgcmVhZGVyJ3MKKwkgKiAgICBiZWhhbGYsIGFuZCB0aGUgcmVh ZGVyIHRoZW4gYWNjZXNzZXMgZ3BjLT5raHZhIGZvciAnbGVuJyBieXRlcworCSAqICAgIHdpdGgg bm8gcmVjaGVjazsgbW92aW5nIHRoZSBvZmZzZXQgdW5kZXIgYSBsaXZlIHJlYWRlciB3b3VsZCBs ZXQKKwkgKiAgICBpdCBydW4gb2ZmIHRoZSBlbmQgb2YgdGhlIHBhZ2UuCisJICogIC0gdGhlIG1l bXNsb3QgaXMgdW5jaGFuZ2VkLiBrdm1fZ3BjX21hcmtfZGlydHlfaW5fc2xvdCgpIHVzZXMKKwkg KiAgICBncGMtPm1lbXNsb3QsIHNvIHJlcGxhY2luZyBpdCB1bmRlciBhIHJlYWRlciBjb3VsZCBt YXJrIHRoZSB3cm9uZworCSAqICAgIHNsb3QgZGlydHkgYW5kIHRodXMgbG9zZSBhIGRpcnR5IHBh Z2UgZm9yIGxpdmUgbWlncmF0aW9uLgorCSAqICAtIHRoZSBnUEEgaXMgdW5jaGFuZ2VkLCBhcyBp dCBwcm92aWRlcyB0aGUgZ2ZuIGZvciBkaXJ0eSB0cmFja2luZy4KKwkgKi8KKwlpZiAoUkVBRF9P TkNFKGdwYy0+dmFsaWQpKSB7CisJCXN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKm5ld19zbG90ID0g Z3BjLT5tZW1zbG90OworCQl1bnNpZ25lZCBsb25nIG5ld191aHZhID0gS1ZNX0hWQV9FUlJfQkFE OworCQl1NjQgbmV3X2dlbmVyYXRpb24gPSBncGMtPmdlbmVyYXRpb247CisKKwkJaWYgKGt2bV9p c19lcnJvcl9ncGEoZ3BhKSkgeworCQkJbmV3X3VodmEgPSB1aHZhOworCQl9IGVsc2UgeworCQkJ c3RydWN0IGt2bV9tZW1zbG90cyAqc2xvdHMgPSBrdm1fbWVtc2xvdHMoZ3BjLT5rdm0pOworCQkJ Z2ZuX3QgZ2ZuID0gZ3BhX3RvX2dmbihncGEpOworCisJCQluZXdfZ2VuZXJhdGlvbiA9IHNsb3Rz LT5nZW5lcmF0aW9uOworCQkJbmV3X3Nsb3QgPSBfX2dmbl90b19tZW1zbG90KHNsb3RzLCBnZm4p OworCQkJaWYgKG5ld19zbG90KQorCQkJCW5ld191aHZhID0gZ2ZuX3RvX2h2YV9tZW1zbG90KG5l d19zbG90LCBnZm4pICsKKwkJCQkJICAgb2Zmc2V0X2luX3BhZ2UoZ3BhKTsKKwkJfQorCisJCWlm ICgha3ZtX2lzX2Vycm9yX2h2YShuZXdfdWh2YSkgJiYgbmV3X3VodmEgPT0gZ3BjLT51aHZhICYm CisJCSAgICBuZXdfc2xvdCA9PSBncGMtPm1lbXNsb3QgJiYgZ3BhID09IGdwYy0+Z3BhKSB7CisJ CQkvKgorCQkJICogTm90aGluZyB0byBpbnZhbGlkYXRlLiBBIGNvbmN1cnJlbnQgcmVhZGVyIG1h eSBiZQorCQkJICogdXNpbmcgdGhlIGNhY2hlIHJpZ2h0IG5vdyBhbmQgY2FuIHNhZmVseSBjb250 aW51ZQorCQkJICogdG8gZG8gc287IG9ubHkgdGhlIG1lbXNsb3QgZ2VuZXJhdGlvbiwgd2hpY2gg aXMKKwkJCSAqIHJlYWQgc29sZWx5IGJ5IGt2bV9ncGNfY2hlY2soKSwgbWF5IG5lZWQgdXBkYXRp bmcuCisJCQkgKi8KKwkJCWlmIChuZXdfZ2VuZXJhdGlvbiAhPSBncGMtPmdlbmVyYXRpb24pCisJ CQkJV1JJVEVfT05DRShncGMtPmdlbmVyYXRpb24sIG5ld19nZW5lcmF0aW9uKTsKKworCQkJcmV0 dXJuIDA7CisJCX0KKwl9CisKKwkvKgorCSAqIFRha2UgdGhlIGNhY2hlIGludmFsaWQgYW5kIHdh aXQgZm9yIGFsbCBjdXJyZW50IHJlYWRlcnMgdG8KKwkgKiBkcmFpbiBiZWZvcmUgbXV0YXRpbmcg YW55dGhpbmcgdGhleSBtaWdodCBiZSBsb29raW5nIGF0LiBPbmNlCisJICogdGhlIGdyYWNlIHBl cmlvZCBoYXMgZWxhcHNlZCwgdGhpcyB0YXNrIChzZXJpYWxpemVkIGJ5CisJICogcmVmcmVzaF9s b2NrKSBvd25zIGFsbCB0aGUgY2FjaGUgZmllbGRzIGV4Y2x1c2l2ZWx5OiByZWFkZXJzCisJICog Y2hlY2sgdmFsaWQgKHdpdGggYW4gYWNxdWlyZSBsb2FkKSBpbnNpZGUgdGhlaXIgUkNVIHJlYWQt c2lkZQorCSAqIGNyaXRpY2FsIHNlY3Rpb25zIGFuZCBiYWNrIG9mZi4gVGhpcyBtaXJyb3JzIHdo YXQgYSBUTEIKKwkgKiBzaG9vdGRvd24gZG9lcyBmb3IgdGhlIGhhcmR3YXJlIHBhZ2UgdGFibGVz LgorCSAqCisJICogSWYgdGhlIGNhY2hlIHdhc24ndCB2YWxpZCwgY29uY3VycmVudCByZWFkZXJz IHdlcmUgYWxyZWFkeQorCSAqIGJhY2tpbmcgb2ZmLCBhbmQgYW55IGNvbmN1cnJlbnQgaW52YWxp ZGF0aW9uIGlzIGhhbmRsZWQgYnkgdGhlCisJICogZ3BjX2ludmFsaWRhdGVfc2VxIGNoZWNrIGlu IGh2YV90b19wZm5fcmV0cnkoKS4KKwkgKi8KKwl3YXNfdmFsaWQgPSBSRUFEX09OQ0UoZ3BjLT52 YWxpZCk7CisJaWYgKHdhc192YWxpZCkgeworCQlXUklURV9PTkNFKGdwYy0+dmFsaWQsIGZhbHNl KTsKKwkJc3luY2hyb25pemVfcmN1KCk7CiAJfQogCiAJb2xkX3BmbiA9IGdwYy0+cGZuOwpAQCAt Mjg2LDkgKzM3Myw2IEBAIHN0YXRpYyBpbnQgX19rdm1fZ3BjX3JlZnJlc2goc3RydWN0IGdmbl90 b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsCiAJCWdwYy0+Z3BhID0gSU5W QUxJRF9HUEE7CiAJCWdwYy0+bWVtc2xvdCA9IE5VTEw7CiAJCWdwYy0+dWh2YSA9IFBBR0VfQUxJ R05fRE9XTih1aHZhKTsKLQotCQlpZiAoZ3BjLT51aHZhICE9IG9sZF91aHZhKQotCQkJaHZhX2No YW5nZSA9IHRydWU7CiAJfSBlbHNlIHsKIAkJc3RydWN0IGt2bV9tZW1zbG90cyAqc2xvdHMgPSBr dm1fbWVtc2xvdHMoZ3BjLT5rdm0pOwogCkBAIC0zMDgsMTIgKzM5Miw3IEBAIHN0YXRpYyBpbnQg X19rdm1fZ3BjX3JlZnJlc2goc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3Bh LCB1bnNpZ25lZCBsCiAJCQkJZ290byBvdXQ7CiAJCQl9CiAKLQkJCS8qCi0JCQkgKiBFdmVuIGlm IHRoZSBHUEEgYW5kL29yIHRoZSBtZW1zbG90IGdlbmVyYXRpb24gY2hhbmdlZCwgdGhlCi0JCQkg KiBIVkEgbWF5IHN0aWxsIGJlIHRoZSBzYW1lLgotCQkJICovCi0JCQlpZiAoZ3BjLT51aHZhICE9 IG9sZF91aHZhKQotCQkJCWh2YV9jaGFuZ2UgPSB0cnVlOworCiAJCX0gZWxzZSB7CiAJCQlncGMt PnVodmEgPSBvbGRfdWh2YTsKIAkJfQpAQCAtMzIzLDIxICs0MDIsMTYgQEAgc3RhdGljIGludCBf X2t2bV9ncGNfcmVmcmVzaChzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCBncGFfdCBncGEs IHVuc2lnbmVkIGwKIAlncGMtPnVodmEgKz0gcGFnZV9vZmZzZXQ7CiAKIAkvKgotCSAqIElmIHRo ZSB1c2Vyc3BhY2UgSFZBIGNoYW5nZWQgb3IgdGhlIFBGTiB3YXMgYWxyZWFkeSBpbnZhbGlkLAot CSAqIGRyb3AgdGhlIGxvY2sgYW5kIGRvIHRoZSBIVkEgdG8gUEZOIGxvb2t1cCBhZ2Fpbi4KKwkg KiBBbHdheXMgcmVkbyB0aGUgSFZBIHRvIFBGTiBsb29rdXA6IGFuIGludmFsaWRhdGlvbiBvZiBv dXIgdWh2YQorCSAqIG1heSBoYXZlIHJhY2VkIHdpdGggKG9yIGZvbGxvd2VkKSB0aGUgdmFsaWQt Y2xlYXJpbmcgYWJvdmUsIGluCisJICogd2hpY2ggY2FzZSB0aGUgbm90aWZpZXIgd2FsayBza2lw cGVkIHRoaXMgY2FjaGUgKHZhbGlkIHdhcworCSAqIGFscmVhZHkgZmFsc2UpIGFuZCB0aGUgb2xk IHBmbiBtYXkgYWxyZWFkeSBiZSBzdGFsZS4gVGhlCisJICogZ3BjX2ludmFsaWRhdGVfc2VxIGNo ZWNrIGluIGh2YV90b19wZm5fcmV0cnkoKSBpcyB3aGF0IGRldGVjdHMKKwkgKiB0aGF0IHJhY2Us IHNvIHRoZSBsb29rdXAgcGF0aCBpcyB0aGUgb25seSBzYWZlIHdheSB0byBwdWJsaXNoLgorCSAq IElmIHRoZSBtYXBwaW5nIGlzIGluIGZhY3QgdW5jaGFuZ2VkLCBodmFfdG9fcGZuX3JldHJ5KCkg cmV1c2VzCisJICogdGhlIGV4aXN0aW5nIGtlcm5lbCBtYXBwaW5nIGZvciB0aGUgc2FtZSBwZm4u CiAJICovCi0JaWYgKCFncGMtPnZhbGlkIHx8IGh2YV9jaGFuZ2UpIHsKLQkJcmV0ID0gaHZhX3Rv X3Bmbl9yZXRyeShncGMpOwotCX0gZWxzZSB7Ci0JCS8qCi0JCSAqIElmIHRoZSBIVkHihpJQRk4g bWFwcGluZyB3YXMgYWxyZWFkeSB2YWxpZCwgZG9uJ3QgdW5tYXAgaXQuCi0JCSAqIEJ1dCBkbyB1 cGRhdGUgZ3BjLT5raHZhIGJlY2F1c2UgdGhlIG9mZnNldCB3aXRoaW4gdGhlIHBhZ2UKLQkJICog bWF5IGhhdmUgY2hhbmdlZC4KLQkJICovCi0JCWdwYy0+a2h2YSA9IG9sZF9raHZhICsgcGFnZV9v ZmZzZXQ7Ci0JCXJldCA9IDA7Ci0JCWdvdG8gb3V0X3VubG9jazsKLQl9CisJcmV0ID0gaHZhX3Rv X3Bmbl9yZXRyeShncGMpOwogCiAgb3V0OgogCS8qCkBAIC0zNDYsMTcgKzQyMCwxMiBAQCBzdGF0 aWMgaW50IF9fa3ZtX2dwY19yZWZyZXNoKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdw YV90IGdwYSwgdW5zaWduZWQgbAogCSAqIHZhbGlkLCBsZWF2ZSBpdCBhcyBpcy4KIAkgKi8KIAlp ZiAocmV0KSB7Ci0JCWdwYy0+dmFsaWQgPSBmYWxzZTsKKwkJV0FSTl9PTl9PTkNFKGdwYy0+dmFs aWQpOwogCQlncGMtPnBmbiA9IEtWTV9QRk5fRVJSX0ZBVUxUOwogCQlncGMtPmtodmEgPSBOVUxM OwogCX0KIAotCS8qIERldGVjdCBhIHBmbiBjaGFuZ2UgYmVmb3JlIGRyb3BwaW5nIHRoZSBsb2Nr ISAqLwogCXVubWFwX29sZCA9IChvbGRfcGZuICE9IGdwYy0+cGZuKTsKLQotb3V0X3VubG9jazoK LQl3cml0ZV91bmxvY2tfaXJxKCZncGMtPmxvY2spOwotCiAJaWYgKHVubWFwX29sZCkKIAkJZ3Bj X3VubWFwKG9sZF9wZm4sIG9sZF9raHZhKTsKIApAQCAtMzg0LDcgKzQ1Myw2IEBAIGludCBrdm1f Z3BjX3JlZnJlc2goc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgdW5zaWduZWQgbG9uZyBs ZW4pCiAKIHZvaWQga3ZtX2dwY19pbml0KHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIHN0 cnVjdCBrdm0gKmt2bSkKIHsKLQlyd2xvY2tfaW5pdCgmZ3BjLT5sb2NrKTsKIAltdXRleF9pbml0 KCZncGMtPnJlZnJlc2hfbG9jayk7CiAKIAlncGMtPmt2bSA9IGt2bTsKQEAgLTQxNSwxMSArNDgz LDExIEBAIHN0YXRpYyBpbnQgX19rdm1fZ3BjX2FjdGl2YXRlKHN0cnVjdCBnZm5fdG9fcGZuX2Nh Y2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQKIAkJLyoKIAkJICogQWN0aXZhdGUgdGhlIGNh Y2hlIGFmdGVyIGFkZGluZyBpdCB0byB0aGUgbGlzdCwgYSBjb25jdXJyZW50CiAJCSAqIHJlZnJl c2ggbXVzdCBub3QgZXN0YWJsaXNoIGEgbWFwcGluZyB1bnRpbCB0aGUgY2FjaGUgaXMKLQkJICog cmVhY2hhYmxlIGJ5IG1tdV9ub3RpZmllciBldmVudHMuCisJCSAqIHJlYWNoYWJsZSBieSBtbXVf bm90aWZpZXIgZXZlbnRzLiAoUmVmcmVzaGVzIGFyZSBzZXJpYWxpemVkCisJCSAqIGJ5IHJlZnJl c2hfbG9jaywgd2hpY2ggd2UgaG9sZDsgdGhlIHN0b3JlIG9yZGVyaW5nIG1hdHRlcnMKKwkJICog b25seSBhZ2FpbnN0IHRoZSBub3RpZmllciB3YWxrLCB3aGljaCBob2xkcyBncGNfbG9jay4pCiAJ CSAqLwotCQl3cml0ZV9sb2NrX2lycSgmZ3BjLT5sb2NrKTsKLQkJZ3BjLT5hY3RpdmUgPSB0cnVl OwotCQl3cml0ZV91bmxvY2tfaXJxKCZncGMtPmxvY2spOworCQlXUklURV9PTkNFKGdwYy0+YWN0 aXZlLCB0cnVlKTsKIAl9CiAJcmV0dXJuIF9fa3ZtX2dwY19yZWZyZXNoKGdwYywgZ3BhLCB1aHZh KTsKIH0KQEAgLTQ1NCwxMyArNTIyLDE2IEBAIHZvaWQga3ZtX2dwY19kZWFjdGl2YXRlKHN0cnVj dCBnZm5fdG9fcGZuX2NhY2hlICpncGMpCiAKIAlpZiAoZ3BjLT5hY3RpdmUpIHsKIAkJLyoKLQkJ ICogRGVhY3RpdmF0ZSB0aGUgY2FjaGUgYmVmb3JlIHJlbW92aW5nIGl0IGZyb20gdGhlIGxpc3Qs IEtWTQotCQkgKiBtdXN0IHN0YWxsIG1tdV9ub3RpZmllciBldmVudHMgdW50aWwgYWxsIHVzZXJz IGdvIGF3YXksIGkuZS4KLQkJICogdW50aWwgZ3BjLT5sb2NrIGlzIGRyb3BwZWQgYW5kIHJlZnJl c2ggaXMgZ3VhcmFudGVlZCB0byBmYWlsLgorCQkgKiBNYXJrIHRoZSBjYWNoZSBpbmFjdGl2ZSBh bmQgaW52YWxpZCwgYW5kIHdhaXQgZm9yIGFsbAorCQkgKiBjdXJyZW50IHJlYWRlcnMgdG8gZHJh aW4sIGJlZm9yZSB0ZWFyaW5nIGRvd24gdGhlIG1hcHBpbmcKKwkJICogdGhleSBtYXkgaGF2ZSBi ZWVuIHVzaW5nLiBSZWZyZXNoZXMgYXJlIGV4Y2x1ZGVkIGJ5CisJCSAqIHJlZnJlc2hfbG9jaywg d2hpY2ggd2UgaG9sZC4KIAkJICovCi0JCXdyaXRlX2xvY2tfaXJxKCZncGMtPmxvY2spOwotCQln cGMtPmFjdGl2ZSA9IGZhbHNlOwotCQlncGMtPnZhbGlkID0gZmFsc2U7CisJCVdSSVRFX09OQ0Uo Z3BjLT5hY3RpdmUsIGZhbHNlKTsKKwkJaWYgKFJFQURfT05DRShncGMtPnZhbGlkKSkgeworCQkJ V1JJVEVfT05DRShncGMtPnZhbGlkLCBmYWxzZSk7CisJCQlzeW5jaHJvbml6ZV9yY3UoKTsKKwkJ fQogCiAJCS8qCiAJCSAqIExlYXZlIHRoZSBHUEEgPT4gdUhWQSBjYWNoZSBpbnRhY3QsIGl0J3Mg cHJvdGVjdGVkIGJ5IHRoZQpAQCAtNDczLDcgKzU0NCw2IEBAIHZvaWQga3ZtX2dwY19kZWFjdGl2 YXRlKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMpCiAKIAkJb2xkX3BmbiA9IGdwYy0+cGZu OwogCQlncGMtPnBmbiA9IEtWTV9QRk5fRVJSX0ZBVUxUOwotCQl3cml0ZV91bmxvY2tfaXJxKCZn cGMtPmxvY2spOwogCiAJCXNwaW5fbG9jaygma3ZtLT5ncGNfbG9jayk7CiAJCWxpc3RfZGVsKCZn cGMtPmxpc3QpOwotLSAKMi40My4wCgo= ------EF41DE7C369FEE6126A3D401734EB001 Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" MII+PgYJKoZIhvcNAQcCoII+LzCCPisCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGg gjpEMIIGEDCCA/igAwIBAgIQTZQsENQ74JQJxYEtOisGTzANBgkqhkiG9w0BAQwFADCBiDELMAkG A1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYD VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlm aWNhdGlvbiBBdXRob3JpdHkwHhcNMTgxMTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBljELMAkG A1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEY MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0 aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBAMo87ZQKQf/e+Ua56NY75tqSvysQTqoavIK9viYcKSoq0s2cUIE/bZQu85eoZ9X140qO TKl1HyLTJbazGl6nBEibivHbSuejQkq6uIgymiqvTcTlxZql19szfBxxo0Nm9l79L9S+TZNTEDyg NfcXlkHKRhBhVFHdJDfqB6Mfi/Wlda43zYgo92yZOpCWjj2mz4tudN55/yE1+XvFnz5xsOFbme/S oY9WAa39uJORHtbC0x7C7aYivToxuIkEQXaumf05Vcf4RgHs+Yd+mwSTManRy6XcCFJE6k/LHt3n dD3sA3If/JBz6OX2ZebtQdHnKav7Azf+bAhudg7PkFOTuRMCAwEAAaOCAWQwggFgMB8GA1UdIwQY MBaAFFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBQJwPL8C9qU21/+K9+omULPyeCtADAO BgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAgYI KwYBBQUHAwQwEQYDVR0gBAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwu dXNlcnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNvbS9VU0VSVHJ1 c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNlcnRydXN0LmNv bTANBgkqhkiG9w0BAQwFAAOCAgEAQUR1AKs5whX13o6VbTJxaIwA3RfXehwQOJDI47G9FzGR87bj grShfsbMIYdhqpFuSUKzPM1ZVPgNlT+9istp5UQNRsJiD4KLu+E2f102qxxvM3TEoGg65FWM89YN 5yFTvSB5PelcLGnCLwRfCX6iLPvGlh9j30lKzcT+mLO1NLGWMeK1w+vnKhav2VuQVHwpTf64ZNnX UF8p+5JJpGtkUG/XfdJ5jR3YCq8H0OPZkNoVkDQ5CSSF8Co2AOlVEf32VBXglIrHQ3v9AAS0yPo4 Xl1FdXqGFe5TcDQSqXh3TbjugGnG+d9yZX3lB8bwc/Tn2FlIl7tPbDAL4jNdUNA7jGee+tAnTtlZ 6bFz+CsWmCIb6j6lDFqkXVsp+3KyLTZGXq6F2nnBtN4t5jO3ZIj2gpIKHAYNBAWLG2Q2fG7Bt2tP C8BLC9WIM90gbMhAmtMGquITn/2fORdsNmaV3z/sPKuIn8DvdEhmWVfh0fyYeqxGlTw0RfwhBlak dYYrkDmdWC+XszE19GUi8K8plBNKcIvyg2omAdebrMIHiAHAOiczxX/aS5ABRVrNUDcjfvp4hYbD OO6qHcfzy/uY0fO5ssebmHQREJJA3PpSgdVnLernF6pthJrGkNDPeUI05svqw1o5A2HcNzLOpklh NwZ+4uWYLcAi14ACHuVvJsmzNicwggXeMIIDxqADAgECAhAB/W0w/KPKUagbvGQONQMtMA0GCSqG SIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxML SmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNF UlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xMDAyMDEwMDAwMDBaFw0zODAx MTgyMzU5NTlaMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxML SmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNF UlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIP ADCCAgoCggIBAIASZRc2DsPbCLPQrFcNdu3NJ9NMrVCDYeKqIE0JLWQJ3M6Jn8w9qez2z8Hc8dOx 1ns3KBErR9o5xrw6GbRfpr19naNjQrZ28qk7K5H44m/Q7BYgkAk+4uh0yRi0kdRiZNt/owbxiBhq kCI8vP4T8IcUe/bkH47U5FHGEWdGCFHLhhRUP7wz/n5snP8WnRi9UY41pqdmyHJn2yFmsdSbeAPA UDrozPDcvJ5M/q8FljUfV1q3/875PbcstvZU3cjnEjpNrkyKt1yatLcgPcp/IjSufjtoZgFE5wFO RlObM2D3lL5TN5BzQ/Myw1Pv26r+dE5px2uMYJPexMcM3+EyrsyTO1F4lWeL7j1W/gzQaQ8bD/Ml JmszbfduR/pzQ+V+DqVmsSl8MoRjVYnEDcGTVDAZE6zTfTen6106bDVc20HXEtqpSQvf2ICKCZNi jrVmzyWIzYS4sT+kOQ/ZAp7rEkyVfPNrBaleFoPMuGfi6BOdzFuC00yz7Vv/3uVzrCM7LQC/NVV0 CUnYSVgaf5I25lGSDvMmfRxNF7zJ7EMm0L9BX0CpRET0medXh55QH1dUqD79dGMvsVBlCeZYQi5D Gky08CVHWfoEHpPUJkZKUIGy3r54t/xnFeHJV4QeD2PW6WK61l9VLupcxigIBCU5uA4rqfJMlxwH Pw1S9e3vL4IPAgMBAAGjQjBAMB0GA1UdDgQWBBRTeb9aqitKz1SA4dibwJ3ysgNmyzAOBgNVHQ8B Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQwFAAOCAgEAXNR8Dc/3AX1BmWUM c8VSn8v4z5kGfxvaQxWfngJVV5YU8VI8J4eUKO0fOgE3onb8U1DAhJvGa066jCFPoo5VYpHzaRXY vIjjxKoL/e+o6UtVKgYgbVV4KRnuXzBcSyQRVf8kmm5eKivuC02ff/cBOJQUlUMHCftgqe4cqxKM oJpep5hqWW2LPwj7yNFFrxgVZJASD3MoLsXiJE78WOzw9EX+IrPrL47S2UVhBcGXb6h2co+LjDav vw0FznGN5qZvH2ymcWLF2NCDcgzxZxGJDJwTTHI037zVcd+qcd3huWyMPBJdZdq9VxK2Q2v/5d5N ZhFRz5mu7Be26HGRjN5J/t01caIVJ5Qcz2HjJrtvo2clIV3m3R0LLmgbO4Kv7INnhdSYUXSxuZmA if9/eBlceUpgLpJArkw3KizJx2LIDl33NlvK4CUlAbTdGgecdwA/0NzV7D3U+rs/zIXWb3+pLd+5 Avf1l5q1NdrDZ7CHSqkoniOO/1wna+GwT/MH7gAu1FmHy1JBler0R9fuZEFVfI1ZApXdYp3Cue5a KHSEpZu3kMcMB9/1iTZ0MtYowbCwC+CcTMMc1vzjabVHRoEvooKr02NEcMSN/y0zuq2Pe7VwiK4+ Gc9AKNj8yJC7XZki9VLmWMUfiDFD7ogd18aOPENqHacY3n09FvFi+cqQqP0wggYQMIID+KADAgEC AhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UE CBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJV U1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UE CBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdv IExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQg U2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyjztlApB/975 Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUfItMltrMaXqcESJuK 8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeWQcpGEGFUUd0kN+oH ox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YBrf24k5Ee1sLTHsLt piK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewDch/8kHPo5fZl5u1B 0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAUU3m/WqorSs9UgOHY m8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1UdDwEB/wQEAwIBhjAS BgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDARBgNVHSAE CjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VT RVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUFBwEBBGowaDA/Bggr BgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJTQUFkZFRydXN0Q0Eu Y3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUA A4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+xswhh2GqkW5JQrM8 zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9IHk96VwsacIvBF8J fqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7kkmka2RQb9d90nmN HdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1eoYV7lNwNBKpeHdN uO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4KxaYIhvqPqUMWqRd Wyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL1Ygz3SBsyECa0waq 4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQOZ1YL5ezMTX0ZSLw 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 DTI4MDEwOTIzNTk1OVowgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0 ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMT0wOwYDVQQD EzRDT01PRE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvrOeV6wodnVAFsc4A5jTxhh2IVDzJXkLTLWg 0X06WD6cpzEup/Y0dtmEatrQPTRI5Or1u6zf+bGBSyD9aH95dDSmeny1nxdlYCeXIoymMv6pQHJG NcIDpFDIMypVpVSRsivlJTRENf+RKwrB6vcfWlP8dSsE3Rfywq09N0ZfxcBa39V0wsGtkGWC+eQK iz4pBZYKjrc5NOpG9qrxpZxyb4o4yNNwTqzaaPpGRqXB7IMjtf7tTmU2jqPMLxFNe1VXj9XB1rHv bRikw8lBoNoSWY66nJN/VCJv5ym6Q0mdCbDKCMPybTjoNCQuelc0IAaO4nLUXk0BOSxSxt8kCvsU tQIDAQABo4IBPDCCATgwHwYDVR0jBBgwFoAUu69+Aj36pvE8hI6t7jiY7NkyMtQwHQYDVR0OBBYE FIKvbIz4xf6WYXzoHz0rcUhexIvAMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEA MBEGA1UdIAQKMAgwBgYEVR0gADBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9kb2Nh LmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEFBQcBAQRlMGMw OwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQUFkZFRydXN0Q0Eu Y3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZIhvcNAQEMBQAD ggIBAHhcsoEoNE887l9Wzp+XVuyPomsX9vP2SQgG1NgvNc3fQP7TcePo7EIMERoh42awGGsma65u /ITse2hKZHzT0CBxhuhb6txM1n/y78e/4ZOs0j8CGpfb+SJA3GaBQ+394k+z3ZByWPQedXLL1OdK 8aRINTsjk/H5Ns77zwbjOKkDamxlpZ4TKSDMKVmU/PUWNMKSTvtlenlxBhh7ETrN543j/Q6qqgCW gWuMAXijnRglp9fyadqGOncjZjaaSOGTTFB+E2pvOUtY+hPebuPtTbq7vODqzCM6ryEhNhzf+enm 0zlpXK7q332nXttNtjv7VFNYG+I31gnMrwfHM5tdhYF/8v5UY5g2xANPECTQdu9vWPoqNSGDt87b 3gXb1AiGGaI06vzgkejL580ul+9hz9D0S0U4jkhJiA7EuTecP/CFtR72uYRBcunwwH3fciPjviDD AI9SnC/2aPY8ydehzuZutLbZdRJ5PDEJM/1tyZR2niOYihZ+FCbtf3D9mB12D4ln9icgc7CwaxpN SCPt8i/GqK2HsOgkL3VYnwtx7cJUmpvVdZ4ognzgXtgtdk3ShrtOS1iAN2ZBXFiRmjVzmehoMof0 6r1xub+85hFQzVxZx5/bRaTKTlL8YXLI8nAbR9HWdFqzcOoB/hxfEyIQpx9/s81rgzdEZOofSlZH ynoSMIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkG A1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEa MBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv biBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3F z0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPm NHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gc 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 TU9ET1JTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHEGCCsGAQUFBwEBBGUwYzA7BggrBgEF BQcwAoYvaHR0cDovL2NydC5jb21vZG9jYS5jb20vQ09NT0RPUlNBQWRkVHJ1c3RDQS5jcnQwJAYI KwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9kb2NhLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAeFyy gSg0TzzuX1bOn5dW7I+iaxf28/ZJCAbU2C81zd9A/tNx4+jsQgwRGiHjZrAYayZrrm78hOx7aEpk fNPQIHGG6Fvq3EzWf/Lvx7/hk6zSPwIal9v5IkDcZoFD7f3iT7PdkHJY9B51csvU50rxpEg1OyOT 8fk2zvvPBuM4qQNqbGWlnhMpIMwpWZT89RY0wpJO+2V6eXEGGHsROs3njeP9DqqqAJaBa4wBeKOd GCWn1/Jp2oY6dyNmNppI4ZNMUH4Tam85S1j6E95u4+1Nuru84OrMIzqvISE2HN/56ebTOWlcrurf fade2022O/tUU1gb4jfWCcyvB8czm12FgX/y/lRjmDbEA08QJNB2729Y+io1IYO3ztveBdvUCIYZ ojTq/OCR6MvnzS6X72HP0PRLRTiOSEmIDsS5N5w/8IW1Hva5hEFy6fDAfd9yI+O+IMMAj1KcL/Zo 9jzJ16HO5m60ttl1Enk8MQkz/W3JlHaeI5iKFn4UJu1/cP2YHXYPiWf2JyBzsLBrGk1II+3yL8ao rYew6CQvdVifC3HtwlSam9V1niiCfOBe2C12TdKGu05LWIA3ZkFcWJGaNXOZ6Ggyh/TqvXG5v7zm EVDNXFnHn9tFpMpOUvxhcsjycBtH0dZ0WrNw6gH+HF8TIhCnH3+zzWuDN0Rk6h9KVkfKehIwggXY MIIDwKADAgECAhBMqvnK22Nv4B/3TthbA4adMA0GCSqGSIb3DQEBDAUAMIGFMQswCQYDVQQGEwJH QjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQK ExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1 dGhvcml0eTAeFw0xMDAxMTkwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGFMQswCQYDVQQGEwJHQjEb MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD T01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhv cml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJHoVJLSClaxrA0k3cXPRGd0mSs3 o30jcABxvFPfxPoqEo9LfxBWvZ9wcrdhf8lLDxenPeOwBGHu/xGXx/SGPgr6Plz5k+Y0etkUa+ec s4Wggnp2r3GQ1+z9DfqcbPrfsIL0FH75vsSmL09/mX+1/GdDcr0MANaJ62ss0+2PmBwUq37l4278 2KjkkiTaQ2tiuFX96sG8bLaL8w6NmuSbbGmZ+HhIMEXVreENPEVg/DKWUSe8Z8PKLrZr6kbHxyCg sR9l3kgIuqROqfKDRjeE6+jMgUhDZ05yKptcvUwbKIpcInu0q5jZ7uBRg8MJRk5tPpn6lRfafDNX QTyNUe0LtlyvLGMa31fIP7zpXcSbr0WZ4qNaJLS6qVY9z2+q/0lYvvCo//S4rek3+7q49As6+ehD Qh6J2ITLE/HZu+GJYLiMKFasFB2cCudx688O3T2plqFIvTz3r7UNIkzAEYHsVjv206LiW7eyBCJS lYCTaeiOTGXxkQMtcHQC6otnFSlpUgK7199QalVGv6CjKGF/cNDDoqosIapHziicBkV2v4IYJ7TV rrTLUOZr9EyGcTDppt8WhuDY/0Dd+9BCiH+jMzouXB5BEYFjzhhxayvspoq3MVw6akfgw3lZ1iAa r/JqmKpyvFdK0kuduxD8sExB5e0dPV4onZzMv7NR2qdH5YRTAgMBAAGjQjBAMB0GA1UdDgQWBBS7 r34CPfqm8TyEjq3uOJjs2TIy1DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkq hkiG9w0BAQwFAAOCAgEACvHVRoS3rlG7bLJNQRQAk0ycy+XAVM+gJY4C+f2wog31IJg8Ey2sVqKw 1n4Rkukuup4umnKxvRlEbGE1opq0FhJpWozh1z6kGugvA/SuYR0QGyqki3rF/gWm4cDWyP6ero8r uj2Z+NhzCVhGbqac9Ncn05XaN4NyHNNz4KJHmQM4XdVJeQApHMfsmyAcByRpV3iyOfw6hKC1nHyN vy6TYie3OdoXGK69PAlo/4SbPNXWCwPjV54U99HrT8i9hyO3tklDeYVcuuuSC6HG6GioTBaxGpkK 6FMskruhCRh1DGWoe8sjtxrCKIXDG//QK2LvpHsJkZhnjBQBzWgGamMhdQOAiIpugcaF8qmkLef0 pSQQR4PKzfSNeVixBpvnGirZnQHXlH3tA0rK8NvoqQE+9VaZyR6OST275Qm54E9Jkj0WgkDMzFnG 5jrtEi5pPGyVsf2qHXt/hr4eDjJG+/sTj3V/TItLRmP+ADRAcMHDuaHdpnDiBLNBvOmAkepknHrh IgOpnG5vDmVPbIeHXvNuoPl1pZtA6FOyJ51KucB3IY3/h/LevIzvF9+3SQvR8m4wCxoOTnbtEfz1 6Vayfb/HbQqTjKXQwLYdvjpOlKLXbmwLwop8+iDzxOTlzQ2oy5GSsXyF7LUUaWYOgufNzsgtplF/ IcE1U4UGSl2frbsbX3QwggSvMIIDl6ADAgECAhEA4CPLFRKDU4mtYW56VGdrITANBgkqhkiG9w0B AQsFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRy dXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBS b290MB4XDTE0MTIyMjAwMDAwMFoXDTIwMDUzMDEwNDgzOFowgZsxCzAJBgNVBAYTAkdCMRswGQYD VQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9E TyBDQSBMaW1pdGVkMUEwPwYDVQQDEzhDT01PRE8gU0hBLTI1NiBDbGllbnQgQXV0aGVudGljYXRp b24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAImx Ddp6UxlOcFIdvFamBia3uEngludRq/HwWhNJFaO0jBtgvHpRQqd5jKQi3xdhTpHVdiMKFNNKAn+2 HQmAbqUEPdm6uxb+oYepLkNSQxZ8rzJQyKZPWukI2M+TJZx7iOgwZOak+FaA/SokFDMXmaxE5WmL o0YGS8Iz1OlAnwawsayTQLm1CJM6nCpToxDbPSBhPFUDjtlOdiUCISn6o3xxdk/u4V+B6ftUgNvD ezVSt4TeIj0sMC0xf1m9UjewM2ktQ+v61qXxl3dnUYzZ7ifrvKUHOHaMpKk4/9+M9QOsSb7K93OZ Og8yq5yVOhM9DkY6V3RhUL7GQD/L5OKfoiECAwEAAaOCARcwggETMB8GA1UdIwQYMBaAFK29mHo0 tCb3+sQmVO8DveAky1QaMB0GA1UdDgQWBBSSYWuC4aKgqk/sZ/HCo/e0gADB7DAOBgNVHQ8BAf8E BAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQw EQYDVR0gBAowCDAGBgRVHSAAMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0 LmNvbS9BZGRUcnVzdEV4dGVybmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUH MAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQELBQADggEBABsqbqxVwTqr iMXY7c1V86prYSvACRAjmQ/FZmpvsfW0tXdeDwJhAN99Bf4Ss6SAgAD8+x1banICCkG8BbrBWNUm wurVTYT7/oKYz1gb4yJjnFL4uwU2q31Ypd6rO2Pl2tVz7+zg+3vio//wQiOcyraNTT7kSxgDsqgt 1Ni7QkuQaYUQ26Y3NOh74AEQpZzKOsefT4g0bopl0BqKu6ncyso20fT8wmQpNa/WsadxEdIDQ7GP PprsnjJT9HaSyoY0B7ksyuYcStiZDcGG4pCS+1pCaiMhEOllx/XVu37qjIUgAmLq0ToHLFnFmTPy OInltukWeh95FPZKEBom+nyK+5swggYVMIIE/aADAgECAhBUK7v3iZFOwcXku0+rFipmMA0GCSqG SIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAw DgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3Rp Z28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTI0MTIx NTAwMDAwMFoXDTI2MTIxNTIzNTk1OVowIjEgMB4GCSqGSIb3DQEJARYRZHdtd0BhbWF6b24uY28u dWswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDYY7Ok+LSdJXMOPurGsBJ9haMJobp1 AbJ0lXHAfmgO7N2XfT2VeOglOqYQJQlqSpNchVXA9UZ3OLsde6OC21IBV4iqzkUtI4hf+TmtK1xt xSEhtV3Y7fKDyiKvvWdbNnuyKYuVlo+ABv8ZZB/2DDHLS/TvAgkR0q4YgoWxP4Eee8fTwJ7eWnmW dmFs2hjjnnHmmXvrurxwhyE0ZpJ0gJwF/2jaDSTbEAhnH6xPN8vYh5j/ARa0kWamowSpSqvLciXe RZ0sDx95ElHEJRzsIiHwkRVz+K6V0me5yjhGa90lx9OgA2PYGba0qcAW7sylgzxljEbkZ8/KII/2 Og3lONswf2QCIuW9Ac1n+LtKwREA+cbaTgsWB3Np10GhUlrt+pD9SWjahJROdTkPdhMlSn1tzeqm XCoga1Yo12NhLUfv+VvYsURZxLOJyHm/eEn/dlDBHhvXsNslb3GF1zT2onBp65BEjQtff2vGF8UB GX65gXgD0/b4kCYZ9zvrA+KT9ErN0o1WXOhDu736D9O27dp/WBNPF0j5MXMm9Sf+Lf/gLJJCnmBQ RnaY4MXfoixcY0sAcrWbod/uw7h1H4PO+lgOOInkA64R0o7r7gGdVm/FlLK6c63C6GI6hZm/23+v 8sqMZbd9ZnYDwvhS3PmLtQUMFwtyTG672xQVU7Z+V9hCgwIDAQABo4IB0DCCAcwwHwYDVR0jBBgw FoAUCcDy/AvalNtf/ivfqJlCz8ngrQAwHQYDVR0OBBYEFFr7QNV7ElfMY4HxUC/w1EzSGybuMA4G A1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMEMFAGA1UdIARJ MEcwOgYMKwYBBAGyMQECAQoCMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc2VjdGlnby5jb20vU01J TUVDUFMwCQYHZ4EMAQUBAzBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLnNlY3RpZ28uY29t L1NlY3RpZ29SU0FDbGllbnRBdXRoZW50aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3JsMIGKBggr BgEFBQcBAQR+MHwwVQYIKwYBBQUHMAKGSWh0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1JT QUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcnQwIwYIKwYBBQUHMAGGF2h0 dHA6Ly9vY3NwLnNlY3RpZ28uY29tMBwGA1UdEQQVMBOBEWR3bXdAYW1hem9uLmNvLnVrMA0GCSqG SIb3DQEBCwUAA4IBAQBA+k/q3z9lz3S3x6AneZ9YhiHGGrlnzx0XWTdk8O2uzRFyJJtsmTYszkqa dzazIljgTdd14Kp2C7KnacSYW48CnMyl+dP6n4YZDh7a0NBkZLnMmyuOOwGrpfNHGU/E91hvVPXY ZdwrfzLsigVkINzGJW1E+ruJAvT5PK3fnEdeLbWEVFgyk0tgay+3vI6TZrQqBGpA5DGODK6aDMDN X+ADVamfHJw57cF6uaK5mSJLDdg6sbCi5qxclQDjYakkk+9iJgXyFVoRUUwhfbU3COcBP9EpJduR WZkrAQdi1IHnICuzGcsPQ6P29LGEvvGJgP7o1AqjW9HzyQRPwfbwaJobMYIDvjCCA7oCAQEwgasw gZYxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1Nh bGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE+MDwGA1UEAxM1U2VjdGlnbyBSU0EgQ2xp ZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEFQru/eJkU7BxeS7T6sWKmYw DQYJYIZIAWUDBAIBBQCggeQwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUx DxcNMjYwODA1MTk1NTU1WjAvBgkqhkiG9w0BCQQxIgQglTvrgwAoPPesWsMCemOm2pmeqYkZwbTr UKMheLOSwXEweQYJKoZIhvcNAQkPMWwwajALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCG SAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4D AgcwDQYIKoZIhvcNAwICASgwDQYJKoZIhvcNAQEBBQAEggIAkBGKjhNhZGfdN6/7RJy18Z7CHtRc RbqRTycXkEnhJ0OUj1B48IdC1cn+EchqZf2UKm/+yWLTjG8pHhNIlS3bdKo2RVkn13HhJdPb2HQg uK1FNVtKmclfGmbRb55I0pKKV/UAEObo0wK/cZ7dLdRATOCDdZPsWKsaFdvshPq5mFgxbZoWLGQ1 vw+FZ1RDjrm0JehPOUssKgv8isyB0/5OFmpkcRmI5KNGRsfSgb1c+2O0ofgSYXNX7m6525gCHNke eo8dWrSqOFJ7F9IebG2gkMrrLtNpJmJF8f8Edj6oX/6rv58U5isBmrNRrp1KYQuJ6ylda35ZSTF6 jzZoqZxxlSrtzOKgzEEtnYZ6j0rGQrf+ZIU9llqCaLqKHsDBT9ps6Vn9uAB8/N0nZJqpAg0l0Prj FvGvL3Zn91ftwuZmY5VeHfuki/q64cR0Hi+haR7pPovmRQDgNsUcRNFXrE3lRVBXnTMFD6ndW4Ow YBeJvTLncoAEovBNVGPhQc82jZ+j1yJLrfuA90Z6LT5fAxUqNLYIY1u+Ma/QxWRjXtJ36wBOL2AU nc2W07FQss8Ql9Hmh2qQW+OK79LCYP+dA/OihS9ZjTIojztbQ3iEWe4zGgryNguELVN4J0UIcZwe MU6fV4xf6R/cyg4TNSWgFzobH9jOT+s7g4PGiv/V2Amtvsg= ------EF41DE7C369FEE6126A3D401734EB001-- --===============0447233886121387104== Content-Type: multipart/alternative; boundary="===============0707045358344018747==" MIME-Version: 1.0 Content-Disposition: inline --===============0707045358344018747== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Amazon Development Centre (London) Ltd. Registered in England and Wales wit= h registration number 04543232 with its registered office at 1 Principal Pl= ace, Worship Street, London EC2A 2FA, United Kingdom. --===============0707045358344018747== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable


Amazon Development Centre (London) Ltd.Registered in England an= d Wales with registration number 04543232 with its registered office at 1 P= rincipal Place, Worship Street, London EC2A 2FA, United Kingdom.


--===============0707045358344018747==-- --===============0447233886121387104==-- From nobody Tue Aug 25 14:34:35 2026 Received: from fra-out-011.esa.eu-central-1.outbound.mail-perimeter.amazon.com (fra-out-011.esa.eu-central-1.outbound.mail-perimeter.amazon.com [52.28.197.132]) (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 D48E441D622; Wed, 5 Aug 2026 19:56:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.28.197.132 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785959770; cv=fail; b=QizJOSX8hDgJucftQNSlUu+pX0tC3ddCYYHkUquQ7zgIUZ2TePyum1zAWKgCR3cMSVF+QVqmMYjvGfkXMlZB44lXt3PHNuAHv6WizIgCJbBx7kI6bH1pcQcX3o4OV6yPGgCQ25dkETR+bd7bzIvcrCXBuJN/B8QJDt9NdRiZO8o= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785959770; c=relaxed/simple; bh=JZjJGOQQrIx81T+5vKuSRpH2m1N565vlueGni3PiYwI=; h=Content-Type:MIME-Version:From:To:CC:Subject:Date:Message-ID: References:In-Reply-To:MIME-Version; b=eavglfHi3Hu/wKKiVKTAp+mVjkHO3cfg9Ch/KIXzkKEGfhcgRdo5gEakcTKPwpDTfe26U8vN8K0rIluTtyDzDaBEUBnJpp8bSXKb3fqZq5ZbSwCer0HnltDjjTq3I7uj+DIRF1T0cvsy+H2fzTPuf99EliHxjBG47+NaauT2yPU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.co.uk; spf=pass smtp.mailfrom=amazon.co.uk; dkim=pass (2048-bit key) header.d=amazon.co.uk header.i=@amazon.co.uk header.b=CwkuTKWn; arc=fail smtp.client-ip=52.28.197.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.co.uk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=amazon.co.uk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=amazon.co.uk header.i=@amazon.co.uk header.b="CwkuTKWn" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.co.uk; i=@amazon.co.uk; q=dns/txt; s=amazoncorp2; t=1785959768; x=1817495768; h=from:to:cc:subject:date:message-id:references: in-reply-to; bh=ImTKuihAW9CxEm6nexwxIK4uNd1RW95VKO9iC6q1npI=; b=CwkuTKWni1Nz7tacNrtP2f4orqJn8sZ+ptV6stvlAkt4zvsNh2njjmvY cZD92C+IJrY6iZozDVbdodCbHCvaDHJ4posM1D5ZUrjzPYDB/ii12WRg4 CEN2fQ1MQmolhfnetF1U9yshtSmfINeu9OPzwO6/4wUwo3cqN6ZK45GqZ N25vQ5ENPfESj4PDGd2ZEbvN4c7Cx8qiQazrgSmnVu9sUfhtTxXxRszw9 Pw5jeRPB7BQFSjKWGICOfVdrudbJXd3vfej9bW+WaTrVuIeHuwas3gx7V C29m2rtLYORclSqw7NfECESRJEcSaK+fOGKpJQAt85VRO1P3Nefsuo1AW Q==; X-CSE-ConnectionGUID: ud3C8OPsTMG97/HF3J2Avw== X-CSE-MsgGUID: lav1pMF4TiCniU/DLQwFCQ== X-Amazon-filename: smime.p7s X-IronPort-AV: E=Sophos;i="6.25,207,1779148800"; d="p7s'346?scan'346,208,346";a="17337878" Content-Type: multipart/mixed; boundary="===============1397031566656956887==" Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Received: from ip-10-6-11-83.eu-central-1.compute.internal (HELO smtpout.naws.eu-central-1.prod.farcaster.email.amazon.dev) ([10.6.11.83]) by internal-fra-out-011.esa.eu-central-1.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Aug 2026 19:56:04 +0000 Received: from EX19MTAEUA002.ant.amazon.com [54.240.197.232:30963] by smtpin.naws.eu-central-1.prod.farcaster.email.amazon.dev [10.0.17.230:2525] with esmtp (Farcaster) id def77a63-6e72-4742-ba79-15e496ad56c4; Wed, 5 Aug 2026 19:56:03 +0000 (UTC) X-Farcaster-Flow-ID: def77a63-6e72-4742-ba79-15e496ad56c4 Received: from EX19EXOEUB002.ant.amazon.com (10.252.51.83) by EX19MTAEUA002.ant.amazon.com (10.252.50.124) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45; Wed, 5 Aug 2026 19:56:03 +0000 Received: from EX19EXOEUC002.ant.amazon.com (10.252.51.145) by EX19EXOEUB002.ant.amazon.com (10.252.51.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45; Wed, 5 Aug 2026 19:56:02 +0000 Received: from LO2P265CU024.outbound.protection.outlook.com (10.252.50.44) by EX19EXOEUC002.ant.amazon.com (10.252.51.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45 via Frontend Transport; Wed, 5 Aug 2026 19:56:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lGsbMY8Nuhxx5xT+Nex/7+gni+WgrDeZN4Se5SHAGfhQw83u1fb9j0i6eNQat9TFHBPgyjaDJwssOQA3Mh30QgO7oW6mz3UisnGvCxYNd9aMV5R4lepi5/WPi0XPE/BjS0kSdGZ2BRn8fNvLM9xaYu2bEB18a3P2Yq/2a0prYogtUImvfg1AikQQuQQZdcbeqTv2cSenLHcH8U7qaPcfxCtfLriOpJIn6aseSUWvUAQOhrKBv7CKcPyjNGTWOpq3QILbcL5cFiJp9J5WCeIE/N7N7/P0yapx86vv/J20ECtUZakhITOJf86xccaMCnbLWaxZ91p8UGBZ2t/cFhh0aw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:MIME-Version; bh=O1e8zWjsccn0G5w99S0guKKVZ7Nj8DD0k/9gu4JfBY0=; b=G1EHzJUbcCt2DNPjqm/y4eh/1eyK2RxBLQvGJjREOOPSU/u3qJFIczLos7oUozQ6aG8P1ZCURLNmqoI8df4JmXzt/WZq+JVVjWGm9LEdOo8LO7rEmzTXrmDdbUsbZRLDICrRUTN0dzEUlVZfxNjcamjKDqDw8gMDuCXOwfGaccVGl2Or5/d5peAAbSH98jl6sgb5UH28q2Im2D1HILKzOKyCmb7j14VxTSw5uJW1kbWk2ZOGRJCypmoES8wIf5yslomITHt9TyukIabMLMavXCsKJkpTaoqbBVv6kd0uYlKbPp2ZfblztgaeLhAtVQMEUekzsaZkvpgcZHLJdzLTwA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amazon.co.uk; dmarc=pass action=none header.from=amazon.co.uk; dkim=pass header.d=amazon.co.uk; arc=none Received: from LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:4b4::12) by LO0P123MB7404.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:334::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.19; Wed, 5 Aug 2026 19:55:55 +0000 Received: from LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM ([fe80::c7e3:476c:6170:8f6]) by LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM ([fe80::c7e3:476c:6170:8f6%6]) with mapi id 15.21.0292.018; Wed, 5 Aug 2026 19:55:55 +0000 From: "Woodhouse, David" To: "seanjc@google.com" , "pbonzini@redhat.com" , "akpm@linux-foundation.org" CC: "bigeasy@linutronix.de" , "peterz@infradead.org" , "mingo@redhat.com" , "will@kernel.org" , "longman@redhat.com" , "boqun@kernel.org" , "tglx@kernel.org" , "paul@xen.org" , "Stollmaier, Carsten" , "dwmw2@infradead.org" , "Woodhouse, David" , "daniel.vetter@ffwll.ch" , "mhocko@suse.com" , "jgg@nvidia.com" , "christian.koenig@amd.com" , "jglisse@redhat.com" , "david@kernel.org" , "ljs@kernel.org" , "liam@infradead.org" , "vbabka@kernel.org" , "rppt@kernel.org" , "surenb@google.com" , "bp@alien8.de" , "dave.hansen@linux.intel.com" , "hpa@zytor.com" , "x86@kernel.org" , "kvm@vger.kernel.org" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" Subject: [PATCH v3 4/7] KVM: x86/xen: Extract delivery of event to vCPU into a separate helper Thread-Topic: [PATCH v3 4/7] KVM: x86/xen: Extract delivery of event to vCPU into a separate helper Thread-Index: AQHdJRRtvv9/yRgiRkSAahpXSy7JMw== Date: Wed, 5 Aug 2026 19:55:55 +0000 Message-ID: <20260805195528.3853473-5-dwmw@amazon.co.uk> References: <20260805195528.3853473-1-dwmw@amazon.co.uk> In-Reply-To: <20260805195528.3853473-1-dwmw@amazon.co.uk> Accept-Language: en-GB, en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amazon.co.uk; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LOZP123MB8516:EE_|LO0P123MB7404:EE_ x-ms-office365-filtering-correlation-id: aedf672e-d32d-4bea-3815-08def32b8fdd x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|6049299003|1800799024|376014|7416014|23010399003|22082099003|18002099003|11063799006|5023799004|56012099006|4053099003|38070700021|6133799003|10067099003; x-microsoft-antispam-message-info: PRmebw+lcmK8PaC22mOVpW87pK+74vtAnXegVYNnwYxR7FvnNvlmo5EhQrOxLvLwk+ohJkULJY5MxBWVPj7Qjq2n4xBSMmmaaEDmfWqiW5Vpd8Y63cJoYtVGi8sPYNy9f9iMlhQNfGU7ZJbgDZxv8IYyEK3EMpBG50ume3ooTA6rWZ3QgMJMlut9idW6sHDB9qLhq3Z+K+d4bGNRgyJvbgrwtcuAai5TaCQ4dGGABFTqpWDSDcUWWJUecspF13PqvYoBK1spiau5FXhLrFRnoE+9Xqz7vxbrYqzSyANpIi0qGhQUyCaV8jVh0LmjBVeLMrG9rzc3UXPixFWFUQy9IFNu14/kjka8vRm/zZKfZ305qZD2JzYELzYIZEhLOPxTbq0nh3eNT+VjwoNUt6F3HtklkM7WRUQsMNLe8XPjK1ZzRjlKOng3VLZ8S4Hkrtkx+XG2y//I2RtxjqtOUe5XSBZh6ZLICYUaKwWnbFyiRIIATlBaTV3tCG+U8CKrGCvIpv6Jfz89nYQaHd7ic+NUCI66MI9m6Qor8ObpbUeSbDEED6NexDonkmGsvhwB/nnDmsm9IqtH5hqOYwmlwr2aoQ7qeys3v5OuZEaGWfDkEDxqSgncqqEVQUntNNfXMCtnKhoz4XdJ1u8zcOR3jBByD1fkMd+nkrw5o6bx/ncL7BC/D3ViTTYYGSM5nsgX6W/eK2ZG/yoS3ZhTprrIt4GvqAu67saa0qpBLKVP433LSSA= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(6049299003)(1800799024)(376014)(7416014)(23010399003)(22082099003)(18002099003)(11063799006)(5023799004)(56012099006)(4053099003)(38070700021)(6133799003)(10067099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?8zJC8Ka2LTp+J54nsOW0wc+s52rj7KZpy58ikN6jxPXux/jp2RGpteiPpC?= =?iso-8859-1?Q?U2gAFTZd6v36kRSVu4tN6udIo8DOSLhErURa9B1VgBNODHPkq4TAa5ZnNW?= =?iso-8859-1?Q?QR+9kX2A+IS2/aF3OFFmJVtLgPieTGZs1Se3+3KgSwdpFgBzs+CkTTZhgj?= =?iso-8859-1?Q?+RY9UWe/wYSBo+uGMYiZNP2wEdCGz2MpgjWt9VGZ0v+ldr8tumXPXkLHcT?= =?iso-8859-1?Q?PALV10M0+nrO/aQ8mmIM5a36Z56nhELEXRkA08c6c/g4h7IOFhOmsjMA5b?= =?iso-8859-1?Q?r7d5+5vX99tkpfKPTYPYTHL7YpFGzSw+8Q1c0LcsRums8IFS3staSnGNti?= =?iso-8859-1?Q?8rXa5nKf6gv8MWyLaC4HgbYVK7Hn4S9H9Aq9+TBt/keMmfpuFX6h9EFkOf?= =?iso-8859-1?Q?H+qKcYA3Lv06pBFaES0Usm+rsOLNmt5ApLPhk3nRZuFlgjw414dXRmLXxB?= =?iso-8859-1?Q?mPElFcl3WsOZd93o2JgtP27vIw3D83iZ54V/4El4tvd+HIRJiqBsqXSUkR?= =?iso-8859-1?Q?m7DkROReAeCeRdX+BF8iLuRl6ezdyToKqW7AUNREDbEAiR07/OPanwbjxi?= =?iso-8859-1?Q?QAAB13YWsA8iXGijWv0GAqj2/fcG8U7+RLBnLE0cf1fxyQPrDam/GkrhIr?= =?iso-8859-1?Q?qtdldlUqZZsoKsa9AuC5VcjH65gwV5gozgPGQAiqx6GAxyTUTHUkaQA81/?= =?iso-8859-1?Q?GNJqU+Np7zCOjI8EeKaztVdP0a2Go7ScrGlr2K6vcilmKKG0zTDqndpxmF?= =?iso-8859-1?Q?VpumAn8VXGGiyHLVuyOyo6LwNsH//qG83OOeiMZ2CNPsu7wJbfwewgZLsJ?= =?iso-8859-1?Q?oQMKL3yOMncU1oiN5YxGczNcMX39VcwPsUL1jrAbrfdE8to8twuAg5a32K?= =?iso-8859-1?Q?W2SpsyyroM4AnF+b7PBL2MKHnxhHKonAv+AfSOMWpJ21AaLqfXRZzkMCrv?= =?iso-8859-1?Q?5oGh60bIQT2nJBadZ9XYKLQMp+rG7y2dckyZWj8bFAlVoYyDrAVkeTojfw?= =?iso-8859-1?Q?PyYYGh+m2EMNLvgakU9nP6/AwMZgyHTAT2wIsrDtSD0CVws7zpcXwiAY++?= =?iso-8859-1?Q?zoxAvzV2uqF4r5s5po7ryW6dIVkVkfnUxLeDYynheE2WYKHJ/ACjphdDbH?= =?iso-8859-1?Q?+h2rAi/3butNbIzEqKBG3mv5KvyWbTFgn+5y6GOXCNTCntyRyZS69QYh1s?= =?iso-8859-1?Q?VAzeLAfeD0BV5Kl0mpxsB0vJvR7s5usgHfBmVrbaLUQn7OqcLj9w18OacW?= =?iso-8859-1?Q?PFq2ioeeIwbzc8FrdPAqiQRGMNZuXiDbzu4IboNR+X7Yae8sOyoccj9bG7?= =?iso-8859-1?Q?ChWR6MoSaXfkv0RaG/yiZedJ2l1ByN9N/Lplo/5avH83VsiTKGMqCWQgD9?= =?iso-8859-1?Q?rmgoPHNVuYWeuL22aXAeBa0W925WvRhSx71eagg95eKipdoIvJGw2HSYiQ?= =?iso-8859-1?Q?YLnJP8faJRGfPdQqjCbMGQlFGV6cD0Hv1tTQV4IrHYqbHvQHjcetzD6XU/?= =?iso-8859-1?Q?a7p+fIrspZegkt9cfliDeo8hg1aPRw1Y/i9THENGFGYqhk4LfO0G5fYh4J?= =?iso-8859-1?Q?tEAeWEMIft0u6tNH21rjGR/ADA6zQXVBVy4lnz9CFNibsnB5naGOaoy6hf?= =?iso-8859-1?Q?O5qXu6LOYD5NNNFYO39r0dSndcN2Bf4+HvO3B4cKptnvPDhmpQKLJ8x0s9?= =?iso-8859-1?Q?fuo/W1z9POJrNkWXSgweVLUnuFbukZoNZtRJ0Q3pTjgHp1TGgctaXKd7X/?= =?iso-8859-1?Q?uk3MTcauhJnE+JHODItbmhYsl3YQ7wFM2ghPUiLaL5qbpk?= MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: W3Wc1NuT60w/0D3kfBOe3JNw/7ymwlMMb4iYPSzyFCiLcXf3r6/E3kDRnLdlgII6DIWyYOmBpm6sDHAXFyAErKsNZGfpYriVEpl2zH4pYqvloezZQlqvgrzvQljd2O1JjARVk3Fno02l6vgfuKXKMfFtt6pjc3pPB2RWZ0NSPDRfGyHmLTL4M4cdwyBa7ANiJ84fpJeu08TBHOAcuRKqWa9Opxg0NuGDZwUsOg/xwbp3W5Hb7TiebtwjEPSlg9Erx0bOztj3hT4YIpYROKnmn4O8uK4+pD9dUg1FG4D/LeZwsVGfGl6ZMjtKZVwG4hYWqQIfuwuSfE7Jw+ITe07U/w== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: aedf672e-d32d-4bea-3815-08def32b8fdd X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2026 19:55:55.5678 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5280104a-472d-4538-9ccf-1e1d0efe8b1b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: pS2AMTK9oRcaXzt+NBma4Av88MBN4Ou9GBYSDRyQdf0GPamY65omMDv73FiLoOZp9HWKoLYhoUl/wGkOzNXeRA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO0P123MB7404 X-OriginatorOrg: amazon.co.uk --===============1397031566656956887== Content-Language: en-US Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha-256; boundary="----CACDE43EAC4A1469C09AD890A959AD0A" ------CACDE43EAC4A1469C09AD890A959AD0A MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Sean Christopherson Move the marking of an event as pending in the target vCPU's vcpu_info into a separate helper, __kvm_xen_set_evtchn_fast(), invoked after the shared_info processing is complete and its RCU read-side critical section has been exited. This makes both halves easier to read. No functional change intended. Signed-off-by: Sean Christopherson [dwmw2: rebased onto the RCU conversion of the GPC locking; the read_trylock() failure path in the original no longer exists. The caller's kvm->srcu section now extends across the helper call, since kvm_gpc_check() on the vcpu_info cache consults the memslot generation and the irqfd path enters holding only irq_srcu; in Sean's series that was covered by a guard(srcu) spanning the whole function, which this series does not carry.] Signed-off-by: David Woodhouse Assisted-by: Claude:claude-mythos-5 --- arch/x86/kvm/xen.c | 104 ++++++++++++++++++++++++++++----------------- 1 file changed, 65 insertions(+), 39 deletions(-) diff --git a/arch/x86/kvm/xen.c b/arch/x86/kvm/xen.c index 6bcece2439f5..75fbe88c2102 100644 --- a/arch/x86/kvm/xen.c +++ b/arch/x86/kvm/xen.c @@ -1759,6 +1759,67 @@ static void kvm_xen_check_poller(struct kvm_vcpu *vcpu, int port) } } +/* Called with kvm->srcu held, as kvm_gpc_check() consults the memslots. */ +static void __kvm_xen_set_evtchn_fast(struct kvm_vcpu *vcpu, int port_word_bit) +{ + struct gfn_to_pfn_cache *gpc = &vcpu->arch.xen.vcpu_info_cache; + bool kick_vcpu = false; + + /* Now switch to the vCPU's vcpu_info to set the index and pending_sel */ + rcu_read_lock(); + if (!kvm_gpc_check(gpc, sizeof(struct vcpu_info))) { + /* + * Could not access the vcpu_info. Set the bit in-kernel and + * prod the vCPU to deliver it for itself. + */ + if (!test_and_set_bit(port_word_bit, &vcpu->arch.xen.evtchn_pending_sel)) + kick_vcpu = true; + goto out_unlock; + } + + if (IS_ENABLED(CONFIG_64BIT) && vcpu->kvm->arch.xen.long_mode) { + struct vcpu_info *vcpu_info = gpc->khva; + + if (!test_and_set_bit(port_word_bit, &vcpu_info->evtchn_pending_sel)) { + WRITE_ONCE(vcpu_info->evtchn_upcall_pending, 1); + kick_vcpu = true; + } + } else { + struct compat_vcpu_info *vcpu_info = gpc->khva; + + if (!test_and_set_bit(port_word_bit, + (unsigned long *)&vcpu_info->evtchn_pending_sel)) { + WRITE_ONCE(vcpu_info->evtchn_upcall_pending, 1); + kick_vcpu = true; + } + } + +out_unlock: + rcu_read_unlock(); + + /* + * Deliver the upcall or kick the vCPU only after dropping the RCU + * read lock. Both paths end up in kvm_vcpu_kick(), and the MSI + * delivery also walks the APIC map and takes APIC locks; none of + * that wants to be nested inside the GPC read-side critical + * section, which must be no longer than the accesses to gpc->khva + * above. Invalidation waits for a grace period, so holding the + * read lock across the kick would extend how long a memory + * invalidation is blocked. + */ + if (!kick_vcpu) + return; + + /* For the per-vCPU lapic vector, deliver it as MSI. */ + if (vcpu->arch.xen.upcall_vector) { + kvm_xen_inject_vcpu_vector(vcpu); + return; + } + + kvm_make_request(KVM_REQ_UNBLOCK, vcpu); + kvm_vcpu_kick(vcpu); +} + /* * The return value from this function is propagated to kvm_set_irq() API, * so it returns: @@ -1775,7 +1836,6 @@ int kvm_xen_set_evtchn_fast(struct kvm_xen_evtchn *xe, struct kvm *kvm) struct kvm_vcpu *vcpu; unsigned long *pending_bits, *mask_bits; int port_word_bit; - bool kick_vcpu = false; int vcpu_idx, idx, rc; vcpu_idx = READ_ONCE(xe->vcpu_idx); @@ -1825,49 +1885,15 @@ int kvm_xen_set_evtchn_fast(struct kvm_xen_evtchn *xe, struct kvm *kvm) kvm_xen_check_poller(vcpu, xe->port); } else { rc = 1; /* Delivered to the bitmap in shared_info. */ - /* Now switch to the vCPU's vcpu_info to set the index and pending_sel */ - gpc = &vcpu->arch.xen.vcpu_info_cache; - - if (!kvm_gpc_check(gpc, sizeof(struct vcpu_info))) { - /* - * Could not access the vcpu_info. Set the bit in-kernel - * and prod the vCPU to deliver it for itself. - */ - if (!test_and_set_bit(port_word_bit, &vcpu->arch.xen.evtchn_pending_sel)) - kick_vcpu = true; - goto out_rcu; - } - - if (IS_ENABLED(CONFIG_64BIT) && kvm->arch.xen.long_mode) { - struct vcpu_info *vcpu_info = gpc->khva; - if (!test_and_set_bit(port_word_bit, &vcpu_info->evtchn_pending_sel)) { - WRITE_ONCE(vcpu_info->evtchn_upcall_pending, 1); - kick_vcpu = true; - } - } else { - struct compat_vcpu_info *vcpu_info = gpc->khva; - if (!test_and_set_bit(port_word_bit, - (unsigned long *)&vcpu_info->evtchn_pending_sel)) { - WRITE_ONCE(vcpu_info->evtchn_upcall_pending, 1); - kick_vcpu = true; - } - } - - /* For the per-vCPU lapic vector, deliver it as MSI. */ - if (kick_vcpu && vcpu->arch.xen.upcall_vector) { - kvm_xen_inject_vcpu_vector(vcpu); - kick_vcpu = false; - } } out_rcu: rcu_read_unlock(); - srcu_read_unlock(&kvm->srcu, idx); - if (kick_vcpu) { - kvm_make_request(KVM_REQ_UNBLOCK, vcpu); - kvm_vcpu_kick(vcpu); - } + if (rc == 1) + __kvm_xen_set_evtchn_fast(vcpu, port_word_bit); + + srcu_read_unlock(&kvm->srcu, idx); return rc; } -- 2.43.0 ------CACDE43EAC4A1469C09AD890A959AD0A Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" MII+PgYJKoZIhvcNAQcCoII+LzCCPisCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGg gjpEMIIGEDCCA/igAwIBAgIQTZQsENQ74JQJxYEtOisGTzANBgkqhkiG9w0BAQwFADCBiDELMAkG A1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYD VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlm aWNhdGlvbiBBdXRob3JpdHkwHhcNMTgxMTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBljELMAkG A1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEY MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0 aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBAMo87ZQKQf/e+Ua56NY75tqSvysQTqoavIK9viYcKSoq0s2cUIE/bZQu85eoZ9X140qO TKl1HyLTJbazGl6nBEibivHbSuejQkq6uIgymiqvTcTlxZql19szfBxxo0Nm9l79L9S+TZNTEDyg NfcXlkHKRhBhVFHdJDfqB6Mfi/Wlda43zYgo92yZOpCWjj2mz4tudN55/yE1+XvFnz5xsOFbme/S oY9WAa39uJORHtbC0x7C7aYivToxuIkEQXaumf05Vcf4RgHs+Yd+mwSTManRy6XcCFJE6k/LHt3n dD3sA3If/JBz6OX2ZebtQdHnKav7Azf+bAhudg7PkFOTuRMCAwEAAaOCAWQwggFgMB8GA1UdIwQY MBaAFFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBQJwPL8C9qU21/+K9+omULPyeCtADAO BgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAgYI KwYBBQUHAwQwEQYDVR0gBAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwu dXNlcnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNvbS9VU0VSVHJ1 c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNlcnRydXN0LmNv bTANBgkqhkiG9w0BAQwFAAOCAgEAQUR1AKs5whX13o6VbTJxaIwA3RfXehwQOJDI47G9FzGR87bj grShfsbMIYdhqpFuSUKzPM1ZVPgNlT+9istp5UQNRsJiD4KLu+E2f102qxxvM3TEoGg65FWM89YN 5yFTvSB5PelcLGnCLwRfCX6iLPvGlh9j30lKzcT+mLO1NLGWMeK1w+vnKhav2VuQVHwpTf64ZNnX UF8p+5JJpGtkUG/XfdJ5jR3YCq8H0OPZkNoVkDQ5CSSF8Co2AOlVEf32VBXglIrHQ3v9AAS0yPo4 Xl1FdXqGFe5TcDQSqXh3TbjugGnG+d9yZX3lB8bwc/Tn2FlIl7tPbDAL4jNdUNA7jGee+tAnTtlZ 6bFz+CsWmCIb6j6lDFqkXVsp+3KyLTZGXq6F2nnBtN4t5jO3ZIj2gpIKHAYNBAWLG2Q2fG7Bt2tP C8BLC9WIM90gbMhAmtMGquITn/2fORdsNmaV3z/sPKuIn8DvdEhmWVfh0fyYeqxGlTw0RfwhBlak dYYrkDmdWC+XszE19GUi8K8plBNKcIvyg2omAdebrMIHiAHAOiczxX/aS5ABRVrNUDcjfvp4hYbD OO6qHcfzy/uY0fO5ssebmHQREJJA3PpSgdVnLernF6pthJrGkNDPeUI05svqw1o5A2HcNzLOpklh NwZ+4uWYLcAi14ACHuVvJsmzNicwggXeMIIDxqADAgECAhAB/W0w/KPKUagbvGQONQMtMA0GCSqG SIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxML SmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNF UlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xMDAyMDEwMDAwMDBaFw0zODAx MTgyMzU5NTlaMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxML SmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNF UlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIP ADCCAgoCggIBAIASZRc2DsPbCLPQrFcNdu3NJ9NMrVCDYeKqIE0JLWQJ3M6Jn8w9qez2z8Hc8dOx 1ns3KBErR9o5xrw6GbRfpr19naNjQrZ28qk7K5H44m/Q7BYgkAk+4uh0yRi0kdRiZNt/owbxiBhq kCI8vP4T8IcUe/bkH47U5FHGEWdGCFHLhhRUP7wz/n5snP8WnRi9UY41pqdmyHJn2yFmsdSbeAPA UDrozPDcvJ5M/q8FljUfV1q3/875PbcstvZU3cjnEjpNrkyKt1yatLcgPcp/IjSufjtoZgFE5wFO RlObM2D3lL5TN5BzQ/Myw1Pv26r+dE5px2uMYJPexMcM3+EyrsyTO1F4lWeL7j1W/gzQaQ8bD/Ml JmszbfduR/pzQ+V+DqVmsSl8MoRjVYnEDcGTVDAZE6zTfTen6106bDVc20HXEtqpSQvf2ICKCZNi jrVmzyWIzYS4sT+kOQ/ZAp7rEkyVfPNrBaleFoPMuGfi6BOdzFuC00yz7Vv/3uVzrCM7LQC/NVV0 CUnYSVgaf5I25lGSDvMmfRxNF7zJ7EMm0L9BX0CpRET0medXh55QH1dUqD79dGMvsVBlCeZYQi5D Gky08CVHWfoEHpPUJkZKUIGy3r54t/xnFeHJV4QeD2PW6WK61l9VLupcxigIBCU5uA4rqfJMlxwH Pw1S9e3vL4IPAgMBAAGjQjBAMB0GA1UdDgQWBBRTeb9aqitKz1SA4dibwJ3ysgNmyzAOBgNVHQ8B Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQwFAAOCAgEAXNR8Dc/3AX1BmWUM c8VSn8v4z5kGfxvaQxWfngJVV5YU8VI8J4eUKO0fOgE3onb8U1DAhJvGa066jCFPoo5VYpHzaRXY vIjjxKoL/e+o6UtVKgYgbVV4KRnuXzBcSyQRVf8kmm5eKivuC02ff/cBOJQUlUMHCftgqe4cqxKM oJpep5hqWW2LPwj7yNFFrxgVZJASD3MoLsXiJE78WOzw9EX+IrPrL47S2UVhBcGXb6h2co+LjDav vw0FznGN5qZvH2ymcWLF2NCDcgzxZxGJDJwTTHI037zVcd+qcd3huWyMPBJdZdq9VxK2Q2v/5d5N ZhFRz5mu7Be26HGRjN5J/t01caIVJ5Qcz2HjJrtvo2clIV3m3R0LLmgbO4Kv7INnhdSYUXSxuZmA if9/eBlceUpgLpJArkw3KizJx2LIDl33NlvK4CUlAbTdGgecdwA/0NzV7D3U+rs/zIXWb3+pLd+5 Avf1l5q1NdrDZ7CHSqkoniOO/1wna+GwT/MH7gAu1FmHy1JBler0R9fuZEFVfI1ZApXdYp3Cue5a KHSEpZu3kMcMB9/1iTZ0MtYowbCwC+CcTMMc1vzjabVHRoEvooKr02NEcMSN/y0zuq2Pe7VwiK4+ Gc9AKNj8yJC7XZki9VLmWMUfiDFD7ogd18aOPENqHacY3n09FvFi+cqQqP0wggYQMIID+KADAgEC AhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UE CBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJV U1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UE CBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdv IExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQg U2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyjztlApB/975 Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUfItMltrMaXqcESJuK 8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeWQcpGEGFUUd0kN+oH ox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YBrf24k5Ee1sLTHsLt piK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewDch/8kHPo5fZl5u1B 0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAUU3m/WqorSs9UgOHY m8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1UdDwEB/wQEAwIBhjAS BgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDARBgNVHSAE CjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VT RVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUFBwEBBGowaDA/Bggr BgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJTQUFkZFRydXN0Q0Eu Y3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUA A4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+xswhh2GqkW5JQrM8 zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9IHk96VwsacIvBF8J fqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7kkmka2RQb9d90nmN HdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1eoYV7lNwNBKpeHdN uO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4KxaYIhvqPqUMWqRd Wyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL1Ygz3SBsyECa0waq 4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQOZ1YL5ezMTX0ZSLw rymUE0pwi/KDaiYB15uswgeIAcA6JzPFf9pLkAFFWs1QNyN++niFhsM47qodx/PL+5jR87myx5uY dBEQkkDc+lKB1Wct6ucXqm2EmsaQ0M95QjTmy+rDWjkDYdw3Ms6mSWE3Bn7i5ZgtwCLXgAIe5W8m ybM2JzCCBd4wggPGoAMCAQICEAH9bTD8o8pRqBu8ZA41Ay0wDQYJKoZIhvcNAQEMBQAwgYgxCzAJ BgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwG A1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRp ZmljYXRpb24gQXV0aG9yaXR5MB4XDTEwMDIwMTAwMDAwMFoXDTM4MDExODIzNTk1OVowgYgxCzAJ BgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwG A1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRp ZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJlFzYO w9sIs9CsVw127c0n00ytUINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezcoEStH2jnGvDoZtF+m vX2do2NCtnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+jBvGIGGqQIjy8/hPwhxR79uQfjtTk UcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWmp2bIcmfbIWax1Jt4A8BQOujM8Ny8nkz+rwWWNR9X Wrf/zvk9tyy29lTdyOcSOk2uTIq3XJq0tyA9yn8iNK5+O2hmAUTnAU5GU5szYPeUvlM3kHND8zLD U+/bqv50TmnHa4xgk97Exwzf4TKuzJM7UXiVZ4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWax KXwyhGNVicQNwZNUMBkTrNN9N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjNhLixP6Q5D9kC nusSTJV882sFqV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81VXQJSdhJWBp/kjbmUZIO8yZ9 HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10Yy+xUGUJ5lhCLkMaTLTwJUdZ+gQek9QmRkpQ gbLevni3/GcV4clXhB4PY9bpYrrWX1Uu6lzGKAgEJTm4Diup8kyXHAc/DVL17e8vgg8CAwEAAaNC MEAwHQYDVR0OBBYEFFN5v1qqK0rPVIDh2JvAnfKyA2bLMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB Af8EBTADAQH/MA0GCSqGSIb3DQEBDAUAA4ICAQBc1HwNz/cBfUGZZQxzxVKfy/jPmQZ/G9pDFZ+e AlVXlhTxUjwnh5Qo7R86ATeidvxTUMCEm8ZrTrqMIU+ijlVikfNpFdi8iOPEqgv976jpS1UqBiBt VXgpGe5fMFxLJBFV/ySabl4qK+4LTZ9/9wE4lBSVQwcJ+2Cp7hyrEoygml6nmGpZbYs/CPvI0UWv GBVkkBIPcyguxeIkTvxY7PD0Rf4is+svjtLZRWEFwZdvqHZyj4uMNq+/DQXOcY3mpm8fbKZxYsXY 0INyDPFnEYkMnBNMcjTfvNVx36px3eG5bIw8El1l2r1XErZDa//l3k1mEVHPma7sF7bocZGM3kn+ 3TVxohUnlBzPYeMmu2+jZyUhXebdHQsuaBs7gq/sg2eF1JhRdLG5mYCJ/394GVx5SmAukkCuTDcq LMnHYsgOXfc2W8rgJSUBtN0aB5x3AD/Q3NXsPdT6uz/MhdZvf6kt37kC9/WXmrU12sNnsIdKqSie I47/XCdr4bBP8wfuAC7UWYfLUkGV6vRH1+5kQVV8jVkCld1incK57loodISlm7eQxwwH3/WJNnQy 1ijBsLAL4JxMwxzW/ONptUdGgS+igqvTY0RwxI3/LTO6rY97tXCIrj4Zz0Ao2PzIkLtdmSL1UuZY xR+IMUPuiB3Xxo48Q2odpxjefT0W8WL5ypCo/TCCBeYwggPOoAMCAQICEGqb4Tg7/ytrnwHV2bin UlYwDQYJKoZIhvcNAQEMBQAwgYUxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNo ZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMSswKQYD VQQDEyJDT01PRE8gUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDExMDAwMDAwMFoX DTI4MDEwOTIzNTk1OVowgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0 ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMT0wOwYDVQQD EzRDT01PRE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvrOeV6wodnVAFsc4A5jTxhh2IVDzJXkLTLWg 0X06WD6cpzEup/Y0dtmEatrQPTRI5Or1u6zf+bGBSyD9aH95dDSmeny1nxdlYCeXIoymMv6pQHJG NcIDpFDIMypVpVSRsivlJTRENf+RKwrB6vcfWlP8dSsE3Rfywq09N0ZfxcBa39V0wsGtkGWC+eQK iz4pBZYKjrc5NOpG9qrxpZxyb4o4yNNwTqzaaPpGRqXB7IMjtf7tTmU2jqPMLxFNe1VXj9XB1rHv bRikw8lBoNoSWY66nJN/VCJv5ym6Q0mdCbDKCMPybTjoNCQuelc0IAaO4nLUXk0BOSxSxt8kCvsU tQIDAQABo4IBPDCCATgwHwYDVR0jBBgwFoAUu69+Aj36pvE8hI6t7jiY7NkyMtQwHQYDVR0OBBYE FIKvbIz4xf6WYXzoHz0rcUhexIvAMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEA MBEGA1UdIAQKMAgwBgYEVR0gADBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9kb2Nh LmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEFBQcBAQRlMGMw OwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQUFkZFRydXN0Q0Eu Y3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZIhvcNAQEMBQAD ggIBAHhcsoEoNE887l9Wzp+XVuyPomsX9vP2SQgG1NgvNc3fQP7TcePo7EIMERoh42awGGsma65u /ITse2hKZHzT0CBxhuhb6txM1n/y78e/4ZOs0j8CGpfb+SJA3GaBQ+394k+z3ZByWPQedXLL1OdK 8aRINTsjk/H5Ns77zwbjOKkDamxlpZ4TKSDMKVmU/PUWNMKSTvtlenlxBhh7ETrN543j/Q6qqgCW gWuMAXijnRglp9fyadqGOncjZjaaSOGTTFB+E2pvOUtY+hPebuPtTbq7vODqzCM6ryEhNhzf+enm 0zlpXK7q332nXttNtjv7VFNYG+I31gnMrwfHM5tdhYF/8v5UY5g2xANPECTQdu9vWPoqNSGDt87b 3gXb1AiGGaI06vzgkejL580ul+9hz9D0S0U4jkhJiA7EuTecP/CFtR72uYRBcunwwH3fciPjviDD AI9SnC/2aPY8ydehzuZutLbZdRJ5PDEJM/1tyZR2niOYihZ+FCbtf3D9mB12D4ln9icgc7CwaxpN SCPt8i/GqK2HsOgkL3VYnwtx7cJUmpvVdZ4ognzgXtgtdk3ShrtOS1iAN2ZBXFiRmjVzmehoMof0 6r1xub+85hFQzVxZx5/bRaTKTlL8YXLI8nAbR9HWdFqzcOoB/hxfEyIQpx9/s81rgzdEZOofSlZH ynoSMIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkG A1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEa MBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv biBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3F z0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPm NHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gc 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 TU9ET1JTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHEGCCsGAQUFBwEBBGUwYzA7BggrBgEF BQcwAoYvaHR0cDovL2NydC5jb21vZG9jYS5jb20vQ09NT0RPUlNBQWRkVHJ1c3RDQS5jcnQwJAYI KwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9kb2NhLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAeFyy gSg0TzzuX1bOn5dW7I+iaxf28/ZJCAbU2C81zd9A/tNx4+jsQgwRGiHjZrAYayZrrm78hOx7aEpk fNPQIHGG6Fvq3EzWf/Lvx7/hk6zSPwIal9v5IkDcZoFD7f3iT7PdkHJY9B51csvU50rxpEg1OyOT 8fk2zvvPBuM4qQNqbGWlnhMpIMwpWZT89RY0wpJO+2V6eXEGGHsROs3njeP9DqqqAJaBa4wBeKOd GCWn1/Jp2oY6dyNmNppI4ZNMUH4Tam85S1j6E95u4+1Nuru84OrMIzqvISE2HN/56ebTOWlcrurf fade2022O/tUU1gb4jfWCcyvB8czm12FgX/y/lRjmDbEA08QJNB2729Y+io1IYO3ztveBdvUCIYZ ojTq/OCR6MvnzS6X72HP0PRLRTiOSEmIDsS5N5w/8IW1Hva5hEFy6fDAfd9yI+O+IMMAj1KcL/Zo 9jzJ16HO5m60ttl1Enk8MQkz/W3JlHaeI5iKFn4UJu1/cP2YHXYPiWf2JyBzsLBrGk1II+3yL8ao rYew6CQvdVifC3HtwlSam9V1niiCfOBe2C12TdKGu05LWIA3ZkFcWJGaNXOZ6Ggyh/TqvXG5v7zm EVDNXFnHn9tFpMpOUvxhcsjycBtH0dZ0WrNw6gH+HF8TIhCnH3+zzWuDN0Rk6h9KVkfKehIwggXY MIIDwKADAgECAhBMqvnK22Nv4B/3TthbA4adMA0GCSqGSIb3DQEBDAUAMIGFMQswCQYDVQQGEwJH QjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQK ExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1 dGhvcml0eTAeFw0xMDAxMTkwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGFMQswCQYDVQQGEwJHQjEb MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD T01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhv cml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJHoVJLSClaxrA0k3cXPRGd0mSs3 o30jcABxvFPfxPoqEo9LfxBWvZ9wcrdhf8lLDxenPeOwBGHu/xGXx/SGPgr6Plz5k+Y0etkUa+ec s4Wggnp2r3GQ1+z9DfqcbPrfsIL0FH75vsSmL09/mX+1/GdDcr0MANaJ62ss0+2PmBwUq37l4278 2KjkkiTaQ2tiuFX96sG8bLaL8w6NmuSbbGmZ+HhIMEXVreENPEVg/DKWUSe8Z8PKLrZr6kbHxyCg sR9l3kgIuqROqfKDRjeE6+jMgUhDZ05yKptcvUwbKIpcInu0q5jZ7uBRg8MJRk5tPpn6lRfafDNX QTyNUe0LtlyvLGMa31fIP7zpXcSbr0WZ4qNaJLS6qVY9z2+q/0lYvvCo//S4rek3+7q49As6+ehD Qh6J2ITLE/HZu+GJYLiMKFasFB2cCudx688O3T2plqFIvTz3r7UNIkzAEYHsVjv206LiW7eyBCJS lYCTaeiOTGXxkQMtcHQC6otnFSlpUgK7199QalVGv6CjKGF/cNDDoqosIapHziicBkV2v4IYJ7TV rrTLUOZr9EyGcTDppt8WhuDY/0Dd+9BCiH+jMzouXB5BEYFjzhhxayvspoq3MVw6akfgw3lZ1iAa r/JqmKpyvFdK0kuduxD8sExB5e0dPV4onZzMv7NR2qdH5YRTAgMBAAGjQjBAMB0GA1UdDgQWBBS7 r34CPfqm8TyEjq3uOJjs2TIy1DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkq hkiG9w0BAQwFAAOCAgEACvHVRoS3rlG7bLJNQRQAk0ycy+XAVM+gJY4C+f2wog31IJg8Ey2sVqKw 1n4Rkukuup4umnKxvRlEbGE1opq0FhJpWozh1z6kGugvA/SuYR0QGyqki3rF/gWm4cDWyP6ero8r uj2Z+NhzCVhGbqac9Ncn05XaN4NyHNNz4KJHmQM4XdVJeQApHMfsmyAcByRpV3iyOfw6hKC1nHyN vy6TYie3OdoXGK69PAlo/4SbPNXWCwPjV54U99HrT8i9hyO3tklDeYVcuuuSC6HG6GioTBaxGpkK 6FMskruhCRh1DGWoe8sjtxrCKIXDG//QK2LvpHsJkZhnjBQBzWgGamMhdQOAiIpugcaF8qmkLef0 pSQQR4PKzfSNeVixBpvnGirZnQHXlH3tA0rK8NvoqQE+9VaZyR6OST275Qm54E9Jkj0WgkDMzFnG 5jrtEi5pPGyVsf2qHXt/hr4eDjJG+/sTj3V/TItLRmP+ADRAcMHDuaHdpnDiBLNBvOmAkepknHrh IgOpnG5vDmVPbIeHXvNuoPl1pZtA6FOyJ51KucB3IY3/h/LevIzvF9+3SQvR8m4wCxoOTnbtEfz1 6Vayfb/HbQqTjKXQwLYdvjpOlKLXbmwLwop8+iDzxOTlzQ2oy5GSsXyF7LUUaWYOgufNzsgtplF/ IcE1U4UGSl2frbsbX3QwggSvMIIDl6ADAgECAhEA4CPLFRKDU4mtYW56VGdrITANBgkqhkiG9w0B AQsFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRy dXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBS b290MB4XDTE0MTIyMjAwMDAwMFoXDTIwMDUzMDEwNDgzOFowgZsxCzAJBgNVBAYTAkdCMRswGQYD VQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9E TyBDQSBMaW1pdGVkMUEwPwYDVQQDEzhDT01PRE8gU0hBLTI1NiBDbGllbnQgQXV0aGVudGljYXRp b24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAImx Ddp6UxlOcFIdvFamBia3uEngludRq/HwWhNJFaO0jBtgvHpRQqd5jKQi3xdhTpHVdiMKFNNKAn+2 HQmAbqUEPdm6uxb+oYepLkNSQxZ8rzJQyKZPWukI2M+TJZx7iOgwZOak+FaA/SokFDMXmaxE5WmL o0YGS8Iz1OlAnwawsayTQLm1CJM6nCpToxDbPSBhPFUDjtlOdiUCISn6o3xxdk/u4V+B6ftUgNvD ezVSt4TeIj0sMC0xf1m9UjewM2ktQ+v61qXxl3dnUYzZ7ifrvKUHOHaMpKk4/9+M9QOsSb7K93OZ Og8yq5yVOhM9DkY6V3RhUL7GQD/L5OKfoiECAwEAAaOCARcwggETMB8GA1UdIwQYMBaAFK29mHo0 tCb3+sQmVO8DveAky1QaMB0GA1UdDgQWBBSSYWuC4aKgqk/sZ/HCo/e0gADB7DAOBgNVHQ8BAf8E BAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQw EQYDVR0gBAowCDAGBgRVHSAAMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0 LmNvbS9BZGRUcnVzdEV4dGVybmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUH MAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQELBQADggEBABsqbqxVwTqr iMXY7c1V86prYSvACRAjmQ/FZmpvsfW0tXdeDwJhAN99Bf4Ss6SAgAD8+x1banICCkG8BbrBWNUm wurVTYT7/oKYz1gb4yJjnFL4uwU2q31Ypd6rO2Pl2tVz7+zg+3vio//wQiOcyraNTT7kSxgDsqgt 1Ni7QkuQaYUQ26Y3NOh74AEQpZzKOsefT4g0bopl0BqKu6ncyso20fT8wmQpNa/WsadxEdIDQ7GP PprsnjJT9HaSyoY0B7ksyuYcStiZDcGG4pCS+1pCaiMhEOllx/XVu37qjIUgAmLq0ToHLFnFmTPy OInltukWeh95FPZKEBom+nyK+5swggYVMIIE/aADAgECAhBUK7v3iZFOwcXku0+rFipmMA0GCSqG SIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAw DgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3Rp Z28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTI0MTIx NTAwMDAwMFoXDTI2MTIxNTIzNTk1OVowIjEgMB4GCSqGSIb3DQEJARYRZHdtd0BhbWF6b24uY28u dWswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDYY7Ok+LSdJXMOPurGsBJ9haMJobp1 AbJ0lXHAfmgO7N2XfT2VeOglOqYQJQlqSpNchVXA9UZ3OLsde6OC21IBV4iqzkUtI4hf+TmtK1xt xSEhtV3Y7fKDyiKvvWdbNnuyKYuVlo+ABv8ZZB/2DDHLS/TvAgkR0q4YgoWxP4Eee8fTwJ7eWnmW dmFs2hjjnnHmmXvrurxwhyE0ZpJ0gJwF/2jaDSTbEAhnH6xPN8vYh5j/ARa0kWamowSpSqvLciXe RZ0sDx95ElHEJRzsIiHwkRVz+K6V0me5yjhGa90lx9OgA2PYGba0qcAW7sylgzxljEbkZ8/KII/2 Og3lONswf2QCIuW9Ac1n+LtKwREA+cbaTgsWB3Np10GhUlrt+pD9SWjahJROdTkPdhMlSn1tzeqm XCoga1Yo12NhLUfv+VvYsURZxLOJyHm/eEn/dlDBHhvXsNslb3GF1zT2onBp65BEjQtff2vGF8UB GX65gXgD0/b4kCYZ9zvrA+KT9ErN0o1WXOhDu736D9O27dp/WBNPF0j5MXMm9Sf+Lf/gLJJCnmBQ RnaY4MXfoixcY0sAcrWbod/uw7h1H4PO+lgOOInkA64R0o7r7gGdVm/FlLK6c63C6GI6hZm/23+v 8sqMZbd9ZnYDwvhS3PmLtQUMFwtyTG672xQVU7Z+V9hCgwIDAQABo4IB0DCCAcwwHwYDVR0jBBgw FoAUCcDy/AvalNtf/ivfqJlCz8ngrQAwHQYDVR0OBBYEFFr7QNV7ElfMY4HxUC/w1EzSGybuMA4G A1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMEMFAGA1UdIARJ MEcwOgYMKwYBBAGyMQECAQoCMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc2VjdGlnby5jb20vU01J TUVDUFMwCQYHZ4EMAQUBAzBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLnNlY3RpZ28uY29t L1NlY3RpZ29SU0FDbGllbnRBdXRoZW50aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3JsMIGKBggr BgEFBQcBAQR+MHwwVQYIKwYBBQUHMAKGSWh0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1JT QUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcnQwIwYIKwYBBQUHMAGGF2h0 dHA6Ly9vY3NwLnNlY3RpZ28uY29tMBwGA1UdEQQVMBOBEWR3bXdAYW1hem9uLmNvLnVrMA0GCSqG SIb3DQEBCwUAA4IBAQBA+k/q3z9lz3S3x6AneZ9YhiHGGrlnzx0XWTdk8O2uzRFyJJtsmTYszkqa dzazIljgTdd14Kp2C7KnacSYW48CnMyl+dP6n4YZDh7a0NBkZLnMmyuOOwGrpfNHGU/E91hvVPXY ZdwrfzLsigVkINzGJW1E+ruJAvT5PK3fnEdeLbWEVFgyk0tgay+3vI6TZrQqBGpA5DGODK6aDMDN X+ADVamfHJw57cF6uaK5mSJLDdg6sbCi5qxclQDjYakkk+9iJgXyFVoRUUwhfbU3COcBP9EpJduR WZkrAQdi1IHnICuzGcsPQ6P29LGEvvGJgP7o1AqjW9HzyQRPwfbwaJobMYIDvjCCA7oCAQEwgasw gZYxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1Nh bGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE+MDwGA1UEAxM1U2VjdGlnbyBSU0EgQ2xp ZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEFQru/eJkU7BxeS7T6sWKmYw DQYJYIZIAWUDBAIBBQCggeQwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUx DxcNMjYwODA1MTk1NjAyWjAvBgkqhkiG9w0BCQQxIgQgEds7c53s2vYKJBJlscpo2id3G9Q+2wWy 27mQPBtPOakweQYJKoZIhvcNAQkPMWwwajALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCG SAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4D AgcwDQYIKoZIhvcNAwICASgwDQYJKoZIhvcNAQEBBQAEggIAGYBnKPBDLO3bi7Psg2XtkzY6A/dB ojSkFVWfmrJiouuJCe6a7WCILcITBn24yzovD5Dvx2V3TAdjc3O49XJukHBHnFmKGVCFcMN39RfO j7/Ard4rI7m++6xIXENM6ItbJcCNlm4CAiZ0OuBg0YRb8+tsjOiwB3zNGKutwTb6omegbOefk4aN fPa6Ii/k4evszoSGBU8dp+1bjOouPEcqkJ8NnTFB4TVgGhqAfyLHNoMViyV6SScKGQ22OAI5KBO9 qtaXcXdG6al+m5z/eQFwnZqNC67FOJx57DF8BBDaupYvJlknIy7c8jqV6nJ7N262cDL4lM6HWOcO 9lmGqrqoqRwvXSGDc8pD43CRDt6U1sFnFxW/mxZaJhPUs80j/kI1BnMNJiE1TwHcEykpHd/vkyBd nOT7JqiMK4hvZcuSlVmmsPL1njMuG0e9dFKDwoeskpKNInigbgsSn0ax9r0T3FQ+Sf41TbUj4LVP nTQVGpkTNyBLIlbsLibqmZblVj63IVHNiRGJ4tymdy3AsMj3onVvRhw4mT8tIS6nlfnT5sQFsHmW YXIWQfe6jz69YhGFYHf0ZAjzWjxBo/MT62y9mvotdIImMR5Blpqc4wuUPfYv8tKLwwoC4ljmJMWn ssiVjN40hKQSM0UeEUDpGltmwi/tScOnydZ9bpD+ECO7S5I= ------CACDE43EAC4A1469C09AD890A959AD0A-- --===============1397031566656956887== Content-Type: multipart/alternative; boundary="===============4278924174069478766==" MIME-Version: 1.0 Content-Disposition: inline --===============4278924174069478766== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Amazon Development Centre (London) Ltd. Registered in England and Wales wit= h registration number 04543232 with its registered office at 1 Principal Pl= ace, Worship Street, London EC2A 2FA, United Kingdom. --===============4278924174069478766== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable


Amazon Development Centre (London) Ltd.Registered in England an= d Wales with registration number 04543232 with its registered office at 1 P= rincipal Place, Worship Street, London EC2A 2FA, United Kingdom.


--===============4278924174069478766==-- --===============1397031566656956887==-- From nobody Tue Aug 25 14:34:35 2026 Received: from fra-out-002.esa.eu-central-1.outbound.mail-perimeter.amazon.com (fra-out-002.esa.eu-central-1.outbound.mail-perimeter.amazon.com [3.65.3.180]) (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 3E3333D3314; Wed, 5 Aug 2026 19:56:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=3.65.3.180 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785959772; cv=fail; b=fhUdqrjM7XaUowYtXp+2ypAW9xkKnOQ3BK5/+sjHC1QmTkT+iPK1oIge/zn9Cbo6yMM9yZjwHANHR9D5lkprJEIqLNYXI5X6HDhpCk0W+A2NKpUpG6FHrZ6VBWl4n14YzTj/tsKrmCLDfX/fZvXD2oJwpEhinrnAo4Sx6LXpiWo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785959772; c=relaxed/simple; bh=AUh6yRcnBIxJLGCNijZe3uZSRYhJbzJrT4+0UQVcG2U=; h=Content-Type:MIME-Version:From:To:CC:Subject:Date:Message-ID: References:In-Reply-To:MIME-Version; b=M39Gt8w3ah79js4KmCdhT0WGFslT16HGN77k+N0BAwrnBgwf2ZIv1ttb8xW3hNFHle2JOxKSaTE6QITj6DsbIZ0jnVaabBdbnuzcj9wnGGmg5HTunnzwQXFvHY2Ck5+Hi8/kDsw7V4wiwlth4dgXuMU8/+A7FOx3GmJy0BgpJ1w= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.co.uk; spf=pass smtp.mailfrom=amazon.co.uk; dkim=pass (2048-bit key) header.d=amazon.co.uk header.i=@amazon.co.uk header.b=seQGXwLO; arc=fail smtp.client-ip=3.65.3.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.co.uk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=amazon.co.uk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=amazon.co.uk header.i=@amazon.co.uk header.b="seQGXwLO" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.co.uk; i=@amazon.co.uk; q=dns/txt; s=amazoncorp2; t=1785959770; x=1817495770; h=from:to:cc:subject:date:message-id:references: in-reply-to; bh=RqY9KQd1J7+jXQch26fpWclpPAEJ5+H5eayVVdvm8e0=; b=seQGXwLOC8zStB/m27PyGfpo7Np2tjF3qqZhsoKYiHEBcxGJGMeudRor yqKxgpGqsQBoBPbc2QyOjU/v13gd2NGbLhSxIkfq8Z/Fdnd64mqyRYYMw 43/SO1Cp5xBOqpTPBGbySFqsPvILPcmMDOi9QaOAZSV+rtXTpHAc/cwFm Svoo5UxIAYP7dr11PjUtV0Esr1epFoaTkPbfw0OZ179zmbDeTJ5pmRxVj x/177k0eWWCv2X++0Pip8HsF23nZOr05pdpe1DppU+JTiCOK45oLR2Vw6 ITrAqoJ75on4vKmwGL4sH+O4+WgHSWaiyc9PohWnrFH0BHREt9l4YEy9n g==; X-CSE-ConnectionGUID: r7vS/bRqTWae/gpPQKv58g== X-CSE-MsgGUID: CPe4SmM4R2iw6eOSKAr8hA== X-Amazon-filename: smime.p7s X-IronPort-AV: E=Sophos;i="6.25,207,1779148800"; d="p7s'346?scan'346,208,346";a="17457524" Content-Type: multipart/mixed; boundary="===============5608212814748177171==" Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Received: from ip-10-6-3-216.eu-central-1.compute.internal (HELO smtpout.naws.eu-central-1.prod.farcaster.email.amazon.dev) ([10.6.3.216]) by internal-fra-out-002.esa.eu-central-1.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Aug 2026 19:56:08 +0000 Received: from EX19MTAEUC002.ant.amazon.com [54.240.197.228:1568] by smtpin.naws.eu-central-1.prod.farcaster.email.amazon.dev [10.0.19.18:2525] with esmtp (Farcaster) id fd8dc019-6bac-4eb0-9937-732f74419703; Wed, 5 Aug 2026 19:56:07 +0000 (UTC) X-Farcaster-Flow-ID: fd8dc019-6bac-4eb0-9937-732f74419703 Received: from EX19EXOEUC001.ant.amazon.com (10.252.51.133) by EX19MTAEUC002.ant.amazon.com (10.252.51.245) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45; Wed, 5 Aug 2026 19:56:07 +0000 Received: from EX19EXOEUA001.ant.amazon.com (10.252.50.110) by EX19EXOEUC001.ant.amazon.com (10.252.51.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45; Wed, 5 Aug 2026 19:56:07 +0000 Received: from LO0P265CU003.outbound.protection.outlook.com (10.252.51.94) by EX19EXOEUA001.ant.amazon.com (10.252.50.110) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45 via Frontend Transport; Wed, 5 Aug 2026 19:56:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=g0d5LJvPfJ+9UHOeS4ENgWrcw6Oq2Li+XoKQpVIPaiBdmeYEsztpRvnNxMNsk54KWSuU1EBlP+53AaF7I+0kQYMP/vXOxZ1kMcBwu1rqgN6ThIMJe3muZk5YXgd2z/DOMmqb//MZ9BuJaqsAF9u+yIqHfMkWajK9l2W4z7WC9qq/DXEQh7vp+7nTiz37UjN1kzw/XjyYykXXvC+KmtY6R4dvYZHqppuPKyvuAImlFSjhphDxqI6EL4E24N4uV3RLIRCvgSpgYh44uvbOJDfxOjndQwQQEkVFlHqXr/jMWw6Lv2UNlNJeK/bK2TFsm3MEFuZdTL/HvW7clxT0QgTkEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:MIME-Version; bh=Ax1cIzWWDOhstZhum7SwinYWDO3XVP2gk4mQKWtXOrU=; b=uPRz5AdklQWj85U5CMarpzFRQqIXmKLU5NWPPJO9KdSuKT2j508yhx8H1ZeRRQzlOdllBIYWefkEm8JHJI/2wvsO/0CGUyZrAnYfvWwOVruAEzl6WDd7toMWAG69QapzwT6h59oRRDLXmXrov5a213JsLSfPtgKY7OWn+k/YULevb6wVSslZr0Qy0mTZCQ/CwZaW1HmxzGEiOcU/cjhAx6XArisY7UeWdW5T6tx3cnK1/PSr492jsa9LmH4aRoHaYxEmo9zAOa/wXE2Jp9NnQdoNbdcmhE08bnpZ5+GzEkCYCSBTYCkIuholQt1MX7eh2iv+UqlfNHT7dZq+fzHSHA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amazon.co.uk; dmarc=pass action=none header.from=amazon.co.uk; dkim=pass header.d=amazon.co.uk; arc=none Received: from LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:4b4::12) by LO0P123MB7404.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:334::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.19; Wed, 5 Aug 2026 19:56:02 +0000 Received: from LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM ([fe80::c7e3:476c:6170:8f6]) by LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM ([fe80::c7e3:476c:6170:8f6%6]) with mapi id 15.21.0292.018; Wed, 5 Aug 2026 19:56:01 +0000 From: "Woodhouse, David" To: "seanjc@google.com" , "pbonzini@redhat.com" , "akpm@linux-foundation.org" CC: "bigeasy@linutronix.de" , "peterz@infradead.org" , "mingo@redhat.com" , "will@kernel.org" , "longman@redhat.com" , "boqun@kernel.org" , "tglx@kernel.org" , "paul@xen.org" , "Stollmaier, Carsten" , "dwmw2@infradead.org" , "Woodhouse, David" , "daniel.vetter@ffwll.ch" , "mhocko@suse.com" , "jgg@nvidia.com" , "christian.koenig@amd.com" , "jglisse@redhat.com" , "david@kernel.org" , "ljs@kernel.org" , "liam@infradead.org" , "vbabka@kernel.org" , "rppt@kernel.org" , "surenb@google.com" , "bp@alien8.de" , "dave.hansen@linux.intel.com" , "hpa@zytor.com" , "x86@kernel.org" , "kvm@vger.kernel.org" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" Subject: [PATCH v3 5/7] KVM: x86/xen: Explicitly tag "shared info" page as never being dirty tracked Thread-Topic: [PATCH v3 5/7] KVM: x86/xen: Explicitly tag "shared info" page as never being dirty tracked Thread-Index: AQHdJRRxVR/H8lnEzUyKD3Dll5I/ug== Date: Wed, 5 Aug 2026 19:56:01 +0000 Message-ID: <20260805195528.3853473-6-dwmw@amazon.co.uk> References: <20260805195528.3853473-1-dwmw@amazon.co.uk> In-Reply-To: <20260805195528.3853473-1-dwmw@amazon.co.uk> Accept-Language: en-GB, en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amazon.co.uk; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LOZP123MB8516:EE_|LO0P123MB7404:EE_ x-ms-office365-filtering-correlation-id: 2a770b02-7ebb-40de-7f41-08def32b9392 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|6049299003|1800799024|376014|7416014|23010399003|22082099003|18002099003|11063799006|56012099006|4053099003|38070700021|6133799003|10067099003; x-microsoft-antispam-message-info: U7h85VcspYghJku1QZInoc4LmASQkts0g+bIK2UXU9Osl0t4pWbKzX+coZKha4u7J2BN1sGzYdylLCpgkXZ/pQPA8ISF+tSlOMBxQkpF1jIGOOt5f+5r7rXqjHggNUHWGPxbaUEhm1RDF4HH9USStA1ksmevFb+v9JDdbfdb4nPQwgmd+kJgJIsDlW/p1UqlgnZ6HLTqQfpgIIkYhVKHUfhJv1ZTPg/GNdVNY9Z2sHj8BE4Dr+xZ9lfQ+mzooKdgq0k8Hj3sbUkPsa4CQeQR9wJ51gFzj3UNrZGI+IVgGWmoXMpffsZNw0MW4Rs5TJGguCfbj/EpBEN+mv6Znm3bkE9CCkjFR9GnyigPc+0qdxkP2OUsZKPg6MCigoi3UzvA2xRRdvmcBYJJmY79php2sV7/YYTxkIfF3yQcLdoQBybnTfG5nheHWgUu9AHbaBuUxiFW06iGVwqpjjb3dpeKZlOE0R74s5h68EGxyrG0fyAF5vU/NN0AkBO2PhnveuKXR+b86my3E7nOCD1+Aw3zzI8Fei5IuHhQE3yhrNwcmRh/xfDFRyXeSihMpdd+KRCNxoGRxUzdRIZ/LeEL+tlBPHhX7oZXvSCPsvvFg3tRuJBPugWdYiEJBsTkRG0BqNHCg/yuA78tcauL/A1i4st1h8SPOHF3cy+fTx4gScDMkfHEoK5Nd4ADtGF7CNjng0ZJg/AI7VKYej9l9K2oHpunKlWczWii1gT5zMrcOjsEyEE= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(6049299003)(1800799024)(376014)(7416014)(23010399003)(22082099003)(18002099003)(11063799006)(56012099006)(4053099003)(38070700021)(6133799003)(10067099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?Je3eK2uYPNdSDRoRLSlaR49l5Z14tV+owZ6jMDNo9+eV9fjp9Ydj5tq4/d?= =?iso-8859-1?Q?afy7NoR3RHM9y+qjhat5ibF7Xa8TObyk+jEU02OWEIUtjLGXT44TKZLImK?= =?iso-8859-1?Q?gdmI0bMC1XWqhPPDPSbKHjhh8G7EjTQ178Tscuv18ixO5a6VFSLOXHR9Vw?= =?iso-8859-1?Q?QvU2xZtF6J50V0nOlxg4Pt/a95hqou1U9pPuzuHYh351xVFk+8id1BDNUS?= =?iso-8859-1?Q?+i9YllOdgqUzqw28UbT1VSvXjYKPgeWgQBQdFbFvfuX9/7knysCeeU9lOG?= =?iso-8859-1?Q?UGkMAfItwioqghrjAjf3fdBqFZ6z8rX2/QL8XeHSzh/7ksQfJwNl85l6O7?= =?iso-8859-1?Q?vr6r2uSeKq8KZO7TS9Gp7QY8nEd5M0k5xJEfJsmWyFsLkhjJh9cBSKxMuK?= =?iso-8859-1?Q?eaYT67W5f3UpHeHkJdN1CcjUOfTV6/yYaAQna1cb211dSYrej5LO4uyPLc?= =?iso-8859-1?Q?Bi5lJmGx4u41ji/okycY+5IkRdeYduiqNg7YcxZT8KWq6iW32a6RgWqF1/?= =?iso-8859-1?Q?K6khSdTx+0ZAom4MK6/j+EMSSgp8nvneRMIvjY5K+8T3qPTyjTTR0pKwpV?= =?iso-8859-1?Q?GiuziyYOvQ7EfN08XPdtqLuK9S4BwBCFL155XOfwBdjgOVyrlH07VP/CuK?= =?iso-8859-1?Q?5iUmqpG60nEM+c/8uOymXHhmPQEIHfdOpwDNdnRTV1EfygYukwVRUSO/fL?= =?iso-8859-1?Q?nlzL29vxBS0uGYm+bBJy9kSPyV59y7ys1VvCC1axgK1gIxZ+UMhLorBjcW?= =?iso-8859-1?Q?eTiKAiL2uHLPTqWQpiNb9xFrLpxhcgxklJJe63NmaXnlUo3aGoHj9ONcth?= =?iso-8859-1?Q?D4N7UAvH/GdNtxAisvtYQo0bGniyLx+VR2VSXYkd35heVlvQchx4oNQEfe?= =?iso-8859-1?Q?A1+rOJs++SJBXFuekoOT4Rp6O8jzPmoonEX79zFTSkrX5OAhpbhCfe+it+?= =?iso-8859-1?Q?yHiPI7r7gZAseKbEFoMh+/AgkmGTxuUXDkZKTsnr8pUKu4nsB8+R6iVRDe?= =?iso-8859-1?Q?EIcpI/xkyMeRnoNmsmlpXtAqA8ttppQQCWIOzIk2M9wzRjoltmCdmL/bya?= =?iso-8859-1?Q?6b1SfhatUko33Z//SbKJNzdETg6fsF+DlMehOf6dkk0+KAHGf/kpX6AoKO?= =?iso-8859-1?Q?xNpzNyypeH+8HRe/knbfoEz0FQ1WBuFpdrJ6PpQi2TUBCfFWtsk+l0F5Rq?= =?iso-8859-1?Q?gE9rwsI9TLtvGM7idcp9d0BolVThlQqyOBfQE6JVjLHlqsOGAswlR+wBLb?= =?iso-8859-1?Q?1aSeZ1M0hwmXiHOC8UUfd4hmC+8/X9HaHqA2q06ejqlv3dczzJV0NXgIX5?= =?iso-8859-1?Q?jxvRPDtNph2zbKRirI8tb+1E0zQATdMTYB0/jWGvurNqvaLMDaLMzScKlB?= =?iso-8859-1?Q?MQ5dfTmcZ0AfmERLyeziB8bxg40KXmGW3G2htGAxEKuIGbGK8jBprLh+KS?= =?iso-8859-1?Q?gystXf2hK8mgNShJqP8BN+Q6t5D0BTKcvPTE1RpppeXEsQ614fuyYgW1FN?= =?iso-8859-1?Q?GaborTV9AAeQ/OnPLGU8TUWsjtVFRq8b9EMfaDUSd20TZtgpmw+14Z5D5E?= =?iso-8859-1?Q?EoPpHQKFPU9eMGcoTQ+2YW2om5bd07flPStCZeHr1sJUCmk/mdGm5hSB7E?= =?iso-8859-1?Q?QEfdZBCQ/7P0l/GBlSheuvrbHYtWL2afuQYWpwc5yTAbYVFA70MmK05Y4n?= =?iso-8859-1?Q?yRZxwuNg5kYSA4Db3J6JxZFDe+XD8BhUkOQzlURfDl0fQib5aP6W+BtaM1?= =?iso-8859-1?Q?v29+3QxetYVCyFNveLnjPDb+tpwOsfw0aX2zJ3ABq641Aq?= MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: Gmlr6NtjG5Q8hHHB8zbVcB4utgtkOtyYnsQQHdgoqaIKkremgpOdubGG61Rzjk5TirzS/hwD0w9kOf+hoq29c0mAeRnUAi1tRI4ux5Hy+mTzmFKKEsmANiV2ieZFXEcLZwB2wPVrXuBqHq2lSqlPOT8BekjA4qWCbEM/PspY7ftvoWeXkDeYC5xhQIcFaOos7RJ28WBBpjeIqekoAaJRtTpyKv3dsHTJ7TytLh6WPFqQeKs8fBp/AKjWkwDGS9v1B6PgEzMJxLRulc4sYfzHKs9KsHuu/TspR9MHoF2wr3RM2SA7YtYu+kKKKGWra31srqP2O6om4QOv2uJHxRxw4w== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 2a770b02-7ebb-40de-7f41-08def32b9392 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2026 19:56:01.7895 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5280104a-472d-4538-9ccf-1e1d0efe8b1b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: XxVzxNbcN37JOZKHdNjdRMUr47lPIIeX1kb0Fv7UZfDrjPfBEr089QWUYkVO1g+ENJfUSt0aySwXmteq8EwdkQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO0P123MB7404 X-OriginatorOrg: amazon.co.uk --===============5608212814748177171== Content-Language: en-US Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha-256; boundary="----14FD06F5C320B8ADDFC61DEAF40E912D" ------14FD06F5C320B8ADDFC61DEAF40E912D MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Sean Christopherson Explicitly mark the Xen shared info page as never being dirty tracked so that higher-level gpc APIs can be added to automatically take care of things like dirty tracking, without reintroducing the bug fixed by commit 55749769fe60 ("KVM: x86: Fix wall clock writes in Xen shared_info not to mark page dirty"). And because the code _looks_ buggy. No functional change intended. Signed-off-by: Sean Christopherson Signed-off-by: David Woodhouse Assisted-by: Claude:claude-mythos-5 --- arch/x86/kvm/xen.c | 2 +- include/linux/kvm_host.h | 10 ++++++++-- include/linux/kvm_types.h | 1 + virt/kvm/pfncache.c | 4 +++- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/arch/x86/kvm/xen.c b/arch/x86/kvm/xen.c index 75fbe88c2102..ff18d888ed47 100644 --- a/arch/x86/kvm/xen.c +++ b/arch/x86/kvm/xen.c @@ -2329,7 +2329,7 @@ void kvm_xen_init_vm(struct kvm *kvm) { mutex_init(&kvm->arch.xen.xen_lock); idr_init(&kvm->arch.xen.evtchn_ports); - kvm_gpc_init(&kvm->arch.xen.shinfo_cache, kvm); + __kvm_gpc_init(&kvm->arch.xen.shinfo_cache, kvm, true); } void kvm_xen_destroy_vm(struct kvm *kvm) diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index da0b3669f1a3..1725284121c9 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -1465,7 +1465,13 @@ int kvm_vcpu_write_guest(struct kvm_vcpu *vcpu, gpa_t gpa, const void *data, * immutable attributes. Note, the cache must be zero-allocated (or zeroed by * the caller before init). */ -void kvm_gpc_init(struct gfn_to_pfn_cache *gpc, struct kvm *kvm); +void __kvm_gpc_init(struct gfn_to_pfn_cache *gpc, struct kvm *kvm, + bool never_dirty); + +static inline void kvm_gpc_init(struct gfn_to_pfn_cache *gpc, struct kvm *kvm) +{ + __kvm_gpc_init(gpc, kvm, false); +} /** * kvm_gpc_activate - prepare a cached kernel mapping and HPA for a given guest @@ -1974,7 +1980,7 @@ static inline void kvm_gpc_mark_dirty_in_slot(struct gfn_to_pfn_cache *gpc) RCU_LOCKDEP_WARN(!rcu_read_lock_held(), "kvm_gpc_mark_dirty_in_slot() without RCU read lock"); - if (!gpc->memslot) + if (!gpc->memslot || gpc->never_dirty) return; mark_page_dirty_in_slot(gpc->kvm, gpc->memslot, gpa_to_gfn(gpc->gpa)); diff --git a/include/linux/kvm_types.h b/include/linux/kvm_types.h index fdf7d2273298..1ad35ec01f87 100644 --- a/include/linux/kvm_types.h +++ b/include/linux/kvm_types.h @@ -93,6 +93,7 @@ struct gfn_to_pfn_cache { kvm_pfn_t pfn; bool active; bool valid; + bool never_dirty; }; #ifdef KVM_ARCH_NR_OBJS_PER_MEMORY_CACHE diff --git a/virt/kvm/pfncache.c b/virt/kvm/pfncache.c index 3bae4df49165..ffb4e6105344 100644 --- a/virt/kvm/pfncache.c +++ b/virt/kvm/pfncache.c @@ -451,7 +451,8 @@ int kvm_gpc_refresh(struct gfn_to_pfn_cache *gpc, unsigned long len) return __kvm_gpc_refresh(gpc, gpc->gpa, uhva); } -void kvm_gpc_init(struct gfn_to_pfn_cache *gpc, struct kvm *kvm) +void __kvm_gpc_init(struct gfn_to_pfn_cache *gpc, struct kvm *kvm, + bool never_dirty) { mutex_init(&gpc->refresh_lock); @@ -460,6 +461,7 @@ void kvm_gpc_init(struct gfn_to_pfn_cache *gpc, struct kvm *kvm) gpc->gpa = INVALID_GPA; gpc->uhva = KVM_HVA_ERR_BAD; gpc->active = gpc->valid = false; + gpc->never_dirty = never_dirty; } static int __kvm_gpc_activate(struct gfn_to_pfn_cache *gpc, gpa_t gpa, unsigned long uhva, -- 2.43.0 ------14FD06F5C320B8ADDFC61DEAF40E912D Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" MII+PgYJKoZIhvcNAQcCoII+LzCCPisCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGg gjpEMIIGEDCCA/igAwIBAgIQTZQsENQ74JQJxYEtOisGTzANBgkqhkiG9w0BAQwFADCBiDELMAkG A1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYD VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlm aWNhdGlvbiBBdXRob3JpdHkwHhcNMTgxMTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBljELMAkG A1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEY MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0 aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBAMo87ZQKQf/e+Ua56NY75tqSvysQTqoavIK9viYcKSoq0s2cUIE/bZQu85eoZ9X140qO TKl1HyLTJbazGl6nBEibivHbSuejQkq6uIgymiqvTcTlxZql19szfBxxo0Nm9l79L9S+TZNTEDyg NfcXlkHKRhBhVFHdJDfqB6Mfi/Wlda43zYgo92yZOpCWjj2mz4tudN55/yE1+XvFnz5xsOFbme/S oY9WAa39uJORHtbC0x7C7aYivToxuIkEQXaumf05Vcf4RgHs+Yd+mwSTManRy6XcCFJE6k/LHt3n dD3sA3If/JBz6OX2ZebtQdHnKav7Azf+bAhudg7PkFOTuRMCAwEAAaOCAWQwggFgMB8GA1UdIwQY MBaAFFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBQJwPL8C9qU21/+K9+omULPyeCtADAO BgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAgYI KwYBBQUHAwQwEQYDVR0gBAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwu dXNlcnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNvbS9VU0VSVHJ1 c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNlcnRydXN0LmNv bTANBgkqhkiG9w0BAQwFAAOCAgEAQUR1AKs5whX13o6VbTJxaIwA3RfXehwQOJDI47G9FzGR87bj grShfsbMIYdhqpFuSUKzPM1ZVPgNlT+9istp5UQNRsJiD4KLu+E2f102qxxvM3TEoGg65FWM89YN 5yFTvSB5PelcLGnCLwRfCX6iLPvGlh9j30lKzcT+mLO1NLGWMeK1w+vnKhav2VuQVHwpTf64ZNnX UF8p+5JJpGtkUG/XfdJ5jR3YCq8H0OPZkNoVkDQ5CSSF8Co2AOlVEf32VBXglIrHQ3v9AAS0yPo4 Xl1FdXqGFe5TcDQSqXh3TbjugGnG+d9yZX3lB8bwc/Tn2FlIl7tPbDAL4jNdUNA7jGee+tAnTtlZ 6bFz+CsWmCIb6j6lDFqkXVsp+3KyLTZGXq6F2nnBtN4t5jO3ZIj2gpIKHAYNBAWLG2Q2fG7Bt2tP C8BLC9WIM90gbMhAmtMGquITn/2fORdsNmaV3z/sPKuIn8DvdEhmWVfh0fyYeqxGlTw0RfwhBlak dYYrkDmdWC+XszE19GUi8K8plBNKcIvyg2omAdebrMIHiAHAOiczxX/aS5ABRVrNUDcjfvp4hYbD OO6qHcfzy/uY0fO5ssebmHQREJJA3PpSgdVnLernF6pthJrGkNDPeUI05svqw1o5A2HcNzLOpklh NwZ+4uWYLcAi14ACHuVvJsmzNicwggXeMIIDxqADAgECAhAB/W0w/KPKUagbvGQONQMtMA0GCSqG SIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxML SmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNF UlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xMDAyMDEwMDAwMDBaFw0zODAx MTgyMzU5NTlaMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxML SmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNF UlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIP ADCCAgoCggIBAIASZRc2DsPbCLPQrFcNdu3NJ9NMrVCDYeKqIE0JLWQJ3M6Jn8w9qez2z8Hc8dOx 1ns3KBErR9o5xrw6GbRfpr19naNjQrZ28qk7K5H44m/Q7BYgkAk+4uh0yRi0kdRiZNt/owbxiBhq kCI8vP4T8IcUe/bkH47U5FHGEWdGCFHLhhRUP7wz/n5snP8WnRi9UY41pqdmyHJn2yFmsdSbeAPA UDrozPDcvJ5M/q8FljUfV1q3/875PbcstvZU3cjnEjpNrkyKt1yatLcgPcp/IjSufjtoZgFE5wFO RlObM2D3lL5TN5BzQ/Myw1Pv26r+dE5px2uMYJPexMcM3+EyrsyTO1F4lWeL7j1W/gzQaQ8bD/Ml JmszbfduR/pzQ+V+DqVmsSl8MoRjVYnEDcGTVDAZE6zTfTen6106bDVc20HXEtqpSQvf2ICKCZNi jrVmzyWIzYS4sT+kOQ/ZAp7rEkyVfPNrBaleFoPMuGfi6BOdzFuC00yz7Vv/3uVzrCM7LQC/NVV0 CUnYSVgaf5I25lGSDvMmfRxNF7zJ7EMm0L9BX0CpRET0medXh55QH1dUqD79dGMvsVBlCeZYQi5D Gky08CVHWfoEHpPUJkZKUIGy3r54t/xnFeHJV4QeD2PW6WK61l9VLupcxigIBCU5uA4rqfJMlxwH Pw1S9e3vL4IPAgMBAAGjQjBAMB0GA1UdDgQWBBRTeb9aqitKz1SA4dibwJ3ysgNmyzAOBgNVHQ8B Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQwFAAOCAgEAXNR8Dc/3AX1BmWUM c8VSn8v4z5kGfxvaQxWfngJVV5YU8VI8J4eUKO0fOgE3onb8U1DAhJvGa066jCFPoo5VYpHzaRXY vIjjxKoL/e+o6UtVKgYgbVV4KRnuXzBcSyQRVf8kmm5eKivuC02ff/cBOJQUlUMHCftgqe4cqxKM oJpep5hqWW2LPwj7yNFFrxgVZJASD3MoLsXiJE78WOzw9EX+IrPrL47S2UVhBcGXb6h2co+LjDav vw0FznGN5qZvH2ymcWLF2NCDcgzxZxGJDJwTTHI037zVcd+qcd3huWyMPBJdZdq9VxK2Q2v/5d5N ZhFRz5mu7Be26HGRjN5J/t01caIVJ5Qcz2HjJrtvo2clIV3m3R0LLmgbO4Kv7INnhdSYUXSxuZmA if9/eBlceUpgLpJArkw3KizJx2LIDl33NlvK4CUlAbTdGgecdwA/0NzV7D3U+rs/zIXWb3+pLd+5 Avf1l5q1NdrDZ7CHSqkoniOO/1wna+GwT/MH7gAu1FmHy1JBler0R9fuZEFVfI1ZApXdYp3Cue5a KHSEpZu3kMcMB9/1iTZ0MtYowbCwC+CcTMMc1vzjabVHRoEvooKr02NEcMSN/y0zuq2Pe7VwiK4+ Gc9AKNj8yJC7XZki9VLmWMUfiDFD7ogd18aOPENqHacY3n09FvFi+cqQqP0wggYQMIID+KADAgEC AhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UE CBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJV U1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UE CBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdv IExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQg U2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyjztlApB/975 Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUfItMltrMaXqcESJuK 8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeWQcpGEGFUUd0kN+oH ox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YBrf24k5Ee1sLTHsLt piK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewDch/8kHPo5fZl5u1B 0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAUU3m/WqorSs9UgOHY m8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1UdDwEB/wQEAwIBhjAS BgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDARBgNVHSAE CjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VT RVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUFBwEBBGowaDA/Bggr BgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJTQUFkZFRydXN0Q0Eu Y3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUA A4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+xswhh2GqkW5JQrM8 zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9IHk96VwsacIvBF8J fqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7kkmka2RQb9d90nmN HdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1eoYV7lNwNBKpeHdN uO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4KxaYIhvqPqUMWqRd Wyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL1Ygz3SBsyECa0waq 4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQOZ1YL5ezMTX0ZSLw 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 DTI4MDEwOTIzNTk1OVowgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0 ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMT0wOwYDVQQD EzRDT01PRE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvrOeV6wodnVAFsc4A5jTxhh2IVDzJXkLTLWg 0X06WD6cpzEup/Y0dtmEatrQPTRI5Or1u6zf+bGBSyD9aH95dDSmeny1nxdlYCeXIoymMv6pQHJG NcIDpFDIMypVpVSRsivlJTRENf+RKwrB6vcfWlP8dSsE3Rfywq09N0ZfxcBa39V0wsGtkGWC+eQK iz4pBZYKjrc5NOpG9qrxpZxyb4o4yNNwTqzaaPpGRqXB7IMjtf7tTmU2jqPMLxFNe1VXj9XB1rHv bRikw8lBoNoSWY66nJN/VCJv5ym6Q0mdCbDKCMPybTjoNCQuelc0IAaO4nLUXk0BOSxSxt8kCvsU tQIDAQABo4IBPDCCATgwHwYDVR0jBBgwFoAUu69+Aj36pvE8hI6t7jiY7NkyMtQwHQYDVR0OBBYE FIKvbIz4xf6WYXzoHz0rcUhexIvAMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEA MBEGA1UdIAQKMAgwBgYEVR0gADBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9kb2Nh LmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEFBQcBAQRlMGMw OwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQUFkZFRydXN0Q0Eu Y3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZIhvcNAQEMBQAD ggIBAHhcsoEoNE887l9Wzp+XVuyPomsX9vP2SQgG1NgvNc3fQP7TcePo7EIMERoh42awGGsma65u /ITse2hKZHzT0CBxhuhb6txM1n/y78e/4ZOs0j8CGpfb+SJA3GaBQ+394k+z3ZByWPQedXLL1OdK 8aRINTsjk/H5Ns77zwbjOKkDamxlpZ4TKSDMKVmU/PUWNMKSTvtlenlxBhh7ETrN543j/Q6qqgCW gWuMAXijnRglp9fyadqGOncjZjaaSOGTTFB+E2pvOUtY+hPebuPtTbq7vODqzCM6ryEhNhzf+enm 0zlpXK7q332nXttNtjv7VFNYG+I31gnMrwfHM5tdhYF/8v5UY5g2xANPECTQdu9vWPoqNSGDt87b 3gXb1AiGGaI06vzgkejL580ul+9hz9D0S0U4jkhJiA7EuTecP/CFtR72uYRBcunwwH3fciPjviDD AI9SnC/2aPY8ydehzuZutLbZdRJ5PDEJM/1tyZR2niOYihZ+FCbtf3D9mB12D4ln9icgc7CwaxpN SCPt8i/GqK2HsOgkL3VYnwtx7cJUmpvVdZ4ognzgXtgtdk3ShrtOS1iAN2ZBXFiRmjVzmehoMof0 6r1xub+85hFQzVxZx5/bRaTKTlL8YXLI8nAbR9HWdFqzcOoB/hxfEyIQpx9/s81rgzdEZOofSlZH ynoSMIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkG A1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEa MBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv biBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3F z0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPm NHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gc 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 TU9ET1JTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHEGCCsGAQUFBwEBBGUwYzA7BggrBgEF BQcwAoYvaHR0cDovL2NydC5jb21vZG9jYS5jb20vQ09NT0RPUlNBQWRkVHJ1c3RDQS5jcnQwJAYI KwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9kb2NhLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAeFyy gSg0TzzuX1bOn5dW7I+iaxf28/ZJCAbU2C81zd9A/tNx4+jsQgwRGiHjZrAYayZrrm78hOx7aEpk fNPQIHGG6Fvq3EzWf/Lvx7/hk6zSPwIal9v5IkDcZoFD7f3iT7PdkHJY9B51csvU50rxpEg1OyOT 8fk2zvvPBuM4qQNqbGWlnhMpIMwpWZT89RY0wpJO+2V6eXEGGHsROs3njeP9DqqqAJaBa4wBeKOd GCWn1/Jp2oY6dyNmNppI4ZNMUH4Tam85S1j6E95u4+1Nuru84OrMIzqvISE2HN/56ebTOWlcrurf fade2022O/tUU1gb4jfWCcyvB8czm12FgX/y/lRjmDbEA08QJNB2729Y+io1IYO3ztveBdvUCIYZ ojTq/OCR6MvnzS6X72HP0PRLRTiOSEmIDsS5N5w/8IW1Hva5hEFy6fDAfd9yI+O+IMMAj1KcL/Zo 9jzJ16HO5m60ttl1Enk8MQkz/W3JlHaeI5iKFn4UJu1/cP2YHXYPiWf2JyBzsLBrGk1II+3yL8ao rYew6CQvdVifC3HtwlSam9V1niiCfOBe2C12TdKGu05LWIA3ZkFcWJGaNXOZ6Ggyh/TqvXG5v7zm EVDNXFnHn9tFpMpOUvxhcsjycBtH0dZ0WrNw6gH+HF8TIhCnH3+zzWuDN0Rk6h9KVkfKehIwggXY MIIDwKADAgECAhBMqvnK22Nv4B/3TthbA4adMA0GCSqGSIb3DQEBDAUAMIGFMQswCQYDVQQGEwJH QjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQK ExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1 dGhvcml0eTAeFw0xMDAxMTkwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGFMQswCQYDVQQGEwJHQjEb MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD T01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhv cml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJHoVJLSClaxrA0k3cXPRGd0mSs3 o30jcABxvFPfxPoqEo9LfxBWvZ9wcrdhf8lLDxenPeOwBGHu/xGXx/SGPgr6Plz5k+Y0etkUa+ec s4Wggnp2r3GQ1+z9DfqcbPrfsIL0FH75vsSmL09/mX+1/GdDcr0MANaJ62ss0+2PmBwUq37l4278 2KjkkiTaQ2tiuFX96sG8bLaL8w6NmuSbbGmZ+HhIMEXVreENPEVg/DKWUSe8Z8PKLrZr6kbHxyCg sR9l3kgIuqROqfKDRjeE6+jMgUhDZ05yKptcvUwbKIpcInu0q5jZ7uBRg8MJRk5tPpn6lRfafDNX QTyNUe0LtlyvLGMa31fIP7zpXcSbr0WZ4qNaJLS6qVY9z2+q/0lYvvCo//S4rek3+7q49As6+ehD Qh6J2ITLE/HZu+GJYLiMKFasFB2cCudx688O3T2plqFIvTz3r7UNIkzAEYHsVjv206LiW7eyBCJS lYCTaeiOTGXxkQMtcHQC6otnFSlpUgK7199QalVGv6CjKGF/cNDDoqosIapHziicBkV2v4IYJ7TV rrTLUOZr9EyGcTDppt8WhuDY/0Dd+9BCiH+jMzouXB5BEYFjzhhxayvspoq3MVw6akfgw3lZ1iAa r/JqmKpyvFdK0kuduxD8sExB5e0dPV4onZzMv7NR2qdH5YRTAgMBAAGjQjBAMB0GA1UdDgQWBBS7 r34CPfqm8TyEjq3uOJjs2TIy1DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkq hkiG9w0BAQwFAAOCAgEACvHVRoS3rlG7bLJNQRQAk0ycy+XAVM+gJY4C+f2wog31IJg8Ey2sVqKw 1n4Rkukuup4umnKxvRlEbGE1opq0FhJpWozh1z6kGugvA/SuYR0QGyqki3rF/gWm4cDWyP6ero8r uj2Z+NhzCVhGbqac9Ncn05XaN4NyHNNz4KJHmQM4XdVJeQApHMfsmyAcByRpV3iyOfw6hKC1nHyN vy6TYie3OdoXGK69PAlo/4SbPNXWCwPjV54U99HrT8i9hyO3tklDeYVcuuuSC6HG6GioTBaxGpkK 6FMskruhCRh1DGWoe8sjtxrCKIXDG//QK2LvpHsJkZhnjBQBzWgGamMhdQOAiIpugcaF8qmkLef0 pSQQR4PKzfSNeVixBpvnGirZnQHXlH3tA0rK8NvoqQE+9VaZyR6OST275Qm54E9Jkj0WgkDMzFnG 5jrtEi5pPGyVsf2qHXt/hr4eDjJG+/sTj3V/TItLRmP+ADRAcMHDuaHdpnDiBLNBvOmAkepknHrh IgOpnG5vDmVPbIeHXvNuoPl1pZtA6FOyJ51KucB3IY3/h/LevIzvF9+3SQvR8m4wCxoOTnbtEfz1 6Vayfb/HbQqTjKXQwLYdvjpOlKLXbmwLwop8+iDzxOTlzQ2oy5GSsXyF7LUUaWYOgufNzsgtplF/ IcE1U4UGSl2frbsbX3QwggSvMIIDl6ADAgECAhEA4CPLFRKDU4mtYW56VGdrITANBgkqhkiG9w0B AQsFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRy dXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBS b290MB4XDTE0MTIyMjAwMDAwMFoXDTIwMDUzMDEwNDgzOFowgZsxCzAJBgNVBAYTAkdCMRswGQYD VQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9E TyBDQSBMaW1pdGVkMUEwPwYDVQQDEzhDT01PRE8gU0hBLTI1NiBDbGllbnQgQXV0aGVudGljYXRp b24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAImx Ddp6UxlOcFIdvFamBia3uEngludRq/HwWhNJFaO0jBtgvHpRQqd5jKQi3xdhTpHVdiMKFNNKAn+2 HQmAbqUEPdm6uxb+oYepLkNSQxZ8rzJQyKZPWukI2M+TJZx7iOgwZOak+FaA/SokFDMXmaxE5WmL o0YGS8Iz1OlAnwawsayTQLm1CJM6nCpToxDbPSBhPFUDjtlOdiUCISn6o3xxdk/u4V+B6ftUgNvD ezVSt4TeIj0sMC0xf1m9UjewM2ktQ+v61qXxl3dnUYzZ7ifrvKUHOHaMpKk4/9+M9QOsSb7K93OZ Og8yq5yVOhM9DkY6V3RhUL7GQD/L5OKfoiECAwEAAaOCARcwggETMB8GA1UdIwQYMBaAFK29mHo0 tCb3+sQmVO8DveAky1QaMB0GA1UdDgQWBBSSYWuC4aKgqk/sZ/HCo/e0gADB7DAOBgNVHQ8BAf8E BAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQw EQYDVR0gBAowCDAGBgRVHSAAMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0 LmNvbS9BZGRUcnVzdEV4dGVybmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUH MAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQELBQADggEBABsqbqxVwTqr iMXY7c1V86prYSvACRAjmQ/FZmpvsfW0tXdeDwJhAN99Bf4Ss6SAgAD8+x1banICCkG8BbrBWNUm wurVTYT7/oKYz1gb4yJjnFL4uwU2q31Ypd6rO2Pl2tVz7+zg+3vio//wQiOcyraNTT7kSxgDsqgt 1Ni7QkuQaYUQ26Y3NOh74AEQpZzKOsefT4g0bopl0BqKu6ncyso20fT8wmQpNa/WsadxEdIDQ7GP PprsnjJT9HaSyoY0B7ksyuYcStiZDcGG4pCS+1pCaiMhEOllx/XVu37qjIUgAmLq0ToHLFnFmTPy OInltukWeh95FPZKEBom+nyK+5swggYVMIIE/aADAgECAhBUK7v3iZFOwcXku0+rFipmMA0GCSqG SIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAw DgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3Rp Z28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTI0MTIx NTAwMDAwMFoXDTI2MTIxNTIzNTk1OVowIjEgMB4GCSqGSIb3DQEJARYRZHdtd0BhbWF6b24uY28u dWswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDYY7Ok+LSdJXMOPurGsBJ9haMJobp1 AbJ0lXHAfmgO7N2XfT2VeOglOqYQJQlqSpNchVXA9UZ3OLsde6OC21IBV4iqzkUtI4hf+TmtK1xt xSEhtV3Y7fKDyiKvvWdbNnuyKYuVlo+ABv8ZZB/2DDHLS/TvAgkR0q4YgoWxP4Eee8fTwJ7eWnmW dmFs2hjjnnHmmXvrurxwhyE0ZpJ0gJwF/2jaDSTbEAhnH6xPN8vYh5j/ARa0kWamowSpSqvLciXe RZ0sDx95ElHEJRzsIiHwkRVz+K6V0me5yjhGa90lx9OgA2PYGba0qcAW7sylgzxljEbkZ8/KII/2 Og3lONswf2QCIuW9Ac1n+LtKwREA+cbaTgsWB3Np10GhUlrt+pD9SWjahJROdTkPdhMlSn1tzeqm XCoga1Yo12NhLUfv+VvYsURZxLOJyHm/eEn/dlDBHhvXsNslb3GF1zT2onBp65BEjQtff2vGF8UB GX65gXgD0/b4kCYZ9zvrA+KT9ErN0o1WXOhDu736D9O27dp/WBNPF0j5MXMm9Sf+Lf/gLJJCnmBQ RnaY4MXfoixcY0sAcrWbod/uw7h1H4PO+lgOOInkA64R0o7r7gGdVm/FlLK6c63C6GI6hZm/23+v 8sqMZbd9ZnYDwvhS3PmLtQUMFwtyTG672xQVU7Z+V9hCgwIDAQABo4IB0DCCAcwwHwYDVR0jBBgw FoAUCcDy/AvalNtf/ivfqJlCz8ngrQAwHQYDVR0OBBYEFFr7QNV7ElfMY4HxUC/w1EzSGybuMA4G A1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMEMFAGA1UdIARJ MEcwOgYMKwYBBAGyMQECAQoCMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc2VjdGlnby5jb20vU01J TUVDUFMwCQYHZ4EMAQUBAzBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLnNlY3RpZ28uY29t L1NlY3RpZ29SU0FDbGllbnRBdXRoZW50aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3JsMIGKBggr BgEFBQcBAQR+MHwwVQYIKwYBBQUHMAKGSWh0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1JT QUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcnQwIwYIKwYBBQUHMAGGF2h0 dHA6Ly9vY3NwLnNlY3RpZ28uY29tMBwGA1UdEQQVMBOBEWR3bXdAYW1hem9uLmNvLnVrMA0GCSqG SIb3DQEBCwUAA4IBAQBA+k/q3z9lz3S3x6AneZ9YhiHGGrlnzx0XWTdk8O2uzRFyJJtsmTYszkqa dzazIljgTdd14Kp2C7KnacSYW48CnMyl+dP6n4YZDh7a0NBkZLnMmyuOOwGrpfNHGU/E91hvVPXY ZdwrfzLsigVkINzGJW1E+ruJAvT5PK3fnEdeLbWEVFgyk0tgay+3vI6TZrQqBGpA5DGODK6aDMDN X+ADVamfHJw57cF6uaK5mSJLDdg6sbCi5qxclQDjYakkk+9iJgXyFVoRUUwhfbU3COcBP9EpJduR WZkrAQdi1IHnICuzGcsPQ6P29LGEvvGJgP7o1AqjW9HzyQRPwfbwaJobMYIDvjCCA7oCAQEwgasw gZYxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1Nh bGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE+MDwGA1UEAxM1U2VjdGlnbyBSU0EgQ2xp ZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEFQru/eJkU7BxeS7T6sWKmYw DQYJYIZIAWUDBAIBBQCggeQwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUx DxcNMjYwODA1MTk1NjA4WjAvBgkqhkiG9w0BCQQxIgQg1hSli2Sj2uxwnxG1BX7Jyi2pRHsgXJHC bU+Lfbcw2FEweQYJKoZIhvcNAQkPMWwwajALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCG SAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4D AgcwDQYIKoZIhvcNAwICASgwDQYJKoZIhvcNAQEBBQAEggIAqecG66Q/coLQLrsInoQTlqsq6gy1 19net3G3FGpFdWPBr5Ixu+g+4M63DHtrzL7gawVtPXrBu5EcYCKw42XSC+dE+40cV+1s6/Jhp3+j ii1DcJcOiN+qQAeNs58KvffTOFVeFB54P+yE9OsJGyVwsrFSOdBARGXa28k8YUatFGwT5eCcVVy0 /QWvziZbVtHIdrhNXcGhyLJ25Mt7ArkV2eN34zJdSuGEazWBPSZdWq20nF2OuiA+flbeU21N7YtH Cj1+kxDByOYNHzfaAP3VMeotyHljBXJHQvNty3ulHshg9SnkNBX5wvjtOlIQoEN2eQhDJMeCt1Gj IsHwBaYDp+Csc0Ss8/rIBb8QbUTIvAsZQ0xTQB/DvbK53+Wi8ILnobPd0jL3hS1T18Y7Fi6rQ753 YSWTdajEis7UeRSifgdwzTuIR4I5Le3nSJaQXB/EMURxA7T/coqF297QMpACZYFS86W7r8K4Osdv ZDAr0fsMcSJ8cTLe0KSWIFiqucUF7F3fl2SJblj7ymbNKU66xiM2/l+PeCs1Vfi5DeDUYUHbO9/u 2gHjUfCaimTbOpY8Xaca0z9MPOi7jO9Tb66Xz4LHmO3JMZjR7l5ymWDFWfk5g5UigQBBG+UyVBNt wHAXWvZHQreiDJ3rya3IIvpHgAZEiQc0ypnWBm5Tc0tkkLg= ------14FD06F5C320B8ADDFC61DEAF40E912D-- --===============5608212814748177171== Content-Type: multipart/alternative; boundary="===============7401809164625154276==" MIME-Version: 1.0 Content-Disposition: inline --===============7401809164625154276== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Amazon Development Centre (London) Ltd. Registered in England and Wales wit= h registration number 04543232 with its registered office at 1 Principal Pl= ace, Worship Street, London EC2A 2FA, United Kingdom. --===============7401809164625154276== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable


Amazon Development Centre (London) Ltd.Registered in England an= d Wales with registration number 04543232 with its registered office at 1 P= rincipal Place, Worship Street, London EC2A 2FA, United Kingdom.


--===============7401809164625154276==-- --===============5608212814748177171==-- From nobody Tue Aug 25 14:34:35 2026 Received: from fra-out-014.esa.eu-central-1.outbound.mail-perimeter.amazon.com (fra-out-014.esa.eu-central-1.outbound.mail-perimeter.amazon.com [18.199.210.3]) (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 CF72D428473; Wed, 5 Aug 2026 19:56:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=18.199.210.3 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785959787; cv=fail; b=MZIidxX5CjjHtI835asCzTm1ZcjJI0N1UwQUVwJO3dDS5YLuMrp8MOa8lted0ml+opQYOXxvGMfnjKRkW6XUmaPDkd26e5rxUv+SDguG6vGDai3Hekl1Sj+tJ2euA60SXsIKyWxPW24/bPscaTV7nON5G5q0vzUtEZLnCJ26NPM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785959787; c=relaxed/simple; bh=tZ6R2dzM8iutUF0cYqRgfQ0kVFaN8facUmeXmHyX724=; h=Content-Type:MIME-Version:From:To:CC:Subject:Date:Message-ID: References:In-Reply-To:MIME-Version; b=gwTbIacXlRqrYVGhEFtHzgNDQ/XpGFgz2fCiPMYBGyiHpW1Ip8bGkqNeJWz9y1jXHf0L6ZwU0K6zyEAKs6JWDHDyjyGOGVw8gOmcniXln2la1zjar1K6g8dAnBDO9j0jl7Oxl0Hn5MopOnzVQjM9j3hyRULfwslZB/umAaeBnvE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.co.uk; spf=pass smtp.mailfrom=amazon.co.uk; dkim=pass (2048-bit key) header.d=amazon.co.uk header.i=@amazon.co.uk header.b=Yv8Ez4dS; arc=fail smtp.client-ip=18.199.210.3 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.co.uk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=amazon.co.uk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=amazon.co.uk header.i=@amazon.co.uk header.b="Yv8Ez4dS" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.co.uk; i=@amazon.co.uk; q=dns/txt; s=amazoncorp2; t=1785959786; x=1817495786; h=from:to:cc:subject:date:message-id:references: in-reply-to; bh=y+BfWbg4EzsGN71TWNdu3TBzuVjEkXiqTByHFzwkeIo=; b=Yv8Ez4dSs9Cq3OK+G9TF7cHwAyp5SOBC4GU7m4FHCdupY6l1WVFrt+Iw kFKqQWVNxbemvg8fNmo+YHz3kf28+90+o7EuXHpwGQwLfDrxuHgLtmb4E 0GW7+9wqV8CziFM24g/yL0j6tGR9yVZFfUSSUeAb4o16sUFq4+0YYUNIt fn67lAu5TpcH1q16fJZCks5jdSwRgYEeoo0FPGusmwcvB5PK0Q+W1jgKl m9pdeT5cYfg/iv/ZFuzch8dAp8F1UsS4P3lfx4Tp0DOKCVzxb0GIs63q+ VTTzmQhGnwTvrayjvGVB+bLp2VVgsUeRnoNpguV/e4NQI2rBYJcGD2GoY w==; X-CSE-ConnectionGUID: lZe6ARn/QeeARiJz29t+cA== X-CSE-MsgGUID: SRIc2TJLQdO3EoE2wdcpuQ== X-Amazon-filename: smime.p7s X-IronPort-AV: E=Sophos;i="6.25,207,1779148800"; d="p7s'346?scan'346,208,346";a="17320365" Content-Type: multipart/mixed; boundary="===============3918090059069971927==" Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Received: from ip-10-6-6-97.eu-central-1.compute.internal (HELO smtpout.naws.eu-central-1.prod.farcaster.email.amazon.dev) ([10.6.6.97]) by internal-fra-out-014.esa.eu-central-1.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Aug 2026 19:56:17 +0000 Received: from EX19MTAEUC001.ant.amazon.com [54.240.197.233:5813] by smtpin.naws.eu-central-1.prod.farcaster.email.amazon.dev [10.0.15.0:2525] with esmtp (Farcaster) id eea6d8a9-e951-4547-aad4-9d6cb6f45b52; Wed, 5 Aug 2026 19:56:17 +0000 (UTC) X-Farcaster-Flow-ID: eea6d8a9-e951-4547-aad4-9d6cb6f45b52 Received: from EX19EXOEUC001.ant.amazon.com (10.252.51.133) by EX19MTAEUC001.ant.amazon.com (10.252.51.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45; Wed, 5 Aug 2026 19:56:17 +0000 Received: from LO0P265CU003.outbound.protection.outlook.com (10.252.51.199) by EX19EXOEUC001.ant.amazon.com (10.252.51.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45 via Frontend Transport; Wed, 5 Aug 2026 19:56:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=u1WzIiWSDKOrmNslAexPu9kSEQBArB6q4ZDVR0OwmSXNNvvlVeU8o1QJ25es0FDtXLaf6YjAYYwPjFhHUi7DdUSF0rijmiNI7IkkGFQJXmqBU6Z6MfTVY70X6bExkYjE4t83aoaKERZKU1XJi0uGTxiVstG897YW5oma6Nab2IuKoq/RbVe4Z+xGENVFe0ofBMidNHb/4YgGarN9GeVeeUCFtot8WSIpLQTeXkjDg98ru4EY4hiqZjczfU5y1SyfFsptxUIU1Quki4C0qob6gCept6ASSBcoxZ2OnuxkKwVs5UDhIeBiOhZD1Ml6dvyE55HnfaBSW0JSl3Rz425bmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:MIME-Version; bh=buYeC+GGkpdiPS2l/VIVx5kvxcJqerXRl31l8JZPK1Q=; b=D7BqEKfrPoPHo2Q/5dTac36T/JsmNO/09WQqRbpI5ODEcUsWT4ywUVxeQf5fIBiZgAX8DRn60mpYof5awLUmXsPFKlD34Ye9Lfn5kS1VQl7wZqo7HpewcXFMvCs2b9KMBHxoSwkj2Prua3F8MMPrdD1uE4mJ3iA+ezw+Bq1T0kbaezDiH4AUv8GXwBelvFuzFzGrWZ1b9Og1ASHQHVWlB9JSiRXZxmFWS1Vkpf3EXwm9DzQJbhSSCajNlyYpj8OHJho4ox28myxrRj/gDwOMi/IRJBWR1689Du28yf2NVuKNL+GfjifEoqYy0wqtNDiiotvLBcbbzICj8vEnuTYb9g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amazon.co.uk; dmarc=pass action=none header.from=amazon.co.uk; dkim=pass header.d=amazon.co.uk; arc=none Received: from LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:4b4::12) by LO0P123MB7404.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:334::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.19; Wed, 5 Aug 2026 19:56:08 +0000 Received: from LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM ([fe80::c7e3:476c:6170:8f6]) by LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM ([fe80::c7e3:476c:6170:8f6%6]) with mapi id 15.21.0292.018; Wed, 5 Aug 2026 19:56:08 +0000 From: "Woodhouse, David" To: "seanjc@google.com" , "pbonzini@redhat.com" , "akpm@linux-foundation.org" CC: "bigeasy@linutronix.de" , "peterz@infradead.org" , "mingo@redhat.com" , "will@kernel.org" , "longman@redhat.com" , "boqun@kernel.org" , "tglx@kernel.org" , "paul@xen.org" , "Stollmaier, Carsten" , "dwmw2@infradead.org" , "Woodhouse, David" , "daniel.vetter@ffwll.ch" , "mhocko@suse.com" , "jgg@nvidia.com" , "christian.koenig@amd.com" , "jglisse@redhat.com" , "david@kernel.org" , "ljs@kernel.org" , "liam@infradead.org" , "vbabka@kernel.org" , "rppt@kernel.org" , "surenb@google.com" , "bp@alien8.de" , "dave.hansen@linux.intel.com" , "hpa@zytor.com" , "x86@kernel.org" , "kvm@vger.kernel.org" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" Subject: [PATCH v3 6/7] KVM: x86/xen: Don't dirty track "vCPU info" page Thread-Topic: [PATCH v3 6/7] KVM: x86/xen: Don't dirty track "vCPU info" page Thread-Index: AQHdJRR093nvpCORp0KtkoCqn5brJg== Date: Wed, 5 Aug 2026 19:56:07 +0000 Message-ID: <20260805195528.3853473-7-dwmw@amazon.co.uk> References: <20260805195528.3853473-1-dwmw@amazon.co.uk> In-Reply-To: <20260805195528.3853473-1-dwmw@amazon.co.uk> Accept-Language: en-GB, en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amazon.co.uk; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LOZP123MB8516:EE_|LO0P123MB7404:EE_ x-ms-office365-filtering-correlation-id: 201cf124-5e75-4bc7-14a9-08def32b9741 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|6049299003|1800799024|376014|7416014|23010399003|22082099003|18002099003|11063799006|56012099006|4053099003|38070700021|10067099003; x-microsoft-antispam-message-info: VYxp/zL0oXjJck84BMA/PiNb47ekWkG76SiGcQ58YZp2zj95Rf3kbMxmyZQl2RI1TtzKguyXIfNd2xGZHPnFLcloo7MacPVftOyux7ntXvH5x4ql/DcqBNnIgb52lNbkqdP87CKNEVOpucrNW6kjeJy2aIhLWzc96JPbjotYdFvT5H77ox+vYDQNgK6+SHobry98C7+r2W130rY8cmJPaf63ai7m5e6F326H0hhZtGdWnp6Ep6GYS01zgUSZnssFQ9EmFTjyX7c4hCe24iUCLSbeDZ4oswxdIglSlfAhNclFT7Wp+fMff3dPm0jWrm9rzDpo9BCOHMlPe7y2HbKh0xYz0bC4nMhhXpQDkaJYKOMCWWy18drQIJhjhTtlkNZ2D8yZPT7hO/9ArbX5IrhKHPbrL2Hr8RYqwP6rNbkcQpq30/fLqY6XEl5MzZKR1LoI1rDQ7bvLtierWzHZfcS3fI6VNqM0RwiO+p9f7rvD//i1p1Rro4xeFfakEfoK7OJeqCrj2VOPB43/oxRpWxojNU2Z2ZWau8ouOBfRdBje36so1zviy0SD79ODVjnOyf1PvvELA5qmfQQFa4/DSrivCOD9cPxESAcjU28LEUpSTiU7nHXeXAXq2ZObWTaMsgbYgd2ouQTsDFZt/GibIHknbFVNqgkYR/nWdUGEet9k+ipiUu+YKhbXcV/fMTxA3LbBWvIt/my1wE2C1pu+ox4M2H6/eDyGv/fB0rfHwMPi0SU= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(6049299003)(1800799024)(376014)(7416014)(23010399003)(22082099003)(18002099003)(11063799006)(56012099006)(4053099003)(38070700021)(10067099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?g2sg66XvXh+ed1NAgh55FlJbd8tiLtVrqoQ0cFSbVpNPQ33NIv1z0QZ7Ov?= =?iso-8859-1?Q?97DxJ6GJ8+M//D1n46YWx2WD5Wm5h22kHXR9B3FpAwGeCp3DnGhhh66cei?= =?iso-8859-1?Q?/WKcx+6vnjWzK3syJpGba9RfA+KKVzHF/5vrP0EG4I+zAOUpA0d3pCoqYo?= =?iso-8859-1?Q?Lq3nPcpMUNDn2vtVKxQRJJGoVet95XpVJbuNMIg5bBPnVB5SrBVgi7618M?= =?iso-8859-1?Q?mGxqKbN5pWIQLmvmPVBGAS+AYksbLF9JMAP9+W/MSGBFZqu3BlVxI8YzMr?= =?iso-8859-1?Q?b9v0Aib8Tseop2o6eyoEMd0b06ZUBfKcPXY+LmyExZAZsE7as7M4ulMrt/?= =?iso-8859-1?Q?QUjACZ/iTtQWjvfaC1f5XUATE2HqU3yS9RHBQ3UfuX+Ce7nJvU6C/FP9bI?= =?iso-8859-1?Q?tja9wnGDPb5EpmPdIEUOhreEilKXPsXXa9lM9xBItFzapR3MB3LiLW9of1?= =?iso-8859-1?Q?zuHPaOnAj47V0bpG7xlw1K74aC8/QUsLSDEKONqwXj6Bp8NMnWfYfTMuEA?= =?iso-8859-1?Q?KixuKbgzvPGrmmBd4rRuRqd3zSPY7lMPgo7YtBuXlIP/UvRzgyLfPuzjLQ?= =?iso-8859-1?Q?NpuA24YaxADCQ2UKJwCXL6U0ADddKjhw9U9jcXjMx0LtOpviJJ14DB1dRj?= =?iso-8859-1?Q?MJW8CC9iNLk5XeXvd1bH7VaYQju2gvcDAYVaJPDHirpCRtg/x20UAaVt4m?= =?iso-8859-1?Q?ijqP1PlJySQ/+DSaRV8kJf/hPWE6uvr///lSDcYndhSjNym9kR2TzrQGrg?= =?iso-8859-1?Q?YhEIKQ1iXIUPXhLN0tO2Gj4zmP4E/wE5FkPsKbeq9+vOC1qER1c9SUTOAw?= =?iso-8859-1?Q?mI/SpTYjb9h/unD/7Txr1xPtQgqGhwurzt3eG+YForE3Xq9w4YLTYXK6UZ?= =?iso-8859-1?Q?XroMfa9GbQRXUNw/bHnqvhlDbCa4M1AAEvjKxcQ64Lc2qtmlet0oGYnta6?= =?iso-8859-1?Q?5VwsOuxCgeAyXwb+f4q3lsdEAfqsQRuPvZ24TYePHrRy1Z3qFlBqJe4czW?= =?iso-8859-1?Q?J5fpMrq7RF3Qt/9+WS4U8moz7qlKdDwI/co4tjut5O4X+OQE6VBbPfdDbg?= =?iso-8859-1?Q?i6kBECVZk78AyeLMVwXWGSRfjpUUq7ewnNGz1m19i3MPHoxK7a+kzORy4F?= =?iso-8859-1?Q?8NsRhsFWmJOvChw6jwDrQUMWKqJ96Aw6NwLVkVAv2fabut+Xb9ZBbjwZ05?= =?iso-8859-1?Q?9MABT3gDqxsDX851vxczp0idQYPPaDcnVxl+GHplDE0nhi5V0PM3fBUPrk?= =?iso-8859-1?Q?Nfb08FGV3BDIXuEfqYN6gbJz2sw4QUXUzPXDye9kDvlNXCuaaURrvGaEsi?= =?iso-8859-1?Q?Y29uhvm6laeXy+CSkOilzYf0ZHJ2k4h/68j5Dtvr0/fA7USSRwF7qFM7yd?= =?iso-8859-1?Q?FzlwEjnu0+Sbt1mXhSFE5roK2VL1LIAQsqWWgA1DHihmEJqItO+7iy3pI7?= =?iso-8859-1?Q?s+q9UMSu/6BZehfM9yAB/pOT8rw3ePDp726DXlz9i8vCReldofQU1nQTDO?= =?iso-8859-1?Q?lqiL2aVoGrZncbDkV/Ai/i2FeGXAKW7T9uxiOiq1J2QOBo7q5qTo8Bvqyu?= =?iso-8859-1?Q?fhfX9/RB/O+Xba5ChH1v9UsWxsqNkAxJ+tlJub9VbDm01kappdI1vGEQs4?= =?iso-8859-1?Q?kJNRla0AsfJZnxAvFH9SwCT8yHOOUh2+8WNQN3d49utSOLhFjSrdm8xIfi?= =?iso-8859-1?Q?65T9ib3ump8SyEPHhCmsdHm+02ibd3PHJprEN9IoM8ni6rERSYpKuzRrjx?= =?iso-8859-1?Q?WnFz+WzdT+1vQSJRmdeCaqBpdwnB9xovvX9i4YEG+w/K1J?= MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: ltlx6a4QO2JNchTReHGlzQz43NZ1Wp/OOUmGfI+crLij4I4o1HQtHpqGE9zyN7PgdHJR18mA+6TLlgrMliMKOCVcTdYpf19gnS/iDTFK8ypGXM1OgZ6sWN1D0G0xVB//s5ojaIx8JgOvpsPSPMJf42GOOlda15n79Y3ZJbR+Uobjik8T/ZLngxJYjK6BCt3fBwoY0khYvCZkSz0ZcRofZAcUDlr6bDDBmTYUam0nNoQ4QObQK2gtAUvbS1dWFrjEvCi5Zpw+AeF7TbhNyAeUTDLgdlBftMT/01kAv39OaPwRv7WwdMgPbqNlDskEwj/WDaHEtf6Mc6mT43CGB8jMRg== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 201cf124-5e75-4bc7-14a9-08def32b9741 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2026 19:56:07.9518 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5280104a-472d-4538-9ccf-1e1d0efe8b1b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: aGeuxBvrxd3l//Nuj7uplc8smOAOJATiPtGqpmFp7b8LBYQEuN1JGfZvIWd8Rm4YAfOUHMZGmDLlzqXf1S9hmw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO0P123MB7404 X-OriginatorOrg: amazon.co.uk --===============3918090059069971927== Content-Language: en-US Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha-256; boundary="----3D7B6D40694C13434FF46B489C2A9DE7" ------3D7B6D40694C13434FF46B489C2A9DE7 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Sean Christopherson Give the Xen per-vCPU info page the same treatment as the per-VM shared info page, and never mark it dirty, as KVM clearly relies on userspace to assume the page is always dirty. While the page is marked dirty on writes via kvm_xen_inject_pending_events(), it's not marked dirty when written by __kvm_xen_set_evtchn_fast(). Furthermore, as was the case with the shared info page, writes in the event channel fastpath may be done without an active vCPU, e.g. when called via timer callback or irqfd injection. I.e. attempting to fix the fastpath would run afoul of the same issue that was fixed by commit 55749769fe60 ("KVM: x86: Fix wall clock writes in Xen shared_info not to mark page dirty"). Signed-off-by: Sean Christopherson Signed-off-by: David Woodhouse Assisted-by: Claude:claude-mythos-5 --- arch/x86/kvm/xen.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/x86/kvm/xen.c b/arch/x86/kvm/xen.c index ff18d888ed47..9f1a9c93442d 100644 --- a/arch/x86/kvm/xen.c +++ b/arch/x86/kvm/xen.c @@ -659,7 +659,6 @@ void kvm_xen_inject_pending_events(struct kvm_vcpu *v) WRITE_ONCE(vi->evtchn_upcall_pending, 1); } - kvm_gpc_mark_dirty_in_slot(gpc); rcu_read_unlock(); /* For the per-vCPU lapic vector, deliver it as MSI. */ @@ -2308,7 +2307,7 @@ void kvm_xen_init_vcpu(struct kvm_vcpu *vcpu) kvm_gpc_init(&vcpu->arch.xen.runstate_cache, vcpu->kvm); kvm_gpc_init(&vcpu->arch.xen.runstate2_cache, vcpu->kvm); - kvm_gpc_init(&vcpu->arch.xen.vcpu_info_cache, vcpu->kvm); + __kvm_gpc_init(&vcpu->arch.xen.vcpu_info_cache, vcpu->kvm, true); kvm_gpc_init(&vcpu->arch.xen.vcpu_time_info_cache, vcpu->kvm); } -- 2.43.0 ------3D7B6D40694C13434FF46B489C2A9DE7 Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" MII+PgYJKoZIhvcNAQcCoII+LzCCPisCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGg gjpEMIIGEDCCA/igAwIBAgIQTZQsENQ74JQJxYEtOisGTzANBgkqhkiG9w0BAQwFADCBiDELMAkG A1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYD VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlm aWNhdGlvbiBBdXRob3JpdHkwHhcNMTgxMTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBljELMAkG A1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEY MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0 aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBAMo87ZQKQf/e+Ua56NY75tqSvysQTqoavIK9viYcKSoq0s2cUIE/bZQu85eoZ9X140qO TKl1HyLTJbazGl6nBEibivHbSuejQkq6uIgymiqvTcTlxZql19szfBxxo0Nm9l79L9S+TZNTEDyg NfcXlkHKRhBhVFHdJDfqB6Mfi/Wlda43zYgo92yZOpCWjj2mz4tudN55/yE1+XvFnz5xsOFbme/S oY9WAa39uJORHtbC0x7C7aYivToxuIkEQXaumf05Vcf4RgHs+Yd+mwSTManRy6XcCFJE6k/LHt3n dD3sA3If/JBz6OX2ZebtQdHnKav7Azf+bAhudg7PkFOTuRMCAwEAAaOCAWQwggFgMB8GA1UdIwQY MBaAFFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBQJwPL8C9qU21/+K9+omULPyeCtADAO BgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAgYI KwYBBQUHAwQwEQYDVR0gBAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwu dXNlcnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNvbS9VU0VSVHJ1 c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNlcnRydXN0LmNv bTANBgkqhkiG9w0BAQwFAAOCAgEAQUR1AKs5whX13o6VbTJxaIwA3RfXehwQOJDI47G9FzGR87bj grShfsbMIYdhqpFuSUKzPM1ZVPgNlT+9istp5UQNRsJiD4KLu+E2f102qxxvM3TEoGg65FWM89YN 5yFTvSB5PelcLGnCLwRfCX6iLPvGlh9j30lKzcT+mLO1NLGWMeK1w+vnKhav2VuQVHwpTf64ZNnX UF8p+5JJpGtkUG/XfdJ5jR3YCq8H0OPZkNoVkDQ5CSSF8Co2AOlVEf32VBXglIrHQ3v9AAS0yPo4 Xl1FdXqGFe5TcDQSqXh3TbjugGnG+d9yZX3lB8bwc/Tn2FlIl7tPbDAL4jNdUNA7jGee+tAnTtlZ 6bFz+CsWmCIb6j6lDFqkXVsp+3KyLTZGXq6F2nnBtN4t5jO3ZIj2gpIKHAYNBAWLG2Q2fG7Bt2tP C8BLC9WIM90gbMhAmtMGquITn/2fORdsNmaV3z/sPKuIn8DvdEhmWVfh0fyYeqxGlTw0RfwhBlak dYYrkDmdWC+XszE19GUi8K8plBNKcIvyg2omAdebrMIHiAHAOiczxX/aS5ABRVrNUDcjfvp4hYbD OO6qHcfzy/uY0fO5ssebmHQREJJA3PpSgdVnLernF6pthJrGkNDPeUI05svqw1o5A2HcNzLOpklh NwZ+4uWYLcAi14ACHuVvJsmzNicwggXeMIIDxqADAgECAhAB/W0w/KPKUagbvGQONQMtMA0GCSqG SIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxML SmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNF UlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xMDAyMDEwMDAwMDBaFw0zODAx MTgyMzU5NTlaMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxML SmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNF UlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIP ADCCAgoCggIBAIASZRc2DsPbCLPQrFcNdu3NJ9NMrVCDYeKqIE0JLWQJ3M6Jn8w9qez2z8Hc8dOx 1ns3KBErR9o5xrw6GbRfpr19naNjQrZ28qk7K5H44m/Q7BYgkAk+4uh0yRi0kdRiZNt/owbxiBhq kCI8vP4T8IcUe/bkH47U5FHGEWdGCFHLhhRUP7wz/n5snP8WnRi9UY41pqdmyHJn2yFmsdSbeAPA UDrozPDcvJ5M/q8FljUfV1q3/875PbcstvZU3cjnEjpNrkyKt1yatLcgPcp/IjSufjtoZgFE5wFO RlObM2D3lL5TN5BzQ/Myw1Pv26r+dE5px2uMYJPexMcM3+EyrsyTO1F4lWeL7j1W/gzQaQ8bD/Ml JmszbfduR/pzQ+V+DqVmsSl8MoRjVYnEDcGTVDAZE6zTfTen6106bDVc20HXEtqpSQvf2ICKCZNi jrVmzyWIzYS4sT+kOQ/ZAp7rEkyVfPNrBaleFoPMuGfi6BOdzFuC00yz7Vv/3uVzrCM7LQC/NVV0 CUnYSVgaf5I25lGSDvMmfRxNF7zJ7EMm0L9BX0CpRET0medXh55QH1dUqD79dGMvsVBlCeZYQi5D Gky08CVHWfoEHpPUJkZKUIGy3r54t/xnFeHJV4QeD2PW6WK61l9VLupcxigIBCU5uA4rqfJMlxwH Pw1S9e3vL4IPAgMBAAGjQjBAMB0GA1UdDgQWBBRTeb9aqitKz1SA4dibwJ3ysgNmyzAOBgNVHQ8B Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQwFAAOCAgEAXNR8Dc/3AX1BmWUM c8VSn8v4z5kGfxvaQxWfngJVV5YU8VI8J4eUKO0fOgE3onb8U1DAhJvGa066jCFPoo5VYpHzaRXY vIjjxKoL/e+o6UtVKgYgbVV4KRnuXzBcSyQRVf8kmm5eKivuC02ff/cBOJQUlUMHCftgqe4cqxKM oJpep5hqWW2LPwj7yNFFrxgVZJASD3MoLsXiJE78WOzw9EX+IrPrL47S2UVhBcGXb6h2co+LjDav vw0FznGN5qZvH2ymcWLF2NCDcgzxZxGJDJwTTHI037zVcd+qcd3huWyMPBJdZdq9VxK2Q2v/5d5N ZhFRz5mu7Be26HGRjN5J/t01caIVJ5Qcz2HjJrtvo2clIV3m3R0LLmgbO4Kv7INnhdSYUXSxuZmA if9/eBlceUpgLpJArkw3KizJx2LIDl33NlvK4CUlAbTdGgecdwA/0NzV7D3U+rs/zIXWb3+pLd+5 Avf1l5q1NdrDZ7CHSqkoniOO/1wna+GwT/MH7gAu1FmHy1JBler0R9fuZEFVfI1ZApXdYp3Cue5a KHSEpZu3kMcMB9/1iTZ0MtYowbCwC+CcTMMc1vzjabVHRoEvooKr02NEcMSN/y0zuq2Pe7VwiK4+ Gc9AKNj8yJC7XZki9VLmWMUfiDFD7ogd18aOPENqHacY3n09FvFi+cqQqP0wggYQMIID+KADAgEC AhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UE CBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJV U1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UE CBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdv IExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQg U2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyjztlApB/975 Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUfItMltrMaXqcESJuK 8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeWQcpGEGFUUd0kN+oH ox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YBrf24k5Ee1sLTHsLt piK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewDch/8kHPo5fZl5u1B 0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAUU3m/WqorSs9UgOHY m8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1UdDwEB/wQEAwIBhjAS BgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDARBgNVHSAE CjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VT RVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUFBwEBBGowaDA/Bggr BgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJTQUFkZFRydXN0Q0Eu Y3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUA A4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+xswhh2GqkW5JQrM8 zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9IHk96VwsacIvBF8J fqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7kkmka2RQb9d90nmN HdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1eoYV7lNwNBKpeHdN uO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4KxaYIhvqPqUMWqRd Wyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL1Ygz3SBsyECa0waq 4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQOZ1YL5ezMTX0ZSLw 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 DTI4MDEwOTIzNTk1OVowgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0 ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMT0wOwYDVQQD EzRDT01PRE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvrOeV6wodnVAFsc4A5jTxhh2IVDzJXkLTLWg 0X06WD6cpzEup/Y0dtmEatrQPTRI5Or1u6zf+bGBSyD9aH95dDSmeny1nxdlYCeXIoymMv6pQHJG NcIDpFDIMypVpVSRsivlJTRENf+RKwrB6vcfWlP8dSsE3Rfywq09N0ZfxcBa39V0wsGtkGWC+eQK iz4pBZYKjrc5NOpG9qrxpZxyb4o4yNNwTqzaaPpGRqXB7IMjtf7tTmU2jqPMLxFNe1VXj9XB1rHv bRikw8lBoNoSWY66nJN/VCJv5ym6Q0mdCbDKCMPybTjoNCQuelc0IAaO4nLUXk0BOSxSxt8kCvsU tQIDAQABo4IBPDCCATgwHwYDVR0jBBgwFoAUu69+Aj36pvE8hI6t7jiY7NkyMtQwHQYDVR0OBBYE FIKvbIz4xf6WYXzoHz0rcUhexIvAMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEA MBEGA1UdIAQKMAgwBgYEVR0gADBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9kb2Nh LmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEFBQcBAQRlMGMw OwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQUFkZFRydXN0Q0Eu Y3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZIhvcNAQEMBQAD ggIBAHhcsoEoNE887l9Wzp+XVuyPomsX9vP2SQgG1NgvNc3fQP7TcePo7EIMERoh42awGGsma65u /ITse2hKZHzT0CBxhuhb6txM1n/y78e/4ZOs0j8CGpfb+SJA3GaBQ+394k+z3ZByWPQedXLL1OdK 8aRINTsjk/H5Ns77zwbjOKkDamxlpZ4TKSDMKVmU/PUWNMKSTvtlenlxBhh7ETrN543j/Q6qqgCW gWuMAXijnRglp9fyadqGOncjZjaaSOGTTFB+E2pvOUtY+hPebuPtTbq7vODqzCM6ryEhNhzf+enm 0zlpXK7q332nXttNtjv7VFNYG+I31gnMrwfHM5tdhYF/8v5UY5g2xANPECTQdu9vWPoqNSGDt87b 3gXb1AiGGaI06vzgkejL580ul+9hz9D0S0U4jkhJiA7EuTecP/CFtR72uYRBcunwwH3fciPjviDD AI9SnC/2aPY8ydehzuZutLbZdRJ5PDEJM/1tyZR2niOYihZ+FCbtf3D9mB12D4ln9icgc7CwaxpN SCPt8i/GqK2HsOgkL3VYnwtx7cJUmpvVdZ4ognzgXtgtdk3ShrtOS1iAN2ZBXFiRmjVzmehoMof0 6r1xub+85hFQzVxZx5/bRaTKTlL8YXLI8nAbR9HWdFqzcOoB/hxfEyIQpx9/s81rgzdEZOofSlZH ynoSMIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkG A1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEa MBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv biBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3F z0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPm NHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gc FKt+5eNu/Nio5JIk2kNrYrhV/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62 a+pGx8cgoLEfZd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z +pUX2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7wqP/0uK3pN/u6 uPQLOvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZahSL0896+1DSJMwBGB7FY79tOi 4lu3sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVICu9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZF dr+CGCe01a60y1Dma/RMhnEw6abfFobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH 4MN5WdYgGq/yapiqcrxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNV HQ4EFgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMB Af8wDQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvlwFTPoCWOAvn9sKIN9SCY PBMtrFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA 1sj+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8 OoSgtZx8jb8uk2IntznaFxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuho qEwWsRqZCuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiKboHG hfKppC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmckejkk9u+UJueBPSZI9 FoJAzMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yLS0Zj/gA0QHDBw7mh3aZw4gSzQbzp gJHqZJx64SIDqZxubw5lT2yHh17zbqD5daWbQOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsa Dk527RH89elWsn2/x20Kk4yl0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLn zc7ILaZRfyHBNVOFBkpdn627G190MIIF5jCCA86gAwIBAgIQapvhODv/K2ufAdXZuKdSVjANBgkq hkiG9w0BAQwFADCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQ MA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNP TU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTMwMTEwMDAwMDAwWhcNMjgwMTA5 MjM1OTU5WjCBlzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G A1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxPTA7BgNVBAMTNENPTU9E TyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0EwggEiMA0GCSqG SIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+s55XrCh2dUAWxzgDmNPGGHYhUPMleQtMtaDRfTpYPpyn MS6n9jR22YRq2tA9NEjk6vW7rN/5sYFLIP1of3l0NKZ6fLWfF2VgJ5cijKYy/qlAckY1wgOkUMgz KlWlVJGyK+UlNEQ1/5ErCsHq9x9aU/x1KwTdF/LCrT03Rl/FwFrf1XTCwa2QZYL55AqLPikFlgqO tzk06kb2qvGlnHJvijjI03BOrNpo+kZGpcHsgyO1/u1OZTaOo8wvEU17VVeP1cHWse9tGKTDyUGg 2hJZjrqck39UIm/nKbpDSZ0JsMoIw/JtOOg0JC56VzQgBo7ictReTQE5LFLG3yQK+xS1AgMBAAGj ggE8MIIBODAfBgNVHSMEGDAWgBS7r34CPfqm8TyEjq3uOJjs2TIy1DAdBgNVHQ4EFgQUgq9sjPjF /pZhfOgfPStxSF7Ei8AwDgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwEQYDVR0g BAowCDAGBgRVHSAAMEwGA1UdHwRFMEMwQaA/oD2GO2h0dHA6Ly9jcmwuY29tb2RvY2EuY29tL0NP TU9ET1JTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHEGCCsGAQUFBwEBBGUwYzA7BggrBgEF BQcwAoYvaHR0cDovL2NydC5jb21vZG9jYS5jb20vQ09NT0RPUlNBQWRkVHJ1c3RDQS5jcnQwJAYI KwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9kb2NhLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAeFyy gSg0TzzuX1bOn5dW7I+iaxf28/ZJCAbU2C81zd9A/tNx4+jsQgwRGiHjZrAYayZrrm78hOx7aEpk fNPQIHGG6Fvq3EzWf/Lvx7/hk6zSPwIal9v5IkDcZoFD7f3iT7PdkHJY9B51csvU50rxpEg1OyOT 8fk2zvvPBuM4qQNqbGWlnhMpIMwpWZT89RY0wpJO+2V6eXEGGHsROs3njeP9DqqqAJaBa4wBeKOd GCWn1/Jp2oY6dyNmNppI4ZNMUH4Tam85S1j6E95u4+1Nuru84OrMIzqvISE2HN/56ebTOWlcrurf fade2022O/tUU1gb4jfWCcyvB8czm12FgX/y/lRjmDbEA08QJNB2729Y+io1IYO3ztveBdvUCIYZ ojTq/OCR6MvnzS6X72HP0PRLRTiOSEmIDsS5N5w/8IW1Hva5hEFy6fDAfd9yI+O+IMMAj1KcL/Zo 9jzJ16HO5m60ttl1Enk8MQkz/W3JlHaeI5iKFn4UJu1/cP2YHXYPiWf2JyBzsLBrGk1II+3yL8ao rYew6CQvdVifC3HtwlSam9V1niiCfOBe2C12TdKGu05LWIA3ZkFcWJGaNXOZ6Ggyh/TqvXG5v7zm EVDNXFnHn9tFpMpOUvxhcsjycBtH0dZ0WrNw6gH+HF8TIhCnH3+zzWuDN0Rk6h9KVkfKehIwggXY MIIDwKADAgECAhBMqvnK22Nv4B/3TthbA4adMA0GCSqGSIb3DQEBDAUAMIGFMQswCQYDVQQGEwJH QjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQK ExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1 dGhvcml0eTAeFw0xMDAxMTkwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGFMQswCQYDVQQGEwJHQjEb MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD T01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhv cml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJHoVJLSClaxrA0k3cXPRGd0mSs3 o30jcABxvFPfxPoqEo9LfxBWvZ9wcrdhf8lLDxenPeOwBGHu/xGXx/SGPgr6Plz5k+Y0etkUa+ec s4Wggnp2r3GQ1+z9DfqcbPrfsIL0FH75vsSmL09/mX+1/GdDcr0MANaJ62ss0+2PmBwUq37l4278 2KjkkiTaQ2tiuFX96sG8bLaL8w6NmuSbbGmZ+HhIMEXVreENPEVg/DKWUSe8Z8PKLrZr6kbHxyCg sR9l3kgIuqROqfKDRjeE6+jMgUhDZ05yKptcvUwbKIpcInu0q5jZ7uBRg8MJRk5tPpn6lRfafDNX QTyNUe0LtlyvLGMa31fIP7zpXcSbr0WZ4qNaJLS6qVY9z2+q/0lYvvCo//S4rek3+7q49As6+ehD Qh6J2ITLE/HZu+GJYLiMKFasFB2cCudx688O3T2plqFIvTz3r7UNIkzAEYHsVjv206LiW7eyBCJS lYCTaeiOTGXxkQMtcHQC6otnFSlpUgK7199QalVGv6CjKGF/cNDDoqosIapHziicBkV2v4IYJ7TV rrTLUOZr9EyGcTDppt8WhuDY/0Dd+9BCiH+jMzouXB5BEYFjzhhxayvspoq3MVw6akfgw3lZ1iAa r/JqmKpyvFdK0kuduxD8sExB5e0dPV4onZzMv7NR2qdH5YRTAgMBAAGjQjBAMB0GA1UdDgQWBBS7 r34CPfqm8TyEjq3uOJjs2TIy1DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkq hkiG9w0BAQwFAAOCAgEACvHVRoS3rlG7bLJNQRQAk0ycy+XAVM+gJY4C+f2wog31IJg8Ey2sVqKw 1n4Rkukuup4umnKxvRlEbGE1opq0FhJpWozh1z6kGugvA/SuYR0QGyqki3rF/gWm4cDWyP6ero8r uj2Z+NhzCVhGbqac9Ncn05XaN4NyHNNz4KJHmQM4XdVJeQApHMfsmyAcByRpV3iyOfw6hKC1nHyN vy6TYie3OdoXGK69PAlo/4SbPNXWCwPjV54U99HrT8i9hyO3tklDeYVcuuuSC6HG6GioTBaxGpkK 6FMskruhCRh1DGWoe8sjtxrCKIXDG//QK2LvpHsJkZhnjBQBzWgGamMhdQOAiIpugcaF8qmkLef0 pSQQR4PKzfSNeVixBpvnGirZnQHXlH3tA0rK8NvoqQE+9VaZyR6OST275Qm54E9Jkj0WgkDMzFnG 5jrtEi5pPGyVsf2qHXt/hr4eDjJG+/sTj3V/TItLRmP+ADRAcMHDuaHdpnDiBLNBvOmAkepknHrh IgOpnG5vDmVPbIeHXvNuoPl1pZtA6FOyJ51KucB3IY3/h/LevIzvF9+3SQvR8m4wCxoOTnbtEfz1 6Vayfb/HbQqTjKXQwLYdvjpOlKLXbmwLwop8+iDzxOTlzQ2oy5GSsXyF7LUUaWYOgufNzsgtplF/ IcE1U4UGSl2frbsbX3QwggSvMIIDl6ADAgECAhEA4CPLFRKDU4mtYW56VGdrITANBgkqhkiG9w0B AQsFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRy dXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBS b290MB4XDTE0MTIyMjAwMDAwMFoXDTIwMDUzMDEwNDgzOFowgZsxCzAJBgNVBAYTAkdCMRswGQYD VQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9E TyBDQSBMaW1pdGVkMUEwPwYDVQQDEzhDT01PRE8gU0hBLTI1NiBDbGllbnQgQXV0aGVudGljYXRp b24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAImx Ddp6UxlOcFIdvFamBia3uEngludRq/HwWhNJFaO0jBtgvHpRQqd5jKQi3xdhTpHVdiMKFNNKAn+2 HQmAbqUEPdm6uxb+oYepLkNSQxZ8rzJQyKZPWukI2M+TJZx7iOgwZOak+FaA/SokFDMXmaxE5WmL o0YGS8Iz1OlAnwawsayTQLm1CJM6nCpToxDbPSBhPFUDjtlOdiUCISn6o3xxdk/u4V+B6ftUgNvD ezVSt4TeIj0sMC0xf1m9UjewM2ktQ+v61qXxl3dnUYzZ7ifrvKUHOHaMpKk4/9+M9QOsSb7K93OZ Og8yq5yVOhM9DkY6V3RhUL7GQD/L5OKfoiECAwEAAaOCARcwggETMB8GA1UdIwQYMBaAFK29mHo0 tCb3+sQmVO8DveAky1QaMB0GA1UdDgQWBBSSYWuC4aKgqk/sZ/HCo/e0gADB7DAOBgNVHQ8BAf8E BAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQw EQYDVR0gBAowCDAGBgRVHSAAMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0 LmNvbS9BZGRUcnVzdEV4dGVybmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUH MAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQELBQADggEBABsqbqxVwTqr iMXY7c1V86prYSvACRAjmQ/FZmpvsfW0tXdeDwJhAN99Bf4Ss6SAgAD8+x1banICCkG8BbrBWNUm wurVTYT7/oKYz1gb4yJjnFL4uwU2q31Ypd6rO2Pl2tVz7+zg+3vio//wQiOcyraNTT7kSxgDsqgt 1Ni7QkuQaYUQ26Y3NOh74AEQpZzKOsefT4g0bopl0BqKu6ncyso20fT8wmQpNa/WsadxEdIDQ7GP PprsnjJT9HaSyoY0B7ksyuYcStiZDcGG4pCS+1pCaiMhEOllx/XVu37qjIUgAmLq0ToHLFnFmTPy OInltukWeh95FPZKEBom+nyK+5swggYVMIIE/aADAgECAhBUK7v3iZFOwcXku0+rFipmMA0GCSqG SIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAw DgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3Rp Z28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTI0MTIx NTAwMDAwMFoXDTI2MTIxNTIzNTk1OVowIjEgMB4GCSqGSIb3DQEJARYRZHdtd0BhbWF6b24uY28u dWswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDYY7Ok+LSdJXMOPurGsBJ9haMJobp1 AbJ0lXHAfmgO7N2XfT2VeOglOqYQJQlqSpNchVXA9UZ3OLsde6OC21IBV4iqzkUtI4hf+TmtK1xt xSEhtV3Y7fKDyiKvvWdbNnuyKYuVlo+ABv8ZZB/2DDHLS/TvAgkR0q4YgoWxP4Eee8fTwJ7eWnmW dmFs2hjjnnHmmXvrurxwhyE0ZpJ0gJwF/2jaDSTbEAhnH6xPN8vYh5j/ARa0kWamowSpSqvLciXe RZ0sDx95ElHEJRzsIiHwkRVz+K6V0me5yjhGa90lx9OgA2PYGba0qcAW7sylgzxljEbkZ8/KII/2 Og3lONswf2QCIuW9Ac1n+LtKwREA+cbaTgsWB3Np10GhUlrt+pD9SWjahJROdTkPdhMlSn1tzeqm XCoga1Yo12NhLUfv+VvYsURZxLOJyHm/eEn/dlDBHhvXsNslb3GF1zT2onBp65BEjQtff2vGF8UB GX65gXgD0/b4kCYZ9zvrA+KT9ErN0o1WXOhDu736D9O27dp/WBNPF0j5MXMm9Sf+Lf/gLJJCnmBQ RnaY4MXfoixcY0sAcrWbod/uw7h1H4PO+lgOOInkA64R0o7r7gGdVm/FlLK6c63C6GI6hZm/23+v 8sqMZbd9ZnYDwvhS3PmLtQUMFwtyTG672xQVU7Z+V9hCgwIDAQABo4IB0DCCAcwwHwYDVR0jBBgw FoAUCcDy/AvalNtf/ivfqJlCz8ngrQAwHQYDVR0OBBYEFFr7QNV7ElfMY4HxUC/w1EzSGybuMA4G A1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMEMFAGA1UdIARJ MEcwOgYMKwYBBAGyMQECAQoCMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc2VjdGlnby5jb20vU01J TUVDUFMwCQYHZ4EMAQUBAzBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLnNlY3RpZ28uY29t L1NlY3RpZ29SU0FDbGllbnRBdXRoZW50aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3JsMIGKBggr BgEFBQcBAQR+MHwwVQYIKwYBBQUHMAKGSWh0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1JT QUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcnQwIwYIKwYBBQUHMAGGF2h0 dHA6Ly9vY3NwLnNlY3RpZ28uY29tMBwGA1UdEQQVMBOBEWR3bXdAYW1hem9uLmNvLnVrMA0GCSqG SIb3DQEBCwUAA4IBAQBA+k/q3z9lz3S3x6AneZ9YhiHGGrlnzx0XWTdk8O2uzRFyJJtsmTYszkqa dzazIljgTdd14Kp2C7KnacSYW48CnMyl+dP6n4YZDh7a0NBkZLnMmyuOOwGrpfNHGU/E91hvVPXY ZdwrfzLsigVkINzGJW1E+ruJAvT5PK3fnEdeLbWEVFgyk0tgay+3vI6TZrQqBGpA5DGODK6aDMDN X+ADVamfHJw57cF6uaK5mSJLDdg6sbCi5qxclQDjYakkk+9iJgXyFVoRUUwhfbU3COcBP9EpJduR WZkrAQdi1IHnICuzGcsPQ6P29LGEvvGJgP7o1AqjW9HzyQRPwfbwaJobMYIDvjCCA7oCAQEwgasw gZYxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1Nh bGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE+MDwGA1UEAxM1U2VjdGlnbyBSU0EgQ2xp ZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEFQru/eJkU7BxeS7T6sWKmYw DQYJYIZIAWUDBAIBBQCggeQwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUx DxcNMjYwODA1MTk1NjE0WjAvBgkqhkiG9w0BCQQxIgQgszjCI0j4ZhupBsCGW5UP2NGhYFwa34TJ 84ZbETBGw+4weQYJKoZIhvcNAQkPMWwwajALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCG SAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4D AgcwDQYIKoZIhvcNAwICASgwDQYJKoZIhvcNAQEBBQAEggIAfl2+jIwsY1Yxq051L9aVGF7iGJjz nke9cztgg7tMxqAwwr6MLii0ffNEEJbiay0jN/EtIpbrk/TwaMzo2igdMYHjw1Lc2PpJtPMZfHGM ufkVSns+BCndp0CWhGEtniIgaoRzyyQBuHQJDnwRoziRwm1BgM0V0JMmXL118GcyLTcSoi2fnQ6q NGpUUhHodf3D/BS9u7IzFHnBbc9lqNItOeHhySX7ipENNFXFj8qvYLm0whY7piXhYE2oMFLLGGu9 pP8c1gplSiPzV5j2FZt84lPlZTLDK6x8Uei+MCLcerzueO+MeU2jE1dB2ds15Na50mEGomWKhP+A k2zzNH5IIebH6qpwRW822SFsdsndChsFJLQ/pCaS/HYUJUL411gBHq4a+PkLTLKOGDjK0tzu0AdS knSvoK+C6zEebd+AtekvJOiGAi3cxP8DRyoct0vF4hBuH95xnSM2OG7+SlVZfGMiQXSm//39wlEY xNxAiEU8rwnyYKrAPyNM5e2bzDF47rXVhrSNAHMX+Mj+wG53cAf5PePU7+eC6sdz8fx2iOYiPGKz 7NZszvPGPUCSHTpyj8wNJoous29yuuZhYjwaOiDdMNjULBCOsiOt2g4zMc2peMyf9di2YwTHy1Se 5/jUM2Wt8WUQtrZrB9S6Kqjdz437KNwlzFi5IJpv7l2oYTc= ------3D7B6D40694C13434FF46B489C2A9DE7-- --===============3918090059069971927== Content-Type: multipart/alternative; boundary="===============7568282101387364103==" MIME-Version: 1.0 Content-Disposition: inline --===============7568282101387364103== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Amazon Development Centre (London) Ltd. Registered in England and Wales wit= h registration number 04543232 with its registered office at 1 Principal Pl= ace, Worship Street, London EC2A 2FA, United Kingdom. --===============7568282101387364103== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable


Amazon Development Centre (London) Ltd.Registered in England an= d Wales with registration number 04543232 with its registered office at 1 P= rincipal Place, Worship Street, London EC2A 2FA, United Kingdom.


--===============7568282101387364103==-- --===============3918090059069971927==-- From nobody Tue Aug 25 14:34:36 2026 Received: from fra-out-014.esa.eu-central-1.outbound.mail-perimeter.amazon.com (fra-out-014.esa.eu-central-1.outbound.mail-perimeter.amazon.com [18.199.210.3]) (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 D8E1C42466C; Wed, 5 Aug 2026 19:56:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=18.199.210.3 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785959785; cv=fail; b=J/9lKtElgP5bro3LqXCMd9xdCxp1mAJr+Zyg0v1sGqHhSjXLBOEJd/QCquhUqIFzNIxoz2N0tgA3DEdcEpr2bu4pRlxyfG/JPKbYXBQ2AGsS6fo8OlpY40MwwFI4Db2QjSEBy4ZWF0FGvvWYSdvItB6N3oCfzl1ui5yjc89pstg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785959785; c=relaxed/simple; bh=7zbTX+kt+CAwnwZ7Nm/1hWdWB+qGFkucogyOKZEcV30=; h=Content-Type:MIME-Version:From:To:CC:Subject:Date:Message-ID: References:In-Reply-To:MIME-Version; b=OGfuT6H1iFVsJxfxsDt4s6NcbixzmCjJVLBPiPQRh0toSWpK/PZPbABvatEbMJDxdo2YKwaNPIYAxnoiUbvLUH6xac01NAvR7fN/0N7aQv2Qy++OlmJ24bKLd5e9hKm47t7ss2AxrOxECzny1ng9ujZAsyFXxgfD01+9EIUtAnI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.co.uk; spf=pass smtp.mailfrom=amazon.co.uk; dkim=pass (2048-bit key) header.d=amazon.co.uk header.i=@amazon.co.uk header.b=mn+2oNrZ; arc=fail smtp.client-ip=18.199.210.3 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amazon.co.uk Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=amazon.co.uk Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=amazon.co.uk header.i=@amazon.co.uk header.b="mn+2oNrZ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.co.uk; i=@amazon.co.uk; q=dns/txt; s=amazoncorp2; t=1785959783; x=1817495783; h=from:to:cc:subject:date:message-id:references: in-reply-to; bh=qBdxh1pw7N9rXrn+2FJuGWHK1mABD52a4L8iwmmjk+I=; b=mn+2oNrZEDX5l1EBYj3lS/6Gae60FUs5e7/22ARS6fOgwaCX24q74/C/ BWnGkhbpffGp2mMpu5hU1RgmSmXbQGhgOKYwzuIG9LGHDZX0EcP12GwBu DUDBWbQ8HayZTI/0OG9D1ZJjF3vmIVMlXMf6esK3fTGJoq9rA7UwBTI1y h+AyISElimO+JM9S82kfVpWNEMWd9zryNCXIT1ywRhqtUnTf+eMulICe0 jkHWNcwv55FwqJftHRAM2RTuY/l8h5/y9+pbLnD7VmsGK0VCLCseXyke2 TNF3h5dw2H1r8v8/Ek9uIdY5eTA4eSvwQwsqPaPojA0de0v6YPvgOZucC Q==; X-CSE-ConnectionGUID: vCN0vWG2QcWpr1gCASpMaA== X-CSE-MsgGUID: 41IB7jx2Tv2BjH9Sii9cHw== X-Amazon-filename: smime.p7s X-IronPort-AV: E=Sophos;i="6.25,207,1779148800"; d="p7s'346?scan'346,208,346";a="17320367" Content-Type: multipart/mixed; boundary="===============0649898463130662077==" Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Received: from ip-10-6-6-97.eu-central-1.compute.internal (HELO smtpout.naws.eu-central-1.prod.farcaster.email.amazon.dev) ([10.6.6.97]) by internal-fra-out-014.esa.eu-central-1.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Aug 2026 19:56:19 +0000 Received: from EX19MTAEUC001.ant.amazon.com [54.240.197.233:28260] by smtpin.naws.eu-central-1.prod.farcaster.email.amazon.dev [10.0.19.18:2525] with esmtp (Farcaster) id d0f1916c-2317-4271-8878-aaf0ce637e08; Wed, 5 Aug 2026 19:56:19 +0000 (UTC) X-Farcaster-Flow-ID: d0f1916c-2317-4271-8878-aaf0ce637e08 Received: from EX19EXOEUB001.ant.amazon.com (10.252.51.80) by EX19MTAEUC001.ant.amazon.com (10.252.51.193) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45; Wed, 5 Aug 2026 19:56:18 +0000 Received: from EX19EXOEUC001.ant.amazon.com (10.252.51.133) by EX19EXOEUB001.ant.amazon.com (10.252.51.80) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45; Wed, 5 Aug 2026 19:56:18 +0000 Received: from LO3P265CU004.outbound.protection.outlook.com (10.252.51.94) by EX19EXOEUC001.ant.amazon.com (10.252.51.133) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.45 via Frontend Transport; Wed, 5 Aug 2026 19:56:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=NDAFRbQyIJuSuMKV6lNP8s3rpQtTUfo5VnCW9RKWmdGDDiZB/WJ/wRUdWYts3fcivBTmPWdLpn2gP5+kv8EUOr3XiLHyl5+lGZ4dpUPb2CCERFJWXhK1a7sPhjPqaoyu9oFet/JWeOnIM4TNOK6MH+CoDJ+Q6z8tmF6Wo2b5Ya8wkCitZVP2omFQGh9D/KW+VZW960YXYhIhI87Ox0vOd9J9Uz80MLbn92xQxXyLvTTY0lz/gfC9TO/hEULvvoevCc44lm6Cp6tNVS8XZmVzVG+5CCJbHg+e2XWwlhn511NIh21EHH3od4lK3XJLHfVA6eFz5P2VluFo0dgqmVSwtg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:MIME-Version; bh=wFIqWldwCXvdubJqOJhWZvw9UdVCcHVBifBgHlKXnCU=; b=c2OrS9TOsNr4OZZKWBUxQfEn0yj7MVnQnMbdauen6r44bcrj6HMimsrXNFvWVdQjdLBEpIXoBmq9HFcaCvx0Ur0LERSXx/CI+cSvcEFwsqXaMjV+xblCWr0fflsVZS2Us1lVtoWPK08sboeUN2mmI6oqwAY8UwbZMu4MDgOm9dFOX262N3yIkAXwsbOx5CKPQUuxiDs6S/evdA8zr5mbxoEulYf2SDhgwxKS9NJxGs0T8Ylr+NRBHZacZTXPKF5FUtwcYxbOvbg1+qQcWU7JOdJNTr3RRsg/LhdscEQJFCS0JuL3IBHT39Q2D+EoKLW+D6+lGqpP7nS+syT/FGWyKg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amazon.co.uk; dmarc=pass action=none header.from=amazon.co.uk; dkim=pass header.d=amazon.co.uk; arc=none Received: from LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:4b4::12) by LO0P123MB7404.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:334::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.292.19; Wed, 5 Aug 2026 19:56:14 +0000 Received: from LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM ([fe80::c7e3:476c:6170:8f6]) by LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM ([fe80::c7e3:476c:6170:8f6%6]) with mapi id 15.21.0292.018; Wed, 5 Aug 2026 19:56:14 +0000 From: "Woodhouse, David" To: "seanjc@google.com" , "pbonzini@redhat.com" , "akpm@linux-foundation.org" CC: "bigeasy@linutronix.de" , "peterz@infradead.org" , "mingo@redhat.com" , "will@kernel.org" , "longman@redhat.com" , "boqun@kernel.org" , "tglx@kernel.org" , "paul@xen.org" , "Stollmaier, Carsten" , "dwmw2@infradead.org" , "Woodhouse, David" , "daniel.vetter@ffwll.ch" , "mhocko@suse.com" , "jgg@nvidia.com" , "christian.koenig@amd.com" , "jglisse@redhat.com" , "david@kernel.org" , "ljs@kernel.org" , "liam@infradead.org" , "vbabka@kernel.org" , "rppt@kernel.org" , "surenb@google.com" , "bp@alien8.de" , "dave.hansen@linux.intel.com" , "hpa@zytor.com" , "x86@kernel.org" , "kvm@vger.kernel.org" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" Subject: [PATCH v3 7/7] KVM: x86: Use gfn_to_pfn_cache for steal time / preempted status Thread-Topic: [PATCH v3 7/7] KVM: x86: Use gfn_to_pfn_cache for steal time / preempted status Thread-Index: AQHdJRR4KE7nFGkgtEqkDJuPyCIlUQ== Date: Wed, 5 Aug 2026 19:56:14 +0000 Message-ID: <20260805195528.3853473-8-dwmw@amazon.co.uk> References: <20260805195528.3853473-1-dwmw@amazon.co.uk> In-Reply-To: <20260805195528.3853473-1-dwmw@amazon.co.uk> Accept-Language: en-GB, en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amazon.co.uk; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: LOZP123MB8516:EE_|LO0P123MB7404:EE_ x-ms-office365-filtering-correlation-id: 57097e01-22a9-45a6-422d-08def32b9af7 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|6049299003|1800799024|376014|7416014|23010399003|22082099003|18002099003|11063799006|56012099006|4053099003|38070700021|10067099003; x-microsoft-antispam-message-info: u5hWyI3B1q8M3LserOBBXnV6xZD/A1bljA/FHVodhuzqtSOQJ1IJE4D/P8rsOT01QDqxBnV0jkuB91kLFH2RkIhdsGjUYJKEtJpf/RIiy/HWA7nTFvFBbCDvneJ7G4LK9LvwmnlucJPFPpTvhKcOnMWtpMLB67OhVR3q8mDkzPVzhJTlIBPSJgoQIbh+qzBu+wWMENq3Fy6Z2MoXPPE89vzr8qx5b9u9X64y6BZidbtSGM56453i77LUfr/nBTk7AzUa3JY7gxKls8R8ZYZdYIFOn4l1CRflWq/6z1DHndsP7g96erUdHfeT2S/IB6p1sLgyyhYnJnay3y5uLq7TNHxAwBt35v5AKRyjaUctL0F8QvXj06iO2S67YoUvEftxGhb9OijXQdr4uiiW48JjWP4zb6bz+QaCSw1UJiB3TsGE2L7yr4dggvizRKM2Sdu6dsYm9HCQj22dKPwBZyuK7+dsChu05Nm8F6Yp5+ZRwWLHc/EKRItrRdmCChfbS33ivMI81EJ78VcPPjLreFDHZlaywtxZJfuNxA6mh3wNbiH1QgW5dN5nWWVsWDXuau73FzWQc/dFwVkK787q/IzORL3VYwSPC+ttJ7vPhXLqX6CRwOWM633KOX4m58R5vXbIElDpxWur5mDK2mbgKCMaKCfEZ8OgkD0idDda/zRruzYW0Yjv6dynNkdpYFJ8Eg6gm3FsglNPX979LeNmNb/ftA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(6049299003)(1800799024)(376014)(7416014)(23010399003)(22082099003)(18002099003)(11063799006)(56012099006)(4053099003)(38070700021)(10067099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?a2VjcmhSeHoxVmVKeXJuSGRyb0dhV2RaRW9FOEpLTWRsSUc3Yk11NWVQQjBU?= =?utf-8?B?eHhoNWw2YUhYMmc4eExYUTBmQWlWRlBaRXMwNHRpTC9QbnRtaFY0OGFQUEFu?= =?utf-8?B?WjJEZHBzbkVmeUNUNC80czVXeUI0MVVBOTFaczNTaURERjlWQTlCckwvTVl1?= =?utf-8?B?R0tpdEZLK0dnQkdXK1V3VHlrSmpKQ0Q1bEpsRnRpdWVCMm1hTGtHZ2Zjako5?= =?utf-8?B?OWl1WnBQL0xMVXZmYXZtcFN0ZEFqMFI5dGQ5WnhTNmppWjdXQ2hONzhFM09U?= =?utf-8?B?SEwwNFQwRGUrV1RnYTdJUnJmbDdpTXROSXNkSWtzMFVOS3cyVXNyeHlGQ3pW?= =?utf-8?B?SlpzUmpWZm0wVFBsMzh6enRtN1pabzAwek9hUG4xTmxha0c2YzEyTlFIMFFI?= =?utf-8?B?SnFnOU1oSlNXWFFSRjROK2ZHQlN6ZXlyRVZIR1VKVmFDdkxUYUtOU0w5R0Jk?= =?utf-8?B?K3ByWmV6YzZLbHZjb0FoSVJnM3ZMWXgwa3hGT2NGc1U3MnVrTU1qRjFnRkJB?= =?utf-8?B?dWpxT3IxU0dDd0xpQ3VjUnR5Syt5QnBIVldqcGNhSUNJZXJvKyttdHh0NnE5?= =?utf-8?B?dmZhL3NSNE9nTFFsSEw5d3JGR3JhNmpkUUpaZ0Rmc0hGczViWW1oNTVMdkg0?= =?utf-8?B?VHBWak9WTTJVYUJDQWRqbTVuOS90bFdRbGs5TDMycitlZVNzampQVW5zT205?= =?utf-8?B?RlIyWHBPS1l3dDRCVmdJVmJPOXp2OWZ1OTJVYzdsYmo3bWgzVTBtelMzTzB6?= =?utf-8?B?ZGtQRnAwaGRyVDZRb3k5ejJHbW8ybVdWNnR1OFpia1lMejh0ZmxBaWJuRVhI?= =?utf-8?B?dHpETXAvVzJFdHFEbTdHb2FNMWNONlpBLzF0cC84VDhpK3puNjU3SkRvMFBo?= =?utf-8?B?MHJWMnIyOWJlUVArSDJScVN4Mm9kOEtPWEM1YVh0ejVPdU5wYTZUZ2NZT0du?= =?utf-8?B?REMvamdjVVVvbVNCQ1NpVklaMjBONWZodDlxb21HSmZQQkVnVkdlRHBYQkx6?= =?utf-8?B?djNJQzdsVkNwNDdwT0JjTzk0YytvWW9nNUZDbHdKalRwYlB3dW12NGErcVF4?= =?utf-8?B?NndZVEJ5MnJ2a1lkS3NML1lOcHFXRi9jRi9WdGJUblZOUjFUaEQrbjJGeGxC?= =?utf-8?B?WkJGWkZ4S1hBUVhSN21zUS80bEgvVUtjK3pNbW1kaHdYVkI0TldXSkZ0Nk45?= =?utf-8?B?c0czSkVGU0dzWVFFZjBibUtaNlA5UUl6QnBUcndZWGhCSEtmcHBDbmJueFFS?= =?utf-8?B?dWRkdzdjN0J0aC9JSHRFb3R1SHBBVm5vcUp3N25vUzJLZFVGSjZ0Zm5GOXov?= =?utf-8?B?TTBrazdUaUpBMXRJWkUwakZNa3FHVGowc0p3NTIyTmZieWxiV3hvYjMyekcr?= =?utf-8?B?eTQrdi9xZkYzaDFzVUlJNnhhb2pKSmh4d21CY2NFNWlITmNLRGxaT3h5SlUw?= =?utf-8?B?Nm53UlpaZmE1MjR0ZTZyc3IwYjY1UlB5ZkNqa21hbllwUXRUbGlZWTBHTnRQ?= =?utf-8?B?REY5ZkNoMHlxSnB4L2U0bFlBVXRScjExY1J0WDAwSTlQMTVBQTh1aUY1MGRl?= =?utf-8?B?NzBpQ1R5S09qZVlXT2NHOElDb2RhL3JvVzRtUERRdG5iOWlaTjdIVVRHWllB?= =?utf-8?B?V3VxZGJ1MDBkTjYvNTVNZWtISDJqSHowcHFmWnN3ZFVITHBpaTIxbmJRaVR6?= =?utf-8?B?aGxxTFR3eDg5NkFmdVNrNUNzM0VNc2J6bzFvWDhwenhSaFR5a1dnbGtzU0h6?= =?utf-8?B?QnNFZ2VkMkN0Y0N5c25HM0REd2xKNWVhTTFxaHc5KzE2aWhSNDJEVEw0WW9H?= =?utf-8?B?Ym1RdGhJVVR0YjRHb0I5cmgwSnJVVTRuWjkzZXFxYjNMNENaRXpnQXZuU3hC?= =?utf-8?B?RkxRSllSbE4zTWZuQU5oOExjc3FPNmRlWEFVekR1WFFSTVZZV0ZXQjIxYWlP?= =?utf-8?B?aUZXcE45L0p5Y2hRNFpFeXJLUllOYnFieVc1T3oxZWdobmNiQmpRMEM3TXRS?= =?utf-8?B?d3l5NGF3NWxrcGcvS0w1blQvc0JXQnJaSFdVTThDc0hZRkNwS0Y3eE00Yzds?= =?utf-8?B?MTdneFZKVm10Z0cxWUZyQVMrWTMzTUFYZ09HYnFsZmpBcXVyQVJiOUVXZHMy?= =?utf-8?B?b09ZUzBZam5lSnRFblI3UkVLajVWU1FlV3JCYjdXNlNJTWtaZWpmK1hPQzNF?= =?utf-8?B?OHBsS1BoNEthL2dnU1FJYUdwcm5qa3RhZ21pZFhVZGhYTjZBRVg5TmlaNEtU?= =?utf-8?B?dVVrL3d5dDJhWG0ydXlXSHRyanlZbGtsQnErYWdqVFAzNWZ5MkpMWFF6UVM5?= =?utf-8?Q?1zCV3KBfun6kRheRsc?= MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: f0fwnPFC+d2NyerfFy0NkfE335tnMIEFJ3k5YEnaHsaVH7mb1f8XBhxZI7LZgwLIV0LxwIw8yqUYIYfE/c+/PjVnmjr3hL7umAOB6OeNlTgYQFCuKf5lXBmyVHm6EUo9jaSsVsMaBWBm9BLVUc1CcD5azsl//+XfRviGsXEVDy/0huFlS8mU3+u/af/UR/6WKEw5qOm0n9jVFu4Hgr5jDvCiEWXllx0nJqELdbbIQleORwKAUit++NfVjbO/Js1UhebsMrufDGt0JqmXSk3j0cZp5lJeY7BhAumOG8sPeTuuYw/nbiur/qB6CloYkvkYgKVRxMdd643kgkXBXuHTFg== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: LOZP123MB8516.GBRP123.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 57097e01-22a9-45a6-422d-08def32b9af7 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Aug 2026 19:56:14.1647 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 5280104a-472d-4538-9ccf-1e1d0efe8b1b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: aofPNiqzUNhAsLUdvBoDzra0rF6hJ3iMitR1QF3+wbYKj8zu43UQgF3Q13MbljPZnseYcgQ8e00GI9l6TpcD3w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO0P123MB7404 X-OriginatorOrg: amazon.co.uk --===============0649898463130662077== Content-Language: en-US Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha-256; boundary="----BF4729FFF1CFF81C347E9D8664D1565B" ------BF4729FFF1CFF81C347E9D8664D1565B MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RnJvbTogQ2Fyc3RlbiBTdG9sbG1haWVyIDxzdG9sbG1jQGFtYXpvbi5jb20+CgpUaGlzIGxhcmdl bHkgcmV2ZXJ0cyBjb21taXQgN2UyMTc1ZWJkNjk1ICgiS1ZNOiB4ODY6IEZpeCByZWNvcmRpbmcg b2YKZ3Vlc3Qgc3RlYWwgdGltZSAvIHByZWVtcHRlZCBzdGF0dXMiKSwgd2hpY2ggZHJvcHBlZCB0 aGUgdXNlIG9mIHRoZQpnZm5fdG9fcGZuX2NhY2hlIGJlY2F1c2UgaXQgd2FzIG5vdCBpbnRlZ3Jh dGVkIHdpdGggdGhlIE1NVSBub3RpZmllcnMKYXQgdGhlIHRpbWUuIFRoYXQgc2hvcnRjb21pbmcg aGFzIGxvbmcgc2luY2UgYmVlbiBhZGRyZXNzZWQsIG1ha2luZwp0aGUgR1BDIHdvcmsgY29ycmVj dGx5IGZvciB0aGlzIHVzZSBjYXNlLgoKQXNpZGUgZnJvbSBjbGVhbmluZyB1cCB0aGUgbGFzdCBv cGVuLWNvZGVkIGFzc2VtYmxlciBhY2Nlc3MgdG8gdXNlcgphZGRyZXNzZXMgYW5kIGFzc29jaWF0 ZWQgZXhwbGljaXQgYXNtIGV4Y2VwdGlvbiBmaXh1cHMsIG1vdmluZyBiYWNrCnRvIHRoZSBub3ct ZnVuY3Rpb25hbCBHUEMgYWxzbyByZXNvbHZlcyBhbiBpc3N1ZSB3aXRoIGNvbnRlbnRpb24gb24K dGhlIG1tYXBfbG9jayB3aXRoIHVzZXJmYXVsdGZkLiBUaGUgY29udGVudGlvbiBpc3N1ZSBpcyBh cyBmb2xsb3dzOgoKT24gdmNwdV9ydW4sIGJlZm9yZSBlbnRlcmluZyB0aGUgZ3Vlc3QsIHRoZSB1 cGRhdGUgb2YgdGhlIHN0ZWFsIHRpbWUKaW5mb3JtYXRpb24gY2F1c2VzIGEgcGFnZS1mYXVsdCBp ZiB0aGUgcGFnZSBpcyBub3QgcHJlc2VudC4gSW4gb3VyCnNjZW5hcmlvLCB0aGlzIGdldHMgaGFu ZGxlZCBieSBkb191c2VyX2FkZHJfZmF1bHQoKSBhbmQgc3VjY2Vzc2l2ZWx5CmhhbmRsZV91c2Vy ZmF1bHQoKSBiZWNhdXNlIHRoZSByZWdpb24gaXMgcmVnaXN0ZXJlZCB0byB0aGF0LgoKU2luY2Ug aGFuZGxlX3VzZXJmYXVsdCgpIHVzZXMgVEFTS19JTlRFUlJVUFRJQkxFLCBpdCBpcyBpbnRlcnJ1 cHRpYmxlCmJ5IHNpZ25hbHMuIEJ1dCBkb191c2VyX2FkZHJfZmF1bHQoKSB0aGVuIGJ1c3ktcmV0 cmllcyBpZiB0aGUgcGVuZGluZwpzaWduYWwgaXMgbm9uLWZhdGFsLCB3aGljaCBsZWFkcyB0byBo ZWF2eSBjb250ZW50aW9uIG9mIHRoZSBtbWFwX2xvY2suCgpCeSByZXN0b3JpbmcgdGhlIHVzZSBv ZiBHUEMgZm9yIGFjY2Vzc2luZyB0aGUgZ3Vlc3Qgc3RlYWwgdGltZSwgdGhlCmNvbnRlbnRpb24g aXMgYXZvaWRlZCBhbmQgcmVmcmVzaGluZyB0aGUgR1BDIGhhcHBlbnMgd2hlbiB0aGUgdkNQVSBp cwpuZXh0IHNjaGVkdWxlZC4KClNpbmNlIHRoZSBnZm5fdG9fcGZuX2NhY2hlIGdpdmVzIGEga2Vy bmVsIG1hcHBpbmcgcmF0aGVyIHRoYW4gYQp1c2Vyc3BhY2UgSFZBLCBhY2Nlc3NlcyBhcmUgbm93 IHBsYWluIEMgaW5zdGVhZCBvZiB1bnNhZmVfcHV0X3VzZXIoKQpldCBhbC4gVXNlIFJFQURfT05D RSgpL1dSSVRFX09OQ0UoKSB0byBwcmV2ZW50IHRoZSBjb21waWxlciBmcm9tCnJlb3JkZXJpbmcg b3IgdGVhcmluZyB0aGUgYWNjZXNzZXMsIGFuZCBhZGQgYW4gc21wX3dtYigpIGJlZm9yZSB0aGUK ZmluYWwgdmVyc2lvbiBpbmNyZW1lbnQgdG8gZW5zdXJlIHRoZSBkYXRhIHdyaXRlcyBhcmUgb3Jk ZXJlZCBiZWZvcmUKdGhlIHNlcWNvdW50IHVwZGF0ZSDigJQgdGhlIG9sZCB1bnNhZmVfcHV0X3Vz ZXIoKSBpbmxpbmUgYXNzZW1ibHkgYWN0ZWQKYXMgYW4gaW1wbGljaXQgY29tcGlsZXIgYmFycmll ci4KCkluIGt2bV9zdGVhbF90aW1lX3NldF9wcmVlbXB0ZWQoKSwgd2hpY2ggaXMgY2FsbGVkIGZy b20gdGhlIHNjaGVkdWxlcgpwYXRoIHZpYSBrdm1fc2NoZWRfb3V0KCksIGp1c3QgdGFrZSB0aGUg UkNVIHJlYWQgbG9jayBhbmQgYmFpbCBpZiB0aGUKY2FjaGUgaXMgbm90IGN1cnJlbnRseSB2YWxp ZC4gVGhlIGNhY2hlIGNhbm5vdCBiZSByZWZyZXNoZWQgZnJvbSB0aGF0CmNvbnRleHQsIGJ1dCBz ZXR0aW5nIHRoZSBwcmVlbXB0ZWQgZmxhZyBpcyBiZXN0LWVmZm9ydCBhbnl3YXkg4oCUIHRoZQpv bGQgSFZBLWJhc2VkIGNvZGUgdXNlZCBjb3B5X3RvX3VzZXJfbm9mYXVsdCgpLCB3aGljaCBjb3Vs ZCBlcXVhbGx5CnNpbGVudGx5IGZhaWwg4oCUIGFuZCBrdm1fYXJjaF92Y3B1X2xvYWQoKSB1bmNv bmRpdGlvbmFsbHkgcmFpc2VzCktWTV9SRVFfU1RFQUxfVVBEQVRFLCBzbyByZWNvcmRfc3RlYWxf dGltZSgpIHdpbGwgcmVmcmVzaCB0aGUgY2FjaGUKZnJvbSB0YXNrIGNvbnRleHQgYmVmb3JlIHRo ZSB2Q1BVIG5leHQgZW50ZXJzIHRoZSBndWVzdC4KCltkd213MjogUG9ydCB0byBSQ1UtcHJvdGVj dGVkIEdQQy4gVGhlIG9yaWdpbmFsIHdhcyB3cml0dGVuIGFnYWluc3QgYQogICAgICAgIGdwYy0+ bG9jayByd2xvY2sgYW5kIG5lZWRlZCBhIHJlYWRfdHJ5bG9jaygpIGRhbmNlIHRvIGJlIHNhZmUK ICAgICAgICBmcm9tIHRoZSBzY2hlZHVsZXIgcGF0aCBvbiBQUkVFTVBUX1JUOyByY3VfcmVhZF9s b2NrKCkgaXMKICAgICAgICB1bmNvbmRpdGlvbmFsbHkgc2FmZSB0aGVyZSwgc28gYWxsIG9mIHRo YXQgZ29lcyBhd2F5Ll0KClNpZ25lZC1vZmYtYnk6IENhcnN0ZW4gU3RvbGxtYWllciA8c3RvbGxt Y0BhbWF6b24uY29tPgpDby1kZXZlbG9wZWQtYnk6IERhdmlkIFdvb2Rob3VzZSA8ZHdtd0BhbWF6 b24uY28udWs+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFdvb2Rob3VzZSA8ZHdtd0BhbWF6b24uY28u dWs+ClNpZ25lZC1vZmYtYnk6IFNlYW4gQ2hyaXN0b3BoZXJzb24gPHNlYW5qY0Bnb29nbGUuY29t PgpTaWduZWQtb2ZmLWJ5OiBEYXZpZCBXb29kaG91c2UgPGR3bXdAYW1hem9uLmNvLnVrPgpBc3Np c3RlZC1ieTogQ2xhdWRlOmNsYXVkZS1teXRob3MtNQotLS0KIGFyY2gveDg2L2luY2x1ZGUvYXNt L2t2bV9ob3N0LmggfCAgIDIgKy0KIGFyY2gveDg2L2t2bS9tc3JzLmMgICAgICAgICAgICAgfCAg IDcgKy0KIGFyY2gveDg2L2t2bS94ODYuYyAgICAgICAgICAgICAgfCAxMTkgKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNjIgaW5zZXJ0aW9ucygrKSwg NjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hv c3QuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0LmgKaW5kZXggMjgzODQ3NjE5ZmY4 Li45MzUxNGNiMWYyZjcgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bV9ob3N0 LmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtX2hvc3QuaApAQCAtODczLDcgKzg3Myw3 IEBAIHN0cnVjdCBrdm1fdmNwdV9hcmNoIHsKIAkJdTggcHJlZW1wdGVkOwogCQl1NjQgbXNyX3Zh bDsKIAkJdTY0IGxhc3Rfc3RlYWw7Ci0JCXN0cnVjdCBnZm5fdG9faHZhX2NhY2hlIGNhY2hlOwor CQlzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSBjYWNoZTsKIAl9IHN0OwogCiAJdTY0IGwxX3RzY19v ZmZzZXQ7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rdm0vbXNycy5jIGIvYXJjaC94ODYva3ZtL21z cnMuYwppbmRleCA2NmZhNzE0MGQ2NWQuLjM3ZDc5ZDg0ZTJmOCAxMDA2NDQKLS0tIGEvYXJjaC94 ODYva3ZtL21zcnMuYworKysgYi9hcmNoL3g4Ni9rdm0vbXNycy5jCkBAIC0xNzE3LDggKzE3MTcs MTMgQEAgaW50IGt2bV9zZXRfbXNyX2NvbW1vbihzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIHN0cnVj dCBtc3JfZGF0YSAqbXNyX2luZm8pCiAKIAkJdmNwdS0+YXJjaC5zdC5tc3JfdmFsID0gZGF0YTsK IAotCQlpZiAoIShkYXRhICYgS1ZNX01TUl9FTkFCTEVEKSkKKwkJaWYgKCEoZGF0YSAmIEtWTV9N U1JfRU5BQkxFRCkpIHsKKwkJCWt2bV9ncGNfZGVhY3RpdmF0ZSgmdmNwdS0+YXJjaC5zdC5jYWNo ZSk7CiAJCQlicmVhazsKKwkJfQorCisJCWt2bV9ncGNfYWN0aXZhdGUoJnZjcHUtPmFyY2guc3Qu Y2FjaGUsIGRhdGEgJiB+S1ZNX01TUl9FTkFCTEVELAorCQkJCSBzaXplb2Yoc3RydWN0IGt2bV9z dGVhbF90aW1lKSk7CiAKIAkJa3ZtX21ha2VfcmVxdWVzdChLVk1fUkVRX1NURUFMX1VQREFURSwg dmNwdSk7CiAKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2t2bS94ODYuYyBiL2FyY2gveDg2L2t2bS94 ODYuYwppbmRleCAwOTQyNWY3MmY0YTUuLjRhNTc1MzYyMzkwOSAxMDA2NDQKLS0tIGEvYXJjaC94 ODYva3ZtL3g4Ni5jCisrKyBiL2FyY2gveDg2L2t2bS94ODYuYwpAQCAtMjA0NiwxMCArMjA0Niw4 IEBAIEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTChrdm1fc2VydmljZV9sb2NhbF90bGJf Zmx1c2hfcmVxdWVzdHMpOwogCiBzdGF0aWMgdm9pZCByZWNvcmRfc3RlYWxfdGltZShzdHJ1Y3Qg a3ZtX3ZjcHUgKnZjcHUpCiB7Ci0Jc3RydWN0IGdmbl90b19odmFfY2FjaGUgKmdoYyA9ICZ2Y3B1 LT5hcmNoLnN0LmNhY2hlOwotCXN0cnVjdCBrdm1fc3RlYWxfdGltZSBfX3VzZXIgKnN0OwotCXN0 cnVjdCBrdm1fbWVtc2xvdHMgKnNsb3RzOwotCWdwYV90IGdwYSA9IHZjcHUtPmFyY2guc3QubXNy X3ZhbCAmIEtWTV9TVEVBTF9WQUxJRF9CSVRTOworCXN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpn cGMgPSAmdmNwdS0+YXJjaC5zdC5jYWNoZTsKKwlzdHJ1Y3Qga3ZtX3N0ZWFsX3RpbWUgKnN0Owog CXU2NCBzdGVhbDsKIAl1MzIgdmVyc2lvbjsKIApAQCAtMjA2NCw0MiArMjA2MiwyNyBAQCBzdGF0 aWMgdm9pZCByZWNvcmRfc3RlYWxfdGltZShzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiAJaWYgKFdB Uk5fT05fT05DRShjdXJyZW50LT5tbSAhPSB2Y3B1LT5rdm0tPm1tKSkKIAkJcmV0dXJuOwogCi0J c2xvdHMgPSBrdm1fbWVtc2xvdHModmNwdS0+a3ZtKTsKKwkvKiBXZSByZWx5IG9uIHRoZSBmYWN0 IHRoYXQgaXQgZml0cyBpbiBhIHNpbmdsZSBwYWdlLiAqLworCUJVSUxEX0JVR19PTigoc2l6ZW9m KCpzdCkgLSAxKSAmIEtWTV9TVEVBTF9WQUxJRF9CSVRTKTsKIAotCWlmICh1bmxpa2VseShzbG90 cy0+Z2VuZXJhdGlvbiAhPSBnaGMtPmdlbmVyYXRpb24gfHwKLQkJICAgICBncGEgIT0gZ2hjLT5n cGEgfHwKLQkJICAgICBrdm1faXNfZXJyb3JfaHZhKGdoYy0+aHZhKSB8fCAhZ2hjLT5tZW1zbG90 KSkgewotCQkvKiBXZSByZWx5IG9uIHRoZSBmYWN0IHRoYXQgaXQgZml0cyBpbiBhIHNpbmdsZSBw YWdlLiAqLwotCQlCVUlMRF9CVUdfT04oKHNpemVvZigqc3QpIC0gMSkgJiBLVk1fU1RFQUxfVkFM SURfQklUUyk7CisJcmN1X3JlYWRfbG9jaygpOworCXdoaWxlICgha3ZtX2dwY19jaGVjayhncGMs IHNpemVvZigqc3QpKSkgeworCQlyY3VfcmVhZF91bmxvY2soKTsKIAotCQlpZiAoa3ZtX2dmbl90 b19odmFfY2FjaGVfaW5pdCh2Y3B1LT5rdm0sIGdoYywgZ3BhLCBzaXplb2YoKnN0KSkgfHwKLQkJ ICAgIGt2bV9pc19lcnJvcl9odmEoZ2hjLT5odmEpIHx8ICFnaGMtPm1lbXNsb3QpCisJCWlmIChr dm1fZ3BjX3JlZnJlc2goZ3BjLCBzaXplb2YoKnN0KSkpCiAJCQlyZXR1cm47CisKKwkJcmN1X3Jl YWRfbG9jaygpOwogCX0KIAotCXN0ID0gKHN0cnVjdCBrdm1fc3RlYWxfdGltZSBfX3VzZXIgKiln aGMtPmh2YTsKKwlzdCA9IGdwYy0+a2h2YTsKKwogCS8qCiAJICogRG9pbmcgYSBUTEIgZmx1c2gg aGVyZSwgb24gdGhlIGd1ZXN0J3MgYmVoYWxmLCBjYW4gYXZvaWQKIAkgKiBleHBlbnNpdmUgSVBJ cy4KIAkgKi8KIAlpZiAoZ3Vlc3RfcHZfaGFzKHZjcHUsIEtWTV9GRUFUVVJFX1BWX1RMQl9GTFVT SCkpIHsKLQkJdTggc3RfcHJlZW1wdGVkID0gMDsKLQkJaW50IGVyciA9IC1FRkFVTFQ7Ci0KLQkJ aWYgKCF1c2VyX2FjY2Vzc19iZWdpbihzdCwgc2l6ZW9mKCpzdCkpKQotCQkJcmV0dXJuOwotCi0J CWFzbSB2b2xhdGlsZSgiMTogeGNoZ2IgJTAsICUyXG4iCi0JCQkgICAgICJ4b3IgJTEsICUxXG4i Ci0JCQkgICAgICIyOlxuIgotCQkJICAgICBfQVNNX0VYVEFCTEVfVUEoMWIsIDJiKQotCQkJICAg ICA6ICIrcSIgKHN0X3ByZWVtcHRlZCksCi0JCQkgICAgICAgIismciIgKGVyciksCi0JCQkgICAg ICAgIittIiAoc3QtPnByZWVtcHRlZCkpOwotCQlpZiAoZXJyKQotCQkJZ290byBvdXQ7Ci0KLQkJ dXNlcl9hY2Nlc3NfZW5kKCk7CisJCXU4IHN0X3ByZWVtcHRlZCA9IHhjaGcoJnN0LT5wcmVlbXB0 ZWQsIDApOwogCiAJCXZjcHUtPmFyY2guc3QucHJlZW1wdGVkID0gMDsKIApAQCAtMjEwNywzOSAr MjA5MCwzMyBAQCBzdGF0aWMgdm9pZCByZWNvcmRfc3RlYWxfdGltZShzdHJ1Y3Qga3ZtX3ZjcHUg KnZjcHUpCiAJCQkJICAgICAgIHN0X3ByZWVtcHRlZCAmIEtWTV9WQ1BVX0ZMVVNIX1RMQik7CiAJ CWlmIChzdF9wcmVlbXB0ZWQgJiBLVk1fVkNQVV9GTFVTSF9UTEIpCiAJCQlrdm1fdmNwdV9mbHVz aF90bGJfZ3Vlc3QodmNwdSk7Ci0KLQkJaWYgKCF1c2VyX2FjY2Vzc19iZWdpbihzdCwgc2l6ZW9m KCpzdCkpKQotCQkJZ290byBkaXJ0eTsKIAl9IGVsc2UgewotCQlpZiAoIXVzZXJfYWNjZXNzX2Jl Z2luKHN0LCBzaXplb2YoKnN0KSkpCi0JCQlyZXR1cm47Ci0KLQkJdW5zYWZlX3B1dF91c2VyKDAs ICZzdC0+cHJlZW1wdGVkLCBvdXQpOworCQlXUklURV9PTkNFKHN0LT5wcmVlbXB0ZWQsIDApOwog CQl2Y3B1LT5hcmNoLnN0LnByZWVtcHRlZCA9IDA7CiAJfQogCi0JdW5zYWZlX2dldF91c2VyKHZl cnNpb24sICZzdC0+dmVyc2lvbiwgb3V0KTsKKwl2ZXJzaW9uID0gUkVBRF9PTkNFKHN0LT52ZXJz aW9uKTsKIAlpZiAodmVyc2lvbiAmIDEpCiAJCXZlcnNpb24gKz0gMTsgIC8qIGZpcnN0IHRpbWUg d3JpdGUsIHJhbmRvbSBqdW5rICovCiAKIAl2ZXJzaW9uICs9IDE7Ci0JdW5zYWZlX3B1dF91c2Vy KHZlcnNpb24sICZzdC0+dmVyc2lvbiwgb3V0KTsKKwlXUklURV9PTkNFKHN0LT52ZXJzaW9uLCB2 ZXJzaW9uKTsKIAogCXNtcF93bWIoKTsKIAotCXVuc2FmZV9nZXRfdXNlcihzdGVhbCwgJnN0LT5z dGVhbCwgb3V0KTsKKwlzdGVhbCA9IFJFQURfT05DRShzdC0+c3RlYWwpOwogCXN0ZWFsICs9IGN1 cnJlbnQtPnNjaGVkX2luZm8ucnVuX2RlbGF5IC0KIAkJdmNwdS0+YXJjaC5zdC5sYXN0X3N0ZWFs OwogCXZjcHUtPmFyY2guc3QubGFzdF9zdGVhbCA9IGN1cnJlbnQtPnNjaGVkX2luZm8ucnVuX2Rl bGF5OwotCXVuc2FmZV9wdXRfdXNlcihzdGVhbCwgJnN0LT5zdGVhbCwgb3V0KTsKKwlXUklURV9P TkNFKHN0LT5zdGVhbCwgc3RlYWwpOworCisJc21wX3dtYigpOwogCiAJdmVyc2lvbiArPSAxOwot CXVuc2FmZV9wdXRfdXNlcih2ZXJzaW9uLCAmc3QtPnZlcnNpb24sIG91dCk7CisJV1JJVEVfT05D RShzdC0+dmVyc2lvbiwgdmVyc2lvbik7CiAKLSBvdXQ6Ci0JdXNlcl9hY2Nlc3NfZW5kKCk7Ci0g ZGlydHk6Ci0JbWFya19wYWdlX2RpcnR5X2luX3Nsb3QodmNwdS0+a3ZtLCBnaGMtPm1lbXNsb3Qs IGdwYV90b19nZm4oZ2hjLT5ncGEpKTsKKwlrdm1fZ3BjX21hcmtfZGlydHlfaW5fc2xvdChncGMp OworCXJjdV9yZWFkX3VubG9jaygpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wga3ZtX2Nhbl9t d2FpdF9pbl9ndWVzdCh2b2lkKQpAQCAtMjYxMywxMSArMjU5MCw4IEBAIHZvaWQga3ZtX2FyY2hf dmNwdV9sb2FkKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgaW50IGNwdSkKIAogc3RhdGljIHZvaWQg a3ZtX3N0ZWFsX3RpbWVfc2V0X3ByZWVtcHRlZChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7Ci0J c3RydWN0IGdmbl90b19odmFfY2FjaGUgKmdoYyA9ICZ2Y3B1LT5hcmNoLnN0LmNhY2hlOwotCXN0 cnVjdCBrdm1fc3RlYWxfdGltZSBfX3VzZXIgKnN0OwotCXN0cnVjdCBrdm1fbWVtc2xvdHMgKnNs b3RzOwotCXN0YXRpYyBjb25zdCB1OCBwcmVlbXB0ZWQgPSBLVk1fVkNQVV9QUkVFTVBURUQ7Ci0J Z3BhX3QgZ3BhID0gdmNwdS0+YXJjaC5zdC5tc3JfdmFsICYgS1ZNX1NURUFMX1ZBTElEX0JJVFM7 CisJc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYyA9ICZ2Y3B1LT5hcmNoLnN0LmNhY2hlOwor CXN0cnVjdCBrdm1fc3RlYWxfdGltZSAqc3Q7CiAKIAkvKgogCSAqIFRoZSB2Q1BVIGNhbiBiZSBt YXJrZWQgcHJlZW1wdGVkIGlmIGFuZCBvbmx5IGlmIHRoZSBWTS1FeGl0IHdhcyBvbgpAQCAtMjY0 MiwyMCArMjYxNiwzMiBAQCBzdGF0aWMgdm9pZCBrdm1fc3RlYWxfdGltZV9zZXRfcHJlZW1wdGVk KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAlpZiAodW5saWtlbHkoY3VycmVudC0+bW0gIT0gdmNw dS0+a3ZtLT5tbSkpCiAJCXJldHVybjsKIAotCXNsb3RzID0ga3ZtX21lbXNsb3RzKHZjcHUtPmt2 bSk7Ci0KLQlpZiAodW5saWtlbHkoc2xvdHMtPmdlbmVyYXRpb24gIT0gZ2hjLT5nZW5lcmF0aW9u IHx8Ci0JCSAgICAgZ3BhICE9IGdoYy0+Z3BhIHx8Ci0JCSAgICAga3ZtX2lzX2Vycm9yX2h2YShn aGMtPmh2YSkgfHwgIWdoYy0+bWVtc2xvdCkpCi0JCXJldHVybjsKLQotCXN0ID0gKHN0cnVjdCBr dm1fc3RlYWxfdGltZSBfX3VzZXIgKilnaGMtPmh2YTsKLQlCVUlMRF9CVUdfT04oc2l6ZW9mKHN0 LT5wcmVlbXB0ZWQpICE9IHNpemVvZihwcmVlbXB0ZWQpKTsKLQotCWlmICghY29weV90b191c2Vy X25vZmF1bHQoJnN0LT5wcmVlbXB0ZWQsICZwcmVlbXB0ZWQsIHNpemVvZihwcmVlbXB0ZWQpKSkK KwkvKgorCSAqIFRoaXMgaXMgY2FsbGVkIGZyb20gdGhlIHNjaGVkdWxlciBwYXRoICh2aWEga3Zt X3NjaGVkX291dCksIHNvCisJICogdGhlIGNhY2hlIGNhbm5vdCBiZSByZWZyZXNoZWQgaGVyZS4g IFNldHRpbmcgJ3ByZWVtcHRlZCcgaXMKKwkgKiBiZXN0LWVmZm9ydCBhbnl3YXk7IHRoZSBvbGQg SFZBLWJhc2VkIGNvZGUgdXNlZAorCSAqIGNvcHlfdG9fdXNlcl9ub2ZhdWx0KCksIHdoaWNoIGNv dWxkIGFsc28gc2lsZW50bHkgZmFpbC4gIElmIHRoZQorCSAqIGNhY2hlIGlzIGludmFsaWQsIGl0 IHdpbGwgYmUgcmVmcmVzaGVkIGZyb20gdGFzayBjb250ZXh0IGJ5CisJICogcmVjb3JkX3N0ZWFs X3RpbWUoKSBiZWZvcmUgdGhlIHZDUFUgbmV4dCBlbnRlcnMgdGhlIGd1ZXN0LCBzaW5jZQorCSAq IGt2bV9hcmNoX3ZjcHVfbG9hZCgpIHVuY29uZGl0aW9uYWxseSByYWlzZXMgS1ZNX1JFUV9TVEVB TF9VUERBVEUuCisJICovCisJcmN1X3JlYWRfbG9jaygpOworCWlmIChrdm1fZ3BjX2NoZWNrKGdw Yywgc2l6ZW9mKCpzdCkpKSB7CisJCXN0ID0gZ3BjLT5raHZhOworCQlXUklURV9PTkNFKHN0LT5w cmVlbXB0ZWQsIEtWTV9WQ1BVX1BSRUVNUFRFRCk7CiAJCXZjcHUtPmFyY2guc3QucHJlZW1wdGVk ID0gS1ZNX1ZDUFVfUFJFRU1QVEVEOwogCi0JbWFya19wYWdlX2RpcnR5X2luX3Nsb3QodmNwdS0+ a3ZtLCBnaGMtPm1lbXNsb3QsIGdwYV90b19nZm4oZ2hjLT5ncGEpKTsKKwkJa3ZtX2dwY19tYXJr X2RpcnR5X2luX3Nsb3QoZ3BjKTsKKwl9CisJcmN1X3JlYWRfdW5sb2NrKCk7Cit9CisKK3N0YXRp YyB2b2lkIGt2bV9zdGVhbF90aW1lX3Jlc2V0KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKK3sKKwlr dm1fZ3BjX2RlYWN0aXZhdGUoJnZjcHUtPmFyY2guc3QuY2FjaGUpOworCXZjcHUtPmFyY2guc3Qu cHJlZW1wdGVkID0gMDsKKwl2Y3B1LT5hcmNoLnN0Lm1zcl92YWwgPSAwOworCXZjcHUtPmFyY2gu c3QubGFzdF9zdGVhbCA9IDA7CiB9CiAKIHZvaWQga3ZtX2FyY2hfdmNwdV9wdXQoc3RydWN0IGt2 bV92Y3B1ICp2Y3B1KQpAQCAtOTM0Nyw2ICs5MzMzLDggQEAgaW50IGt2bV9hcmNoX3ZjcHVfY3Jl YXRlKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAogCWt2bV9ncGNfaW5pdCgmdmNwdS0+YXJjaC5w dl90aW1lLCB2Y3B1LT5rdm0pOwogCisJa3ZtX2dwY19pbml0KCZ2Y3B1LT5hcmNoLnN0LmNhY2hl LCB2Y3B1LT5rdm0pOworCiAJaWYgKCFpcnFjaGlwX2luX2tlcm5lbCh2Y3B1LT5rdm0pIHx8IGt2 bV92Y3B1X2lzX3Jlc2V0X2JzcCh2Y3B1KSkKIAkJa3ZtX3NldF9tcF9zdGF0ZSh2Y3B1LCBLVk1f TVBfU1RBVEVfUlVOTkFCTEUpOwogCWVsc2UKQEAgLTk0NTQsNiArOTQ0Miw4IEBAIHZvaWQga3Zt X2FyY2hfdmNwdV9kZXN0cm95KHN0cnVjdCBrdm1fdmNwdSAqdmNwdSkKIAlrdm1fY2xlYXJfYXN5 bmNfcGZfY29tcGxldGlvbl9xdWV1ZSh2Y3B1KTsKIAlrdm1fbW11X3VubG9hZCh2Y3B1KTsKIAor CWt2bV9zdGVhbF90aW1lX3Jlc2V0KHZjcHUpOworCiAJa3ZtY2xvY2tfcmVzZXQodmNwdSk7CiAK IAlmb3JfZWFjaF9wb3NzaWJsZV9jcHUoY3B1KQpAQCAtOTU3NCw3ICs5NTY0LDggQEAgdm9pZCBr dm1fdmNwdV9yZXNldChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUsIGJvb2wgaW5pdF9ldmVudCkKIAlr dm1fbWFrZV9yZXF1ZXN0KEtWTV9SRVFfRVZFTlQsIHZjcHUpOwogCXZjcHUtPmFyY2guYXBmLm1z cl9lbl92YWwgPSAwOwogCXZjcHUtPmFyY2guYXBmLm1zcl9pbnRfdmFsID0gMDsKLQl2Y3B1LT5h cmNoLnN0Lm1zcl92YWwgPSAwOworCisJa3ZtX3N0ZWFsX3RpbWVfcmVzZXQodmNwdSk7CiAKIAlr dm1jbG9ja19yZXNldCh2Y3B1KTsKIAotLSAKMi40My4wCgo= ------BF4729FFF1CFF81C347E9D8664D1565B Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" MII+PgYJKoZIhvcNAQcCoII+LzCCPisCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGg gjpEMIIGEDCCA/igAwIBAgIQTZQsENQ74JQJxYEtOisGTzANBgkqhkiG9w0BAQwFADCBiDELMAkG A1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYD VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlm aWNhdGlvbiBBdXRob3JpdHkwHhcNMTgxMTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBljELMAkG A1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEY MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMT4wPAYDVQQDEzVTZWN0aWdvIFJTQSBDbGllbnQgQXV0 aGVudGljYXRpb24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBAMo87ZQKQf/e+Ua56NY75tqSvysQTqoavIK9viYcKSoq0s2cUIE/bZQu85eoZ9X140qO TKl1HyLTJbazGl6nBEibivHbSuejQkq6uIgymiqvTcTlxZql19szfBxxo0Nm9l79L9S+TZNTEDyg NfcXlkHKRhBhVFHdJDfqB6Mfi/Wlda43zYgo92yZOpCWjj2mz4tudN55/yE1+XvFnz5xsOFbme/S oY9WAa39uJORHtbC0x7C7aYivToxuIkEQXaumf05Vcf4RgHs+Yd+mwSTManRy6XcCFJE6k/LHt3n dD3sA3If/JBz6OX2ZebtQdHnKav7Azf+bAhudg7PkFOTuRMCAwEAAaOCAWQwggFgMB8GA1UdIwQY MBaAFFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1UdDgQWBBQJwPL8C9qU21/+K9+omULPyeCtADAO BgNVHQ8BAf8EBAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAgYI KwYBBQUHAwQwEQYDVR0gBAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwu dXNlcnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNvbS9VU0VSVHJ1 c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNlcnRydXN0LmNv bTANBgkqhkiG9w0BAQwFAAOCAgEAQUR1AKs5whX13o6VbTJxaIwA3RfXehwQOJDI47G9FzGR87bj grShfsbMIYdhqpFuSUKzPM1ZVPgNlT+9istp5UQNRsJiD4KLu+E2f102qxxvM3TEoGg65FWM89YN 5yFTvSB5PelcLGnCLwRfCX6iLPvGlh9j30lKzcT+mLO1NLGWMeK1w+vnKhav2VuQVHwpTf64ZNnX UF8p+5JJpGtkUG/XfdJ5jR3YCq8H0OPZkNoVkDQ5CSSF8Co2AOlVEf32VBXglIrHQ3v9AAS0yPo4 Xl1FdXqGFe5TcDQSqXh3TbjugGnG+d9yZX3lB8bwc/Tn2FlIl7tPbDAL4jNdUNA7jGee+tAnTtlZ 6bFz+CsWmCIb6j6lDFqkXVsp+3KyLTZGXq6F2nnBtN4t5jO3ZIj2gpIKHAYNBAWLG2Q2fG7Bt2tP C8BLC9WIM90gbMhAmtMGquITn/2fORdsNmaV3z/sPKuIn8DvdEhmWVfh0fyYeqxGlTw0RfwhBlak dYYrkDmdWC+XszE19GUi8K8plBNKcIvyg2omAdebrMIHiAHAOiczxX/aS5ABRVrNUDcjfvp4hYbD OO6qHcfzy/uY0fO5ssebmHQREJJA3PpSgdVnLernF6pthJrGkNDPeUI05svqw1o5A2HcNzLOpklh NwZ+4uWYLcAi14ACHuVvJsmzNicwggXeMIIDxqADAgECAhAB/W0w/KPKUagbvGQONQMtMA0GCSqG SIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxML SmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNF UlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xMDAyMDEwMDAwMDBaFw0zODAx MTgyMzU5NTlaMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxML SmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNF UlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIP ADCCAgoCggIBAIASZRc2DsPbCLPQrFcNdu3NJ9NMrVCDYeKqIE0JLWQJ3M6Jn8w9qez2z8Hc8dOx 1ns3KBErR9o5xrw6GbRfpr19naNjQrZ28qk7K5H44m/Q7BYgkAk+4uh0yRi0kdRiZNt/owbxiBhq kCI8vP4T8IcUe/bkH47U5FHGEWdGCFHLhhRUP7wz/n5snP8WnRi9UY41pqdmyHJn2yFmsdSbeAPA UDrozPDcvJ5M/q8FljUfV1q3/875PbcstvZU3cjnEjpNrkyKt1yatLcgPcp/IjSufjtoZgFE5wFO RlObM2D3lL5TN5BzQ/Myw1Pv26r+dE5px2uMYJPexMcM3+EyrsyTO1F4lWeL7j1W/gzQaQ8bD/Ml JmszbfduR/pzQ+V+DqVmsSl8MoRjVYnEDcGTVDAZE6zTfTen6106bDVc20HXEtqpSQvf2ICKCZNi jrVmzyWIzYS4sT+kOQ/ZAp7rEkyVfPNrBaleFoPMuGfi6BOdzFuC00yz7Vv/3uVzrCM7LQC/NVV0 CUnYSVgaf5I25lGSDvMmfRxNF7zJ7EMm0L9BX0CpRET0medXh55QH1dUqD79dGMvsVBlCeZYQi5D Gky08CVHWfoEHpPUJkZKUIGy3r54t/xnFeHJV4QeD2PW6WK61l9VLupcxigIBCU5uA4rqfJMlxwH Pw1S9e3vL4IPAgMBAAGjQjBAMB0GA1UdDgQWBBRTeb9aqitKz1SA4dibwJ3ysgNmyzAOBgNVHQ8B Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQwFAAOCAgEAXNR8Dc/3AX1BmWUM c8VSn8v4z5kGfxvaQxWfngJVV5YU8VI8J4eUKO0fOgE3onb8U1DAhJvGa066jCFPoo5VYpHzaRXY vIjjxKoL/e+o6UtVKgYgbVV4KRnuXzBcSyQRVf8kmm5eKivuC02ff/cBOJQUlUMHCftgqe4cqxKM oJpep5hqWW2LPwj7yNFFrxgVZJASD3MoLsXiJE78WOzw9EX+IrPrL47S2UVhBcGXb6h2co+LjDav vw0FznGN5qZvH2ymcWLF2NCDcgzxZxGJDJwTTHI037zVcd+qcd3huWyMPBJdZdq9VxK2Q2v/5d5N ZhFRz5mu7Be26HGRjN5J/t01caIVJ5Qcz2HjJrtvo2clIV3m3R0LLmgbO4Kv7INnhdSYUXSxuZmA if9/eBlceUpgLpJArkw3KizJx2LIDl33NlvK4CUlAbTdGgecdwA/0NzV7D3U+rs/zIXWb3+pLd+5 Avf1l5q1NdrDZ7CHSqkoniOO/1wna+GwT/MH7gAu1FmHy1JBler0R9fuZEFVfI1ZApXdYp3Cue5a KHSEpZu3kMcMB9/1iTZ0MtYowbCwC+CcTMMc1vzjabVHRoEvooKr02NEcMSN/y0zuq2Pe7VwiK4+ Gc9AKNj8yJC7XZki9VLmWMUfiDFD7ogd18aOPENqHacY3n09FvFi+cqQqP0wggYQMIID+KADAgEC AhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEBDAUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UE CBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJV U1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5NTlaMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UE CBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdv IExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQg U2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyjztlApB/975 Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9tlC7zl6hn1fXjSo5MqXUfItMltrMaXqcESJuK 8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2Xv0v1L5Nk1MQPKA19xeWQcpGEGFUUd0kN+oH ox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5e8WfPnGw4VuZ79Khj1YBrf24k5Ee1sLTHsLt piK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHLpdwIUkTqT8se3ed0PewDch/8kHPo5fZl5u1B 0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCCAWAwHwYDVR0jBBgwFoAUU3m/WqorSs9UgOHY m8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r36iZQs/J4K0AMA4GA1UdDwEB/wQEAwIBhjAS BgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDARBgNVHSAE CjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/aHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VT RVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHYGCCsGAQUFBwEBBGowaDA/Bggr BgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJTQUFkZFRydXN0Q0Eu Y3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUA A4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4kMjjsb0XMZHztuOCtKF+xswhh2GqkW5JQrM8 zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8zdMSgaDrkVYzz1g3nIVO9IHk96VwsacIvBF8J fqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/ZW5BUfClN/rhk2ddQXyn7kkmka2RQb9d90nmN HdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCUisdDe/0ABLTI+jheXUV1eoYV7lNwNBKpeHdN uO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q0DuMZ5760CdO2VnpsXP4KxaYIhvqPqUMWqRd Wyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0EBYsbZDZ8bsG3a08LwEsL1Ygz3SBsyECa0waq 4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6rEaVPDRF/CEGVqR1hiuQOZ1YL5ezMTX0ZSLw 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 DTI4MDEwOTIzNTk1OVowgZcxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0 ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9ETyBDQSBMaW1pdGVkMT0wOwYDVQQD EzRDT01PRE8gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvrOeV6wodnVAFsc4A5jTxhh2IVDzJXkLTLWg 0X06WD6cpzEup/Y0dtmEatrQPTRI5Or1u6zf+bGBSyD9aH95dDSmeny1nxdlYCeXIoymMv6pQHJG NcIDpFDIMypVpVSRsivlJTRENf+RKwrB6vcfWlP8dSsE3Rfywq09N0ZfxcBa39V0wsGtkGWC+eQK iz4pBZYKjrc5NOpG9qrxpZxyb4o4yNNwTqzaaPpGRqXB7IMjtf7tTmU2jqPMLxFNe1VXj9XB1rHv bRikw8lBoNoSWY66nJN/VCJv5ym6Q0mdCbDKCMPybTjoNCQuelc0IAaO4nLUXk0BOSxSxt8kCvsU tQIDAQABo4IBPDCCATgwHwYDVR0jBBgwFoAUu69+Aj36pvE8hI6t7jiY7NkyMtQwHQYDVR0OBBYE FIKvbIz4xf6WYXzoHz0rcUhexIvAMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEA MBEGA1UdIAQKMAgwBgYEVR0gADBMBgNVHR8ERTBDMEGgP6A9hjtodHRwOi8vY3JsLmNvbW9kb2Nh LmNvbS9DT01PRE9SU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDBxBggrBgEFBQcBAQRlMGMw OwYIKwYBBQUHMAKGL2h0dHA6Ly9jcnQuY29tb2RvY2EuY29tL0NPTU9ET1JTQUFkZFRydXN0Q0Eu Y3J0MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5jb21vZG9jYS5jb20wDQYJKoZIhvcNAQEMBQAD ggIBAHhcsoEoNE887l9Wzp+XVuyPomsX9vP2SQgG1NgvNc3fQP7TcePo7EIMERoh42awGGsma65u /ITse2hKZHzT0CBxhuhb6txM1n/y78e/4ZOs0j8CGpfb+SJA3GaBQ+394k+z3ZByWPQedXLL1OdK 8aRINTsjk/H5Ns77zwbjOKkDamxlpZ4TKSDMKVmU/PUWNMKSTvtlenlxBhh7ETrN543j/Q6qqgCW gWuMAXijnRglp9fyadqGOncjZjaaSOGTTFB+E2pvOUtY+hPebuPtTbq7vODqzCM6ryEhNhzf+enm 0zlpXK7q332nXttNtjv7VFNYG+I31gnMrwfHM5tdhYF/8v5UY5g2xANPECTQdu9vWPoqNSGDt87b 3gXb1AiGGaI06vzgkejL580ul+9hz9D0S0U4jkhJiA7EuTecP/CFtR72uYRBcunwwH3fciPjviDD AI9SnC/2aPY8ydehzuZutLbZdRJ5PDEJM/1tyZR2niOYihZ+FCbtf3D9mB12D4ln9icgc7CwaxpN SCPt8i/GqK2HsOgkL3VYnwtx7cJUmpvVdZ4ognzgXtgtdk3ShrtOS1iAN2ZBXFiRmjVzmehoMof0 6r1xub+85hFQzVxZx5/bRaTKTlL8YXLI8nAbR9HWdFqzcOoB/hxfEyIQpx9/s81rgzdEZOofSlZH ynoSMIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkG A1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEa MBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv biBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3F z0RndJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPm NHrZFGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gc 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 TU9ET1JTQUNlcnRpZmljYXRpb25BdXRob3JpdHkuY3JsMHEGCCsGAQUFBwEBBGUwYzA7BggrBgEF BQcwAoYvaHR0cDovL2NydC5jb21vZG9jYS5jb20vQ09NT0RPUlNBQWRkVHJ1c3RDQS5jcnQwJAYI KwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9kb2NhLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAeFyy gSg0TzzuX1bOn5dW7I+iaxf28/ZJCAbU2C81zd9A/tNx4+jsQgwRGiHjZrAYayZrrm78hOx7aEpk fNPQIHGG6Fvq3EzWf/Lvx7/hk6zSPwIal9v5IkDcZoFD7f3iT7PdkHJY9B51csvU50rxpEg1OyOT 8fk2zvvPBuM4qQNqbGWlnhMpIMwpWZT89RY0wpJO+2V6eXEGGHsROs3njeP9DqqqAJaBa4wBeKOd GCWn1/Jp2oY6dyNmNppI4ZNMUH4Tam85S1j6E95u4+1Nuru84OrMIzqvISE2HN/56ebTOWlcrurf fade2022O/tUU1gb4jfWCcyvB8czm12FgX/y/lRjmDbEA08QJNB2729Y+io1IYO3ztveBdvUCIYZ ojTq/OCR6MvnzS6X72HP0PRLRTiOSEmIDsS5N5w/8IW1Hva5hEFy6fDAfd9yI+O+IMMAj1KcL/Zo 9jzJ16HO5m60ttl1Enk8MQkz/W3JlHaeI5iKFn4UJu1/cP2YHXYPiWf2JyBzsLBrGk1II+3yL8ao rYew6CQvdVifC3HtwlSam9V1niiCfOBe2C12TdKGu05LWIA3ZkFcWJGaNXOZ6Ggyh/TqvXG5v7zm EVDNXFnHn9tFpMpOUvxhcsjycBtH0dZ0WrNw6gH+HF8TIhCnH3+zzWuDN0Rk6h9KVkfKehIwggXY MIIDwKADAgECAhBMqvnK22Nv4B/3TthbA4adMA0GCSqGSIb3DQEBDAUAMIGFMQswCQYDVQQGEwJH QjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQK ExFDT01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1 dGhvcml0eTAeFw0xMDAxMTkwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGFMQswCQYDVQQGEwJHQjEb MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD T01PRE8gQ0EgTGltaXRlZDErMCkGA1UEAxMiQ09NT0RPIFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhv cml0eTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJHoVJLSClaxrA0k3cXPRGd0mSs3 o30jcABxvFPfxPoqEo9LfxBWvZ9wcrdhf8lLDxenPeOwBGHu/xGXx/SGPgr6Plz5k+Y0etkUa+ec s4Wggnp2r3GQ1+z9DfqcbPrfsIL0FH75vsSmL09/mX+1/GdDcr0MANaJ62ss0+2PmBwUq37l4278 2KjkkiTaQ2tiuFX96sG8bLaL8w6NmuSbbGmZ+HhIMEXVreENPEVg/DKWUSe8Z8PKLrZr6kbHxyCg sR9l3kgIuqROqfKDRjeE6+jMgUhDZ05yKptcvUwbKIpcInu0q5jZ7uBRg8MJRk5tPpn6lRfafDNX QTyNUe0LtlyvLGMa31fIP7zpXcSbr0WZ4qNaJLS6qVY9z2+q/0lYvvCo//S4rek3+7q49As6+ehD Qh6J2ITLE/HZu+GJYLiMKFasFB2cCudx688O3T2plqFIvTz3r7UNIkzAEYHsVjv206LiW7eyBCJS lYCTaeiOTGXxkQMtcHQC6otnFSlpUgK7199QalVGv6CjKGF/cNDDoqosIapHziicBkV2v4IYJ7TV rrTLUOZr9EyGcTDppt8WhuDY/0Dd+9BCiH+jMzouXB5BEYFjzhhxayvspoq3MVw6akfgw3lZ1iAa r/JqmKpyvFdK0kuduxD8sExB5e0dPV4onZzMv7NR2qdH5YRTAgMBAAGjQjBAMB0GA1UdDgQWBBS7 r34CPfqm8TyEjq3uOJjs2TIy1DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkq hkiG9w0BAQwFAAOCAgEACvHVRoS3rlG7bLJNQRQAk0ycy+XAVM+gJY4C+f2wog31IJg8Ey2sVqKw 1n4Rkukuup4umnKxvRlEbGE1opq0FhJpWozh1z6kGugvA/SuYR0QGyqki3rF/gWm4cDWyP6ero8r uj2Z+NhzCVhGbqac9Ncn05XaN4NyHNNz4KJHmQM4XdVJeQApHMfsmyAcByRpV3iyOfw6hKC1nHyN vy6TYie3OdoXGK69PAlo/4SbPNXWCwPjV54U99HrT8i9hyO3tklDeYVcuuuSC6HG6GioTBaxGpkK 6FMskruhCRh1DGWoe8sjtxrCKIXDG//QK2LvpHsJkZhnjBQBzWgGamMhdQOAiIpugcaF8qmkLef0 pSQQR4PKzfSNeVixBpvnGirZnQHXlH3tA0rK8NvoqQE+9VaZyR6OST275Qm54E9Jkj0WgkDMzFnG 5jrtEi5pPGyVsf2qHXt/hr4eDjJG+/sTj3V/TItLRmP+ADRAcMHDuaHdpnDiBLNBvOmAkepknHrh IgOpnG5vDmVPbIeHXvNuoPl1pZtA6FOyJ51KucB3IY3/h/LevIzvF9+3SQvR8m4wCxoOTnbtEfz1 6Vayfb/HbQqTjKXQwLYdvjpOlKLXbmwLwop8+iDzxOTlzQ2oy5GSsXyF7LUUaWYOgufNzsgtplF/ IcE1U4UGSl2frbsbX3QwggSvMIIDl6ADAgECAhEA4CPLFRKDU4mtYW56VGdrITANBgkqhkiG9w0B AQsFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRy dXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBS b290MB4XDTE0MTIyMjAwMDAwMFoXDTIwMDUzMDEwNDgzOFowgZsxCzAJBgNVBAYTAkdCMRswGQYD VQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1NhbGZvcmQxGjAYBgNVBAoTEUNPTU9E TyBDQSBMaW1pdGVkMUEwPwYDVQQDEzhDT01PRE8gU0hBLTI1NiBDbGllbnQgQXV0aGVudGljYXRp b24gYW5kIFNlY3VyZSBFbWFpbCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAImx Ddp6UxlOcFIdvFamBia3uEngludRq/HwWhNJFaO0jBtgvHpRQqd5jKQi3xdhTpHVdiMKFNNKAn+2 HQmAbqUEPdm6uxb+oYepLkNSQxZ8rzJQyKZPWukI2M+TJZx7iOgwZOak+FaA/SokFDMXmaxE5WmL o0YGS8Iz1OlAnwawsayTQLm1CJM6nCpToxDbPSBhPFUDjtlOdiUCISn6o3xxdk/u4V+B6ftUgNvD ezVSt4TeIj0sMC0xf1m9UjewM2ktQ+v61qXxl3dnUYzZ7ifrvKUHOHaMpKk4/9+M9QOsSb7K93OZ Og8yq5yVOhM9DkY6V3RhUL7GQD/L5OKfoiECAwEAAaOCARcwggETMB8GA1UdIwQYMBaAFK29mHo0 tCb3+sQmVO8DveAky1QaMB0GA1UdDgQWBBSSYWuC4aKgqk/sZ/HCo/e0gADB7DAOBgNVHQ8BAf8E BAMCAYYwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQw EQYDVR0gBAowCDAGBgRVHSAAMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0 LmNvbS9BZGRUcnVzdEV4dGVybmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUH MAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQELBQADggEBABsqbqxVwTqr iMXY7c1V86prYSvACRAjmQ/FZmpvsfW0tXdeDwJhAN99Bf4Ss6SAgAD8+x1banICCkG8BbrBWNUm wurVTYT7/oKYz1gb4yJjnFL4uwU2q31Ypd6rO2Pl2tVz7+zg+3vio//wQiOcyraNTT7kSxgDsqgt 1Ni7QkuQaYUQ26Y3NOh74AEQpZzKOsefT4g0bopl0BqKu6ncyso20fT8wmQpNa/WsadxEdIDQ7GP PprsnjJT9HaSyoY0B7ksyuYcStiZDcGG4pCS+1pCaiMhEOllx/XVu37qjIUgAmLq0ToHLFnFmTPy OInltukWeh95FPZKEBom+nyK+5swggYVMIIE/aADAgECAhBUK7v3iZFOwcXku0+rFipmMA0GCSqG SIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAw DgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3Rp Z28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMB4XDTI0MTIx NTAwMDAwMFoXDTI2MTIxNTIzNTk1OVowIjEgMB4GCSqGSIb3DQEJARYRZHdtd0BhbWF6b24uY28u dWswggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDYY7Ok+LSdJXMOPurGsBJ9haMJobp1 AbJ0lXHAfmgO7N2XfT2VeOglOqYQJQlqSpNchVXA9UZ3OLsde6OC21IBV4iqzkUtI4hf+TmtK1xt xSEhtV3Y7fKDyiKvvWdbNnuyKYuVlo+ABv8ZZB/2DDHLS/TvAgkR0q4YgoWxP4Eee8fTwJ7eWnmW dmFs2hjjnnHmmXvrurxwhyE0ZpJ0gJwF/2jaDSTbEAhnH6xPN8vYh5j/ARa0kWamowSpSqvLciXe RZ0sDx95ElHEJRzsIiHwkRVz+K6V0me5yjhGa90lx9OgA2PYGba0qcAW7sylgzxljEbkZ8/KII/2 Og3lONswf2QCIuW9Ac1n+LtKwREA+cbaTgsWB3Np10GhUlrt+pD9SWjahJROdTkPdhMlSn1tzeqm XCoga1Yo12NhLUfv+VvYsURZxLOJyHm/eEn/dlDBHhvXsNslb3GF1zT2onBp65BEjQtff2vGF8UB GX65gXgD0/b4kCYZ9zvrA+KT9ErN0o1WXOhDu736D9O27dp/WBNPF0j5MXMm9Sf+Lf/gLJJCnmBQ RnaY4MXfoixcY0sAcrWbod/uw7h1H4PO+lgOOInkA64R0o7r7gGdVm/FlLK6c63C6GI6hZm/23+v 8sqMZbd9ZnYDwvhS3PmLtQUMFwtyTG672xQVU7Z+V9hCgwIDAQABo4IB0DCCAcwwHwYDVR0jBBgw FoAUCcDy/AvalNtf/ivfqJlCz8ngrQAwHQYDVR0OBBYEFFr7QNV7ElfMY4HxUC/w1EzSGybuMA4G A1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMBMGA1UdJQQMMAoGCCsGAQUFBwMEMFAGA1UdIARJ MEcwOgYMKwYBBAGyMQECAQoCMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vc2VjdGlnby5jb20vU01J TUVDUFMwCQYHZ4EMAQUBAzBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLnNlY3RpZ28uY29t L1NlY3RpZ29SU0FDbGllbnRBdXRoZW50aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3JsMIGKBggr BgEFBQcBAQR+MHwwVQYIKwYBBQUHMAKGSWh0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1JT QUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcnQwIwYIKwYBBQUHMAGGF2h0 dHA6Ly9vY3NwLnNlY3RpZ28uY29tMBwGA1UdEQQVMBOBEWR3bXdAYW1hem9uLmNvLnVrMA0GCSqG SIb3DQEBCwUAA4IBAQBA+k/q3z9lz3S3x6AneZ9YhiHGGrlnzx0XWTdk8O2uzRFyJJtsmTYszkqa dzazIljgTdd14Kp2C7KnacSYW48CnMyl+dP6n4YZDh7a0NBkZLnMmyuOOwGrpfNHGU/E91hvVPXY ZdwrfzLsigVkINzGJW1E+ruJAvT5PK3fnEdeLbWEVFgyk0tgay+3vI6TZrQqBGpA5DGODK6aDMDN X+ADVamfHJw57cF6uaK5mSJLDdg6sbCi5qxclQDjYakkk+9iJgXyFVoRUUwhfbU3COcBP9EpJduR WZkrAQdi1IHnICuzGcsPQ6P29LGEvvGJgP7o1AqjW9HzyQRPwfbwaJobMYIDvjCCA7oCAQEwgasw gZYxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAOBgNVBAcTB1Nh bGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE+MDwGA1UEAxM1U2VjdGlnbyBSU0EgQ2xp ZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEFQru/eJkU7BxeS7T6sWKmYw DQYJYIZIAWUDBAIBBQCggeQwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUx DxcNMjYwODA1MTk1NjIwWjAvBgkqhkiG9w0BCQQxIgQgD5NMxLZcuvdCfsIhj4oG7u/Xsni8AfiX c8GS+8WGkK4weQYJKoZIhvcNAQkPMWwwajALBglghkgBZQMEASowCwYJYIZIAWUDBAEWMAsGCWCG SAFlAwQBAjAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4D AgcwDQYIKoZIhvcNAwICASgwDQYJKoZIhvcNAQEBBQAEggIAQy9jiisINJLunNXcTTnbgD1cg0LF sBSrf0PMIVN5R4z0cbsUe4v9GiWTaYNXP20FQonp7sV6cyBbMI1p8ssqIQInLgSl3SkSTGQfK9q+ qXXH0s+34NHZMompV01tcALLdvF+CagwkuNmmXtsKa5xgaIqPWfiLeAECo0sZzeM+6d6ITLqfu1Y oE5mGV92gC36asNi48v8l4NeaufSzPbTmP4NBwD9gXmkS93e1fhNQucbF5MNIy93WC4D+p/1X15d GPqyza4IPs/eH/scZnqgMKlnwuKSb6MjE+yorK8DPHnP9KU5c1ZDzCFab6L+C+XTPRH4i1RS+rkY Bfrvd70Prn3y188w7uBzEBawy7bP4CgeIcwJt6RS1/Qoigbkli/aJxjJ/Ay6r6E/5rOX19T3p38R hrQ1Ag36P3f6Sss3nWsc9VHAUaOSSCy/lSgKOGbw5Wt+o0O2lBaKH6D4IHsZlXNcSPoS6lD4F2+U OWbJxFIInZB3T421Th85oRGzDwF76jR4QOpOPLEpXJlHgtlKjOTiNxvlZ1HLlfQG4xA0ufCJdjTs WSHJqfNBMKz6h/Kak0FL1wr4DAG5dV6NMqRcBEWqXudZkSKOmtZYsm+qKgLRRZ7aybPD+K2n2UZa fLOzhcjmWGS1tsOihlRRgW1eQ0z3D8IUp7cwHtHvjH3MG28= ------BF4729FFF1CFF81C347E9D8664D1565B-- --===============0649898463130662077== Content-Type: multipart/alternative; boundary="===============4487427444207769569==" MIME-Version: 1.0 Content-Disposition: inline --===============4487427444207769569== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Amazon Development Centre (London) Ltd. Registered in England and Wales wit= h registration number 04543232 with its registered office at 1 Principal Pl= ace, Worship Street, London EC2A 2FA, United Kingdom. --===============4487427444207769569== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable


Amazon Development Centre (London) Ltd.Registered in England an= d Wales with registration number 04543232 with its registered office at 1 P= rincipal Place, Worship Street, London EC2A 2FA, United Kingdom.


--===============4487427444207769569==-- --===============0649898463130662077==--