From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [RFC 13/28] drm/i915: Convert i915_gem_init_hw to intel_gt Date: Fri, 14 Jun 2019 10:34:06 +0100 Message-ID: <183c59a5-bebd-bc25-4f91-6b6d710e27c1@linux.intel.com> References: <20190613133539.12620-1-tvrtko.ursulin@linux.intel.com> <20190613133539.12620-14-tvrtko.ursulin@linux.intel.com> <156043435196.17012.16772763488516296630@skylake-alporthouse-com> <62e74c65-c538-a22f-5ff7-65c54552e54a@linux.intel.com> <156044344691.17012.1072853064881943621@skylake-alporthouse-com> 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 F1A0C8941E for ; Fri, 14 Jun 2019 09:34:08 +0000 (UTC) In-Reply-To: <156044344691.17012.1072853064881943621@skylake-alporthouse-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: Chris Wilson , Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDEzLzA2LzIwMTkgMTc6MzAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdW90aW5nIFR2cnRr byBVcnN1bGluICgyMDE5LTA2LTEzIDE3OjExOjQzKQo+Pgo+PiBPbiAxMy8wNi8yMDE5IDE0OjU5 LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4+PiBRdW90aW5nIFR2cnRrbyBVcnN1bGluICgyMDE5LTA2 LTEzIDE0OjM1OjI0KQo+Pj4+IEZyb206IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBp bnRlbC5jb20+Cj4+Pj4KPj4+PiBNb3JlIHJlbW92YWwgb2YgaW1wbGljaXQgZGV2X3ByaXYgZnJv bSB1c2luZyBvbGQgbW1pbyBhY2Nlc3NvcnMuCj4+Pj4KPj4+PiBBY3R1YWxseSB0aGUgdG9wIGxl dmVsIGZ1bmN0aW9uIHJlbWFpbnMgYnV0IGlzIHNwbGl0IGludG8gYSBwYXJ0IHdoaWNoCj4+Pj4g d3JpdGVzIHRvIGk5MTUgYW5kIHBhcnQgd2hpY2ggb3BlcmF0ZXMgb24gaW50ZWxfZ3QgaW4gb3Jk ZXIgdG8gaW5pdGlhbGl6ZQo+Pj4+IHRoZSBoYXJkd2FyZS4KPj4+Pgo+Pj4+IEd1QyBhbmQgZW5n aW5lcyBhcmUgdGhlIG9ubHkgb2RkIG9uZXMgb3V0IHJlbWFpbmluZy4KPj4+Pgo+Pj4+IFNpZ25l ZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4+Pj4g LS0tCj4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyB8IDY2ICsrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+Pj4+ICAgIDEgZmlsZSBjaGFuZ2VkLCA0MCBpbnNl cnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u Ywo+Pj4+IGluZGV4IGU1NGNkMzA1MzRkYy4uYjZmNDUwZTc4MmU3IDEwMDY0NAo+Pj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jCj4+Pj4gQEAgLTEyMzQsMjggKzEyMzQsMzIgQEAgc3RhdGljIHZv aWQgaW5pdF91bnVzZWRfcmluZ3Moc3RydWN0IGludGVsX2d0ICpndCkKPj4+PiAgICAgICAgICAg fQo+Pj4+ICAgIH0KPj4+PiAgICAKPj4+PiAtaW50IGk5MTVfZ2VtX2luaXRfaHcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+Pj4+ICtzdGF0aWMgaW50IGluaXRfaHcoc3RydWN0 IGludGVsX2d0ICpndCkKPj4+PiAgICB7Cj4+Pj4gKyAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IGd0LT5pOTE1Owo+Pj4+ICsgICAgICAgc3RydWN0IGludGVsX3VuY29yZSAq dW5jb3JlID0gZ3QtPnVuY29yZTsKPj4+PiAgICAgICAgICAgaW50IHJldDsKPj4+PiAgICAKPj4+ PiAtICAgICAgIGRldl9wcml2LT5ndC5sYXN0X2luaXRfdGltZSA9IGt0aW1lX2dldCgpOwo+Pj4+ ICsgICAgICAgZ3QtPmxhc3RfaW5pdF90aW1lID0ga3RpbWVfZ2V0KCk7Cj4+Pj4gICAgCj4+Pj4g ICAgICAgICAgIC8qIERvdWJsZSBsYXllciBzZWN1cml0eSBibGFua2V0LCBzZWUgaTkxNV9nZW1f aW5pdCgpICovCj4+Pj4gLSAgICAgICBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCgmZGV2X3By aXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4+Pj4gKyAgICAgICBpbnRlbF91bmNvcmVfZm9y Y2V3YWtlX2dldCh1bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+Pj4+ICAgIAo+Pj4+IC0gICAgICAg aWYgKEhBU19FRFJBTShkZXZfcHJpdikgJiYgSU5URUxfR0VOKGRldl9wcml2KSA8IDkpCj4+Pj4g LSAgICAgICAgICAgICAgIEk5MTVfV1JJVEUoSFNXX0lESUNSLCBJOTE1X1JFQUQoSFNXX0lESUNS KSB8IElESUhBU0hNU0soMHhmKSk7Cj4+Pj4gKyAgICAgICBpZiAoSEFTX0VEUkFNKGk5MTUpICYm IElOVEVMX0dFTihpOTE1KSA8IDkpCj4+Pj4gKyAgICAgICAgICAgICAgIGludGVsX3VuY29yZV9y bXcodW5jb3JlLCBIU1dfSURJQ1IsIDAsIElESUhBU0hNU0soMHhmKSk7Cj4+Pj4gICAgCj4+Pj4g LSAgICAgICBpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpCj4+Pj4gLSAgICAgICAgICAgICAgIEk5 MTVfV1JJVEUoTUlfUFJFRElDQVRFX1JFU1VMVF8yLCBJU19IU1dfR1QzKGRldl9wcml2KSA/Cj4+ Pj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgTE9XRVJfU0xJQ0VfRU5BQkxFRCA6IExPV0VS X1NMSUNFX0RJU0FCTEVEKTsKPj4+PiArICAgICAgIGlmIChJU19IQVNXRUxMKGk5MTUpKQo+Pj4+ ICsgICAgICAgICAgICAgICBpbnRlbF91bmNvcmVfd3JpdGUodW5jb3JlLAo+Pj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlfUFJFRElDQVRFX1JFU1VMVF8yLAo+Pj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVNfSFNXX0dUMyhpOTE1KSA/Cj4+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT1dFUl9TTElDRV9FTkFCTEVEIDog TE9XRVJfU0xJQ0VfRElTQUJMRUQpOwo+Pj4+ICAgIAo+Pj4+ICAgICAgICAgICAvKiBBcHBseSB0 aGUgR1Qgd29ya2Fyb3VuZHMuLi4gKi8KPj4+PiAtICAgICAgIGludGVsX2d0X2FwcGx5X3dvcmth cm91bmRzKCZkZXZfcHJpdi0+Z3QpOwo+Pj4+ICsgICAgICAgaW50ZWxfZ3RfYXBwbHlfd29ya2Fy b3VuZHMoZ3QpOwo+Pj4KPj4+IFdvdWxkIGl0IGJlIHdvcnRoIG1vdmluZyB0aGUgYWJvdmUgbW1p byBpbnRvIHdvcmthcm91bmRzPyBXaGlsc3QgeW91IGFyZQo+Pj4gZG9pbmcgc29tZSBzcHJpbmcg Y2xlYW5pbmcgOikKPj4KPj4gVG8gR1Qgd29ya2Fyb3VuZHM/IEFyZSB0aGUgYWJvdmUgdHdvIHdv cmthcm91bmRzPyBEbyB0aGV5IGhhdmUgYW4KPj4gb2ZmaWNpYWwgZGVzaWduYXRpb24/Cj4gCj4g VG8gaW50ZWxfZ3Rfd29ya2Fyb3VuZHNfYXBwbHksIEknbSBzdXJlIHlvdSBjYW4gZmluZCBzb21l dGhpbmcgOykKCkhhdmluZyBsb29rZWQgdXAgdGhlIGRvY3MgZm9yIEhTV19JRENSIGFuZCBNSV9Q UkVESUNBVEVfUkVTVUxUXzIsIApuZWl0aGVyIG9mIHRoZSBwcm9ncmFtbWluZyBsb29rcyBsaWtl IHdvcmthcm91bmRzIGJ1dCBub3JtYWwgZGV2aWNlIGluaXQgCnRvIG1lLiBBcyBzdWNoIEkgZG9u J3Qgc2VlIGhvdyBpdCB3b3VsZCBiZSBhcHByb3ByaWF0ZSB0byBtb3ZlIHRoZW0gaW50byAKd29y a2Fyb3VuZHMuCgo+IAo+Pj4+ICAgICAgICAgICAvKiAuLi5hbmQgZGV0ZXJtaW5lIHdoZXRoZXIg dGhleSBhcmUgc3RpY2tpbmcuICovCj4+Pj4gLSAgICAgICBpbnRlbF9ndF92ZXJpZnlfd29ya2Fy b3VuZHMoJmRldl9wcml2LT5ndCwgImluaXQiKTsKPj4+PiArICAgICAgIGludGVsX2d0X3Zlcmlm eV93b3JrYXJvdW5kcyhndCwgImluaXQiKTsKPj4+PiAgICAKPj4+PiAtICAgICAgIGludGVsX2d0 X2luaXRfc3dpenpsaW5nKCZkZXZfcHJpdi0+Z3QpOwo+Pj4+ICsgICAgICAgaW50ZWxfZ3RfaW5p dF9zd2l6emxpbmcoZ3QpOwo+Pj4+ICAgIAo+Pj4+ICAgICAgICAgICAvKgo+Pj4+ICAgICAgICAg ICAgKiBBdCBsZWFzdCA4MzAgY2FuIGxlYXZlIHNvbWUgb2YgdGhlIHVudXNlZCByaW5ncwo+Pj4+ IEBAIC0xMjYzLDQ4ICsxMjY3LDU4IEBAIGludCBpOTE1X2dlbV9pbml0X2h3KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4+PiAgICAgICAgICAgICogd2lsbCBwcmV2ZW50IGMz IGVudHJ5LiBNYWtlcyBzdXJlIGFsbCB1bnVzZWQgcmluZ3MKPj4+PiAgICAgICAgICAgICogYXJl IHRvdGFsbHkgaWRsZS4KPj4+PiAgICAgICAgICAgICovCj4+Pj4gLSAgICAgICBpbml0X3VudXNl ZF9yaW5ncygmZGV2X3ByaXYtPmd0KTsKPj4+PiAtCj4+Pj4gLSAgICAgICBCVUdfT04oIWRldl9w cml2LT5rZXJuZWxfY29udGV4dCk7Cj4+Pj4gLSAgICAgICByZXQgPSBpOTE1X3Rlcm1pbmFsbHlf d2VkZ2VkKGRldl9wcml2KTsKPj4+PiAtICAgICAgIGlmIChyZXQpCj4+Pj4gLSAgICAgICAgICAg ICAgIGdvdG8gb3V0Owo+Pj4+ICsgICAgICAgaW5pdF91bnVzZWRfcmluZ3MoZ3QpOwo+Pj4+ICAg IAo+Pj4+IC0gICAgICAgcmV0ID0gaTkxNV9wcGd0dF9pbml0X2h3KCZkZXZfcHJpdi0+Z3QpOwo+ Pj4+ICsgICAgICAgcmV0ID0gaTkxNV9wcGd0dF9pbml0X2h3KGd0KTsKPj4+PiAgICAgICAgICAg aWYgKHJldCkgewo+Pj4+ICAgICAgICAgICAgICAgICAgIERSTV9FUlJPUigiRW5hYmxpbmcgUFBH VFQgZmFpbGVkICglZClcbiIsIHJldCk7Cj4+Pj4gICAgICAgICAgICAgICAgICAgZ290byBvdXQ7 Cj4+Pj4gICAgICAgICAgIH0KPj4+PiAgICAKPj4+PiAtICAgICAgIHJldCA9IGludGVsX3dvcGNt X2luaXRfaHcoJmRldl9wcml2LT53b3BjbSk7Cj4+Pj4gKyAgICAgICByZXQgPSBpbnRlbF93b3Bj bV9pbml0X2h3KCZpOTE1LT53b3BjbSk7Cj4+Pj4gICAgICAgICAgIGlmIChyZXQpIHsKPj4+PiAg ICAgICAgICAgICAgICAgICBEUk1fRVJST1IoIkVuYWJsaW5nIFdPUENNIGZhaWxlZCAoJWQpXG4i LCByZXQpOwo+Pj4+ICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Owo+Pj4+ICAgICAgICAgICB9 Cj4+Pj4gICAgCj4+Pj4gICAgICAgICAgIC8qIFdlIGNhbid0IGVuYWJsZSBjb250ZXh0cyB1bnRp bCBhbGwgZmlybXdhcmUgaXMgbG9hZGVkICovCj4+Pj4gLSAgICAgICByZXQgPSBpbnRlbF91Y19p bml0X2h3KGRldl9wcml2KTsKPj4+PiArICAgICAgIHJldCA9IGludGVsX3VjX2luaXRfaHcoaTkx NSk7Cj4+Pgo+Pj4gU29ydGluZyBvdXQgdGhlIHVjIGxheWVyaW5nIGlzIGFuIG9uZ29pbmcgdGFz ay4gSSB0aGluayBpdCBwcm9iYWJseQo+Pj4gbWVhbnMgb3VyIGluaXRfaHcgbmVlZHMgc3BsaXR0 aW5nLgo+Pgo+PiBJIHRoaW5rIGd1YyBhbmQgaHVjIGNvdWxkIGJlIG1hZGUgY2hpbGRyZW4gb2Yg aW50ZWxfZ3Qgc28gdGhpcyBjb3VsZCBiZQo+PiBjaGFuZ2VkIHRvIHRha2UgZ3QuIEl0J3MgYSBs b3Qgb2YgY29kZSB3aGljaCBJIGFtIG5vdCBzdXJlIGhhcyBtdWNoIHlldAo+PiB0byBsaXZlIHNv IEkgb3B0ZWQgbm90IHRvIHRvdWNoIGl0Lgo+IAo+IEkgY2FuIGdvIGVpdGhlciB3YXkuIFRoZXJl IGFyZSBhIGZldyBob29rcyBpbnRvIGUuZy4gaTkxNV9nZ3R0LCBidXQKPiBtb3N0bHkgaXQgaXMg YSBkaWZmZXJlbnQgbWVhbnMgb2YgZHJpdmluZyBIVyAoYnkgcGFzc2luZyB0aHJvdWdoIHRvIGEK PiBzZWNvbmQgZHJpdmVyIG9mIG91ciBIVywgZ3J1bWJsZSkgdmlhIGEgc2VwYXJhdGUgY29tbXVu aWNhdGlvbgo+IGNoYW5uZWwuIE9uIHRoZSB3aG9sZSwgSSB0aGluayBpdCByZXBsYWNlcyBndC8u Cj4gCj4gSW4gcGFzc2luZywgYXMgd2UgbW92ZSBpOTE1X2dndHQvaTkxNV9wcGd0dCBiZW5lYXRo IGd0Lywgd2Ugc2hvdWxkIGFsc28KPiBjb25zaWRlciB1c2luZyB0aGUgaW50ZWxfIHByZWZpeC4g VGhlIGdvYWwgaXMgdGhhdCB0aGVzZSBhcmUgdGhlIEhXCj4gaW50ZXJmYWNlIGZvciB0cmFja2lu ZyB0aGUgcGFnZSB0YWJsZXMgd2l0aCB0aGUgaTkxNV9nZW1fY29udGV4dCBiZWluZwo+IHRoZSBB UEkgaW50ZXJmYWNlLiAoQW5kIGlmIHRoZSBHRU0gdm0gYXBpIGdyb3dzIG1vcmUgd2Ugc2hvdWxk Cj4gaW50cm9kdWNlIGEgaTkxNV9nZW1fdm0vZ3R0IHdyYXBwZXIgYXJvdW5kIGludGVsX3BwZ3R0 LikKPiAKPj4+PiAgICAgICAgICAgaWYgKHJldCkgewo+Pj4+ICAgICAgICAgICAgICAgICAgIERS TV9FUlJPUigiRW5hYmxpbmcgdWMgZmFpbGVkICglZClcbiIsIHJldCk7Cj4+Pj4gICAgICAgICAg ICAgICAgICAgZ290byBvdXQ7Cj4+Pj4gICAgICAgICAgIH0KPj4+PiAgICAKPj4+PiAtICAgICAg IGludGVsX21vY3NfaW5pdF9sM2NjX3RhYmxlKCZkZXZfcHJpdi0+Z3QpOwo+Pj4+ICsgICAgICAg aW50ZWxfbW9jc19pbml0X2wzY2NfdGFibGUoZ3QpOwo+Pj4+ICAgIAo+Pj4+ICAgICAgICAgICAv KiBPbmx5IHdoZW4gdGhlIEhXIGlzIHJlLWluaXRpYWxpc2VkLCBjYW4gd2UgcmVwbGF5IHRoZSBy ZXF1ZXN0cyAqLwo+Pj4+IC0gICAgICAgcmV0ID0gaW50ZWxfZW5naW5lc19yZXN1bWUoZGV2X3By aXYpOwo+Pj4+ICsgICAgICAgcmV0ID0gaW50ZWxfZW5naW5lc19yZXN1bWUoaTkxNSk7Cj4+Pj4g ICAgICAgICAgIGlmIChyZXQpCj4+Pj4gICAgICAgICAgICAgICAgICAgZ290byBjbGVhbnVwX3Vj Owo+Pj4+ICAgIAo+Pj4+IC0gICAgICAgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoJmRldl9w cml2LT51bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+Pj4+ICsgICAgICAgaW50ZWxfdW5jb3JlX2Zv cmNld2FrZV9wdXQodW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKPj4+PiAgICAKPj4+PiAtICAgICAg IGludGVsX2VuZ2luZXNfc2V0X3NjaGVkdWxlcl9jYXBzKGRldl9wcml2KTsKPj4+PiAgICAgICAg ICAgcmV0dXJuIDA7Cj4+Pj4gICAgCj4+Pj4gICAgY2xlYW51cF91YzoKPj4+PiAtICAgICAgIGlu dGVsX3VjX2ZpbmlfaHcoZGV2X3ByaXYpOwo+Pj4+ICsgICAgICAgaW50ZWxfdWNfZmluaV9odyhp OTE1KTsKPj4+PiAgICBvdXQ6Cj4+Pj4gLSAgICAgICBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1 dCgmZGV2X3ByaXYtPnVuY29yZSwgRk9SQ0VXQUtFX0FMTCk7Cj4+Pj4gKyAgICAgICBpbnRlbF91 bmNvcmVfZm9yY2V3YWtlX3B1dCh1bmNvcmUsIEZPUkNFV0FLRV9BTEwpOwo+Pj4+ICsKPj4+PiAr ICAgICAgIHJldHVybiByZXQ7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK2ludCBpOTE1X2dlbV9pbml0 X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+Pj4KPj4+IERvIHdlIGFsc28gc3Rh cnQgdG8gcmVjb2duaXNlIHRoaXMgYXMgaTkxNV9pbml0X2h3KCk/IFRoaXMgaXMgdGhlIGRyaXZl cgo+Pj4gdGFsa2luZyB0byB0aGUgaW50ZWxfZ3QgYW5kIGZyaWVuZHMsIG5vdCB0aGUgZHJpdmVy IHNldHRpbmcgdXAgdGhlIEdFTQo+Pj4gYXBpLgo+Pgo+PiBOb3Qgc3VyZS4gVGhlcmUgYXJlIHNv bWUgR0VNIGJpdHMgaW5zaWRlIGxpa2Ugd2VkZ2VkIHN0YXR1cyBhbmQKPj4gc2NoZWR1bGVyIGNh cHMuIFNvIGl0IHNvdW5kcyBwYXNzYWJsZSB0byBsZWF2ZSBpdCBsaWtlIGl0IGlzIGZvciBub3cu Cj4gCj4gd2VkZ2VkIGlzIG1vc3RseSBvdXIgcmVzcG9uc2UgdG8gSFcsIGFuZCBpcyBjb250cm9s bGVkIGJ5Cj4gZ3QvaW50ZWxfcmVzZXQuYy4gIEJ1dCB3ZSBhbHNvIHVzZSB0byBkaXNhYmxlIHRo ZSBHRU0gdUFQSS4gSG93ZXZlciB0aGF0Cj4gaXMganVzdCB0aGUgQVBJIGxheWVyIGxvb2tpbmcg YXQgdGhlIHVuZGVybHlpbmcgSFcgc3RhdGUgYW5kIHNheWluZyAibm8gY2FuIGRvIi4KPiBIb3Bl ZnVsbHkuCj4gCj4gaTkxNS0+Z3B1X2Vycm9yIGlzIGRlZmluaXRlbHkgYW4gaW50ZXJlc3Rpbmcg YmVhc3QuIEkgYWN0dWFsbHkgdGhpbmsgaXQKPiBkb2Vzbid0IGJlbG9uZyBpbnNpZGUgaTkxNS0+ Z3QgYXMgaXQgaXMgYSBzZXBhcmF0ZSBIVyBzbmFwc2hvdCBmb3IKPiBkaWZmZXJlbnQgQVBJLCBi dXQgbm90IGFjdHVhbGx5IGEgcGFydCBvZiBkcml2aW5nIHRoZSBIVy4KPiAKPiBUaGUgY2Fwcy5z Y2hlZCBhcmUgYW4gaW50ZXJlc3Rpbmcgd2FydCwgd2UgYXJlIHN1bW1hcmlzaW5nIHRoZSBndAo+ IGZlYXR1cmVzIGFuZCB0aGV5IGNoYW5nZSBkZXBlbmRpbmcgb24gaG93IHdlIG1pc3RyZWF0IGd0 ICh3ZWRnZWQpLgoKSSByZWFkIHRoaXMgYXMgbGVhdmUgYXMgaXMgZm9yIG5vdy4KClJlZ2FyZHMs CgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4