From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.groups.io with SMTP id smtpd.web11.4066.1608155498253760753 for ; Wed, 16 Dec 2020 13:51:38 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=bIwRBhj+; spf=pass (domain: redhat.com, ip: 216.205.24.124, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1608155497; 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=jOEmn0HZ4bafoKoRBx+jF5sFb2cyLOjY3biEaBTOjN4=; b=bIwRBhj+yhbXuiwF7bYh0MnJfhFuBCG7PM6LENYmTwhMTiRdVML0ddsNzdnqLAacNJMFEJ 0e4p/QfjO2PQNNKwKqEtzNZjcfrrOM2bM74zMI5WECsl4/XCEhNFzSaali4I6GohRUM4G4 iGN3CQxy80/gn+bLhq33i7GDTSvflxQ= 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-369-cprC8zIQPRy2FcxgsXtsGw-1; Wed, 16 Dec 2020 16:51:33 -0500 X-MC-Unique: cprC8zIQPRy2FcxgsXtsGw-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 5E85959; Wed, 16 Dec 2020 21:51:32 +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 8363227C3D; Wed, 16 Dec 2020 21:51:27 +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 19/48] OvmfPkg/VirtioFsDxe: implement the wrapper function for FUSE_MKDIR Date: Wed, 16 Dec 2020 22:10:56 +0100 Message-Id: <20201216211125.19496-20-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.84 on 10.5.11.23 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 QWRkIHRoZSBWaXJ0aW9Gc0Z1c2VNa0RpcigpIGZ1bmN0aW9uLCBmb3Igc2VuZGluZyB0aGUgRlVT RV9NS0RJUiBjb21tYW5kCnRvIHRoZSBWaXJ0aW8gRmlsZXN5c3RlbSBkZXZpY2UuCgpDYzogQXJk IEJpZXNoZXV2ZWwgPGFyZC5iaWVzaGV1dmVsQGFybS5jb20+CkNjOiBKb3JkYW4gSnVzdGVuIDxq b3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tPgpDYzogUGhpbGlwcGUgTWF0aGlldS1EYXVkw6kgPHBo aWxtZEByZWRoYXQuY29tPgpSZWY6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93 X2J1Zy5jZ2k/aWQ9MzA5NwpTaWduZWQtb2ZmLWJ5OiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRo YXQuY29tPgotLS0KIE92bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1ZpcnRpb0ZzLmgg fCAgNTUgKysrKysrKysKIE92bWZQa2cvVmlydGlvRnNEeGUvVmlydGlvRnNEeGUuaW5mICAgICAg ICAgfCAgIDEgKwogT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9WaXJ0aW9Gc0R4ZS5oICAgICAgICAgICB8 ICAgOCArKwogT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9GdXNlTWtEaXIuYyAgICAgICAgICAgICB8IDEz NCArKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAxOTggaW5zZXJ0aW9ucygr KQoKZGlmZiAtLWdpdCBhL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0YW5kYXJkL1ZpcnRpb0Zz LmggYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9WaXJ0aW9Gcy5oCmluZGV4IDdi NmYzMDMzNTU3Ny4uOWZmZWI5YzhjOTU0IDEwMDY0NAotLS0gYS9Pdm1mUGtnL0luY2x1ZGUvSW5k dXN0cnlTdGFuZGFyZC9WaXJ0aW9Gcy5oCisrKyBiL092bWZQa2cvSW5jbHVkZS9JbmR1c3RyeVN0 YW5kYXJkL1ZpcnRpb0ZzLmgKQEAgLTc2LDI3ICs3NiwzNSBAQCB0eXBlZGVmIHN0cnVjdCB7CiAj ZGVmaW5lIFZJUlRJT19GU19GVVNFX01BSk9SICA3DQogI2RlZmluZSBWSVJUSU9fRlNfRlVTRV9N SU5PUiAzMQ0KIA0KIC8vDQogLy8gVGhlIGlub2RlIG51bWJlciBvZiB0aGUgcm9vdCBkaXJlY3Rv cnkuDQogLy8NCiAjZGVmaW5lIFZJUlRJT19GU19GVVNFX1JPT1RfRElSX05PREVfSUQgMQ0KIA0K Ky8vDQorLy8gRmlsZSBtb2RlIGJpdG1hc2tzLg0KKy8vDQorI2RlZmluZSBWSVJUSU9fRlNfRlVT RV9NT0RFX1BFUk1fUldYVSAwMDAwNzAwdQ0KKyNkZWZpbmUgVklSVElPX0ZTX0ZVU0VfTU9ERV9Q RVJNX1JXWEcgMDAwMDA3MHUNCisjZGVmaW5lIFZJUlRJT19GU19GVVNFX01PREVfUEVSTV9SV1hP IDAwMDAwMDd1DQorDQogLy8NCiAvLyBGbGFncyBmb3IgVmlydGlvRnNGdXNlT3BPcGVuLg0KIC8v DQogI2RlZmluZSBWSVJUSU9fRlNfRlVTRV9PUEVOX1JFUV9GX1JET05MWSAwDQogI2RlZmluZSBW SVJUSU9fRlNfRlVTRV9PUEVOX1JFUV9GX1JEV1IgICAyDQogDQogLy8NCiAvLyBGVVNFIG9wZXJh dGlvbiBjb2Rlcy4NCiAvLw0KIHR5cGVkZWYgZW51bSB7DQogICBWaXJ0aW9Gc0Z1c2VPcEZvcmdl dCAgICAgID0gIDIsDQorICBWaXJ0aW9Gc0Z1c2VPcE1rRGlyICAgICAgID0gIDksDQogICBWaXJ0 aW9Gc0Z1c2VPcE9wZW4gICAgICAgID0gMTQsDQogICBWaXJ0aW9Gc0Z1c2VPcFJlbGVhc2UgICAg ID0gMTgsDQogICBWaXJ0aW9Gc0Z1c2VPcEZzeW5jICAgICAgID0gMjAsDQogICBWaXJ0aW9Gc0Z1 c2VPcEZsdXNoICAgICAgID0gMjUsDQogICBWaXJ0aW9Gc0Z1c2VPcEluaXQgICAgICAgID0gMjYs DQogICBWaXJ0aW9Gc0Z1c2VPcE9wZW5EaXIgICAgID0gMjcsDQogICBWaXJ0aW9Gc0Z1c2VPcFJl bGVhc2VEaXIgID0gMjksDQogICBWaXJ0aW9Gc0Z1c2VPcEZzeW5jRGlyICAgID0gMzAsDQpAQCAt MTE4LDIzICsxMjYsNzAgQEAgdHlwZWRlZiBzdHJ1Y3QgewogfSBWSVJUSU9fRlNfRlVTRV9SRVFV RVNUOw0KIA0KIHR5cGVkZWYgc3RydWN0IHsNCiAgIFVJTlQzMiBMZW47DQogICBJTlQzMiAgRXJy b3I7DQogICBVSU5UNjQgVW5pcXVlOw0KIH0gVklSVElPX0ZTX0ZVU0VfUkVTUE9OU0U7DQogDQor Ly8NCisvLyBTdHJ1Y3R1cmUgd2l0aCB3aGljaCB0aGUgVmlydGlvIEZpbGVzeXN0ZW0gZGV2aWNl IHJlcG9ydHMgYSBOb2RlSWQgdG8gdGhlDQorLy8gRlVTRSBjbGllbnQgKGkuZS4sIHRvIHRoZSBW aXJ0aW8gRmlsZXN5c3RlbSBkcml2ZXIpLiBUaGlzIHN0cnVjdHVyZSBpcyBhDQorLy8gcGFydCBv ZiB0aGUgcmVzcG9uc2UgaGVhZGVycyBmb3Igb3BlcmF0aW9ucyB0aGF0IGluZm9ybSB0aGUgRlVT RSBjbGllbnQgb2YNCisvLyBhbiBpbm9kZS4NCisvLw0KK3R5cGVkZWYgc3RydWN0IHsNCisgIFVJ TlQ2NCBOb2RlSWQ7DQorICBVSU5UNjQgR2VuZXJhdGlvbjsNCisgIFVJTlQ2NCBFbnRyeVZhbGlk Ow0KKyAgVUlOVDY0IEF0dHJWYWxpZDsNCisgIFVJTlQzMiBFbnRyeVZhbGlkTnNlYzsNCisgIFVJ TlQzMiBBdHRyVmFsaWROc2VjOw0KK30gVklSVElPX0ZTX0ZVU0VfTk9ERV9SRVNQT05TRTsNCisN CisvLw0KKy8vIFN0cnVjdHVyZSBkZXNjcmliaW5nIHRoZSBob3N0LXNpZGUgYXR0cmlidXRlcyBv ZiBhbiBpbm9kZS4gVGhpcyBzdHJ1Y3R1cmUgaXMNCisvLyBhIHBhcnQgb2YgdGhlIHJlc3BvbnNl IGhlYWRlcnMgZm9yIG9wZXJhdGlvbnMgdGhhdCBpbmZvcm0gdGhlIEZVU0UgY2xpZW50IG9mDQor Ly8gYW4gaW5vZGUuDQorLy8NCit0eXBlZGVmIHN0cnVjdCB7DQorICBVSU5UNjQgSW5vOw0KKyAg VUlOVDY0IFNpemU7DQorICBVSU5UNjQgQmxvY2tzOw0KKyAgVUlOVDY0IEF0aW1lOw0KKyAgVUlO VDY0IE10aW1lOw0KKyAgVUlOVDY0IEN0aW1lOw0KKyAgVUlOVDMyIEF0aW1lTnNlYzsNCisgIFVJ TlQzMiBNdGltZU5zZWM7DQorICBVSU5UMzIgQ3RpbWVOc2VjOw0KKyAgVUlOVDMyIE1vZGU7DQor ICBVSU5UMzIgTmxpbms7DQorICBVSU5UMzIgVWlkOw0KKyAgVUlOVDMyIEdpZDsNCisgIFVJTlQz MiBSZGV2Ow0KKyAgVUlOVDMyIEJsa3NpemU7DQorICBVSU5UMzIgUGFkZGluZzsNCit9IFZJUlRJ T19GU19GVVNFX0FUVFJJQlVURVNfUkVTUE9OU0U7DQorDQogLy8NCiAvLyBIZWFkZXIgZm9yIFZp cnRpb0ZzRnVzZU9wRm9yZ2V0Lg0KIC8vDQogdHlwZWRlZiBzdHJ1Y3Qgew0KICAgVUlOVDY0IE51 bWJlck9mTG9va3VwczsNCiB9IFZJUlRJT19GU19GVVNFX0ZPUkdFVF9SRVFVRVNUOw0KIA0KKy8v DQorLy8gSGVhZGVyIGZvciBWaXJ0aW9Gc0Z1c2VPcE1rRGlyLg0KKy8vDQordHlwZWRlZiBzdHJ1 Y3Qgew0KKyAgVUlOVDMyIE1vZGU7DQorICBVSU5UMzIgVW1hc2s7DQorfSBWSVJUSU9fRlNfRlVT RV9NS0RJUl9SRVFVRVNUOw0KKw0KIC8vDQogLy8gSGVhZGVycyBmb3IgVmlydGlvRnNGdXNlT3BP cGVuIGFuZCBWaXJ0aW9Gc0Z1c2VPcE9wZW5EaXIuDQogLy8NCiB0eXBlZGVmIHN0cnVjdCB7DQog ICBVSU5UMzIgRmxhZ3M7DQogICBVSU5UMzIgVW51c2VkOw0KIH0gVklSVElPX0ZTX0ZVU0VfT1BF Tl9SRVFVRVNUOw0KIA0KZGlmZiAtLWdpdCBhL092bWZQa2cvVmlydGlvRnNEeGUvVmlydGlvRnNE eGUuaW5mIGIvT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9WaXJ0aW9Gc0R4ZS5pbmYKaW5kZXggZGM5YTEy ODIwZjNkLi5lZWJiODZmN2MyNzUgMTAwNjQ0Ci0tLSBhL092bWZQa2cvVmlydGlvRnNEeGUvVmly dGlvRnNEeGUuaW5mCisrKyBiL092bWZQa2cvVmlydGlvRnNEeGUvVmlydGlvRnNEeGUuaW5mCkBA IC04MSwxNiArODEsMTcgQEAgW1BhY2thZ2VzXQogICBPdm1mUGtnL092bWZQa2cuZGVjDQogDQog W1NvdXJjZXNdDQogICBEcml2ZXJCaW5kaW5nLmMNCiAgIEZ1c2VGbHVzaC5jDQogICBGdXNlRm9y Z2V0LmMNCiAgIEZ1c2VGc3luYy5jDQogICBGdXNlSW5pdC5jDQorICBGdXNlTWtEaXIuYw0KICAg RnVzZU9wZW4uYw0KICAgRnVzZU9wZW5EaXIuYw0KICAgRnVzZVJlbGVhc2UuYw0KICAgSGVscGVy cy5jDQogICBTaW1wbGVGc0Nsb3NlLmMNCiAgIFNpbXBsZUZzRGVsZXRlLmMNCiAgIFNpbXBsZUZz Rmx1c2guYw0KICAgU2ltcGxlRnNHZXRJbmZvLmMNCmRpZmYgLS1naXQgYS9Pdm1mUGtnL1ZpcnRp b0ZzRHhlL1ZpcnRpb0ZzRHhlLmggYi9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmgK aW5kZXggYzEzMjU4YTJlMDhmLi44ZmQ1NmJkYmY2ZTEgMTAwNjQ0Ci0tLSBhL092bWZQa2cvVmly dGlvRnNEeGUvVmlydGlvRnNEeGUuaAorKysgYi9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0Zz RHhlLmgKQEAgLTIzMCwxNiArMjMwLDI0IEBAIFZpcnRpb0ZzQXBwZW5kUGF0aCAoCiAvLw0KIA0K IEVGSV9TVEFUVVMNCiBWaXJ0aW9Gc0Z1c2VGb3JnZXQgKA0KICAgSU4gT1VUIFZJUlRJT19GUyAq VmlydGlvRnMsDQogICBJTiAgICAgVUlOVDY0ICAgIE5vZGVJZA0KICAgKTsNCiANCitFRklfU1RB VFVTDQorVmlydGlvRnNGdXNlTWtEaXIgKA0KKyAgSU4gT1VUIFZJUlRJT19GUyAqVmlydGlvRnMs DQorICBJTiAgICAgVUlOVDY0ICAgIFBhcmVudE5vZGVJZCwNCisgIElOICAgICBDSEFSOCAgICAg Kk5hbWUsDQorICAgICBPVVQgVUlOVDY0ICAgICpOb2RlSWQNCisgICk7DQorDQogRUZJX1NUQVRV Uw0KIFZpcnRpb0ZzRnVzZU9wZW4gKA0KICAgSU4gT1VUIFZJUlRJT19GUyAqVmlydGlvRnMsDQog ICBJTiAgICAgVUlOVDY0ICAgIE5vZGVJZCwNCiAgIElOICAgICBCT09MRUFOICAgUmVhZFdyaXRl LA0KICAgICAgT1VUIFVJTlQ2NCAgICAqRnVzZUhhbmRsZQ0KICAgKTsNCiANCmRpZmYgLS1naXQg YS9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL0Z1c2VNa0Rpci5jIGIvT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9G dXNlTWtEaXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU0MWZm MzMwY2QxZQotLS0gL2Rldi9udWxsCisrKyBiL092bWZQa2cvVmlydGlvRnNEeGUvRnVzZU1rRGly LmMKQEAgLTAsMCArMSwxMzQgQEAKKy8qKiBAZmlsZQ0KKyAgRlVTRV9NS0RJUiB3cmFwcGVyIGZv ciB0aGUgVmlydGlvIEZpbGVzeXN0ZW0gZGV2aWNlLg0KKw0KKyAgQ29weXJpZ2h0IChDKSAyMDIw LCBSZWQgSGF0LCBJbmMuDQorDQorICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KKyoqLw0KKw0KKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4gLy8gQXNj aWlTdHJTaXplKCkNCisNCisjaW5jbHVkZSAiVmlydGlvRnNEeGUuaCINCisNCisvKioNCisgIFNl bmQgYSBGVVNFX01LRElSIHJlcXVlc3QgdG8gdGhlIFZpcnRpbyBGaWxlc3lzdGVtIGRldmljZSwg Zm9yIGNyZWF0aW5nIGENCisgIGRpcmVjdG9yeS4NCisNCisgIFRoZSBmdW5jdGlvbiBtYXkgb25s eSBiZSBjYWxsZWQgYWZ0ZXIgVmlydGlvRnNGdXNlSW5pdFNlc3Npb24oKSByZXR1cm5zDQorICBz dWNjZXNzZnVsbHkgYW5kIGJlZm9yZSBWaXJ0aW9Gc1VuaW5pdCgpIGlzIGNhbGxlZC4NCisNCisg IEBwYXJhbVtpbixvdXRdIFZpcnRpb0ZzICBUaGUgVmlydGlvIEZpbGVzeXN0ZW0gZGV2aWNlIHRv IHNlbmQgdGhlIEZVU0VfTUtESVINCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0 IHRvLiBPbiBvdXRwdXQsIHRoZSBGVVNFIHJlcXVlc3QgY291bnRlcg0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICJWaXJ0aW9Gcy0+UmVxdWVzdElkIiB3aWxsIGhhdmUgYmVlbiBpbmNyZW1l bnRlZC4NCisNCisgIEBwYXJhbVtpbl0gUGFyZW50Tm9kZUlkICBUaGUgaW5vZGUgbnVtYmVyIG9m IHRoZSBkaXJlY3QgcGFyZW50IGRpcmVjdG9yeSBvZg0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRoZSBkaXJlY3RvcnkgdG8gY3JlYXRlLg0KKw0KKyAgQHBhcmFtW2luXSBOYW1lICAgICAg ICAgIFRoZSBzaW5nbGUtY29tcG9uZW50IGZpbGVuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdG8NCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGUsIHVuZGVyIHRoZSBwYXJlbnQgZGlyZWN0 b3J5IGlkZW50aWZpZWQgYnkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJlbnROb2Rl SWQuDQorDQorICBAcGFyYW1bb3V0XSBOb2RlSWQgICAgICAgVGhlIGlub2RlIG51bWJlciBvZiB0 aGUgbmV3IGRpcmVjdG9yeS4NCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgIFRoZSBkaXJlY3Rv cnkgaGFzIGJlZW4gY3JlYXRlZC4NCisNCisgIEByZXR1cm4gICAgICAgICAgICAgIFRoZSAiZXJy bm8iIHZhbHVlIG1hcHBlZCB0byBhbiBFRklfU1RBVFVTIGNvZGUsIGlmIHRoZQ0KKyAgICAgICAg ICAgICAgICAgICAgICAgVmlydGlvIEZpbGVzeXN0ZW0gZGV2aWNlIGV4cGxpY2l0bHkgcmVwb3J0 ZWQgYW4gZXJyb3IuDQorDQorICBAcmV0dXJuICAgICAgICAgICAgICBFcnJvciBjb2RlcyBwcm9w YWdhdGVkIGZyb20gVmlydGlvRnNTZ0xpc3RzVmFsaWRhdGUoKSwNCisgICAgICAgICAgICAgICAg ICAgICAgIFZpcnRpb0ZzRnVzZU5ld1JlcXVlc3QoKSwgVmlydGlvRnNTZ0xpc3RzU3VibWl0KCks DQorICAgICAgICAgICAgICAgICAgICAgICBWaXJ0aW9Gc0Z1c2VDaGVja1Jlc3BvbnNlKCkuDQor KiovDQorRUZJX1NUQVRVUw0KK1ZpcnRpb0ZzRnVzZU1rRGlyICgNCisgIElOIE9VVCBWSVJUSU9f RlMgKlZpcnRpb0ZzLA0KKyAgSU4gICAgIFVJTlQ2NCAgICBQYXJlbnROb2RlSWQsDQorICBJTiAg ICAgQ0hBUjggICAgICpOYW1lLA0KKyAgICAgT1VUIFVJTlQ2NCAgICAqTm9kZUlkDQorICApDQor ew0KKyAgVklSVElPX0ZTX0ZVU0VfUkVRVUVTVCAgICAgICAgICAgICBDb21tb25SZXE7DQorICBW SVJUSU9fRlNfRlVTRV9NS0RJUl9SRVFVRVNUICAgICAgIE1rRGlyUmVxOw0KKyAgVklSVElPX0ZT X0lPX1ZFQ1RPUiAgICAgICAgICAgICAgICBSZXFJb1ZlY1szXTsNCisgIFZJUlRJT19GU19TQ0FU VEVSX0dBVEhFUl9MSVNUICAgICAgUmVxU2dMaXN0Ow0KKyAgVklSVElPX0ZTX0ZVU0VfUkVTUE9O U0UgICAgICAgICAgICBDb21tb25SZXNwOw0KKyAgVklSVElPX0ZTX0ZVU0VfTk9ERV9SRVNQT05T RSAgICAgICBOb2RlUmVzcDsNCisgIFZJUlRJT19GU19GVVNFX0FUVFJJQlVURVNfUkVTUE9OU0Ug QXR0clJlc3A7DQorICBWSVJUSU9fRlNfSU9fVkVDVE9SICAgICAgICAgICAgICAgIFJlc3BJb1Zl Y1szXTsNCisgIFZJUlRJT19GU19TQ0FUVEVSX0dBVEhFUl9MSVNUICAgICAgUmVzcFNnTGlzdDsN CisgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KKw0KKyAgLy8N CisgIC8vIFNldCB1cCB0aGUgc2NhdHRlci1nYXRoZXIgbGlzdHMuDQorICAvLw0KKyAgUmVxSW9W ZWNbMF0uQnVmZmVyID0gJkNvbW1vblJlcTsNCisgIFJlcUlvVmVjWzBdLlNpemUgICA9IHNpemVv ZiBDb21tb25SZXE7DQorICBSZXFJb1ZlY1sxXS5CdWZmZXIgPSAmTWtEaXJSZXE7DQorICBSZXFJ b1ZlY1sxXS5TaXplICAgPSBzaXplb2YgTWtEaXJSZXE7DQorICBSZXFJb1ZlY1syXS5CdWZmZXIg PSBOYW1lOw0KKyAgUmVxSW9WZWNbMl0uU2l6ZSAgID0gQXNjaWlTdHJTaXplIChOYW1lKTsNCisg IFJlcVNnTGlzdC5Jb1ZlYyAgICA9IFJlcUlvVmVjOw0KKyAgUmVxU2dMaXN0Lk51bVZlYyAgID0g QVJSQVlfU0laRSAoUmVxSW9WZWMpOw0KKw0KKyAgUmVzcElvVmVjWzBdLkJ1ZmZlciA9ICZDb21t b25SZXNwOw0KKyAgUmVzcElvVmVjWzBdLlNpemUgICA9IHNpemVvZiBDb21tb25SZXNwOw0KKyAg UmVzcElvVmVjWzFdLkJ1ZmZlciA9ICZOb2RlUmVzcDsNCisgIFJlc3BJb1ZlY1sxXS5TaXplICAg PSBzaXplb2YgTm9kZVJlc3A7DQorICBSZXNwSW9WZWNbMl0uQnVmZmVyID0gJkF0dHJSZXNwOw0K KyAgUmVzcElvVmVjWzJdLlNpemUgICA9IHNpemVvZiBBdHRyUmVzcDsNCisgIFJlc3BTZ0xpc3Qu SW9WZWMgICAgPSBSZXNwSW9WZWM7DQorICBSZXNwU2dMaXN0Lk51bVZlYyAgID0gQVJSQVlfU0la RSAoUmVzcElvVmVjKTsNCisNCisgIC8vDQorICAvLyBWYWxpZGF0ZSB0aGUgc2NhdHRlci1nYXRo ZXIgbGlzdHM7IGNhbGN1bGF0ZSB0aGUgdG90YWwgdHJhbnNmZXIgc2l6ZXMuDQorICAvLw0KKyAg U3RhdHVzID0gVmlydGlvRnNTZ0xpc3RzVmFsaWRhdGUgKFZpcnRpb0ZzLCAmUmVxU2dMaXN0LCAm UmVzcFNnTGlzdCk7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIHJldHVybiBT dGF0dXM7DQorICB9DQorDQorICAvLw0KKyAgLy8gUG9wdWxhdGUgdGhlIGNvbW1vbiByZXF1ZXN0 IGhlYWRlci4NCisgIC8vDQorICBTdGF0dXMgPSBWaXJ0aW9Gc0Z1c2VOZXdSZXF1ZXN0IChWaXJ0 aW9GcywgJkNvbW1vblJlcSwgUmVxU2dMaXN0LlRvdGFsU2l6ZSwNCisgICAgICAgICAgICAgVmly dGlvRnNGdXNlT3BNa0RpciwgUGFyZW50Tm9kZUlkKTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIC8vDQorICAvLyBQb3B1bGF0 ZSB0aGUgRlVTRV9NS0RJUi1zcGVjaWZpYyBmaWVsZHMuDQorICAvLw0KKyAgTWtEaXJSZXEuTW9k ZSAgPSAoVklSVElPX0ZTX0ZVU0VfTU9ERV9QRVJNX1JXWFUgfA0KKyAgICAgICAgICAgICAgICAg ICAgVklSVElPX0ZTX0ZVU0VfTU9ERV9QRVJNX1JXWEcgfA0KKyAgICAgICAgICAgICAgICAgICAg VklSVElPX0ZTX0ZVU0VfTU9ERV9QRVJNX1JXWE8pOw0KKyAgTWtEaXJSZXEuVW1hc2sgPSAwOw0K Kw0KKyAgLy8NCisgIC8vIFN1Ym1pdCB0aGUgcmVxdWVzdC4NCisgIC8vDQorICBTdGF0dXMgPSBW aXJ0aW9Gc1NnTGlzdHNTdWJtaXQgKFZpcnRpb0ZzLCAmUmVxU2dMaXN0LCAmUmVzcFNnTGlzdCk7 DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIHJldHVybiBTdGF0dXM7DQorICB9 DQorDQorICAvLw0KKyAgLy8gVmVyaWZ5IHRoZSByZXNwb25zZSAoYWxsIHJlc3BvbnNlIGJ1ZmZl cnMgYXJlIGZpeGVkIHNpemUpLg0KKyAgLy8NCisgIFN0YXR1cyA9IFZpcnRpb0ZzRnVzZUNoZWNr UmVzcG9uc2UgKCZSZXNwU2dMaXN0LCBDb21tb25SZXEuVW5pcXVlLCBOVUxMKTsNCisgIGlmIChF RklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgaWYgKFN0YXR1cyA9PSBFRklfREVWSUNFX0VSUk9S KSB7DQorICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhOiBMYWJlbD1cIiVzXCIgUGFyZW50 Tm9kZUlkPSVMdSBOYW1lPVwiJWFcIiAiDQorICAgICAgICAiRXJybm89JWRcbiIsIF9fRlVOQ1RJ T05fXywgVmlydGlvRnMtPkxhYmVsLCBQYXJlbnROb2RlSWQsIE5hbWUsDQorICAgICAgICBDb21t b25SZXNwLkVycm9yKSk7DQorICAgICAgU3RhdHVzID0gVmlydGlvRnNFcnJub1RvRWZpU3RhdHVz IChDb21tb25SZXNwLkVycm9yKTsNCisgICAgfQ0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0K Kw0KKyAgLy8NCisgIC8vIE91dHB1dCB0aGUgTm9kZUlkIG9mIHRoZSBuZXcgZGlyZWN0b3J5Lg0K KyAgLy8NCisgICpOb2RlSWQgPSBOb2RlUmVzcC5Ob2RlSWQ7DQorICByZXR1cm4gRUZJX1NVQ0NF U1M7DQorfQ0KLS0gCjIuMTkuMS4zLmczMDI0N2FhNWQyMDEKCgo=