From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [PATCH v2] drm/i915: Sanitize GuC client initialization Date: Tue, 21 Feb 2017 17:38:24 +0200 Message-ID: <1487691504.3137.37.camel@linux.intel.com> References: <1487080386-16022-1-git-send-email-joonas.lahtinen@linux.intel.com> <9a46eb2b-a2da-2a8e-deb4-e626f7ed27ab@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8A60A6E680 for ; Tue, 21 Feb 2017 15:38:28 +0000 (UTC) In-Reply-To: <9a46eb2b-a2da-2a8e-deb4-e626f7ed27ab@intel.com> 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 , Intel graphics driver community testing & development List-Id: intel-gfx@lists.freedesktop.org T24ga2UsIDIwMTctMDItMTUgYXQgMTg6MjggLTA4MDAsIERhbmllbGUgQ2VyYW9sbyBTcHVyaW8g d3JvdGU6Cj4gCj4gT24gMTQvMDIvMTcgMDU6NTMsIEpvb25hcyBMYWh0aW5lbiB3cm90ZToKPiA+ IAo+ID4gU3RhcnRlZCBhZGRpbmcgcHJvcGVyIHRlYXJkb3duIHRvIGd1Y19jbGllbnRfYWxsb2Ms IGVuZGVkIHVwIHJlbW92aW5nCj4gPiBxdWl0ZSBhIGZldyBkZWFkIGVuZHMgd2hlcmUgZXJyb3Jz IGNvbW11bmljYXRpbmcgd2l0aCB0aGUgR3VDIHdlcmUKPiA+IHNpbGVudGx5IGlnbm9yZWQuIFRo ZXJlIGFsc28gc2VlbWVkIHRvIGJlIHF1aXRlIGEgZmV3IGVycm9ub3VzCj4gPiB0ZWFyZG93biBh Y3Rpb25zIHBlcmZvcm1lZCBpbiBjYXNlIG9mIGFuIGVycm9yIChvcmRlcmluZyB3cm9uZykuCj4g PiAKPiA+IHYyOgo+ID4gCS0gSW5jcmVhc2UgZnVuY3Rpb24gc3ltbWV0cnkvcHJveGltaXR5IChN aWNoYWwvRGFuaWVsZSkKPiA+IAktIEZpeCBfX3Jlc2VydmVfZG9vcmJlbGwgYWNjb3VudGluZyBm b3IgaGlnaCBwcmlvcml0eSAoRGFuaWVsZSkKPiA+IAktIENhbGwgX191cGRhdGVfZG9vcmJlbGxf ZGVzYyEgKERhbmllbGUpCj4gPiAJLSBJc29sYXRlIF9fZ3VjX3ssZGV9YWxsb2NhdGVfZG9vcmJl bGwgKE1pY2hhbC9EYW5pZWxlKQo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBKb29uYXMgTGFodGlu ZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4gPiBDYzogTWljaGFsIFdhamRl Y3prbyA8bWljaGFsLndhamRlY3prb0BpbnRlbC5jb20+Cj4gPiBDYzogQXJrYWRpdXN6IEhpbGVy IDxhcmthZGl1c3ouaGlsZXJAaW50ZWwuY29tPgo+ID4gQ2M6IE9zY2FyIE1hdGVvIDxvc2Nhci5t YXRlb0BpbnRlbC5jb20+Cj4gPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGlu dGVsLmNvbT4KPiA+IENjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4K PiA+IENjOiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50 ZWwuY29tPgoKPFNOSVA+Cgo+ID4gK3N0YXRpYyBib29sIGhhc19kb29yYmVsbChzdHJ1Y3QgaTkx NV9ndWNfY2xpZW50ICpjbGllbnQpCj4gPiArewo+ID4gKwlpZiAoY2xpZW50LT5kb29yYmVsbF9p ZCA9PSBHVUNfRE9PUkJFTExfSU5WQUxJRCkKPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+IAo+ID4g LQkvKiBBY3RpdmF0ZSB0aGUgbmV3IGRvb3JiZWxsICovCj4gPiAtCV9fc2V0X2JpdChuZXdfaWQs IGRvb3JiZWxsX2JpdG1hcCk7Cj4gPiArCXJldHVybiB0ZXN0X2JpdChjbGllbnQtPmRvb3JiZWxs X2lkLCBjbGllbnQtPmd1Yy0+ZG9vcmJlbGxfYml0bWFwKTsKPiAKPiBTaG91bGQgd2Ugd2Fybi9n ZW1fYnVnIGlmIGNsaWVudC0+ZG9vcmJlbGxfaWQgIT0gR1VDX0RPT1JCRUxMX0lOVkFMSUTCoAo+ IGFuZCB0aGUgYml0IGluIGd1Yy0+ZG9vcmJlbGxfYml0bWFwIGlzIG5vdCBzZXQ/IE5vdCBzdXJl IGlmIHlvdSBwbGFuIHRvwqAKPiBkZWNvdXBsZSB0aGVtIG1vcmUgaW4gdGhlIGZ1dHVyZSwgYnV0 IHdpdGggdGhlIGN1cnJlbnQgY29kZSBpdCBzaG91bGTCoAo+IGFsd2F5cyBiZSBpbXBvc3NpYmxl IHRvIGhhdmUgYSB2YWxpZCBkb29yYmVsbCB3aXRob3V0IHRoZSBiaXQgaW4gdGhlwqAKPiBiaXRt YXNrIGJlaW5nIHNldC4gTWF5YmUgd2UgY2FuIGp1c3QgcmV0dXJuIGNsaWVudC0+ZG9vcmJlbGxf aWQgIT3CoAo+IEdVQ19ET09SQkVMTF9JTlZBTElEIGhlcmUgaWYgd2UgaGF2ZSBubyBwbGFuIGZv ciBhIGNhc2Ugd2hlcmUgdGhleSBjYW7CoAo+IGJlIG91dCBvZiBzeW5jLgoKS2luZGEgYSBsZWZ0 b3ZlciBmcm9tIHJlc3RydWN0dXJpbmcsIHRoZSBzZWxlY3Rpb24gYW5kIHJlc2VydmF0aW9uIHdl cmUKYSBkaWZmZXJlbnQgdGhpbmcgYXQgc29tZSBwb2ludC4gQ2hhbmdlZCBpbnRvIEdFTV9CVUdf T04uCgo+ID4gK3N0YXRpYyBpbnQgX19kZXN0cm95X2Rvb3JiZWxsKHN0cnVjdCBpOTE1X2d1Y19j bGllbnQgKmNsaWVudCkKPiA+IMKgewo+ID4gLQkodm9pZClndWNfdXBkYXRlX2Rvb3JiZWxsX2lk KGd1YywgY2xpZW50LCBHVUNfSU5WQUxJRF9ET09SQkVMTF9JRCk7Cj4gPiArCXN0cnVjdCBndWNf ZG9vcmJlbGxfaW5mbyAqZG9vcmJlbGw7Cj4gPiAKPiA+IC0JLyogWFhYOiB3YWl0IGZvciBhbnkg aW50ZXJydXB0cyAqLwo+ID4gLQkvKiBYWFg6IHdhaXQgZm9yIHdvcmtxdWV1ZSB0byBkcmFpbiAq Lwo+ID4gKwlkb29yYmVsbCA9IF9fZ2V0X2Rvb3JiZWxsKGNsaWVudCk7Cj4gPiArCWRvb3JiZWxs LT5kYl9zdGF0dXMgPSBHVUNfRE9PUkJFTExfRElTQUJMRUQ7Cj4gPiArCWRvb3JiZWxsLT5jb29r aWUgPSAwOwo+ID4gKwo+IAo+IE5vdCBmcm9tIHRoaXMgcGF0Y2ggKGJ1dCBzaW5jZSB3ZSdyZSBh dCBpdC4uLiksIEkgZGlkIGEgYml0IG9mIGRpZ2dpbmfCoAo+IGFuZCBJJ3ZlIGZvdW5kIHRoYXQg ZG9vcmJlbGwgcmVsZWFzZSBmbG93IHJlcXVpcmVzIFNXIHRvIHBvbGwgdGhlwqAKPiBHRU44X0RS QlJFR0woZGJfaWQpIHJlZ2lzdGVyIGFmdGVyIHVwZGF0aW5nIGRvb3JiZWxsLT5kYl9zdGF0dXMg dG8gd2FpdMKgCj4gZm9yIHRoZSBHRU44X0RSQl9WQUxJRCBiaXQgdG8gZ28gdG8gemVyby4gVGhp cyBlbnN1cmVzIHRoYXQgYW55IHBlbmRpbmfCoAo+IGV2ZW50cyBhcmUgcHJvY2Vzc2VkIGJlZm9y ZSB3ZSBjYWxsIGludG8gR3VDIHRvIHJlbGVhc2UgdGhlIGRvb3JiZWxsLsKgCj4gTm90ZSB0aGF0 IEd1QyB3aWxsIGZhaWwgdGhlIERFQUxMT0NBVEVfRE9PUkJFTEwgYWN0aW9uIGlmIHRoZSBiaXQg aGFzwqAKPiBub3QgZ29uZSB0byB6ZXJvIHlldC4gVGhpcyBpcyBjdXJyZW50bHkgbm90IGFuIGlz c3VlLCBwcm9iYWJseSBiZWNhdXNlwqAKPiB3ZSB1c2UgYSBzaW5nbGUgZG9vcmJlbGwgYW5kIHdl IGRvbid0IHJpbmcgaXQgbmVhciByZWxlYXNlIHRpbWUsIGJ1dCB0aGXCoAo+IHNpdHVhdGlvbiBj b3VsZCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSBzbyBJIGJlbGlldmUgaXQgaXMgd29ydGggdG8gZml4 IGl0wqAKPiBub3cuIEkgY2FuIGZvbGxvdyB1cCB3aXRoIGFuIGFkZGl0aW9uYWwgcGF0Y2ggaWYg eW91IHdhbnQgdG8ga2VlcCB0aGlzwqAKPiBvbmUgYXMgcmVmYWN0b3Jpbmcgb25seS4KCkFjaywg YWRkIGEgZm9sbG93LXVwIG9uIHRvcCBvZiB5b3VyIHNlcmllcy4KCj4gPiAtc3RhdGljIHVpbnQz Ml90IHNlbGVjdF9kb29yYmVsbF9jYWNoZWxpbmUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ID4g KwlyZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHVuc2lnbmVkIGxvbmcgX19yZXNl cnZlX2NhY2hlbGluZShzdHJ1Y3QgaW50ZWxfZ3VjKiBndWMpCj4gCj4gInJlc2VydmVfY2FjaGVs aW5lIiBkb2Vzbid0IHJlYWxseSByZWZsZWN0IHdoYXQgaGFwcGVucywgYmVjYXVzZSBtb3JlwqAK PiBkb29yYmVsbHMgY2FuIHVzZSB0aGUgc2FtZSBjYWNoZWxpbmUgKHdoaWxlIHRoZXkgYXJlIG9u IGRpZmZlcmVudMKgCj4gcGh5c2ljYWwgcGFnZXMpIGFuZCB0aGVyZSBpcyBubyBjb25jZXB0IG9m IHVucmVzZXJ2aW5nIHRoZSBjYWNoZWxpbmUuwqAKPiBUaGUgaWRlYSBpcyB0byB0cnkgdG8gYXZv aWQgaGF2aW5nIGxvdHMgb2YgZG9vcmJlbGxzIG9uIHRoZSBzYW1lwqAKPiBjYWNoZWxpbmUgaWYg cG9zc2libGUgdG8gbWFrZSB0aGUgbW9uaXRvcmluZyBtb3JlIGVmZmljaWVudCBvbiB0aGUgSFcs wqAKPiBzbyBJJ2Qga2VlcCB0aGUgInNlbGVjdF9jYWNoZWxpbmUiIG5hbWluZyBmb3IgdGhpcyBm dW5jdGlvbi4gV2Ugc2hvdWxkwqAKPiBwcm9iYWJseSBhbHNvIGxvb2sgYXQgbW9kaWZ5aW5nIHRo ZSBmdW5jdGlvbiB0byB1c2Ugc29tZXRoaW5nIG1vcmXCoAo+IGVsYWJvcmF0ZWQgdGhhbiBhIHNp bXBsZSByb3VuZCByb2JpbiBzY2hlbWUgdG8gZW5zdXJlIGRvb3JiZWxscyBhcmXCoAo+IGVxdWFs bHkgZGlzdHJpYnVpdGVkIG9uIGNhY2hlbGluZXMsIGJ1dCB0aGF0IGNhbiBwcm9iYWJseSB3YWl0 IHVudGlsIHdlwqAKPiB1c2UgbW9yZSBkb29yYmVsbHMuCgpSZW5hbWVkLgoKCj4gPiDCoC8qCj4g PiDCoCAqIEJvcnJvdyB0aGUgZmlyc3QgY2xpZW50IHRvIHNldCB1cCAmIHRlYXIgZG93biBlYWNo IHVudXNlZCBkb29yYmVsbAo+ID4gwqAgKiBpbiB0dXJuLCB0byBlbnN1cmUgdGhhdCBhbGwgZG9v cmJlbGwgaC93IGlzIChyZSlpbml0aWFsaXNlZC4KPiA+IMKgICovCj4gPiAtc3RhdGljIHZvaWQg Z3VjX2luaXRfZG9vcmJlbGxfaHcoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ID4gK3N0YXRpYyBp bnQgZ3VjX2luaXRfZG9vcmJlbGxfaHcoc3RydWN0IGludGVsX2d1YyAqZ3VjKQo+ID4gwqB7Cj4g PiDCoAlzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpjbGllbnQgPSBndWMtPmV4ZWNidWZfY2xpZW50 Owo+ID4gLQl1aW50MTZfdCBkYl9pZDsKPiA+IC0JaW50IGksIGVycjsKPiA+ICsJaW50IGVycjsK PiA+ICsJaW50IGk7Cj4gPiAKPiA+IC0JZ3VjX2Rpc2FibGVfZG9vcmJlbGwoZ3VjLCBjbGllbnQp Owo+ID4gKwlpZiAoaGFzX2Rvb3JiZWxsKGNsaWVudCkpCj4gPiArCQlkZXN0cm95X2Rvb3JiZWxs KGNsaWVudCk7Cj4gPiAKPiA+IC0JZm9yIChpID0gMDsgaSA8IEdVQ19NQVhfRE9PUkJFTExTOyAr K2kpIHsKPiA+IC0JCS8qIFNraXAgaWYgZG9vcmJlbGwgaXMgT0sgKi8KPiA+IC0JCWlmIChndWNf ZG9vcmJlbGxfY2hlY2soZ3VjLCBpKSkKPiA+ICsJZm9yIChpID0gMDsgaSA8IEdVQ19OVU1fRE9P UkJFTExTOyArK2kpIHsKPiA+ICsJCWlmIChkb29yYmVsbF9vayhndWMsIGkpKQo+ID4gwqAJCQlj b250aW51ZTsKPiA+IAo+IAo+IEFzIG1lbnRpb25lZCBpbiB0aGUgcHJldmlvdXMgcGF0Y2ggdmVy c2lvbiwgaGVyZSB3ZSBhc3N1bWUgdGhhdCBhbGwgdGhlwqAKPiBkb29yYmVsbHMgc2hvdWxkIGJl IGRpc2FibGVkIGFuIHdlIHdhbnQgdG8gcmVzZXQgSFcgdGhhdCBoYXMgYmVlbiBsZWZ0wqAKPiBl bmFibGVkIGZyb20gcHJldmlvdXMgdXNlcnMsIHNvIHRoZSBkb29yYmVsbF9iaXRtYXAgc2hvdWxk IGJlIGNsZWFyLsKgCj4gTWF5YmUgYWRkaW5nIGEgc2ltcGxlCj4gCj4gCUdFTV9CVUdfT04odGVz dF9iaXQoaSwgZ3VjLT5kb29yYmVsbF9iaXRtYXApKTsKPiAKPiB3aWxsIGhlbHAgbWFraW5nIHN1 cmUgdGhhdCB3ZSdyZSBub3QgbGVhdmluZyBiaXRzIHNldCB3aGVuwqAKPiByZWxlYXNpbmcvcmVz ZXR0aW5nLgoKVGhlIGZ1bmN0aW9ucyBkb24ndCBhY3R1YWxseSBldmVuIHRvdWNoIGRvb3JiZWxs X2JpdG1hcCwgdGhleSBqdXN0IG51a2UKYWxsIGFjdGl2ZSBjbGllbnRzLiBUaGF0J3Mgd2hhdCB0 aGUgcHJldmlvdXMgY29kZSBkaWQsIGFzIEkgcmVhZCBpdC4KCgo+ID4gLQkJZXJyID0gZ3VjX3Vw ZGF0ZV9kb29yYmVsbF9pZChndWMsIGNsaWVudCwgaSk7Cj4gPiAtCQlpZiAoZXJyKQo+ID4gLQkJ CURSTV9ERUJVR19EUklWRVIoIkRvb3JiZWxsICVkIHVwZGF0ZSBmYWlsZWQsIGVyciAlZFxuIiwK PiA+IC0JCQkJCWksIGVycik7Cj4gPiArCQllcnIgPSBfX3Jlc2V0X2Rvb3JiZWxsKGNsaWVudCwg aSk7Cj4gCj4gSWYgdGhlIHJlc2V0IGZhaWxzIHRoZSBkb29yYmVsbCBpcyBpbiBhIGJhZCBzdGF0 ZSwgc28gaXQgbWlnaHQgYmUgd29ydGjCoAo+IHRvIGVuc3VyZSB0aGF0IHRoZSBiaXQgaXMgc2V0 IGluIHRoZSBiaXRtYXNrIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndMKgCj4gYXNzaWduIHRoYXQgZG9v cmJlbGwgdG8gYW55IGNsaWVudCwgYnV0IHdlJ2QgaGF2ZSB0byBtYWtlIHN1cmUgdG8gY2xlYXLC oAo+IHRoZSBiaXRtYXNrIG9uIEd1QyByZXNldCAoc2VlIGNvbW1lbnQgYWJvdmUpLgoKQ2xlYXJp bmcgdGhlIGJpdHMgbm93IGluIGd1Y19pbml0X2Rvb3JiZWxsX2h3KCkuCgoKPiA+ICsJCVdBUk4o ZXJyLCAiRG9vcmJlbGwgJWQgcmVzZXQgZmFpbGVkLCBlcnIgJWRcbiIsIGksIGVycik7Cj4gPiDC oAl9Cj4gPiAKPiA+IC0JZGJfaWQgPSBzZWxlY3RfZG9vcmJlbGxfcmVnaXN0ZXIoZ3VjLCBjbGll bnQtPnByaW9yaXR5KTsKPiA+IC0JV0FSTl9PTihkYl9pZCA9PSBHVUNfSU5WQUxJRF9ET09SQkVM TF9JRCk7Cj4gPiAtCj4gPiAtCWVyciA9IGd1Y191cGRhdGVfZG9vcmJlbGxfaWQoZ3VjLCBjbGll bnQsIGRiX2lkKTsKPiA+ICsJZXJyID0gX19yZXNlcnZlX2Rvb3JiZWxsKGNsaWVudCk7Cj4gPiDC oAlpZiAoZXJyKQo+ID4gLQkJRFJNX1dBUk4oIkZhaWxlZCB0byByZXN0b3JlIGRvb3JiZWxsIHRv ICVkLCBlcnIgJWRcbiIsCj4gPiAtCQkJwqBkYl9pZCwgZXJyKTsKPiA+ICsJCXJldHVybiBlcnI7 Cj4gCj4gQ29udGludWluZyB0aGUgZGlzY3Vzc2lvbiBmcm9tIHRoZSBwcmV2aW91cyBwYXRjaCBy ZXZpc2lvbjoKPiAKPiA8c25pcD4KPiDCoD4gU2hvdWxkbid0IHRoaXMgYmUgY3JlYXRlX2Rvb3Ji ZWxsKCkgaW5zdGVhZCBvZiByZXNlcnZlPwo+IAo+IFRoYXQgd291bGQgZW5kIHVwIGNhbGxpbmcg dGhlIF9fdXBkYXRlX2Rvb3JiZWxsLCB3aGljaCB3ZSBjYW4ndCBhcyB0aGUKPiBkZXNjIGlzIGZv ciBzb21lIHN0cmFuZ2UgcmVhc29uIG5vdCBtYXBwZWQgeWV0Lgo+IDwvc25pcD4KPiAKPiBBcyBm YXIgYXMgSSBjYW4gc2VlLCBldmVyeXRoaW5nIHNob3VsZCBhbHJlYWR5IGJlIGFsbG9jYXRlZCBh bmQgbWFwcGVkwqAKPiBoZXJlLiBBcmVuJ3Qgd2UgYW55d2F5IGFscmVhZHkgY2FsbGluZyBfX3Vw ZGF0ZV9kb29yYmVsbCBib3RoIGluIHRoZcKgCj4gY2xpZW50X2FsbG9jIGFuZCBpbiBfX3Jlc2V0 X2Rvb3JiZWxsIGFib3ZlPwo+IEFsc28sIHdoZXJlIGFyZSB3ZSByZS1jcmVhdGluZyB0aGUgZG9v cmJlbGwgdGhhdCB3ZSBkZXN0cm95ZWQgYXQgdGhlwqAKPiBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0 aW9uPwo+IAoKSG1tLCByZWZhY3RvcmVkIHRoZSBleHRyYSBkZXN0cm95IGN5Y2xlIG91dC4KCjxT TklQPgoKPiA+IEBAIC03NTMsMjcgKzc4MSwzNSBAQCBndWNfY2xpZW50X2FsbG9jKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IMKgCWd1Y19wcm9jX2Rlc2NfaW5pdChndWMs IGNsaWVudCk7Cj4gPiDCoAlndWNfY3R4X2Rlc2NfaW5pdChndWMsIGNsaWVudCk7Cj4gPiAKPiA+ IC0JLyogRm9yIHJ1bnRpbWUgY2xpZW50IGFsbG9jYXRpb24gd2UgbmVlZCB0byBlbmFibGUgdGhl IGRvb3JiZWxsLiBOb3QKPiA+IC0JwqAqIHJlcXVpcmVkIHlldCBmb3IgdGhlIHN0YXRpYyBleGVj YnVmX2NsaWVudCBhcyB0aGlzIHNwZWNpYWwga2VybmVsCj4gPiAtCcKgKiBjbGllbnQgaXMgZW5h YmxlZCBmcm9tIGk5MTVfZ3VjX3N1Ym1pc3Npb25fZW5hYmxlKCkuCj4gPiAtCcKgKgo+ID4gLQnC oCogZ3VjX3VwZGF0ZV9kb29yYmVsbF9pZChndWMsIGNsaWVudCwgZGJfaWQpOwo+ID4gLQnCoCov Cj4gPiArCS8qIEZvciBydW50aW1lIGNsaWVudCBhbGxvY2F0aW9uIHdlIG5lZWQgdG8gZW5hYmxl IHRoZSBkb29yYmVsbC4gKi8KPiAKPiB0aGlzIGNvbW1lbnQgaXMgYSBiaXQgdW5jbGVhciBub3cg YmVjYXVzZSB5b3UncmUgbm90IGRlZmVycmluZyB0aGXCoAo+IGluaXRpYWxpemF0aW9uIG9mIGV4 ZWNidWZfY2xpZW50IHRvIGd1Y19pbml0X2Rvb3JiZWxsX2h3IGFueW1vcmUsIHNvwqAKPiB0aGVy ZSBpcyBubyBkaWZmZXJlbmNlIGJldHdlZW4gZXhlY2J1Zl9jbGllbnQgYW5kICJydW50aW1lIiBj bGllbnRzLsKgCj4gTWF5YmUgd2UgY2FuIGp1c3QgcmVtb3ZlIHRoZSBjb21tZW50LgoKUmVtb3Zl ZC4KCj4gTm90ZSB0aGF0IGNyZWF0aW5nIHRoZSBkb29yYmVsbCBoZXJlIHdpbGwgY2F1c2UgaXQg dG8gYmUgZGVzdHJveWVkIGFuZMKgCj4gcmUtYWxsb2NhdGVkIHdoZW4gaTkxNV9ndWNfc3VibWlz c2lvbl9lbmFibGUgaXMgY2FsbGVkLiBBIHdvcnRowqAKPiBjb21wcm9taXNlIElNTyB0byBhdm9p ZCBzcGVjaWFsIGNhc2VzLCBidXQgd29ydGggcG9pbnRpbmcgb3V0IDopCgpSZWZhY3RvcmVkIGEg Yml0LgoKUmVnYXJkcywgSm9vbmFzCi0tIApKb29uYXMgTGFodGluZW4KT3BlbiBTb3VyY2UgVGVj aG5vbG9neSBDZW50ZXIKSW50ZWwgQ29ycG9yYXRpb24KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==