From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Lis, Tomasz" Subject: Re: [PATCH v1] drm/i915/gen11: Preempt-to-idle support in execlists. Date: Thu, 12 Apr 2018 19:15:24 +0200 Message-ID: References: <1522163879-10837-1-git-send-email-tomasz.lis@intel.com> <152219323026.10679.15841903313103368914@mail.alporthouse.com> <5581c977-566e-b679-9602-814ee0390f7d@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id C8A276E070 for ; Thu, 12 Apr 2018 17:15:26 +0000 (UTC) In-Reply-To: <5581c977-566e-b679-9602-814ee0390f7d@intel.com> 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: Daniele Ceraolo Spurio , Chris Wilson , intel-gfx@lists.freedesktop.org Cc: mika.kuoppala@intel.com List-Id: intel-gfx@lists.freedesktop.org CgpPbiAyMDE4LTAzLTMwIDIwOjIzLCBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIHdyb3RlOgo+Cj4K PiBPbiAyNy8wMy8xOCAxNjoyNywgQ2hyaXMgV2lsc29uIHdyb3RlOgo+PiBRdW90aW5nIFRvbWFz eiBMaXMgKDIwMTgtMDMtMjcgMTY6MTc6NTkpCj4+PiBUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IG9m IHByZWVtcHQtdG8taWRsZSByZXF1ZXN0aW5nIGJ5IHNldHRpbmcgYSAKPj4+IHByb3Blcgo+Pj4g Yml0IHdpdGhpbiBFeGVjbGlzdCBDb250cm9sIFJlZ2lzdGVyLCBhbmQgcmVjZWl2aW5nIHByZWVt cHRpb24gCj4+PiByZXN1bHQgZnJvbQo+Pj4gQ29udGV4dCBTdGF0dXMgQnVmZmVyLgo+Pj4KPj4+ IFByZWVtcHRpb24gaW4gcHJldmlvdXMgZ2VucyByZXF1aXJlZCBhIHNwZWNpYWwgYmF0Y2ggYnVm ZmVyIHRvIGJlIAo+Pj4gZXhlY3V0ZWQsCj4+PiBzbyB0aGUgQ29tbWFuZCBTdHJlYW1lciBuZXZl ciBwcmVlbXB0ZWQgdG8gaWRsZSBkaXJlY3RseS4gSW4gSWNlbGFrZSAKPj4+IGl0IGlzCj4+PiBw b3NzaWJsZSwgYXMgdGhlcmUgaXMgYSBoYXJkd2FyZSBtZWNoYW5pc20gdG8gaW5mb3JtIHRoZSBr ZXJuZWwgYWJvdXQKPj4+IHN0YXR1cyBvZiB0aGUgcHJlZW1wdGlvbiByZXF1ZXN0Lgo+Pj4KPj4+ IFRoaXMgcGF0Y2ggZG9lcyBub3QgY292ZXIgdXNpbmcgdGhlIG5ldyBwcmVlbXB0aW9uIG1lY2hh bmlzbSB3aGVuIAo+Pj4gR3VDIGlzCj4+PiBhY3RpdmUuCj4+Pgo+Pj4gQnNwZWM6IDE4OTIyCj4+ PiBTaWduZWQtb2ZmLWJ5OiBUb21hc3ogTGlzIDx0b21hc3oubGlzQGludGVsLmNvbT4KPj4+IC0t LQo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaMKgwqDCoMKgwqDCoMKgwqDC oCB8wqAgMiArKwo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuY8KgwqDCoMKg wqDCoMKgwqDCoCB8wqAgMyArKy0KPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rl dmljZV9pbmZvLmggfMKgIDEgKwo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmPCoMKgwqDCoMKgwqDCoMKgIHwgNDUgCj4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLQo+Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmjCoMKgwqDCoMKgwqDC oMKgIHzCoCAxICsKPj4+IMKgIDUgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgNyBk ZWxldGlvbnMoLSkKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+Pj4gaW5kZXgg ODAwMjMwYi4uYzMyNTgwYiAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4+IEBA IC0yNTE0LDYgKzI1MTQsOCBAQCBpbnRlbF9pbmZvKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlIAo+Pj4gKmRldl9wcml2KQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg KChkZXZfcHJpdiktPmluZm8uaGFzX2xvZ2ljYWxfcmluZ19lbHNxKQo+Pj4gwqAgI2RlZmluZSBI QVNfTE9HSUNBTF9SSU5HX1BSRUVNUFRJT04oZGV2X3ByaXYpIFwKPj4+ICgoZGV2X3ByaXYpLT5p bmZvLmhhc19sb2dpY2FsX3JpbmdfcHJlZW1wdGlvbikKPj4+ICsjZGVmaW5lIEhBU19IV19QUkVF TVBUX1RPX0lETEUoZGV2X3ByaXYpIFwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICgoZGV2X3ByaXYpLT5pbmZvLmhhc19od19wcmVlbXB0X3RvX2lkbGUpCj4+PiDCoCDCoCAjZGVm aW5lIEhBU19FWEVDTElTVFMoZGV2X3ByaXYpIEhBU19MT0dJQ0FMX1JJTkdfQ09OVEVYVFMoZGV2 X3ByaXYpCj4+PiDCoCBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2ku YyAKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+Pj4gaW5kZXggNDM2NDky Mi4uNjZiNjcwMCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNp LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKPj4+IEBAIC01OTUs NyArNTk1LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyAKPj4+IGlu dGVsX2Nhbm5vbmxha2VfaW5mbyA9IHsKPj4+IMKgwqDCoMKgwqDCoMKgwqAgR0VOKDExKSwgXAo+ Pj4gwqDCoMKgwqDCoMKgwqDCoCAuZGRiX3NpemUgPSAyMDQ4LCBcCj4+PiDCoMKgwqDCoMKgwqDC oMKgIC5oYXNfY3NyID0gMCwgXAo+Pj4gLcKgwqDCoMKgwqDCoCAuaGFzX2xvZ2ljYWxfcmluZ19l bHNxID0gMQo+Pj4gK8KgwqDCoMKgwqDCoCAuaGFzX2xvZ2ljYWxfcmluZ19lbHNxID0gMSwgXAo+ Pj4gK8KgwqDCoMKgwqDCoCAuaGFzX2h3X3ByZWVtcHRfdG9faWRsZSA9IDEKPj4+IMKgIMKgIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gaW50ZWxfaWNlbGFrZV8xMV9pbmZv ID0gewo+Pj4gwqDCoMKgwqDCoMKgwqDCoCBHRU4xMV9GRUFUVVJFUywKPj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5oIAo+Pj4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5oCj4+PiBpbmRleCA5MzNlMzE2Li40ZWI5 N2I1IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2lu Zm8uaAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uaAo+ Pj4gQEAgLTk4LDYgKzk4LDcgQEAgZW51bSBpbnRlbF9wbGF0Zm9ybSB7Cj4+PiDCoMKgwqDCoMKg wqDCoMKgIGZ1bmMoaGFzX2xvZ2ljYWxfcmluZ19jb250ZXh0cyk7IFwKPj4+IMKgwqDCoMKgwqDC oMKgwqAgZnVuYyhoYXNfbG9naWNhbF9yaW5nX2Vsc3EpOyBcCj4+PiDCoMKgwqDCoMKgwqDCoMKg IGZ1bmMoaGFzX2xvZ2ljYWxfcmluZ19wcmVlbXB0aW9uKTsgXAo+Pj4gK8KgwqDCoMKgwqDCoCBm dW5jKGhhc19od19wcmVlbXB0X3RvX2lkbGUpOyBcCj4+PiDCoMKgwqDCoMKgwqDCoMKgIGZ1bmMo aGFzX292ZXJsYXkpOyBcCj4+PiDCoMKgwqDCoMKgwqDCoMKgIGZ1bmMoaGFzX3Bvb2xlZF9ldSk7 IFwKPj4+IMKgwqDCoMKgwqDCoMKgwqAgZnVuYyhoYXNfcHNyKTsgXAo+Pj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuYwo+Pj4gaW5kZXggYmE3Zjc4My4uMWEyMmRlNCAxMDA2NDQKPj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+Pj4gQEAgLTE1Myw2ICsxNTMsNyBAQAo+Pj4gwqAgI2Rl ZmluZSBHRU44X0NUWF9TVEFUVVNfQUNUSVZFX0lETEXCoMKgwqAgKDEgPDwgMykKPj4+IMKgICNk ZWZpbmUgR0VOOF9DVFhfU1RBVFVTX0NPTVBMRVRFwqDCoMKgwqDCoMKgICgxIDw8IDQpCj4+PiDC oCAjZGVmaW5lIEdFTjhfQ1RYX1NUQVRVU19MSVRFX1JFU1RPUkXCoMKgICgxIDw8IDE1KQo+Pj4g KyNkZWZpbmUgR0VOMTFfQ1RYX1NUQVRVU19QUkVFTVBUX0lETEXCoCAoMSA8PCAyOSkKPj4+IMKg IMKgICNkZWZpbmUgR0VOOF9DVFhfU1RBVFVTX0NPTVBMRVRFRF9NQVNLIFwKPj4+IMKgwqDCoMKg wqDCoMKgwqDCoCAoR0VOOF9DVFhfU1RBVFVTX0NPTVBMRVRFIHwgR0VOOF9DVFhfU1RBVFVTX1BS RUVNUFRFRCkKPj4+IEBAIC0xODMsNyArMTg0LDkgQEAgc3RhdGljIGlubGluZSBib29sIG5lZWRf cHJlZW1wdChjb25zdCBzdHJ1Y3QgCj4+PiBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqbGFzdCwKPj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IHBy aW8pCj4+PiDCoCB7Cj4+PiAtwqDCoMKgwqDCoMKgIHJldHVybiBlbmdpbmUtPmk5MTUtPnByZWVt cHRfY29udGV4dCAmJiBwcmlvID4gCj4+PiBtYXgocnFfcHJpbyhsYXN0KSwgMCk7Cj4+PiArwqDC oMKgwqDCoMKgIHJldHVybiAoZW5naW5lLT5pOTE1LT5wcmVlbXB0X2NvbnRleHQgfHwKPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEhBU19IV19QUkVFTVBUX1RPX0lETEUoZW5naW5l LT5pOTE1KSkgJiYKPj4KPj4gV2VsbCwgeW91IGhhdmVuJ3QgYWN0dWFsbHkgZGlzYWJsZWQgYWxs b2NhdGluZyB0aGUgcHJlZW1wdF9jb250ZXh0IHNvLi4uCj4+Cj4+IEJ1dCBhdCBhbnkgcmF0ZSwg bWFraW5nIHRoaXMgYW4gZW5naW5lLT5mbGFnIHdvdWxkIGVsaW1pbmF0ZSBvbmUgcG9pbnRlcgo+ PiBkYW5jZS4KPj4KPgo+IENhbid0IHdlIHJlLXVzZSBJOTE1X1NDSEVEVUxFUl9DQVBfUFJFRU1Q VElPTiBpbiAKPiBlbmdpbmUtPmk5MTUtPmNhcHMuc2NoZWR1bGVyPyBUaGF0IGJ0dyBsaWtlIGhl cmUgdG8gYmUgc2V0IGlmIAo+IGk5MTUtPnByZWVtcHRfY29udGV4dCB8fCBIQVNfSFdfUFJFRU1Q VF9UT19JRExFKGk5MTUpClRoZSBlbmdpbmUtPmZsYWcgd2hpY2ggQ2hyaXMgaW50cm9kdWNlZCBp cyBub3cgdXNlZCB0byBzZXQgCkk5MTVfU0NIRURVTEVSX0NBUF9QUkVFTVBUSU9OLgo+Cj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByaW8gPiBtYXgocnFfcHJpbyhsYXN0KSwg MCk7Cj4+PiDCoCB9Cj4+PiDCoCDCoCAvKioKPj4+IEBAIC01MzUsNiArNTM4LDI1IEBAIHN0YXRp YyB2b2lkIGluamVjdF9wcmVlbXB0X2NvbnRleHQoc3RydWN0IAo+Pj4gaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpCj4+PiDCoMKgwqDCoMKgwqDCoMKgIGV4ZWNsaXN0c19zZXRfYWN0aXZlKCZlbmdp bmUtPmV4ZWNsaXN0cywgCj4+PiBFWEVDTElTVFNfQUNUSVZFX1BSRUVNUFQpOwo+Pj4gwqAgfQo+ Pj4gwqAgK3N0YXRpYyB2b2lkIGdlbjExX3ByZWVtcHRfdG9faWRsZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4+PiArewo+Pj4gK8KgwqDCoMKgwqDCoCBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2V4ZWNsaXN0cyAqZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOwo+Pj4gKwo+Pj4g K8KgwqDCoMKgwqDCoCBHRU1fVFJBQ0UoIiVzXG4iLCBlbmdpbmUtPm5hbWUpOwo+Pj4gKwo+Pj4g K8KgwqDCoMKgwqDCoCAvKgo+Pj4gK8KgwqDCoMKgwqDCoMKgICogaGFyZHdhcmUgd2hpY2ggSEFT X0hXX1BSRUVNUFRfVE9fSURMRSgpLCBhbHdheXMgYWxzbwo+Pj4gK8KgwqDCoMKgwqDCoMKgICog SEFTX0xPR0lDQUxfUklOR19FTFNRKCksIHNvIHdlIGNhbiBhc3N1bWUgY3RybF9yZWcgaXMgc2V0 Cj4+PiArwqDCoMKgwqDCoMKgwqAgKi8KPj4+ICvCoMKgwqDCoMKgwqAgR0VNX0JVR19PTihleGVj bGlzdHMtPmN0cmxfcmVnICE9IE5VTEwpOwo+Cj4gU2hvdWxkbid0IHRoaXMgY2hlY2sgYmUgdGhl IG90aGVyIHdheSBhcm91bmQ/Cldvdy4gSSBoYXZlIG5vIGlkZWEgaG93IEkgd2FzIGFibGUgdG8g dGVzdCB0aGlzIHBhdGNoIGFuZCBub3QgdHJpZ2dlciAKdGhpcy4gWW91IGFyZSByaWdodC4KPgo+ Pj4gKwo+Pj4gK8KgwqDCoMKgwqDCoCAvKiB0cmlnZ2VyIHByZWVtcHRpb24gdG8gaWRsZSAqLwo+ Pj4gK8KgwqDCoMKgwqDCoCB3cml0ZWwoRUxfQ1RSTF9QUkVFTVBUX1RPX0lETEUsIGV4ZWNsaXN0 cy0+Y3RybF9yZWcpOwo+Pgo+PiBGdXR1cmUgcGxhbnM/IEJlY2F1c2UganVzdCBpbnNlcnRpbmcg dGhlIGJyYW5jaCBpbnRvIHRoZSBzZXR0ZXIgb2YKPj4gaW5qZWN0X3ByZWVtcHRfY29udGV4dCgp IHJlc29sdmVzIGEgbG90IG9mIGNvbmZsaWN0cyB3aXRoIG90aGVyIHdvcmsuCj4+Cj4+PiBAQCAt OTYyLDEwICs5ODcsMTMgQEAgc3RhdGljIHZvaWQgCj4+PiBleGVjbGlzdHNfc3VibWlzc2lvbl90 YXNrbGV0KHVuc2lnbmVkIGxvbmcgZGF0YSkKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0YXR1cywgYnVmWzIq aGVhZCArIDFdLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXhlY2xpc3RzLT5hY3RpdmUpOwo+Pj4gwqAgLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChzdGF0dXMgJiAo R0VOOF9DVFhfU1RBVFVTX0lETEVfQUNUSVZFIHwKPj4+IC0gR0VOOF9DVFhfU1RBVFVTX1BSRUVN UFRFRCkpCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg LyogQ2hlY2sgaWYgc3dpdGNoZWQgdG8gYWN0aXZlIG9yIHByZWVtcHRlZCAKPj4+IHRvIGFjdGl2 ZSAqLwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlm ICgoc3RhdHVzICYgKEdFTjhfQ1RYX1NUQVRVU19JRExFX0FDVElWRSB8Cj4+PiArIEdFTjhfQ1RY X1NUQVRVU19QUkVFTVBURUQpKSAmJgo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIShzdGF0dXMgJiBHRU4xMV9DVFhfU1RBVFVTX1BSRUVN UFRfSURMRSkpCj4+Cj4+IFNldHRpbmcgSFdBQ0sgaGVyZSBpcyBoYXJtbGVzcyBhcyBpdCBnZXRz IGNsZWFyZWQgYWdhaW4uIFVubGVzcywgdGhlcmUKPj4gaXMgc29tZSBvZGRpdHkgaW4gdGhlIGNv ZGUgZmxvdy4KPgo+IFRoZXJlIGlzIGFjdHVhbGx5IHNvbWUgb2RkaXR5LCBidXQgaXQgaXMgbW9y ZSBvbiB0aGUgSFcgc2lkZS4gQSAKPiBwcmVlbXB0IHRvIGlkbGUgY2FuIHBvdGVudGlhbGx5IGxh bmQgb24gYW4gYWxyZWFkeSBpZGxlIEhXLCBpbiB3aGljaCAKPiBjYXNlIEdFTjhfQ1RYX1NUQVRV U19BQ1RJVkVfSURMRSBpcyBub3Qgc2V0IGFuZCAKPiBHRU44X0NUWF9TVEFUVVNfSURMRV9BQ1RJ VkUgaXMgc2V0IGluc3RlYWQuIEluIHRoaXMgY2FzZSB3aXRob3V0IHRoaXMgCj4gY2hlY2sgb24g R0VOMTFfQ1RYX1NUQVRVU19QUkVFTVBUX0lETEUgd2Ugd291bGQgc2V0IHRoZSBIV0FDSyBoZXJl IGJ1dCAKPiB3ZSB3b3VsZG4ndCBjYWxsIHRoZSBjbGVhciBiZWxvdy4gTm90IHN1cmUgaWYgd2Ug ZW5kIHVwIGNsZWFyaW5nIHRoZSAKPiBmbGFnIGVsc2V3aGVyZSwgYnV0IHRoYXQgZG9lc24ndCBs b29rIHRvbyBuaWNlIElNSE8uCj4KPiBCVFcsIHRoZSByZWxldmFudCBDU0IgYml0cyBjb21pbmcg b3V0IGluIHRoZSAyIHByZWVtcHQgdG8gaWRsZSBjYXNlcyAKPiBhcmUgYXMgZm9sbG93czoKPgo+ IHByZWVtcHQgYWN0aXZlIEhXOgo+IEdFTjExX0NUWF9TVEFUVVNfUFJFRU1QVF9JRExFIHwgR0VO OF9DVFhfU1RBVFVTX0FDVElWRV9JRExFIHwgCj4gR0VOOF9DVFhfU1RBVFVTX1BSRUVNUFRFRAo+ Cj4gUHJlZW1wdCBpZGxlIEhXOgo+IEdFTjExX0NUWF9TVEFUVVNfUFJFRU1QVF9JRExFIHwgR0VO OF9DVFhfU1RBVFVTX0lETEVfQUNUSVZFCj4KPiBEYW5pZWxlClRoYW5rcyBEYW5pZWxlLCB0aGlz IG1ha2VzIHRoaW5ncyBhIGxvdCBjbGVhcmVyLgpDb25zaWRlcmluZyBhbHNvIEhXQUNLIGRlc2Ny aXB0aW9uIGZyb20gQ2hyaXMsIEkgd2lsbCBhZGQgYSBjb25kaXRpb24gdG8gCmV4ZWNsaXN0c19j bGVhcl9hY3RpdmUoKSBiZWxvdyBpbnN0ZWFkIG9mwqAgaGVyZS4KLVRvbWFzego+Cj4+Cj4+PiBl eGVjbGlzdHNfc2V0X2FjdGl2ZShleGVjbGlzdHMsCj4+PiBFWEVDTElTVFNfQUNUSVZFX0hXQUNL KTsKPj4+ICsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBpZiAoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0FDVElWRV9JRExFKQo+Pj4gZXhlY2xp c3RzX2NsZWFyX2FjdGl2ZShleGVjbGlzdHMsCj4+PiBFWEVDTElTVFNfQUNUSVZFX0hXQUNLKTsK Pj4+IEBAIC05NzYsOCArMTAwNCwxMyBAQCBzdGF0aWMgdm9pZCAKPj4+IGV4ZWNsaXN0c19zdWJt aXNzaW9uX3Rhc2tsZXQodW5zaWduZWQgbG9uZyBkYXRhKQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIFdlIHNob3VsZCBuZXZlciBnZXQgYSBD T01QTEVURUQgfCAKPj4+IElETEVfQUNUSVZFISAqLwo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTV9CVUdfT04oc3RhdHVzICYgCj4+PiBHRU44 X0NUWF9TVEFUVVNfSURMRV9BQ1RJVkUpOwo+Pj4gwqAgLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfQ09NUExF VEUgJiYKPj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGJ1ZlsyKmhlYWQgKyAxXSA9PSAKPj4+IGV4ZWNsaXN0cy0+cHJlZW1wdF9jb21wbGV0 ZV9zdGF0dXMpIHsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAvKgo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKiBDaGVjayBpZiBwcmVlbXB0ZWQgdG8gcmVhbCBpZGxlLCBlaXRoZXIgCj4+PiBkaXJlY3Rs eSBvcgo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg KiB0aGUgcHJlZW1wdGl2ZSBjb250ZXh0IGFscmVhZHkgZmluaXNoZWQgCj4+PiBleGVjdXRpbmcK Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKChzdGF0 dXMgJiBHRU4xMV9DVFhfU1RBVFVTX1BSRUVNUFRfSURMRSkgfHwKPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChzdGF0dXMgJiBHRU44X0NU WF9TVEFUVVNfQ09NUExFVEUgJiYKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJ1ZlsyKmhlYWQgKyAxXSA9PSAKPj4+IGV4ZWNsaXN0cy0+ cHJlZW1wdF9jb21wbGV0ZV9zdGF0dXMpKSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTV9UUkFDRSgiJXMgcHJl ZW1wdC1pZGxlXG4iLCAKPj4+IGVuZ2luZS0+bmFtZSk7Cj4+Cj4+IEhtbS4gSSB3YXMgaG9waW5n IHRoYXQgd2Ugd291bGQgYmUgYWJsZSB0byBlbmdpbmVlciBhIHNpbmdsZSBjaGVjayB0bwo+PiBj b3ZlciBhbGwgc2lucy4gTWlnaHQgaGF2ZSBiZWVuIG92ZXJseSBvcHRpbWlzdGljLCBidXQgSSBj YW4gZHJlYW0uCj4+IC1DaHJpcwo+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+IEludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngKPj4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=