From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm/simple-kms: Standardize arguments for callbacks Date: Wed, 23 Oct 2019 10:53:19 +0200 Message-ID: <20191023085319.GS11828@phenom.ffwll.local> References: <20191022155536.27939-1-daniel.vetter@ffwll.ch> <56867554-5169-e249-8e55-043d07be3e99@suse.de> <64a4e824-f730-2ac4-0b02-4ead2bce4b69@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr1-x443.google.com (mail-wr1-x443.google.com [IPv6:2a00:1450:4864:20::443]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1AECD6E9F0 for ; Wed, 23 Oct 2019 08:53:24 +0000 (UTC) Received: by mail-wr1-x443.google.com with SMTP id o28so21109072wro.7 for ; Wed, 23 Oct 2019 01:53:24 -0700 (PDT) Content-Disposition: inline In-Reply-To: <64a4e824-f730-2ac4-0b02-4ead2bce4b69@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thomas Zimmermann Cc: Daniel Vetter , DRI Development , "open list:VIRTIO CORE, NET..." , Gerd Hoffmann , Daniel Vetter , Emil Velikov List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBPY3QgMjMsIDIwMTkgYXQgMDg6NDc6NTdBTSArMDIwMCwgVGhvbWFzIFppbW1lcm1h bm4gd3JvdGU6Cj4gSGkKPiAKPiBBbSAyMi4xMC4xOSB1bSAyMTowMyBzY2hyaWViIERhbmllbCBW ZXR0ZXI6Cj4gPiBPbiBUdWUsIE9jdCAyMiwgMjAxOSBhdCA3OjE2IFBNIFRob21hcyBaaW1tZXJt YW5uIDx0emltbWVybWFubkBzdXNlLmRlPiB3cm90ZToKPiA+Pgo+ID4+IEhpLAo+ID4+Cj4gPj4g dGhlcmUgYXJlIHR3byB0eXBlcyBvZiBjYWxsYmFja3MgaW4gc3RydWN0Cj4gPj4gZHJtX3NpbXBs ZV9kaXNwbGF5X3BpcGVfZnVuY3M6IGZ1bmN0aW9ucyB0aGF0IGFyZSBnZW51aW5lIHRvIHNpbXBs ZSBLTVMsCj4gPj4gYW5kIGZ1bmN0aW9ucyB0aGF0IGFyZSBtZXJlbHkgZm9yd2FyZGVkIGZyb20g YW5vdGhlciBzdHJ1Y3R1cmUgKGNydGMsCj4gPj4gcGxhbmUsIGV0YykuCj4gPj4KPiA+PiBJbiB0 aGUgZm9ybWVyIGNhdGVnb3J5IGFyZSBlbmFibGUoKSwgZGlzYWJsZSgpLCBjaGVjaygpLCBhbmQg dXBkYXRlKCkuCj4gPj4gVGhvc2Ugc2hvdWxkIHByb2JhYmx5IHJlY2VpdmUgYSBzaW1wbGUgZGlz cGxheSBwaXBlIGFzIHRoZWlyIGZpcnN0IGFyZ3VtZW50Lgo+ID4gCj4gPiBtb2RlX3ZhbGlkIF92 ZXJ5XyBtdWNoIGJlbG9uZ3MgdG8gdGhpcyBjYXRlZ29yeSB0b28sIHNpbmNlIHRoZXJlJ3MKPiA+ IG1vZGVfdmFsaWQgaG9va3MgYWxzbyBvbiBvdGhlciBvYmplY3RzLiBCdXQgc2ltcGxlIHBpcGUg aGVscGVyCj4gPiBjb25kZW5zZXMgdGhhdCBkb3duIHRvIG9uZSBtb2RlX3ZhbGlkIGhvb2sgKHdl IGNvdWxkIGFsc28gcHV0IHRoZQo+ID4gbW9kZV92YWxpZCBvbnRvIGVuY29kZXIsIHdvdWxkbid0 IGNoYW5nZSBhbnl0aGluZykuCj4gPiAKPiA+PiBJbiB0aGUgbGF0dGVyIGNhdGVnb3J5IGFyZSBt b2RlX3ZhbGlkKCksIHByZXBhcmVfZmIoKSwgY2xlYW51cF9mYigpLAo+ID4+IGVuYWJsZV92Ymxh bmsoKSwgYW5kIGRpc2FibGVfdmJsYW5rKCkuIElNSE8gdGhvc2UgZnVuY3Rpb25zIHNob3VsZAo+ ID4+IHJlY2VpdmUgYSBwb2ludGVyIHRvIHRoZSBvcmlnaW5hbCBzdHJ1Y3R1cmUgYXMgdGhlaXIg Zmlyc3QgYXJndW1lbnQuCj4gPj4gVGhpcyB0eXBlIHByb3ZpZGVzIHRoZSBjb250ZXh0IGluIHdo aWNoIHRoZSBvcGVyYXRpb25zIG1ha2Ugc2Vuc2UuIChFdmVuCj4gPj4gdGhlaXIgZG9jdW1lbnRh dGlvbiBhbHJlYWR5IHJlZmVycyB0byB0aGUgb3JpZ2luYWwgc3RydWN0dXJlLikKPiA+IAo+ID4g Tm93IG9uIHRob3NlIHlvdSBjYW4gbWF5YmUgbWFrZSBhIGNhc2UgdGhhdCB0aGV5IG9ubHkgZXhp c3QgaW4gb25lCj4gPiBvYmplY3QuIEJ1dCB0aGUgZW50aXJlIHBvaW50IG9mIHNpbXBsZSBoZWxw ZXJzIHdhcyB0byBjb25kZW5zZSB0aGUgem9vCj4gPiBvZiBkcm0gdHlwZXMgZG93biB0byBvbmUu IE9ubHkgcmVhc29uIHlvdSBkb24ndCBhbHNvIGdldCBhCj4gPiBkcm1fc2ltcGxlX2Rpc3BsYXlf cGlwZV9zdGF0ZSBpcyB0aGF0IHRoaXMgb25lIHdvdWxkIGJlIGEgYml0IG1vcmUKPiA+IHdvcmsg dG8gbWFrZSB3b3JrIGNvcnJlY3RseS4gSWYgd2UgZnVsbCBvbiBsZWFrIGFsbCB0aGUgdW5kZXJs eWluZwo+ID4gb2JqZWN0cywgdGhlbiB5b3UgbWlnaHQgYXMgd2VsbCBzZXQgdGhlbSB1cCB5b3Vy c2VsZiBhbmQgc2V0IHVwIGFsbAo+ID4gdGhlIGhvb2tzLCBpdCdzIGp1c3QgYSBmZXcgbW9yZSBs aW5lcyBvZiBjb2RlLgo+ID4gCj4gPiBJbW8gZm9yIHNpbXBsZSBwaXBlIHdlIHNob3VsZCBnbyBt b3JlIGludG8gdGhhdCBkaXJlY3Rpb24sIG5vdCBsZXNzLgo+ID4gCj4gPj4gSSBhZG1pdCB0aGF0 IG5vdCBhbGwgYXJlIGFzIHNoYXJlYWJsZSBhcyBwcmVwYXJlX2ZiKCkgYW5kIGVuYWJsZV9mYigp Lgo+ID4+IEJ1dCB3aGF0IGVsc2UgdGhhbiBib2lsZXItcGxhdGUgd3JhcHBlcnMgZG8gd2UgZ2V0 IGZyb20gc2ltcGxlIGRpc3BsYXkKPiA+PiBwaXBlIGhlcmU/Cj4gPiAKPiA+IEJvaWxlciBwbGF0 ZSB3cmFwcGVycyBpcyBwcmV0dHkgbXVjaCB0aGUgZW50aXJlIHBvaW50IG9mIHNpbXBsZSBwaXBl Cj4gPiBoZWxwZXJzLiBBbnl0aW1lIHlvdSdyZSBpbnRlcmVzdGVkIGluIHRoZSB0aGluZ3MgaXQg YWJzdHJhY3RzIGF3YXkKPiA+IChjcnRjLCBwbGFuZSwgZW5jb2RlcikgeW91IHByb2JhYmx5IHdh bnQgeW91ciBvd24gYXRvbWljCj4gPiBpbXBsZW1lbnRhdGlvbi4KPiAKPiBJIHdhcyBzcGVha2lu ZyBvZiBib2lsZXItcGxhdGUgY29kZSBpbiBkcml2ZXJzIGFuZCBvdGhlciBoZWxwZXJzIChlLmcu LAo+IGRybV9nZW1fZmJfc2ltcGxlX2Rpc3BsYXlfcGlwZV9wcmVwYXJlX2ZiKCkgKQo+IAo+IFRC SCBJIGRvbid0IHRoaW5rIGl0IGlzIHBvc3NpYmxlIHRvIGJ1aWxkIGFuZCB1c2Ugc2ltcGxlIHBp cGUgd2l0aG91dAo+IGV4cG9zaW5nIHRoZSB1bmRlcmx5aW5nIHByaW1pdGl2ZXMgKGNydGMsIHBs YW5lLCBjb25uZWN0b3IpLiBUaGlzIHdvdWxkCj4gcmVxdWlyZSBhIGNvbXBsZXRlbHkgc2VwYXJh dGUgc2V0IG9mIGF0b21pYyBoZWxwZXJzLiBJTUhPIHRoZSBjdXJyZW50Cj4gc2ltcGxlIHBpcGUg aXMgYSBtaWQtbGF5ZXIgYW5kIGNvbWVzIHdpdGggdHlwaWNhbCBtaWQtbGF5ZXIgcHJvYmxlbXMu CgpIZWxwZXJzIGNhbiBiZSBtaWRsYXllcnMsIGFzIGxvbmcgYXMgdGhlaXIgb3B0aW9uYWwuIEFu ZCBmb3Igc2ltcGxlIEkKYWdyZWUgaXQncyBub3QgYSBwZXJmZWN0IGlsbHVzaW9uLCBpdCdzIGEg dHJhZGVvZmYgYmV0d2VlbiBoYXZpbmcgYSBodWdlCmhlbHBlciBsaWJyYXJ5IHRoYXQgcmVtYXBz IGV2ZXJ5dGhpbmcgYW5kIHN0aWxsIGVuYWJsaW5nIHVzZWZ1bCBjb2RlIGFuZApjb21wbGV4aXR5 IHNhdmluZ3MgaW4gdGhlIHRpbnkgZHJpdmVycy4KCk1heWJlIGFub3RoZXIgcnVsZSBvZiB0aHVt YjogSWYgeW91ciBkcml2ZXIgaGFzIG1vcmUgdGhhbiBvbmUgc291cmNlIGZpbGUsCnNpbXBsZSBw aXBlIGlzIG1heWJlIG5vdCB3aGF0IHlvdSdyZSBsb29raW5nIGZvci4gRXhjZXB0aW9ucyBhcHBs eSBvZmMuCnNpbXBsZSBwaXBlIHdhcyBkZXNpZ25lZCBmb3IgZHJtL3RpbnksIGFuZCBpdCB1dHRl cmx5IGV4Y2VscyBhdCB0aGF0LiBCdXQKdGhhdCBkb2Vzbid0IG1ha2UgaXQgYSBnZW5lcmFsIHB1 cnBvc2UgdG9vbC4KCj4gQW55d2F5LCBnaXZlbiB5b3VyIHJhdGlvbmFsIGZvciB0aGUgY3VycmVu dCBkZXNpZ24sIEknbGwgdXBkYXRlIG15Cj4gcmVjZW50IHBhdGNoZXMgZm9yIHByZXBhcmVfZmIo KSB0byBzdXBwb3J0IHNpbXBsZSBwaXBlLgo+IAo+IEZvciB0aGlzIHBhdGNoCj4gCj4gICBBY2tl ZC1CeTogVGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGU+CgpUaGFua3MsIHdp bGwgYXBwbHkuCi1EYW5pZWwKCj4gCj4gQmVzdCByZWdhcmRzCj4gVGhvbWFzCj4gCj4gPiBjb252 ZXJzaW9uIGlzIGEgZ29vZCBmaXQsIGl0J3Mgbm90IG1lYW50IHRvIGJlIHVzZWZ1bCBmb3IgYWxs IHNtYWxsCj4gPiBkcml2ZXJzLiBPbmx5IGZvciB0aGUgX3JlYWxseV8gc2ltcGxlIG9uZXMuCj4g PiAKPiA+IE90aGVyd2lzZSBpZiB3ZSByZWFkZCBhbGwgdGhlIGJlbGxzIGFuZCB3aGlzdGxlcyB0 byBzaW1wbGUgcGlwZQo+ID4gaGVscGVycywgdGhlbiB3ZSBqdXN0IGVuZCBiYWNrIHdoZXJlIHdl IHN0YXJ0ZWQuIFRoYXQncyBhbHNvIHdoeSBJCj4gPiBwZXJzb25hbGx5IHRoaW5rIGV4cGxpY2l0 IHNpbXBsZSB3cmFwcGVycyB3b3VsZCBmaXQgYmV0dGVyLCBpbnN0ZWFkIG9mCj4gPiB3cmVzdGxp bmcgdGhlIHByZXBhcmUvY2xlYW51cF9mYiBmdW5jdGlvbnMgdG8gbWF0Y2ggZnVsbCBhdG9taWMK PiA+IGhlbHBlcnMuCj4gPiAtRGFuaWVsCj4gPiAKPiA+Pgo+ID4+IEJlc3QgcmVnYXJkcwo+ID4+ IFRob21hcwo+ID4+Cj4gPj4gQW0gMjIuMTAuMTkgdW0gMTc6NTUgc2NocmllYiBEYW5pZWwgVmV0 dGVyOgo+ID4+PiBQYXNzaW5nIHRoZSB3cm9uZyB0eXBlIGZlZWxzIGlja3ksIGV2ZXJ5d2hlcmUg ZWxzZSB3ZSB1c2UgdGhlIHBpcGUgYXMKPiA+Pj4gdGhlIGZpcnN0IHBhcmFtZXRlci4gU3BvdHRl ZCB3aGlsZSBkaXNjdXNzaW5nIHBhdGNoZXMgd2l0aCBUaG9tYXMKPiA+Pj4gWmltbWVybWFubi4K PiA+Pj4KPiA+Pj4gQ2M6IFRob21hcyBaaW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNlLmRlPgo+ ID4+PiBDYzogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+Cj4gPj4+IENjOiBH ZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KPiA+Pj4gQ2M6IEVyaWMgQW5ob2x0IDxl cmljQGFuaG9sdC5uZXQ+Cj4gPj4+IENjOiBFbWlsIFZlbGlrb3YgPGVtaWwudmVsaWtvdkBjb2xs YWJvcmEuY29tPgo+ID4+PiBDYzogdmlydHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlv bi5vcmcKPiA+Pj4gQ2M6IExpbnVzIFdhbGxlaWogPGxpbnVzLndhbGxlaWpAbGluYXJvLm9yZz4K PiA+Pj4gU2lnbmVkLW9mZi1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5j b20+Cj4gPj4+IC0tLQo+ID4+PiAgZHJpdmVycy9ncHUvZHJtL2NpcnJ1cy9jaXJydXMuYyAgICAg ICAgIHwgMiArLQo+ID4+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5j IHwgMiArLQo+ID4+PiAgZHJpdmVycy9ncHUvZHJtL3BsMTExL3BsMTExX2Rpc3BsYXkuYyAgIHwg NCArKy0tCj4gPj4+ICBpbmNsdWRlL2RybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuaCAgICAgfCAy ICstCj4gPj4+ICA0IGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMo LSkKPiA+Pj4KPiA+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9jaXJydXMvY2lycnVz LmMgYi9kcml2ZXJzL2dwdS9kcm0vY2lycnVzL2NpcnJ1cy5jCj4gPj4+IGluZGV4IDdkMDhkMDY3 ZTFhNC4uMjQ4YzlmNzY1YzQ1IDEwMDY0NAo+ID4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vY2ly cnVzL2NpcnJ1cy5jCj4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9jaXJydXMvY2lycnVzLmMK PiA+Pj4gQEAgLTM5MCw3ICszOTAsNyBAQCBzdGF0aWMgaW50IGNpcnJ1c19jb25uX2luaXQoc3Ry dWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cykKPiA+Pj4gIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwo+ID4+PiAg LyogY2lycnVzIChzaW1wbGUpIGRpc3BsYXkgcGlwZSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKi8KPiA+Pj4KPiA+Pj4gLXN0YXRpYyBlbnVtIGRybV9tb2RlX3N0 YXR1cyBjaXJydXNfcGlwZV9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+Pj4g K3N0YXRpYyBlbnVtIGRybV9tb2RlX3N0YXR1cyBjaXJydXNfcGlwZV9tb2RlX3ZhbGlkKHN0cnVj dCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSwKPiA+Pj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlKQo+ID4+PiAgewo+ID4+PiAgICAgICBpZiAoY2lycnVzX2NoZWNrX3NpemUobW9k ZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5LCBOVUxMKSA8IDApCj4gPj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmMKPiA+Pj4gaW5kZXggMDQ2MDU1NzE5MjQ1Li4xNWZi NTE2YWUyZDggMTAwNjQ0Cj4gPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc2ltcGxlX2tt c19oZWxwZXIuYwo+ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3NpbXBsZV9rbXNfaGVs cGVyLmMKPiA+Pj4gQEAgLTQzLDcgKzQzLDcgQEAgZHJtX3NpbXBsZV9rbXNfY3J0Y19tb2RlX3Zh bGlkKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+Pj4gICAgICAgICAgICAgICAvKiBBbnl0aGlu ZyBnb2VzICovCj4gPj4+ICAgICAgICAgICAgICAgcmV0dXJuIE1PREVfT0s7Cj4gPj4+Cj4gPj4+ IC0gICAgIHJldHVybiBwaXBlLT5mdW5jcy0+bW9kZV92YWxpZChjcnRjLCBtb2RlKTsKPiA+Pj4g KyAgICAgcmV0dXJuIHBpcGUtPmZ1bmNzLT5tb2RlX3ZhbGlkKHBpcGUsIG1vZGUpOwo+ID4+PiAg fQo+ID4+Pgo+ID4+PiAgc3RhdGljIGludCBkcm1fc2ltcGxlX2ttc19jcnRjX2NoZWNrKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKPiA+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wbDEx MS9wbDExMV9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vcGwxMTEvcGwxMTFfZGlzcGxheS5j Cj4gPj4+IGluZGV4IDAyNDc3MWE0MDgzZS4uNzAzZGRjODAzYzU1IDEwMDY0NAo+ID4+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vcGwxMTEvcGwxMTFfZGlzcGxheS5jCj4gPj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9wbDExMS9wbDExMV9kaXNwbGF5LmMKPiA+Pj4gQEAgLTQ4LDEwICs0OCwxMCBA QCBpcnFyZXR1cm5fdCBwbDExMV9pcnEoaW50IGlycSwgdm9pZCAqZGF0YSkKPiA+Pj4gIH0KPiA+ Pj4KPiA+Pj4gIHN0YXRpYyBlbnVtIGRybV9tb2RlX3N0YXR1cwo+ID4+PiAtcGwxMTFfbW9kZV92 YWxpZChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPj4+ICtwbDExMV9tb2RlX3ZhbGlkKHN0cnVj dCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSwKPiA+Pj4gICAgICAgICAgICAgICAgY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCj4gPj4+ICB7Cj4gPj4+IC0gICAgIHN0 cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBjcnRjLT5kZXY7Cj4gPj4+ICsgICAgIHN0cnVjdCBkcm1f ZGV2aWNlICpkcm0gPSBwaXBlLT5jcnRjLmRldjsKPiA+Pj4gICAgICAgc3RydWN0IHBsMTExX2Ry bV9kZXZfcHJpdmF0ZSAqcHJpdiA9IGRybS0+ZGV2X3ByaXZhdGU7Cj4gPj4+ICAgICAgIHUzMiBj cHAgPSBwcml2LT52YXJpYW50LT5mYl9icHAgLyA4Owo+ID4+PiAgICAgICB1NjQgYnc7Cj4gPj4+ IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuaCBiL2luY2x1 ZGUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5oCj4gPj4+IGluZGV4IDRkODljZDBhNjBkYi4u MTVhZmVlOWNmMDQ5IDEwMDY0NAo+ID4+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fc2ltcGxlX2tt c19oZWxwZXIuaAo+ID4+PiArKysgYi9pbmNsdWRlL2RybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIu aAo+ID4+PiBAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVf ZnVuY3Mgewo+ID4+PiAgICAgICAgKgo+ID4+PiAgICAgICAgKiBkcm1fbW9kZV9zdGF0dXMgRW51 bQo+ID4+PiAgICAgICAgKi8KPiA+Pj4gLSAgICAgZW51bSBkcm1fbW9kZV9zdGF0dXMgKCptb2Rl X3ZhbGlkKShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPj4+ICsgICAgIGVudW0gZHJtX21vZGVf c3RhdHVzICgqbW9kZV92YWxpZCkoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBl LAo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKTsKPiA+Pj4KPiA+Pj4gICAgICAgLyoqCj4gPj4+ Cj4gPj4KPiA+PiAtLQo+ID4+IFRob21hcyBaaW1tZXJtYW5uCj4gPj4gR3JhcGhpY3MgRHJpdmVy IERldmVsb3Blcgo+ID4+IFNVU0UgU29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSAo+ID4+ IE1heGZlbGRzdHIuIDUsIDkwNDA5IE7DvHJuYmVyZywgR2VybWFueQo+ID4+IChIUkIgMzY4MDks IEFHIE7DvHJuYmVyZykKPiA+PiBHZXNjaMOkZnRzZsO8aHJlcjogRmVsaXggSW1lbmTDtnJmZmVy Cj4gPj4KPiA+IAo+ID4gCj4gCj4gLS0gCj4gVGhvbWFzIFppbW1lcm1hbm4KPiBHcmFwaGljcyBE cml2ZXIgRGV2ZWxvcGVyCj4gU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJICj4g TWF4ZmVsZHN0ci4gNSwgOTA0MDkgTsO8cm5iZXJnLCBHZXJtYW55Cj4gKEhSQiAzNjgwOSwgQUcg TsO8cm5iZXJnKQo+IEdlc2Now6RmdHNmw7xocmVyOiBGZWxpeCBJbWVuZMO2cmZmZXIKPiAKCgoK Ci0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpo dHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWw=