From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [Intel-gfx] [RFC v4 21/25] drm/fb-helper: Add drm_fb_helper_fb_open/release() Date: Tue, 17 Apr 2018 10:14:24 +0200 Message-ID: <20180417081424.GX31310@phenom.ffwll.local> References: <20180414115318.14500-1-noralf@tronnes.org> <20180414115318.14500-22-noralf@tronnes.org> <20180416084644.GP31310@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr0-x243.google.com (mail-wr0-x243.google.com [IPv6:2a00:1450:400c:c0c::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 606866E408 for ; Tue, 17 Apr 2018 08:14:28 +0000 (UTC) Received: by mail-wr0-x243.google.com with SMTP id l49so32856805wrl.4 for ; Tue, 17 Apr 2018 01:14:28 -0700 (PDT) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBBcHIgMTYsIDIwMTggYXQgMDY6MTA6MDdQTSArMDIwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IAo+IERlbiAxNi4wNC4yMDE4IDEwLjQ2LCBza3JldiBEYW5pZWwgVmV0dGVyOgo+ ID4gT24gU2F0LCBBcHIgMTQsIDIwMTggYXQgMDE6NTM6MTRQTSArMDIwMCwgTm9yYWxmIFRyw7hu bmVzIHdyb3RlOgo+ID4gPiBUaGVzZSBoZWxwZXJzIGtlZXAgdHJhY2sgb2YgZmJkZXYgdXNlcnMg YW5kIGRybV9kcml2ZXIubGFzdF9jbG9zZSB3aWxsCj4gPiA+IG9ubHkgcmVzdG9yZSBmYmRldiB3 aGVuIGFjdHVhbGx5IGluIHVzZS4gQWRkaXRpb25hbGx5IHRoZSBkaXNwbGF5IGlzCj4gPiA+IHR1 cm5lZCBvZmYgd2hlbiB0aGUgbGFzdCB1c2VyIGlzIGNsb3NpbmcuIGZiY29uIGlzIGEgdXNlciBp biB0aGlzIGNvbnRleHQuCj4gPiA+IAo+ID4gPiBJZiBzdHJ1Y3QgZmJfb3BzIGlzIGRlZmluZWQg aW4gYSBsaWJyYXJ5LCBmYl9vcGVuKCkgdGFrZXMgYSByZWYgb24gdGhlCj4gPiA+IGxpYnJhcnkg KGZiX29wcy5vd25lcikgaW5zdGVhZCBvZiB0aGUgZHJpdmVyIG1vZHVsZS4gRml4IHRoYXQgYnkg ZW5zdXJpbmcKPiA+ID4gdGhhdCB0aGUgZHJpdmVyIG1vZHVsZSBpcyBwaW5uZWQuCj4gPiA+IAo+ ID4gPiBUaGUgZnVuY3Rpb25zIGFyZSBub3QgYWRkZWQgdG8gdGhlIERSTV9GQl9IRUxQRVJfREVG QVVMVF9PUFMoKSBtYWNybywKPiA+ID4gYmVjYXVzZSBzb21lIG9mIGl0cyB1c2VycyBkbyBzZXQg ZmJfb3Blbi9yZWxlYXNlIHRoZW1zZWx2ZXMuCj4gPiA+IAo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBO b3JhbGYgVHLDuG5uZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4KPiA+ID4gLS0tCj4gPiA+ICAgZHJp dmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyB8IDU0ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystCj4gPiA+ICAgaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oICAg ICB8IDI5ICsrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gICAyIGZpbGVzIGNoYW5nZWQsIDgy IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9o ZWxwZXIuYwo+ID4gPiBpbmRleCA5OGU1YmM5MmM5ZjIuLmIxMTI0YzA4YjFlZCAxMDA2NDQKPiA+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwo+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4gPiA+IEBAIC0xNzcsNyArMTc3LDcgQEAgaW50 IGRybV9mYl9oZWxwZXJfcmVzdG9yZV9mYmRldl9tb2RlX3VubG9ja2VkKHN0cnVjdCBkcm1fZmJf aGVscGVyICpmYl9oZWxwZXIpCj4gPiA+ICAgCWlmICghZHJtX2ZiZGV2X2VtdWxhdGlvbiB8fCAh ZmJfaGVscGVyKQo+ID4gPiAgIAkJcmV0dXJuIC1FTk9ERVY7Cj4gPiA+IC0JaWYgKFJFQURfT05D RShmYl9oZWxwZXItPmRlZmVycmVkX3NldHVwKSkKPiA+ID4gKwlpZiAoUkVBRF9PTkNFKGZiX2hl bHBlci0+ZGVmZXJyZWRfc2V0dXApIHx8ICFSRUFEX09OQ0UoZmJfaGVscGVyLT5vcGVuX2NvdW50 KSkKPiA+ID4gICAJCXJldHVybiAwOwo+ID4gPiAgIAltdXRleF9sb2NrKCZmYl9oZWxwZXItPmxv Y2spOwo+ID4gPiBAQCAtMzY4LDYgKzM2OCw3IEBAIHZvaWQgZHJtX2ZiX2hlbHBlcl9wcmVwYXJl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCj4g PiA+ICAgCUlOSVRfV09SSygmaGVscGVyLT5kaXJ0eV93b3JrLCBkcm1fZmJfaGVscGVyX2RpcnR5 X3dvcmspOwo+ID4gPiAgIAloZWxwZXItPmRpcnR5X2NsaXAueDEgPSBoZWxwZXItPmRpcnR5X2Ns aXAueTEgPSB+MDsKPiA+ID4gICAJbXV0ZXhfaW5pdCgmaGVscGVyLT5sb2NrKTsKPiA+ID4gKwlo ZWxwZXItPm9wZW5fY291bnQgPSAxOwo+ID4gPiAgIAloZWxwZXItPmZ1bmNzID0gZnVuY3M7Cj4g PiA+ICAgCWhlbHBlci0+ZGV2ID0gZGV2Owo+ID4gPiAgIH0KPiA+ID4gQEAgLTYyMCw2ICs2MjEs NTMgQEAgaW50IGRybV9mYl9oZWxwZXJfZGVmaW9faW5pdChzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAq ZmJfaGVscGVyKQo+ID4gPiAgIH0KPiA+ID4gICBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJf ZGVmaW9faW5pdCk7Cj4gPiA+ICsvKioKPiA+ID4gKyAqIGRybV9mYl9oZWxwZXJfZmJfb3BlbiAt IGltcGxlbWVudGF0aW9uIGZvciAmZmJfb3BzLmZiX29wZW4KPiA+ID4gKyAqIEBpbmZvOiBmYmRl diByZWdpc3RlcmVkIGJ5IHRoZSBoZWxwZXIKPiA+ID4gKyAqIEB1c2VyOiAxPXVzZXJzcGFjZSwg MD1mYmNvbgo+ID4gPiArICoKPiA+ID4gKyAqIEluY3JlYXNlIGZiZGV2IHVzZSBjb3VudC4KPiA+ ID4gKyAqIElmICZmYl9vcHMgaXMgd3JhcHBlZCBpbiBhIGxpYnJhcnksIHBpbiB0aGUgZHJpdmVy IG1vZHVsZS4KPiA+ID4gKyAqLwo+ID4gPiAraW50IGRybV9mYl9oZWxwZXJfZmJfb3BlbihzdHJ1 Y3QgZmJfaW5mbyAqaW5mbywgaW50IHVzZXIpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRybV9m Yl9oZWxwZXIgKmZiX2hlbHBlciA9IGluZm8tPnBhcjsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gZmJfaGVscGVyLT5kZXY7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoaW5mby0+ZmJvcHMt Pm93bmVyICE9IGRldi0+ZHJpdmVyLT5mb3BzLT5vd25lcikgewo+ID4gPiArCQlpZiAoIXRyeV9t b2R1bGVfZ2V0KGRldi0+ZHJpdmVyLT5mb3BzLT5vd25lcikpCj4gPiA+ICsJCQlyZXR1cm4gLUVO T0RFVjsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwlmYl9oZWxwZXItPm9wZW5fY291bnQrKzsK PiA+ID4gKwo+ID4gPiArCXJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArRVhQT1JUX1NZTUJPTChk cm1fZmJfaGVscGVyX2ZiX29wZW4pOwo+ID4gPiArCj4gPiA+ICsvKioKPiA+ID4gKyAqIGRybV9m Yl9oZWxwZXJfZmJfcmVsZWFzZSAtIGltcGxlbWVudGF0aW9uIGZvciAmZmJfb3BzLmZiX3JlbGVh c2UKPiA+ID4gKyAqIEBpbmZvOiBmYmRldiByZWdpc3RlcmVkIGJ5IHRoZSBoZWxwZXIKPiA+ID4g KyAqIEB1c2VyOiAxPXVzZXJzcGFjZSwgMD1mYmNvbgo+ID4gPiArICoKPiA+ID4gKyAqIERlY3Jl YXNlIGZiZGV2IHVzZSBjb3VudCBhbmQgdHVybiBvZmYgaWYgdGhlcmUgYXJlIG5vIHVzZXJzIGxl ZnQuCj4gPiA+ICsgKiBJZiAmZmJfb3BzIGlzIHdyYXBwZWQgaW4gYSBsaWJyYXJ5LCB1bnBpbiB0 aGUgZHJpdmVyIG1vZHVsZS4KPiA+ID4gKyAqLwo+ID4gPiAraW50IGRybV9mYl9oZWxwZXJfZmJf cmVsZWFzZShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHVzZXIpCj4gPiA+ICt7Cj4gPiA+ICsJ c3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciA9IGluZm8tPnBhcjsKPiA+ID4gKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gZmJfaGVscGVyLT5kZXY7Cj4gPiA+ICsKPiA+ID4gKwlpZiAo ISgtLWZiX2hlbHBlci0+b3Blbl9jb3VudCkpCj4gPiA+ICsJCWRybV9mYl9oZWxwZXJfZHBtcyhp bmZvLCBEUk1fTU9ERV9EUE1TX09GRik7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoaW5mby0+ZmJvcHMt Pm93bmVyICE9IGRldi0+ZHJpdmVyLT5mb3BzLT5vd25lcikKPiA+ID4gKwkJbW9kdWxlX3B1dChk ZXYtPmRyaXZlci0+Zm9wcy0+b3duZXIpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ ICt9Cj4gPiA+ICtFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfZmJfcmVsZWFzZSk7Cj4gPiA+ ICsKPiA+ID4gICAvKioKPiA+ID4gICAgKiBkcm1fZmJfaGVscGVyX3N5c19yZWFkIC0gd3JhcHBl ciBhcm91bmQgZmJfc3lzX3JlYWQKPiA+ID4gICAgKiBAaW5mbzogZmJfaW5mbyBzdHJ1Y3QgcG9p bnRlcgo+ID4gPiBAQCAtMTQzNiw2ICsxNDg0LDEwIEBAIHN0YXRpYyBpbnQgZHJtX2ZiX2hlbHBl cl9zaW5nbGVfZmJfcHJvYmUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPiA+ID4g ICAJaWYgKHJldCA8IDApCj4gPiA+ICAgCQlyZXR1cm4gcmV0Owo+ID4gPiArCS8qIEJsb2NrIHJl c3RvcmUgd2l0aG91dCB1c2VycyBpZiB3ZSBkbyB0cmFjayBpdCAqLwo+ID4gPiArCWlmIChmYl9o ZWxwZXItPmZiZGV2LT5mYm9wcy0+ZmJfb3BlbiA9PSBkcm1fZmJfaGVscGVyX2ZiX29wZW4pCj4g PiA+ICsJCWZiX2hlbHBlci0+b3Blbl9jb3VudCA9IDA7Cj4gPiBTaW5jZSB3ZSBremNhbGxvYywg aXNuJ3QgdGhpcyBlbnRpcmVseSByZWR1bmRhbnQ/IExvb2tzIGNvbmZ1c2luZyB0byBtZSBhdAo+ ID4gbGVhc3QuCj4gCj4gSSBoYXZlIHRvIGtlZXAgdGhlIGV4aXN0aW5nIHJlc3RvcmUgYmVoYXZp b3VyIGZvciB0aG9zZSB0aGF0IGRvbid0IHVzZQo+IGRybV9mYl9oZWxwZXJfZmJfb3BlbigpLiBJ IGRvIHRoaXMgYnkgc2V0dGluZyBmYl9oZWxwZXItPm9wZW5fY291bnQgPSAxCj4gaW4gZHJtX2Zi X2hlbHBlcl9wcmVwYXJlKCkuIEkgaGF2ZSB0cmllZCB0byBnaXZlIGEgZGVzY3JpYnRpb24gaW4g dGhlCj4gQG9wZW5fY291bnQgZG9jcy4KCkFoIEkgbWlzc2VkIHRoYXQuIEkgdGhpbmsgaGF2aW5n IHRoZSBmYm9wcy0+ZmJfb3AgPT0gZHJtX2ZiX2hlbHBlcl9mYl9vcGVuCmNoZWNrIGluIHRoZSBy ZXN0b3JlIGZ1bmN0aW9uIGl0c2VsZiwgcGx1cyBhIGJpZyBjb21tZW50IGV4cGxhaW5pbmcgd2hh dAp5b3UncmUgZG9pbmcsIHdvdWxkIGJlIGNsZWFyZXIuIFNvIGluc3RlYWQgb2YgYWx3YXlzIGNo ZWNraW5nIHRoZQpvcGVuX2NvdW50LCBvbmx5IGNoZWNrIGl0IHdoZW4gdGhpcyBoZWxwZXIgaXMg aW4gdXNlLgoKPiBPZmMgSSBjb3VsZCBoYXZlIGNoYW5nZWQgYWxsIGRyaXZlcnMgdG8gdXNlIGRy bV9mYl9oZWxwZXJfZmJfb3BlbigpLCBidXQKPiBJIHRoaW5rIHRoYXQgdGltZSBpcyBiZXR0ZXIg c3BlbnQgbW92aW5nIGRyaXZlcnMgb3ZlciB0byBnZW5lcmljIGZiZGV2Cj4gaW5zdGVhZC4KClll YWggRklYTUUgKHBsdXMgbWF5YmUgdG9kby5yc3QgZW50cnksIHRoaXMgaXMgcGVyZmVjdCBzdGFy dGluZyB0YXNrCmZvZGRlcikgaXMgdG90YWxseSBnb29kIGVub3VnaC4KLURhbmllbAoKPiAKPiBO b3JhbGYuCj4gCj4gPiBPdGhlcndpc2UgbG9va3MgYWxsIHJlYXNvbmFibGUuCj4gPiAtRGFuaWVs Cj4gPiAKPiA+IAo+ID4gPiArCj4gPiA+ICAgCXN0cmNweShmYl9oZWxwZXItPmZiLT5jb21tLCAi W2ZiY29uXSIpOwo+ID4gPiAgIAlyZXR1cm4gMDsKPiA+ID4gICB9Cj4gPiA+IGRpZmYgLS1naXQg YS9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVy LmgKPiA+ID4gaW5kZXggNWY2NmYyNTNhOTdiLi4zMzA5ODM5NzVkNWUgMTAwNjQ0Cj4gPiA+IC0t LSBhL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAo+ID4gPiArKysgYi9pbmNsdWRlL2RybS9k cm1fZmJfaGVscGVyLmgKPiA+ID4gQEAgLTE4NCw2ICsxODQsMjIgQEAgc3RydWN0IGRybV9mYl9o ZWxwZXIgewo+ID4gPiAgIAkgKiBTZWUgYWxzbzogQGRlZmVycmVkX3NldHVwCj4gPiA+ICAgCSAq Lwo+ID4gPiAgIAlpbnQgcHJlZmVycmVkX2JwcDsKPiA+ID4gKwo+ID4gPiArCS8qKgo+ID4gPiAr CSAqIEBvcGVuX2NvdW50Ogo+ID4gPiArCSAqCj4gPiA+ICsJICogS2VlcHMgdHJhY2sgb2YgZmJk ZXYgdXNlIHRvIGtub3cgd2hlbiB0byBub3QgcmVzdG9yZSBmYmRldiBhbmQgdG8KPiA+ID4gKwkg KiBkaXNhYmxlIHRoZSBwaXBlbGluZSB3aGVuIHRoZSBsYXN0IHVzZXIgaXMgZ29uZS4KPiA+ID4g KwkgKgo+ID4gPiArCSAqIERyaXZlcnMgdGhhdCB1c2UgZHJtX2ZiX2hlbHBlcl9mYl9vcGVuKCkg YXMgdGhlaXIgXC5mYl9vcGVuCj4gPiA+ICsJICogY2FsbGJhY2sgd2lsbCBnZXQgYW4gaW5pdGlh bCB2YWx1ZSBvZiAwIGFuZCBnZXQgcmVzdG9yZSBiYXNlZCBvbgo+ID4gPiArCSAqIGFjdHVhbCB1 c2UuIE90aGVycyB3aWxsIGdldCBhbiBpbml0aWFsIHZhbHVlIG9mIDEgd2hpY2ggbWVhbnMgdGhh dAo+ID4gPiArCSAqIGZiZGV2IHdpbGwgYWx3YXlzIGJlIHJlc3RvcmVkLiBEcml2ZXJzIHRoYXQg Y2FsbAo+ID4gPiArCSAqIGRybV9mYl9oZWxwZXJfZmJfb3BlbigpIGluIHRoZWlyIFwuZmJfb3Bl biwgdGh1cyBuZWVkcyB0byBzZXQgdGhlCj4gPiA+ICsJICogaW5pdGlhbCB2YWx1ZSB0byAwIHRo ZW1zZWx2ZXMgaW4gdGhlaXIgJmRybV9mYl9oZWxwZXJfZnVuY3MtPmZiX3Byb2JlCj4gPiA+ICsJ ICogY2FsbGJhY2suCj4gPiA+ICsJICovCj4gPiA+ICsJdW5zaWduZWQgaW50IG9wZW5fY291bnQ7 Cj4gPiA+ICAgfTsKPiA+ID4gICAvKioKPiA+ID4gQEAgLTIzMCw2ICsyNDYsOSBAQCB2b2lkIGRy bV9mYl9oZWxwZXJfZGVmZXJyZWRfaW8oc3RydWN0IGZiX2luZm8gKmluZm8sCj4gPiA+ICAgCQkJ ICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKnBhZ2VsaXN0KTsKPiA+ID4gICBpbnQgZHJtX2ZiX2hl bHBlcl9kZWZpb19pbml0KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpOwo+ID4gPiAr aW50IGRybV9mYl9oZWxwZXJfZmJfb3BlbihzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHVzZXIp Owo+ID4gPiAraW50IGRybV9mYl9oZWxwZXJfZmJfcmVsZWFzZShzdHJ1Y3QgZmJfaW5mbyAqaW5m bywgaW50IHVzZXIpOwo+ID4gPiArCj4gPiA+ICAgc3NpemVfdCBkcm1fZmJfaGVscGVyX3N5c19y ZWFkKHN0cnVjdCBmYl9pbmZvICppbmZvLCBjaGFyIF9fdXNlciAqYnVmLAo+ID4gPiAgIAkJCSAg ICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcyk7Cj4gPiA+ICAgc3NpemVfdCBkcm1fZmJf aGVscGVyX3N5c193cml0ZShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3QgY2hhciBfX3VzZXIg KmJ1ZiwKPiA+ID4gQEAgLTM3Niw2ICszOTUsMTYgQEAgc3RhdGljIGlubGluZSBpbnQgZHJtX2Zi X2hlbHBlcl9kZWZpb19pbml0KHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCj4gPiA+ ICAgCXJldHVybiAtRU5PREVWOwo+ID4gPiAgIH0KPiA+ID4gK3N0YXRpYyBpbmxpbmUgaW50IGRy bV9mYl9oZWxwZXJfZmJfb3BlbihzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgaW50IHVzZXIpCj4gPiA+ ICt7Cj4gPiA+ICsJcmV0dXJuIC1FTk9ERVY7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRp YyBpbmxpbmUgaW50IGRybV9mYl9oZWxwZXJfZmJfcmVsZWFzZShzdHJ1Y3QgZmJfaW5mbyAqaW5m bywgaW50IHVzZXIpCj4gPiA+ICt7Cj4gPiA+ICsJcmV0dXJuIC1FTk9ERVY7Cj4gPiA+ICt9Cj4g PiA+ICsKPiA+ID4gICBzdGF0aWMgaW5saW5lIHNzaXplX3QgZHJtX2ZiX2hlbHBlcl9zeXNfcmVh ZChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywKPiA+ID4gICAJCQkJCSAgICAgY2hhciBfX3VzZXIgKmJ1 Ziwgc2l6ZV90IGNvdW50LAo+ID4gPiAgIAkJCQkJICAgICBsb2ZmX3QgKnBwb3MpCj4gPiA+IC0t IAo+ID4gPiAyLjE1LjEKPiA+ID4gCj4gPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4gPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+ID4gSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+IAoKLS0gCkRhbmllbCBWZXR0ZXIK U29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNo Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=