From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 5/7] drm/i915: Dynamically allocate the array of drm_i915_gem_fence_reg Date: Wed, 11 Jul 2018 11:11:18 +0200 Message-ID: <20180711091118.GW3008@phenom.ffwll.local> References: <20180711073608.20286-1-chris@chris-wilson.co.uk> <20180711073608.20286-6-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x532.google.com (mail-ed1-x532.google.com [IPv6:2a00:1450:4864:20::532]) by gabe.freedesktop.org (Postfix) with ESMTPS id 81D706EBFF for ; Wed, 11 Jul 2018 09:11:22 +0000 (UTC) Received: by mail-ed1-x532.google.com with SMTP id t2-v6so4056245edr.5 for ; Wed, 11 Jul 2018 02:11:22 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180711073608.20286-6-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKdWwgMTEsIDIwMTggYXQgMDg6MzY6MDZBTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IElmIHdlIGR5bmFtaWNhbGx5IGFsbG9jYXRlIHRoZSBjb3JyZWN0IHNpemVkIGFycmF5 IGZvciB0aGUgZmVuY2UKPiByZWdpc3RlcnMsIHdlIGNhbiBhdm9pZCB0aGUgNHggb3ZlcmFsbG9j YXRpb24gb24gb2xkZXIsIHR5cGljYWxseQo+IHNtYWxsZXIgZGV2aWNlcyBhbmQgYXZvaWQgaGF2 aW5nIHRvIGtub3cgdGhlIHN0YXRpYyBsYXlvdXQgaW4gYWR2YW5jZS4KPiAKPiBTaWduZWQtb2Zm LWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KCkZlZWxzIGEgYml0 IGxpa2UgbWljcm8tb3B0aW1pemluZywgYnV0IHBhdGNoIGxvb2tzIG9rLiBJJ2QgcHV0IHRoZXNl IHR3bwppbnRvIGk5MTVfZ2VtX2ZlbmNlX3JlZy5oIHRvdWdoIHNpbmNlIHlvdSdyZSBhbHJlYWR5 IG1vdmluZy9jcmVhdGluZyB0aGVtLgpFaXRoZXIgd2F5OgoKUmV2aWV3ZWQtYnk6IERhbmllbCBW ZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jICAgICAgICAgICB8IDMzIC0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuaCB8ICAyIC0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICAgfCA2NCArKysrKysrKysrKysrKysrKysrKystLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCAgICAgICB8ICAzICstCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmggICAgICAgICAgIHwgIDEgKwo+ICA1IGZpbGVz IGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKyksIDQxIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwo+IGluZGV4IGNiY2JhNjEzYjE3NS4uOGVlY2Q2OGY5ZTIzIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTU2MzYsMzkgKzU2MzYsNiBAQCBpOTE1X2dlbV9j bGVhbnVwX2VuZ2luZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWRl dl9wcml2LT5ndC5jbGVhbnVwX2VuZ2luZShlbmdpbmUpOwo+ICB9Cj4gIAo+IC12b2lkIGk5MTVf Z2d0dF9pbml0X2ZlbmNlcyhzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQo+IC17Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBnZ3R0LT52bS5pOTE1Owo+IC0JaW50IGk7Cj4g LQo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNyAmJiAhSVNfVkFMTEVZVklFVyhkZXZf cHJpdikgJiYKPiAtCSAgICAhSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCj4gLQkJZ2d0dC0+bnVt X2ZlbmNlX3JlZ3MgPSAzMjsKPiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCB8 fAo+IC0JCSBJU19JOTQ1RyhkZXZfcHJpdikgfHwgSVNfSTk0NUdNKGRldl9wcml2KSB8fAo+IC0J CSBJU19HMzMoZGV2X3ByaXYpIHx8IElTX1BJTkVWSUVXKGRldl9wcml2KSkKPiAtCQlnZ3R0LT5u dW1fZmVuY2VfcmVncyA9IDE2Owo+IC0JZWxzZQo+IC0JCWdndHQtPm51bV9mZW5jZV9yZWdzID0g ODsKPiAtCj4gLQlpZiAoaW50ZWxfdmdwdV9hY3RpdmUoZGV2X3ByaXYpKQo+IC0JCWdndHQtPm51 bV9mZW5jZV9yZWdzID0gSTkxNV9SRUFEKHZndGlmX3JlZyhhdmFpbF9ycy5mZW5jZV9udW0pKTsK PiAtCj4gLQlJTklUX0xJU1RfSEVBRCgmZ2d0dC0+ZmVuY2VfbGlzdCk7Cj4gLQo+IC0JLyogSW5p dGlhbGl6ZSBmZW5jZSByZWdpc3RlcnMgdG8gemVybyAqLwo+IC0JZm9yIChpID0gMDsgaSA8IGdn dHQtPm51bV9mZW5jZV9yZWdzOyBpKyspIHsKPiAtCQlzdHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVn ICpmZW5jZSA9ICZnZ3R0LT5mZW5jZV9yZWdzW2ldOwo+IC0KPiAtCQlmZW5jZS0+Z2d0dCA9IGdn dHQ7Cj4gLQkJZmVuY2UtPmlkID0gaTsKPiAtCQlsaXN0X2FkZF90YWlsKCZmZW5jZS0+bGluaywg JmdndHQtPmZlbmNlX2xpc3QpOwo+IC0JfQo+IC0JaTkxNV9nZW1fcmVzdG9yZV9mZW5jZXMoZGV2 X3ByaXYpOwo+IC0KPiAtCWk5MTVfZ2VtX2RldGVjdF9iaXRfNl9zd2l6emxlKGRldl9wcml2KTsK PiAtfQo+IC0KPiAgc3RhdGljIHZvaWQgaTkxNV9nZW1faW5pdF9fbW0oc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpCj4gIHsKPiAgCXNwaW5fbG9ja19pbml0KCZpOTE1LT5tbS5vYmplY3Rf c3RhdF9sb2NrKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f ZmVuY2VfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZV9yZWcuaAo+ IGluZGV4IGM1MTBmOGVmYzFiYi4uNmU2NmY2YjNmODUxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlX3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZmVuY2VfcmVnLmgKPiBAQCAtNTYsOCArNTYsNiBAQCBzdHJ1Y3QgZHJt X2k5MTVfZmVuY2VfcmVnIHsKPiAgCWJvb2wgZGlydHk7Cj4gIH07Cj4gIAo+IC12b2lkIGk5MTVf Z2d0dF9pbml0X2ZlbmNlcyhzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KTsKPiAtCj4gIHN0cnVjdCBk cm1faTkxNV9mZW5jZV9yZWcgKgo+ICBpOTE1X3Jlc2VydmVfZmVuY2Uoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUpOwo+ICB2b2lkIGk5MTVfdW5yZXNlcnZlX2ZlbmNlKHN0cnVjdCBkcm1f aTkxNV9mZW5jZV9yZWcgKmZlbmNlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ IGluZGV4IGFiZjQxZjkwYTkyNS4uZTY3ODdjM2FmNTQ0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmMKPiBAQCAtMzcsNiArMzcsNyBAQAo+ICAjaW5jbHVkZSA8ZHJtL2k5MTVf ZHJtLmg+Cj4gIAo+ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiArI2luY2x1ZGUgImk5MTVfZ2Vt X2ZlbmNlX3JlZy5oIgo+ICAjaW5jbHVkZSAiaTkxNV92Z3B1LmgiCj4gICNpbmNsdWRlICJpOTE1 X3RyYWNlLmgiCj4gICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKPiBAQCAtMjkwMSw2ICsyOTAyLDUx IEBAIHZvaWQgaTkxNV9nZW1fZmluaV9hbGlhc2luZ19wcGd0dChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSkKPiAgCWdndHQtPnZtLnZtYV9vcHMudW5iaW5kX3ZtYSA9IGdndHRfdW5iaW5k X3ZtYTsKPiAgfQo+ICAKPiArc3RhdGljIGludCBpOTE1X2dndHRfaW5pdF9mZW5jZXMoc3RydWN0 IGk5MTVfZ2d0dCAqZ2d0dCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZ2d0dC0+dm0uaTkxNTsKPiArCWludCBpOwo+ICsKPiArCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDcgJiYKPiArCSAgICAhKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NI RVJSWVZJRVcoZGV2X3ByaXYpKSkKPiArCQlnZ3R0LT5udW1fZmVuY2VfcmVncyA9IDMyOwo+ICsJ ZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0IHx8Cj4gKwkJIElTX0k5NDVHKGRldl9w cml2KSB8fCBJU19JOTQ1R00oZGV2X3ByaXYpIHx8Cj4gKwkJIElTX0czMyhkZXZfcHJpdikgfHwg SVNfUElORVZJRVcoZGV2X3ByaXYpKQo+ICsJCWdndHQtPm51bV9mZW5jZV9yZWdzID0gMTY7Cj4g KwllbHNlCj4gKwkJZ2d0dC0+bnVtX2ZlbmNlX3JlZ3MgPSA4Owo+ICsKPiArCWlmIChpbnRlbF92 Z3B1X2FjdGl2ZShkZXZfcHJpdikpCj4gKwkJZ2d0dC0+bnVtX2ZlbmNlX3JlZ3MgPSBJOTE1X1JF QUQodmd0aWZfcmVnKGF2YWlsX3JzLmZlbmNlX251bSkpOwo+ICsKPiArCWdndHQtPmZlbmNlX3Jl Z3MgPSBrY2FsbG9jKGdndHQtPm51bV9mZW5jZV9yZWdzLAo+ICsJCQkJICAgc2l6ZW9mKCpnZ3R0 LT5mZW5jZV9yZWdzKSwKPiArCQkJCSAgIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFnZ3R0LT5mZW5j ZV9yZWdzKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCUlOSVRfTElTVF9IRUFEKCZnZ3R0 LT5mZW5jZV9saXN0KTsKPiArCj4gKwkvKiBJbml0aWFsaXplIGZlbmNlIHJlZ2lzdGVycyB0byB6 ZXJvICovCj4gKwlmb3IgKGkgPSAwOyBpIDwgZ2d0dC0+bnVtX2ZlbmNlX3JlZ3M7IGkrKykgewo+ ICsJCXN0cnVjdCBkcm1faTkxNV9mZW5jZV9yZWcgKmZlbmNlID0gJmdndHQtPmZlbmNlX3JlZ3Nb aV07Cj4gKwo+ICsJCWZlbmNlLT5nZ3R0ID0gZ2d0dDsKPiArCQlmZW5jZS0+aWQgPSBpOwo+ICsJ CWxpc3RfYWRkX3RhaWwoJmZlbmNlLT5saW5rLCAmZ2d0dC0+ZmVuY2VfbGlzdCk7Cj4gKwl9Cj4g KwlpOTE1X2dlbV9yZXN0b3JlX2ZlbmNlcyhkZXZfcHJpdik7Cj4gKwo+ICsJaTkxNV9nZW1fZGV0 ZWN0X2JpdF82X3N3aXp6bGUoZGV2X3ByaXYpOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIGk5MTVfZ2d0dF9jbGVhbnVwX2ZlbmNlcyhzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0 KQo+ICt7Cj4gKwlrZnJlZShnZ3R0LT5mZW5jZV9yZWdzKTsKPiArfQo+ICsKPiAgaW50IGk5MTVf Z2VtX2luaXRfZ2d0dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAg CS8qIExldCBHRU0gTWFuYWdlIGFsbCBvZiB0aGUgYXBlcnR1cmUuCj4gQEAgLTI5OTAsNiArMzAz Niw4IEBAIHZvaWQgaTkxNV9nZ3R0X2NsZWFudXBfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAKPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0 ZXgpOwo+ICAKPiArCWk5MTVfZ2d0dF9jbGVhbnVwX2ZlbmNlcyhnZ3R0KTsKPiArCj4gIAlhcmNo X3BoeXNfd2NfZGVsKGdndHQtPm10cnIpOwo+ICAJaW9fbWFwcGluZ19maW5pKCZnZ3R0LT5pb21h cCk7Cj4gIAo+IEBAIC0zNTk1LDEzICszNjQzLDE1IEBAIGludCBpOTE1X2dndHRfaW5pdF9odyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJZ2d0dC0+dm0ubW0uY29sb3Jf YWRqdXN0ID0gaTkxNV9ndHRfY29sb3JfYWRqdXN0Owo+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIAo+IC0JaTkxNV9nZ3R0X2luaXRfZmVuY2VzKGdndHQp Owo+ICsJcmV0ID0gaTkxNV9nZ3R0X2luaXRfZmVuY2VzKGdndHQpOwo+ICsJaWYgKHJldCkKPiAr CQlnb3RvIGVycl9maW5pOwo+ICAKPiAgCWlmICghaW9fbWFwcGluZ19pbml0X3djKCZnZ3R0LT5p b21hcCwKPiAgCQkJCWdndHQtPmdtYWRyLnN0YXJ0LAo+ICAJCQkJZ2d0dC0+bWFwcGFibGVfZW5k KSkgewo+ICAJCXJldCA9IC1FSU87Cj4gLQkJZ290byBvdXRfZ3R0X2NsZWFudXA7Cj4gKwkJZ290 byBlcnJfZmVuY2VzOwo+ICAJfQo+ICAKPiAgCWdndHQtPm10cnIgPSBhcmNoX3BoeXNfd2NfYWRk KGdndHQtPmdtYWRyLnN0YXJ0LCBnZ3R0LT5tYXBwYWJsZV9lbmQpOwo+IEBAIC0zNjEyLDEyICsz NjYyLDE4IEBAIGludCBpOTE1X2dndHRfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gIAkgKi8KPiAgCXJldCA9IGk5MTVfZ2VtX2luaXRfc3RvbGVuKGRldl9wcml2 KTsKPiAgCWlmIChyZXQpCj4gLQkJZ290byBvdXRfZ3R0X2NsZWFudXA7Cj4gKwkJZ290byBlcnJf aW87Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIAo+IC1vdXRfZ3R0X2NsZWFudXA6Cj4gK2Vycl9pbzoK PiArCWFyY2hfcGh5c193Y19kZWwoZ2d0dC0+bXRycik7Cj4gKwlpb19tYXBwaW5nX2ZpbmkoJmdn dHQtPmlvbWFwKTsKPiArZXJyX2ZlbmNlczoKPiArCWk5MTVfZ2d0dF9jbGVhbnVwX2ZlbmNlcyhn Z3R0KTsKPiArZXJyX2Zpbmk6Cj4gIAlnZ3R0LT52bS5jbGVhbnVwKCZnZ3R0LT52bSk7Cj4gKwlp OTE1X2FkZHJlc3Nfc3BhY2VfZmluaSgmZ2d0dC0+dm0pOwo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+IGluZGV4IGYzNWE4NTI4NGIxYS4u ZjhjMzcyZGQ2MzYyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiBAQCAt MzgsNyArMzgsNiBAQAo+ICAjaW5jbHVkZSA8bGludXgvbW0uaD4KPiAgI2luY2x1ZGUgPGxpbnV4 L3BhZ2V2ZWMuaD4KPiAgCj4gLSNpbmNsdWRlICJpOTE1X2dlbV9mZW5jZV9yZWcuaCIKPiAgI2lu Y2x1ZGUgImk5MTVfcmVxdWVzdC5oIgo+ICAjaW5jbHVkZSAiaTkxNV9zZWxmdGVzdC5oIgo+ICAj aW5jbHVkZSAiaTkxNV90aW1lbGluZS5oIgo+IEBAIC0zOTgsNyArMzk3LDcgQEAgc3RydWN0IGk5 MTVfZ2d0dCB7Cj4gIAo+ICAJLyoqIExSVSBsaXN0IG9mIG9iamVjdHMgd2l0aCBmZW5jZSByZWdz IG9uIHRoZW0uICovCj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIGZlbmNlX2xpc3Q7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfZmVuY2VfcmVnIGZlbmNlX3JlZ3NbSTkxNV9NQVhfTlVNX0ZFTkNFU107Cj4gKwlz dHJ1Y3QgZHJtX2k5MTVfZmVuY2VfcmVnICpmZW5jZV9yZWdzOwo+ICAJaW50IG51bV9mZW5jZV9y ZWdzOwo+ICAKPiAgCXN0cnVjdCBkcm1fbW1fbm9kZSBlcnJvcl9jYXB0dXJlOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV92bWEuaAo+IGluZGV4IDkyNWFmNzljYzZkNi4uN2RmMTU2ZTFjYTA2IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3ZtYS5oCj4gQEAgLTMwLDYgKzMwLDcgQEAKPiAgCj4gICNpbmNsdWRl IDxkcm0vZHJtX21tLmg+Cj4gIAo+ICsjaW5jbHVkZSAiaTkxNV9nZW1fZmVuY2VfcmVnLmgiCj4g ICNpbmNsdWRlICJpOTE1X2dlbV9ndHQuaCIKPiAgI2luY2x1ZGUgImk5MTVfZ2VtX29iamVjdC5o Igo+ICAKPiAtLSAKPiAyLjE4LjAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVy LCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK