From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefan Agner Subject: Re: [PATCH v2 3/3] drm/layerscape: Add HDMI driver for freescale DCU Date: Tue, 16 Feb 2016 10:02:27 -0800 Message-ID: References: <1455587567-14606-1-git-send-email-meng.yi@nxp.com> <1455587567-14606-3-git-send-email-meng.yi@nxp.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.kmu-office.ch (mail.kmu-office.ch [178.209.48.109]) by gabe.freedesktop.org (Postfix) with ESMTPS id 50E176E215 for ; Tue, 16 Feb 2016 18:05:05 +0000 (UTC) In-Reply-To: <1455587567-14606-3-git-send-email-meng.yi@nxp.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Meng Yi Cc: Xiubo Li , Alison Wang , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org SGkgTWVuZywKCkkgZGlkIG5vdCBjb21lIGFyb3VuZCB0byBoYXZlIGEgcHJvcGVyIGxvb2sgYXQg dGhpcywgYnV0IHNvbWUgc3R1ZmYgdG8Kc3RhcnQgd2l0aCBiZWxvdzoKCk9uIDIwMTYtMDItMTUg MTc6NTIsIE1lbmcgWWkgd3JvdGU6Cj4gRENVIGlzIHRoZSBzaG9ydGN1dCBvZiAnZGlzcGxheSBj b250cm9sbGVyIHVuaXQnLCBzb21lIEhETUkgdHJhbnNtaXR0ZXIKPiBhdHRhY2hlZCB0byBEQ1Us IHN1Y2ggYXMgc2lpOTAyMmEsIGFuZCB0aGlzIGRyaXZlciBhZGQgdGhlIHJlbGF2ZW50Cj4gZnVu Y3Rpb25zIHRvIERSTSBmcmFtZXdyb2suCj4gCj4gU2lnbmVkLW9mZi1ieTogTWVuZyBZaSA8bWVu Zy55aUBueHAuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEFsaXNvbiBXYW5nIDxhbGlzb24ud2FuZ0Bu eHAuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFhpdWJvIExpIDxsaXhpdWJvQGNtc3MuY2hpbmFtb2Jp bGUuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEppYW53ZWkgV2FuZyA8amlhbndlaS53YW5nLmNobkBn bWFpbC5jb20+Cj4gLS0tCj4gQ2hhbmdlIGluIHYyCj4gLUZpeGVkIGNvbmZsaWN0IHdpdGggU3Rl ZmFuJ3MgYnJhbmNoLgo+ICBodHRwOi8vZ2l0LmFnbmVyLmNoL2dpdHdlYi8/cD1saW51eC1kcm0t ZnNsLWRjdS5naXQ7YT1zdW1tYXJ5Cj4gLS0tCj4gIC4uLi9iaW5kaW5ncy9kaXNwbGF5L2JyaWRn ZS9zaWwsc2lpOTAyMmEudHh0ICAgICAgIHwgIDU1ICsrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9m c2wtZGN1L01ha2VmaWxlICAgICAgICAgICAgICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUv ZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fZHJ2LmggICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJz L2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9oZG1pLmMgICAgICAgICB8IDI3MSArKysrKysr KysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fa21z LmMgICAgICAgICAgfCAgMTIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2Ry bV9vdXRwdXQuaCAgICAgICB8ICAxMSArCj4gIDYgZmlsZXMgY2hhbmdlZCwgMzUxIGluc2VydGlv bnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0Cj4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp bmRpbmdzL2Rpc3BsYXkvYnJpZGdlL3NpbCxzaWk5MDIyYS50eHQKPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2hkbWkuYwo+IAo+IGRpZmYg LS1naXQKPiBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRn ZS9zaWwsc2lpOTAyMmEudHh0Cj4gYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv ZGlzcGxheS9icmlkZ2Uvc2lsLHNpaTkwMjJhLnR4dAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4g aW5kZXggMDAwMDAwMC4uN2RlYmJmYgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9Eb2N1bWVudGF0 aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2Uvc2lsLHNpaTkwMjJhLnR4dAo+ IEBAIC0wLDAgKzEsNTUgQEAKPiArRGV2aWNlLVRyZWUgYmluZGluZ3MgZm9yIHRoZSBTaUk5MDJ4 IGhkbWkgdHJhbnNtaXR0ZXIuCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCj4gKwo+ICtUaGUgU2lJOTAyMkEgaXMgYW4gdWx0cmEgbG93LXBvd2VyIEhETUkgdHJh bnNtaXR0ZXIuIEl0IHN1cHBvcnRzCj4gcmVzb2x1dGlvbnMgZnJvbQo+ICtzdGFuZGFyZCBkZWZp bml0aW9uIDQ4MGkvcCBhbmQgNTc2aS9wIGFsbCB0aGUgd2F5IHRvIGhpZ2gtZGVmaW5pdGlvbgo+ IDcyMHAsIDEwODBpLAo+ICthbmQgMTA4MHAsIHRoZSBoaWdoZXN0IHJlc29sdXRpb24gc3VwcG9y dGVkIGJ5IEhEVFZzIHRvZGF5LiBJdCBhbHNvCj4gc3VwcG9ydHMgYWxsCj4gK1BDIHJlc29sdXRp b25zIHVwIHRvIFVYR0EgZm9yIG5ldGJvb2tzCj4gKwo+ICtSZXF1aXJlZCBwcm9wZXJ0aWVzOgo+ ICstIGNvbXBhdGlibGU6IAlTaG91bGQgYmUgInNpbCxzaWk5MDIyYSIuCj4gKy0gcmVnOiAJCVRo ZSBJMkMgYWRkcmVzcyBvZiB0aGUgZGV2aWNlLgo+ICstIGludGVycnVwdHM6CUludGVycnVwdCBu dW1iZXIgdG8gdGhlIGNwdS4KPiArCj4gK1JlcXVpcmVkIG5vZGVzOgo+ICsKPiArVGhlIHNpaTkw MjIgaGFzIG9uZSB2aWRlbyBwb3J0cy4gSXRzIGNvbm5lY3Rpb24gaXMgbW9kZWxsZWQgdXNpbmcg dGhlIE9GCj4gK2dyYXBoIGJpbmRpbmdzIHNwZWNpZmllZCBpbiBEb2N1bWVudGF0aW9uL2Rldmlj ZXRyZWUvYmluZGluZ3MvZ3JhcGgudHh0Lgo+ICsKPiArLSBWaWRlbyBwb3J0IDAgZm9yIHRoZSBI RE1JIG91dHB1dAo+ICsKPiArRXhhbXBsZToKPiArLS0tLS0tLQo+ICsKPiArLyB7Cj4gKwloZG1p LW91dCB7Cj4gKwkJY29tcGF0aWJsZSA9ICJoZG1pLWNvbm5lY3RvciI7Cj4gKwkJdHlwZSA9ICJh IjsKPiArCj4gKwkJcG9ydCB7Cj4gKwkJCWhkbWlfY29uOiBlbmRwb2ludCB7Cj4gKwkJCQlyZW1v dGUtZW5kcG9pbnQgPSA8JnNpaTkwMjJhX291dD47Cj4gKwkJCX07Cj4gKwkJfTsKPiArCX07Cj4g K307Cj4gKwo+ICsmaTJjMSB7Cj4gKyAgICBzaWk5MDIyOiBoZG1pQDM5IHsKPiArICAgICAgICAg ICAgY29tcGF0aWJsZSA9ICJzaWwsc2lpOTAyMmEiOwo+ICsgICAgICAgICAgICByZWcgPSA8MHgz OT47Cj4gKyAgICAgICAgICAgIGludGVycnVwdHMgPSA8R0lDX1NQSSAxNjcgSVJRX1RZUEVfRURH RV9SSVNJTkc+Owo+ICsKPiArICAgICAgICAgICAgcG9ydHMgewo+ICsgICAgICAgICAgICAgICAg ICAgICNhZGRyZXNzLWNlbGxzID0gPDE+Owo+ICsgICAgICAgICAgICAgICAgICAgICNzaXplLWNl bGxzID0gPDA+Owo+ICsKPiArICAgICAgICAgICAgICAgICAgICBwb3J0QDAgewo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmVnID0gPDE+Owo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2lpOTAyMl9vdXQ6IGVuZHBvaW50IHsKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVtb3RlLWVuZHBvaW50ID0gPCZoZG1pX2Nvbj47Cj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9Owo+ICsgICAgICAgICAgICAgICAgICAgIH07CgpUaGlzIGRvZXMg bm90IGxvb2sgbGlrZSBhIHByb3BlciBkZXNjcmlwdGlvbiBvZiB0aGlzIEhETUkgdHJhbnNtaXR0 ZXIuCkl0IHNob3VsZCBoYXZlIHR3byBwb3J0cywgb25lIHRvd2FyZHMgdGhlIGRpc3BsYXkgY29u dHJvbGxlciwgdGhlIG90aGVyCnRvd2FyZHMgdGhlIEhETUkgcG9ydC4gCgpBbHNvLCB3ZSBhbHdh eXMgdXNlIHRoZSByZWcgdmFsdWUgYWZ0ZXIgQCBzaWduIG9mIHRoZSBub2RlIG5hbWUsIChzaG91 bGQKYmUgcG9ydEAxIGluIHRoaXMgY2FzZSkuCgpUaGUgQURWNzUxMSBzZWVtcyB0byBiZSBhIGdv b2QgZXhhbXBsZSBob3cgdG8gZG8gdGhpcywgYWxvbmcgd2l0aCBhCmRldmljZSB0cmVlIHdoaWNo IG1ha2VzIHVzZSBvZiBpdCAoZS5nLgphcmNoL2FybS9ib290L2R0cy9yOGE3NzkxLWtvZWxzY2gu ZHRzKS4KCgo+ICsgICAgICAgICAgICB9Owo+ICsgICAgfTsKPiArfTsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRj dS9NYWtlZmlsZQo+IGluZGV4IDZlYTE1MjMuLjk4Y2FjYzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2ZzbC1kY3UvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRj dS9NYWtlZmlsZQo+IEBAIC0xLDYgKzEsNyBAQAo+ICBmc2wtZGN1LWRybS15IDo9IGZzbF9kY3Vf ZHJtX2Rydi5vIFwKPiAgCQkgZnNsX2RjdV9kcm1fa21zLm8gXAo+ICAJCSBmc2xfZGN1X2RybV9y Z2IubyBcCj4gKwkJIGZzbF9kY3VfZHJtX2hkbWkubyBcCj4gIAkJIGZzbF9kY3VfZHJtX3BsYW5l Lm8gXAo+ICAJCSBmc2xfZGN1X2RybV9jcnRjLm8gXAo+ICAJCSBmc2xfZGN1X2RybV9mYmRldi5v Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX2Rydi5o Cj4gYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9kcnYuaAo+IGluZGV4IDY0 MTNhYzkuLjdkMWIwZmQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNs X2RjdV9kcm1fZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2Ry bV9kcnYuaAo+IEBAIC0xODksNiArMTg5LDcgQEAgc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSB7 Cj4gIAlzdHJ1Y3QgZHJtX2ZiZGV2X2NtYSAqZmJkZXY7Cj4gIAlzdHJ1Y3QgZHJtX2NydGMgY3J0 YzsKPiAgCXN0cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOwo+ICsJc3RydWN0IGRybV9lbmNvZGVy X3NsYXZlICpzbGF2ZTsKPiAgCXN0cnVjdCBmc2xfZGN1X2RybV9jb25uZWN0b3IgY29ubmVjdG9y Owo+ICAJY29uc3Qgc3RydWN0IGZzbF9kY3Vfc29jX2RhdGEgKnNvYzsKPiAgfTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1faGRtaS5jCj4gYi9kcml2 ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9oZG1pLmMKPiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+IGluZGV4IDAwMDAwMDAuLjBiMDYwNjAKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1faGRtaS5jCj4gQEAgLTAsMCArMSwyNzEg QEAKPiArLyoKPiArICogQ29weXJpZ2h0IDIwMTUgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIElu Yy4KPiArICoKPiArICogRnJlZXNjYWxlIERDVSBkcm0gZGV2aWNlIGRyaXZlcgo+ICsgKgo+ICsg KiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQo+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ICsgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+ICsgKiAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxs aW51eC9jb25zb2xlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgo+ICsjaW5jbHVkZSA8 bGludXgvZXJybm8uaD4KPiArI2luY2x1ZGUgPGxpbnV4L2ZiLmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9mc2xfZGV2aWNlcy5oPgo+ICsjaW5jbHVkZSA8bGludXgvaTJjLmg+Cj4gKyNpbmNsdWRlIDxs aW51eC9pbml0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KPiArI2luY2x1ZGUg PGxpbnV4L2tlcm5lbC5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9vZl9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2JhY2tsaWdodC5oPgo+ICsj aW5jbHVkZSA8dmlkZW8vdmlkZW9tb2RlLmg+Cj4gKyNpbmNsdWRlIDx2aWRlby9vZl9kaXNwbGF5 X3RpbWluZy5oPgo+ICsKPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKyNpbmNsdWRlIDxkcm0v ZHJtX2F0b21pY19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rlcl9zbGF2ZS5o Pgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9lZGlkLmg+Cj4gKwo+ICsjaW5jbHVkZSAiZnNsX2RjdV9kcm1fZHJ2LmgiCj4gKyNpbmNsdWRl ICJmc2xfZGN1X2RybV9vdXRwdXQuaCIKPiArCj4gKyNkZWZpbmUgdG9fZHJtX2VuY29kZXJfc2xh dmUoZSkgXAo+ICsJY29udGFpbmVyX29mKGUsIHN0cnVjdCBkcm1fZW5jb2Rlcl9zbGF2ZSwgYmFz ZSkKPiArI2RlZmluZSB0b19zbGF2ZV9mdW5jcyhlKQkodG9fZHJtX2VuY29kZXJfc2xhdmUoZSkt PnNsYXZlX2Z1bmNzKQo+ICtzdGF0aWMgdm9pZCBmc2xfZGN1X2RybV9oZG1pZW5jX21vZGVfc2V0 KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiArCQkJCQkgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUsCj4gKwkJCQkJIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9t b2RlKQo+ICt7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfc2xhdmVfZnVuY3MgKnNmdW5j cyA9IHRvX3NsYXZlX2Z1bmNzKGVuY29kZXIpOwo+ICsKPiArCWlmIChzZnVuY3MtPm1vZGVfc2V0 KQo+ICsJCXNmdW5jcy0+bW9kZV9zZXQoZW5jb2RlciwgbW9kZSwgYWRqdXN0ZWRfbW9kZSk7Cj4g Kwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK2ZzbF9kY3VfZHJtX2hkbWllbmNfYXRvbWljX2No ZWNrKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiArCQkJCSBzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCQkgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNv bm5fc3RhdGUpCj4gK3sKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBmc2xf ZGN1X2RybV9oZG1pZW5jX2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQo+ICt7 Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfc2xhdmVfZnVuY3MgKnNmdW5jcyA9IHRvX3Ns YXZlX2Z1bmNzKGVuY29kZXIpOwo+ICsKPiArCWlmIChzZnVuY3MtPmRwbXMpCj4gKwkJc2Z1bmNz LT5kcG1zKGVuY29kZXIsIERSTV9NT0RFX0RQTVNfT0ZGKTsKPiArfQo+ICsKPiArc3RhdGljIHZv aWQgZnNsX2RjdV9kcm1faGRtaWVuY19lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy KQo+ICt7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfc2xhdmVfZnVuY3MgKnNmdW5jcyA9 IHRvX3NsYXZlX2Z1bmNzKGVuY29kZXIpOwo+ICsKPiArCWlmIChzZnVuY3MtPmRwbXMpCj4gKwkJ c2Z1bmNzLT5kcG1zKGVuY29kZXIsIERSTV9NT0RFX0RQTVNfT04pOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyBlbmNvZGVyX2hlbHBlcl9m dW5jcyA9IHsKPiArCS5hdG9taWNfY2hlY2sgPSBmc2xfZGN1X2RybV9oZG1pZW5jX2F0b21pY19j aGVjaywKPiArCS5kaXNhYmxlID0gZnNsX2RjdV9kcm1faGRtaWVuY19kaXNhYmxlLAo+ICsJLmVu YWJsZSA9IGZzbF9kY3VfZHJtX2hkbWllbmNfZW5hYmxlLAo+ICsJLm1vZGVfc2V0ID0gZnNsX2Rj dV9kcm1faGRtaWVuY19tb2RlX3NldCwKPiArfTsKPiArCj4gK3N0YXRpYyB2b2lkIGZzbF9kY3Vf ZHJtX2hkbWllbmNfZGVzdHJveShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCj4gK3sKPiAr CWRybV9lbmNvZGVyX2NsZWFudXAoZW5jb2Rlcik7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgZW5jb2Rlcl9mdW5jcyA9IHsKPiArCS5kZXN0cm95ID0g ZnNsX2RjdV9kcm1faGRtaWVuY19kZXN0cm95LAo+ICt9Owo+ICtpbnQgZnNsX2RjdV9kcm1faGRt aWVuY19jcmVhdGUoc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiwKPiArCQkJICAg ICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiArewo+ICsJc3RydWN0IGRybV9pMmNfZW5jb2Rl cl9kcml2ZXIgKmRyaXZlcjsKPiArCXN0cnVjdCBkcm1fZW5jb2Rlcl9zbGF2ZSAqZW5jX3NsYXZl Owo+ICsJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwo+ICsJc3RydWN0IGkyY19jbGllbnQg KmkyY19zbGF2ZTsKPiArCWludCByZXQ7Cj4gKwo+ICsKPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAq bnAgPSBvZl9maW5kX2NvbXBhdGlibGVfbm9kZShOVUxMLAo+ICsJCQkJCU5VTEwsICJzaWwsc2lp OTAyMmEiKTsKPiArCWlmIChucCA9PSBOVUxMKQo+ICsJCXJldHVybiAtMTsKCldpdGggYSBwcm9w ZXIgZGVzY3JpcHRpb24gYWJvdmUsIHNlYXJjaGluZyB0aGUgbm9kZSB3aXRoIGEgc3RhdGljCmNv bXBhdGlibGUgc3RyaW5nIHNob3VsZG4ndCBiZSBuZWNlc3NhcnkgYW55bW9yZS4uLgoKQWxzbywg cmV0dXJuIHByb3BlciBlcnJvciBjb2RlcyBzdWNoIGFzIC1FTk9ERVYgZXRjLi4uCgotLQpTdGVm YW4KCj4gKwo+ICsJLyogTG9jYXRlIHRoZSBzbGF2ZSBJMkMgZGV2aWNlIGFuZCBkcml2ZXIuICov Cj4gKwlpMmNfc2xhdmUgPSBvZl9maW5kX2kyY19kZXZpY2VfYnlfbm9kZShucCk7Cj4gKwlpZiAo IWkyY19zbGF2ZSB8fCAhaTJjX2dldF9jbGllbnRkYXRhKGkyY19zbGF2ZSkpCj4gKwkJcmV0dXJu IC1FUFJPQkVfREVGRVI7Cj4gKwo+ICsJZW5jX3NsYXZlID0gZGV2bV9remFsbG9jKGZzbF9kZXYt PmRldiwgc2l6ZW9mKCplbmNfc2xhdmUpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghZW5jX3NsYXZl KQo+ICsJCXJldHVybiAtMTsKPiArCj4gKwkvKiBJbml0aWFsaXplIHRoZSBzbGF2ZSBlbmNvZGVy LiAqLwo+ICsJZHJpdmVyID0gdG9fZHJtX2kyY19lbmNvZGVyX2RyaXZlcigKPiArCQkJCQl0b19p MmNfZHJpdmVyKGkyY19zbGF2ZS0+ZGV2LmRyaXZlcikpOwo+ICsJcmV0ID0gZHJpdmVyLT5lbmNv ZGVyX2luaXQoaTJjX3NsYXZlLCBmc2xfZGV2LT5kcm0sIGVuY19zbGF2ZSk7Cj4gKwlpZiAocmV0 IDwgMCkKPiArCQlyZXR1cm4gLTE7Cj4gKwo+ICsJZnNsX2Rldi0+c2xhdmUgPSBlbmNfc2xhdmU7 Cj4gKwllbmNvZGVyID0gJmVuY19zbGF2ZS0+YmFzZTsKPiArCj4gKwo+ICsJZW5jb2Rlci0+cG9z c2libGVfY3J0Y3MgPSAxOwo+ICsJcmV0ID0gZHJtX2VuY29kZXJfaW5pdChmc2xfZGV2LT5kcm0s IGVuY29kZXIsICZlbmNvZGVyX2Z1bmNzLAo+ICsJCQkgICAgICAgRFJNX01PREVfRU5DT0RFUl9U TURTLCBOVUxMKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJZHJt X2VuY29kZXJfaGVscGVyX2FkZChlbmNvZGVyLCAmZW5jb2Rlcl9oZWxwZXJfZnVuY3MpOwo+ICsJ ZW5jb2Rlci0+Y3J0YyA9IGNydGM7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gKyNkZWZp bmUgdG9fZnNsX2RjdV9kcm1faGRtaWNvbihjb25uZWN0b3IpIFwKPiArCWNvbnRhaW5lcl9vZihj b25uZWN0b3IsIHN0cnVjdCBmc2xfZGN1X2RybV9oZG1pY29uLCBjb25uZWN0b3IpCj4gKwo+ICtz dGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICpmc2xfZGN1X2RybV9oZG1pX2ZpbmRfZW5jb2Rlcihz dHJ1Y3QKPiBkcm1fZGV2aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2RlcjsKPiArCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGVuY29kZXIsICZkZXYtPm1vZGVfY29u ZmlnLmVuY29kZXJfbGlzdCwgaGVhZCkgewo+ICsJCWlmIChlbmNvZGVyLT5lbmNvZGVyX3R5cGUg PT0gRFJNX01PREVfRU5DT0RFUl9UTURTKQo+ICsJCQlyZXR1cm4gZW5jb2RlcjsKPiArCX0KPiAr Cj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZnNsX2RjdV9kcm1faGRt aWNvbl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCWRy bV9jb25uZWN0b3JfdW5yZWdpc3Rlcihjb25uZWN0b3IpOwo+ICsJZHJtX2Nvbm5lY3Rvcl9jbGVh bnVwKGNvbm5lY3Rvcik7Cj4gK30KPiArCj4gK3N0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3Rh dHVzCj4gK2ZzbF9kY3VfZHJtX2hkbWljb25fZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IsIGJvb2wgZm9yY2UpCj4gK3sKPiArCXN0cnVjdCBmc2xfZGN1X2RybV9oZG1pY29u ICpoZG1pY29uID0gdG9fZnNsX2RjdV9kcm1faGRtaWNvbihjb25uZWN0b3IpOwo+ICsKPiArCWlm IChoZG1pY29uLT5zdGF0dXMgPT0gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQpCj4gKwkJ cmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOwo+ICsJZWxzZQo+ICsJCXJldHVy biBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIGZzbF9kY3VfZHJtX2Nvbm5lY3Rvcl9mdW5jcyA9IHsK PiArCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9y X2R1cGxpY2F0ZV9zdGF0ZSwKPiArCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNf aGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRlLAo+ICsJLmRlc3Ryb3kgPSBmc2xfZGN1X2Ry bV9oZG1pY29uX2Rlc3Ryb3ksCj4gKwkuZGV0ZWN0ID0gZnNsX2RjdV9kcm1faGRtaWNvbl9kZXRl Y3QsCj4gKwkuZHBtcyA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kcG1zLAo+ICsJLmZp bGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsCj4gKwku cmVzZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQsCj4gK307Cj4gKwo+ICtz dGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICoKPiArZnNsX2RjdV9kcm1faGRtaWNvbl9iZXN0X2Vu Y29kZXIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+ZGV2Owo+ICsKPiArCXJldHVybiBmc2xfZGN1X2Ry bV9oZG1pX2ZpbmRfZW5jb2RlcihkZXYpOwo+ICt9Cj4gKwo+ICsKPiArc3RhdGljIGludCBmc2xf ZGN1X2RybV9oZG1pY29uX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y KQo+ICt7Cj4gKwlzdHJ1Y3QgZnNsX2RjdV9kcm1faGRtaWNvbiAqY29uID0gdG9fZnNsX2RjdV9k cm1faGRtaWNvbihjb25uZWN0b3IpOwo+ICsJY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX3NsYXZl X2Z1bmNzICpzZnVuY3MgPSBjb24tPnNsYXZlLT5zbGF2ZV9mdW5jczsKPiArCj4gKwlpZiAoc2Z1 bmNzLT5nZXRfbW9kZXMgPT0gTlVMTCkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlyZXR1cm4gc2Z1 bmNzLT5nZXRfbW9kZXMoTlVMTCwgY29ubmVjdG9yKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBm c2xfZGN1X2RybV9oZG1pY29uX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwKPiArCQkJCQkgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQo+ICt7Cj4gKwlp ZiAobW9kZS0+aGRpc3BsYXkgPiAxMDI0KQo+ICsJCXJldHVybiBNT0RFX1ZJUlRVQUxfWDsKPiAr CWVsc2UgaWYJKG1vZGUtPnZkaXNwbGF5ID4gNzY4KQo+ICsJCXJldHVybiBNT0RFX1ZJUlRVQUxf WTsKPiArCj4gKwlyZXR1cm4gTU9ERV9PSzsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyBjb25uZWN0b3JfaGVscGVyX2Z1bmNzID0gewo+ ICsJLmJlc3RfZW5jb2RlciA9IGZzbF9kY3VfZHJtX2hkbWljb25fYmVzdF9lbmNvZGVyLAo+ICsJ LmdldF9tb2RlcyA9IGZzbF9kY3VfZHJtX2hkbWljb25fZ2V0X21vZGVzLAo+ICsJLm1vZGVfdmFs aWQgPSBmc2xfZGN1X2RybV9oZG1pY29uX21vZGVfdmFsaWQsCj4gK307Cj4gKwo+ICtpbnQgZnNs X2RjdV9kcm1faGRtaWNvbl9jcmVhdGUoc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2Rl dikKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZzbF9kZXYtPmRybTsKPiArCXN0 cnVjdCBmc2xfZGN1X2RybV9oZG1pY29uICpoZG1pY29uOwo+ICsJc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvcjsKPiArCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiArCWludCBy ZXQ7Cj4gKwo+ICsJaGRtaWNvbiA9IGRldm1fa3phbGxvYyhmc2xfZGV2LT5kZXYsCj4gKwkJCSAg ICAgICBzaXplb2Yoc3RydWN0IGZzbF9kY3VfZHJtX2hkbWljb24pLCBHRlBfS0VSTkVMKTsKPiAr CWlmICghaGRtaWNvbikKPiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwloZG1pY29uLT5zbGF2 ZSA9IGZzbF9kZXYtPnNsYXZlOwo+ICsJY29ubmVjdG9yID0gJmhkbWljb24tPmNvbm5lY3RvcjsK PiArCj4gKwljb25uZWN0b3ItPmRpc3BsYXlfaW5mby53aWR0aF9tbSA9IDA7Cj4gKwljb25uZWN0 b3ItPmRpc3BsYXlfaW5mby5oZWlnaHRfbW0gPSAwOwo+ICsJY29ubmVjdG9yLT5wb2xsZWQgPSBE Uk1fQ09OTkVDVE9SX1BPTExfSFBEOwo+ICsKPiArCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChm c2xfZGV2LT5kcm0sIGNvbm5lY3RvciwKPiArCQkJCSAmZnNsX2RjdV9kcm1fY29ubmVjdG9yX2Z1 bmNzLAo+ICsJCQkJIERSTV9NT0RFX0NPTk5FQ1RPUl9IRE1JQSk7Cj4gKwlpZiAocmV0IDwgMCkK PiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWNvbm5lY3Rvci0+ZHBtcyA9IERSTV9NT0RFX0RQTVNf T0ZGOwo+ICsJZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKGNvbm5lY3RvciwgJmNvbm5lY3Rvcl9o ZWxwZXJfZnVuY3MpOwo+ICsJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9yZWdpc3Rlcihjb25uZWN0b3Ip Owo+ICsJaWYgKHJldCA8IDApCj4gKwkJZ290byBlcnJfY2xlYW51cDsKPiArCj4gKwllbmNvZGVy ID0gZnNsX2RjdV9kcm1faGRtaV9maW5kX2VuY29kZXIoZGV2KTsKPiArCWlmICghZW5jb2RlcikK PiArCQlnb3RvIGVycl9jbGVhbnVwOwo+ICsJcmV0ID0gZHJtX21vZGVfY29ubmVjdG9yX2F0dGFj aF9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rlcik7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlnb3Rv IGVycl9zeXNmczsKPiArCj4gKwljb25uZWN0b3ItPmVuY29kZXIgPSBlbmNvZGVyOwo+ICsKPiAr CWRybV9vYmplY3RfcHJvcGVydHlfc2V0X3ZhbHVlCj4gKwkJKCZjb25uZWN0b3ItPmJhc2UsIGZz bF9kZXYtPmRybS0+bW9kZV9jb25maWcuZHBtc19wcm9wZXJ0eSwKPiArCQlEUk1fTU9ERV9EUE1T X09GRik7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtlcnJfc3lzZnM6Cj4gKwlkcm1fY29ubmVj dG9yX3VucmVnaXN0ZXIoY29ubmVjdG9yKTsKPiArZXJyX2NsZWFudXA6Cj4gKwlkcm1fY29ubmVj dG9yX2NsZWFudXAoY29ubmVjdG9yKTsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK01PRFVM RV9BVVRIT1IoIkZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuIik7Cj4gK01PRFVMRV9ERVND UklQVElPTigiU0lJOTAyeCBEVkkvSERNSSBkcml2ZXIiKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQ TCIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9r bXMuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2RjdV9kcm1fa21zLmMKPiBpbmRl eCBjNTY0ZWM2Li45NGIxMTExIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1 L2ZzbF9kY3VfZHJtX2ttcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvZnNsX2Rj dV9kcm1fa21zLmMKPiBAQCAtMTcsMTAgKzE3LDE4IEBACj4gICNpbmNsdWRlICJmc2xfZGN1X2Ry bV9jcnRjLmgiCj4gICNpbmNsdWRlICJmc2xfZGN1X2RybV9kcnYuaCIKPiAgCj4gK3N0YXRpYyB2 b2lkIGZzbF9kY3VfZHJtX291dHB1dF9wb2xsX2NoYW5nZWQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKPiArewo+ICsJc3RydWN0IGZzbF9kY3VfZHJtX2RldmljZSAqZnNsX2RldiA9IGRldi0+ZGV2 X3ByaXZhdGU7Cj4gKwo+ICsJZHJtX2ZiZGV2X2NtYV9ob3RwbHVnX2V2ZW50KGZzbF9kZXYtPmZi ZGV2KTsKPiArfQo+ICsKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdfZnVu Y3MgZnNsX2RjdV9kcm1fbW9kZV9jb25maWdfZnVuY3MgPSB7Cj4gIAkuYXRvbWljX2NoZWNrID0g ZHJtX2F0b21pY19oZWxwZXJfY2hlY2ssCj4gIAkuYXRvbWljX2NvbW1pdCA9IGRybV9hdG9taWNf aGVscGVyX2NvbW1pdCwKPiAgCS5mYl9jcmVhdGUgPSBkcm1fZmJfY21hX2NyZWF0ZSwKPiArCS5v dXRwdXRfcG9sbF9jaGFuZ2VkID0gZnNsX2RjdV9kcm1fb3V0cHV0X3BvbGxfY2hhbmdlZCwKPiAg fTsKPiAgCj4gIGludCBmc2xfZGN1X2RybV9tb2Rlc2V0X2luaXQoc3RydWN0IGZzbF9kY3VfZHJt X2RldmljZSAqZnNsX2RldikKPiBAQCAtNDMsMTAgKzUxLDE0IEBAIGludCBmc2xfZGN1X2RybV9t b2Rlc2V0X2luaXQoc3RydWN0Cj4gZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2KQo+ICAJaWYg KHJldCkKPiAgCQlnb3RvIGZhaWxfZW5jb2RlcjsKPiAgCj4gKwlmc2xfZGN1X2RybV9oZG1pZW5j X2NyZWF0ZShmc2xfZGV2LCAmZnNsX2Rldi0+Y3J0Yyk7Cj4gKwo+ICAJcmV0ID0gZnNsX2RjdV9k cm1fY29ubmVjdG9yX2NyZWF0ZShmc2xfZGV2LCAmZnNsX2Rldi0+ZW5jb2Rlcik7Cj4gIAlpZiAo cmV0KQo+ICAJCWdvdG8gZmFpbF9jb25uZWN0b3I7Cj4gIAo+ICsJZnNsX2RjdV9kcm1faGRtaWNv bl9jcmVhdGUoZnNsX2Rldik7Cj4gKwo+ICAJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGZzbF9kZXYt PmRybSk7Cj4gIAlkcm1fa21zX2hlbHBlcl9wb2xsX2luaXQoZnNsX2Rldi0+ZHJtKTsKPiAgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9mc2wtZGN1L2ZzbF9kY3VfZHJtX291dHB1dC5o Cj4gYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xfZGN1X2RybV9vdXRwdXQuaAo+IGluZGV4 IDcwOTMxMDkuLmZhMGQ3ZWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3Uv ZnNsX2RjdV9kcm1fb3V0cHV0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZnNsLWRjdS9mc2xf ZGN1X2RybV9vdXRwdXQuaAo+IEBAIC0xOCw2ICsxOCwxMyBAQCBzdHJ1Y3QgZnNsX2RjdV9kcm1f Y29ubmVjdG9yIHsKPiAgCXN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsOwo+ICB9Owo+ICAKPiArc3Ry dWN0IGZzbF9kY3VfZHJtX2hkbWljb24gewo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgY29ubmVj dG9yOwo+ICsJc3RydWN0IGRybV9lbmNvZGVyX3NsYXZlICpzbGF2ZTsKPiArCXN0cnVjdCBpMmNf Y2xpZW50ICpjbGllbnQ7Cj4gKwllbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzIHN0YXR1czsKPiAr fTsKPiArCj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IGZzbF9kY3VfZHJtX2Nvbm5lY3RvciAqCj4g IHRvX2ZzbF9kY3VfY29ubmVjdG9yKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb24pCj4gIHsKPiBA QCAtMjksNSArMzYsOSBAQCBpbnQgZnNsX2RjdV9kcm1fY29ubmVjdG9yX2NyZWF0ZShzdHJ1Y3QK PiBmc2xfZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYsCj4gIAkJCQkgc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyKTsKPiAgaW50IGZzbF9kY3VfZHJtX2VuY29kZXJfY3JlYXRlKHN0cnVjdCBmc2xf ZGN1X2RybV9kZXZpY2UgKmZzbF9kZXYsCj4gIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpOwo+ICtpbnQgZnNsX2RjdV9kcm1faGRtaWNvbl9jcmVhdGUoc3RydWN0IGZzbF9kY3VfZHJt X2RldmljZSAqZnNsX2Rldik7Cj4gK2ludCBmc2xfZGN1X2RybV9oZG1pZW5jX2NyZWF0ZShzdHJ1 Y3QgZnNsX2RjdV9kcm1fZGV2aWNlICpmc2xfZGV2LAo+ICsJCQkgICAgICAgc3RydWN0IGRybV9j cnRjICpjcnRjKTsKPiArCj4gIAo+ICAjZW5kaWYgLyogX19GU0xfRENVX0RSTV9DT05ORUNUT1Jf SF9fICovCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=