From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 2/2] drm/i915: initialize backlight max from VBT Date: Fri, 04 Sep 2015 15:48:27 +0300 Message-ID: <87h9naz6xw.fsf@intel.com> References: <89ea86274bf4c647aae0a2cb3770dfc8e10d578d.1440575833.git.jani.nikula@intel.com> <55DE2BBC.6040104@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 69AB46E11D for ; Fri, 4 Sep 2015 05:45:20 -0700 (PDT) In-Reply-To: <55DE2BBC.6040104@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Clint Taylor , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyNyBBdWcgMjAxNSwgQ2xpbnQgVGF5bG9yIDxjbGludG9uLmEudGF5bG9yQGludGVs LmNvbT4gd3JvdGU6Cj4gT24gMDgvMjYvMjAxNSAxMjo1OCBBTSwgSmFuaSBOaWt1bGEgd3JvdGU6 Cj4+IE5vcm1hbGx5IHdlIGRldGVybWluZSB0aGUgYmFja2xpZ2h0IFBXTSBtb2R1bGF0aW9uIGZy ZXF1ZW5jeSAod2hpY2ggd2UKPj4gYWxzbyB1c2UgYXMgYmFja2xpZ2h0IG1heCB2YWx1ZSkgZnJv bSB0aGUgYmFja2xpZ2h0IHJlZ2lzdGVycyBhdCBtb2R1bGUKPj4gbG9hZCB0aW1lLCBleHBlY3Rp bmcgdGhlIHJlZ2lzdGVycyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgYnkgdGhlIEJJT1MuIElmCj4+ IHRoaXMgaXMgbm90IHRoZSBjYXNlLCB3ZSBmYWlsLgo+Pgo+PiBUaGUgVkJUIGNvbnRhaW5zIHRo ZSBiYWNrbGlnaHQgbW9kdWxhdGlvbiBmcmVxdWVuY3kgaW4gSHouIEFkZCBwbGF0Zm9ybQo+PiBz cGVjaWZpYyBmdW5jdGlvbnMgdG8gY29udmVydCB0aGUgZnJlcXVlbmN5IGluIEh6IHRvIGJhY2ts aWdodCBQV00KPj4gbW9kdWxhdGlvbiBmcmVxdWVuY3ksIGFuZCB1c2UgdGhlbSB0byBpbml0aWFs aXplIHRoZSBiYWNrbGlnaHQgd2hlbiB0aGUKPj4gcmVnaXN0ZXJzIGFyZSBub3QgaW5pdGlhbGl6 ZWQgYnkgdGhlIEJJT1MuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEphbmkgTmlrdWxhIDxqYW5pLm5p a3VsYUBpbnRlbC5jb20+Cj4+IC0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggICAgfCAgIDIgKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgfCAg IDEgKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgfCAxNjAgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+PiAgIDMgZmlsZXMgY2hhbmdlZCwgMTU2 IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+PiBpbmRleCA1ZjZmZDBiNzFiYzkuLmU5ZGVmMzE2MThiNSAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4+IEBAIC02NjUsNiArNjY1LDggQEAgc3RydWN0IGRybV9pOTE1X2Rpc3Bs YXlfZnVuY3Mgewo+PiAgIAkJCSAgICAgIHVpbnQzMl90IGxldmVsKTsKPj4gICAJdm9pZCAoKmRp c2FibGVfYmFja2xpZ2h0KShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwo+PiAg IAl2b2lkICgqZW5hYmxlX2JhY2tsaWdodCkoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yKTsKPj4gKwl1aW50MzJfdCAoKmJhY2tsaWdodF9oel90b19wd20pKHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvciwKPj4gKwkJCQkJdWludDMyX3QgaHopOwo+PiAgIH07Cj4+Cj4+ ICAgZW51bSBmb3JjZXdha2VfZG9tYWluX2lkIHsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+ IGluZGV4IDcxZjdiYTg4NmZiMS4uNWYwN2FmNDFhNjAwIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmgKPj4gQEAgLTYzMTYsNiArNjMxNiw3IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2Vs bHMgewo+PiAgICNkZWZpbmUgU09VVEhfQ0hJQ0tFTjIJCTB4YzIwMDQKPj4gICAjZGVmaW5lICBG RElfTVBIWV9JT1NGU0JfUkVTRVRfU1RBVFVTCSgxPDwxMykKPj4gICAjZGVmaW5lICBGRElfTVBI WV9JT1NGU0JfUkVTRVRfQ1RMCSgxPDwxMikKPj4gKyNkZWZpbmUgIFBXTV9HUkFOVUxBUklUWQkJ KDE8PDUpCS8qIExQVCAqLwo+Cj4gU2hvdWxkbid0IHdlIGJlIHVzaW5nIHRoZSBCTENfUFdNX0NU TCB2ZXJzaW9uIG9mIHRoZSBQV01fR1JBTlVMQVJJVFkgCj4gYml0IG9uIEhTVyBhbmQgbGF0ZXI/ CgpPbmx5IHdoZW4gZHJpdmluZyB0aGUgYmFja2xpZ2h0IG9uIHRoZSB1dGlsaXR5IHBpbi4KCj4K Pj4gICAjZGVmaW5lICBEUExTX0VEUF9QUFNfRklYX0RJUwkJKDE8PDApCj4+Cj4+ICAgI2RlZmlu ZSBfRkRJX1JYQV9DSElDS0VOICAgICAgICAgMHhjMjAwYwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BhbmVsLmMKPj4gaW5kZXggZTJhYjNmNmVkMDIyLi5lZGY1MjNmZjQ2MTAgMTAwNjQ0Cj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+PiBAQCAtMTIxMiwxMCArMTIxMiwxMjUgQEAgc3Rh dGljIHZvaWQgaW50ZWxfYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvcikKPj4gICAjZW5kaWYgLyogQ09ORklHX0JBQ0tMSUdIVF9DTEFT U19ERVZJQ0UgKi8KPj4KPj4gICAvKgo+PiAtICogTm90ZTogVGhlIHNldHVwIGhvb2tzIGNhbid0 IGFzc3VtZSBwaXBlIGlzIHNldCEKPj4gKyAqIEhTVy9CRFc6IFRoaXMgdmFsdWUgcmVwcmVzZW50 cyB0aGUgcGVyaW9kIG9mIHRoZSBQV00gc3RyZWFtIGluIGNsb2NrIHBlcmlvZHMKPj4gKyAqIG11 bHRpcGxpZWQgYnkgMTI4IChkZWZhdWx0IGluY3JlbWVudCkgb3IgMTYgKGFsdGVybmF0ZSBpbmNy ZW1lbnQsIHNlbGVjdGVkIGluCj4+ICsgKiBMUFQgU09VVEhfQ0hJQ0tFTjIgcmVnaXN0ZXIgYml0 IDUpLgo+PiAgICAqCj4+IC0gKiBYWFg6IFF1ZXJ5IG1vZGUgY2xvY2sgb3IgaGFyZHdhcmUgY2xv Y2sgYW5kIHByb2dyYW0gUFdNIG1vZHVsYXRpb24gZnJlcXVlbmN5Cj4+IC0gKiBhcHByb3ByaWF0 ZWx5IHdoZW4gaXQncyAwLiBVc2UgVkJUIGFuZC9vciBzYW5lIGRlZmF1bHRzLgo+PiArICogWFhY OiBUaGlzIG9ubHkgd29ya3Mgd2hlbiBkcml2aW5nIHRoZSBQQ0ggUFdNLiBXaGVuIGRyaXZpbmcg dGhlIENQVSBQV00gb24KPj4gKyAqIHRoZSB1dGlsaXR5IHBpbiwgdGhlIGdyYW51bGFyaXR5IG5l ZWRzIHRvIGJlIGRldGVybWluZWQgYnkgQkxDX1BXTV9DVEwgYml0Cj4+ICsgKiAyNy4KPj4gKyAq Lwo+PiArc3RhdGljIHUzMiBoc3dfaHpfdG9fcHdtKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvciwgdTMyIHB3bV9mcmVxX2h6KQo+PiArewo+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBjb25uZWN0b3ItPmJhc2UuZGV2Owo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+ICsJdTMyIG11bCwgY2xvY2s7Cj4+ICsKPj4g KwlpZiAoSTkxNV9SRUFEKFNPVVRIX0NISUNLRU4yKSAmIFBXTV9HUkFOVUxBUklUWSkKPj4gKwkJ bXVsID0gMTY7Cj4KPiBBY2NvcmRpbmcgdG8gdGhlIEhTVywgQkRXLCBhbmQgU0tMIEJTUEVDcyB0 aGUgaW5jcmVtZW50IGlzIDggYW5kIDEyOCAKPiBiYXNlZCBvbiB0aGUgUFdNIEdyYW51bGFyaXR5 IGJpdC4gVGhlIEJEVyBhbmQgU0tMIENocm9tZU9TIHJlZmVyZW5jZSAKPiBkZXNpZ25zIHVzZXMg dGhlIGRlZGljYXRlZCBQV00gcGluIGFuZCBub3QgdGhlIHV0aWxpdHkgcGluLiBTbyAKPiBCTENf UFdNX0NUUkwgYml0IDI3IHNob3VsZCBiZSB1c2VkIGZvciBQV01fR1JBTlVMQVJJVFkuIFdlIHBy b2JhYmx5IG5lZWQgCj4gbG9naWMgdG8gc3dpdGNoIGJldHdlZW4gUENIIGFuZCBDUFUgUFdNcy4K Ck5vLCBpdCdzIHRoZSBvdGhlciB3YXkgYXJvdW5kLiBCTENfUFdNX0NUTCBiaXQgMjcgaXMgdXNl ZCBmb3IKZ3JhbnVsYXJpdHkgY29udHJvbCB3aGVuIGRyaXZpbmcgdGhlIHV0aWxpdHkgcGluLiBZ ZXMsIGluIHRoZW9yeSB3ZQp3b3VsZCBuZWVkIGxvZ2ljIHRvIHN3aXRjaCBiZXR3ZWVuIFBDSC9D UFUgUFdNcywgYnV0IGluIHByYWN0aXNlIHdlIGRvCm5vdCBzdXBwb3J0IENQVSBQV00gYW55d2hl cmUsIGFuZCB0aGUgbGFzdCB0aW1lIEkgY2hlY2tlZCAocHJvYmFibHkgbGlrZQphIHllYXIgb3Ig dHdvIGFnbywgYWRtaXR0ZWRseSkgdGhlcmUgd2VyZSBubyBkZXNpZ25zIHVzaW5nIHRoZSBDUFUK UFdNLiBJJ3ZlIGtpbmQgb2YgZGVjaWRlZCB0byBsb29rIGF0IGl0IHdoZW4gd2UgZ2V0IHRoZSBm aXJzdCBidWcgd2hlcmUKYmFja2xpZ2h0IGRvZXNuJ3Qgd29yayBiZWNhdXNlIHRoZSBkZXNpZ24g dXNlcyB0aGUgdXRpbGl0eSBwaW4uCgo+Cj4+ICsJZWxzZQo+PiArCQltdWwgPSAxMjg7Cj4+ICsK Pj4gKwlpZiAoZGV2X3ByaXYtPnBjaF9pZCA9PSBJTlRFTF9QQ0hfTFBUX0RFVklDRV9JRF9UWVBF KQo+PiArCQljbG9jayA9IE1IeigxMzUpOyAvKiBMUFQ6SCAqLwo+PiArCWVsc2UKPj4gKwkJY2xv Y2sgPSBNSHooMjQpOyAvKiBMUFQ6TFAgKi8KPj4gKwo+PiArCXJldHVybiBjbG9jayAvIChwd21f ZnJlcV9oeiAqIG11bCk7Cj4+ICt9Cj4+ICsKPj4gKy8qCj4+ICsgKiBJTEsvU05CL0lWQjogVGhp cyB2YWx1ZSByZXByZXNlbnRzIHRoZSBwZXJpb2Qgb2YgdGhlIFBXTSBzdHJlYW0gaW4gUENICj4+ ICsgKiBkaXNwbGF5IHJhdyBjbG9ja3MgbXVsdGlwbGllZCBieSAxMjguCj4+ICsgKi8KPj4gK3N0 YXRpYyB1MzIgcGNoX2h6X3RvX3B3bShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Is IHUzMiBwd21fZnJlcV9oeikKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29u bmVjdG9yLT5iYXNlLmRldjsKPj4gKwlpbnQgY2xvY2sgPSBNSHooaW50ZWxfcGNoX3Jhd2Nsayhk ZXYpKTsKPj4gKwo+PiArCXJldHVybiBjbG9jayAvIChwd21fZnJlcV9oeiAqIDEyOCk7Cj4+ICt9 Cj4+ICsKPj4gKy8qCj4+ICsgKiBHZW4yOiBUaGlzIGZpZWxkIGRldGVybWluZXMgdGhlIG51bWJl ciBvZiB0aW1lIGJhc2UgZXZlbnRzIChkaXNwbGF5IGNvcmUKPj4gKyAqIGNsb2NrIGZyZXF1ZW5j eS8zMikgaW4gdG90YWwgZm9yIGEgY29tcGxldGUgY3ljbGUgb2YgbW9kdWxhdGVkIGJhY2tsaWdo dAo+PiArICogY29udHJvbC4KPj4gKyAqCj4+ICsgKiBHZW4zOiBBIHRpbWUgYmFzZSBldmVudCBl cXVhbHMgdGhlIGRpc3BsYXkgY29yZSBjbG9jayAoW0RldlBOVl0gSFJBVyBjbG9jaykKPj4gKyAq IGRpdmlkZWQgYnkgMzIuCj4+ICsgKi8KPj4gK3N0YXRpYyB1MzIgaTl4eF9oel90b19wd20oc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1MzIgcHdtX2ZyZXFfaHopCj4+ICt7Cj4+ ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7Cj4+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gKwlp bnQgY2xvY2s7Cj4+ICsKPj4gKwlpZiAoSVNfUElORVZJRVcoZGV2KSkKPj4gKwkJY2xvY2sgPSBp bnRlbF9ocmF3Y2xrKGRldik7Cj4+ICsJZWxzZQo+PiArCQljbG9jayA9IDEwMDAgKiBkZXZfcHJp di0+ZGlzcGxheS5nZXRfZGlzcGxheV9jbG9ja19zcGVlZChkZXYpOwo+PiArCj4+ICsJcmV0dXJu IGNsb2NrIC8gKHB3bV9mcmVxX2h6ICogMzIpOwo+PiArfQo+PiArCj4+ICsvKgo+PiArICogR2Vu NDogVGhpcyB2YWx1ZSByZXByZXNlbnRzIHRoZSBwZXJpb2Qgb2YgdGhlIFBXTSBzdHJlYW0gaW4g ZGlzcGxheSBjb3JlCj4+ICsgKiBjbG9ja3MgbXVsdGlwbGllZCBieSAxMjguCj4+ICsgKi8KPj4g K3N0YXRpYyB1MzIgaTk2NV9oel90b19wd20oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yLCB1MzIgcHdtX2ZyZXFfaHopCj4+ICt7Cj4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNvbm5lY3Rvci0+YmFzZS5kZXY7Cj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gKwlpbnQgY2xvY2sgPSAxMDAwICogZGV2X3ByaXYt PmRpc3BsYXkuZ2V0X2Rpc3BsYXlfY2xvY2tfc3BlZWQoZGV2KTsKPj4gKwo+PiArCXJldHVybiBj bG9jayAvIChwd21fZnJlcV9oeiAqIDEyOCk7Cj4+ICt9Cj4+ICsKPj4gKy8qCj4+ICsgKiBWTFY6 IFRoaXMgdmFsdWUgcmVwcmVzZW50cyB0aGUgcGVyaW9kIG9mIHRoZSBQV00gc3RyZWFtIGluIGRp c3BsYXkgY29yZQo+PiArICogY2xvY2tzIChbRGV2Q1RHXSAxMDBNSHogSFJBVyBjbG9ja3MpIG11 bHRpcGxpZWQgYnkgMTI4IG9yIDI1TUh6IFMwSVggY2xvY2tzCj4KPiBWTFYgYW5kIENIViB1c2Ug YSAyMDAgTWh6IEhSQVcgY2xvY2suIFNpbmNlIHBhdGNoIDEgaW4gdGhlIHNlcmllcyBtb3ZlZCAK PiBpbnRlbF9ocmF3Y2xrKCkgaW50byBpbnRlbF9kaXNwbGF5LmMgbGV0cyB1c2UgdGhlIHJldHVy bmVkIHZhbHVlIGluc3RlYWQgCj4gb2YgdGhlIGhhcmRjb2RlZCB2YWx1ZS4KPgo+PiArICogbXVs dGlwbGllZCBieSAxNi4KPj4gKyAqCj4+ICsgKiBYWFg6IFdoZXJlIGlzIHRoaXMgc2VsZWN0ZWQ/ Pz8KPgo+IFRoaXMgaXMgY3VycmVudGx5IHNlbGVjdGVkIGluIEJpdCAzMCBvZiBDQlIxX1ZMVi4g T2YgY291cnNlIGludGVsX3BtLmMgCj4gd3JpdGVzIHRoaXMgcmVnaXN0ZXIgYXMgMHgwIGR1cmlu ZyBpbml0IHNvIGl0IGRvZXNuJ3Qgc3VycHJpc2UgbWUgdGhhdCAKPiB0aGlzIHRlc3Qgd291bGQg YWxzbyBiZSAweDAuCj4KPj4gKyAqLwo+PiArc3RhdGljIHUzMiB2bHZfaHpfdG9fcHdtKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgdTMyIHB3bV9mcmVxX2h6KQo+PiArewo+PiAr CWlmICgxKQo+PiArCQlyZXR1cm4gTUh6KDI1KSAvIChwd21fZnJlcV9oeiAqIDE2KTsKPgo+IENI ViBhY3R1YWxseSB1c2VzIGEgMTkuMiBNSHogUzBJWCBjbG9jayBhbmQgc2luY2UgdGhlIE1Ieigp IG1hY3JvIAo+IGRvZXNuJ3QgYWNjZXB0IGZsb2F0cyB3ZSBuZWVkIHRvIHVzZSBLSHooKSBtYWNy by4KPgo+PiArCWVsc2UKPj4gKwkJcmV0dXJuIE1IeigxMDApIC8gKHB3bV9mcmVxX2h6ICogMTI4 KTsKPj4gK30KPgo+IEhlcmUgaXMgdGhlIG5ldyBmdW5jdGlvbiBmb3IgdGhlIDMgcHJldmlvdXMg aXNzdWVzCgpUaGFua3MsIHRoaXMgaXMgdGhlIGtpbmQgb2YgcmV2aWV3IEkgbGlrZS4gOikKCj4K PiAvKgo+ICAgKiBWTFY6IFRoaXMgdmFsdWUgcmVwcmVzZW50cyB0aGUgcGVyaW9kIG9mIHRoZSBQ V00gc3RyZWFtIGluIGRpc3BsYXkgY29yZQo+ICAgKiBjbG9ja3MgKFtEZXZDVEddIDIwME1IeiBI UkFXIGNsb2NrcykgbXVsdGlwbGllZCBieSAxMjggb3IgMjVNSHogUzBJWCAKPiBjbG9ja3MKPiAg ICogbXVsdGlwbGllZCBieSAxNi4gQ0hWIHVzZXMgYSAxOS4yTUh6IFMwSVggY2xvY2suCj4gICAq Cj4gICAqLwo+IHN0YXRpYyB1MzIgdmx2X2h6X3RvX3B3bShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IsIHUzMiBwd21fZnJlcV9oeikKPiB7Cj4gCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBjb25uZWN0b3ItPmJhc2UuZGV2Owo+IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IAlpbnQgY2xvY2s7Cj4KPiAJaWYgKChJOTE1X1JF QUQoQ0JSMV9WTFYpICYgQ0JSX1BXTV9DTE9DS19NVVhfU0VMRUNUKSA9PSAwKQo+IAkJaWYgKElT X0NIRVJSWVZJRVcoZGV2KSkgewo+IAkJCXJldHVybiBLSHooMTkyMDApIC8gKHB3bV9mcmVxX2h6 ICogMTYpOwo+IAkJfQo+IAkJZWxzZSB7Cj4gCQkJcmV0dXJuIE1IeigyNSkgLyAocHdtX2ZyZXFf aHogKiAxNik7Cj4gCQl9Cj4gCWVsc2Ugewo+IAkJY2xvY2sgPSBpbnRlbF9ocmF3Y2xrKGRldik7 Cj4gCQlyZXR1cm4gTUh6KGNsb2NrKSAvIChwd21fZnJlcV9oeiAqIDEyOCk7Cj4gCX0KPiB9Cj4K Pj4gKwo+PiArc3RhdGljIHUzMiBnZXRfYmFja2xpZ2h0X21heF92YnQoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKQo+PiArewo+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBj b25uZWN0b3ItPmJhc2UuZGV2Owo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+ICsJdTE2IHB3bV9mcmVxX2h6ID0gZGV2X3ByaXYtPnZi dC5iYWNrbGlnaHQucHdtX2ZyZXFfaHo7Cj4+ICsJdTMyIHB3bTsKPj4gKwo+PiArCWlmICghcHdt X2ZyZXFfaHopIHsKPj4gKwkJRFJNX0RFQlVHX0tNUygiYmFja2xpZ2h0IGZyZXF1ZW5jeSBub3Qg c3BlY2lmaWVkIGluIFZCVFxuIik7Cj4+ICsJCXJldHVybiAwOwo+PiArCX0KPj4gKwo+PiArCWlm ICghZGV2X3ByaXYtPmRpc3BsYXkuYmFja2xpZ2h0X2h6X3RvX3B3bSkgewo+PiArCQlEUk1fREVC VUdfS01TKCJiYWNrbGlnaHQgZnJlcXVlbmN5IHNldHRpbmcgZnJvbSBWQlQgY3VycmVudGx5IG5v dCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybVxuIik7Cj4+ICsJCXJldHVybiAwOwo+PiArCX0K Pj4gKwo+PiArCXB3bSA9IGRldl9wcml2LT5kaXNwbGF5LmJhY2tsaWdodF9oel90b19wd20oY29u bmVjdG9yLCBwd21fZnJlcV9oeik7Cj4+ICsJaWYgKCFwd20pIHsKPj4gKwkJRFJNX0RFQlVHX0tN UygiYmFja2xpZ2h0IGZyZXF1ZW5jeSBjb252ZXJzaW9uIGZhaWxlZFxuIik7Cj4+ICsJCXJldHVy biAwOwo+PiArCX0KPj4gKwo+PiArCURSTV9ERUJVR19LTVMoImJhY2tsaWdodCBmcmVxdWVuY3kg JXUgSHogZnJvbSBWQlRcbiIsIHB3bV9mcmVxX2h6KTsKPj4gKwo+PiArCXJldHVybiBwd207Cj4+ ICt9Cj4+ICsKPj4gKy8qCj4+ICsgKiBOb3RlOiBUaGUgc2V0dXAgaG9va3MgY2FuJ3QgYXNzdW1l IHBpcGUgaXMgc2V0IQo+PiAgICAqLwo+PiAgIHN0YXRpYyB1MzIgZ2V0X2JhY2tsaWdodF9taW5f dmJ0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPj4gICB7Cj4+IEBAIC0xMjU1 LDYgKzEzNzAsMTAgQEAgc3RhdGljIGludCBiZHdfc2V0dXBfYmFja2xpZ2h0KHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvciwgZW51bSBwaXBlIHVudXMKPj4KPj4gICAJcGNoX2N0bDIg PSBJOTE1X1JFQUQoQkxDX1BXTV9QQ0hfQ1RMMik7Cj4+ICAgCXBhbmVsLT5iYWNrbGlnaHQubWF4 ID0gcGNoX2N0bDIgPj4gMTY7Cj4+ICsKPj4gKwlpZiAoIXBhbmVsLT5iYWNrbGlnaHQubWF4KQo+ PiArCQlwYW5lbC0+YmFja2xpZ2h0Lm1heCA9IGdldF9iYWNrbGlnaHRfbWF4X3ZidChjb25uZWN0 b3IpOwo+PiArCj4+ICAgCWlmICghcGFuZWwtPmJhY2tsaWdodC5tYXgpCj4+ICAgCQlyZXR1cm4g LUVOT0RFVjsKPj4KPj4gQEAgLTEyODEsNiArMTQwMCwxMCBAQCBzdGF0aWMgaW50IHBjaF9zZXR1 cF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBlbnVtIHBpcGUg dW51cwo+Pgo+PiAgIAlwY2hfY3RsMiA9IEk5MTVfUkVBRChCTENfUFdNX1BDSF9DVEwyKTsKPj4g ICAJcGFuZWwtPmJhY2tsaWdodC5tYXggPSBwY2hfY3RsMiA+PiAxNjsKPj4gKwo+PiArCWlmICgh cGFuZWwtPmJhY2tsaWdodC5tYXgpCj4+ICsJCXBhbmVsLT5iYWNrbGlnaHQubWF4ID0gZ2V0X2Jh Y2tsaWdodF9tYXhfdmJ0KGNvbm5lY3Rvcik7Cj4+ICsKPj4gICAJaWYgKCFwYW5lbC0+YmFja2xp Z2h0Lm1heCkKPj4gICAJCXJldHVybiAtRU5PREVWOwo+Pgo+PiBAQCAtMTMxMiwxMiArMTQzNSwx OCBAQCBzdGF0aWMgaW50IGk5eHhfc2V0dXBfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmNvbm5lY3RvciwgZW51bSBwaXBlIHVudQo+PiAgIAkJcGFuZWwtPmJhY2tsaWdodC5hY3Rp dmVfbG93X3B3bSA9IGN0bCAmIEJMTV9QT0xBUklUWV9QTlY7Cj4+Cj4+ICAgCXBhbmVsLT5iYWNr bGlnaHQubWF4ID0gY3RsID4+IDE3Owo+PiAtCWlmIChwYW5lbC0+YmFja2xpZ2h0LmNvbWJpbmF0 aW9uX21vZGUpCj4+IC0JCXBhbmVsLT5iYWNrbGlnaHQubWF4ICo9IDB4ZmY7Cj4+ICsKPj4gKwlp ZiAoIXBhbmVsLT5iYWNrbGlnaHQubWF4KSB7Cj4+ICsJCXBhbmVsLT5iYWNrbGlnaHQubWF4ID0g Z2V0X2JhY2tsaWdodF9tYXhfdmJ0KGNvbm5lY3Rvcik7Cj4+ICsJCXBhbmVsLT5iYWNrbGlnaHQu bWF4ID4+PSAxOwo+PiArCX0KPj4KPj4gICAJaWYgKCFwYW5lbC0+YmFja2xpZ2h0Lm1heCkKPj4g ICAJCXJldHVybiAtRU5PREVWOwo+Pgo+PiArCWlmIChwYW5lbC0+YmFja2xpZ2h0LmNvbWJpbmF0 aW9uX21vZGUpCj4+ICsJCXBhbmVsLT5iYWNrbGlnaHQubWF4ICo9IDB4ZmY7Cj4+ICsKPj4gICAJ cGFuZWwtPmJhY2tsaWdodC5taW4gPSBnZXRfYmFja2xpZ2h0X21pbl92YnQoY29ubmVjdG9yKTsK Pj4KPj4gICAJdmFsID0gaTl4eF9nZXRfYmFja2xpZ2h0KGNvbm5lY3Rvcik7Cj4+IEBAIC0xMzQx LDEyICsxNDcwLDE2IEBAIHN0YXRpYyBpbnQgaTk2NV9zZXR1cF9iYWNrbGlnaHQoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBlbnVtIHBpcGUgdW51Cj4+Cj4+ICAgCWN0bCA9IEk5 MTVfUkVBRChCTENfUFdNX0NUTCk7Cj4+ICAgCXBhbmVsLT5iYWNrbGlnaHQubWF4ID0gY3RsID4+ IDE2Owo+PiAtCWlmIChwYW5lbC0+YmFja2xpZ2h0LmNvbWJpbmF0aW9uX21vZGUpCj4+IC0JCXBh bmVsLT5iYWNrbGlnaHQubWF4ICo9IDB4ZmY7Cj4+ICsKPj4gKwlpZiAoIXBhbmVsLT5iYWNrbGln aHQubWF4KQo+PiArCQlwYW5lbC0+YmFja2xpZ2h0Lm1heCA9IGdldF9iYWNrbGlnaHRfbWF4X3Zi dChjb25uZWN0b3IpOwo+Pgo+PiAgIAlpZiAoIXBhbmVsLT5iYWNrbGlnaHQubWF4KQo+PiAgIAkJ cmV0dXJuIC1FTk9ERVY7Cj4+Cj4+ICsJaWYgKHBhbmVsLT5iYWNrbGlnaHQuY29tYmluYXRpb25f bW9kZSkKPj4gKwkJcGFuZWwtPmJhY2tsaWdodC5tYXggKj0gMHhmZjsKPj4gKwo+PiAgIAlwYW5l bC0+YmFja2xpZ2h0Lm1pbiA9IGdldF9iYWNrbGlnaHRfbWluX3ZidChjb25uZWN0b3IpOwo+Pgo+ PiAgIAl2YWwgPSBpOXh4X2dldF9iYWNrbGlnaHQoY29ubmVjdG9yKTsKPj4gQEAgLTEzODYsNiAr MTUxOSwxMCBAQCBzdGF0aWMgaW50IHZsdl9zZXR1cF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yLCBlbnVtIHBpcGUgcGlwZQo+Pgo+PiAgIAljdGwgPSBJOTE1X1JF QUQoVkxWX0JMQ19QV01fQ1RMKHBpcGUpKTsKPj4gICAJcGFuZWwtPmJhY2tsaWdodC5tYXggPSBj dGwgPj4gMTY7Cj4+ICsKPgo+IHRoZSBmb3JfZWFjaF9waXBlKCkgYWJvdmUgdGhpcyBjb2RlIGhh cmRjb2RlcyB0aGUgdXBwZXIgMTYgYml0cyBvZiAKPiBWTFZfQkxDX1BXTV9DVEwgdG8gMHhGNDIg KDMwNy40IEh6KSBzbyB0aGlzIGNvZGUgbmV2ZXIgZXhlY3V0ZXMuIAo+IHJlbW92aW5nIHRoZSBm b3JfZWFjaF9waXBlIGJsb2NrIGFib3ZlIHRoZXNlIGFkZHMgcmVzb2x2ZXMgdGhpcyBpc3N1ZS4K CkFjaywgSSB3YXMgdGhpbmtpbmcgb2YgbWFraW5nIHRoaXMgYSBzZXBhcmF0ZSBwYXRjaC4KCj4K Pj4gKwlpZiAoIXBhbmVsLT5iYWNrbGlnaHQubWF4KQo+PiArCQlwYW5lbC0+YmFja2xpZ2h0Lm1h eCA9IGdldF9iYWNrbGlnaHRfbWF4X3ZidChjb25uZWN0b3IpOwo+PiArCj4+ICAgCWlmICghcGFu ZWwtPmJhY2tsaWdodC5tYXgpCj4+ICAgCQlyZXR1cm4gLUVOT0RFVjsKPj4KPj4gQEAgLTE0MTIs NiArMTU0OSwxMCBAQCBieHRfc2V0dXBfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvciwgZW51bSBwaXBlIHVudXNlZCkKPj4gICAJcGFuZWwtPmJhY2tsaWdodC5hY3Rp dmVfbG93X3B3bSA9IHB3bV9jdGwgJiBCWFRfQkxDX1BXTV9QT0xBUklUWTsKPj4KPj4gICAJcGFu ZWwtPmJhY2tsaWdodC5tYXggPSBJOTE1X1JFQUQoQlhUX0JMQ19QV01fRlJFUTEpOwo+PiArCj4+ ICsJaWYgKCFwYW5lbC0+YmFja2xpZ2h0Lm1heCkKPj4gKwkJcGFuZWwtPmJhY2tsaWdodC5tYXgg PSBnZXRfYmFja2xpZ2h0X21heF92YnQoY29ubmVjdG9yKTsKPj4gKwo+PiAgIAlpZiAoIXBhbmVs LT5iYWNrbGlnaHQubWF4KQo+PiAgIAkJcmV0dXJuIC1FTk9ERVY7Cj4+Cj4+IEBAIC0xNTI1LDEy ICsxNjY2LDE0IEBAIHZvaWQgaW50ZWxfcGFuZWxfaW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPj4gICAJCWRldl9wcml2LT5kaXNwbGF5LmRpc2FibGVfYmFja2xp Z2h0ID0gcGNoX2Rpc2FibGVfYmFja2xpZ2h0Owo+PiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuc2V0 X2JhY2tsaWdodCA9IGJkd19zZXRfYmFja2xpZ2h0Owo+PiAgIAkJZGV2X3ByaXYtPmRpc3BsYXku Z2V0X2JhY2tsaWdodCA9IGJkd19nZXRfYmFja2xpZ2h0Owo+PiArCQlkZXZfcHJpdi0+ZGlzcGxh eS5iYWNrbGlnaHRfaHpfdG9fcHdtID0gaHN3X2h6X3RvX3B3bTsKPgo+IFdlIG5lZWQgdG8gY3Jl YXRlIGEgbmV3IGZ1bmN0aW9uIGZvciBTS0wsIGFuZCBCWFQgdGhhdCBkb2Vzbid0IHVzZSB0aGUg Cj4gdXRpbGl0eSBwaW4uIGFuZCB5ZXMgSSB1bmRlcnN0YW5kIHRoYXQgdGhpcyBwYXRjaCB3YXMg c3VibWl0dGVkIDIwIAo+IG1vbnRocyBhZ28uIEknbSBpbnZlc3RpZ2F0aW5nIGNoYW5nZXMgZm9y IEJEVyBhbmQgU0tMIHN1cHBvcnQuCgpPa2F5LCBzbyBJJ3ZlIGdvbmUgdGhyb3VnaCB0aGUgYmFj a2xpZ2h0IHJlZ2lzdGVyIHNwZWNzIGEgZmV3IHRpbWVzIHRvbwptYW55LCBzbyBJIGRpZG4ndCBk byBpdCB0aGlzIHRpbWUuIEhvd2V2ZXIsIGZyb20gbWVtb3J5LCBoc3csIGJkdyBhbmQKc2tsIFBD SCBiYWNrbGlnaHQgd29ya3MganVzdCB0aGUgc2FtZS4gV2UgY291bGQgdXNlIHRoZSBjdXJyZW50 IGJkdy9za2wKY29kZSBmb3IgaHN3IGp1c3QgYXMgd2VsbCwgd2UndmUganVzdCBlbmRlZCB1cCBs ZXR0aW5nIHRoZSBoYXJkd2FyZSBzZW5kCnRoZSBtZXNzYWdlcyBmcm9tIHRoZSBDUFUgcmVnaXN0 ZXJzIHRvIFBDSDsgdGhpcyBpcyBwb3NzaWJsZSBvbiBMUFQgUENICmJ1dCBubyBsb25nZXIgb24g U1BUIFBDSC4gKFNlZSBiZHdfZW5hYmxlX2JhY2tsaWdodDsgTFBUIFBDSCAqYWxsb3dzKgpzZXR0 aW5nIG9yIG5vdCBzZXR0aW5nIEJMTV9QQ0hfT1ZFUlJJREVfRU5BQkxFLCBhZnRlciB0aGF0IGl0 J3MgdGhlCmRlZmF1bHQuKQoKQWdhaW4sIHdlIGRvIG5vdCBzdXBwb3J0IENQVSBiYWNrbGlnaHQg YW55d2hlcmUgb24gUENIIHNwbGl0IHBsYXRmb3JtcywKaXQncyBqdXN0IHRoZSBwYXNzaW5nIG9m IG1lc3NhZ2VzIGZyb20gQ1BVIHJlZ2lzdGVycyB0byBQQ0guIFdlIGFsc28KZG9uJ3Qgc3VwcG9y dCBiYWNrbGlnaHQgb24gdGhlIHV0aWxpdHkgcGluICh0aGVyZSdzIHBhdGNoZXMgdG8gYWRkIHRo aXMKdG8gYnh0LCBidXQgdGhhdCdzIGRpZmZlcmVudCBhbnl3YXkpLgoKLS0tCgpJIHRoaW5rIEkg a25vdyB0b28gbXVjaCBhYm91dCBiYWNrbGlnaHQuIEFuZCBieSB0b28gbXVjaCBJIG1lYW4gdGhh dCBJCmtub3cgZW5vdWdoIHRvIGtub3cgSSBkb24ndCBrbm93IG5vd2hlcmUgbmVhciBlbm91Z2gs IGFuZCB0aGF0IHRob3VnaHQKcmVhbGx5IHNjYXJlcyBtZS4gSSBkb24ndCB3YW50IHRvIGtub3cg bW9yZSBhYm91dCBiYWNrbGlnaHQuIEknZCByYXRoZXIKcmVncmVzcyB0byB0aGUgYmxpc3NmdWwg aWdub3JhbmNlIGFuZCB0aGUgbmHDr3ZlIG1pc2NvbmNlcHRpb24gdGhhdApiYWNrbGlnaHQgc2hv dWxkIGJlIGVhc3kuCgpCUiwKSmFuaS4KCj4KPj4gICAJfSBlbHNlIGlmIChIQVNfUENIX1NQTElU KGRldikpIHsKPj4gICAJCWRldl9wcml2LT5kaXNwbGF5LnNldHVwX2JhY2tsaWdodCA9IHBjaF9z ZXR1cF9iYWNrbGlnaHQ7Cj4+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5lbmFibGVfYmFja2xpZ2h0 ID0gcGNoX2VuYWJsZV9iYWNrbGlnaHQ7Cj4+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5kaXNhYmxl X2JhY2tsaWdodCA9IHBjaF9kaXNhYmxlX2JhY2tsaWdodDsKPj4gICAJCWRldl9wcml2LT5kaXNw bGF5LnNldF9iYWNrbGlnaHQgPSBwY2hfc2V0X2JhY2tsaWdodDsKPj4gICAJCWRldl9wcml2LT5k aXNwbGF5LmdldF9iYWNrbGlnaHQgPSBwY2hfZ2V0X2JhY2tsaWdodDsKPj4gKwkJZGV2X3ByaXYt PmRpc3BsYXkuYmFja2xpZ2h0X2h6X3RvX3B3bSA9IHBjaF9oel90b19wd207Cj4+ICAgCX0gZWxz ZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7Cj4+ICAgCQlpZiAoZGV2X3ByaXYtPnZidC5oYXNf bWlwaSkgewo+PiAgIAkJCWRldl9wcml2LT5kaXNwbGF5LnNldHVwX2JhY2tsaWdodCA9IHB3bV9z ZXR1cF9iYWNrbGlnaHQ7Cj4+IEBAIC0xNTQ0LDYgKzE2ODcsNyBAQCB2b2lkIGludGVsX3BhbmVs X2luaXRfYmFja2xpZ2h0X2Z1bmNzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAgCQkJZGV2 X3ByaXYtPmRpc3BsYXkuZGlzYWJsZV9iYWNrbGlnaHQgPSB2bHZfZGlzYWJsZV9iYWNrbGlnaHQ7 Cj4+ICAgCQkJZGV2X3ByaXYtPmRpc3BsYXkuc2V0X2JhY2tsaWdodCA9IHZsdl9zZXRfYmFja2xp Z2h0Owo+PiAgIAkJCWRldl9wcml2LT5kaXNwbGF5LmdldF9iYWNrbGlnaHQgPSB2bHZfZ2V0X2Jh Y2tsaWdodDsKPj4gKwkJCWRldl9wcml2LT5kaXNwbGF5LmJhY2tsaWdodF9oel90b19wd20gPSB2 bHZfaHpfdG9fcHdtOwo+PiAgIAkJfQo+PiAgIAl9IGVsc2UgaWYgKElTX0dFTjQoZGV2KSkgewo+ PiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuc2V0dXBfYmFja2xpZ2h0ID0gaTk2NV9zZXR1cF9iYWNr bGlnaHQ7Cj4+IEBAIC0xNTUxLDEyICsxNjk1LDE0IEBAIHZvaWQgaW50ZWxfcGFuZWxfaW5pdF9i YWNrbGlnaHRfZnVuY3Moc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4gICAJCWRldl9wcml2LT5k aXNwbGF5LmRpc2FibGVfYmFja2xpZ2h0ID0gaTk2NV9kaXNhYmxlX2JhY2tsaWdodDsKPj4gICAJ CWRldl9wcml2LT5kaXNwbGF5LnNldF9iYWNrbGlnaHQgPSBpOXh4X3NldF9iYWNrbGlnaHQ7Cj4+ ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfYmFja2xpZ2h0ID0gaTl4eF9nZXRfYmFja2xpZ2h0 Owo+PiArCQlkZXZfcHJpdi0+ZGlzcGxheS5iYWNrbGlnaHRfaHpfdG9fcHdtID0gaTk2NV9oel90 b19wd207Cj4+ICAgCX0gZWxzZSB7Cj4+ICAgCQlkZXZfcHJpdi0+ZGlzcGxheS5zZXR1cF9iYWNr bGlnaHQgPSBpOXh4X3NldHVwX2JhY2tsaWdodDsKPj4gICAJCWRldl9wcml2LT5kaXNwbGF5LmVu YWJsZV9iYWNrbGlnaHQgPSBpOXh4X2VuYWJsZV9iYWNrbGlnaHQ7Cj4+ICAgCQlkZXZfcHJpdi0+ ZGlzcGxheS5kaXNhYmxlX2JhY2tsaWdodCA9IGk5eHhfZGlzYWJsZV9iYWNrbGlnaHQ7Cj4+ICAg CQlkZXZfcHJpdi0+ZGlzcGxheS5zZXRfYmFja2xpZ2h0ID0gaTl4eF9zZXRfYmFja2xpZ2h0Owo+ PiAgIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2JhY2tsaWdodCA9IGk5eHhfZ2V0X2JhY2tsaWdo dDsKPj4gKwkJZGV2X3ByaXYtPmRpc3BsYXkuYmFja2xpZ2h0X2h6X3RvX3B3bSA9IGk5eHhfaHpf dG9fcHdtOwo+PiAgIAl9Cj4+ICAgfQo+Pgo+Pgo+CgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9w ZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==