From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2 00/18] drm/ttm: make ttm bo a gem bo subclass Date: Mon, 24 Jun 2019 10:39:19 +0200 Message-ID: <20190624083919.GM12905@phenom.ffwll.local> References: <20190621115755.8481-1-kraxel@redhat.com> <8e022cff-604c-457a-7b85-c1233ac3a2fe@shipmail.org> <20190621155737.GH12905@phenom.ffwll.local> <7c156174-30ee-84c8-6252-70207df4c4fe@shipmail.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4CAE0895A8 for ; Mon, 24 Jun 2019 08:39:24 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id z25so20540914edq.9 for ; Mon, 24 Jun 2019 01:39:24 -0700 (PDT) Content-Disposition: inline In-Reply-To: <7c156174-30ee-84c8-6252-70207df4c4fe@shipmail.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thomas Hellstrom Cc: Christian =?iso-8859-1?Q?K=F6nig?= , dri-devel , Gerd Hoffmann List-Id: dri-devel@lists.freedesktop.org SGkgVGhvbWFzLAoKT24gU2F0LCBKdW4gMjIsIDIwMTkgYXQgMDk6MTQ6MjRQTSArMDIwMCwgVGhv bWFzIEhlbGxzdHJvbSB3cm90ZToKPiBPbiA2LzIyLzE5IDExOjE4IEFNLCBEYW5pZWwgVmV0dGVy IHdyb3RlOgo+ID4gSGkgVGhvbWFzLAo+ID4gCj4gPiBPbiBTYXQsIEp1biAyMiwgMjAxOSBhdCAx Mjo1MiBBTSBUaG9tYXMgSGVsbHN0cm9tPHRob21hc0BzaGlwbWFpbC5vcmc+ICB3cm90ZToKPiA+ ID4gT24gNi8yMS8xOSA1OjU3IFBNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPiA+IE9uIEZy aSwgSnVuIDIxLCAyMDE5IGF0IDA1OjEyOjE5UE0gKzAyMDAsIFRob21hcyBIZWxsc3Ryw7ZtIChW TXdhcmUpIHdyb3RlOgo+ID4gPiA+ID4gT24gNi8yMS8xOSAxOjU3IFBNLCBHZXJkIEhvZmZtYW5u IHdyb3RlOgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBBYXJnaC4gUGxlYXNlIGRvbid0IGRvIHRoaXMu IE11bHRpcGxlIHJlYXNvbnM6Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IDEpIEkgdGhpbmsgSXQncyBi YWQgdG8gZHVtcCBhbGwgYnVmZmVyIG9iamVjdCBmdW5jdGlvbmFsaXR5IHdlIGNhbiBwb3NzaWJs eQo+ID4gPiA+ID4gdGhpbmsgb2YgaW4gYSBzaW5nbGUgc3RydWN0IGFuZCBmb3JjZSB0aGF0IG9u IGFsbCAod2VsbCBhdCBsZWFzdCBtb3N0KQo+ID4gPiA+ID4gdXNlcnMuIEl0J3MgYmV0dGVyIHRv IGlzb2xhdGUgZnVuY3Rpb25hbGl0eSBpbiBzdHJ1Y3RzLCBoYXZlIHV0aWxpdHkKPiA+ID4gPiA+ IGZ1bmN0aW9ucyBmb3IgdGhvc2UgYW5kIGxldCB0aGUgZHJpdmVycyBkZXJpdmUgdGhlaXIgYnVm ZmVyIG9iamVjdHMgZnJvbQo+ID4gPiA+ID4gd2hhdGV2ZXIgZnVuY3Rpb25hbGl0eSB0aGV5IGFj dHVhbGx5IG5lZWQuCj4gPiA+ID4gPiAyKSB2bXdnZnggaXMgbm90IHVzaW5nIGdlbSBhbmQgd2Ug ZG9uJ3Qgd2FudCB0byBjYXJyeSB0aGF0IGV4dHJhIHBheWxvYWQgaW4KPiA+ID4gPiA+IHRoZSBi dWZmZXIgb2JqZWN0Lgo+ID4gPiA+ID4gMykgVFRNIGhpc3RvcmljYWxseSBoYXNuJ3QgYmVlbiB1 c2luZyB0aGUgdmFyaW91cyBkcm0gbGF5ZXJzIGV4Y2VwdCBmb3IKPiA+ID4gPiA+IGxhdGVyIHdo ZW4gY29tbW9uIGhlbHBlcnMgaGF2ZSBiZWVuIHVzZWQsIChsaWtlIHRoZSB2bWEgbWFuYWdlciBh bmQgdGhlCj4gPiA+ID4gPiBjYWNoZSB1dGlsaXRpZXMpLiBJdCdzIGRlc2lyYWJsZSB0byBrZWVw IHRoYXQgbGF5ZXIgZGlzdGluY3Rpb24uICh3aGljaCBpcwo+ID4gPiA+ID4gcmVhbGx5IHdoYXQg SSdtIHNheWluZyBpbiAxLikKPiA+ID4gPiA+IAo+ID4gPiA+ID4gTm93IGlmIG1vcmUgYW5kIG1v cmUgZnVuY3Rpb25hbGl0eSB0aGF0IG9yaWdpbmF0ZWQgaW4gVFRNIGlzIG1vdmluZyBpbnRvIEdF TQo+ID4gPiA+ID4gd2UgbmVlZCB0byBmaW5kIGEgYmV0dGVyIHdheSB0byBkbyB0aGF0IHdpdGhv dXQgZHVwbGljYXRpbmcgZnVuY3Rpb25hbGl0eS4gSQo+ID4gPiA+ID4gc3VnZ2VzdCBhZGRpbmcg cG9pbnRlcnMgaW4gdGhlIFRUTSBzdHJ1Y3RzIGFuZCBkZWZhdWx0aW5nIHRob3NlIHBvaW50ZXJz IHRvCj4gPiA+ID4gPiB0aGUgbWVtYmVyIGluIHRoZSBUVE0gc3RydWN0LiBPcHRpb25hbGx5IHRv IHRvIHRoZSBtZW1iZXIgaW4gdGhlIEdFTSBzdHJ1Y3QuCj4gPiA+ID4gPiBJZiB3ZSBuZWVkIHRv IG1pZ3JhdGUgdGhvc2UgbWVtYmVycyBvdXQgb2YgdGhlIFRUTSBzdHJ1Y3QsIHZtd2dmeCB3b3Vs ZCBoYXZlCj4gPiA+ID4gPiB0byBwcm92aWRlIHRoZW0gaW4gaXRzIG93biBidWZmZXIgY2xhc3Mu Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IE5BSyBmcm9tIHRoZSB2bXdnZnggc2lkZS4KPiA+ID4gPiBJ dCdzIDU5IERSSVZFUl9HRU0gdnMgMSB3aGljaCBpcyBub3QuIEkgdGhpbmsgdGhlIHZlcmRpY3Qg aXMgY2xlYXIgd2hhdAo+ID4gPiA+IHRoZSByZWFzb25hYmxlIHRoaW5nIHRvIGRvIGlzIGhlcmUs IGFuZCB0aGlzIHdpbGwgYWxsb3cgdXMgdG8KPiA+ID4gPiBzdWJzdGFudGlhbGx5IGltcHJvdmUg Y29kZSBhbmQgY29uY2VwdCBzaGFyaW5nIGFjcm9zcyBkcm0gZHJpdmVycy4KPiA+ID4gPiAKPiA+ ID4gPiAxMCB5ZWFycyBhZ28gaXQgd2FzIGluZGVlZCBub3QgY2xlYXIgd2hldGhlciBldmVyeW9u ZSBkb2luZyB0aGUgc2FtZSBpcyBhCj4gPiA+ID4gYnJpZ2h0IGlkZWEsIGJ1dCB0aGF0J3Mgbm8g bW9yZS4gSWYgeW91IHdhbnQgSSBndWVzcyB5b3UgY2FuIGtlZXAgYQo+ID4gPiA+IHByaXZhdGUg Y29weSBvZiB0dG0gaW4gdm13Z2Z4LCBidXQgbm90IHN1cmUgdGhhdCdzIHJlYWxseSB3b3J0aCBp dAo+ID4gPiA+IGxvbmctdGVybS4KPiA+ID4gPiAtRGFuaWVsCj4gPiA+IEl0J3Mgbm90IGEgcXVl c3Rpb24gYWJvdXQgd2hldGhlciBHRU0gb3IgVFRNLCBvciBldmVuIHRoZSBudW1iZXIgb2YKPiA+ ID4gZHJpdmVycyB1c2luZyBvbmUgb3IgdGhlIG90aGVyLiAoR0VNIHdvdWxkIGFjdHVhbGx5IGJl IGEgZ29vZCBjaG9pY2UgZm9yCj4gPiA+IHRoZSBsYXR0ZXIgdm13Z2Z4IGRldmljZSB2ZXJzaW9u cykuIEJ1dCB0aGlzIGlzIGdvaW5nIGFnYWluc3QgYWxsIHJlY2VudAo+ID4gPiBlZmZvcnQgdG8g bWFrZSBkaWZmZXJlbnQgcGFydHMgb2YgZHJtIGZ1bmN0aW9uYWxpdHkgcmVjZW50bHkgc2VsZi1j b250YWluZWQuCj4gPiA+IAo+ID4gPiBKdXN0IHN0b3AgYW5kIHRoaW5rIGZvciBhIHdoaWxlIHdo YXQgd291bGQgaGFwcGVuIGlmIHNvbWVvbmUgd291bGQKPiA+ID4gc3VnZ2VzdCBkb2luZyB0aGUg b3Bwb3NpdGU6IG1ha2luZyBhIGdlbSBvYmplY3QgYSBkZXJpdmVkIGNsYXNzIG9mIGEgVFRNCj4g PiA+IG9iamVjdCwgYXJndWluZyB0aGF0IGEgbG90IG9mIEdFTSBkcml2ZXJzIGFyZSB1c2luZyBU VE0gYXMgYSBiYWNrZW5kLgo+ID4gPiBUaGVyZSB3b3VsZCBwcm9iYWJseSBiZSBhIGxvdCBvZiBw ZW9wbGUgY2xhaW1pbmcgIndlIGRvbid0IHdhbnQgdG8KPiA+ID4gdW5uZWNlc2FyaWx5IGNhcnJ5 IHRoYXQgc3R1ZmYiLiBUaGF0J3MgYmVjYXVzZSB0aGF0IHdvdWxkIGFsc28gYmUgYSBwb29yCj4g PiA+IGRlc2lnbi4KPiA+IFRoYXQgY2FzZSBpcyBhIGJpdCBhIGRpZmZlcmVudCBjYXNlLiBXZSBo YXZlCj4gPiAtIDUgdHRtK2dlbSBkcml2ZXJzLCByZWNlbnRseSByZWZhY3RvcmVkIGludG8gdnJh bSBoZWxwZXJzIChidXQgc3RpbGwKPiA+IHR0bSB1bmRlcm5lYXRoKQo+ID4gLSA1IHR0bStnZW0g ZHJpdmVycywgdXNpbmcgdHRtIGRpcmVjdGx5Cj4gPiAtIDEgdHRtIGRyaXZlciwgbm8gZ2VtCj4g PiAtIDQ4IG90aGVyIGdlbSBkcml2ZXJzIHdpdGggbm8gdnJhbSBzdXBwb3J0Cj4gPiAtIDEgZ2Vt IGRyaXZlciB3aGljaCB3aWxsIGdhaW4gdnJhbSBzdXBwb3J0IHNob3J0bHksIHdpdGggb3Igd2l0 aG91dAo+ID4gdHRtIHN0aWxsIG5vdCBjbGVhcgo+ID4gCj4gPiAxMTo0OCBpcyBub3QgZXZlbiBj bG9zZSB0byA1OToxIGltby4gQW5kIEkgdGhpbmsgZXZlbiBpZiBUaG9tYXMKPiA+IFppbW1lcm1h bm4gYW5kIG90aGVycyBnZXQgcmVhbGx5IGJ1c3kgcG9ydGluZyBvbGQgZGlzY3JldGUgZmJkZXYK PiA+IGRyaXZlcnMgdG8ga21zLCB0aGF0IHJhdGlvIHdvbid0IGNoYW5nZSBtdWNoIHNpbmNlIHdl J3JlIGFsc28gZ2FpbmluZwo+ID4gbmV3IHNvYyBkcm0gZHJpdmVycyBhdCBhIHN0ZWFkeSByYXRl Lgo+IAo+IFllYWgsIG15IHBvaW50IHdhcyBub3QgcmVhbGx5IHN1Z2dlc3RpbmcgdGhhdCB3ZSBk byB0aGlzLCBidXQgcmF0aGVyIHRoYXQKPiBwZW9wbGUgd291bGQgcmlnaHRmdWxseSBnZXQgdXBz ZXQgYmVjYXVzZSB0aGUgc3RydWN0IGNvbnRhaW5zIHVudXNlZCBzdHVmZi4KPiAKPiBBbHNvIGEg dHJhcCB3ZSBtaWdodCBlbmQgdXAgd2l0aCBpbiB0aGUgZnV0dXJlIGlzIHRoYXQgd2l0aCB0aGUg ZGVzaWduCj4gc3VnZ2VzdGVkIGluIHRoaXMgcGF0Y2ggc2VyaWVzIGlzIHRoYXQgcGVvcGxlIHN0 YXJ0IGFzc3VtaW5nIHRoYXQgdGhlCj4gZW1iZWRkZWQgZ2VtIG9iamVjdCBpcyBhY3R1YWxseSBp bml0aWFsaXplZCBhbmQgd29ya2luZywgd2hpY2ggY291bGQgbGVhZCB0bwo+IHByZXR0eSBzZXZl cmUgcHJvYmxlbXMgZm9yIHZtd2dmeC4uLgoKWWVhaCB0aGF0J3MgdGhlIGJpZ2dlc3QgcmlzayBo ZXJlLiBCdXQgdGhhdCBzYW1lIHJpc2sgZXhpc3RzIG5vIG1hdHRlciBob3cKd2Ugc2hhcmUgY29k ZSwgcGVvcGxlIGNhbiBhbHNvIGFkZCBuZXcgZmllbGRzIHRvIHRoZSBjb21tb25fYm9fc3RydWN0 IHlvdQpwcm9wb3NlIGFuZCB0aGVuIGZvcmdldCB0byBpbnRpdGlhbGl6ZSBpdCBpbiBvbmUgb2Yg dGhlIHRocmVlIHVzZS1jYXNlczoKLSBnZW0gb25seQotIHR0bStnZW0KLSB0dG0gb25seQoKQW5k IHZtd2dmeCBpcyB0aGUgbW9zdCB0aHJlYXRlbmVkIGhlcmUgYmVjYXVzZSBpdCdzIHRoZSBsZWFz dCBjb21tb24KY29uZmlnLiBUaGF0J3MganVzdCBwYXJ0IG9mIHRoZSBwcml6ZSwgYW5kIGlmIGl0 J3MgcmVhbGx5IGJhZCBJIHRoaW5rIHdlCmNvdWxkIGRvIHNvbWUgc2VsZi10ZXN0cywgdG8gbWFr ZSBzdXJlIGJhc2ljIHR0bS1vbmx5IHN0dWZmIGtlZXBzIHdvcmtpbmcKYXMgaXQgc2hvdWxkLiBQ bHVzIGdldCB0aGUgc2VsZnRlc3RzIGludGVncmF0ZWQgaW50byBkZWZhdWx0IGJ1aWxkcy4KCj4g PiBBbHNvIEkgd291bGRuJ3QgbWluZCBpZiB3ZSBlLmcuIHN0dWZmIGEgc3RydWN0IGxpc3RfaGVh ZCBscnU7IGludG8KPiA+IGRybV9nZW1fYnVmZmVyX29iamVjdCwgdGhhdCdzIHByb2JhYmx5IHVz ZWZ1bCBmb3IgbWFueSBjYXNlcyAobm90IHRoZQo+ID4gcHVyZSBkaXNwbGF5IGRyaXZlcnMsIGJ1 dCB0aGV5IHRlbmQgdG8gaGF2ZSBzbyBmZXcgYm8gaXQgcmVhbGx5IHdvbnQKPiA+IG1hdHRlciBl dmVuIGlmIHdlIGFkZCBhIGZldyBrYiBvZiBjcnVmdCkuCj4gPiAKPiA+ID4gV2hhdCBJJ20gc3Vn Z2VzdGluZyBpcywgYnVpbGQgdGhhdCBpbXByb3ZlZCBjb2RlIGFuZCBjb25jZXB0IHNoYXJpbmcg YXJvdW5kCj4gPiA+IAo+ID4gPiBzdHJ1Y3QgZ2VtX3R0bV9vYmplY3Qgewo+ID4gPiAgICAgIHN0 cnVjdCBnZW1fb2JqZWN0Owo+ID4gPiAgICAgIHN0cnVjdCB0dG1fb2JqZWN0Owo+ID4gPiB9Owo+ ID4gSSBndWVzcyB0ZWNobmljYWxseSB0aGlzIHdvdWxkIHdvcmsgdG9vLiBCaXQgbW9yZSBjaHVy biAobWF5YmUKPiA+IHN1YnN0YW50aWFsbHkgbW9yZSwgSSBoYXZlbid0IGxvb2tlZCB0YmgpIHRv IHJvbGwgdGhpcyBvdXQgZm9yIGFsbCB0aGUKPiA+IHR0bSBkcml2ZXJzIHVzaW5nIGdlbS4KPiA+ IAo+ID4gPiBBbmQgbGV0cyB3b3JrIHRvZ2hldGhlciB0byBlbGltaW5hdGUgd2hhdCdzIGR1cGxp Y2F0ZWQuCj4gPiBIb3cgd291bGQgeW91IHNoYXJlIHRoZSBiby5yZXN2IHBvaW50ZXIgd2l0aCB0 aGUgYWJvdmUgZGVzaWduPyBXaXRoCj4gPiBlbWJlZGRpbmcgdHRtIGNhbiB1c2UgdGhlIGdlbSBv bmUsIGFuZCB3ZSBkcm9wIGEgYnVuY2ggb2YgY29kZSAoYW5kCj4gPiBmb3IgYWxsIHRoZSB0dG0r Z2VtIGRyaXZlcnMsIG9uZSBwb2ludGVyIHRoZXkgZG9uJ3QgbmVlZCB0d2ljZSkuIFdpdGgKPiA+ IHRoZSBzaWRlLWJ5LXNpZGUsIHdoaWNoIGlzIHRoZSBkZXNpZ24gYWxsIGdlbSt0dG0gZHJpdmVy cyB1c2VkIHRoZQo+ID4gcGFzdCBmZXcgeWVhcnMsIHdlIHN0aWxsIG5lZWQgdGhhdCBkdXBsaWNh dGlvbi4gU2FtZSBmb3IgdGhlIHZtYSBub2RlCj4gPiB0aGluZywgd2hpY2ggaXMgYWxzbyBkdXBs aWNhdGVkLgo+IAo+IFRvIGJlbW9yZSBwcmVjaXNlIEknZCBwcm9iYWJseSBkZWZpbmUgYQo+IAo+ IHN0cnVjdCBkcm1fYm9fY29tbW9uIHsKPiDCoMKgwqAgc3RydWN0IHJlc2VydmF0aW9uX29iamVj dCByOwo+IMKgwqDCoCBzdHJ1Y3QgZHJtX3ZtYV9ub2RlIHY7Cj4gfTsKPiAKPiBFbWJlZCBpdCBp biBhIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAoYW5kIGluIGEgc3RydWN0IHZtd2dmeF9idWZmZXJf b2JqZWN0KQo+IGFuZCB0aGVuIGhhdmUgYSBwb2ludGVyIHRvIGEgc3RydWN0IGRybV9ib19jb21t b24gaW4gdGhlIHN0cnVjdAo+IHR0bV9idWZmZXJfb2JqZWN0LiBUaGF0J3MgYSBzaW5nbGUgcG9p bnRlciBvdmVyaGVhZCBmb3IgZXZlcnl0aGluZyB3ZSB3YW50Cj4gdG8gbW92ZS4KPiAKPiBBcyBU VE0tc3BlY2lmaWMgY29kZSBkaXNhcHBlYXJzLCBzbyB3aWxsIHRoZSBudW1iZXIgb2YgbWVtYmVy cyBpbiBzdHJ1Y3QKPiBkcm1fYm9fY29tbW9uLiBNZWFud2hpbGUsIHdlIG1haW50YWluIGEgbmlj ZSBsYXllcmluZyBhbmQgbm8gZXh0cmEgdW51c2VkCj4gcGF5bG9hZCBmb3IgYW55IGltcGxlbWVu dGF0aW9uLgo+IAo+ID4gQW5kIHRoYXQncyBqdXN0IHRoZSB0aGluZ3MgR2VyZCBkaWQKPiA+IGlu IHRoaXMgaW5pdGlhbCBwYXRjaCBzZXJpZXMuIEkgdGhpbmsgQ2hyaXN0aWFuIEvDtm5pZyBoYXMg c29tZSBpZGVhcwo+ID4gYXJvdW5kIHR0bV9ib18odW4pcmVzZXJ2ZSwgYW5kIEkganVzdCBzZW50 IG91dCBhIHBhdGNoIHNlcmllcyB0bwo+ID4gc3RyZWFtbGluZSBob3cgd2UgaGFuZGxlIHRoZSBy ZXNlcnZhdGlvbl9vYmplY3QgcG9pbnRlciBmb3IgcHJpbWUKPiA+IGltcG9ydC9leHBvcnQuCj4g PiAKPiA+ID4gVGhlIHZtd2dmeCBkcml2ZXIgaXMgZG9pbmcgd2hhdCBpdCBkb2VzIG1vc3RseSBi ZWNhdXNlIGFsbCBidWZmZXIKPiA+ID4gb2JqZWN0cyBkbyBub3QgbmVlZCB0byBiZSB1c2VyLXNw YWNlIHZpc2libGUsIGFuZCBkbyBub3QgbmVlZCB0byBiZQo+ID4gPiBtYXBwZWQgYnkgdXNlci1z cGFjZS4gQW5kIHRoZXJlIGFyZSBvdGhlciB0eXBlcyBvZiBvYmplY3RzIHRoYXQgRE8gbmVlZAo+ ID4gPiB0byBiZSB1c2VyLXNwYWNlIHZpc2libGUsIGFuZCB0aGF0IGRvIG5lZWQgdG8gYmUgc2hh cmVkIGJ5IHByb2Nlc3Nlcy4KPiA+ID4gSGVuY2UgdXNlci1zcGFjZSB2aXNpYmlsaXR5IGlzIHNv bWV0aGluZyB0aGF0IHNob3VsZCBiZSBhYnN0cmFjdGVkIGFuZAo+ID4gPiBtYWRlIGF2YWlsYWJs ZSB0byB0aG9zZSBvYmplY3RzLiBOb3QgbHVtcGVkIHRvZ2V0aGVyIHdpdGggYWxsIG90aGVyCj4g PiA+IHBvdGVudGlhbCBidWZmZXIgb2JqZWN0IGZ1bmN0aW9uYWxpdHkuCj4gPiBJJ2Qgc3RpbGwg Z28gd2l0aCBwcmFnbWF0aWMgY2hvaWNlIG9mICJ0aGlzIGhlcmUgaXMgdHlwZWQgJiByZXZpZXdl ZCwKPiA+IGFuZCBhIGJ1bmNoIG9mIHBlb3BsZSBhcmUgZW50aHVzYXN0aXN0aWMgYWJvdXQgdXNp bmcgdGhpcyB0byBkcml2ZQo+ID4gZnVydGhlciByZWZhY3RvcmluZyBpbiB0aGlzIGFyZWEiLiBX aGF0ZXZlciB0aGUgcmVhc29ucywgYnV0IHNpbmNlIGEKPiA+IGZldyBtb250aHMgdGhlIHR0bSBy ZWZhY3RvciB0cmFpbiBzZWVtcyB0byBoYXZlIGdhaW5lZCBtYXNzaXZlCj4gPiBtb21lbnR1bS4K PiA+IAo+ID4gU28gaWYgeW91IHdhbnQgdG8gY2hhbmdlIHRoZSBkaXJlY3Rpb24gb2YgdGhpcyB0 cmFpbiwgSSB0aGluayB5b3UgbmVlZAo+ID4gdG8gZ2V0IHR5cGluZyBhbmQgc2hvdyB0aGF0IHlv dXIgc29sdXRpb24gaXMgYXQgbGVhc3QgYXMgZWZmZWN0aXZlIGF0Cj4gPiBmYWNpbGl0aW5nIGFs bCB0aGUgdGhpbmdzIHBlb3BsZSB3YW50IHRvIGRvIHdpdGggY29kZSBzaGFyaW5nIGFjcm9zcwo+ ID4gZHJtIGRyaXZlcnMuCj4gCj4gV2VsbCBJIGRvbid0IHRoaW5rIGl0IG5lZWRzIHRvIGNoYW5n ZSBkaXJlY3Rpb24uIEkganVzdCBmZWVsIGl0IGdvdAo+IHRlbXBvcmFyaWx5IGRlcmFpbGVkLiBC dXQgaWYgdGhhdCdzIHdoYXQgaXQgdGFrZSBJJ2xsIHB1dCBzb21ldGhpbmcgbGlrZSB0aGUKPiBh Ym92ZSB0b2dldGhlciB0byBzZWUgaG93IGl0IGVuZHMgdXAuIEJ1dCBJIGNhbid0IGRvIGl0IHVu dGlsIEF1Z3VzdCwgdGhvdWdoCj4gd2hlbiBJJ20gYmFjaywgc28gSSBndWVzcyBJIGhhdmUgdG8g Y2hlY2sgd2hlcmUgdGhlIGNvZGUgaXMgYXQgdGhlbi4KClllYWggSSB0aGluayBhIHdhaXQmc2Vl IGlzIGJlc3QgaGVyZSwgd2UgY2FuIGNvdXJzZS1jb3JyZWN0IGxhdGVyIG9uCnN0aWxsLgotRGFu aWVsCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlv bgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWw=