From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v4 34/38] drm: Wrap drm_mm_node.hole_follows Date: Wed, 28 Dec 2016 14:02:27 +0100 Message-ID: <20161228130227.GL347@dvetter-linux.ger.corp.intel.com> References: <20161222083641.2691-1-chris@chris-wilson.co.uk> <20161222083641.2691-35-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20161222083641.2691-35-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBEZWMgMjIsIDIwMTYgYXQgMDg6MzY6MzdBTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IEluc3VsYXRlIHVzZXJzIGZyb20gY2hhbmdlcyB0byB0aGUgaW50ZXJuYWwgaG9sZSB0 cmFja2luZyB3aXRoaW4KPiBzdHJ1Y3QgZHJtX21tX25vZGUgYnkgdXNpbmcgYW4gYWNjZXNzb3Ig Zm9yIGhvbGVfZm9sbG93cy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlz QGNocmlzLXdpbHNvbi5jby51az4KPiBSZXZpZXdlZC1ieTogSm9vbmFzIExhaHRpbmVuIDxqb29u YXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJt X21tLmMgICAgICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV92bWEuYyAgICAgICAgIHwgIDQgKystLQoKVGhpcyByZXF1aXJlZCBzb21lIHdy YWdsaW5nIGluIGk5MTVfdm1hLmMgdG8gbWFrZSBpdCBhcHBseSB0byBkcm0tbWlzYywKYW5kIHRo ZW4gcmVzb2x2aW5nIHRoZSBjb25mbGljdCBpbiBkcm0tdGlwLiBQbGVhc2UgZG91YmxlLWNoZWNr IHdoZW4KcmViYXNpbmcgdGhhdCBJIGRpZG4ndCBib3RjaCBpdCB1cC4KClRoYW5rcywgRGFuaWVs Cgo+ICBkcml2ZXJzL2dwdS9kcm0vc2VsZnRlc3RzL3Rlc3QtZHJtX21tLmMgfCAxOCArKysrKysr KysrLS0tLS0tLS0KPiAgaW5jbHVkZS9kcm0vZHJtX21tLmggICAgICAgICAgICAgICAgICAgIHwg MjIgKysrKysrKysrKysrKysrKysrKy0tLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlv bnMoKyksIDE5IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX21tLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMKPiBpbmRleCBiNTk5NzhmZTRjNmUu LmMwMDI0NzE5ZjMyYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21tLmMKPiBAQCAtMzIzLDcgKzMyMyw3IEBAIGludCBk cm1fbW1fcmVzZXJ2ZV9ub2RlKHN0cnVjdCBkcm1fbW0gKm1tLCBzdHJ1Y3QgZHJtX21tX25vZGUg Km5vZGUpCj4gIAl9Cj4gIAo+ICAJaG9sZSA9IGxpc3RfbGFzdF9lbnRyeSgmaG9sZS0+bm9kZV9s aXN0LCB0eXBlb2YoKmhvbGUpLCBub2RlX2xpc3QpOwo+IC0JaWYgKCFob2xlLT5ob2xlX2ZvbGxv d3MpCj4gKwlpZiAoIWRybV9tbV9ob2xlX2ZvbGxvd3MoaG9sZSkpCj4gIAkJcmV0dXJuIC1FTk9T UEM7Cj4gIAo+ICAJYWRqX3N0YXJ0ID0gaG9sZV9zdGFydCA9IF9fZHJtX21tX2hvbGVfbm9kZV9z dGFydChob2xlKTsKPiBAQCAtNDA4LDcgKzQwOCw3IEBAIHN0YXRpYyB2b2lkIGRybV9tbV9pbnNl cnRfaGVscGVyX3JhbmdlKHN0cnVjdCBkcm1fbW1fbm9kZSAqaG9sZV9ub2RlLAo+ICAJdTY0IGFk al9zdGFydCA9IGhvbGVfc3RhcnQ7Cj4gIAl1NjQgYWRqX2VuZCA9IGhvbGVfZW5kOwo+ICAKPiAt CURSTV9NTV9CVUdfT04oIWhvbGVfbm9kZS0+aG9sZV9mb2xsb3dzIHx8IG5vZGUtPmFsbG9jYXRl ZCk7Cj4gKwlEUk1fTU1fQlVHX09OKCFkcm1fbW1faG9sZV9mb2xsb3dzKGhvbGVfbm9kZSkgfHwg bm9kZS0+YWxsb2NhdGVkKTsKPiAgCj4gIAlpZiAoYWRqX3N0YXJ0IDwgc3RhcnQpCj4gIAkJYWRq X3N0YXJ0ID0gc3RhcnQ7Cj4gQEAgLTUyMywxNiArNTIzLDE2IEBAIHZvaWQgZHJtX21tX3JlbW92 ZV9ub2RlKHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSkKPiAgCXByZXZfbm9kZSA9Cj4gIAkgICAg bGlzdF9lbnRyeShub2RlLT5ub2RlX2xpc3QucHJldiwgc3RydWN0IGRybV9tbV9ub2RlLCBub2Rl X2xpc3QpOwo+ICAKPiAtCWlmIChub2RlLT5ob2xlX2ZvbGxvd3MpIHsKPiArCWlmIChkcm1fbW1f aG9sZV9mb2xsb3dzKG5vZGUpKSB7Cj4gIAkJRFJNX01NX0JVR19PTihfX2RybV9tbV9ob2xlX25v ZGVfc3RhcnQobm9kZSkgPT0KPiAgCQkJICAgICAgX19kcm1fbW1faG9sZV9ub2RlX2VuZChub2Rl KSk7Cj4gIAkJbGlzdF9kZWwoJm5vZGUtPmhvbGVfc3RhY2spOwo+IC0JfSBlbHNlCj4gKwl9IGVs c2Ugewo+ICAJCURSTV9NTV9CVUdfT04oX19kcm1fbW1faG9sZV9ub2RlX3N0YXJ0KG5vZGUpICE9 Cj4gIAkJCSAgICAgIF9fZHJtX21tX2hvbGVfbm9kZV9lbmQobm9kZSkpOwo+ICsJfQo+ICAKPiAt Cj4gLQlpZiAoIXByZXZfbm9kZS0+aG9sZV9mb2xsb3dzKSB7Cj4gKwlpZiAoIWRybV9tbV9ob2xl X2ZvbGxvd3MocHJldl9ub2RlKSkgewo+ICAJCXByZXZfbm9kZS0+aG9sZV9mb2xsb3dzID0gMTsK PiAgCQlsaXN0X2FkZCgmcHJldl9ub2RlLT5ob2xlX3N0YWNrLCAmbW0tPmhvbGVfc3RhY2spOwo+ ICAJfSBlbHNlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5jCj4gaW5kZXggNjA4MDA4ZDJkOTk5Li5j ZmVjNDIyMmIwNGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMKPiBAQCAtMzI3LDExICsz MjcsMTEgQEAgYm9vbCBpOTE1X2dlbV92YWxpZF9ndHRfc3BhY2Uoc3RydWN0IGk5MTVfdm1hICp2 bWEsIHVuc2lnbmVkIGxvbmcgY2FjaGVfbGV2ZWwpCj4gIAlHRU1fQlVHX09OKGxpc3RfZW1wdHko Jm5vZGUtPm5vZGVfbGlzdCkpOwo+ICAKPiAgCW90aGVyID0gbGlzdF9wcmV2X2VudHJ5KG5vZGUs IG5vZGVfbGlzdCk7Cj4gLQlpZiAoY29sb3JfZGlmZmVycyhvdGhlciwgY2FjaGVfbGV2ZWwpICYm ICFvdGhlci0+aG9sZV9mb2xsb3dzKQo+ICsJaWYgKGNvbG9yX2RpZmZlcnMob3RoZXIsIGNhY2hl X2xldmVsKSAmJiAhZHJtX21tX2hvbGVfZm9sbG93cyhvdGhlcikpCj4gIAkJcmV0dXJuIGZhbHNl Owo+ICAKPiAgCW90aGVyID0gbGlzdF9uZXh0X2VudHJ5KG5vZGUsIG5vZGVfbGlzdCk7Cj4gLQlp ZiAoY29sb3JfZGlmZmVycyhvdGhlciwgY2FjaGVfbGV2ZWwpICYmICFub2RlLT5ob2xlX2ZvbGxv d3MpCj4gKwlpZiAoY29sb3JfZGlmZmVycyhvdGhlciwgY2FjaGVfbGV2ZWwpICYmICFkcm1fbW1f aG9sZV9mb2xsb3dzKG5vZGUpKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlyZXR1cm4gdHJ1 ZTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9tbS5j IGIvZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy90ZXN0LWRybV9tbS5jCj4gaW5kZXggZjYwOWU0 ZjFlZWFmLi4yY2U5MmY0ZGNmYzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3NlbGZ0 ZXN0cy90ZXN0LWRybV9tbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3NlbGZ0ZXN0cy90ZXN0 LWRybV9tbS5jCj4gQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIGJvb2wgYXNzZXJ0X25vX2hvbGVz KGNvbnN0IHN0cnVjdCBkcm1fbW0gKm1tKQo+ICAJfQo+ICAKPiAgCWRybV9tbV9mb3JfZWFjaF9u b2RlKGhvbGUsIG1tKSB7Cj4gLQkJaWYgKGhvbGUtPmhvbGVfZm9sbG93cykgewo+ICsJCWlmIChk cm1fbW1faG9sZV9mb2xsb3dzKGhvbGUpKSB7Cj4gIAkJCXByX2VycigiSG9sZSBmb2xsb3dzIG5v ZGUsIGV4cGVjdGVkIG5vbmUhXG4iKTsKPiAgCQkJcmV0dXJuIGZhbHNlOwo+ICAJCX0KPiBAQCAt MTI1LDcgKzEyNSw3IEBAIHN0YXRpYyBib29sIGFzc2VydF9jb250aW51b3VzKGNvbnN0IHN0cnVj dCBkcm1fbW0gKm1tLCB1NjQgc2l6ZSkKPiAgCQkJcmV0dXJuIGZhbHNlOwo+ICAJCX0KPiAgCj4g LQkJaWYgKG5vZGUtPmhvbGVfZm9sbG93cykgewo+ICsJCWlmIChkcm1fbW1faG9sZV9mb2xsb3dz KG5vZGUpKSB7Cj4gIAkJCXByX2Vycigibm9kZVslbGRdIGlzIGZvbGxvd2VkIGJ5IGEgaG9sZSFc biIsIG4pOwo+ICAJCQlyZXR1cm4gZmFsc2U7Cj4gIAkJfQo+IEBAIC04MjgsNyArODI4LDggQEAg c3RhdGljIGJvb2wgYXNzZXJ0X2NvbnRpZ3VvdXNfaW5fcmFuZ2Uoc3RydWN0IGRybV9tbSAqbW0s Cj4gIAkJCXJldHVybiBmYWxzZTsKPiAgCQl9Cj4gIAo+IC0JCWlmIChub2RlLT5ob2xlX2ZvbGxv d3MgJiYgZHJtX21tX2hvbGVfbm9kZV9lbmQobm9kZSkgPCBlbmQpIHsKPiArCQlpZiAoZHJtX21t X2hvbGVfZm9sbG93cyhub2RlKSAmJgo+ICsJCSAgICBkcm1fbW1faG9sZV9ub2RlX2VuZChub2Rl KSA8IGVuZCkgewo+ICAJCQlwcl9lcnIoIm5vZGUgJWQgaXMgZm9sbG93ZWQgYnkgYSBob2xlIVxu Iiwgbik7Cj4gIAkJCXJldHVybiBmYWxzZTsKPiAgCQl9Cj4gQEAgLTEzMzcsMTEgKzEzMzgsMTIg QEAgc3RhdGljIGludCBldmljdF9zb21ldGhpbmcoc3RydWN0IGRybV9tbSAqbW0sCj4gIAkJZXJy ID0gLUVJTlZBTDsKPiAgCX0KPiAgCj4gLQlpZiAoIWFzc2VydF9ub2RlKCZ0bXAsIG1tLCBzaXpl LCBhbGlnbm1lbnQsIDApIHx8IHRtcC5ob2xlX2ZvbGxvd3MpIHsKPiArCWlmICghYXNzZXJ0X25v ZGUoJnRtcCwgbW0sIHNpemUsIGFsaWdubWVudCwgMCkgfHwKPiArCSAgICBkcm1fbW1faG9sZV9m b2xsb3dzKCZ0bXApKSB7Cj4gIAkJcHJfZXJyKCJJbnNlcnRlZCBkaWQgbm90IGZpbGwgdGhlIGV2 aWN0aW9uIGhvbGU6IHNpemU9JWxsZCBbJWRdLCBhbGlnbj0lZCBbcmVtPSVsbGRdLCBzdGFydD0l bGx4LCBob2xlLWZvbGxvd3M/PSVkXG4iLAo+ICAJCSAgICAgICB0bXAuc2l6ZSwgc2l6ZSwKPiAg CQkgICAgICAgYWxpZ25tZW50LCBtaXNhbGlnbm1lbnQoJnRtcCwgYWxpZ25tZW50KSwKPiAtCQkg ICAgICAgdG1wLnN0YXJ0LCB0bXAuaG9sZV9mb2xsb3dzKTsKPiArCQkgICAgICAgdG1wLnN0YXJ0 LCBkcm1fbW1faG9sZV9mb2xsb3dzKCZ0bXApKTsKPiAgCQllcnIgPSAtRUlOVkFMOwo+ICAJfQo+ ICAKPiBAQCAtMTYxOCw3ICsxNjIwLDcgQEAgc3RhdGljIGludCBpZ3RfdG9wZG93bih2b2lkICpp Z25vcmVkKQo+ICAJCQkJZ290byBvdXQ7Cj4gIAkJCX0KPiAgCj4gLQkJCWlmIChub2Rlc1tuXS5o b2xlX2ZvbGxvd3MpIHsKPiArCQkJaWYgKGRybV9tbV9ob2xlX2ZvbGxvd3MoJm5vZGVzW25dKSkg ewo+ICAJCQkJcHJfZXJyKCJob2xlIGFmdGVyIHRvcGRvd24gaW5zZXJ0ICVkLCBzdGFydD0lbGx4 XG4sIHNpemU9JXUiLAo+ICAJCQkJICAgICAgIG4sIG5vZGVzW25dLnN0YXJ0LCBzaXplKTsKPiAg CQkJCWdvdG8gb3V0Owo+IEBAIC0xNjUwLDcgKzE2NTIsNyBAQCBzdGF0aWMgaW50IGlndF90b3Bk b3duKHZvaWQgKmlnbm9yZWQpCj4gIAkJCQkJZ290byBvdXQ7Cj4gIAkJCQl9Cj4gIAo+IC0JCQkJ aWYgKG5vZGUtPmhvbGVfZm9sbG93cykgewo+ICsJCQkJaWYgKGRybV9tbV9ob2xlX2ZvbGxvd3Mo bm9kZSkpIHsKPiAgCQkJCQlwcl9lcnIoImhvbGUgYWZ0ZXIgdG9wZG93biBpbnNlcnQgJWQvJWQs IHN0YXJ0PSVsbHhcbiIsCj4gIAkJCQkJICAgICAgIG0sIG4sIG5vZGUtPnN0YXJ0KTsKPiAgCQkJ CQlnb3RvIG91dDsKPiBAQCAtMTcwNSw3ICsxNzA3LDcgQEAgc3RhdGljIHZvaWQgc2VwYXJhdGVf YWRqYWNlbnRfY29sb3JzKGNvbnN0IHN0cnVjdCBkcm1fbW1fbm9kZSAqbm9kZSwKPiAgCj4gIHN0 YXRpYyBib29sIGNvbG9yc19hYnV0dChjb25zdCBzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUpCj4g IHsKPiAtCWlmICghbm9kZS0+aG9sZV9mb2xsb3dzICYmCj4gKwlpZiAoIWRybV9tbV9ob2xlX2Zv bGxvd3Mobm9kZSkgJiYKPiAgCSAgICBsaXN0X25leHRfZW50cnkobm9kZSwgbm9kZV9saXN0KS0+ YWxsb2NhdGVkKSB7Cj4gIAkJcHJfZXJyKCJjb2xvcnMgYWJ1dHQ7ICVsZCBbJWxseCArICVsbHhd IGlzIG5leHQgdG8gJWxkIFslbGx4ICsgJWxseF0hXG4iLAo+ICAJCSAgICAgICBub2RlLT5jb2xv ciwgbm9kZS0+c3RhcnQsIG5vZGUtPnNpemUsCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2Ry bV9tbS5oIGIvaW5jbHVkZS9kcm0vZHJtX21tLmgKPiBpbmRleCBhZWQ5M2NiYzRiZGUuLjdkYTdh MTcxZDZkNSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fbW0uaAo+ICsrKyBiL2luY2x1 ZGUvZHJtL2RybV9tbS5oCj4gQEAgLTE1NSw2ICsxNTUsMjIgQEAgc3RhdGljIGlubGluZSBib29s IGRybV9tbV9pbml0aWFsaXplZChjb25zdCBzdHJ1Y3QgZHJtX21tICptbSkKPiAgCXJldHVybiBt bS0+aG9sZV9zdGFjay5uZXh0Owo+ICB9Cj4gIAo+ICsvKioKPiArICogZHJtX21tX2hvbGVfZm9s bG93cyAtIGNoZWNrcyB3aGV0aGVyIGEgaG9sZSBmb2xsb3dzIHRoaXMgbm9kZQo+ICsgKiBAbm9k ZTogZHJtX21tX25vZGUgdG8gY2hlY2sKPiArICoKPiArICogSG9sZXMgYXJlIGVtYmVkZGVkIGlu dG8gdGhlIGRybV9tbSB1c2luZyB0aGUgdGFpbCBvZiBhIGRybV9tbV9ub2RlLgo+ICsgKiBJZiB5 b3Ugd2lzaCB0byBrbm93IHdoZXRoZXIgYSBob2xlIGZvbGxvd3MgdGhpcyBwYXJ0aWN1bGFyIG5v ZGUsCj4gKyAqIHF1ZXJ5IHRoaXMgZnVuY3Rpb24uCj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAq IFRydWUgaWYgYSBob2xlIGZvbGxvd3MgdGhlIEBub2RlLgo+ICsgKi8KPiArc3RhdGljIGlubGlu ZSBib29sIGRybV9tbV9ob2xlX2ZvbGxvd3MoY29uc3Qgc3RydWN0IGRybV9tbV9ub2RlICpub2Rl KQo+ICt7Cj4gKwlyZXR1cm4gbm9kZS0+aG9sZV9mb2xsb3dzOwo+ICt9Cj4gKwo+ICBzdGF0aWMg aW5saW5lIHU2NCBfX2RybV9tbV9ob2xlX25vZGVfc3RhcnQoY29uc3Qgc3RydWN0IGRybV9tbV9u b2RlICpob2xlX25vZGUpCj4gIHsKPiAgCXJldHVybiBob2xlX25vZGUtPnN0YXJ0ICsgaG9sZV9u b2RlLT5zaXplOwo+IEBAIC0xNjYsMTQgKzE4MiwxNCBAQCBzdGF0aWMgaW5saW5lIHU2NCBfX2Ry bV9tbV9ob2xlX25vZGVfc3RhcnQoY29uc3Qgc3RydWN0IGRybV9tbV9ub2RlICpob2xlX25vZGUp Cj4gICAqCj4gICAqIFRoaXMgaXMgdXNlZnVsIGZvciBkcml2ZXItc3BlY2lmaWMgZGVidWcgZHVt cGVycy4gT3RoZXJ3aXNlIGRyaXZlcnMgc2hvdWxkCj4gICAqIG5vdCBpbnNwZWN0IGhvbGVzIHRo ZW1zZWx2ZXMuIERyaXZlcnMgbXVzdCBjaGVjayBmaXJzdCB3aGV0aGVyIGEgaG9sZSBpbmRlZWQK PiAtICogZm9sbG93cyBieSBsb29raW5nIGF0IG5vZGUtPmhvbGVfZm9sbG93cy4KPiArICogZm9s bG93cyBieSBsb29raW5nIGF0IGRybV9tbV9ob2xlX2ZvbGxvd3MoKQo+ICAgKgo+ICAgKiBSZXR1 cm5zOgo+ICAgKiBTdGFydCBvZiB0aGUgc3Vic2VxdWVudCBob2xlLgo+ICAgKi8KPiAgc3RhdGlj IGlubGluZSB1NjQgZHJtX21tX2hvbGVfbm9kZV9zdGFydChjb25zdCBzdHJ1Y3QgZHJtX21tX25v ZGUgKmhvbGVfbm9kZSkKPiAgewo+IC0JRFJNX01NX0JVR19PTighaG9sZV9ub2RlLT5ob2xlX2Zv bGxvd3MpOwo+ICsJRFJNX01NX0JVR19PTighZHJtX21tX2hvbGVfZm9sbG93cyhob2xlX25vZGUp KTsKPiAgCXJldHVybiBfX2RybV9tbV9ob2xlX25vZGVfc3RhcnQoaG9sZV9ub2RlKTsKPiAgfQo+ ICAKPiBAQCAtMTg4LDcgKzIwNCw3IEBAIHN0YXRpYyBpbmxpbmUgdTY0IF9fZHJtX21tX2hvbGVf bm9kZV9lbmQoY29uc3Qgc3RydWN0IGRybV9tbV9ub2RlICpob2xlX25vZGUpCj4gICAqCj4gICAq IFRoaXMgaXMgdXNlZnVsIGZvciBkcml2ZXItc3BlY2lmaWMgZGVidWcgZHVtcGVycy4gT3RoZXJ3 aXNlIGRyaXZlcnMgc2hvdWxkCj4gICAqIG5vdCBpbnNwZWN0IGhvbGVzIHRoZW1zZWx2ZXMuIERy aXZlcnMgbXVzdCBjaGVjayBmaXJzdCB3aGV0aGVyIGEgaG9sZSBpbmRlZWQKPiAtICogZm9sbG93 cyBieSBsb29raW5nIGF0IG5vZGUtPmhvbGVfZm9sbG93cy4KPiArICogZm9sbG93cyBieSBsb29r aW5nIGF0IGRybV9tbV9ob2xlX2ZvbGxvd3MoKS4KPiAgICoKPiAgICogUmV0dXJuczoKPiAgICog RW5kIG9mIHRoZSBzdWJzZXF1ZW50IGhvbGUuCj4gLS0gCj4gMi4xMS4wCj4gCj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGlu ZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZl dHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3 bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==