From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 20E44C0650E for ; Mon, 1 Jul 2019 12:06:35 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E6796214AE for ; Mon, 1 Jul 2019 12:06:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E6796214AE Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hhv4d-0007Oe-IU; Mon, 01 Jul 2019 12:06:19 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hhv4b-0007OU-QM for xen-devel@lists.xenproject.org; Mon, 01 Jul 2019 12:06:17 +0000 X-Inumbo-ID: 9f0aa25c-9bf8-11e9-add2-df2e2e774b8a Received: from m9a0001g.houston.softwaregrp.com (unknown [15.124.64.66]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 9f0aa25c-9bf8-11e9-add2-df2e2e774b8a; Mon, 01 Jul 2019 12:06:14 +0000 (UTC) Received: FROM m9a0001g.houston.softwaregrp.com (15.121.0.191) BY m9a0001g.houston.softwaregrp.com WITH ESMTP; Mon, 1 Jul 2019 12:06:08 +0000 Received: from M9W0068.microfocus.com (2002:f79:bf::f79:bf) by M9W0068.microfocus.com (2002:f79:bf::f79:bf) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1591.10; Mon, 1 Jul 2019 11:56:04 +0000 Received: from NAM04-SN1-obe.outbound.protection.outlook.com (15.124.72.11) by M9W0068.microfocus.com (15.121.0.191) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1591.10 via Frontend Transport; Mon, 1 Jul 2019 11:56:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=testarcselector01; d=microsoft.com; cv=none; b=xFbilFvZ90Mk7JHoE6scpdflu/CWM735nphj0ZHplkIwUkBwQcSTGqMFeCE0P9lm+3CCHY/naIkZlpec0a0X8XQtI2GgzxldTUf60hGAVif1G0bDZ5568Fu9h2XJK4efyKFeYFPBmxtkqtHDvaSg/HlFDC7fUwQc2XQtPBX3n6M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=testarcselector01; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oFpANnmaXej3gd/MnPKFnMuxGeLPDRqqdvV1FzbIrjk=; b=Z6Ns8xZeC73p6/T6JEMM3QrugnEJS2N6dsDe4xACMWVj6DXNuriIviQjkS5g2ktCgKFktx9N5HhWLl6Sk2OtDfDgwZPX7E7xtUgjJKUyvbp+9A7kb/lczroxBA+usYB21yyfIBWOb+juECdOI11sC5r9KQvl+/ENM31eTxI1Xuo= ARC-Authentication-Results: i=1; test.office365.com 1;spf=none;dmarc=none;dkim=none;arc=none Received: from BY5PR18MB3394.namprd18.prod.outlook.com (10.255.139.95) by BY5PR18MB3364.namprd18.prod.outlook.com (10.255.139.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Mon, 1 Jul 2019 11:56:03 +0000 Received: from BY5PR18MB3394.namprd18.prod.outlook.com ([fe80::2005:4b02:1d60:d1bc]) by BY5PR18MB3394.namprd18.prod.outlook.com ([fe80::2005:4b02:1d60:d1bc%3]) with mapi id 15.20.2008.020; Mon, 1 Jul 2019 11:56:03 +0000 From: Jan Beulich To: "xen-devel@lists.xenproject.org" Thread-Topic: [PATCH 1/6] x86emul: generalize wbinvd() hook Thread-Index: AQHVMAP1xO2bNlA31EuKZ0nW6D/01Q== Date: Mon, 1 Jul 2019 11:56:03 +0000 Message-ID: <3f30c73d-94a7-f9ca-5914-0400f1f98cc3@suse.com> References: <2d69ac51-9c4a-96f9-fd37-578658076571@suse.com> In-Reply-To: <2d69ac51-9c4a-96f9-fd37-578658076571@suse.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: DB7PR08CA0028.eurprd08.prod.outlook.com (2603:10a6:5:16::41) To BY5PR18MB3394.namprd18.prod.outlook.com (2603:10b6:a03:194::31) authentication-results: spf=none (sender IP is ) smtp.mailfrom=JBeulich@suse.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [87.234.252.170] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9d468ba8-df20-4f09-d5e4-08d6fe1b1762 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:BY5PR18MB3364; x-ms-traffictypediagnostic: BY5PR18MB3364: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-forefront-prvs: 00851CA28B x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(4636009)(346002)(39860400002)(396003)(376002)(366004)(136003)(189003)(199004)(81156014)(76176011)(6916009)(6506007)(26005)(7736002)(8936002)(81166006)(305945005)(80792005)(8676002)(102836004)(99286004)(386003)(72206003)(2906002)(256004)(31686004)(2501003)(25786009)(316002)(52116002)(14444005)(36756003)(14454004)(66066001)(73956011)(5660300002)(5640700003)(66446008)(3846002)(71190400001)(11346002)(6512007)(486006)(71200400001)(6436002)(66946007)(478600001)(66556008)(6486002)(6116002)(86362001)(53936002)(2351001)(476003)(4326008)(68736007)(31696002)(54906003)(30864003)(66476007)(64756008)(2616005)(186003)(446003); DIR:OUT; SFP:1102; SCL:1; SRVR:BY5PR18MB3364; H:BY5PR18MB3394.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: suse.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: YIjaVF2ont8gWXvYy1fuG8jInKLYeTDw5nDuKRbqMMrS0IXOxUbxPuc6XKRq0/Ich6XGlUCi7pBvUAZQULBCIA3vN+GyPnc+dfS0AcLFzvMGWs2mFSs9juwZYhJKDdnVStFwSC7TAISVgCMqO4gFUatyv5c32s1HUllZWN8SpuwJICo7JitJ4H2V3EAItkIsbSvzzYGyQa8Q2oZmGW/vIHdBtjBBTyPsfpDASY2E7A9br5+OFt9l8mAuNa/FWo0IiN8s5iRJiQkAf/QSYMgeJtq7AjEmu9Oc8Wrw1P/vEkHkfKfb3RFuMauKGw7RBQlgSXlHmL3sjRBluQGkaveJDSb+6nUFkmpyXGWjhEXk/tNV0eKjKfNBSgGcOIAX4peAmUwsOf9I/PAkJV1M38wS2FnGJ6cZ2OZu8CvqTL8vwKg= Content-ID: MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 9d468ba8-df20-4f09-d5e4-08d6fe1b1762 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jul 2019 11:56:03.1458 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 856b813c-16e5-49a5-85ec-6f081e13b527 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: JBeulich@suse.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR18MB3364 X-OriginatorOrg: suse.com Subject: [Xen-devel] [PATCH 1/6] x86emul: generalize wbinvd() hook X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Andrew Cooper , Paul Durrant , Wei Liu , RogerPau Monne Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" VGhlIGhvb2sgaXMgYWxyZWFkeSBpbiB1c2UgZm9yIG90aGVyIHB1cnBvc2VzLCBhbmQgZW11bGF0 aW5nIGUuZy4NCkNMRkxVU0ggYnkgaXNzdWluZyBXQklOVkQgaXMsIHdlbGwsIG5vdCB2ZXJ5IG5p Y2UuIFJlbmFtZSB0aGUgaG9vayBhbmQNCmFkZCBwYXJhbWV0ZXJzLiBVc2UgbGlnaHRlciB3ZWln aHQgZmx1c2hpbmcgaW5zbnMgd2hlbiBwb3NzaWJsZSBpbg0KaHZtZW11bF9jYWNoZV9vcCgpLg0K DQpodm1lbXVsX2NhY2hlX29wKCkgdHJlYXRpbmcgeDg2ZW11bF9pbnZkIHRoZSBzYW1lIGFzIHg4 NmVtdWxfd2JpbnZkIGlzDQp0byByZXRhaW4gb3JpZ2luYWwgYmVoYXZpb3IsIGJ1dCBJJ20gbm90 IHN1cmUgdGhpcyBpcyB3aGF0IHdlIHdhbnQgaW4NCnRoZSBsb25nIHJ1bi4NCg0KU2lnbmVkLW9m Zi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPg0KLS0tDQp2MjogVXNlIGNhY2hl X29wKCkgYXMgaG9vayBuYW1lLiBDb252ZXJ0IG1hY3JvcyB0byBpbmxpbmUgZnVuY3Rpb25zIGlu DQogICAgIHN5c3RlbS5oLiBSZS1iYXNlLg0KLS0tDQpJIHdhcyB1bnN1cmUgYWJvdXQgUFJFRkVU Q0gqIGFuZCBDTERFTU9URSAtIGJvdGggYXJlIGNhY2hlIG1hbmFnZW1lbnQNCmluc25zIHRvbywg YnV0IHRoZSBlbXVsYXRvciBjdXJyZW50bHkgdHJlYXRzIHRoZW0gYXMgYSBOT1Agd2l0aG91dA0K aW52b2tpbmcgYW55IGhvb2tzLg0KSSB3YXMgYWxzbyB1bmNlcnRhaW4gYWJvdXQgdGhlIG5ldyBj YWNoZV9mbHVzaF9wZXJtaXR0ZWQoKSBpbnN0YW5jZSAtDQpnZW5lcmFsbHkgSSB0aGluayBpdCB3 b3VsZG4ndCBiZSB0b28gYmFkIGlmIHdlIGFsbG93ZWQgbGluZSBmbHVzaGVzIGluDQphbGwgY2Fz ZXMsIGluIHdoaWNoIGNhc2UgdGhlIGNoZWNrcyBpbiB0aGUgLT53YmludmRfaW50ZXJjZXB0KCkg aGFuZGxlcnMNCndvdWxkIHN1ZmZpY2UgKGFzIHRoZXkgZGlkIHVudGlsIG5vdykuDQoNCi0tLSBh L3Rvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL2Z1enotZW11bC5jDQorKysgYi90 b29scy9mdXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9mdXp6LWVtdWwuYw0KQEAgLTM4Miwx MCArMzgyLDEzIEBAIHN0YXRpYyBpbnQgZnV6el9pbnZscGcoDQogICAgICByZXR1cm4gbWF5YmVf ZmFpbChjdHh0LCAiaW52bHBnIiwgZmFsc2UpOw0KICB9DQogIA0KLXN0YXRpYyBpbnQgZnV6el93 YmludmQoDQorc3RhdGljIGludCBmdXp6X2NhY2hlX29wKA0KKyAgICBlbnVtIHg4NmVtdWxfY2Fj aGVfb3Agb3AsDQorICAgIGVudW0geDg2X3NlZ21lbnQgc2VnLA0KKyAgICB1bnNpZ25lZCBsb25n IG9mZnNldCwNCiAgICAgIHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpjdHh0KQ0KICB7DQotICAg IHJldHVybiBtYXliZV9mYWlsKGN0eHQsICJ3YmludmQiLCB0cnVlKTsNCisgICAgcmV0dXJuIG1h eWJlX2ZhaWwoY3R4dCwgImNhY2hlLW1hbmFnZW1lbnQiLCB0cnVlKTsNCiAgfQ0KICANCiAgc3Rh dGljIGludCBmdXp6X3dyaXRlX2lvKA0KQEAgLTYyMCw3ICs2MjMsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IHg4Nl9lbXVsYXRlX29wcyBhbGxfDQogICAgICBTRVQocmVhZF94Y3IpLA0KICAgICAg U0VUKHJlYWRfbXNyKSwNCiAgICAgIFNFVCh3cml0ZV9tc3IpLA0KLSAgICBTRVQod2JpbnZkKSwN CisgICAgU0VUKGNhY2hlX29wKSwNCiAgICAgIFNFVChpbnZscGcpLA0KICAgICAgLmdldF9mcHUg ICAgPSBlbXVsX3Rlc3RfZ2V0X2ZwdSwNCiAgICAgIC5wdXRfZnB1ICAgID0gZW11bF90ZXN0X3B1 dF9mcHUsDQpAQCAtNzI5LDcgKzczMiw3IEBAIGVudW0gew0KICAgICAgSE9PS19yZWFkX3hjciwN CiAgICAgIEhPT0tfcmVhZF9tc3IsDQogICAgICBIT09LX3dyaXRlX21zciwNCi0gICAgSE9PS193 YmludmQsDQorICAgIEhPT0tfY2FjaGVfb3AsDQogICAgICBIT09LX2NwdWlkLA0KICAgICAgSE9P S19pbmplY3RfaHdfZXhjZXB0aW9uLA0KICAgICAgSE9PS19pbmplY3Rfc3dfaW50ZXJydXB0LA0K QEAgLTc3Myw3ICs3NzYsNyBAQCBzdGF0aWMgdm9pZCBkaXNhYmxlX2hvb2tzKHN0cnVjdCB4ODZf ZW11DQogICAgICBNQVlCRV9ESVNBQkxFX0hPT0socmVhZF94Y3IpOw0KICAgICAgTUFZQkVfRElT QUJMRV9IT09LKHJlYWRfbXNyKTsNCiAgICAgIE1BWUJFX0RJU0FCTEVfSE9PSyh3cml0ZV9tc3Ip Ow0KLSAgICBNQVlCRV9ESVNBQkxFX0hPT0sod2JpbnZkKTsNCisgICAgTUFZQkVfRElTQUJMRV9I T09LKGNhY2hlX29wKTsNCiAgICAgIE1BWUJFX0RJU0FCTEVfSE9PSyhjcHVpZCk7DQogICAgICBN QVlCRV9ESVNBQkxFX0hPT0soZ2V0X2ZwdSk7DQogICAgICBNQVlCRV9ESVNBQkxFX0hPT0soaW52 bHBnKTsNCi0tLSBhL3hlbi9hcmNoL3g4Ni9SdWxlcy5taw0KKysrIGIveGVuL2FyY2gveDg2L1J1 bGVzLm1rDQpAQCAtMTksNyArMTksOSBAQCAkKGNhbGwgYXMtb3B0aW9uLWFkZCxDRkxBR1MsQ0Ms ImNyYzMyICVlDQogICQoY2FsbCBhcy1vcHRpb24tYWRkLENGTEFHUyxDQywiaW52ZXB0ICglcmF4 KSQkKGNvbW1hKSVyYXgiLC1ESEFWRV9BU19FUFQpDQogICQoY2FsbCBhcy1vcHRpb24tYWRkLENG TEFHUyxDQywicmRyYW5kICVlYXgiLC1ESEFWRV9BU19SRFJBTkQpDQogICQoY2FsbCBhcy1vcHRp b24tYWRkLENGTEFHUyxDQywicmRmc2Jhc2UgJXJheCIsLURIQVZFX0FTX0ZTR1NCQVNFKQ0KKyQo Y2FsbCBhcy1vcHRpb24tYWRkLENGTEFHUyxDQywieHNhdmVvcHQgKCVyYXgpIiwtREhBVkVfQVNf WFNBVkVPUFQpDQogICQoY2FsbCBhcy1vcHRpb24tYWRkLENGTEFHUyxDQywicmRzZWVkICVlYXgi LC1ESEFWRV9BU19SRFNFRUQpDQorJChjYWxsIGFzLW9wdGlvbi1hZGQsQ0ZMQUdTLENDLCJjbHdi ICglcmF4KSIsLURIQVZFX0FTX0NMV0IpDQogICQoY2FsbCBhcy1vcHRpb24tYWRkLENGTEFHUyxD QywiLmVxdSBcInhcIiQkKGNvbW1hKTEiLCBcDQogICAgICAgICAgICAgICAgICAgICAgIC1VX19P QkpFQ1RfTEFCRUxfXyAtREhBVkVfQVNfUVVPVEVEX1NZTSBcDQogICAgICAgICAgICAgICAgICAg ICAgICctRF9fT0JKRUNUX0xBQkVMX189JChzdWJzdCAkKEJBU0VESVIpLywsJChDVVJESVIpKS8k JEAnKQ0KLS0tIGEveGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMNCisrKyBiL3hlbi9hcmNoL3g4 Ni9odm0vZW11bGF0ZS5jDQpAQCAtMjUsNiArMjUsNyBAQA0KICAjaW5jbHVkZSA8YXNtL2h2bS90 cmFjZS5oPg0KICAjaW5jbHVkZSA8YXNtL2h2bS9zdXBwb3J0Lmg+DQogICNpbmNsdWRlIDxhc20v aHZtL3N2bS9zdm0uaD4NCisjaW5jbHVkZSA8YXNtL2lvY2FwLmg+DQogICNpbmNsdWRlIDxhc20v dm1fZXZlbnQuaD4NCiAgDQogIHN0YXRpYyB2b2lkIGh2bXRyYWNlX2lvX2Fzc2lzdChjb25zdCBp b3JlcV90ICpwKQ0KQEAgLTU1NSwxNiArNTU2LDEyIEBAIHN0YXRpYyB2b2lkICpodm1lbXVsX21h cF9saW5lYXJfYWRkcigNCiAgICAgIG1mbl90ICptZm4gPSAmaHZtZW11bF9jdHh0LT5tZm5bMF07 DQogIA0KICAgICAgLyoNCi0gICAgICogVGhlIGNhbGxlciBoYXMgbm8gbGVnaXRpbWF0ZSByZWFz b24gZm9yIHRyeWluZyBhIHplcm8tYnl0ZSB3cml0ZSwgYnV0DQotICAgICAqIGFsbCBvdGhlciBj b2RlIGhlcmUgaXMgd3JpdHRlbiB0byB3b3JrIGlmIHRoZSBjaGVjayBiZWxvdyB3YXMgZHJvcHBl ZC4NCi0gICAgICoNCi0gICAgICogVGhlIG1heGltdW0gd3JpdGUgc2l6ZSBkZXBlbmRzIG9uIHRo ZSBudW1iZXIgb2YgYWRqYWNlbnQgbWZuc1tdIHdoaWNoDQorICAgICAqIFRoZSBtYXhpbXVtIGFj Y2VzcyBzaXplIGRlcGVuZHMgb24gdGhlIG51bWJlciBvZiBhZGphY2VudCBtZm5zW10gd2hpY2gN CiAgICAgICAqIGNhbiBiZSB2bWFwKCknZCwgYWNjb3V0aW5nIGZvciBwb3NzaWJsZSBtaXNhbGln bm1lbnQgd2l0aGluIHRoZSByZWdpb24uDQogICAgICAgKiBUaGUgaGlnaGVyIGxldmVsIGVtdWxh dGlvbiBjYWxsZXJzIGFyZSByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgdGhhdA0KLSAgICAgKiBt Zm5zW10gaXMgbGFyZ2UgZW5vdWdoIGZvciB0aGUgcmVxdWVzdGVkIHdyaXRlIHNpemUuDQorICAg ICAqIG1mbnNbXSBpcyBsYXJnZSBlbm91Z2ggZm9yIHRoZSByZXF1ZXN0ZWQgYWNjZXNzIHNpemUu DQogICAgICAgKi8NCi0gICAgaWYgKCBieXRlcyA9PSAwIHx8DQotICAgICAgICAgbnJfZnJhbWVz ID4gQVJSQVlfU0laRShodm1lbXVsX2N0eHQtPm1mbikgKQ0KKyAgICBpZiAoIG5yX2ZyYW1lcyA+ IEFSUkFZX1NJWkUoaHZtZW11bF9jdHh0LT5tZm4pICkNCiAgICAgIHsNCiAgICAgICAgICBBU1NF UlRfVU5SRUFDSEFCTEUoKTsNCiAgICAgICAgICBnb3RvIHVuaGFuZGxlYWJsZTsNCkBAIC02Njks OCArNjY2LDYgQEAgc3RhdGljIHZvaWQgaHZtZW11bF91bm1hcF9saW5lYXJfYWRkcigNCiAgICAg IHVuc2lnbmVkIGludCBpOw0KICAgICAgbWZuX3QgKm1mbiA9ICZodm1lbXVsX2N0eHQtPm1mblsw XTsNCiAgDQotICAgIEFTU0VSVChieXRlcyA+IDApOw0KLQ0KICAgICAgaWYgKCBucl9mcmFtZXMg PT0gMSApDQogICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobWFwcGluZyk7DQogICAgICBlbHNl DQpAQCAtMTQ3Myw3ICsxNDY4LDEwIEBAIHN0YXRpYyBpbnQgaHZtZW11bF93cml0ZV9tc3JfZGlz Y2FyZCgNCiAgICAgIHJldHVybiBYODZFTVVMX09LQVk7DQogIH0NCiAgDQotc3RhdGljIGludCBo dm1lbXVsX3diaW52ZF9kaXNjYXJkKA0KK3N0YXRpYyBpbnQgaHZtZW11bF9jYWNoZV9vcF9kaXNj YXJkKA0KKyAgICBlbnVtIHg4NmVtdWxfY2FjaGVfb3Agb3AsDQorICAgIGVudW0geDg2X3NlZ21l bnQgc2VnLA0KKyAgICB1bnNpZ25lZCBsb25nIG9mZnNldCwNCiAgICAgIHN0cnVjdCB4ODZfZW11 bGF0ZV9jdHh0ICpjdHh0KQ0KICB7DQogICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOw0KQEAgLTIx NDksMTAgKzIxNDcsNjUgQEAgc3RhdGljIGludCBodm1lbXVsX3dyaXRlX21zcigNCiAgICAgIHJl dHVybiByYzsNCiAgfQ0KICANCi1zdGF0aWMgaW50IGh2bWVtdWxfd2JpbnZkKA0KK3N0YXRpYyBp bnQgaHZtZW11bF9jYWNoZV9vcCgNCisgICAgZW51bSB4ODZlbXVsX2NhY2hlX29wIG9wLA0KKyAg ICBlbnVtIHg4Nl9zZWdtZW50IHNlZywNCisgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQsDQogICAg ICBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkNCiAgew0KLSAgICBhbHRlcm5hdGl2ZV92 Y2FsbChodm1fZnVuY3Mud2JpbnZkX2ludGVyY2VwdCk7DQorICAgIHN0cnVjdCBodm1fZW11bGF0 ZV9jdHh0ICpodm1lbXVsX2N0eHQgPQ0KKyAgICAgICAgY29udGFpbmVyX29mKGN0eHQsIHN0cnVj dCBodm1fZW11bGF0ZV9jdHh0LCBjdHh0KTsNCisgICAgdW5zaWduZWQgbG9uZyBhZGRyLCByZXBz ID0gMTsNCisgICAgdWludDMyX3QgcGZlYyA9IFBGRUNfcGFnZV9wcmVzZW50Ow0KKyAgICBpbnQg cmM7DQorICAgIHZvaWQgKm1hcHBpbmc7DQorDQorICAgIGlmICggIWNhY2hlX2ZsdXNoX3Blcm1p dHRlZChjdXJyZW50LT5kb21haW4pICkNCisgICAgICAgIHJldHVybiBYODZFTVVMX09LQVk7DQor DQorICAgIHN3aXRjaCAoIG9wICkNCisgICAgew0KKyAgICBjYXNlIHg4NmVtdWxfY2xmbHVzaDoN CisgICAgY2FzZSB4ODZlbXVsX2NsZmx1c2hvcHQ6DQorICAgIGNhc2UgeDg2ZW11bF9jbHdiOg0K KyAgICAgICAgQVNTRVJUKCFpc194ODZfc3lzdGVtX3NlZ21lbnQoc2VnKSk7DQorDQorICAgICAg ICByYyA9IGh2bWVtdWxfdmlydHVhbF90b19saW5lYXIoc2VnLCBvZmZzZXQsIDAsICZyZXBzLA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh2bV9hY2Nlc3NfcmVhZCwg aHZtZW11bF9jdHh0LCAmYWRkcik7DQorICAgICAgICBpZiAoIHJjICE9IFg4NkVNVUxfT0tBWSAp DQorICAgICAgICAgICAgYnJlYWs7DQorDQorICAgICAgICBpZiAoIGh2bWVtdWxfY3R4dC0+c2Vn X3JlZ1t4ODZfc2VnX3NzXS5kcGwgPT0gMyApDQorICAgICAgICAgICAgcGZlYyB8PSBQRkVDX3Vz ZXJfbW9kZTsNCisNCisgICAgICAgIG1hcHBpbmcgPSBodm1lbXVsX21hcF9saW5lYXJfYWRkcihh ZGRyLCAwLCBwZmVjLCBodm1lbXVsX2N0eHQsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY3VycmVudC0+YXJjaC5odm0uZGF0YV9jYWNoZSk7DQorICAgICAgICBp ZiAoIG1hcHBpbmcgPT0gRVJSX1BUUih+WDg2RU1VTF9FWENFUFRJT04pICkNCisgICAgICAgICAg ICByZXR1cm4gWDg2RU1VTF9FWENFUFRJT047DQorICAgICAgICBpZiAoIElTX0VSUl9PUl9OVUxM KG1hcHBpbmcpICkNCisgICAgICAgICAgICBicmVhazsNCisNCisgICAgICAgIGlmICggY3B1X2hh c19jbGZsdXNoICkNCisgICAgICAgIHsNCisgICAgICAgICAgICBpZiAoIG9wID09IHg4NmVtdWxf Y2x3YiAmJiBjcHVfaGFzX2Nsd2IgKQ0KKyAgICAgICAgICAgICAgICBjbHdiKG1hcHBpbmcpOw0K KyAgICAgICAgICAgIGVsc2UgaWYgKCBvcCA9PSB4ODZlbXVsX2NsZmx1c2hvcHQgJiYgY3B1X2hh c19jbGZsdXNob3B0ICkNCisgICAgICAgICAgICAgICAgY2xmbHVzaG9wdChtYXBwaW5nKTsNCisg ICAgICAgICAgICBlbHNlDQorICAgICAgICAgICAgICAgIGNsZmx1c2gobWFwcGluZyk7DQorDQor ICAgICAgICAgICAgaHZtZW11bF91bm1hcF9saW5lYXJfYWRkcihtYXBwaW5nLCBhZGRyLCAwLCBo dm1lbXVsX2N0eHQpOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgfQ0KKw0KKyAgICAg ICAgaHZtZW11bF91bm1hcF9saW5lYXJfYWRkcihtYXBwaW5nLCBhZGRyLCAwLCBodm1lbXVsX2N0 eHQpOw0KKyAgICAgICAgLyogZmFsbCB0aHJvdWdoICovDQorICAgIGNhc2UgeDg2ZW11bF9pbnZk Og0KKyAgICBjYXNlIHg4NmVtdWxfd2JpbnZkOg0KKyAgICAgICAgYWx0ZXJuYXRpdmVfdmNhbGwo aHZtX2Z1bmNzLndiaW52ZF9pbnRlcmNlcHQpOw0KKyAgICAgICAgYnJlYWs7DQorICAgIH0NCisN CiAgICAgIHJldHVybiBYODZFTVVMX09LQVk7DQogIH0NCiAgDQpAQCAtMjM1Myw3ICsyNDA2LDcg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgaHZtXw0KICAgICAgLndyaXRl X3hjciAgICAgPSBodm1lbXVsX3dyaXRlX3hjciwNCiAgICAgIC5yZWFkX21zciAgICAgID0gaHZt ZW11bF9yZWFkX21zciwNCiAgICAgIC53cml0ZV9tc3IgICAgID0gaHZtZW11bF93cml0ZV9tc3Is DQotICAgIC53YmludmQgICAgICAgID0gaHZtZW11bF93YmludmQsDQorICAgIC5jYWNoZV9vcCAg ICAgID0gaHZtZW11bF9jYWNoZV9vcCwNCiAgICAgIC5jcHVpZCAgICAgICAgID0geDg2ZW11bF9j cHVpZCwNCiAgICAgIC5nZXRfZnB1ICAgICAgID0gaHZtZW11bF9nZXRfZnB1LA0KICAgICAgLnB1 dF9mcHUgICAgICAgPSBodm1lbXVsX3B1dF9mcHUsDQpAQCAtMjM4MCw3ICsyNDMzLDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCB4ODZfZW11bGF0ZV9vcHMgaHZtXw0KICAgICAgLndyaXRlX3hjciAg ICAgPSBodm1lbXVsX3dyaXRlX3hjciwNCiAgICAgIC5yZWFkX21zciAgICAgID0gaHZtZW11bF9y ZWFkX21zciwNCiAgICAgIC53cml0ZV9tc3IgICAgID0gaHZtZW11bF93cml0ZV9tc3JfZGlzY2Fy ZCwNCi0gICAgLndiaW52ZCAgICAgICAgPSBodm1lbXVsX3diaW52ZF9kaXNjYXJkLA0KKyAgICAu Y2FjaGVfb3AgICAgICA9IGh2bWVtdWxfY2FjaGVfb3BfZGlzY2FyZCwNCiAgICAgIC5jcHVpZCAg ICAgICAgID0geDg2ZW11bF9jcHVpZCwNCiAgICAgIC5nZXRfZnB1ICAgICAgID0gaHZtZW11bF9n ZXRfZnB1LA0KICAgICAgLnB1dF9mcHUgICAgICAgPSBodm1lbXVsX3B1dF9mcHUsDQotLS0gYS94 ZW4vYXJjaC94ODYvcHYvZW11bC1wcml2LW9wLmMNCisrKyBiL3hlbi9hcmNoL3g4Ni9wdi9lbXVs LXByaXYtb3AuYw0KQEAgLTExMTgsOSArMTExOCwxMSBAQCBzdGF0aWMgaW50IHdyaXRlX21zcih1 bnNpZ25lZCBpbnQgcmVnLCB1DQogICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7DQog IH0NCiAgDQotLyogTmFtZSBpdCBkaWZmZXJlbnRseSB0byBhdm9pZCBjbGFzaGluZyB3aXRoIHdi aW52ZCgpICovDQotc3RhdGljIGludCBfd2JpbnZkKHN0cnVjdCB4ODZfZW11bGF0ZV9jdHh0ICpj dHh0KQ0KK3N0YXRpYyBpbnQgY2FjaGVfb3AoZW51bSB4ODZlbXVsX2NhY2hlX29wIG9wLCBlbnVt IHg4Nl9zZWdtZW50IHNlZywNCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgb2Zm c2V0LCBzdHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCkNCiAgew0KKyAgICBBU1NFUlQob3Ag PT0geDg2ZW11bF93YmludmQpOw0KKw0KICAgICAgLyogSWdub3JlIHRoZSBpbnN0cnVjdGlvbiBp ZiB1bnByaXZpbGVnZWQuICovDQogICAgICBpZiAoICFjYWNoZV9mbHVzaF9wZXJtaXR0ZWQoY3Vy cmVudC0+ZG9tYWluKSApDQogICAgICAgICAgLyoNCkBAIC0xMjM4LDcgKzEyNDAsNyBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IHg4Nl9lbXVsYXRlX29wcyBwcml2DQogICAgICAucmVhZF9tc3IgICAg ICAgICAgICA9IHJlYWRfbXNyLA0KICAgICAgLndyaXRlX21zciAgICAgICAgICAgPSB3cml0ZV9t c3IsDQogICAgICAuY3B1aWQgICAgICAgICAgICAgICA9IHg4NmVtdWxfY3B1aWQsDQotICAgIC53 YmludmQgICAgICAgICAgICAgID0gX3diaW52ZCwNCisgICAgLmNhY2hlX29wICAgICAgICAgICAg PSBjYWNoZV9vcCwNCiAgfTsNCiAgDQogIGludCBwdl9lbXVsYXRlX3ByaXZpbGVnZWRfb3Aoc3Ry dWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MpDQotLS0gYS94ZW4vYXJjaC94ODYveDg2X2VtdWxhdGUv eDg2X2VtdWxhdGUuYw0KKysrIGIveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRl LmMNCkBAIC01OTMzLDggKzU5MzMsMTEgQEAgeDg2X2VtdWxhdGUoDQogICAgICBjYXNlIFg4NkVN VUxfT1BDKDB4MGYsIDB4MDgpOiAvKiBpbnZkICovDQogICAgICBjYXNlIFg4NkVNVUxfT1BDKDB4 MGYsIDB4MDkpOiAvKiB3YmludmQgKi8NCiAgICAgICAgICBnZW5lcmF0ZV9leGNlcHRpb25faWYo IW1vZGVfcmluZzAoKSwgRVhDX0dQLCAwKTsNCi0gICAgICAgIGZhaWxfaWYob3BzLT53YmludmQg PT0gTlVMTCk7DQotICAgICAgICBpZiAoIChyYyA9IG9wcy0+d2JpbnZkKGN0eHQpKSAhPSAwICkN CisgICAgICAgIGZhaWxfaWYoIW9wcy0+Y2FjaGVfb3ApOw0KKyAgICAgICAgaWYgKCAocmMgPSBv cHMtPmNhY2hlX29wKGIgPT0gMHgwOSA/IHg4NmVtdWxfd2JpbnZkDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogeDg2ZW11bF9pbnZkLA0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHg4Nl9zZWdfbm9uZSwgMCwNCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjdHh0KSkgIT0gWDg2RU1VTF9PS0FZICkNCiAgICAgICAgICAgICAg Z290byBkb25lOw0KICAgICAgICAgIGJyZWFrOw0KICANCkBAIC03ODAxLDggKzc4MDQsOSBAQCB4 ODZfZW11bGF0ZSgNCiAgICAgICAgICAgICAgLyogZWxzZSBjbHdiICovDQogICAgICAgICAgICAg IGZhaWxfaWYoIXZleC5wZngpOw0KICAgICAgICAgICAgICB2Y3B1X211c3RfaGF2ZShjbHdiKTsN Ci0gICAgICAgICAgICBmYWlsX2lmKCFvcHMtPndiaW52ZCk7DQotICAgICAgICAgICAgaWYgKCAo cmMgPSBvcHMtPndiaW52ZChjdHh0KSkgIT0gWDg2RU1VTF9PS0FZICkNCisgICAgICAgICAgICBm YWlsX2lmKCFvcHMtPmNhY2hlX29wKTsNCisgICAgICAgICAgICBpZiAoIChyYyA9IG9wcy0+Y2Fj aGVfb3AoeDg2ZW11bF9jbHdiLCBlYS5tZW0uc2VnLCBlYS5tZW0ub2ZmLA0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjdHh0KSkgIT0gWDg2RU1VTF9PS0FZICkNCiAgICAg ICAgICAgICAgICAgIGdvdG8gZG9uZTsNCiAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAg Y2FzZSA3Og0KQEAgLTc4MTgsOCArNzgyMiwxMSBAQCB4ODZfZW11bGF0ZSgNCiAgICAgICAgICAg ICAgICAgIHZjcHVfbXVzdF9oYXZlKGNsZmx1c2gpOw0KICAgICAgICAgICAgICBlbHNlDQogICAg ICAgICAgICAgICAgICB2Y3B1X211c3RfaGF2ZShjbGZsdXNob3B0KTsNCi0gICAgICAgICAgICBm YWlsX2lmKG9wcy0+d2JpbnZkID09IE5VTEwpOw0KLSAgICAgICAgICAgIGlmICggKHJjID0gb3Bz LT53YmludmQoY3R4dCkpICE9IDAgKQ0KKyAgICAgICAgICAgIGZhaWxfaWYoIW9wcy0+Y2FjaGVf b3ApOw0KKyAgICAgICAgICAgIGlmICggKHJjID0gb3BzLT5jYWNoZV9vcCh2ZXgucGZ4ID8geDg2 ZW11bF9jbGZsdXNob3B0DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOiB4ODZlbXVsX2NsZmx1c2gsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVhLm1lbS5zZWcsIGVhLm1lbS5vZmYsDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGN0eHQpKSAhPSBYODZFTVVMX09LQVkgKQ0KICAgICAgICAgICAgICAgICAg Z290byBkb25lOw0KICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICBkZWZhdWx0Og0KLS0t IGEveGVuL2FyY2gveDg2L3g4Nl9lbXVsYXRlL3g4Nl9lbXVsYXRlLmgNCisrKyBiL3hlbi9hcmNo L3g4Ni94ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5oDQpAQCAtMTc2LDYgKzE3NiwxNCBAQCBlbnVt IHg4Nl9lbXVsYXRlX2ZwdV90eXBlIHsNCiAgICAgIFg4NkVNVUxfRlBVX25vbmUNCiAgfTsNCiAg DQorZW51bSB4ODZlbXVsX2NhY2hlX29wIHsNCisgICAgeDg2ZW11bF9jbGZsdXNoLA0KKyAgICB4 ODZlbXVsX2NsZmx1c2hvcHQsDQorICAgIHg4NmVtdWxfY2x3YiwNCisgICAgeDg2ZW11bF9pbnZk LA0KKyAgICB4ODZlbXVsX3diaW52ZCwNCit9Ow0KKw0KICBzdHJ1Y3QgeDg2X2VtdWxhdGVfc3Rh dGU7DQogIA0KICAvKg0KQEAgLTQ1Miw4ICs0NjAsMTUgQEAgc3RydWN0IHg4Nl9lbXVsYXRlX29w cw0KICAgICAgICAgIHVpbnQ2NF90IHZhbCwNCiAgICAgICAgICBzdHJ1Y3QgeDg2X2VtdWxhdGVf Y3R4dCAqY3R4dCk7DQogIA0KLSAgICAvKiB3YmludmQ6IFdyaXRlLWJhY2sgYW5kIGludmFsaWRh dGUgY2FjaGUgY29udGVudHMuICovDQotICAgIGludCAoKndiaW52ZCkoDQorICAgIC8qDQorICAg ICAqIGNhY2hlX29wOiBXcml0ZS1iYWNrIGFuZC9vciBpbnZhbGlkYXRlIGNhY2hlIGNvbnRlbnRz Lg0KKyAgICAgKg0KKyAgICAgKiBAc2VnOkBvZmZzZXQgYXBwbGljYWJsZSBvbmx5IHRvIHNvbWUg b2YgZW51bSB4ODZlbXVsX2NhY2hlX29wLg0KKyAgICAgKi8NCisgICAgaW50ICgqY2FjaGVfb3Ap KA0KKyAgICAgICAgZW51bSB4ODZlbXVsX2NhY2hlX29wIG9wLA0KKyAgICAgICAgZW51bSB4ODZf c2VnbWVudCBzZWcsDQorICAgICAgICB1bnNpZ25lZCBsb25nIG9mZnNldCwNCiAgICAgICAgICBz dHJ1Y3QgeDg2X2VtdWxhdGVfY3R4dCAqY3R4dCk7DQogIA0KICAgICAgLyogY3B1aWQ6IEVtdWxh dGUgQ1BVSUQgdmlhIGdpdmVuIHNldCBvZiBFQVgtRURYIGlucHV0cy9vdXRwdXRzLiAqLw0KLS0t IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVmZWF0dXJlLmgNCisrKyBiL3hlbi9pbmNsdWRlL2Fz bS14ODYvY3B1ZmVhdHVyZS5oDQpAQCAtMTAyLDYgKzEwMiw4IEBADQogICNkZWZpbmUgY3B1X2hh c19yZHNlZWQgICAgICAgICAgYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1JEU0VFRCkNCiAgI2Rl ZmluZSBjcHVfaGFzX3NtYXAgICAgICAgICAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfU01B UCkNCiAgI2RlZmluZSBjcHVfaGFzX2F2eDUxMl9pZm1hICAgICBib290X2NwdV9oYXMoWDg2X0ZF QVRVUkVfQVZYNTEyX0lGTUEpDQorI2RlZmluZSBjcHVfaGFzX2NsZmx1c2hvcHQgICAgICBib290 X2NwdV9oYXMoWDg2X0ZFQVRVUkVfQ0xGTFVTSE9QVCkNCisjZGVmaW5lIGNwdV9oYXNfY2x3YiAg ICAgICAgICAgIGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9DTFdCKQ0KICAjZGVmaW5lIGNwdV9o YXNfYXZ4NTEyZXIgICAgICAgIGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9BVlg1MTJFUikNCiAg I2RlZmluZSBjcHVfaGFzX2F2eDUxMmNkICAgICAgICBib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVf QVZYNTEyQ0QpDQogICNkZWZpbmUgY3B1X2hhc19zaGEgICAgICAgICAgICAgYm9vdF9jcHVfaGFz KFg4Nl9GRUFUVVJFX1NIQSkNCi0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvc3lzdGVtLmgNCisr KyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvc3lzdGVtLmgNCkBAIC0yMSw2ICsyMSwyMyBAQCBzdGF0 aWMgaW5saW5lIHZvaWQgY2xmbHVzaChjb25zdCB2b2lkICpwDQogICAgICBhc20gdm9sYXRpbGUg KCAiY2xmbHVzaCAlMCIgOjogIm0iICgqKGNvbnN0IGNoYXIgKilwKSApOw0KICB9DQogIA0KK3N0 YXRpYyBpbmxpbmUgdm9pZCBjbGZsdXNob3B0KGNvbnN0IHZvaWQgKnApDQorew0KKyAgICBhc20g dm9sYXRpbGUgKCAiZGF0YTE2IGNsZmx1c2ggJTAiIDo6ICJtIiAoKihjb25zdCBjaGFyICopcCkg KTsNCit9DQorDQorc3RhdGljIGlubGluZSB2b2lkIGNsd2IoY29uc3Qgdm9pZCAqcCkNCit7DQor I2lmIGRlZmluZWQoSEFWRV9BU19DTFdCKQ0KKyAgICBhc20gdm9sYXRpbGUgKCAiY2x3YiAlMCIg OjogIm0iICgqKGNvbnN0IGNoYXIgKilwKSApOw0KKyNlbGlmIGRlZmluZWQoSEFWRV9BU19YU0FW RU9QVCkNCisgICAgYXNtIHZvbGF0aWxlICggImRhdGExNiB4c2F2ZW9wdCAlMCIgOjogIm0iICgq KGNvbnN0IGNoYXIgKilwKSApOw0KKyNlbHNlDQorICAgIGFzbSB2b2xhdGlsZSAoICIuYnl0ZSAw eDY2LCAweDBmLCAweGFlLCAweDMyIg0KKyAgICAgICAgICAgICAgICAgICA6OiAiZCIgKHApLCAi bSIgKCooY29uc3QgY2hhciAqKXApICk7DQorI2VuZGlmDQorfQ0KKw0KICAjZGVmaW5lIHhjaGco cHRyLHYpIFwNCiAgICAgICgoX190eXBlb2ZfXygqKHB0cikpKV9feGNoZygodW5zaWduZWQgbG9u ZykodiksKHB0ciksc2l6ZW9mKCoocHRyKSkpKQ0KICANCg0KX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWls bWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==