From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v3] drm/i915: Replace gen6 semaphore signal table with code Date: Thu, 21 Jul 2016 14:46:01 +0100 Message-ID: <5790D219.6060305@linux.intel.com> References: <1469093495-2745-1-git-send-email-tvrtko.ursulin@linux.intel.com> <1469102447-4254-1-git-send-email-tvrtko.ursulin@linux.intel.com> <20160721125940.GQ10317@nuc-i3427.alporthouse.com> <5790CB26.1050509@linux.intel.com> <20160721133100.GV10317@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 957E96E1D3 for ; Thu, 21 Jul 2016 13:46:03 +0000 (UTC) In-Reply-To: <20160721133100.GV10317@nuc-i3427.alporthouse.com> 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, Tvrtko Ursulin , Dave Gordon List-Id: intel-gfx@lists.freedesktop.org Ck9uIDIxLzA3LzE2IDE0OjMxLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gT24gVGh1LCBKdWwgMjEs IDIwMTYgYXQgMDI6MTY6MjJQTSArMDEwMCwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4+Cj4+IE9u IDIxLzA3LzE2IDEzOjU5LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4+PiBPbiBUaHUsIEp1bCAyMSwg MjAxNiBhdCAwMTowMDo0N1BNICswMTAwLCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPj4+PiBGcm9t OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+Pj4+Cj4+Pj4gU3Rh dGljIHRhYmxlIHdhc3RlcyBzcGFjZSBmb3IgaW52YWxpZCBjb21iaW5hdGlvbnMgYW5kCj4+Pj4g ZW5naW5lcyB3aGljaCBhcmUgbm90IHN1cHBvcnRlZCBieSBHZW42IChsZWdhY3kgc2VtYXBob3Jl cykuCj4+Pj4KPj4+PiBSZXBsYWNlIGl0IHdpdGggYSBmdW5jdGlvbiBkZXZpc2VkIGJ5IERhdmUg R29yZG9uLgo+Pj4+Cj4+Pj4gSSBoYXZlIHZlcmlmaWVkIHRoYXQgaXQgZ2VuZXJhdGVzIHRoZSBz YW1lIG1hcHBpbmdzIGJldHdlZW4KPj4+PiBtYm94IHNlbGVjdG9ycyBhbmQgc2lnbmFsbGluZyBy ZWdpc3RlcnMuCj4+Pgo+Pj4gU28ganVzdCBob3cgYmlnIHdhcyB0aGF0IHRhYmxlPyBIb3cgYmln IGFyZSB0aGUgZnVuY3Rpb25zIHJlcGxhY2luZyBpdD8KPj4KPj4gV2l0aCBJOTE1X05VTV9FTkdJ TkVTIG9mIDUgdGFibGUgaXMgNSAqIDUgKiAoMiAqIDQpID0gMjAwIGJ5dGVzLgo+Pgo+PiBXaXRo IHRoZSBwYXRjaCAudGV4dCBncm93cyBieSAxNDQgYnl0ZXMgaGVyZSBhbmQgLnJvZGF0YSBzaHJp bmtzIGJ5Cj4+IDI1Ni4gU28gYSBuZXQgZ2FpbiBvZiAxMTIgYnl0ZXMgd2l0aCBteSBjb25maWcu IENvbmNsdXNpb24gaXMgdGhhdAo+PiBhcyBsb25nIGFzIHdlIGdvdCBmaXZlIGVuZ2luZXMgaXQg aXMgbm90IHRoYXQgaW50ZXJlc3RpbmcgdG8gZ2V0IHJpZAo+PiBvZiB0aGUgdGFibGUuCj4+Cj4+ Pj4gdjI6IEFkZCBhIGNvbW1lbnQgZGVzY3JpYmluZyB3aGF0IGdlbjZfc2VtX2YgZG9lcy4KPj4+ PiB2MzogVGhpcyB0aW1lIHdpdGggZ2l0IGFkZC4KPj4+Cj4+PiBJIGxpa2UgaGF2aW5nIHRoZSB0 YWJsZSBhIGxvdC4uLiBFdmVuIGlmIHdlIGRvbid0IGZpbmQgdGhlIGZ1bmN0aW9uCj4+PiBjb252 aW5jaW5nIHdlIHNob3VsZCBhZGQgdGhhdCBjb21tZW50Lgo+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5 OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+Pj4+IENjOiBEYXZl IEdvcmRvbiA8ZGF2aWQucy5nb3Jkb25AaW50ZWwuY29tPgo+Pj4+IENjOiBDaHJpcyBXaWxzb24g PGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPj4+PiAtLS0KPj4+PiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmggICAgICAgICB8ICA3ICstLQo+Pj4+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgIHwgOTMgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCj4+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgfCA0 MCArLS0tLS0tLS0tLS0tLQo+Pj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5oIHwgIDMgKysKPj4+PiAgIDQgZmlsZXMgY2hhbmdlZCwgMTAyIGluc2VydGlvbnMoKyks IDQxIGRlbGV0aW9ucygtKQo+Pj4+Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+Pj4gaW5k ZXggOTM5N2RkZWMyNmI5Li5jMmZlNzE4NTgyYzggMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmgKPj4+PiBAQCAtMTYwNCw5ICsxNjA0LDEwIEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJf d2VsbHMgewo+Pj4+ICAgI2RlZmluZSBSSU5HX0hFQUQoYmFzZSkJCV9NTUlPKChiYXNlKSsweDM0 KQo+Pj4+ICAgI2RlZmluZSBSSU5HX1NUQVJUKGJhc2UpCV9NTUlPKChiYXNlKSsweDM4KQo+Pj4+ ICAgI2RlZmluZSBSSU5HX0NUTChiYXNlKQkJX01NSU8oKGJhc2UpKzB4M2MpCj4+Pj4gLSNkZWZp bmUgUklOR19TWU5DXzAoYmFzZSkJX01NSU8oKGJhc2UpKzB4NDApCj4+Pj4gLSNkZWZpbmUgUklO R19TWU5DXzEoYmFzZSkJX01NSU8oKGJhc2UpKzB4NDQpCj4+Pj4gLSNkZWZpbmUgUklOR19TWU5D XzIoYmFzZSkJX01NSU8oKGJhc2UpKzB4NDgpCj4+Pj4gKyNkZWZpbmUgUklOR19TWU5DKGJhc2Us IG4pCV9NTUlPKChiYXNlKSArIDB4NDAgKyAobikgKiA0KQo+Pj4+ICsjZGVmaW5lIFJJTkdfU1lO Q18wKGJhc2UpCVJJTkdfU1lOQyhiYXNlLCAwKQo+Pj4+ICsjZGVmaW5lIFJJTkdfU1lOQ18xKGJh c2UpCVJJTkdfU1lOQyhiYXNlLCAxKQo+Pj4+ICsjZGVmaW5lIFJJTkdfU1lOQ18yKGJhc2UpCVJJ TkdfU1lOQyhiYXNlLCAyKQo+Pj4+ICAgI2RlZmluZSBHRU42X1JWU1lOQwkoUklOR19TWU5DXzAo UkVOREVSX1JJTkdfQkFTRSkpCj4+Pj4gICAjZGVmaW5lIEdFTjZfUkJTWU5DCShSSU5HX1NZTkNf MShSRU5ERVJfUklOR19CQVNFKSkKPj4+PiAgICNkZWZpbmUgR0VONl9SVkVTWU5DCShSSU5HX1NZ TkNfMihSRU5ERVJfUklOR19CQVNFKSkKPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdp bmVfY3MuYwo+Pj4+IGluZGV4IGY0YTM1ZWM3ODQ4MS4uMTk0NTViMjBiMzIyIDEwMDY0NAo+Pj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPj4+PiBAQCAtMjA5LDMgKzIw OSw5NiBAQCBpbnQgaW50ZWxfZW5naW5lX2luaXRfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPj4+Pgo+Pj4+ICAgCXJldHVybiBpOTE1X2NtZF9wYXJzZXJfaW5pdF9yaW5n KGVuZ2luZSk7Cj4+Pj4gICB9Cj4+Pj4gKwo+Pj4+ICsjZGVmaW5lIEk5MTVfTlVNX0dFTjZfU0VN QVBIT1JFX0VOR0lORVMgKDQpCj4+Pj4gKwo+Pj4+ICsvKgo+Pj4+ICsgKiBGb3IgR2VuNiBzZW1h cGhvcmVzIHdoZXJlIHRoZSBkcml2ZXIgaXNzdWVzIE1JX1NFTUFQSE9SRV9NQk9YIGNvbW1hbmRz Cj4+Pj4gKyAqIHdpdGggcmVnaXN0ZXIgc2VsZWN0cyBzbyB0aGF0IGEgc3BlY2lmaWMgZW5naW5l IGNhbiB3YWtlIHVwIGFub3RoZXIgZW5naW5lCj4+Pj4gKyAqIHdhaXRpbmcgb24gYSBtYXRjaGlu ZyByZWdpc3RlciwgdGhlIG1hdHJpeCBvZiByZXF1aXJlZCByZWdpc3RlciBzZWxlY3RzCj4+Pj4g KyAqIGxvb2tzIGxpa2UgdGhpczoKPj4+PiArICoKPj4+PiArICogICAgICB8ICAgICAgICAgICAg UkNTICAgICAgICAgICAgfCAgICAgICAgICAgVkNTICAgICAgICAgICAgIHwgICAgICAgICAgIEJD UyAgICAgICAgICAgICB8ICAgICAgICAgVkVDUwo+Pj4+ICsgKiAtLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+PiArICogIFJDUyB8 IE1JX1NFTUFQSE9SRV9TWU5DX0lOVkFMSUQgfCAgICBNSV9TRU1BUEhPUkVfU1lOQ19WUiAgIHwg ICAgTUlfU0VNQVBIT1JFX1NZTkNfQlIgICB8ICAgIE1JX1NFTUFQSE9SRV9TWU5DX1ZFUgo+Pj4+ ICsgKiAgVkNTIHwgICAgTUlfU0VNQVBIT1JFX1NZTkNfUlYgICB8IE1JX1NFTUFQSE9SRV9TWU5D X0lOVkFMSUQgfCAgICBNSV9TRU1BUEhPUkVfU1lOQ19CViAgIHwgICAgTUlfU0VNQVBIT1JFX1NZ TkNfVkVWCj4+Pj4gKyAqICBCQ1MgfCAgICBNSV9TRU1BUEhPUkVfU1lOQ19SQiAgIHwgICAgTUlf U0VNQVBIT1JFX1NZTkNfVkIgICB8IE1JX1NFTUFQSE9SRV9TWU5DX0lOVkFMSUQgfCAgICBNSV9T RU1BUEhPUkVfU1lOQ19WRUIKPj4+PiArICogVkVDUyB8ICAgIE1JX1NFTUFQSE9SRV9TWU5DX1JW RSAgfCAgICBNSV9TRU1BUEhPUkVfU1lOQ19WVkUgIHwgICAgTUlfU0VNQVBIT1JFX1NZTkNfQlZF ICB8IE1JX1NFTUFQSE9SRV9TWU5DX0lOVkFMSUQKPj4+PiArICoKPj4+PiArICogVGhpcyBkaXN0 aWxsZWQgdG8gaW50ZWdlcnMgbG9va3MgbGlrZSB0aGlzOgo+Pj4+ICsgKgo+Pj4+ICsgKiAgIHwg IDAgIHwgIDEgIHwgIDIgIHwgIDMKPj4+PiArICogLS0rLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0K Pj4+PiArICogMCB8IC0xICB8ICAwICB8ICAyICB8ICAxCj4+Pj4gKyAqIDEgfCAgMiAgfCAtMSAg fCAgMCAgfCAgMQo+Pj4+ICsgKiAyIHwgIDAgIHwgIDIgIHwgLTEgIHwgIDEKPj4+PiArICogMyB8 ICAyICB8ICAxICB8ICAwICB8IC0xCj4+Pj4gKyAqCj4+Pj4gKyAqIEluIHRoZSBvcHBvc2l0ZSBk aXJlY3Rpb24sIHRoZSBzYW1lIHRhYmxlIHNob3dpbmcgcmVnaXN0ZXIgYWRkcmVzc2VzIGlzOgo+ Pj4+ICsgKgo+Pj4+ICsgKiAgICAgIHwgICAgIFJDUyAgICAgIHwgICAgIFZDUyAgICAgIHwgICAg IEJDUyAgICAgIHwgICAgVkVDUwo+Pj4+ICsgKiAtLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQo+Pj4+ICsgKiAgUkNTIHwgR0VO Nl9OT1NZTkMgIHwgR0VONl9SVlNZTkMgIHwgR0VONl9SQlNZTkMgIHwgR0VONl9SVkVTWU5DCj4+ Pj4gKyAqICBWQ1MgfCBHRU42X1ZSU1lOQyAgfCBHRU42X05PU1lOQyAgfCBHRU42X1ZCU1lOQyAg fCBHRU42X1ZWRVNZTkMKPj4+PiArICogIEJDUyB8IEdFTjZfVlJTWU5DICB8IEdFTjZfQlZTWU5D ICB8IEdFTjZfTk9TWU5DICB8IEdFTjZfQlZFU1lOQwo+Pj4+ICsgKiBWRUNTIHwgR0VONl9WRVJT WU5DIHwgR0VONl9WRVZTWU5DIHwgR0VONl9WRUJTWU5DIHwgR0VONl9OT1NZTkMKPj4+PiArICoK Pj4+PiArICogQWdhaW4gdGhpcyBkaXN0aWxsZWQgdG8gaW50ZWdlcnMgbG9va3MgbGlrZSB0aGlz Ogo+Pj4+ICsgKgo+Pj4+ICsgKiAgIHwgIDAgIHwgIDEgIHwgIDIgIHwgIDMKPj4+PiArICogLS0r LS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0KPj4+PiArICogMCB8IC0xICB8ICAwICB8ICAxICB8ICAy Cj4+Pj4gKyAqIDEgfCAgMSAgfCAtMSAgfCAgMCAgfCAgMgo+Pj4+ICsgKiAyIHwgIDAgIHwgIDEg IHwgLTEgIHwgIDIKPj4+PiArICogMyB8ICAxICB8ICAyICB8ICAwICB8IC0xCj4+Pj4gKyAqCj4+ Pj4gKyAqIFRoZSBmdW5jdGlvbiBnZW42X3NlbV9mIGV4cHJlc3NlcyB0aGUgYWJvdmUgdGFibGUu IFdlIGFsc28gbm90aWNlIHRoYXQgdGhlCj4+Pj4gKyAqIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUg Zmlyc3QgYW5kIHNlY29uZCB0YWJlIGlzIG9ubHkgYSB0cmFuc3Bvc2Ugb2Ygb25lcyB0bwo+Pj4+ ICsgKiB0d29zIGFuZCB0d29zIHRvIG9uZXMuCj4+Pj4gKyAqLwo+Pj4+ICsKPj4+PiArc3RhdGlj IGludCBnZW42X3NlbV9mKHVuc2lnbmVkIGludCB4LCB1bnNpZ25lZCBpbnQgeSkKPj4+Cj4+PiBn ZW42X3NlbWFfc2VsZWN0Cj4+PiBnZW42X3NlbWFwaG9yZV9mbGFnCj4+Cj4+IFBpY2sgb25lIG5h bWUgdG8gcmVwbGFjZSBnZW42X3NlbV9mIHlvdSBtZWFuPwo+Cj4gWWVzLCB5b3UgY29udHJhY3Rl ZCBzZW1hcGhvcmUgdG8gc2VtYSBsYXN0IHRpbWUgKGFuZCB0aGF0IHN0dWNrKS4gQW5kIGJ5Cj4g X2YgSSBhc3N1bWUgeW91IG1lYW4gbWF0aGVtYXRpY2FsIGZ1bmN0aW9uLCB3aGljaCBpcyBhIGxp dHRsZSBib3JpbmcuCgpZZXMsIGFuZCBib3Jpbmcgb3Igbm90IGl0IGlzIHdyb25nIHNpbmNlIGl0 IGlzIG5vdCBhIHB1cmUgbWF0aGVtYXRpY2FsIApmdW5jdGlvbiBzbyBJIHdpbGwgcmVuYW1lIGl0 LgoKPj4+PiArewo+Pj4+ICsJaWYgKHggPT0geSkKPj4+PiArCQlyZXR1cm4gLTE7Cj4+Pj4gKwo+ Pj4+ICsJeCA9IGludGVsX2VuZ2luZXNbeF0uZ3VjX2lkOwo+Pj4+ICsJeSA9IGludGVsX2VuZ2lu ZXNbeV0uZ3VjX2lkOwo+Pj4KPj4+IGh3X2lkLgo+Pgo+PiBTb21lIGd1eXMgbmFtZWQgQ2hyaXMg YW5kIERhdmUgcmVtb3ZlZCBpdC4gO0QKPgo+IEkgZGlkPy4uLiBJIHdhcyBhaW1pbmcgYXQgcmVt b3ZpbmcgZ3VjX2lkISBJIHdhcyBhd2FyZSBEYXZlIHdhcyBhcmd1aW5nCj4gYWdhaW5zdCByZW1v dmluZyBndWNfaWQganVzdCBpbiBjYXNlIHRoZSBmaXJtd2FyZSBkaWZmZXJlZCBpbiBmdXR1cmUK PiBmcm9tIHRoZSBleGlzdGluZyBnZW41KyBpZC4KCkkgcmV0cmFjdGVkIHRoYXQgY29tbWVudCBs YXRlciwganVzdCBjb25mdXNlZCB0aGluZ3MuCgo+Pj4+ICsKPj4+PiArCWlmICh4ID49IEk5MTVf TlVNX0dFTjZfU0VNQVBIT1JFX0VOR0lORVMgfHwKPj4+PiArCSAgICB5ID49IEk5MTVfTlVNX0dF TjZfU0VNQVBIT1JFX0VOR0lORVMpCj4+Pj4gKwkJcmV0dXJuIC0xOwo+Pj4+ICsKPj4+Cj4+PiAv Kgo+Pj4gICAqICAgICAgICAgICAgICAgWAo+Pj4gICAqICAgICAgfCAgMCAgfCAgMSAgfCAgMiAg fCAgMwo+Pj4gICAqICAgIC0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tCj4+PiAgICogICAgMCB8 ICAgICB8ICAwICB8ICAxICB8ICAyCj4+PiAgICogWSAgMSB8ICAxICB8ICAgICB8ICAwICB8ICAy Cj4+PiAgICogICAgMiB8ICAwICB8ICAxICB8ICAgICB8ICAyCj4+PiAgICogICAgMyB8ICAxICB8 ICAyICB8ICAwICB8Cj4+PiAgICovCj4+Cj4+IFlvdSB3YW50IGFub3RoZXIgY29weSBvZiB0aGUg dGFibGUgaGVyZT8KPgo+IFllcy4gSW4gcGFydGljdWxhciwgSSBuZWVkIHRvIGtub3cgd2hpY2gg YXhpcyBpcyBYIGFuZCB3aGljaCBpcyBZLgo+IEhhdmluZyB0aGUgdGFibGUgaGVyZSBpcyBtdWNo IGVhc2llciB0byBjb21wYXJlIHRvIHRoZSBvdXRwdXQgb2YgdGhlCj4gY29kZSAoc2FtZSBzY3Jl ZW4pLgoKT2suCgo+Pj4+ICsJeCAtPSB4ID49IHk7Cj4+Pj4gKwlpZiAoeSA9PSAxKQo+Pj4+ICsJ CXggPSAzIC0geDsKPj4+PiArCXggKz0geSAmIDE7Cj4+Pj4gKwlyZXR1cm4geCAlIDM7Cj4+Pj4g K30KPj4+PiArCj4+Pj4gK3UzMiBnZW42X3dhaXRfbWJveChlbnVtIGludGVsX2VuZ2luZV9pZCB4 LCBlbnVtIGludGVsX2VuZ2luZV9pZCB5KQo+Pj4KPj4+IHN0YXRpYy4uLgo+Pgo+PiBJdCBpcyBj YWxsZWQgZnJvbSBpbnRlbF9yaW5nYnVmZmVyLmMuCj4KPiBIbW0uIFRoaXMgd2FzIGluIGludGVs X3JpbmdidWZmZXIuYywgYXQgbGVhc3QgSSBhc3N1bWVkIHNvIGFzIHRoaXMgb25seQo+IGFwcGxp ZXMgdG8gbGVnYWN5IHN1Ym1pc3Npb24sIGZvciBnZW42LTcuCgpJdCB1c2VzIHRoZSBzdGF0aWMg aW50ZWxfZW5naW5lcyBhcnJheSBzaW5jZSB0aGUgZGV2X3ByaXYtPmVuZ2luZXMgYXJlIApub3Qg aW5pdGlhbGl6ZWQgeWV0IGJ5IHRoZSB0aW1lIGl0IHJ1bnMsIGZvciBhbiBlbmdpbmUuCgpDb3Vs ZCBhcyBhbiBhbHRlcm5hdGl2ZSBtYWtlIHRoZSBlbmdpbmUgaW5pdCBwaGFzZSBtdWx0aS1wYXNz LiBNYXliZS4gCk5vdCBzdXJlIHdoYXQgcmVwZXJjdXNzaW9ucyBmb3IgdGhlIGNsZWFudXAgcGF0 aCB0aGF0IHdvdWxkIGhhdmUuCgpSZWdhcmRzLAoKVHZydGtvCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==