From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by mx.groups.io with SMTP id smtpd.web09.3685.1608154359536031779 for ; Wed, 16 Dec 2020 13:32:39 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=hs0De7ch; spf=pass (domain: redhat.com, ip: 63.128.21.124, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1608154358; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=iEUvRYN3MxWKlwByPpc50z+iKzaO+N1qzhb2IiwO+Bo=; b=hs0De7chJavdVnfOU86oL4TvfXhwHE8NL2EPMQals2j0JtCkEpBte5ZK8DeO2DfW58zGcS RHyb8lxiXV0huY/casqR979j5WT8XbqUrjljrb6TxAH5c8K7aFManrArihZpVUvIPSPfnC IAwhL2g9BQepttYGIrrCl4T2FSod9QA= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-462-qwsZ_4XdPpOCUb3RRBPX2A-1; Wed, 16 Dec 2020 16:32:34 -0500 X-MC-Unique: qwsZ_4XdPpOCUb3RRBPX2A-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 7748E801B12; Wed, 16 Dec 2020 21:32:33 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-114-152.ams2.redhat.com [10.36.114.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id 68AA219CBD; Wed, 16 Dec 2020 21:32:28 +0000 (UTC) From: "Laszlo Ersek" To: devel@edk2.groups.io, virtio-fs@redhat.com, lersek@redhat.com Cc: Ard Biesheuvel , Jordan Justen , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [edk2 PATCH 10/48] OvmfPkg/VirtioFsDxe: add shared wrapper for FUSE_RELEASE / FUSE_RELEASEDIR Date: Wed, 16 Dec 2020 22:10:47 +0100 Message-Id: <20201216211125.19496-11-lersek@redhat.com> In-Reply-To: <20201216211125.19496-1-lersek@redhat.com> References: <20201216211125.19496-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=lersek@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 VGhlIEZVU0VfUkVMRUFTRSBhbmQgRlVTRV9SRUxFQVNFRElSIGNvbW1hbmRzIG9ubHkgZGlmZmVy IGluIHRoZSBvcGNvZGUuCkFkZCBhIGNvbW1vbiBmdW5jdGlvbiBjYWxsZWQgVmlydGlvRnNGdXNl UmVsZWFzZUZpbGVPckRpcigpIGZvciBzZW5kaW5nCmVpdGhlciBjb21tYW5kLgoKQ2M6IEFyZCBC aWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBhcm0uY29tPgpDYzogSm9yZGFuIEp1c3RlbiA8am9y ZGFuLmwuanVzdGVuQGludGVsLmNvbT4KQ2M6IFBoaWxpcHBlIE1hdGhpZXUtRGF1ZMOpIDxwaGls bWRAcmVkaGF0LmNvbT4KUmVmOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19i dWcuY2dpP2lkPTMwOTcKU2lnbmVkLW9mZi1ieTogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0 LmNvbT4KLS0tCiBPdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9WaXJ0aW9Gcy5oIHwg IDEyICsrCiBPdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmluZiAgICAgICAgIHwgICAx ICsKIE92bWZQa2cvVmlydGlvRnNEeGUvVmlydGlvRnNEeGUuaCAgICAgICAgICAgfCAgIDggKysK IE92bWZQa2cvVmlydGlvRnNEeGUvRnVzZVJlbGVhc2UuYyAgICAgICAgICAgfCAxMjEgKysrKysr KysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMTQyIGluc2VydGlvbnMoKykKCmRpZmYg LS1naXQgYS9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9WaXJ0aW9Gcy5oIGIvT3Zt ZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvVmlydGlvRnMuaAppbmRleCBjNDgxMDUzMjU1 MTUuLmMxN2E0M2MxNjBlMyAxMDA2NDQKLS0tIGEvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3Rh bmRhcmQvVmlydGlvRnMuaAorKysgYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9W aXJ0aW9Gcy5oCkBAIC03NSwxOCArNzUsMjAgQEAgdHlwZWRlZiBzdHJ1Y3QgewogLy8NCiAjZGVm aW5lIFZJUlRJT19GU19GVVNFX01BSk9SICA3DQogI2RlZmluZSBWSVJUSU9fRlNfRlVTRV9NSU5P UiAzMQ0KIA0KIC8vDQogLy8gRlVTRSBvcGVyYXRpb24gY29kZXMuDQogLy8NCiB0eXBlZGVmIGVu dW0gew0KKyAgVmlydGlvRnNGdXNlT3BSZWxlYXNlICAgICA9IDE4LA0KICAgVmlydGlvRnNGdXNl T3BJbml0ICAgICAgICA9IDI2LA0KICAgVmlydGlvRnNGdXNlT3BPcGVuRGlyICAgICA9IDI3LA0K KyAgVmlydGlvRnNGdXNlT3BSZWxlYXNlRGlyICA9IDI5LA0KIH0gVklSVElPX0ZTX0ZVU0VfT1BD T0RFOw0KIA0KICNwcmFnbWEgcGFjayAoMSkNCiAvLw0KIC8vIFJlcXVlc3QtcmVzcG9uc2UgaGVh ZGVycyBjb21tb24gdG8gYWxsIHJlcXVlc3QgdHlwZXMuDQogLy8NCiB0eXBlZGVmIHN0cnVjdCB7 DQogICBVSU5UMzIgTGVuOw0KQEAgLTEwMCwxNiArMTAyLDI2IEBAIHR5cGVkZWYgc3RydWN0IHsK IH0gVklSVElPX0ZTX0ZVU0VfUkVRVUVTVDsNCiANCiB0eXBlZGVmIHN0cnVjdCB7DQogICBVSU5U MzIgTGVuOw0KICAgSU5UMzIgIEVycm9yOw0KICAgVUlOVDY0IFVuaXF1ZTsNCiB9IFZJUlRJT19G U19GVVNFX1JFU1BPTlNFOw0KIA0KKy8vDQorLy8gSGVhZGVyIGZvciBWaXJ0aW9Gc0Z1c2VPcFJl bGVhc2UgYW5kIFZpcnRpb0ZzRnVzZU9wUmVsZWFzZURpci4NCisvLw0KK3R5cGVkZWYgc3RydWN0 IHsNCisgIFVJTlQ2NCBGaWxlSGFuZGxlOw0KKyAgVUlOVDMyIEZsYWdzOw0KKyAgVUlOVDMyIFJl bGVhc2VGbGFnczsNCisgIFVJTlQ2NCBMb2NrT3duZXI7DQorfSBWSVJUSU9fRlNfRlVTRV9SRUxF QVNFX1JFUVVFU1Q7DQorDQogLy8NCiAvLyBIZWFkZXJzIGZvciBWaXJ0aW9Gc0Z1c2VPcEluaXQu DQogLy8NCiB0eXBlZGVmIHN0cnVjdCB7DQogICBVSU5UMzIgTWFqb3I7DQogICBVSU5UMzIgTWlu b3I7DQogICBVSU5UMzIgTWF4UmVhZGFoZWFkOw0KICAgVUlOVDMyIEZsYWdzOw0KZGlmZiAtLWdp dCBhL092bWZQa2cvVmlydGlvRnNEeGUvVmlydGlvRnNEeGUuaW5mIGIvT3ZtZlBrZy9WaXJ0aW9G c0R4ZS9WaXJ0aW9Gc0R4ZS5pbmYKaW5kZXggMDUxYWNiZGQ3MTk5Li45NWIxYTVhOGY2MGEgMTAw NjQ0Ci0tLSBhL092bWZQa2cvVmlydGlvRnNEeGUvVmlydGlvRnNEeGUuaW5mCisrKyBiL092bWZQ a2cvVmlydGlvRnNEeGUvVmlydGlvRnNEeGUuaW5mCkBAIC03OSwxNiArNzksMTcgQEAgW0RlZmlu ZXNdCiBbUGFja2FnZXNdDQogICBNZGVQa2cvTWRlUGtnLmRlYw0KICAgT3ZtZlBrZy9Pdm1mUGtn LmRlYw0KIA0KIFtTb3VyY2VzXQ0KICAgRHJpdmVyQmluZGluZy5jDQogICBGdXNlSW5pdC5jDQog ICBGdXNlT3BlbkRpci5jDQorICBGdXNlUmVsZWFzZS5jDQogICBIZWxwZXJzLmMNCiAgIFNpbXBs ZUZzT3BlblZvbHVtZS5jDQogICBWaXJ0aW9Gc0R4ZS5oDQogDQogW0xpYnJhcnlDbGFzc2VzXQ0K ICAgQmFzZUxpYg0KICAgRGVidWdMaWINCiAgIE1lbW9yeUFsbG9jYXRpb25MaWINCmRpZmYgLS1n aXQgYS9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmggYi9Pdm1mUGtnL1ZpcnRpb0Zz RHhlL1ZpcnRpb0ZzRHhlLmgKaW5kZXggOWM0NzQ1NDQzNWFlLi5hOTk2MjVkMDQ3M2EgMTAwNjQ0 Ci0tLSBhL092bWZQa2cvVmlydGlvRnNEeGUvVmlydGlvRnNEeGUuaAorKysgYi9Pdm1mUGtnL1Zp cnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmgKQEAgLTE1MywxNiArMTUzLDI0IEBAIEVGSV9TVEFUVVMK IFZpcnRpb0ZzRXJybm9Ub0VmaVN0YXR1cyAoDQogICBJTiBJTlQzMiBFcnJubw0KICAgKTsNCiAN CiAvLw0KIC8vIFdyYXBwZXIgZnVuY3Rpb25zIGZvciBGVVNFIGNvbW1hbmRzIChwcmltaXRpdmVz KS4NCiAvLw0KIA0KK0VGSV9TVEFUVVMNCitWaXJ0aW9Gc0Z1c2VSZWxlYXNlRmlsZU9yRGlyICgN CisgIElOIE9VVCBWSVJUSU9fRlMgKlZpcnRpb0ZzLA0KKyAgSU4gICAgIFVJTlQ2NCAgICBOb2Rl SWQsDQorICBJTiAgICAgVUlOVDY0ICAgIEZ1c2VIYW5kbGUsDQorICBJTiAgICAgQk9PTEVBTiAg IElzRGlyDQorICApOw0KKw0KIEVGSV9TVEFUVVMNCiBWaXJ0aW9Gc0Z1c2VJbml0U2Vzc2lvbiAo DQogICBJTiBPVVQgVklSVElPX0ZTICpWaXJ0aW9Gcw0KICAgKTsNCiANCiBFRklfU1RBVFVTDQog VmlydGlvRnNGdXNlT3BlbkRpciAoDQogICBJTiBPVVQgVklSVElPX0ZTICpWaXJ0aW9GcywNCmRp ZmYgLS1naXQgYS9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL0Z1c2VSZWxlYXNlLmMgYi9Pdm1mUGtnL1Zp cnRpb0ZzRHhlL0Z1c2VSZWxlYXNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi5kZDQ1Yzc4NjRmYzgKLS0tIC9kZXYvbnVsbAorKysgYi9Pdm1mUGtnL1ZpcnRpb0Zz RHhlL0Z1c2VSZWxlYXNlLmMKQEAgLTAsMCArMSwxMjEgQEAKKy8qKiBAZmlsZQ0KKyAgRlVTRV9S RUxFQVNFIC8gRlVTRV9SRUxFQVNFRElSIHdyYXBwZXIgZm9yIHRoZSBWaXJ0aW8gRmlsZXN5c3Rl bSBkZXZpY2UuDQorDQorICBDb3B5cmlnaHQgKEMpIDIwMjAsIFJlZCBIYXQsIEluYy4NCisNCisg IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQorKiovDQorDQor I2luY2x1ZGUgIlZpcnRpb0ZzRHhlLmgiDQorDQorLyoqDQorICBDbG9zZSBhIHJlZ3VsYXIgZmls ZSBvciBhIGRpcmVjdG9yeSB0aGF0IGlzIG9wZW4sIGJ5IHNlbmRpbmcgdGhlIEZVU0VfUkVMRUFT RQ0KKyAgb3IgRlVTRV9SRUxFQVNFRElSIHJlcXVlc3QgdG8gdGhlIFZpcnRpbyBGaWxlc3lzdGVt IGRldmljZS4NCisNCisgIFRoZSBmdW5jdGlvbiBtYXkgb25seSBiZSBjYWxsZWQgYWZ0ZXIgVmly dGlvRnNGdXNlSW5pdFNlc3Npb24oKSByZXR1cm5zDQorICBzdWNjZXNzZnVsbHkgYW5kIGJlZm9y ZSBWaXJ0aW9Gc1VuaW5pdCgpIGlzIGNhbGxlZC4NCisNCisgIEBwYXJhbVtpbixvdXRdIFZpcnRp b0ZzICBUaGUgVmlydGlvIEZpbGVzeXN0ZW0gZGV2aWNlIHRvIHNlbmQgdGhlDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgRlVTRV9SRUxFQVNFIC8gRlVTRV9SRUxFQVNFRElSIHJlcXVlc3Qg dG8uIE9uDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LCB0aGUgRlVTRSByZXF1 ZXN0IGNvdW50ZXINCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmlydGlvRnMtPlJlcXVl c3RJZCIgd2lsbCBoYXZlIGJlZW4gaW5jcmVtZW50ZWQuDQorDQorICBAcGFyYW1baW5dIE5vZGVJ ZCAgICAgICAgVGhlIGlub2RlIG51bWJlciBvZiB0aGUgZmlsZSBvciBkaXJlY3RvcnkgdG8gY2xv c2UuDQorDQorICBAcGFyYW1baW5dIEZ1c2VIYW5kbGUgICAgVGhlIG9wZW4gaGFuZGxlIHRvIHRo ZSBmaWxlIG9yIGRpcmVjdG9yeSB0byBjbG9zZS4NCisNCisgIEBwYXJhbVtpbl0gSXNEaXIgICAg ICAgICBUUlVFIGlmIE5vZGVJZCBhbmQgRnVzZUhhbmRsZSByZWZlciB0byBhIGRpcmVjdG9yeSwN CisgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSBpZiBOb2RlSWQgYW5kIEZ1c2VIYW5k bGUgcmVmZXIgdG8gYSByZWd1bGFyDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS4N CisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgIFRoZSBmaWxlIG9yIGRpcmVjdG9yeSBoYXMgYmVl biBjbG9zZWQuDQorDQorICBAcmV0dXJuICAgICAgICAgICAgICBUaGUgImVycm5vIiB2YWx1ZSBt YXBwZWQgdG8gYW4gRUZJX1NUQVRVUyBjb2RlLCBpZiB0aGUNCisgICAgICAgICAgICAgICAgICAg ICAgIFZpcnRpbyBGaWxlc3lzdGVtIGRldmljZSBleHBsaWNpdGx5IHJlcG9ydGVkIGFuIGVycm9y Lg0KKw0KKyAgQHJldHVybiAgICAgICAgICAgICAgRXJyb3IgY29kZXMgcHJvcGFnYXRlZCBmcm9t IFZpcnRpb0ZzU2dMaXN0c1ZhbGlkYXRlKCksDQorICAgICAgICAgICAgICAgICAgICAgICBWaXJ0 aW9Gc0Z1c2VOZXdSZXF1ZXN0KCksIFZpcnRpb0ZzU2dMaXN0c1N1Ym1pdCgpLA0KKyAgICAgICAg ICAgICAgICAgICAgICAgVmlydGlvRnNGdXNlQ2hlY2tSZXNwb25zZSgpLg0KKyoqLw0KK0VGSV9T VEFUVVMNCitWaXJ0aW9Gc0Z1c2VSZWxlYXNlRmlsZU9yRGlyICgNCisgIElOIE9VVCBWSVJUSU9f RlMgKlZpcnRpb0ZzLA0KKyAgSU4gICAgIFVJTlQ2NCAgICBOb2RlSWQsDQorICBJTiAgICAgVUlO VDY0ICAgIEZ1c2VIYW5kbGUsDQorICBJTiAgICAgQk9PTEVBTiAgIElzRGlyDQorICApDQorew0K KyAgVklSVElPX0ZTX0ZVU0VfUkVRVUVTVCAgICAgICAgIENvbW1vblJlcTsNCisgIFZJUlRJT19G U19GVVNFX1JFTEVBU0VfUkVRVUVTVCBSZWxlYXNlUmVxOw0KKyAgVklSVElPX0ZTX0lPX1ZFQ1RP UiAgICAgICAgICAgIFJlcUlvVmVjWzJdOw0KKyAgVklSVElPX0ZTX1NDQVRURVJfR0FUSEVSX0xJ U1QgIFJlcVNnTGlzdDsNCisgIFZJUlRJT19GU19GVVNFX1JFU1BPTlNFICAgICAgICBDb21tb25S ZXNwOw0KKyAgVklSVElPX0ZTX0lPX1ZFQ1RPUiAgICAgICAgICAgIFJlc3BJb1ZlY1sxXTsNCisg IFZJUlRJT19GU19TQ0FUVEVSX0dBVEhFUl9MSVNUICBSZXNwU2dMaXN0Ow0KKyAgRUZJX1NUQVRV UyAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCisNCisgIC8vDQorICAvLyBTZXQgdXAgdGhl IHNjYXR0ZXItZ2F0aGVyIGxpc3RzLg0KKyAgLy8NCisgIFJlcUlvVmVjWzBdLkJ1ZmZlciA9ICZD b21tb25SZXE7DQorICBSZXFJb1ZlY1swXS5TaXplICAgPSBzaXplb2YgQ29tbW9uUmVxOw0KKyAg UmVxSW9WZWNbMV0uQnVmZmVyID0gJlJlbGVhc2VSZXE7DQorICBSZXFJb1ZlY1sxXS5TaXplICAg PSBzaXplb2YgUmVsZWFzZVJlcTsNCisgIFJlcVNnTGlzdC5Jb1ZlYyAgICA9IFJlcUlvVmVjOw0K KyAgUmVxU2dMaXN0Lk51bVZlYyAgID0gQVJSQVlfU0laRSAoUmVxSW9WZWMpOw0KKw0KKyAgUmVz cElvVmVjWzBdLkJ1ZmZlciA9ICZDb21tb25SZXNwOw0KKyAgUmVzcElvVmVjWzBdLlNpemUgICA9 IHNpemVvZiBDb21tb25SZXNwOw0KKyAgUmVzcFNnTGlzdC5Jb1ZlYyAgICA9IFJlc3BJb1ZlYzsN CisgIFJlc3BTZ0xpc3QuTnVtVmVjICAgPSBBUlJBWV9TSVpFIChSZXNwSW9WZWMpOw0KKw0KKyAg Ly8NCisgIC8vIFZhbGlkYXRlIHRoZSBzY2F0dGVyLWdhdGhlciBsaXN0czsgY2FsY3VsYXRlIHRo ZSB0b3RhbCB0cmFuc2ZlciBzaXplcy4NCisgIC8vDQorICBTdGF0dXMgPSBWaXJ0aW9Gc1NnTGlz dHNWYWxpZGF0ZSAoVmlydGlvRnMsICZSZXFTZ0xpc3QsICZSZXNwU2dMaXN0KTsNCisgIGlmIChF RklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIC8v DQorICAvLyBQb3B1bGF0ZSB0aGUgY29tbW9uIHJlcXVlc3QgaGVhZGVyLg0KKyAgLy8NCisgIFN0 YXR1cyA9IFZpcnRpb0ZzRnVzZU5ld1JlcXVlc3QgKA0KKyAgICAgICAgICAgICBWaXJ0aW9GcywN CisgICAgICAgICAgICAgJkNvbW1vblJlcSwNCisgICAgICAgICAgICAgUmVxU2dMaXN0LlRvdGFs U2l6ZSwNCisgICAgICAgICAgICAgSXNEaXIgPyBWaXJ0aW9Gc0Z1c2VPcFJlbGVhc2VEaXIgOiBW aXJ0aW9Gc0Z1c2VPcFJlbGVhc2UsDQorICAgICAgICAgICAgIE5vZGVJZA0KKyAgICAgICAgICAg ICApOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICByZXR1cm4gU3RhdHVzOw0K KyAgfQ0KKw0KKyAgLy8NCisgIC8vIFBvcHVsYXRlIHRoZSBGVVNFX1JFTEVBU0UtIC8gRlVTRV9S RUxFQVNFRElSLXNwZWNpZmljIGZpZWxkcy4NCisgIC8vDQorICBSZWxlYXNlUmVxLkZpbGVIYW5k bGUgICA9IEZ1c2VIYW5kbGU7DQorICBSZWxlYXNlUmVxLkZsYWdzICAgICAgICA9IDA7DQorICBS ZWxlYXNlUmVxLlJlbGVhc2VGbGFncyA9IDA7DQorICBSZWxlYXNlUmVxLkxvY2tPd25lciAgICA9 IDA7DQorDQorICAvLw0KKyAgLy8gU3VibWl0IHRoZSByZXF1ZXN0Lg0KKyAgLy8NCisgIFN0YXR1 cyA9IFZpcnRpb0ZzU2dMaXN0c1N1Ym1pdCAoVmlydGlvRnMsICZSZXFTZ0xpc3QsICZSZXNwU2dM aXN0KTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgcmV0dXJuIFN0YXR1czsN CisgIH0NCisNCisgIC8vDQorICAvLyBWZXJpZnkgdGhlIHJlc3BvbnNlIChhbGwgcmVzcG9uc2Ug YnVmZmVycyBhcmUgZml4ZWQgc2l6ZSkuDQorICAvLw0KKyAgU3RhdHVzID0gVmlydGlvRnNGdXNl Q2hlY2tSZXNwb25zZSAoJlJlc3BTZ0xpc3QsIENvbW1vblJlcS5VbmlxdWUsIE5VTEwpOw0KKyAg aWYgKFN0YXR1cyA9PSBFRklfREVWSUNFX0VSUk9SKSB7DQorICAgIERFQlVHICgoREVCVUdfRVJS T1IsICIlYTogTGFiZWw9XCIlc1wiIE5vZGVJZD0lTHUgRnVzZUhhbmRsZT0lTHUgIg0KKyAgICAg ICJJc0Rpcj0lZCBFcnJubz0lZFxuIiwgX19GVU5DVElPTl9fLCBWaXJ0aW9Gcy0+TGFiZWwsIE5v ZGVJZCwgRnVzZUhhbmRsZSwNCisgICAgICBJc0RpciwgQ29tbW9uUmVzcC5FcnJvcikpOw0KKyAg ICBTdGF0dXMgPSBWaXJ0aW9Gc0Vycm5vVG9FZmlTdGF0dXMgKENvbW1vblJlc3AuRXJyb3IpOw0K KyAgfQ0KKyAgcmV0dXJuIFN0YXR1czsNCit9DQotLSAKMi4xOS4xLjMuZzMwMjQ3YWE1ZDIwMQoK Cg==