From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2] drm/i915: constify validate_vbt in VBT parsing Date: Tue, 12 May 2015 15:53:49 +0300 Message-ID: <20150512125349.GB18908@intel.com> References: <20150512120946.GX18908@intel.com> <1431434492-26300-1-git-send-email-jani.nikula@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 4731A6E1BF for ; Tue, 12 May 2015 05:53:58 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1431434492-26300-1-git-send-email-jani.nikula@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBNYXkgMTIsIDIwMTUgYXQgMDM6NDE6MzJQTSArMDMwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gTWFrZSBpbnB1dCBhbmQgb3V0cHV0IG9mIHZhbGlkYXRlX3ZidCBjb25zdCwgYW5kIGZp eCB0aGUgZmFsbG91dC4gV2UKPiBzaG91bGRuJ3QgbW9kaWZ5IHRoZSBWQlQsIHNvIG1ha2UgdGhl IGNvbXBpbGVyIGhlbHAgdXMgaGVyZS4KPiAKPiB2MjogdXNlIHBvaW50ZXIgYXJpdGhtZXRpY3Mg b24gdm9pZCogdG8gc2ltcGxpZnkgKFZpbGxlKQo+IAo+IFNpZ25lZC1vZmYtYnk6IEphbmkgTmlr dWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+CgpSZXZpZXdlZC1ieTogVmlsbGUgU3lyasOkbMOk IDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Jpb3MuYyB8IDQ5ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25z KC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYwo+IGluZGV4IDU4NzZlN2NiMTMyZC4u Y2JkMTZjMDE5NTlhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jp b3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYwo+IEBAIC0yMDUs NyArMjA1LDcgQEAgZ2V0X2x2ZHNfZnBfdGltaW5nKGNvbnN0IHN0cnVjdCBiZGJfaGVhZGVyICpi ZGIsCj4gIC8qIFRyeSB0byBmaW5kIGludGVncmF0ZWQgcGFuZWwgZGF0YSAqLwo+ICBzdGF0aWMg dm9pZAo+ICBwYXJzZV9sZnBfcGFuZWxfZGF0YShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gLQkJCSAgICBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiKQo+ICsJCSAgICAgY29uc3Qg c3RydWN0IGJkYl9oZWFkZXIgKmJkYikKPiAgewo+ICAJY29uc3Qgc3RydWN0IGJkYl9sdmRzX29w dGlvbnMgKmx2ZHNfb3B0aW9uczsKPiAgCWNvbnN0IHN0cnVjdCBiZGJfbHZkc19sZnBfZGF0YSAq bHZkc19sZnBfZGF0YTsKPiBAQCAtMzExLDcgKzMxMSw4IEBAIHBhcnNlX2xmcF9wYW5lbF9kYXRh KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgfQo+ICAKPiAgc3RhdGljIHZv aWQKPiAtcGFyc2VfbGZwX2JhY2tsaWdodChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gK3BhcnNlX2xmcF9iYWNrbGlnaHQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCSAgICBjb25zdCBzdHJ1Y3QgYmRiX2hl YWRlciAqYmRiKQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgYmRiX2xmcF9iYWNrbGlnaHRfZGF0YSAq YmFja2xpZ2h0X2RhdGE7Cj4gIAljb25zdCBzdHJ1Y3QgYmRiX2xmcF9iYWNrbGlnaHRfZGF0YV9l bnRyeSAqZW50cnk7Cj4gQEAgLTM0OSw3ICszNTAsNyBAQCBwYXJzZV9sZnBfYmFja2xpZ2h0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0IGJkYl9oZWFkZXIgKmJkYikK PiAgLyogVHJ5IHRvIGZpbmQgc2R2byBwYW5lbCBkYXRhICovCj4gIHN0YXRpYyB2b2lkCj4gIHBh cnNlX3Nkdm9fcGFuZWxfZGF0YShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g LQkJICAgICAgc3RydWN0IGJkYl9oZWFkZXIgKmJkYikKPiArCQkgICAgICBjb25zdCBzdHJ1Y3Qg YmRiX2hlYWRlciAqYmRiKQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgbHZkc19kdm9fdGltaW5nICpk dm9fdGltaW5nOwo+ICAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKnBhbmVsX2ZpeGVkX21vZGU7 Cj4gQEAgLTQwMyw3ICs0MDQsNyBAQCBzdGF0aWMgaW50IGludGVsX2Jpb3Nfc3NjX2ZyZXF1ZW5j eShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAKPiAgc3RhdGljIHZvaWQKPiAgcGFyc2VfZ2Vu ZXJhbF9mZWF0dXJlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJICAg ICAgIHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gKwkJICAgICAgIGNvbnN0IHN0cnVjdCBiZGJf aGVhZGVyICpiZGIpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ ZGV2Owo+ICAJY29uc3Qgc3RydWN0IGJkYl9nZW5lcmFsX2ZlYXR1cmVzICpnZW5lcmFsOwo+IEBA IC00MjksNyArNDMwLDcgQEAgcGFyc2VfZ2VuZXJhbF9mZWF0dXJlcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAo+ICBzdGF0aWMgdm9pZAo+ICBwYXJzZV9nZW5lcmFsX2Rl ZmluaXRpb25zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAtCQkJICBzdHJ1 Y3QgYmRiX2hlYWRlciAqYmRiKQo+ICsJCQkgIGNvbnN0IHN0cnVjdCBiZGJfaGVhZGVyICpiZGIp Cj4gIHsKPiAgCWNvbnN0IHN0cnVjdCBiZGJfZ2VuZXJhbF9kZWZpbml0aW9ucyAqZ2VuZXJhbDsK PiAgCj4gQEAgLTQ1Niw3ICs0NTcsNyBAQCBjaGlsZF9kZXZpY2VfcHRyKGNvbnN0IHN0cnVjdCBi ZGJfZ2VuZXJhbF9kZWZpbml0aW9ucyAqcF9kZWZzLCBpbnQgaSkKPiAgCj4gIHN0YXRpYyB2b2lk Cj4gIHBhcnNlX3Nkdm9fZGV2aWNlX21hcHBpbmcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+IC0JCQkgIHN0cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gKwkJCSAgY29uc3Qgc3Ry dWN0IGJkYl9oZWFkZXIgKmJkYikKPiAgewo+ICAJc3RydWN0IHNkdm9fZGV2aWNlX21hcHBpbmcg KnBfbWFwcGluZzsKPiAgCWNvbnN0IHN0cnVjdCBiZGJfZ2VuZXJhbF9kZWZpbml0aW9ucyAqcF9k ZWZzOwo+IEBAIC01NDYsNyArNTQ3LDcgQEAgcGFyc2Vfc2R2b19kZXZpY2VfbWFwcGluZyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAo+ICBzdGF0aWMgdm9pZAo+ICBwYXJz ZV9kcml2ZXJfZmVhdHVyZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IC0J CSAgICAgICBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiKQo+ICsJCSAgICAgIGNvbnN0IHN0cnVjdCBi ZGJfaGVhZGVyICpiZGIpCj4gIHsKPiAgCWNvbnN0IHN0cnVjdCBiZGJfZHJpdmVyX2ZlYXR1cmVz ICpkcml2ZXI7Cj4gIAo+IEBAIC01NzIsNyArNTczLDcgQEAgcGFyc2VfZHJpdmVyX2ZlYXR1cmVz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgfQo+ICAKPiAgc3RhdGljIHZv aWQKPiAtcGFyc2VfZWRwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0 IGJkYl9oZWFkZXIgKmJkYikKPiArcGFyc2VfZWRwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIgKmJkYikKPiAgewo+ICAJY29uc3Qgc3Ry dWN0IGJkYl9lZHAgKmVkcDsKPiAgCWNvbnN0IHN0cnVjdCBlZHBfcG93ZXJfc2VxICplZHBfcHBz Owo+IEBAIC02ODQsNyArNjg1LDcgQEAgcGFyc2VfZWRwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgc3RydWN0IGJkYl9oZWFkZXIgKmJkYikKPiAgfQo+ICAKPiAgc3RhdGljIHZv aWQKPiAtcGFyc2VfcHNyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgc3RydWN0 IGJkYl9oZWFkZXIgKmJkYikKPiArcGFyc2VfcHNyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIgKmJkYikKPiAgewo+ICAJY29uc3Qgc3Ry dWN0IGJkYl9wc3IgKnBzcjsKPiAgCWNvbnN0IHN0cnVjdCBwc3JfdGFibGUgKnBzcl90YWJsZTsK PiBAQCAtNzk1LDcgKzc5Niw3IEBAIHN0YXRpYyB1OCAqZ290b19uZXh0X3NlcXVlbmNlKHU4ICpk YXRhLCBpbnQgKnNpemUpCj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gLXBhcnNlX21pcGkoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiKQo+ ICtwYXJzZV9taXBpKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgY29uc3Qgc3Ry dWN0IGJkYl9oZWFkZXIgKmJkYikKPiAgewo+ICAJY29uc3Qgc3RydWN0IGJkYl9taXBpX2NvbmZp ZyAqc3RhcnQ7Cj4gIAljb25zdCBzdHJ1Y3QgYmRiX21pcGlfc2VxdWVuY2UgKnNlcXVlbmNlOwo+ IEBAIC05NDYsNyArOTQ3LDcgQEAgZXJyOgo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBwYXJzZV9k ZGlfcG9ydChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0 LAo+IC0JCQkgICBzdHJ1Y3QgYmRiX2hlYWRlciAqYmRiKQo+ICsJCQkgICBjb25zdCBzdHJ1Y3Qg YmRiX2hlYWRlciAqYmRiKQo+ICB7Cj4gIAl1bmlvbiBjaGlsZF9kZXZpY2VfY29uZmlnICppdCwg KmNoaWxkID0gTlVMTDsKPiAgCXN0cnVjdCBkZGlfdmJ0X3BvcnRfaW5mbyAqaW5mbyA9ICZkZXZf cHJpdi0+dmJ0LmRkaV9wb3J0X2luZm9bcG9ydF07Cj4gQEAgLTEwNDgsNyArMTA0OSw3IEBAIHN0 YXRpYyB2b2lkIHBhcnNlX2RkaV9wb3J0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgZW51bSBwb3J0IHBvcnQsCj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHBhcnNlX2RkaV9wb3J0 cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCSAgICBzdHJ1Y3QgYmRi X2hlYWRlciAqYmRiKQo+ICsJCQkgICAgY29uc3Qgc3RydWN0IGJkYl9oZWFkZXIgKmJkYikKPiAg ewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4gIAllbnVtIHBv cnQgcG9ydDsKPiBAQCAtMTA2OCw3ICsxMDY5LDcgQEAgc3RhdGljIHZvaWQgcGFyc2VfZGRpX3Bv cnRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIHN0YXRpYyB2b2lk Cj4gIHBhcnNlX2RldmljZV9tYXBwaW5nKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAtCQkgICAgICAgc3RydWN0IGJkYl9oZWFkZXIgKmJkYikKPiArCQkgICAgIGNvbnN0IHN0 cnVjdCBiZGJfaGVhZGVyICpiZGIpCj4gIHsKPiAgCWNvbnN0IHN0cnVjdCBiZGJfZ2VuZXJhbF9k ZWZpbml0aW9ucyAqcF9kZWZzOwo+ICAJY29uc3QgdW5pb24gY2hpbGRfZGV2aWNlX2NvbmZpZyAq cF9jaGlsZDsKPiBAQCAtMTE5OCwxOSArMTE5OSwyMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRt aV9zeXN0ZW1faWQgaW50ZWxfbm9fb3ByZWdpb25fdmJ0W10gPSB7Cj4gIAl7IH0KPiAgfTsKPiAg Cj4gLXN0YXRpYyBzdHJ1Y3QgYmRiX2hlYWRlciAqdmFsaWRhdGVfdmJ0KGNoYXIgKmJhc2UsIHNp emVfdCBzaXplLAo+IC0JCQkJICAgICAgIHN0cnVjdCB2YnRfaGVhZGVyICp2YnQsCj4gLQkJCQkg ICAgICAgY29uc3QgY2hhciAqc291cmNlKQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGJkYl9oZWFk ZXIgKnZhbGlkYXRlX3ZidChjb25zdCB2b2lkICpiYXNlLCBzaXplX3Qgc2l6ZSwKPiArCQkJCQkg ICAgIGNvbnN0IHZvaWQgKl92YnQsCj4gKwkJCQkJICAgICBjb25zdCBjaGFyICpzb3VyY2UpCj4g IHsKPiArCWNvbnN0IHN0cnVjdCB2YnRfaGVhZGVyICp2YnQgPSBfdmJ0Owo+ICAJc2l6ZV90IG9m ZnNldDsKPiAtCXN0cnVjdCBiZGJfaGVhZGVyICpiZGI7Cj4gKwljb25zdCBzdHJ1Y3QgYmRiX2hl YWRlciAqYmRiOwo+ICAKPiAgCWlmICh2YnQgPT0gTlVMTCkgewo+ICAJCURSTV9ERUJVR19EUklW RVIoIlZCVCBzaWduYXR1cmUgbWlzc2luZ1xuIik7Cj4gIAkJcmV0dXJuIE5VTEw7Cj4gIAl9Cj4g IAo+IC0Jb2Zmc2V0ID0gKGNoYXIgKil2YnQgLSBiYXNlOwo+ICsJb2Zmc2V0ID0gX3ZidCAtIGJh c2U7Cj4gIAlpZiAob2Zmc2V0ICsgc2l6ZW9mKHN0cnVjdCB2YnRfaGVhZGVyKSA+IHNpemUpIHsK PiAgCQlEUk1fREVCVUdfRFJJVkVSKCJWQlQgaGVhZGVyIGluY29tcGxldGVcbiIpOwo+ICAJCXJl dHVybiBOVUxMOwo+IEBAIC0xMjI3LDcgKzEyMjksNyBAQCBzdGF0aWMgc3RydWN0IGJkYl9oZWFk ZXIgKnZhbGlkYXRlX3ZidChjaGFyICpiYXNlLCBzaXplX3Qgc2l6ZSwKPiAgCQlyZXR1cm4gTlVM TDsKPiAgCX0KPiAgCj4gLQliZGIgPSAoc3RydWN0IGJkYl9oZWFkZXIgKikoYmFzZSArIG9mZnNl dCk7Cj4gKwliZGIgPSBiYXNlICsgb2Zmc2V0Owo+ICAJaWYgKG9mZnNldCArIGJkYi0+YmRiX3Np emUgPiBzaXplKSB7Cj4gIAkJRFJNX0RFQlVHX0RSSVZFUigiQkRCIGluY29tcGxldGVcbiIpOwo+ ICAJCXJldHVybiBOVUxMOwo+IEBAIC0xMjUyLDcgKzEyNTQsNyBAQCBpbnRlbF9wYXJzZV9iaW9z KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9 IGRldi0+cGRldjsKPiAtCXN0cnVjdCBiZGJfaGVhZGVyICpiZGIgPSBOVUxMOwo+ICsJY29uc3Qg c3RydWN0IGJkYl9oZWFkZXIgKmJkYiA9IE5VTEw7Cj4gIAl1OCBfX2lvbWVtICpiaW9zID0gTlVM TDsKPiAgCj4gIAlpZiAoSEFTX1BDSF9OT1AoZGV2KSkKPiBAQCAtMTI2Miw5ICsxMjY0LDggQEAg aW50ZWxfcGFyc2VfYmlvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAKPiAgCS8qIFhYWCBT aG91bGQgdGhpcyB2YWxpZGF0aW9uIGJlIG1vdmVkIHRvIGludGVsX29wcmVnaW9uLmM/ICovCj4g IAlpZiAoIWRtaV9jaGVja19zeXN0ZW0oaW50ZWxfbm9fb3ByZWdpb25fdmJ0KSAmJiBkZXZfcHJp di0+b3ByZWdpb24udmJ0KQo+IC0JCWJkYiA9IHZhbGlkYXRlX3ZidCgoY2hhciAqKWRldl9wcml2 LT5vcHJlZ2lvbi5oZWFkZXIsIE9QUkVHSU9OX1NJWkUsCj4gLQkJCQkgICAoc3RydWN0IHZidF9o ZWFkZXIgKilkZXZfcHJpdi0+b3ByZWdpb24udmJ0LAo+IC0JCQkJICAgIk9wUmVnaW9uIik7Cj4g KwkJYmRiID0gdmFsaWRhdGVfdmJ0KGRldl9wcml2LT5vcHJlZ2lvbi5oZWFkZXIsIE9QUkVHSU9O X1NJWkUsCj4gKwkJCQkgICBkZXZfcHJpdi0+b3ByZWdpb24udmJ0LCAiT3BSZWdpb24iKTsKPiAg Cj4gIAlpZiAoYmRiID09IE5VTEwpIHsKPiAgCQlzaXplX3QgaSwgc2l6ZTsKPiBAQCAtMTI3Nyw3 ICsxMjc4LDcgQEAgaW50ZWxfcGFyc2VfYmlvcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJ CWZvciAoaSA9IDA7IGkgKyA0IDwgc2l6ZTsgaSsrKSB7Cj4gIAkJCWlmIChtZW1jbXAoYmlvcyAr IGksICIkVkJUIiwgNCkgPT0gMCkgewo+ICAJCQkJYmRiID0gdmFsaWRhdGVfdmJ0KGJpb3MsIHNp emUsCj4gLQkJCQkJCSAgIChzdHJ1Y3QgdmJ0X2hlYWRlciAqKShiaW9zICsgaSksCj4gKwkJCQkJ CSAgIGJpb3MgKyBpLAo+ICAJCQkJCQkgICAiUENJIFJPTSIpOwo+ICAJCQkJYnJlYWs7Cj4gIAkJ CX0KPiAtLSAKPiAyLjEuNAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK