From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v6] drm/i915: Engine discovery query Date: Fri, 5 Oct 2018 09:26:37 +0100 Message-ID: References: <153857141152.28435.3446419158314762301@skylake-alporthouse-com> <20181004105118.7693-1-tvrtko.ursulin@linux.intel.com> <153867081013.5379.8777245785213316963@skylake-alporthouse-com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4C37189153 for ; Fri, 5 Oct 2018 08:30:52 +0000 (UTC) In-Reply-To: <153867081013.5379.8777245785213316963@skylake-alporthouse-com> Content-Language: en-GB 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 List-Id: intel-gfx@lists.freedesktop.org Ck9uIDA0LzEwLzIwMTggMTc6MzMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdW90aW5nIFR2cnRr byBVcnN1bGluICgyMDE4LTEwLTA0IDExOjUxOjE4KQo+PiBGcm9tOiBUdnJ0a28gVXJzdWxpbiA8 dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+Pgo+PiBFbmdpbmUgZGlzY292ZXJ5IHF1ZXJ5IGFs bG93cyB1c2Vyc3BhY2UgdG8gZW51bWVyYXRlIGVuZ2luZXMsIHByb2JlIHRoZWlyCj4+IGNvbmZp Z3VyYXRpb24gZmVhdHVyZXMsIGFsbCB3aXRob3V0IG5lZWRpbmcgdG8gbWFpbnRhaW4gdGhlIGlu dGVybmFsIFBDSQo+PiBJRCBiYXNlZCBkYXRhYmFzZS4KPj4KPj4gQSBuZXcgcXVlcnkgZm9yIHRo ZSBnZW5lcmljIGk5MTUgcXVlcnkgaW9jdGwgaXMgYWRkZWQgbmFtZWQKPj4gRFJNX0k5MTVfUVVF UllfRU5HSU5FX0lORk8sIHRvZ2V0aGVyIHdpdGggYWNjb21wYW55aW5nIHN0cnVjdHVyZQo+PiBk cm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mby4gVGhlIGFkZHJlc3Mgb2YgbGF0dGVyIHNob3VsZCBi ZSBwYXNzZWQgdG8gdGhlCj4+IGtlcm5lbCBpbiB0aGUgcXVlcnkuZGF0YV9wdHIgZmllbGQsIGFu ZCBzaG91bGQgYmUgbGFyZ2UgZW5vdWdoIGZvciB0aGUKPj4ga2VybmVsIHRvIGZpbGwgb3V0IGFs bCBrbm93biBlbmdpbmVzIGFzIHN0cnVjdCBkcm1faTkxNV9lbmdpbmVfaW5mbwo+PiBlbGVtZW50 cyB0cmFpbGluZyB0aGUgcXVlcnkuCj4+Cj4+IEFzIHdpdGggb3RoZXIgcXVlcmllcywgc2V0dGlu ZyB0aGUgaXRlbSBxdWVyeSBsZW5ndGggdG8gemVybyBhbGxvd3MKPj4gdXNlcnNwYWNlIHRvIHF1 ZXJ5IG1pbmltdW0gcmVxdWlyZWQgYnVmZmVyIHNpemUuCj4+Cj4+IEVudW1lcmF0ZWQgZW5naW5l cyBoYXZlIGNvbW1vbiB0eXBlIG1hc2sgd2hpY2ggY2FuIGJlIHVzZWQgdG8gcXVlcnkgYWxsCj4+ IGhhcmR3YXJlIGVuZ2luZXMsIHZlcnN1cyBlbmdpbmVzIHVzZXJzcGFjZSBjYW4gc3VibWl0IHRv IHVzaW5nIHRoZSBleGVjYnVmCj4+IHVBUEkuCj4+Cj4+IEVuZ2luZXMgYWxzbyBoYXZlIGNhcGFi aWxpdGllcyB3aGljaCBhcmUgcGVyIGVuZ2luZSBjbGFzcyBuYW1lc3BhY2Ugb2YKPj4gYml0cyBk ZXNjcmliaW5nIGZlYXR1cmVzIG5vdCBwcmVzZW50IG9uIGFsbCBlbmdpbmUgaW5zdGFuY2VzLgo+ Pgo+PiB2MjoKPj4gICAqIEZpeGVkIEhFVkMgYXNzaWdubWVudC4KPj4gICAqIFJlb3JkZXIgc29t ZSBmaWVsZHMsIHJlbmFtZSB0eXBlIHRvIGZsYWdzLCBpbmNyZWFzZSB3aWR0aC4gKExpb25lbCkK Pj4gICAqIE5vIG5lZWQgdG8gYWxsb2NhdGUgdGVtcG9yYXJ5IHN0b3JhZ2UgaWYgd2UgZG8gaXQg ZW5naW5lIGJ5IGVuZ2luZS4KPj4gICAgIChMaW9uZWwpCj4+Cj4+IHYzOgo+PiAgICogRGVzY3Jp YmUgZW5naW5lIGZsYWdzIGFuZCBtYXJrIG1ieiBmaWVsZHMuIChMaW9uZWwpCj4+ICAgKiBIRVZD IG9ubHkgYXBwbGllcyB0byBWQ1MuCj4+Cj4+IHY0Ogo+PiAgICogU3F1YXNoIFNGQyBmbGFnIGlu dG8gbWFpbiBwYXRjaC4KPj4gICAqIFRpZHkgc29tZSBjb21tZW50cy4KPj4KPj4gdjU6Cj4+ICAg KiBBZGQgdWFiaV8gcHJlZml4IHRvIGVuZ2luZSBjYXBhYmlsaXRpZXMuIChDaHJpcyBXaWxzb24p Cj4+ICAgKiBSZXBvcnQgZXhhY3Qgc2l6ZSBvZiBlbmdpbmUgaW5mbyBhcnJheS4gKENocmlzIFdp bHNvbikKPj4gICAqIERyb3AgdGhlIGVuZ2luZSBmbGFncy4gKEpvb25hcyBMYWh0aW5lbikKPj4g ICAqIEFkZGVkIHNvbWUgbW9yZSByZXNlcnZlZCBmaWVsZHMuCj4+ICAgKiBNb3ZlIGZsYWdzIGFm dGVyIGNsYXNzL2luc3RhbmNlLgo+Pgo+PiB2NjoKPj4gICAqIERvIG5vdCBjaGVjayBlbmdpbmUg aW5mbyBhcnJheSB3YXMgemVyb2VkIGJ5IHVzZXJzcGFjZSBidXQgemVybyB0aGUKPj4gICAgIHVu dXNlZCBmaWVsZHMgZm9yIHRoZW0gaW5zdGVhZC4KPj4KPj4gU2lnbmVkLW9mZi1ieTogVHZydGtv IFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPj4gQ2M6IENocmlzIFdpbHNvbiA8 Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+PiBDYzogSm9uIEJsb29tZmllbGQgPGpvbi5ibG9v bWZpZWxkQGludGVsLmNvbT4KPj4gQ2M6IERtaXRyeSBSb2dvemhraW4gPGRtaXRyeS52LnJvZ296 aGtpbkBpbnRlbC5jb20+Cj4+IENjOiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdl cmxpbkBpbnRlbC5jb20+Cj4+IENjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBs aW51eC5pbnRlbC5jb20+Cj4+IENjOiBUb255IFllIDx0b255LnllQGludGVsLmNvbT4KPj4gLS0t Cj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jICAgICAgIHwgNTYgKysrKysr KysrKysrKysrKysrKysrKysrKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2lu ZV9jcy5jICB8IDEyICsrKysrKwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuaCB8ICAzICsrCj4+ICAgaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgICAg ICAgIHwgNDcgKysrKysrKysrKysrKysrKysrKysrCj4+ICAgNCBmaWxlcyBjaGFuZ2VkLCAxMTgg aW5zZXJ0aW9ucygrKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9xdWVyeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jCj4+IGluZGV4IDU4 MjEwMDJjYWQ0Mi4uNWFjOGVmOWY1ZGU0IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3F1ZXJ5LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVy eS5jCj4+IEBAIC04NCw5ICs4NCw2NSBAQCBzdGF0aWMgaW50IHF1ZXJ5X3RvcG9sb2d5X2luZm8o c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAgICAgICAgICByZXR1cm4gdG90 YWxfbGVuZ3RoOwo+PiAgIH0KPj4gICAKPj4gK3N0YXRpYyBpbnQKPj4gK3F1ZXJ5X2VuZ2luZV9p bmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+PiArICAgICAgICAgICAgICAgICBz dHJ1Y3QgZHJtX2k5MTVfcXVlcnlfaXRlbSAqcXVlcnlfaXRlbSkKPj4gK3sKPj4gKyAgICAgICBz dHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2luZm8gX191c2VyICpxdWVyeV9wdHIgPQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU2NF90b191c2VyX3B0cihxdWVyeV9pdGVt LT5kYXRhX3B0cik7Cj4+ICsgICAgICAgc3RydWN0IGRybV9pOTE1X2VuZ2luZV9pbmZvIF9fdXNl ciAqaW5mb19wdHIgPSAmcXVlcnlfcHRyLT5lbmdpbmVzWzBdOwo+PiArICAgICAgIHN0cnVjdCBk cm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbyBxdWVyeTsKPj4gKyAgICAgICBzdHJ1Y3QgZHJtX2k5 MTVfZW5naW5lX2luZm8gaW5mbyA9IHsgfTsKPj4gKyAgICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmU7Cj4+ICsgICAgICAgZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4+ICsgICAg ICAgaW50IGxlbjsKPj4gKwo+PiArICAgICAgIGlmIChxdWVyeV9pdGVtLT5mbGFncykKPj4gKyAg ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArCj4+ICsgICAgICAgbGVuID0gMDsKPj4g KyAgICAgICBmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkKPj4gKyAgICAgICAgICAg ICAgIGxlbisrOwo+IAo+IChJc24ndCB0aGlzIElOVEVMX0lORk8oKS0+bnVtX3JpbmdzPykKCi9v XAoKPj4gKyAgICAgICBsZW4gKj0gc2l6ZW9mKHN0cnVjdCBkcm1faTkxNV9lbmdpbmVfaW5mbyk7 Cj4+ICsgICAgICAgbGVuICs9IHNpemVvZihzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfZW5naW5lX2lu Zm8pOwo+PiArCj4+ICsgICAgICAgaWYgKCFxdWVyeV9pdGVtLT5sZW5ndGgpCj4+ICsgICAgICAg ICAgICAgICByZXR1cm4gbGVuOwo+PiArICAgICAgIGVsc2UgaWYgKHF1ZXJ5X2l0ZW0tPmxlbmd0 aCA8IGxlbikKPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArCj4+ICsgICAg ICAgaWYgKGNvcHlfZnJvbV91c2VyKCZxdWVyeSwgcXVlcnlfcHRyLCBzaXplb2YocXVlcnkpKSkK Pj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOwo+PiArCj4+ICsgICAgICAgaWYgKHF1 ZXJ5Lm51bV9lbmdpbmVzIHx8IHF1ZXJ5LnJzdmRbMF0gfHwgcXVlcnkucnN2ZFsxXSB8fAo+PiAr ICAgICAgICAgICBxdWVyeS5yc3ZkWzJdKQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5W QUw7Cj4+ICsKPj4gKyAgICAgICBpZiAoIWFjY2Vzc19vayhWRVJJRllfV1JJVEUsIHF1ZXJ5X3B0 ciwgcXVlcnlfaXRlbS0+bGVuZ3RoKSkKPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUZBVUxU Owo+IAo+IEhtbSwgc28gbGVuZ3RoIGlzIHRoZSBzaXplb2Ygb2YgdGhlIHdob2xlIHN0cnVjdCBh bmQgbm90IHRoZSBzcGFjZSBpbgo+IHRoZSBwb2ludGVkIGF0IGJsb2NrPyBPay4gSSB3YXMganVz dCBhIGxpdHRsZSBjb25mdXNlZCBieSB0aGUgbGFjayBvZgo+IGNoZWNraW5nIGZvciBpbmZvX3B0 ciwgYXMgYnkgdGhpcyBwb2ludCB0aGUgY29ubmVjdGlvbiB3aXRoIHF1ZXJ5X3B0ciBpcwo+IG9m ZiB0aGUgcGFnZS4KPiAKPiBNYXkgSSBiZWcKPiAJaW5mb19wdHIgPSAmcXVlcnlfcHRyLT5lbmdp bmVzWzBdOwo+IGhlcmUuIFRoYXQgc2hvdWxkIG1ha2UgaXQgbW9yZSBvYnZpb3VzIGZvciBmZWVi bGUgcmVhZGVycyBsaWtlIG15c2VsZiB0bwo+IHNlZSB0aGF0IGluZm9fcHRyIGlzIGNvbnRhaW5l ZCB3aXRoaW4gdGhlIGFjY2Vzc19vayBjaGVjay4KCk9rLgoKPiAKPj4gKyAgICAgICBmb3JfZWFj aF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewo+PiArICAgICAgICAgICAgICAgaW5mby5jbGFz cyA9IGVuZ2luZS0+dWFiaV9jbGFzczsKPj4gKyAgICAgICAgICAgICAgIGluZm8uaW5zdGFuY2Ug PSBlbmdpbmUtPmluc3RhbmNlOwo+PiArICAgICAgICAgICAgICAgaW5mby5jYXBhYmlsaXRpZXMg PSBlbmdpbmUtPnVhYmlfY2FwYWJpbGl0aWVzOwo+PiArCj4gCj4gR0VNX0JVR19PTigodm9pZCAq KWluZm9fcHRyID4gKHZvaWQgKilxdWVyeV9wdHIgKyBxdWVyeV9pdGVtLT5sZW5ndGggLSBzaXpl b2YoaW5mbykpOwoKVGhlcmUgaXMgYSBjaGVjayBhYm92ZSB0aGF0IGxlbiBmaXRzIGluIHF1ZXJ5 X2l0ZW0tPmxlbmd0aC4gU28gdW5sZXNzIAp0aGUgY29kZSBkaXN0cnVzdHMgaXRzZWxmIGluIGEg c3BhY2Ugb2YgYSBmZXcgbGluZXMsIG9yIHdlIGRpc3RydXN0IApJTlRFTF9JTkZPLT5udW1fZW5n aW5lcyB2cyBmb3JfZWFjaF9lbmdpbmUgSSBkb24ndCBzZWUgaXQgaXMgbmVlZGVkPwoKPiAKPj4g KyAgICAgICAgICAgICAgIGlmIChfX2NvcHlfdG9fdXNlcihpbmZvX3B0ciwgJmluZm8sIHNpemVv ZihpbmZvKSkpCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOwo+PiAr Cj4+ICsgICAgICAgICAgICAgICBxdWVyeS5udW1fZW5naW5lcysrOwo+PiArICAgICAgICAgICAg ICAgaW5mb19wdHIrKzsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAgICAgICBpZiAoX19jb3B5X3Rv X3VzZXIocXVlcnlfcHRyLCAmcXVlcnksIHNpemVvZihxdWVyeSkpKQo+PiArICAgICAgICAgICAg ICAgcmV0dXJuIC1FRkFVTFQ7Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gbGVuOwo+PiArfQo+PiAr Cj4+ICAgc3RhdGljIGludCAoKiBjb25zdCBpOTE1X3F1ZXJ5X2Z1bmNzW10pKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfaXRlbSAqcXVlcnlfaXRlbSkgPSB7Cj4+ ICAgICAgICAgIHF1ZXJ5X3RvcG9sb2d5X2luZm8sCj4+ICsgICAgICAgcXVlcnlfZW5naW5lX2lu Zm8sCj4+ICAgfTsKPj4gICAKPj4gICBpbnQgaTkxNV9xdWVyeV9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4+IGluZGV4IDFjNjE0M2JkZjVhNC4uMTM0ZjBj ZWM3MjRjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVf Y3MuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+PiBA QCAtMjk4LDYgKzI5OCwxOCBAQCBpbnRlbF9lbmdpbmVfc2V0dXAoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+PiAgICAgICAgICBlbmdpbmUtPnVhYmlfaWQgPSBpbmZvLT51YWJp X2lkOwo+PiAgICAgICAgICBlbmdpbmUtPnVhYmlfY2xhc3MgPSBpbnRlbF9lbmdpbmVfY2xhc3Nl c1tpbmZvLT5jbGFzc10udWFiaV9jbGFzczsKPj4gICAKPj4gKyAgICAgICBpZiAoZW5naW5lLT5j bGFzcyA9PSBWSURFT19ERUNPREVfQ0xBU1MpIHsKPj4gKyAgICAgICAgICAgICAgIC8qIEhFVkMg c3VwcG9ydCBpcyBwcmVzZW50IG9ubHkgb24gdmNzMC4gKi8KPj4gKyAgICAgICAgICAgICAgIGlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDggJiYgaW5mby0+aW5zdGFuY2UgPT0gMCkKPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgZW5naW5lLT51YWJpX2NhcGFiaWxpdGllcyA9Cj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSTkxNV9WQ1NfQ0xBU1NfQ0FQQUJJTElUWV9IRVZD Owo+PiArCj4+ICsgICAgICAgICAgICAgICAvKiBTRkMgc3VwcG9ydCBpcyB3aXJlZCBvbmx5IHRv IGV2ZW4gVkNTIGluc3RhbmNlcy4gKi8KPj4gKyAgICAgICAgICAgICAgIGlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDkgJiYgIShpbmZvLT5pbnN0YW5jZSAmIDEpKQo+PiArICAgICAgICAgICAg ICAgICAgICAgICBlbmdpbmUtPnVhYmlfY2FwYWJpbGl0aWVzIHw9Cj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSTkxNV9WQ1NfQ0xBU1NfQ0FQQUJJTElUWV9TRkM7Cj4gCj4gSSB0 cnVzdCB5b3VyIGp1ZGdlbWVudCBoZXJlLgoKQW5kIEkgdHJ1c3QgcGVuZGluZyBmZWVkYmFjayBm cm9tIG1lZGlhIHRlYW0uIDopCgo+IAo+PiArLyoqCj4+ICsgKiBzdHJ1Y3QgZHJtX2k5MTVfcXVl cnlfZW5naW5lX2luZm8KPj4gKyAqCj4+ICsgKiBFbmdpbmUgaW5mbyBxdWVyeSBlbnVtZXJhdGVz IGFsbCBlbmdpbmVzIGtub3duIHRvIHRoZSBkcml2ZXIgYnkgZmlsbGluZyBpbgo+PiArICogYW4g YXJyYXkgb2Ygc3RydWN0IGRybV9pOTE1X2VuZ2luZV9pbmZvIHN0cnVjdHVyZXMuCj4+ICsgKi8K Pj4gK3N0cnVjdCBkcm1faTkxNV9xdWVyeV9lbmdpbmVfaW5mbyB7Cj4+ICsgICAgICAgLyoqIE51 bWJlciBvZiBzdHJ1Y3QgZHJtX2k5MTVfZW5naW5lX2luZm8gc3RydWN0cyBmb2xsb3dpbmcuICov Cj4+ICsgICAgICAgX191MzIgbnVtX2VuZ2luZXM7Cj4+ICsKPj4gKyAgICAgICAvKiogTUJaICov Cj4+ICsgICAgICAgX191MzIgcnN2ZFszXTsKPj4gKwo+PiArICAgICAgIC8qKiBNYXJrZXIgZm9y IGRybV9pOTE1X2VuZ2luZV9pbmZvIHN0cnVjdHVyZXMuICovCj4+ICsgICAgICAgc3RydWN0IGRy bV9pOTE1X2VuZ2luZV9pbmZvIGVuZ2luZXNbXTsKPiAKPiBEbyB3ZSBuZWVkIFswXSBmb3Igb2xk LWMvYysrIGNvbXBhdGliaWxpdHk/CgpIbS4uIHRyeWluZyB0byByZW1lbWJlci4gSXQgaXMgR05V IEMgdnMgQzk5IGZvciB6ZXJvIHNpemVkIGFycmF5IHZzIApmbGV4aWJsZSBhcnJheSBtZW1iZXIu IFdlIHdlbnQgZm9yIHRoZSBsYXR0ZXIgaW4gdGhlIHRvcG9sb2d5IHF1ZXJ5IAphZnRlciBzb21l IGRpc2N1c3Npb24gYnV0IEkgZG9uJ3QgcmVtZW1iZXIgdGhlIGRldGFpbHMgbm93LiBHcmVwcGlu ZyB0aGUgCnVhcGkgaGVhZGVycyB0aGVyZSBhcmUgYm90aCBzbyBkb24ndCBrbm93Li4gR0NDIGRv Y3VtZW50YXRpb24gc2F5cyAKZmxleGlibGUgbWVtYmVycyBhcmUgcHJlZmVycmVkLgoKPiAKPiBS ZXZpZXdlZC1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gCj4g SSdkIHZhbHVlIGFuIGFjayBmcm9tIExpb25lbCBpbiBjYXNlIEkndmUgZm9yZ290dGVuIGEgcXVp cmsgYWJvdXQgdGhlCj4gcXVlcnkgYXBpLCBhbmQgYW4gYWNrIGZyb20gYSB1c2VyIHRoYXQgdGhp cyBtZWV0cyB0aGVpciBuZWVkcy4gSXQgd2lsbAo+IGNlcnRhaW5seSBzaW1wbGlmeSBzb21lIG9m IG91ciBpZ3QgY29kZSEKCkhhdmUgci1iIGZyb20gTGlvbmVsIGFscmVhZHkuCgo+IFF1ZXN0aW9u IGZvciBvdmVyYWxsIGRlc2lnbiwgZG8gd2Ugd2FudCBhIGNvbmpvaW50IGNhcGFiaWxpdHkgZmxh Zwo+IHNwYWNlLCBvciBvbmUgcGVyIGNsYXNzPyBPbmUgcGVyIGNsYXNzIGdpdmVzIHVzIG1vcmUg cm9vbSwgc28gSSB0aGluawo+IHNob3VsZCBiZSBwcmVmZXJyZWQsIGJ1dCBJIHdvbmRlciBpZiBh IHNldCBvZiBjb21tb24gZmxhZ3Mgd291bGQgbWFrZQo+IGl0IGVhc2llciBmb3IgdXNlcnNwYWNl IHRvIGZpbHRlci4gKFRob3VnaCBub3QgaGFyZCB0byBtYXRjaCBvbiBib3RoCj4gY2xhc3MgYW5k IGNhcHMhKQoKQ291bGQgc3BsaXQgY29tbW9uIGFuZCBwZXIgY2xhc3MsIDMyLWJpdHMgZWFjaCB3 aXRoIHNlcGFyYXRlIGZpZWxkcz8KCglfX3UzMiBjYXBhYmlsaXRpZXM7CglfX3UzMiBjbGFzc19j YXBhYmlsaXRpZXM7CgpPciBrZWVwIF9fdTY0IGNhcGFiaWxpdGllcyBhbmQgc2F5IGNvbW1vbiBz dGFydCBmcm9tIGJpdDAgYW5kIHBlciBjbGFzcyAKc3RhcnQgYXQgYml0MzI/IHRoaXMgb3B0aW9u IGNvdWxkIGJlIGFkZGVkL2RlZmluZWQgcG9zdCBmYWN0dW0gYXMgd2VsbCwgCndpdGggbm8gcmVx dWlyZWQgY2hhbmdlcyBub3cgLSBvbmNlIHRoZXJlIGlzIGEgZmlyc3QgY29tbW9uIGNhcC4gQXMg bG9uZyAKYXMgdGhlcmUgaXMgYSBuaWNlIGJsb2NrIG9mIGZyZWUgYml0cyBhdCB0aGF0IHBvaW50 LgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK