From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH 2/3] drm/i915: Use atomic helpers for suspend. Date: Mon, 15 Feb 2016 13:34:28 +0100 Message-ID: <56C1C5D4.7090207@linux.intel.com> References: <20160203163408.GF23290@intel.com> <1455022343-15222-1-git-send-email-maarten.lankhorst@linux.intel.com> <1455022343-15222-2-git-send-email-maarten.lankhorst@linux.intel.com> <20160209133747.GN23290@intel.com> <56B9F23F.9080502@linux.intel.com> <20160209145834.GQ23290@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 50AE76E632 for ; Mon, 15 Feb 2016 12:34:30 +0000 (UTC) In-Reply-To: <20160209145834.GQ23290@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMDktMDItMTYgb20gMTU6NTggc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6Cj4gT24gVHVlLCBG ZWIgMDksIDIwMTYgYXQgMDM6MDU6NTFQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6 Cj4+IE9wIDA5LTAyLTE2IG9tIDE0OjM3IHNjaHJlZWYgVmlsbGUgU3lyasOkbMOkOgo+Pj4gT24g VHVlLCBGZWIgMDksIDIwMTYgYXQgMDE6NTI6MjJQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9yc3Qg d3JvdGU6Cj4+Pj4gSW5zdGVhZCBvZiBkdXBsaWNhdGluZyB0aGUgZnVuY3Rpb25hbGl0eSBub3cg dGhhdCB3ZSBubyBsb25nZXIgbmVlZAo+Pj4+IHRvIHByZXNlcnZlIGRwbGwgc3RhdGUgd2UgY2Fu IG1vdmUgdG8gdXNpbmcgdGhlIHVwc3RyZWFtIHN1c3BlbmQgaGVscGVyLgo+Pj4+Cj4+Pj4gU2ln bmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4Lmlu dGVsLmNvbT4KPj4+PiAtLS0KPj4+PiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVy LmMgIHwgICAzICsKPj4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgIHwg ICA4IC0tLQo+Pj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgIDEg Kwo+Pj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxMTcgKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+PiAgNCBmaWxlcyBjaGFuZ2VkLCA0MiBp bnNlcnRpb25zKCspLCA4NyBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljX2hlbHBlci5jCj4+Pj4gaW5kZXggMmI0MzBiMDVmMzVkLi5hMmQzYjA5NGYyN2MgMTAwNjQ0 Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPj4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+Pj4+IEBAIC0yMTAyLDYgKzIx MDIsOSBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4+Pj4gIAllcnIgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7Cj4+Pj4gIAlkcm1fbW9k ZXNldF91bmxvY2tfYWxsKGRldik7Cj4+Pj4gIAo+Pj4+ICsJaWYgKGVycikKPj4+PiArCQlkcm1f YXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+Pj4+ICsKPj4+PiAgCXJldHVybiBlcnI7Cj4+Pj4g IH0KPj4+PiAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9yZXN1bWUpOwo+Pj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYwo+Pj4+IGluZGV4IDExZDg0MTRlZGJiZS4uZmM5YjU1MmJmY2Qx IDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPj4+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4+Pj4gQEAgLTYwMCwxMyArNjAw LDcgQEAgc3RhdGljIGludCBpOTE1X2RybV9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4+Pj4gIAo+Pj4+ICAJaW50ZWxfc3VzcGVuZF9ndF9wb3dlcnNhdmUoZGV2KTsKPj4+PiAgCj4+ Pj4gLQkvKgo+Pj4+IC0JICogRGlzYWJsZSBDUlRDcyBkaXJlY3RseSBzaW5jZSB3ZSB3YW50IHRv IHByZXNlcnZlIHN3IHN0YXRlCj4+Pj4gLQkgKiBmb3IgX3RoYXcuIEFsc28sIHBvd2VyIGdhdGUg dGhlIENSVEMgcG93ZXIgd2VsbHMuCj4+Pj4gLQkgKi8KPj4+PiAtCWRybV9tb2Rlc2V0X2xvY2tf YWxsKGRldik7Cj4+Pj4gIAlpbnRlbF9kaXNwbGF5X3N1c3BlbmQoZGV2KTsKPj4+PiAtCWRybV9t b2Rlc2V0X3VubG9ja19hbGwoZGV2KTsKPj4+PiAgCj4+Pj4gIAlpbnRlbF9kcF9tc3Rfc3VzcGVu ZChkZXYpOwo+Pj4+ICAKPj4+PiBAQCAtNzYxLDkgKzc1NSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9k cm1fcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+Pj4gIAkJZGV2X3ByaXYtPmRpc3Bs YXkuaHBkX2lycV9zZXR1cChkZXYpOwo+Pj4+ICAJc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+ aXJxX2xvY2spOwo+Pj4+ICAKPj4+PiAtCWRybV9tb2Rlc2V0X2xvY2tfYWxsKGRldik7Cj4+Pj4g IAlpbnRlbF9kaXNwbGF5X3Jlc3VtZShkZXYpOwo+Pj4+IC0JZHJtX21vZGVzZXRfdW5sb2NrX2Fs bChkZXYpOwo+Pj4+ICAKPj4+PiAgCWludGVsX2RwX21zdF9yZXN1bWUoZGV2KTsKPj4+PiAgCj4+ Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+Pj4gaW5kZXggODIxNjY2NTQwNWViLi5lZjI4OTUx NGI5N2UgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4+PiBAQCAtMTg0OCw2 ICsxODQ4LDcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+Pj4+ICAKPj4+PiAgCWVudW0g bW9kZXNldF9yZXN0b3JlIG1vZGVzZXRfcmVzdG9yZTsKPj4+PiAgCXN0cnVjdCBtdXRleCBtb2Rl c2V0X3Jlc3RvcmVfbG9jazsKPj4+PiArCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICptb2Rlc2V0 X3Jlc3RvcmVfc3RhdGU7Cj4+Pj4gIAo+Pj4+ICAJc3RydWN0IGxpc3RfaGVhZCB2bV9saXN0OyAv KiBHbG9iYWwgbGlzdCBvZiBhbGwgYWRkcmVzcyBzcGFjZXMgKi8KPj4+PiAgCXN0cnVjdCBpOTE1 X2d0dCBndHQ7IC8qIFZNIHJlcHJlc2VudGluZyB0aGUgZ2xvYmFsIGFkZHJlc3Mgc3BhY2UgKi8K Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+Pj4gaW5kZXggZTQ5NmMxMzAz NjRkLi40YzkxZmQxYzUyMjIgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCj4+Pj4gQEAgLTYzOTMsNTggKzYzOTMsMTkgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0 Y19kaXNhYmxlX25vYXRvbWljKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPj4+PiAgICovCj4+Pj4g IGludCBpbnRlbF9kaXNwbGF5X3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPj4+PiAg ewo+Pj4+IC0Jc3RydWN0IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJmRldi0+bW9kZV9jb25m aWc7Cj4+Pj4gLQlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggKmN0eCA9IGNvbmZpZy0+ YWNxdWlyZV9jdHg7Cj4+Pj4gLQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4+Pj4g LQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4+Pj4gLQl1bnNpZ25lZCBjcnRjX21hc2sgPSAwOwo+ Pj4+IC0JaW50IHJldCA9IDA7Cj4+Pj4gLQo+Pj4+IC0JaWYgKFdBUk5fT04oIWN0eCkpCj4+Pj4g LQkJcmV0dXJuIDA7Cj4+Pj4gLQo+Pj4+IC0JbG9ja2RlcF9hc3NlcnRfaGVsZCgmY3R4LT53d19j dHgpOwo+Pj4+IC0Jc3RhdGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKGRldik7Cj4+Pj4gLQlp ZiAoV0FSTl9PTighc3RhdGUpKQo+Pj4+IC0JCXJldHVybiAtRU5PTUVNOwo+Pj4+IC0KPj4+PiAt CXN0YXRlLT5hY3F1aXJlX2N0eCA9IGN0eDsKPj4+PiAtCXN0YXRlLT5hbGxvd19tb2Rlc2V0ID0g dHJ1ZTsKPj4+PiAtCj4+Pj4gLQlmb3JfZWFjaF9jcnRjKGRldiwgY3J0Yykgewo+Pj4+IC0JCXN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9Cj4+Pj4gLQkJCWRybV9hdG9taWNfZ2V0 X2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOwo+Pj4+IC0KPj4+PiAtCQlyZXQgPSBQVFJfRVJSX09S X1pFUk8oY3J0Y19zdGF0ZSk7Cj4+Pj4gLQkJaWYgKHJldCkKPj4+PiAtCQkJZ290byBmcmVlOwo+ Pj4+IC0KPj4+PiAtCQlpZiAoIWNydGNfc3RhdGUtPmFjdGl2ZSkKPj4+PiAtCQkJY29udGludWU7 Cj4+Pj4gLQo+Pj4+IC0JCWNydGNfc3RhdGUtPmFjdGl2ZSA9IGZhbHNlOwo+Pj4+IC0JCWNydGNf bWFzayB8PSAxIDw8IGRybV9jcnRjX2luZGV4KGNydGMpOwo+Pj4+IC0JfQo+Pj4+IC0KPj4+PiAt CWlmIChjcnRjX21hc2spIHsKPj4+PiAtCQlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7 Cj4+Pj4gLQo+Pj4+IC0JCWlmICghcmV0KSB7Cj4+Pj4gLQkJCWZvcl9lYWNoX2NydGMoZGV2LCBj cnRjKQo+Pj4+IC0JCQkJaWYgKGNydGNfbWFzayAmICgxIDw8IGRybV9jcnRjX2luZGV4KGNydGMp KSkKPj4+PiAtCQkJCQljcnRjLT5zdGF0ZS0+YWN0aXZlID0gdHJ1ZTsKPj4+PiAtCj4+Pj4gLQkJ CXJldHVybiByZXQ7Cj4+Pj4gLQkJfQo+Pj4+IC0JfQo+Pj4+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+Pj4+ICsJaW50IHJldDsKPj4+PiAgCj4+ Pj4gLWZyZWU6Cj4+Pj4gLQlpZiAocmV0KQo+Pj4+ICsJZGV2X3ByaXYtPm1vZGVzZXRfcmVzdG9y ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX3N1c3BlbmQoZGV2KTsKPj4+PiArCXJldCA9IFBU Ul9FUlJfT1JfWkVSTyhkZXZfcHJpdi0+bW9kZXNldF9yZXN0b3JlX3N0YXRlKTsKPj4+PiArCWlm IChyZXQpIHsKPj4+PiAgCQlEUk1fRVJST1IoIlN1c3BlbmRpbmcgY3J0YydzIGZhaWxlZCB3aXRo ICVpXG4iLCByZXQpOwo+Pj4+IC0JZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPj4+PiAr CQlkZXZfcHJpdi0+bW9kZXNldF9yZXN0b3JlX3N0YXRlID0gTlVMTDsKPj4+PiArCX0KPj4+IEkg d291bGQgdXNlIGEgbG9jYWwgc3RhdGUgcG9pbnRlciBhbmQgb25seSBhc3NpZ24gaXQgdG8KPj4+ IG1vZGVzZXRfcmVzdG9yZV9zdGF0ZSBvbmNlIHdlIGtub3cgaXQncyBnb29kLgo+Pj4KPj4+PiAg CXJldHVybiByZXQ7Cj4+Pj4gIH0KPj4+PiAgCj4+Pj4gKwo+Pj4gU3B1cmlvdXMgbmV3bGluZS4K Pj4+Cj4+Pj4gIHZvaWQgaW50ZWxfZW5jb2Rlcl9kZXN0cm95KHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlcikKPj4+PiAgewo+Pj4+ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29k ZXIgPSB0b19pbnRlbF9lbmNvZGVyKGVuY29kZXIpOwo+Pj4+IEBAIC0xNTkwOSw1MSArMTU4NzAs NDkgQEAgaW50ZWxfbW9kZXNldF9zZXR1cF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+Pj4+ICAKPj4+PiAgdm9pZCBpbnRlbF9kaXNwbGF5X3Jlc3VtZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+Pj4+ICB7Cj4+Pj4gLQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBk cm1fYXRvbWljX3N0YXRlX2FsbG9jKGRldik7Cj4+Pj4gLQlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uOwo+Pj4+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZTsKPj4+PiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPj4+PiArCXN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IGRldl9wcml2LT5tb2Rlc2V0X3Jlc3RvcmVfc3RhdGU7 Cj4+Pj4gKwlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4Owo+Pj4+ICAJc3RydWN0 IGRybV9jcnRjICpjcnRjOwo+Pj4+IC0JaW50IHJldDsKPj4+PiArCXN0cnVjdCBkcm1fY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZTsKPj4+PiArCWludCByZXQsIGk7Cj4+Pj4gKwo+Pj4+ICsJaW50ZWxf bW9kZXNldF9zZXR1cF9od19zdGF0ZShkZXYpOwo+Pj4gSXNuJ3Qgc29tZXRoaW5nIGluIHRoZXJl IGdvaW5nIHRvIHNjcmVhbSBhYm91dCBsb2NraW5nPwo+PiBJIHdhcyBob3BpbmcgdG8gZmluZCBv dXQgYnkgcnVubmluZyBpdCB0aHJvdWdoIENJLi4KPj4KPj4gSSBkb24ndCBzZWUgd2hhdCBwb3Nz aWJseSBjb3VsZCBzY3JlYW0gaG93ZXZlciwgZnJvbSBhIGdsYW5jZSBpdCBzZWVtcyBub3RoaW5n IGRlcGVuZHMgb24gaXQuCj4+Pj4gKwlpOTE1X3JlZGlzYWJsZV92Z2EoZGV2KTsKPj4+PiArCWRl dl9wcml2LT5tb2Rlc2V0X3Jlc3RvcmVfc3RhdGUgPSBOVUxMOwo+Pj4+ICAKPj4+PiAgCWlmICgh c3RhdGUpCj4+Pj4gIAkJcmV0dXJuOwo+Pj4+ICAKPj4+PiAtCXN0YXRlLT5hY3F1aXJlX2N0eCA9 IGRldi0+bW9kZV9jb25maWcuYWNxdWlyZV9jdHg7Cj4+Pj4gLQo+Pj4+IC0JZm9yX2VhY2hfY3J0 YyhkZXYsIGNydGMpIHsKPj4+PiAtCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUg PQo+Pj4+IC0JCQlkcm1fYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPj4+PiAt Cj4+Pj4gLQkJcmV0ID0gUFRSX0VSUl9PUl9aRVJPKGNydGNfc3RhdGUpOwo+Pj4+IC0JCWlmIChy ZXQpCj4+Pj4gLQkJCWdvdG8gZXJyOwo+Pj4+ICsJZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0KCZj dHgsIDApOwo+Pj4+ICsJc3RhdGUtPmFjcXVpcmVfY3R4ID0gJmN0eDsKPj4+PiAgCj4+Pj4gLQkJ LyogZm9yY2UgYSByZXN0b3JlICovCj4+Pj4gKwlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRl LCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4+Pj4gKwkJLyoKPj4+PiArCQkgKiBGb3JjZSByZWNh bGN1bGF0aW9uIGV2ZW4gaWYgd2UgcmVzdG9yZQo+Pj4+ICsJCSAqIGN1cnJlbnQgc3RhdGUuIFdp dGggZmFzdCBtb2Rlc2V0IHRoaXMgbWF5IG5vdCByZXN1bHQKPj4+PiArCQkgKiBpbiBhIG1vZGVz ZXQgd2hlbiB0aGUgc3RhdGUgaXMgY29tcGF0aWJsZS4KPj4+PiArCQkgKi8KPj4+PiAgCQljcnRj X3N0YXRlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOwo+Pj4+ICAJfQo+Pj4gSG1tLiBXaHkgZG8gd2Ug bmVlZCB0byBzZXQgdGhhdCBleGFjdGx5PyBJZiB0aGUgY3VycmVudCBzdGF0ZSBkb2Vzbid0Cj4+ PiBtYXRjaCB0aGUgInRvIGJlIHJlc3RvcmVkIiBzdGF0ZSwgc2hvdWxkbid0IHNvbWV0aGluZyBz b21ld2hlcmUgZmlndXJlCj4+PiBvdXQgdGhhdCB3ZSByZWFsbHkgbmVlZCBhIG1vZGVzZXQ/Cj4+ IFdlIGhhdmUgYSB3aG9sZSBidW5jaCBvZiBodyBzdGF0ZSBmcm9tIHN1c3BlbmQgdGhhdCBtYXkg YmUgZGlmZmVyZW50IGZyb20gdGhlIGh3IHJlYWRvdXQgaW4gcmVzdW1lLiBUaGlzIGlzIG5vdCBo YW5kbGVkIGJ5IHRoZSBjb3JlIGJlY2F1c2UgaXQgZG9lc24ndCBrbm93IGFib3V0IGRyaXZlciBz cGVjaWZpYyBwbGwncyBldGMuIFNvIHRoYXQncyB3aGF0IHRoZSBtb2RlX2NoYW5nZWQgPSB0cnVl IGlzIGZvci4gSXQncyBhIGhpbnQgdG8gaW50ZWxfYXRvbWljX2NoZWNrIHRoYXQgbWlnaHQgZ2V0 IGRvd25ncmFkZWQgdG8gdXBkYXRlX3BpcGUgaWYgaTkxNS5mYXN0Ym9vdCBpcyB0cnVlIGFuZCB0 aGUgaHcgcmVhZG91dCBhbmQgcmVzdW1lIHN0YXRlcyBhcmUgY29tcGF0aWJsZS4KPiBIbW0uIFNv IGl0J3MgYSBiaXQgb2YgYSB3b3JrYXJvdW5kIGR1ZSB0byB0aGUgZmFjdCB0aGF0Cj4gaW50ZWxf YXRvbWljX2NoZWNrKCkgZG9lc24ndCBhY3R1YWxseSBjaGVjay91cGRhdGUgZXZlcnl0aGluZywg YW5kCj4gaW5zdGVhZCB0cmllcyB0byBza2lwIGEgYnVuY2ggb2Ygc3R1ZmYgaWYgdGhlIGNvcmUg ZGlkbid0IGRldGVjdCBhbnkKPiBtZWFuaW5nZnVsIGNoYW5nZXM/IEkgZ3Vlc3MgdGhhdCBtYWtl cyBzb21lIHNlbnNlIGFzIGFuIG9wdGltaXphdGlvbi4KPiBUaGF0IGlzLCB0aGVyZSdzIG5vIG5l ZWQgdG8gY2hlY2sgc3R1ZmYgaWYgbm90aGluZyB1c2VyIHZpc2libGUgCj4gY2hhbmdlZCBhbnl3 YXkgYmVjYXVzZSB3ZSBzaG91bGQgYW55d2F5IGVuZCB1cCB3aXRoIHRoZSBzYW1lIHN0YXRlCj4g dGhhdCB3ZSBoYWQgc2hvdWxkIHdlIGRvIGEgZnVsbCByZWNvbXB1dGUuCldpdGhvdXQgdGhlIGhp bnQgdGhhdCB0aGVyZSBpcyBhIGNoYW5nZSBpdCBjYW4ndCBldmVuIGRvIHRoZSBjaGVja2luZyBz aW5jZSBhbGwgY29ubmVjdG9ycyBhbmQgcGxhbmVzIGFyZW4ndCBhZGRlZC4KQnV0IGluZGVlZCwg bm90aGluZyB1c2VyIHZpc2libGUgd291bGQgaGF2ZSBjaGFuZ2VkLgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==