From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 03/10] drm/i915: Expose engine properties via sysfs Date: Fri, 11 Oct 2019 09:44:16 +0100 Message-ID: <4399eff8-c0f9-bd9e-dba9-4830ed27e03d@linux.intel.com> References: <20191010071434.31195-1-chris@chris-wilson.co.uk> <20191010071434.31195-3-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3FEFD6EBE6 for ; Fri, 11 Oct 2019 08:44:21 +0000 (UTC) In-Reply-To: <20191010071434.31195-3-chris@chris-wilson.co.uk> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDEwLzEwLzIwMTkgMDg6MTQsIENocmlzIFdpbHNvbiB3cm90ZToKPiBQcmVsaW1pbmFyeSBz dHViIHRvIGFkZCBlbmdpbmVzIHVuZGVybmVhdGggL3N5cy9jbGFzcy9kcm0vY2FyZE4vLCBzbwo+ IHRoYXQgd2UgY2FuIGV4cG9zZSBwcm9wZXJ0aWVzIG9uIGVhY2ggZW5naW5lIHRvIHRoZSBzeXNh ZG1pbi4KPiAKPiBUbyBzdGFydCB3aXRoIHdlIGhhdmUgYmFzaWMgYW5hbG9ndWVzIG9mIHRoZSBp OTE1X3F1ZXJ5IGlvY3RsIHNvIHRoYXQgd2UKPiBjYW4gcHJldHR5IHByaW50IGVuZ2luZSBkaXNj b3ZlcnkgZnJvbSB0aGUgc2hlbGwsIGFuZCBmbGVzaCBvdXQgdGhlCj4gZGlyZWN0b3J5IHN0cnVj dHVyZS4gTGF0ZXIgd2Ugd2lsbCBhZGQgd3JpdGVhYmxlIHN5c2FkbWluIHByb3BlcnRpZXMgc3Vj aAo+IGFzIHBlci1lbmdpbmUgdGltZW91dCBjb250cm9scy4KPiAKPiBBbiBleGFtcGxlIHRyZWUg b2YgdGhlIGVuZ2luZSBwcm9wZXJ0aWVzIG9uIEJyYXN3ZWxsOgo+ICAgICAgL3N5cy9jbGFzcy9k cm0vY2FyZDAKPiAgICAgIOKUlOKUgOKUgCBlbmdpbmUKPiAgICAgICDCoMKgIOKUnOKUgOKUgCBi Y3MwCj4gICAgICAgwqDCoCDilILCoMKgIOKUnOKUgOKUgCBjbGFzcwo+ICAgICAgIMKgwqAg4pSC wqDCoCDilJzilIDilIAgaGVhcnRiZWF0X2ludGVydmFsX21zCgpOb3QgcHJlc2VudCBpbiB0aGlz IHBhdGNoLgoKPiAgICAgICDCoMKgIOKUgsKgwqAg4pSc4pSA4pSAIGluc3RhbmNlCj4gICAgICAg wqDCoCDilILCoMKgIOKUnOKUgOKUgCBtbWlvX2Jhc2UKCkkgdm90ZSBmb3IgcHV0dGluZyBtbWlv X2Jhc2UgaW4gYSBmb2xsb3d1cCBwYXRjaC4KCkFuZCBob3cgYWJvdXQgd2UgYWRkIGNhcGFiaWxp dGllcyBpbiB0aGUgZmlyc3QgcGF0Y2g/IFNvIHdlIGdldCBhbm90aGVyIAp3YXkgb2YgZW5naW5l IGRpc2NvdmVyeS4gSWRlYWxseSB3aXRoIG1hcHBpbmcgb2YgYml0cyB0byB1c2VyIGZyaWVuZGx5 IApzdHJpbmdzLgoKUmVnYXJkcywKClR2cnRrbwoKPiAgICAgICDCoMKgIOKUgsKgwqAg4pSU4pSA 4pSAIG5hbWUKPiAgICAgICDCoMKgIOKUnOKUgOKUgCByY3MwCj4gICAgICAgwqDCoCDilILCoMKg IOKUnOKUgOKUgCBjbGFzcwo+ICAgICAgIMKgwqAg4pSCwqDCoCDilJzilIDilIAgaGVhcnRiZWF0 X2ludGVydmFsX21zCj4gICAgICAgwqDCoCDilILCoMKgIOKUnOKUgOKUgCBpbnN0YW5jZQo+ICAg ICAgIMKgwqAg4pSCwqDCoCDilJzilIDilIAgbW1pb19iYXNlCj4gICAgICAgwqDCoCDilILCoMKg IOKUlOKUgOKUgCBuYW1lCj4gICAgICAgwqDCoCDilJzilIDilIAgdmNzMAo+ICAgICAgIMKgwqAg 4pSCwqDCoCDilJzilIDilIAgY2xhc3MKPiAgICAgICDCoMKgIOKUgsKgwqAg4pSc4pSA4pSAIGhl YXJ0YmVhdF9pbnRlcnZhbF9tcwo+ICAgICAgIMKgwqAg4pSCwqDCoCDilJzilIDilIAgaW5zdGFu Y2UKPiAgICAgICDCoMKgIOKUgsKgwqAg4pSc4pSA4pSAIG1taW9fYmFzZQo+ICAgICAgIMKgwqAg 4pSCwqDCoCDilJTilIDilIAgbmFtZQo+ICAgICAgIMKgwqAg4pSU4pSA4pSAIHZlY3MwCj4gICAg ICAgwqDCoCAgICAg4pSc4pSA4pSAIGNsYXNzCj4gICAgICAgwqDCoCAgICAg4pSc4pSA4pSAIGhl YXJ0YmVhdF9pbnRlcnZhbF9tcwo+ICAgICAgIMKgwqAgICAgIOKUnOKUgOKUgCBpbnN0YW5jZQo+ ICAgICAgIMKgwqAgICAgIOKUnOKUgOKUgCBtbWlvX2Jhc2UKPiAgICAgICDCoMKgICAgICDilJTi lIDilIAgbmFtZQo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMt d2lsc29uLmNvLnVrPgo+IENjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51 eC5pbnRlbC5jb20+Cj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5j b20+Cj4gQ2M6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9sb3NwdXJpb0Bp bnRlbC5jb20+Cj4gQ2M6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPiBB Y2tlZC1ieTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+IC0tLQo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgIDMgKy0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9zeXNmcy5jIHwgMTE5ICsrKysr KysrKysrKysrKysrKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9z eXNmcy5oIHwgIDE0ICsrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jICAg ICAgICAgICAgfCAgIDMgKwo+ICAgNCBmaWxlcyBjaGFuZ2VkLCAxMzggaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2VuZ2luZV9zeXNmcy5jCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3N5c2ZzLmgKPiAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmls ZQo+IGluZGV4IGU3OTFkOTMyM2I1MS4uY2Q5YTEwYmEyNTE2IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUKPiBAQCAtNzgsOCArNzgsOSBAQCBndC15ICs9IFwKPiAgIAlndC9pbnRlbF9icmVhZGNy dW1icy5vIFwKPiAgIAlndC9pbnRlbF9jb250ZXh0Lm8gXAo+ICAgCWd0L2ludGVsX2VuZ2luZV9j cy5vIFwKPiAtCWd0L2ludGVsX2VuZ2luZV9wb29sLm8gXAo+ICAgCWd0L2ludGVsX2VuZ2luZV9w bS5vIFwKPiArCWd0L2ludGVsX2VuZ2luZV9wb29sLm8gXAo+ICsJZ3QvaW50ZWxfZW5naW5lX3N5 c2ZzLm8gXAo+ICAgCWd0L2ludGVsX2VuZ2luZV91c2VyLm8gXAo+ICAgCWd0L2ludGVsX2d0Lm8g XAo+ICAgCWd0L2ludGVsX2d0X2lycS5vIFwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZW5naW5lX3N5c2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9lbmdpbmVfc3lzZnMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAw MDAwMDAwLi5jYmU5ZWM1OWJlZWIKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3N5c2ZzLmMKPiBAQCAtMCwwICsxLDExOSBAQAo+ICsv Kgo+ICsgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCj4gKyAqCj4gKyAqIENvcHlyaWdo dCDCqSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxpbnV4 L2tvYmplY3QuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3N5c2ZzLmg+Cj4gKwo+ICsjaW5jbHVkZSAi aTkxNV9kcnYuaCIKPiArI2luY2x1ZGUgImludGVsX2VuZ2luZS5oIgo+ICsjaW5jbHVkZSAiaW50 ZWxfZW5naW5lX3N5c2ZzLmgiCj4gKwo+ICtzdHJ1Y3Qga29ial9lbmdpbmUgewo+ICsJc3RydWN0 IGtvYmplY3QgYmFzZTsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiArfTsK PiArCj4gK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICprb2JqX3RvX2VuZ2luZShzdHJ1 Y3Qga29iamVjdCAqa29iaikKPiArewo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1 Y3Qga29ial9lbmdpbmUsIGJhc2UpLT5lbmdpbmU7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90 Cj4gK25hbWVfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRl ICphdHRyLCBjaGFyICpidWYpCj4gK3sKPiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVzXG4iLCBr b2JqX3RvX2VuZ2luZShrb2JqKS0+bmFtZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90Cj4g K2NsYXNzX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAq YXR0ciwgY2hhciAqYnVmKQo+ICt7Cj4gKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwga29i al90b19lbmdpbmUoa29iaiktPnVhYmlfY2xhc3MpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVf dAo+ICtpbnN0X3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0 ZSAqYXR0ciwgY2hhciAqYnVmKQo+ICt7Cj4gKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwg a29ial90b19lbmdpbmUoa29iaiktPnVhYmlfaW5zdGFuY2UpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg c3NpemVfdAo+ICttbWlvX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0 dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ICt7Cj4gKwlyZXR1cm4gc3ByaW50ZihidWYsICIw eCV4XG4iLCBrb2JqX3RvX2VuZ2luZShrb2JqKS0+bW1pb19iYXNlKTsKPiArfQo+ICsKPiArc3Rh dGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBuYW1lX2F0dHIgPSBfX0FUVFIobmFtZSwgMDQ0NCwg bmFtZV9zaG93LCBOVUxMKTsKPiArc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBjbGFzc19h dHRyID0gX19BVFRSKGNsYXNzLCAwNDQ0LCBjbGFzc19zaG93LCBOVUxMKTsKPiArc3RhdGljIHN0 cnVjdCBrb2JqX2F0dHJpYnV0ZSBpbnN0X2F0dHIgPSBfX0FUVFIoaW5zdGFuY2UsIDA0NDQsIGlu c3Rfc2hvdywgTlVMTCk7Cj4gK3N0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgbW1pb19hdHRy ID0gX19BVFRSKG1taW9fYmFzZSwgMDQ0NCwgbW1pb19zaG93LCBOVUxMKTsKPiArCj4gK3N0YXRp YyB2b2lkIGtvYmpfZW5naW5lX3JlbGVhc2Uoc3RydWN0IGtvYmplY3QgKmtvYmopCj4gK3sKPiAr CWtmcmVlKGtvYmopOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGtvYmpfdHlwZSBrb2JqX2Vu Z2luZV90eXBlID0gewo+ICsJLnJlbGVhc2UgPSBrb2JqX2VuZ2luZV9yZWxlYXNlLAo+ICsJLnN5 c2ZzX29wcyA9ICZrb2JqX3N5c2ZzX29wcwo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBrb2Jq ZWN0ICoKPiAra29ial9lbmdpbmUoc3RydWN0IGtvYmplY3QgKmRpciwgc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+ICt7Cj4gKwlzdHJ1Y3Qga29ial9lbmdpbmUgKmtlOwo+ICsKPiAr CWtlID0ga3phbGxvYyhzaXplb2YoKmtlKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWtlKQo+ICsJ CXJldHVybiBOVUxMOwo+ICsKPiArCWtvYmplY3RfaW5pdCgma2UtPmJhc2UsICZrb2JqX2VuZ2lu ZV90eXBlKTsKPiArCWtlLT5lbmdpbmUgPSBlbmdpbmU7Cj4gKwo+ICsJaWYgKGtvYmplY3RfYWRk KCZrZS0+YmFzZSwgZGlyLCAiJXMiLCBlbmdpbmUtPm5hbWUpKSB7Cj4gKwkJa29iamVjdF9wdXQo JmtlLT5iYXNlKTsKPiArCQlyZXR1cm4gTlVMTDsKPiArCX0KPiArCj4gKwkvKiB4ZmVyIG93bmVy c2hpcCB0byBzeXNmcyB0cmVlICovCj4gKwlyZXR1cm4gJmtlLT5iYXNlOwo+ICt9Cj4gKwo+ICt2 b2lkIGludGVsX2VuZ2luZXNfYWRkX3N5c2ZzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQo+ICt7Cj4gKwlzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqZmlsZXNbXSA9IHsKPiAr CQkmbmFtZV9hdHRyLmF0dHIsCj4gKwkJJmNsYXNzX2F0dHIuYXR0ciwKPiArCQkmaW5zdF9hdHRy LmF0dHIsCj4gKwkJJm1taW9fYXR0ci5hdHRyLAo+ICsJCU5VTEwKPiArCX07Cj4gKwo+ICsJc3Ry dWN0IGRldmljZSAqa2RldiA9IGk5MTUtPmRybS5wcmltYXJ5LT5rZGV2Owo+ICsJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJc3RydWN0IGtvYmplY3QgKmRpcjsKPiArCj4gKwlk aXIgPSBrb2JqZWN0X2NyZWF0ZV9hbmRfYWRkKCJlbmdpbmUiLCAma2Rldi0+a29iaik7Cj4gKwlp ZiAoIWRpcikKPiArCQlyZXR1cm47Cj4gKwo+ICsJZm9yX2VhY2hfdWFiaV9lbmdpbmUoZW5naW5l LCBpOTE1KSB7Cj4gKwkJc3RydWN0IGtvYmplY3QgKmtvYmo7Cj4gKwo+ICsJCWtvYmogPSBrb2Jq X2VuZ2luZShkaXIsIGVuZ2luZSk7Cj4gKwkJaWYgKCFrb2JqKQo+ICsJCQlnb3RvIGVycl9lbmdp bmU7Cj4gKwo+ICsJCWlmIChzeXNmc19jcmVhdGVfZmlsZXMoa29iaiwgZmlsZXMpKQo+ICsJCQln b3RvIGVycl9lbmdpbmU7Cj4gKwo+ICsJCWlmICgwKSB7Cj4gK2Vycl9lbmdpbmU6Cj4gKwkJCWRl dl9lcnIoa2RldiwgIkZhaWxlZCB0byBhZGQgc3lzZnMgZW5naW5lICclcydcbiIsCj4gKwkJCQll bmdpbmUtPm5hbWUpOwo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwl9Cj4gK30KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3N5c2ZzLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfc3lzZnMuaAo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi5lZjQ0YTc0NWI3MGEKPiAtLS0gL2Rldi9udWxsCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3N5c2ZzLmgKPiBAQCAt MCwwICsxLDE0IEBACj4gKy8qCj4gKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKPiAr ICoKPiArICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KPiArICovCj4gKwo+ ICsjaWZuZGVmIElOVEVMX0VOR0lORV9TWVNGU19ICj4gKyNkZWZpbmUgSU5URUxfRU5HSU5FX1NZ U0ZTX0gKPiArCj4gK3N0cnVjdCBkcm1faTkxNV9wcml2YXRlOwo+ICsKPiArdm9pZCBpbnRlbF9l bmdpbmVzX2FkZF9zeXNmcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gKwo+ICsj ZW5kaWYgLyogSU5URUxfRU5HSU5FX1NZU0ZTX0ggKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNm cy5jCj4gaW5kZXggYmYwMzliOGJhNTkzLi43YjY2NWY2OWYzMDEgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zeXNmcy5jCj4gQEAgLTMwLDYgKzMwLDcgQEAKPiAgICNpbmNsdWRlIDxsaW51eC9z dGF0Lmg+Cj4gICAjaW5jbHVkZSA8bGludXgvc3lzZnMuaD4KPiAgIAo+ICsjaW5jbHVkZSAiZ3Qv aW50ZWxfZW5naW5lX3N5c2ZzLmgiCj4gICAjaW5jbHVkZSAiZ3QvaW50ZWxfcmM2LmgiCj4gICAK PiAgICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+IEBAIC02MTYsNiArNjE3LDggQEAgdm9pZCBpOTE1 X3NldHVwX3N5c2ZzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkJRFJN X0VSUk9SKCJSUFMgc3lzZnMgc2V0dXAgZmFpbGVkXG4iKTsKPiAgIAo+ICAgCWk5MTVfc2V0dXBf ZXJyb3JfY2FwdHVyZShrZGV2KTsKPiArCj4gKwlpbnRlbF9lbmdpbmVzX2FkZF9zeXNmcyhkZXZf cHJpdik7Cj4gICB9Cj4gICAKPiAgIHZvaWQgaTkxNV90ZWFyZG93bl9zeXNmcyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeA==