From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zeng, Oak" Subject: [PATCH 3/4] drm/amdkfd: Refactor create_queue_nocpsch Date: Fri, 31 May 2019 21:19:08 +0000 Message-ID: <1559337538-14249-3-git-send-email-Oak.Zeng@amd.com> References: <1559337538-14249-1-git-send-email-Oak.Zeng@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1559337538-14249-1-git-send-email-Oak.Zeng-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" Cc: "Zhao, Yong" , "Kuehling, Felix" , "Freehill, Chris" , "Zeng, Oak" , "Liu, Alex" VGhpcyBpcyBwcmVwYXJlIHdvcmsgdG8gZml4IGEgY2lyY3VsYXIgbG9jayBkZXBlbmRlbmN5Lg0K Tm8gbG9naWMgY2hhbmdlDQoNCkNoYW5nZS1JZDogSTRlMGVlOTE4MjYwZTc3ODBkZTk3MmRkNzFm NGNlNzg3YjRmNmRkZTkNClNpZ25lZC1vZmYtYnk6IE9hayBaZW5nIDxPYWsuWmVuZ0BhbWQuY29t Pg0KLS0tDQogLi4uL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIu YyAgfCAxNzIgKysrKysrKystLS0tLS0tLS0tLS0tDQogMSBmaWxlIGNoYW5nZWQsIDYyIGluc2Vy dGlvbnMoKyksIDExMCBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5jIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMNCmluZGV4IDc0OTQ0ZWMuLmFh YzdmN2IgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNl X3F1ZXVlX21hbmFnZXIuYw0KKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2Rl dmljZV9xdWV1ZV9tYW5hZ2VyLmMNCkBAIC00MiwxMCArNDIsNiBAQA0KIHN0YXRpYyBpbnQgc2V0 X3Bhc2lkX3ZtaWRfbWFwcGluZyhzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwNCiAJ CQkJCXVuc2lnbmVkIGludCBwYXNpZCwgdW5zaWduZWQgaW50IHZtaWQpOw0KIA0KLXN0YXRpYyBp bnQgY3JlYXRlX2NvbXB1dGVfcXVldWVfbm9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFn ZXIgKmRxbSwNCi0JCQkJCXN0cnVjdCBxdWV1ZSAqcSwNCi0JCQkJCXN0cnVjdCBxY21fcHJvY2Vz c19kZXZpY2UgKnFwZCk7DQotDQogc3RhdGljIGludCBleGVjdXRlX3F1ZXVlc19jcHNjaChzdHJ1 Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwNCiAJCQkJZW51bSBrZmRfdW5tYXBfcXVldWVz X2ZpbHRlciBmaWx0ZXIsDQogCQkJCXVpbnQzMl90IGZpbHRlcl9wYXJhbSk7DQpAQCAtNTUsMTUg KzUxLDE2IEBAIHN0YXRpYyBpbnQgdW5tYXBfcXVldWVzX2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVl dWVfbWFuYWdlciAqZHFtLA0KIA0KIHN0YXRpYyBpbnQgbWFwX3F1ZXVlc19jcHNjaChzdHJ1Y3Qg ZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSk7DQogDQotc3RhdGljIGludCBjcmVhdGVfc2RtYV9x dWV1ZV9ub2Nwc2NoKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLA0KLQkJCQkJc3Ry dWN0IHF1ZXVlICpxLA0KLQkJCQkJc3RydWN0IHFjbV9wcm9jZXNzX2RldmljZSAqcXBkKTsNCi0N CiBzdGF0aWMgdm9pZCBkZWFsbG9jYXRlX3NkbWFfcXVldWUoc3RydWN0IGRldmljZV9xdWV1ZV9t YW5hZ2VyICpkcW0sDQogCQkJCXN0cnVjdCBxdWV1ZSAqcSk7DQogc3RhdGljIHZvaWQgZGVhbGxv Y2F0ZV9zZG1hX3F1ZXVlX2xvY2tlZChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwN CiAJCQkJc3RydWN0IHF1ZXVlICpxKTsNCiANCitzdGF0aWMgaW5saW5lIHZvaWQgZGVhbGxvY2F0 ZV9ocWQoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sDQorCQkJCXN0cnVjdCBxdWV1 ZSAqcSk7DQorc3RhdGljIGludCBhbGxvY2F0ZV9ocWQoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5h Z2VyICpkcW0sIHN0cnVjdCBxdWV1ZSAqcSk7DQorc3RhdGljIGludCBhbGxvY2F0ZV9zZG1hX3F1 ZXVlKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLA0KKwkJCQlzdHJ1Y3QgcXVldWUg KnEpOw0KIHN0YXRpYyB2b2lkIGtmZF9wcm9jZXNzX2h3X2V4Y2VwdGlvbihzdHJ1Y3Qgd29ya19z dHJ1Y3QgKndvcmspOw0KIA0KIHN0YXRpYyBpbmxpbmUNCkBAIC0yNzIsNiArMjY5LDcgQEAgc3Rh dGljIGludCBjcmVhdGVfcXVldWVfbm9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIg KmRxbSwNCiAJCQkJc3RydWN0IHFjbV9wcm9jZXNzX2RldmljZSAqcXBkKQ0KIHsNCiAJaW50IHJl dHZhbDsNCisJc3RydWN0IG1xZF9tYW5hZ2VyICptcWRfbWdyOw0KIA0KIAlwcmludF9xdWV1ZShx KTsNCiANCkBAIC0zMDIsMTggKzMwMCw1MSBAQCBzdGF0aWMgaW50IGNyZWF0ZV9xdWV1ZV9ub2Nw c2NoKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLA0KIAlxLT5wcm9wZXJ0aWVzLnRi YV9hZGRyID0gcXBkLT50YmFfYWRkcjsNCiAJcS0+cHJvcGVydGllcy50bWFfYWRkciA9IHFwZC0+ dG1hX2FkZHI7DQogDQorCW1xZF9tZ3IgPSBkcW0tPm1xZF9tZ3JzW2dldF9tcWRfdHlwZV9mcm9t X3F1ZXVlX3R5cGUoDQorCQkJcS0+cHJvcGVydGllcy50eXBlKV07DQogCWlmIChxLT5wcm9wZXJ0 aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfQ09NUFVURSkNCi0JCXJldHZhbCA9IGNyZWF0ZV9j b21wdXRlX3F1ZXVlX25vY3BzY2goZHFtLCBxLCBxcGQpOw0KLQllbHNlIGlmIChxLT5wcm9wZXJ0 aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQSB8fA0KLQkJCXEtPnByb3BlcnRpZXMudHlw ZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1BX1hHTUkpDQotCQlyZXR2YWwgPSBjcmVhdGVfc2RtYV9x dWV1ZV9ub2Nwc2NoKGRxbSwgcSwgcXBkKTsNCi0JZWxzZQ0KLQkJcmV0dmFsID0gLUVJTlZBTDsN CisJew0KKwkJcmV0dmFsID0gYWxsb2NhdGVfaHFkKGRxbSwgcSk7DQorCQlpZiAocmV0dmFsKQ0K KwkJCWdvdG8gZGVhbGxvY2F0ZV92bWlkOw0KKwl9IGVsc2UgaWYgKHEtPnByb3BlcnRpZXMudHlw ZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1BIHx8DQorCQlxLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZE X1FVRVVFX1RZUEVfU0RNQV9YR01JKSB7DQorCQlyZXR2YWwgPSBhbGxvY2F0ZV9zZG1hX3F1ZXVl KGRxbSwgcSk7DQorCQlpZiAocmV0dmFsKQ0KKwkJCWdvdG8gZGVhbGxvY2F0ZV92bWlkOw0KKwkJ ZHFtLT5hc2ljX29wcy5pbml0X3NkbWFfdm0oZHFtLCBxLCBxcGQpOw0KKwl9DQogDQotCWlmIChy ZXR2YWwpIHsNCi0JCWlmIChsaXN0X2VtcHR5KCZxcGQtPnF1ZXVlc19saXN0KSkNCi0JCQlkZWFs bG9jYXRlX3ZtaWQoZHFtLCBxcGQsIHEpOw0KLQkJZ290byBvdXRfdW5sb2NrOw0KKwlyZXR2YWwg PSBhbGxvY2F0ZV9kb29yYmVsbChxcGQsIHEpOw0KKwlpZiAocmV0dmFsKQ0KKwkJZ290byBvdXRf ZGVhbGxvY2F0ZV9ocWQ7DQorDQorCXJldHZhbCA9IG1xZF9tZ3ItPmluaXRfbXFkKG1xZF9tZ3Is ICZxLT5tcWQsICZxLT5tcWRfbWVtX29iaiwNCisJCQkJJnEtPmdhcnRfbXFkX2FkZHIsICZxLT5w cm9wZXJ0aWVzKTsNCisJaWYgKHJldHZhbCkNCisJCWdvdG8gb3V0X2RlYWxsb2NhdGVfZG9vcmJl bGw7DQorDQorCXByX2RlYnVnKCJMb2FkaW5nIG1xZCB0byBocWQgb24gcGlwZSAlZCwgcXVldWUg JWRcbiIsDQorCQkJcS0+cGlwZSwgcS0+cXVldWUpOw0KKw0KKwlpZiAocS0+cHJvcGVydGllcy50 eXBlID09IEtGRF9RVUVVRV9UWVBFX0NPTVBVVEUpDQorCQlkcW0tPmRldi0+a2ZkMmtnZC0+c2V0 X3NjcmF0Y2hfYmFja2luZ192YSgNCisJCQlkcW0tPmRldi0+a2dkLCBxcGQtPnNoX2hpZGRlbl9w cml2YXRlX2Jhc2UsIHFwZC0+dm1pZCk7DQorDQorCWlmIChxLT5wcm9wZXJ0aWVzLmlzX2FjdGl2 ZSkgew0KKw0KKwkJaWYgKFdBUk4ocS0+cHJvY2Vzcy0+bW0gIT0gY3VycmVudC0+bW0sDQorCQkJ CQkic2hvdWxkIG9ubHkgcnVuIGluIHVzZXIgdGhyZWFkIikpDQorCQkJcmV0dmFsID0gLUVGQVVM VDsNCisJCWVsc2UNCisJCQkvKiBUT0RPIGZvciBzZG1hIHF1ZXVlIGxvYWQgbXFkIHdhcyBjYWxs ZWQNCisJCQkgKiB1bmNvbmRpdGlvbmFsbHkgaW4gb3JpZ2luYWwgY29kZSwgd2l0aCBtbV9zdHJ1 Y3Qgc2V0DQorCQkJICogdG8gTlVMTC4gSSBhbSBub3Qgc3VyZSB3aGV0aGVyIHdlIG5lZWQgdG8g a2VlcA0KKwkJCSAqIG9yaWdpbmFsIGxvZ2ljIGhlcmUgKi8NCisJCQlyZXR2YWwgPSBtcWRfbWdy LT5sb2FkX21xZChtcWRfbWdyLCBxLT5tcWQsIHEtPnBpcGUsIHEtPnF1ZXVlLA0KKwkJCQkJJnEt PnByb3BlcnRpZXMsIGN1cnJlbnQtPm1tKTsNCisJCWlmIChyZXR2YWwpDQorCQkJZ290byBvdXRf dW5pbml0X21xZDsNCiAJfQ0KIA0KIAlsaXN0X2FkZCgmcS0+bGlzdCwgJnFwZC0+cXVldWVzX2xp c3QpOw0KQEAgLTMzNCw2ICszNjUsMTkgQEAgc3RhdGljIGludCBjcmVhdGVfcXVldWVfbm9jcHNj aChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwNCiAJcHJfZGVidWcoIlRvdGFsIG9m ICVkIHF1ZXVlcyBhcmUgYWNjb3VudGFibGUgc28gZmFyXG4iLA0KIAkJCWRxbS0+dG90YWxfcXVl dWVfY291bnQpOw0KIA0KK291dF91bmluaXRfbXFkOg0KKwltcWRfbWdyLT51bmluaXRfbXFkKG1x ZF9tZ3IsIHEtPm1xZCwgcS0+bXFkX21lbV9vYmopOw0KK291dF9kZWFsbG9jYXRlX2Rvb3JiZWxs Og0KKwlkZWFsbG9jYXRlX2Rvb3JiZWxsKHFwZCwgcSk7DQorb3V0X2RlYWxsb2NhdGVfaHFkOg0K KwlpZiAocS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBFX0NPTVBVVEUpDQorCQlk ZWFsbG9jYXRlX2hxZChkcW0sIHEpOw0KKwllbHNlIGlmIChxLT5wcm9wZXJ0aWVzLnR5cGUgPT0g S0ZEX1FVRVVFX1RZUEVfU0RNQSB8fA0KKwkJcS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVV RV9UWVBFX1NETUFfWEdNSSkNCisJCWRlYWxsb2NhdGVfc2RtYV9xdWV1ZV9sb2NrZWQoZHFtLCBx KTsNCitkZWFsbG9jYXRlX3ZtaWQ6DQorCWlmIChsaXN0X2VtcHR5KCZxcGQtPnF1ZXVlc19saXN0 KSkNCisJCWRlYWxsb2NhdGVfdm1pZChkcW0sIHFwZCwgcSk7DQogb3V0X3VubG9jazoNCiAJZHFt X3VubG9jayhkcW0pOw0KIAlyZXR1cm4gcmV0dmFsOw0KQEAgLTM3OSw1OCArNDIzLDYgQEAgc3Rh dGljIGlubGluZSB2b2lkIGRlYWxsb2NhdGVfaHFkKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdl ciAqZHFtLA0KIAlkcW0tPmFsbG9jYXRlZF9xdWV1ZXNbcS0+cGlwZV0gfD0gKDEgPDwgcS0+cXVl dWUpOw0KIH0NCiANCi1zdGF0aWMgaW50IGNyZWF0ZV9jb21wdXRlX3F1ZXVlX25vY3BzY2goc3Ry dWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sDQotCQkJCQlzdHJ1Y3QgcXVldWUgKnEsDQot CQkJCQlzdHJ1Y3QgcWNtX3Byb2Nlc3NfZGV2aWNlICpxcGQpDQotew0KLQlzdHJ1Y3QgbXFkX21h bmFnZXIgKm1xZF9tZ3I7DQotCWludCByZXR2YWw7DQotDQotCW1xZF9tZ3IgPSBkcW0tPm1xZF9t Z3JzW0tGRF9NUURfVFlQRV9DT01QVVRFXTsNCi0NCi0JcmV0dmFsID0gYWxsb2NhdGVfaHFkKGRx bSwgcSk7DQotCWlmIChyZXR2YWwpDQotCQlyZXR1cm4gcmV0dmFsOw0KLQ0KLQlyZXR2YWwgPSBh bGxvY2F0ZV9kb29yYmVsbChxcGQsIHEpOw0KLQlpZiAocmV0dmFsKQ0KLQkJZ290byBvdXRfZGVh bGxvY2F0ZV9ocWQ7DQotDQotCXJldHZhbCA9IG1xZF9tZ3ItPmluaXRfbXFkKG1xZF9tZ3IsICZx LT5tcWQsICZxLT5tcWRfbWVtX29iaiwNCi0JCQkJJnEtPmdhcnRfbXFkX2FkZHIsICZxLT5wcm9w ZXJ0aWVzKTsNCi0JaWYgKHJldHZhbCkNCi0JCWdvdG8gb3V0X2RlYWxsb2NhdGVfZG9vcmJlbGw7 DQotDQotCXByX2RlYnVnKCJMb2FkaW5nIG1xZCB0byBocWQgb24gcGlwZSAlZCwgcXVldWUgJWRc biIsDQotCQkJcS0+cGlwZSwgcS0+cXVldWUpOw0KLQ0KLQlkcW0tPmRldi0+a2ZkMmtnZC0+c2V0 X3NjcmF0Y2hfYmFja2luZ192YSgNCi0JCQlkcW0tPmRldi0+a2dkLCBxcGQtPnNoX2hpZGRlbl9w cml2YXRlX2Jhc2UsIHFwZC0+dm1pZCk7DQotDQotCWlmICghcS0+cHJvcGVydGllcy5pc19hY3Rp dmUpDQotCQlyZXR1cm4gMDsNCi0NCi0JaWYgKFdBUk4ocS0+cHJvY2Vzcy0+bW0gIT0gY3VycmVu dC0+bW0sDQotCQkgInNob3VsZCBvbmx5IHJ1biBpbiB1c2VyIHRocmVhZCIpKQ0KLQkJcmV0dmFs ID0gLUVGQVVMVDsNCi0JZWxzZQ0KLQkJcmV0dmFsID0gbXFkX21nci0+bG9hZF9tcWQobXFkX21n ciwgcS0+bXFkLCBxLT5waXBlLCBxLT5xdWV1ZSwNCi0JCQkJCSAgICZxLT5wcm9wZXJ0aWVzLCBj dXJyZW50LT5tbSk7DQotCWlmIChyZXR2YWwpDQotCQlnb3RvIG91dF91bmluaXRfbXFkOw0KLQ0K LQlyZXR1cm4gMDsNCi0NCi1vdXRfdW5pbml0X21xZDoNCi0JbXFkX21nci0+dW5pbml0X21xZCht cWRfbWdyLCBxLT5tcWQsIHEtPm1xZF9tZW1fb2JqKTsNCi1vdXRfZGVhbGxvY2F0ZV9kb29yYmVs bDoNCi0JZGVhbGxvY2F0ZV9kb29yYmVsbChxcGQsIHEpOw0KLW91dF9kZWFsbG9jYXRlX2hxZDoN Ci0JZGVhbGxvY2F0ZV9ocWQoZHFtLCBxKTsNCi0NCi0JcmV0dXJuIHJldHZhbDsNCi19DQotDQog LyogQWNjZXNzIHRvIERRTSBoYXMgdG8gYmUgbG9ja2VkIGJlZm9yZSBjYWxsaW5nIGRlc3Ryb3lf cXVldWVfbm9jcHNjaF9sb2NrZWQNCiAgKiB0byBhdm9pZCBhc3luY2hyb25pemVkIGFjY2Vzcw0K ICAqLw0KQEAgLTk5MSw0NiArOTgzLDYgQEAgc3RhdGljIHZvaWQgZGVhbGxvY2F0ZV9zZG1hX3F1 ZXVlKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLA0KIAl9DQogfQ0KIA0KLXN0YXRp YyBpbnQgY3JlYXRlX3NkbWFfcXVldWVfbm9jcHNjaChzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFn ZXIgKmRxbSwNCi0JCQkJCXN0cnVjdCBxdWV1ZSAqcSwNCi0JCQkJCXN0cnVjdCBxY21fcHJvY2Vz c19kZXZpY2UgKnFwZCkNCi17DQotCXN0cnVjdCBtcWRfbWFuYWdlciAqbXFkX21ncjsNCi0JaW50 IHJldHZhbDsNCi0NCi0JbXFkX21nciA9IGRxbS0+bXFkX21ncnNbS0ZEX01RRF9UWVBFX1NETUFd Ow0KLQ0KLQlyZXR2YWwgPSBhbGxvY2F0ZV9zZG1hX3F1ZXVlKGRxbSwgcSk7DQotCWlmIChyZXR2 YWwpDQotCQlyZXR1cm4gcmV0dmFsOw0KLQ0KLQlyZXR2YWwgPSBhbGxvY2F0ZV9kb29yYmVsbChx cGQsIHEpOw0KLQlpZiAocmV0dmFsKQ0KLQkJZ290byBvdXRfZGVhbGxvY2F0ZV9zZG1hX3F1ZXVl X2xvY2tlZDsNCi0NCi0JZHFtLT5hc2ljX29wcy5pbml0X3NkbWFfdm0oZHFtLCBxLCBxcGQpOw0K LQlyZXR2YWwgPSBtcWRfbWdyLT5pbml0X21xZChtcWRfbWdyLCAmcS0+bXFkLCAmcS0+bXFkX21l bV9vYmosDQotCQkJCSZxLT5nYXJ0X21xZF9hZGRyLCAmcS0+cHJvcGVydGllcyk7DQotCWlmIChy ZXR2YWwpDQotCQlnb3RvIG91dF9kZWFsbG9jYXRlX2Rvb3JiZWxsOw0KLQ0KLQlyZXR2YWwgPSBt cWRfbWdyLT5sb2FkX21xZChtcWRfbWdyLCBxLT5tcWQsIDAsIDAsICZxLT5wcm9wZXJ0aWVzLA0K LQkJCQlOVUxMKTsNCi0JaWYgKHJldHZhbCkNCi0JCWdvdG8gb3V0X3VuaW5pdF9tcWQ7DQotDQot CXJldHVybiAwOw0KLQ0KLW91dF91bmluaXRfbXFkOg0KLQltcWRfbWdyLT51bmluaXRfbXFkKG1x ZF9tZ3IsIHEtPm1xZCwgcS0+bXFkX21lbV9vYmopOw0KLW91dF9kZWFsbG9jYXRlX2Rvb3JiZWxs Og0KLQlkZWFsbG9jYXRlX2Rvb3JiZWxsKHFwZCwgcSk7DQotb3V0X2RlYWxsb2NhdGVfc2RtYV9x dWV1ZV9sb2NrZWQ6DQotCWRlYWxsb2NhdGVfc2RtYV9xdWV1ZV9sb2NrZWQoZHFtLCBxKTsNCi0N Ci0JcmV0dXJuIHJldHZhbDsNCi19DQotDQogLyoNCiAgKiBEZXZpY2UgUXVldWUgTWFuYWdlciBp bXBsZW1lbnRhdGlvbiBmb3IgY3Agc2NoZWR1bGVyDQogICovDQotLSANCjIuNy40DQoNCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGlu ZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeA==