From: Boris Brezillon Subject: Re: [PATCH v2 7/7] drm/atmel-hlcdc: Replace the panel usage with drm_panel_bridge. Date: Thu, 11 May 2017 21:15:23 +0200 Message-ID: <20170511211523.13fa866c@bbrezillon> References: <20170511183128.25085-1-eric@anholt.net> <20170511183128.25085-7-eric@anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.free-electrons.com (mail.free-electrons.com [62.4.15.54]) by gabe.freedesktop.org (Postfix) with ESMTP id 472EF6E5A3 for ; Thu, 11 May 2017 19:15:31 +0000 (UTC) In-Reply-To: <20170511183128.25085-7-eric@anholt.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Eric Anholt Cc: Philippe Cornu , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Yannick Fertre , Laurent Pinchart List-Id: dri-devel@lists.freedesktop.org SGkgRXJpYywKCk9uIFRodSwgMTEgTWF5IDIwMTcgMTE6MzE6MjggLTA3MDAKRXJpYyBBbmhvbHQg PGVyaWNAYW5ob2x0Lm5ldD4gd3JvdGU6Cgo+IFRoaXMgY3V0cyAxMzUgbGluZXMgb2YgYm9pbGVy cGxhdGUsIGF0IHRoZSBjb3N0IG9mIGxvc2luZyB0aGUKPiBmaWx0ZXJpbmcgb2YgZ2V0X21vZGVz KCkgdXNpbmcgYXRtZWxfaGxjZGNfZGNfbW9kZV92YWxpZCgpLiAgVGhlCj4gYXRvbWljIGNoZWNr IHdpbGwgc3RpbGwgY2hlY2sgdGhhdCB3ZSBkb24ndCBzZXQgYW4gaW52YWxpZCBtb2RlLAo+IHRo b3VnaC4KCk5pY2UuCgo+IAo+IFNpZ25lZC1vZmYtYnk6IEVyaWMgQW5ob2x0IDxlcmljQGFuaG9s dC5uZXQ+CgpBY2tlZC1ieTogQm9yaXMgQnJlemlsbG9uIDxib3Jpcy5icmV6aWxsb25AZnJlZS1l bGVjdHJvbnMuY29tPgoKQSBmZXcgY29tbWVudHMgYmVsb3cgKG5vIG5lZWQgdG8gYWRkcmVzcyB0 aGVtLCB0aG9zZSBhcmUganVzdCBtaW5vcgp0aGluZ3MgdGhhdCBjYW4gYmUgZml4ZWQgbGF0ZXIg b24sIG9yIHRoaW5ncyBJJ20gbm90IGNvbWZvcnRhYmxlCndpdGggYnV0IGNhbm5vdCBiZSBhZGRy ZXNzZWQgZWFzaWx5KS4KCj4gLS0tCj4gCj4gVGhpcyBwYXRjaCBpcyBqdXN0IGEgcHJvcG9zYWwg Zm9yIGF0bWVsLWhsY2RjIGlmIHlvdSBsaWtlIGl0IC0tIG1heWJlCj4geW91IHN0aWxsIHdhbnQg dGhlIGZpbHRlcmluZyBvZiBnZXRfbW9kZXMoKS4gIEknbSBub3Qgc3VyZSBmcm9tIGEKPiB1c2Vy c3BhY2UgQVBJIHBlcnNwZWN0aXZlIGlmIHdlIHNob3VsZCByZWFsbHkgaGF2ZSB0aGUgZW5jb2Rl ciAoeW91cgo+IENSVEMncyBsaW1pdHMpIGZpbHRlcmluZyBtb2RlcyBmcm9tIGEgY29ubmVjdG9y LCBidXQgSSdtIGFsc28gcHJldHR5Cj4gc3VyZSBpdCBkb2Vzbid0IGFjdHVhbGx5IG1hdHRlci4K CkFjdHVhbGx5IEkgYWRkZWQgdGhpcyBjaGVjayBiZWNhdXNlIHNvbWVvbmUgc3VnZ2VzdGVkIGl0 IDotKS4gSSBkb24ndAp0aGluayBpdCdzIGEgcmVhbCBwcm9ibGVtLCBhbmQgdGhhdCBzaG91bGQg ZGVmaW5pdGVseSBiZSBjaGVja2VkIGF0IHRoZQpDUlRDIGxldmVsLCBub3QgaGVyZS4KCj4gCj4g IGRyaXZlcnMvZ3B1L2RybS9hdG1lbC1obGNkYy9hdG1lbF9obGNkY19vdXRwdXQuYyB8IDE2MyAr Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygr KSwgMTQ5IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXRt ZWwtaGxjZGMvYXRtZWxfaGxjZGNfb3V0cHV0LmMgYi9kcml2ZXJzL2dwdS9kcm0vYXRtZWwtaGxj ZGMvYXRtZWxfaGxjZGNfb3V0cHV0LmMKPiBpbmRleCA0YjJjZmJkMGQ0M2YuLjM0MGVmOTYyYWE4 MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXRtZWwtaGxjZGMvYXRtZWxfaGxjZGNf b3V0cHV0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXRtZWwtaGxjZGMvYXRtZWxfaGxjZGNf b3V0cHV0LmMKPiBAQCAtMjMsMTkxICsyMyw1NiBAQAo+ICAKPiAgI2luY2x1ZGUgPGRybS9kcm1Q Lmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX29mLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2JyaWRn ZS5oPgo+ICAKPiAgI2luY2x1ZGUgImF0bWVsX2hsY2RjX2RjLmgiCj4gIAo+IC0vKioKPiAtICog QXRtZWwgSExDREMgUkdCIGNvbm5lY3RvciBzdHJ1Y3R1cmUKPiAtICoKPiAtICogVGhpcyBzdHJ1 Y3R1cmUgc3RvcmVzIFJHQiBzbGF2ZSBkZXZpY2UgaW5mb3JtYXRpb24uCj4gLSAqCj4gLSAqIEBj b25uZWN0b3I6IERSTSBjb25uZWN0b3IKPiAtICogQGVuY29kZXI6IERSTSBlbmNvZGVyCj4gLSAq IEBkYzogcG9pbnRlciB0byB0aGUgYXRtZWxfaGxjZGNfZGMgc3RydWN0dXJlCj4gLSAqIEBwYW5l bDogcGFuZWwgY29ubmVjdGVkIG9uIHRoZSBSR0Igb3V0cHV0Cj4gLSAqLwo+IC1zdHJ1Y3QgYXRt ZWxfaGxjZGNfcmdiX291dHB1dCB7Cj4gLQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7 Cj4gLQlzdHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsKPiAtCXN0cnVjdCBhdG1lbF9obGNkY19k YyAqZGM7Cj4gLQlzdHJ1Y3QgZHJtX3BhbmVsICpwYW5lbDsKPiAtfTsKPiAtCj4gLXN0YXRpYyBp bmxpbmUgc3RydWN0IGF0bWVsX2hsY2RjX3JnYl9vdXRwdXQgKgo+IC1kcm1fY29ubmVjdG9yX3Rv X2F0bWVsX2hsY2RjX3JnYl9vdXRwdXQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikK PiAtewo+IC0JcmV0dXJuIGNvbnRhaW5lcl9vZihjb25uZWN0b3IsIHN0cnVjdCBhdG1lbF9obGNk Y19yZ2Jfb3V0cHV0LAo+IC0JCQkgICAgY29ubmVjdG9yKTsKPiAtfQo+IC0KPiAtc3RhdGljIGlu bGluZSBzdHJ1Y3QgYXRtZWxfaGxjZGNfcmdiX291dHB1dCAqCj4gLWRybV9lbmNvZGVyX3RvX2F0 bWVsX2hsY2RjX3JnYl9vdXRwdXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQo+IC17Cj4g LQlyZXR1cm4gY29udGFpbmVyX29mKGVuY29kZXIsIHN0cnVjdCBhdG1lbF9obGNkY19yZ2Jfb3V0 cHV0LCBlbmNvZGVyKTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgYXRtZWxfaGxjZGNfcmdiX2Vu Y29kZXJfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiAtewo+IC0Jc3RydWN0 IGF0bWVsX2hsY2RjX3JnYl9vdXRwdXQgKnJnYiA9Cj4gLQkJCWRybV9lbmNvZGVyX3RvX2F0bWVs X2hsY2RjX3JnYl9vdXRwdXQoZW5jb2Rlcik7Cj4gLQo+IC0JaWYgKHJnYi0+cGFuZWwpIHsKPiAt CQlkcm1fcGFuZWxfcHJlcGFyZShyZ2ItPnBhbmVsKTsKPiAtCQlkcm1fcGFuZWxfZW5hYmxlKHJn Yi0+cGFuZWwpOwo+IC0JfQo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBhdG1lbF9obGNkY19yZ2Jf ZW5jb2Rlcl9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKPiAtewo+IC0Jc3Ry dWN0IGF0bWVsX2hsY2RjX3JnYl9vdXRwdXQgKnJnYiA9Cj4gLQkJCWRybV9lbmNvZGVyX3RvX2F0 bWVsX2hsY2RjX3JnYl9vdXRwdXQoZW5jb2Rlcik7Cj4gLQo+IC0JaWYgKHJnYi0+cGFuZWwpIHsK PiAtCQlkcm1fcGFuZWxfZGlzYWJsZShyZ2ItPnBhbmVsKTsKPiAtCQlkcm1fcGFuZWxfdW5wcmVw YXJlKHJnYi0+cGFuZWwpOwo+IC0JfQo+IC19Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9lbmNvZGVyX2hlbHBlcl9mdW5jcyBhdG1lbF9obGNkY19wYW5lbF9lbmNvZGVyX2hlbHBlcl9m dW5jcyA9IHsKPiAtCS5kaXNhYmxlID0gYXRtZWxfaGxjZGNfcmdiX2VuY29kZXJfZGlzYWJsZSwK PiAtCS5lbmFibGUgPSBhdG1lbF9obGNkY19yZ2JfZW5jb2Rlcl9lbmFibGUsCj4gLX07Cj4gLQo+ ICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIGF0bWVsX2hsY2RjX3BhbmVs X2VuY29kZXJfZnVuY3MgPSB7Cj4gIAkuZGVzdHJveSA9IGRybV9lbmNvZGVyX2NsZWFudXAsCj4g IH07Cj4gIAo+IC1zdGF0aWMgaW50IGF0bWVsX2hsY2RjX3BhbmVsX2dldF9tb2RlcyhzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+IC17Cj4gLQlzdHJ1Y3QgYXRtZWxfaGxjZGNfcmdi X291dHB1dCAqcmdiID0KPiAtCQkJZHJtX2Nvbm5lY3Rvcl90b19hdG1lbF9obGNkY19yZ2Jfb3V0 cHV0KGNvbm5lY3Rvcik7Cj4gLQo+IC0JaWYgKHJnYi0+cGFuZWwpCj4gLQkJcmV0dXJuIHJnYi0+ cGFuZWwtPmZ1bmNzLT5nZXRfbW9kZXMocmdiLT5wYW5lbCk7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4g LX0KPiAtCj4gLXN0YXRpYyBpbnQgYXRtZWxfaGxjZGNfcmdiX21vZGVfdmFsaWQoc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAtCQkJCSAgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlKQo+IC17Cj4gLQlzdHJ1Y3QgYXRtZWxfaGxjZGNfcmdiX291dHB1dCAqcmdiID0K PiAtCQkJZHJtX2Nvbm5lY3Rvcl90b19hdG1lbF9obGNkY19yZ2Jfb3V0cHV0KGNvbm5lY3Rvcik7 Cj4gLQo+IC0JcmV0dXJuIGF0bWVsX2hsY2RjX2RjX21vZGVfdmFsaWQocmdiLT5kYywgbW9kZSk7 Cj4gLX0KPiAtCj4gLXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVu Y3MgYXRtZWxfaGxjZGNfcGFuZWxfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKPiAtCS5nZXRf bW9kZXMgPSBhdG1lbF9obGNkY19wYW5lbF9nZXRfbW9kZXMsCj4gLQkubW9kZV92YWxpZCA9IGF0 bWVsX2hsY2RjX3JnYl9tb2RlX3ZhbGlkLAo+IC19Owo+IC0KPiAtc3RhdGljIGVudW0gZHJtX2Nv bm5lY3Rvcl9zdGF0dXMKPiAtYXRtZWxfaGxjZGNfcGFuZWxfY29ubmVjdG9yX2RldGVjdChzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQo+IC17Cj4gLQlzdHJ1Y3Qg YXRtZWxfaGxjZGNfcmdiX291dHB1dCAqcmdiID0KPiAtCQkJZHJtX2Nvbm5lY3Rvcl90b19hdG1l bF9obGNkY19yZ2Jfb3V0cHV0KGNvbm5lY3Rvcik7Cj4gLQo+IC0JaWYgKHJnYi0+cGFuZWwpCj4g LQkJcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOwo+IC0KPiAtCXJldHVybiBjb25u ZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQKPiAtYXRt ZWxfaGxjZGNfcGFuZWxfY29ubmVjdG9yX2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvcikKPiAtewo+IC0Jc3RydWN0IGF0bWVsX2hsY2RjX3JnYl9vdXRwdXQgKnJnYiA9Cj4g LQkJCWRybV9jb25uZWN0b3JfdG9fYXRtZWxfaGxjZGNfcmdiX291dHB1dChjb25uZWN0b3IpOwo+ IC0KPiAtCWlmIChyZ2ItPnBhbmVsKQo+IC0JCWRybV9wYW5lbF9kZXRhY2gocmdiLT5wYW5lbCk7 Cj4gLQo+IC0JZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm5lY3Rvcik7Cj4gLX0KPiAtCj4gLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBhdG1lbF9obGNkY19wYW5lbF9j b25uZWN0b3JfZnVuY3MgPSB7Cj4gLQkuZHBtcyA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rv cl9kcG1zLAo+IC0JLmRldGVjdCA9IGF0bWVsX2hsY2RjX3BhbmVsX2Nvbm5lY3Rvcl9kZXRlY3Qs Cj4gLQkuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2Rl cywKPiAtCS5kZXN0cm95ID0gYXRtZWxfaGxjZGNfcGFuZWxfY29ubmVjdG9yX2Rlc3Ryb3ksCj4g LQkucmVzZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQsCj4gLQkuYXRvbWlj X2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVf c3RhdGUsCj4gLQkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25u ZWN0b3JfZGVzdHJveV9zdGF0ZSwKPiAtfTsKPiAtCj4gIHN0YXRpYyBpbnQgYXRtZWxfaGxjZGNf YXR0YWNoX2VuZHBvaW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJCQkgICAgICAgY29u c3Qgc3RydWN0IGRldmljZV9ub2RlICpucCkKPiAgewo+IC0Jc3RydWN0IGF0bWVsX2hsY2RjX2Rj ICpkYyA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQlzdHJ1Y3QgYXRtZWxfaGxjZGNfcmdiX291dHB1 dCAqb3V0cHV0Owo+ICsJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwo+ICAJc3RydWN0IGRy bV9wYW5lbCAqcGFuZWw7Cj4gIAlzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlOwo+ICAJaW50IHJl dDsKPiAgCj4gLQlvdXRwdXQgPSBkZXZtX2t6YWxsb2MoZGV2LT5kZXYsIHNpemVvZigqb3V0cHV0 KSwgR0ZQX0tFUk5FTCk7Cj4gLQlpZiAoIW91dHB1dCkKPiArCWVuY29kZXIgPSBkZXZtX2t6YWxs b2MoZGV2LT5kZXYsIHNpemVvZigqZW5jb2RlciksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFlbmNv ZGVyKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAtCW91dHB1dC0+ZGMgPSBkYzsKPiAtCj4g LQlkcm1fZW5jb2Rlcl9oZWxwZXJfYWRkKCZvdXRwdXQtPmVuY29kZXIsCj4gLQkJCSAgICAgICAm YXRtZWxfaGxjZGNfcGFuZWxfZW5jb2Rlcl9oZWxwZXJfZnVuY3MpOwo+IC0JcmV0ID0gZHJtX2Vu Y29kZXJfaW5pdChkZXYsICZvdXRwdXQtPmVuY29kZXIsCj4gKwlyZXQgPSBkcm1fZW5jb2Rlcl9p bml0KGRldiwgZW5jb2RlciwKPiAgCQkJICAgICAgICZhdG1lbF9obGNkY19wYW5lbF9lbmNvZGVy X2Z1bmNzLAoKYXRtZWxfaGxjZGNfcGFuZWxfZW5jb2Rlcl9mdW5jcyBzaG91bGQgcHJvYmFibHkg YmUgcmVuYW1lZAphdG1lbF9obGNkY19kcGlfZW5jb2Rlcl9mdW5jcywgYnV0IGl0J3MganVzdCBh IGRldGFpbC4KCj4gIAkJCSAgICAgICBEUk1fTU9ERV9FTkNPREVSX05PTkUsIE5VTEwpOwo+ICAJ aWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAtCW91dHB1dC0+ZW5jb2Rlci5wb3NzaWJs ZV9jcnRjcyA9IDB4MTsKPiArCWVuY29kZXItPnBvc3NpYmxlX2NydGNzID0gMHgxOwo+ICAKPiAg CXJldCA9IGRybV9vZl9maW5kX3BhbmVsX29yX2JyaWRnZShucCwgMCwgMCwgJnBhbmVsLCAmYnJp ZGdlKTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gIAlpZiAocGFuZWwpIHsK PiAtCQlvdXRwdXQtPmNvbm5lY3Rvci5kcG1zID0gRFJNX01PREVfRFBNU19PRkY7Cj4gLQkJb3V0 cHV0LT5jb25uZWN0b3IucG9sbGVkID0gRFJNX0NPTk5FQ1RPUl9QT0xMX0NPTk5FQ1Q7Cj4gLQkJ ZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKCZvdXRwdXQtPmNvbm5lY3RvciwKPiAtCQkJCSZhdG1l bF9obGNkY19wYW5lbF9jb25uZWN0b3JfaGVscGVyX2Z1bmNzKTsKPiAtCQlyZXQgPSBkcm1fY29u bmVjdG9yX2luaXQoZGV2LCAmb3V0cHV0LT5jb25uZWN0b3IsCj4gLQkJCQkJICZhdG1lbF9obGNk Y19wYW5lbF9jb25uZWN0b3JfZnVuY3MsCj4gLQkJCQkJIERSTV9NT0RFX0NPTk5FQ1RPUl9Vbmtu b3duKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlnb3RvIGVycl9lbmNvZGVyX2NsZWFudXA7Cj4gLQo+ IC0JCWRybV9tb2RlX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2Rlcigmb3V0cHV0LT5jb25uZWN0b3Is Cj4gLQkJCQkJCSAgJm91dHB1dC0+ZW5jb2Rlcik7Cj4gLQo+IC0JCXJldCA9IGRybV9wYW5lbF9h dHRhY2gocGFuZWwsICZvdXRwdXQtPmNvbm5lY3Rvcik7Cj4gLQkJaWYgKHJldCkgewo+IC0JCQlk cm1fY29ubmVjdG9yX2NsZWFudXAoJm91dHB1dC0+Y29ubmVjdG9yKTsKPiAtCQkJZ290byBlcnJf ZW5jb2Rlcl9jbGVhbnVwOwo+IC0JCX0KPiAtCj4gLQkJb3V0cHV0LT5wYW5lbCA9IHBhbmVsOwo+ ICsJCWJyaWRnZSA9IGRybV9wYW5lbF9icmlkZ2VfYWRkKHBhbmVsLCBEUk1fTU9ERV9DT05ORUNU T1JfVW5rbm93bik7Cj4gKwkJaWYgKElTX0VSUihicmlkZ2UpKQo+ICsJCQlyZXR1cm4gUFRSX0VS UihicmlkZ2UpOwoKSXQgd291bGQgZXZlbiBiZSBzaW1wbGVyIGlmIHBhbmVscyB3ZXJlIGRpcmVj dGx5IHJlZ2lzdGVyaW5nCnRoZW1zZWx2ZXMgdG8gdGhlIGJyaWRnZSBpbmZyYXN0cnVjdHVyZSBz byB0aGF0IHRoZXkgY2FuIGJlIGZvdW5kIHdpdGgKZHJtX29mX2ZpbmRfYnJpZGdlKCkgYW5kIHdl IGRvbid0IGhhdmUgdG8gZXhwbGljaXRseSBjcmVhdGUgdGhpcwpicmlkZS0+cGFuZWwgd3JhcHBl ciwgYnV0IEkgcmVtZW1iZXIgdGhhdCBUaGllcnJ5IHdhcyBub3QgYSBiaWcgZmFuIG9mCnRoaXMg aWRlYS4KCkFsc28sIEkga2VlcCB0aGlua2luZyB0aGF0IHdlJ3JlIGFidXNpbmcgb2JqZWN0cy4g QSBicmlkZ2UgaXMgc3VwcG9zZWQKdG8gY29udmVydCBhIHBpeGVsIHN0cmVhbSBpbiBhIGdpdmVu IGZvcm1hdC9lbmNvZGluZyBpbnRvIGEgZGlmZmVyZW50CmZvcm1hdC9lbmNvZGluZy4gSGVyZSwg dGhlcmUncyBubyBjb252ZXJzaW9uIHRha2luZyBwbGFjZSBpbiB0aGlzCnBhbmVsX2JyaWRnZSwg aXQncyBqdXN0IGEgd2F5IHRvIGV4cG9zZSB0aGUgcGFuZWwgYXMgYSBnZW5lcmljIGVsZW1lbnQK dGhhdCBjYW4gYmUgZWFzaWx5IGNvbm5lY3RlZCB0byBtYW55IGRpc3BsYXkgY29udHJvbGxlciBk cml2ZXJzLgpUbyBiZSBwZXJmZWN0bHkgY2xlYXIsIEkgcmVhbGx5IGxpa2UgdGhpcyBpZGVhIG9m IHByb3ZpZGluZyBhIGdlbmVyaWMKd3JhcHBlciwgSSdtIGp1c3QgdW5zdXJlIGV4cG9zaW5nIHRo aXMgd3JhcHBlciBhcyBhIGJyaWRnZSBpcyBzdWNoIGEKZ29vZCBpZGVhLCB1bmxlc3Mgd2UgY2xh cmlmeSB0aGUgbWVhbmluZy9nb2FsIG9mIGEgJ2RybV9icmlkZ2UnIG9iamVjdC4KClRoZSBtb3Jl IEkgbG9vayBhdCBpdCwgdGhlIG1vcmUgSSB0aGluayB0aGUgZHJtX2JyaWRnZSBpcyB0dXJuaW5n IGludG8gYQpnZW5lcmljIGVsZW1lbnQgdGhhdCBpcyB0YWtpbmcgYSBzdHJlYW0gb2YgcGl4ZWwg aW4gYSBzcGVjaWZpYyBmb3JtYXQKYW5kIGVpdGhlciBjb25zdW1pbmcgaXQgb2YgdHJhbnNmb3Jt aW5nIGl0IGJlZm9yZSBmb3J3YXJkaW5nIGl0IHRvIHRoZQpuZXh0IGVsZW1lbnQgaW4gdGhlIGNo YWluLgoKUmVnYXJkcywKCkJvcmlzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=