From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sam Ravnborg Subject: My penguin has blue feets (aka: RGB versus BGR troubles) Date: Fri, 26 Jul 2019 22:36:26 +0200 Message-ID: <20190726203626.GA31474@ravnborg.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from asavdk4.altibox.net (asavdk4.altibox.net [109.247.116.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9EB1E6EE56 for ; Fri, 26 Jul 2019 20:36:29 +0000 (UTC) Received: from ravnborg.org (unknown [158.248.194.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by asavdk4.altibox.net (Postfix) with ESMTPS id BE40C8031E for ; Fri, 26 Jul 2019 22:36:27 +0200 (CEST) Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org SGkgYWxsLgoKVGhlIEF0bWVsIGF0OTFzYW05MjYzIGhhcyBhIG5pY2UgTENEQyBJUCBjb3JlIHRo YXQgc3VwcG9ydHMgc2V2ZXJhbApmb3JtYXRzOgogICAgRFJNX0ZPUk1BVF9YQkdSODg4OCwgRFJN X0ZPUk1BVF9CR1I4ODgsIERSTV9GT1JNQVRfQkdSNTY1CgooSXQgYWxzbyBzdXBwb3J0cyBhIHBh bGxldGl6ZWQgQzggZm9ybWF0LCBidXQgdGhhdHMgZm9yIGxhdGVyKS4KClRoZSBmb3JtYXRzIGFy ZSBhbGwgQkdSIGZvcm1hdHMgLSBhbmQgc29tZSBib2FyZHMgYWN0dWFsbHkgcmV2ZXJzZSBCbHVl CmFuZCBSZWQgd2hlbiB3aXJpbmcgdXAgdGhlIGRpc3BsYXkuIEkgaGF2ZSBhZGRlZCBhIERUIHBy b3BlcnR5IHRvCmlkZW50aWZ5IGJvYXJkcyB3aXRoIHRoaXMgZGlmZmVyZW5jZS4KClRoZSBwZW5n dWluIHNob3duIGR1cmluZyBib290IG9mIHRoZSBrZXJuZWwgaGFkIGJsdWUgZmVldCB3aGljaCBp cyBhCmNsZWFyIHNpZ24gdGhhdCBSRUQgYW5kIEdSRUVOIHdhcyByZXZlcnNlZC4KClNvIHRvIGZp eCB0aGlzIEkgKGdvdCBoZWxwIGZyb20gaW1pcmtpbiBvbiBpcmMpIEkgaW1wbG1lbnRlZCBhIHF1 aXJrLgpTZWUgcGF0Y2ggYmVsb3cuCgpXaXRoIHRoZSBxdWlyayBlbmFibGVkIEkgc2VlOgotIHBl bmd1aW4gc2hvd24gZHVyaW5nIGtlcm5lbCBib290IGhhcyB5ZWxsb3cgZmVldHMgKE9LKQotIG1v ZGV0ZXN0IHRlbGwgdGhlIGRyaXZlciByZXBvcnRzOiBYQjI0IEJHMjQgQkcxNiAoYXMgZXhwZWN0 ZWQpCi0gbW9kZXRlc3QgLXMgZmFpbHMgd2l0aDoKICAgICMgbW9kZXRlc3QgLU0gYXRtZWwtbGNk YyAtcyAzNDo4MDB4NDgwLTYwSHoKICAgIHNldHRpbmcgbW9kZSA4MDB4NDgwLTYwSHpAWFIyNCBv biBjb25uZWN0b3JzIDM0LCBjcnRjIDMyCiAgICBmYWlsZWQgdG8gc2V0IG1vZGU6IEZ1bmN0aW9u IG5vdCBpbXBsZW1lbnRlZAoKU25pcCBmcm9tIGRtZXNnOgoKZHJtOmRybV9pb2N0bF0gcGlkPTIw OCwgZGV2PTB4ZTIwMSwgYXV0aD0xLCBEUk1fSU9DVExfTU9ERV9BRERGQjIKW2RybTpkcm1fbW9k ZV9hZGRmYjJdIFtGQjozN10KW2RybTpkcm1faW9jdGxdIHBpZD0yMDgsIGRldj0weGUyMDEsIGF1 dGg9MSwgRFJNX0lPQ1RMX01PREVfU0VUQ1JUQwpbZHJtOmRybV9tb2RlX3NldGNydGNdIFtDUlRD OjMyOmNydGMtMF0KW2RybTpkcm1fbW9kZV9zZXRjcnRjXSBJbnZhbGlkIHBpeGVsIGZvcm1hdCBY UjI0IGxpdHRsZS1lbmRpYW4gKDB4MzQzMjUyNTgpLCBtb2RpZmllciAweDAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eCltkcm06ZHJtX21vZGVfb2JqZWN0 X3B1dF0gT0JKIElEOiAzNyAoMikKW2RybTpkcm1faW9jdGxdIHBpZD0yMDgsIHJldCA9IC0yMgpb ZHJtOmRybV9pb2N0bF0gcGlkPTIwOCwgZGV2PTB4ZTIwMSwgYXV0aD0xLCBEUk1fSU9DVExfTU9E RV9ESVJUWUZCCltkcm06ZHJtX21vZGVfb2JqZWN0X3B1dF0gT0JKIElEOiAzNyAoMikKW2RybTpk cm1faW9jdGxdIHBpZD0yMDgsIHJldCA9IC0zOApbZHJtOmRybV9pb2N0bF0gcGlkPTIwOCwgZGV2 PTB4ZTIwMSwgYXV0aD0xLCBEUk1fSU9DVExfTU9ERV9STUZCCltkcm06ZHJtX21vZGVfb2JqZWN0 X3B1dF0gT0JKIElEOiAzNyAoMikKW2RybTpkcm1fbW9kZV9vYmplY3RfcHV0XSBPQkogSUQ6IDM3 ICgxKQpbZHJtOmRybV9pb2N0bF0gcGlkPTIwOCwgZGV2PTB4ZTIwMSwgYXV0aD0xLCBEUk1fSU9D VExfTU9ERV9ERVNUUk9ZX0RVTUIKW2RybTpkcm1fcmVsZWFzZV0gb3Blbl9jb3VudCA9IDEKW2Ry bTpkcm1fZmlsZV9mcmVlXSBwaWQgPSAyMDgsIGRldmljZSA9IDB4ZTIwMSwgb3Blbl9jb3VudCA9 IDEKW2RybTpkcm1fbGFzdGNsb3NlXSAKW2RybTpkcm1fbGFzdGNsb3NlXSBkcml2ZXIgbGFzdGNs b3NlIGNvbXBsZXRlZAoKTm90aWNlIHRoYXQgc29tZWhvdyB3ZSBoYXZlIGEgZnJhbWVidWZmZXIg aW4gWFIyNCBmb3JtYXQsIHdoaWNoIGlzIG5vdApzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlci4KCgpJ IGhhdmUgdHJpZWQgdG8gdGVsbCB0aGF0IG15IGRyaXZlciBzdXBwb3J0cyBEUk1fRk9STUFUX1hS R0I4ODg4LApEUk1fRk9STUFUX1JHQjg4OCwgRFJNX0ZPUk1BVF9SR0I1NjUgYW5kIHRoZW4gbW9k ZXRlc3Qgd29ya3MuCkJ1dCBpbiB0aGUgb3V0cHV0IG9mIG1vZGV0ZXN0IC1zIHRoZSBibHVlIGFu ZCByZWQgY29sb3JzIGFyZSByZXZlcnNlZC4KCipBbnkqIGhpbnRzIHdoeSBtb2RldGVzdCBmYWls cyB3aGVuIG15IGRyaXZlciByZXBvcnRzIHRoZSBjb3JyZWN0IGZvcm1hdHM/CgpGb3IgcmVmZXJl bmNlIEkgd2lsbCBwb3N0IHNvdXJjZSBmb3IgdGhlIGRyaXZlciBpbiBhIGZvbGxvdy11cCBtYWls LgoKCVNhbQoKClRoZSBxdWlyayBJIGltcGxtZW50ZWQgbG9va3MgbGlrZSB0aGlzIChwcmVsaW1p bmFyeSBwYXRjaCk6CkZyb20gYWIwZjIxM2U1MGZiZTFiMDUzZDYyNDc0NTMwNjI1MmIyOGU2ZWNk YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogU2FtIFJhdm5ib3JnIDxzYW1AcmF2bmJv cmcub3JnPgpEYXRlOiBTdW4sIDIxIEp1bCAyMDE5IDA4OjU5OjQ5ICswMjAwClN1YmplY3Q6IFtQ QVRDSCAyMS8yMl0gZHJtOiBhZGQgcXVpcmtfYWRkZmJfcmdiX3RvX2JncgoKVXNlZCBmb3IgZHJp dmVycyB3aGVyZSB0aGUgZm9ybWF0IHN1cHBvcnRlZCBpcyBkZWZhdWx0IEJHUi4KVGhlbiB1c2Ug dGhpcyBxdWlyayB0byBmb3JjZSBkcm1fZmJfaGVscGVyIHRvIGNvbnZlcnQgdGhlCmZyYW1lYnVm ZmVyIGZyb20gUkdCID0+IEJHUi4KClNpZ25lZC1vZmYtYnk6IFNhbSBSYXZuYm9yZyA8c2FtQHJh dm5ib3JnLm9yZz4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIHwgNDYgKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZvdXJj Yy5jICAgIHwgMTQgKysrKysrKysrKwogaW5jbHVkZS9kcm0vZHJtX21vZGVfY29uZmlnLmggICB8 ICA3ICsrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCmluZGV4IGE3YmE1YjQ5MDJkNi4uYWRjMWIxZmNi MTUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKQEAgLTEyMzYsOSArMTIzNiw5IEBAIHN0YXRp YyBib29sIGRybV9mYl9waXhlbF9mb3JtYXRfZXF1YWwoY29uc3Qgc3RydWN0IGZiX3Zhcl9zY3Jl ZW5pbmZvICp2YXJfMSwKIH0KIAogc3RhdGljIHZvaWQgZHJtX2ZiX2hlbHBlcl9maWxsX3BpeGVs X2ZtdChzdHJ1Y3QgZmJfdmFyX3NjcmVlbmluZm8gKnZhciwKLQkJCQkJIHU4IGRlcHRoKQorCQkJ CQkgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCiB7Ci0Jc3dpdGNoIChkZXB0aCkgeworCXN3 aXRjaCAoZmItPmZvcm1hdC0+ZGVwdGgpIHsKIAljYXNlIDg6CiAJCXZhci0+cmVkLm9mZnNldCA9 IDA7CiAJCXZhci0+Z3JlZW4ub2Zmc2V0ID0gMDsKQEAgLTEyNjAsMTggKzEyNjAsMzAgQEAgc3Rh dGljIHZvaWQgZHJtX2ZiX2hlbHBlcl9maWxsX3BpeGVsX2ZtdChzdHJ1Y3QgZmJfdmFyX3NjcmVl bmluZm8gKnZhciwKIAkJdmFyLT50cmFuc3AubGVuZ3RoID0gMTsKIAkJYnJlYWs7CiAJY2FzZSAx NjoKLQkJdmFyLT5yZWQub2Zmc2V0ID0gMTE7Ci0JCXZhci0+Z3JlZW4ub2Zmc2V0ID0gNTsKLQkJ dmFyLT5ibHVlLm9mZnNldCA9IDA7CisJCWlmICghZmItPmRldi0+bW9kZV9jb25maWcucXVpcmtf YWRkZmJfcmdiX3RvX2JncikgeworCQkJdmFyLT5yZWQub2Zmc2V0ID0gMTE7CisJCQl2YXItPmdy ZWVuLm9mZnNldCA9IDU7CisJCQl2YXItPmJsdWUub2Zmc2V0ID0gMDsKKwkJfSBlbHNlIHsKKwkJ CXZhci0+cmVkLm9mZnNldCA9IDA7CisJCQl2YXItPmdyZWVuLm9mZnNldCA9IDU7CisJCQl2YXIt PmJsdWUub2Zmc2V0ID0gMTE7CisJCX0KIAkJdmFyLT5yZWQubGVuZ3RoID0gNTsKIAkJdmFyLT5n cmVlbi5sZW5ndGggPSA2OwogCQl2YXItPmJsdWUubGVuZ3RoID0gNTsKIAkJdmFyLT50cmFuc3Au b2Zmc2V0ID0gMDsKIAkJYnJlYWs7CiAJY2FzZSAyNDoKLQkJdmFyLT5yZWQub2Zmc2V0ID0gMTY7 Ci0JCXZhci0+Z3JlZW4ub2Zmc2V0ID0gODsKLQkJdmFyLT5ibHVlLm9mZnNldCA9IDA7CisJCWlm ICghZmItPmRldi0+bW9kZV9jb25maWcucXVpcmtfYWRkZmJfcmdiX3RvX2JncikgeworCQkJdmFy LT5yZWQub2Zmc2V0ID0gMTY7CisJCQl2YXItPmdyZWVuLm9mZnNldCA9IDg7CisJCQl2YXItPmJs dWUub2Zmc2V0ID0gMDsKKwkJfSBlbHNlIHsKKwkJCXZhci0+cmVkLm9mZnNldCA9IDA7CisJCQl2 YXItPmdyZWVuLm9mZnNldCA9IDg7CisJCQl2YXItPmJsdWUub2Zmc2V0ID0gMTY7CisJCX0KIAkJ dmFyLT5yZWQubGVuZ3RoID0gODsKIAkJdmFyLT5ncmVlbi5sZW5ndGggPSA4OwogCQl2YXItPmJs dWUubGVuZ3RoID0gODsKQEAgLTEyNzksOSArMTI5MSwxNSBAQCBzdGF0aWMgdm9pZCBkcm1fZmJf aGVscGVyX2ZpbGxfcGl4ZWxfZm10KHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyLAogCQl2 YXItPnRyYW5zcC5sZW5ndGggPSAwOwogCQlicmVhazsKIAljYXNlIDMyOgotCQl2YXItPnJlZC5v ZmZzZXQgPSAxNjsKLQkJdmFyLT5ncmVlbi5vZmZzZXQgPSA4OwotCQl2YXItPmJsdWUub2Zmc2V0 ID0gMDsKKwkJaWYgKCFmYi0+ZGV2LT5tb2RlX2NvbmZpZy5xdWlya19hZGRmYl9yZ2JfdG9fYmdy KSB7CisJCQl2YXItPnJlZC5vZmZzZXQgPSAxNjsKKwkJCXZhci0+Z3JlZW4ub2Zmc2V0ID0gODsK KwkJCXZhci0+Ymx1ZS5vZmZzZXQgPSAwOworCQl9IGVsc2UgeworCQkJdmFyLT5yZWQub2Zmc2V0 ID0gMDsKKwkJCXZhci0+Z3JlZW4ub2Zmc2V0ID0gODsKKwkJCXZhci0+Ymx1ZS5vZmZzZXQgPSAx NjsKKwkJfQogCQl2YXItPnJlZC5sZW5ndGggPSA4OwogCQl2YXItPmdyZWVuLmxlbmd0aCA9IDg7 CiAJCXZhci0+Ymx1ZS5sZW5ndGggPSA4OwpAQCAtMTM0Miw3ICsxMzYwLDcgQEAgaW50IGRybV9m Yl9oZWxwZXJfY2hlY2tfdmFyKHN0cnVjdCBmYl92YXJfc2NyZWVuaW5mbyAqdmFyLAogCSAgICAh dmFyLT5ibHVlLmxlbmd0aCAgICAmJiAhdmFyLT50cmFuc3AubGVuZ3RoICAgJiYKIAkgICAgIXZh ci0+cmVkLm1zYl9yaWdodCAgJiYgIXZhci0+Z3JlZW4ubXNiX3JpZ2h0ICYmCiAJICAgICF2YXIt PmJsdWUubXNiX3JpZ2h0ICYmICF2YXItPnRyYW5zcC5tc2JfcmlnaHQpIHsKLQkJZHJtX2ZiX2hl bHBlcl9maWxsX3BpeGVsX2ZtdCh2YXIsIGZiLT5mb3JtYXQtPmRlcHRoKTsKKwkJZHJtX2ZiX2hl bHBlcl9maWxsX3BpeGVsX2ZtdCh2YXIsIGZiKTsKIAl9CiAKIAkvKgpAQCAtMTY4NCw3ICsxNzAy LDcgQEAgc3RhdGljIHZvaWQgZHJtX2ZiX2hlbHBlcl9maWxsX3ZhcihzdHJ1Y3QgZmJfaW5mbyAq aW5mbywKIAlpbmZvLT52YXIueW9mZnNldCA9IDA7CiAJaW5mby0+dmFyLmFjdGl2YXRlID0gRkJf QUNUSVZBVEVfTk9XOwogCi0JZHJtX2ZiX2hlbHBlcl9maWxsX3BpeGVsX2ZtdCgmaW5mby0+dmFy LCBmYi0+Zm9ybWF0LT5kZXB0aCk7CisJZHJtX2ZiX2hlbHBlcl9maWxsX3BpeGVsX2ZtdCgmaW5m by0+dmFyLCBmYik7CiAKIAlpbmZvLT52YXIueHJlcyA9IGZiX3dpZHRoOwogCWluZm8tPnZhci55 cmVzID0gZmJfaGVpZ2h0OwpAQCAtMjIwNSw3ICsyMjIzLDcgQEAgaW50IGRybV9mYl9oZWxwZXJf Z2VuZXJpY19wcm9iZShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAogCQkgICAgICBz aXplcy0+c3VyZmFjZV93aWR0aCwgc2l6ZXMtPnN1cmZhY2VfaGVpZ2h0LAogCQkgICAgICBzaXpl cy0+c3VyZmFjZV9icHApOwogCi0JZm9ybWF0ID0gZHJtX21vZGVfbGVnYWN5X2ZiX2Zvcm1hdChz aXplcy0+c3VyZmFjZV9icHAsIHNpemVzLT5zdXJmYWNlX2RlcHRoKTsKKwlmb3JtYXQgPSBkcm1f ZHJpdmVyX2xlZ2FjeV9mYl9mb3JtYXQoZmJfaGVscGVyLT5kZXYsIHNpemVzLT5zdXJmYWNlX2Jw cCwgc2l6ZXMtPnN1cmZhY2VfZGVwdGgpOwogCWJ1ZmZlciA9IGRybV9jbGllbnRfZnJhbWVidWZm ZXJfY3JlYXRlKGNsaWVudCwgc2l6ZXMtPnN1cmZhY2Vfd2lkdGgsCiAJCQkJCSAgICAgICBzaXpl cy0+c3VyZmFjZV9oZWlnaHQsIGZvcm1hdCk7CiAJaWYgKElTX0VSUihidWZmZXIpKQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mb3VyY2MuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f Zm91cmNjLmMKaW5kZXggYzYzMDA2NGNjZjQxLi45NzJlYTc0NmMwNmQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZm91cmNjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mb3Vy Y2MuYwpAQCAtMTI2LDYgKzEyNiwyMCBAQCB1aW50MzJfdCBkcm1fZHJpdmVyX2xlZ2FjeV9mYl9m b3JtYXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkgICAgZm10ID09IERSTV9GT1JNQVRfWFJH QjIxMDEwMTApCiAJCWZtdCA9IERSTV9GT1JNQVRfWEJHUjIxMDEwMTA7CiAKKwlpZiAoZGV2LT5t b2RlX2NvbmZpZy5xdWlya19hZGRmYl9yZ2JfdG9fYmdyKSB7CisJCXN3aXRjaCAoZm10KSB7CisJ CWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6CisJCQlmbXQgPSBEUk1fRk9STUFUX0JHUjU2NTsKKwkJ CWJyZWFrOworCQljYXNlIERSTV9GT1JNQVRfUkdCODg4OgorCQkJZm10ID0gRFJNX0ZPUk1BVF9C R1I4ODg7CisJCQlicmVhazsKKwkJY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4OgorCQkJZm10ID0g RFJNX0ZPUk1BVF9YQkdSODg4ODsKKwkJCWJyZWFrOworCQl9CisJfQorCiAJcmV0dXJuIGZtdDsK IH0KIEVYUE9SVF9TWU1CT0woZHJtX2RyaXZlcl9sZWdhY3lfZmJfZm9ybWF0KTsKZGlmZiAtLWdp dCBhL2luY2x1ZGUvZHJtL2RybV9tb2RlX2NvbmZpZy5oIGIvaW5jbHVkZS9kcm0vZHJtX21vZGVf Y29uZmlnLmgKaW5kZXggZjU3ZWVhMDQ4MWUwLi41OGFhOGMwMjIzMmUgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvZHJtL2RybV9tb2RlX2NvbmZpZy5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9tb2RlX2Nv bmZpZy5oCkBAIC04ODEsNiArODgxLDEzIEBAIHN0cnVjdCBkcm1fbW9kZV9jb25maWcgewogCSAq LwogCWJvb2wgcXVpcmtfYWRkZmJfcHJlZmVyX2hvc3RfYnl0ZV9vcmRlcjsKIAorCS8qKgorCSAq IEBxdWlya19hZGRmYl9yZ2JfdG9fYmdyOgorCSAqCisJICogVE9ETworCSAqLworCWJvb2wgcXVp cmtfYWRkZmJfcmdiX3RvX2JncjsKKwogCS8qKgogCSAqIEBhc3luY19wYWdlX2ZsaXA6IERvZXMg dGhpcyBkZXZpY2Ugc3VwcG9ydCBhc3luYyBmbGlwcyBvbiB0aGUgcHJpbWFyeQogCSAqIHBsYW5l PwotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWw=