From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jerome Glisse Subject: Re: Asynchronous eviction [WAS Re: [PATCH] drm/ttm: add minimum residency constraint for bo eviction] Date: Fri, 30 Nov 2012 14:25:43 -0500 Message-ID: <20121130192542.GB2111@gmail.com> References: <50B7C6A4.2090306@shipmail.org> <50B87EED.5020400@shipmail.org> <50B8E7FF.8050006@shipmail.org> <50B8F048.3060707@shipmail.org> <20121130180738.GA2111@gmail.com> <50B8FB68.4060605@shipmail.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qc0-f177.google.com (mail-qc0-f177.google.com [209.85.216.177]) by gabe.freedesktop.org (Postfix) with ESMTP id 8932CE699E for ; Fri, 30 Nov 2012 11:28:51 -0800 (PST) Received: by mail-qc0-f177.google.com with SMTP id u28so420820qcs.36 for ; Fri, 30 Nov 2012 11:28:51 -0800 (PST) Content-Disposition: inline In-Reply-To: <50B8FB68.4060605@shipmail.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: Thomas Hellstrom Cc: Jerome Glisse , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBOb3YgMzAsIDIwMTIgYXQgMDc6MzE6MDRQTSArMDEwMCwgVGhvbWFzIEhlbGxzdHJv bSB3cm90ZToKPiBPbiAxMS8zMC8yMDEyIDA3OjA3IFBNLCBKZXJvbWUgR2xpc3NlIHdyb3RlOgo+ ID5PbiBGcmksIE5vdiAzMCwgMjAxMiBhdCAwNjo0MzozNlBNICswMTAwLCBUaG9tYXMgSGVsbHN0 cm9tIHdyb3RlOgo+ID4+T24gMTEvMzAvMjAxMiAwNjoxOCBQTSwgSmVyb21lIEdsaXNzZSB3cm90 ZToKPiA+Pj5PbiBGcmksIE5vdiAzMCwgMjAxMiBhdCAxMjowOCBQTSwgVGhvbWFzIEhlbGxzdHJv bSA8dGhvbWFzQHNoaXBtYWlsLm9yZz4gd3JvdGU6Cj4gPj4+Pk9uIDExLzMwLzIwMTIgMDU6MzAg UE0sIEplcm9tZSBHbGlzc2Ugd3JvdGU6Cj4gPj4+Pj5PbiBGcmksIE5vdiAzMCwgMjAxMiBhdCA0 OjM5IEFNLCBUaG9tYXMgSGVsbHN0cm9tIDx0aG9tYXNAc2hpcG1haWwub3JnPgo+ID4+Pj4+d3Jv dGU6Cj4gPj4+Pj4+T24gMTEvMjkvMjAxMiAxMDo1OCBQTSwgTWFyZWsgT2zFocOhayB3cm90ZToK PiA+Pj4+Pj4+V2hhdCBJIHRyaWVkIHRvIHBvaW50IG91dCB3YXMgdGhhdCB0aGUgc3luY2hyb25p emF0aW9uIHNob3VsZG4ndCBiZQo+ID4+Pj4+Pj5uZWVkZWQsIGJlY2F1c2UgdGhlIENQVSBzaG91 bGRuJ3QgZG8gYW55dGhpbmcgd2l0aCB0aGUgY29udGVudHMgb2YKPiA+Pj4+Pj4+ZXZpY3RlZCBi dWZmZXJzLiBUaGUgR1BVIG1vdmVzIHRoZSBidWZmZXJzLCBub3QgdGhlIENQVS4gV2hhdCBkb2Vz IHRoZQo+ID4+Pj4+Pj5DUFUgZG8gYmVzaWRlcyB1cGRhdGluZyBzb21lIGtlcm5lbCBzdHJ1Y3R1 cmVzPwo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+QWxzbywgYnVmZmVyIGRlbGV0aW9uIGlzIHNvbWV0aGlu ZyB3aGVyZSB5b3UgZG9uJ3QgbmVlZCB0byB3YWl0IGZvcgo+ID4+Pj4+Pj50aGUgYnVmZmVyIHRv IGJlY29tZSBpZGxlIGlmIHlvdSBrbm93IHRoZSBtZW1vcnkgYXJlYSB3b24ndCBiZQo+ID4+Pj4+ Pj5tYXBwZWQgYnkgdGhlIENQVSwgZXZlci4gVGhlIG1lbW9yeSBjYW4gYmUgcmVjbGFpbWVkIHJp Z2h0IGF3YXkuIEl0Cj4gPj4+Pj4+PndvdWxkIGJlIHRoZSBHUFUgdG8gbW92ZSBuZXcgZGF0YSBp biBhbmQgb25jZSB0aGF0IGhhcHBlbnMsIHRoZSBvbGQKPiA+Pj4+Pj4+YnVmZmVyIHdpbGwgYmUg dHJpdmlhbGx5IGlkbGUsIGJlY2F1c2Ugc2luZ2xlLXJpbmcgR1BVcyBleGVjdXRlCj4gPj4+Pj4+ PmNvbW1hbmRzIGluIG9yZGVyLgo+ID4+Pj4+Pj4KPiA+Pj4+Pj4+TWFyZWsKPiA+Pj4+Pj5BY3R1 YWxseSBhc3luY2hyb25vdXMgZXZpY3Rpb24gLyBkZWxldGlvbiBpcyBzb21ldGhpbmcgSSBoYXZl IGJlZW4KPiA+Pj4+Pj5wcm90b3R5cGluZyBmb3IgYSB3aGlsZSBidXQgbmV2ZXIgZ290dGVuIGFy b3VuZCB0byBpbXBsZW1lbnQgaW4gVFRNOgo+ID4+Pj4+Pgo+ID4+Pj4+PlRoZXJlIGFyZSBhIGZl dyBtaW5vciBjYXZlYXRzOgo+ID4+Pj4+Pgo+ID4+Pj4+PldpdGggYnVmZmVyIGRlbGV0aW9uLCB3 aGF0IHlvdSBzYXkgaXMgdHJ1ZSBmb3IgZml4ZWQgbWVtb3J5LCBidXQgbm90IGZvcgo+ID4+Pj4+ PlRUCj4gPj4+Pj4+bWVtb3J5IHdoZXJlIHBhZ2VzIGFyZSByZWNsYWltZWQgYnkgdGhlIHN5c3Rl bSBhZnRlciBidWZmZXIgZGVzdHJ1Y3Rpb24uCj4gPj4+Pj4+VGhhdCBtZWFucyB0aGF0IHdlIGRv bid0IGhhdmUgdG8gd2FpdCBmb3IgaWRsZSB0byBmcmVlIEdQVSBzcGFjZSwgYnV0IHdlCj4gPj4+ Pj4+bmVlZCB0byB3YWl0IGJlZm9yZSBwYWdlcyBhcmUgaGFuZGVkIGJhY2sgdG8gdGhlIHN5c3Rl bS4KPiA+Pj4+Pj4KPiA+Pj4+Pj5Td2Fwb3V0IG5lZWRzIHRvIGFjY2VzcyB0aGUgY29udGVudHMg b2YgZXZpY3RlZCBidWZmZXJzLCBidXQKPiA+Pj4+Pj5zeW5jaHJvbml6aW5nCj4gPj4+Pj4+ZG9l c24ndCBuZWVkIHRvIGhhcHBlbiB1bnRpbCBqdXN0IGJlZm9yZSBzd2Fwb3V0Lgo+ID4+Pj4+Pgo+ ID4+Pj4+Pk11bHRpLXJpbmcgLSBDUFUgc3VwcG9ydDogSWYgYW5vdGhlciByaW5nIC8gZW5naW5l IG9yIHRoZSBDUFUgaXMgYWJvdXQgdG8KPiA+Pj4+Pj5tb3ZlIGluIGJ1ZmZlciBjb250ZW50cyB0 byBWUkFNIG9yIGEgR1BVIGFwZXJ0dXJlIHRoYXQgd2FzIHByZXZpb3VzbHkKPiA+Pj4+Pj5ldmlj dGVkIGJ5IGFub3RoZXIgcmluZywgaXQgbmVlZHMgdG8gc3luYyB3aXRoIHRoYXQgZXZpY3Rpb24s IGJ1dCBkb2Vzbid0Cj4gPj4+Pj4+a25vdyB3aGF0IGJ1ZmZlciBvciBldmVuIHdoaWNoIGJ1ZmZl cnMgb2NjdXBpZWQgdGhlIHNwYWNlIHByZXZpb3VzbHkuCj4gPj4+Pj4+VHJpdmlhbGx5IG9uZSBj YW4gYXR0YWNoIGEgc3luYyBvYmplY3QgdG8gdGhlIG1lbW9yeSB0eXBlIG1hbmFnZXIgdGhhdAo+ ID4+Pj4+PnJlcHJlc2VudHMgdGhlIGxhc3QgZXZpY3Rpb24gZnJvbSB0aGF0IG1lbW9yeSB0eXBl LCBhbmQgKmFueSogZW5naW5lIChDUFUKPiA+Pj4+Pj5vcgo+ID4+Pj4+PkdQVSkgdGhhdCBtb3Zl cyBidWZmZXIgY29udGVudHMgaW4gbmVlZHMgdG8gb3JkZXIgdGhhdCBtb3ZlbWVudCB3aXRoCj4g Pj4+Pj4+cmVzcGVjdAo+ID4+Pj4+PnRvIHRoYXQgZmVuY2UuIEFzIHlvdSBzYXksIHdpdGggYSBz aW5nbGUgcmluZyBhbmQgbm8gQ1BVIGZhbGxiYWNrcywgdGhhdAo+ID4+Pj4+Pm9yZGVyaW5nIGlz IGEgbm8tb3AsIGJ1dCBhbnkgY29tbW9uIChub24tZHJpdmVyIGJhc2VkKSBpbXBsZW1lbnRhdGlv bgo+ID4+Pj4+Pm5lZWRzCj4gPj4+Pj4+dG8gc3VwcG9ydCB0aGlzLgo+ID4+Pj4+Pgo+ID4+Pj4+ PkEgc2luZ2xlIGZlbmNlIGF0dGFjaGVkIHRvIHRoZSBtZW1vcnkgdHlwZSBtYW5hZ2VyIGlzIHRo ZSBzaW1wbGVzdAo+ID4+Pj4+PnNvbHV0aW9uLAo+ID4+Pj4+PmJ1dCBhIHNvbHV0aW9uIHdpdGgg YSBmZW5jZSBmb3IgZWFjaCBmcmVlIHJlZ2lvbiBpbiB0aGUgZnJlZSBsaXN0IGlzIGFsc28KPiA+ Pj4+Pj5wb3NzaWJsZS4gVGhlbiBUVE0gbmVlZHMgYSBkcml2ZXIgY2FsbGJhY2sgdG8gYmUgYWJs ZSBvcmRlciBmZW5jZXMgdyByIHQKPiA+Pj4+Pj5lY2hvdGhlci4KPiA+Pj4+Pj4KPiA+Pj4+Pj4v VGhvbWFzCj4gPj4+Pj4+Cj4gPj4+Pj5SYWRlb24gYWxyZWFkeSBoYW5kbGUgbXVsdGktcmluZyBh bmQgdHRtIGludGVyYWN0aW9uIHdpdGggd2hhdCB3ZSBjYWxsCj4gPj4+Pj5zZW1hcGhvcmUuIFNl bWFwaG9yZSBhcmUgY3JlYXRlZCB0byBzeW5jaHJvbml6ZSB3aXRoIGZlbmNlIGFjY3Jvc3MKPiA+ Pj4+PmRpZmZlcmVudCByaW5nLiBJIHRoaW5rIHRoZSBlYXNpZXN0IHNvbHV0aW9uIGlzIHRvIGp1 c3QgcmVtb3ZlIHRoZSBibwo+ID4+Pj4+d2FpdCBpbiB0dG0gYW5kIGxldCBkcml2ZXIgaGFuZGxl IHRoaXMuCj4gPj4+PlRoZSB3YWl0IGNhbiBiZSByZW1vdmVkLCBidXQgb25seSBjb25kaXRpb25l ZCBvbiBhIGRyaXZlciBmbGFnIHRoYXQgc2F5cyBpdAo+ID4+Pj5zdXBwb3J0cyB1bnN5bmNocm9u b3VzIGJ1ZmZlciBtb3Zlcy4KPiA+Pj4+Cj4gPj4+PlRoZSBtdWx0aS1yaW5nIGNhc2UgSSdtIHRh bGtpbmcgYWJvdXQgaXM6Cj4gPj4+Pgo+ID4+Pj5SaW5nIDEgZXZpY3RzIGJ1ZmZlciBBLCBlbWl0 cyBmZW5jZSAwCj4gPj4+PlJpbmcgMiBldmljdHMgYnVmZmVyIEIsIGVtaXRzIGZlbmNlIDEKPiA+ Pj4+Li5PdGhlciBldmljdGlvbiB0YWtlcyBwbGFjZSBieSB2YXJpb3VzIHJpbmdzLCBwZXJoYXBz IGluY2x1ZGluZyByaW5nIDEgYW5kCj4gPj4+PnJpbmcgMi4KPiA+Pj4+UmluZyAzIG1vdmVzIGJ1 ZmZlciBDIGludG8gdGhlIHNwYWNlIHdoaWNoIGhhcHBlbnMgYm8gYmUgdGhlIHVuaW9uIG9mIHRo ZQo+ID4+Pj5zcGFjZSBwcmV2b3VzbHkgb2NjdXBpZWQgYnVmZmVyIEEgYW5kIGJ1ZmZlciBCLgo+ ID4+Pj4KPiA+Pj4+UXVlc3Rpb24gaXM6IHdoaWNoIGZlbmNlIGRvIHlvdSB3YW50IHRvIG9yZGVy IHRoaXMgbW92ZSB3aXRoPwo+ID4+Pj5UaGUgYW5zd2VyIGlzIHdoaWNoZXZlciBvZiBmZW5jZSAw IGFuZCAxIHNpZ25hbHMgbGFzdC4KPiA+Pj4+Cj4gPj4+PkkgdGhpbmsgaXQncyBhIHJlYXNvbmFi bGUgdGhpbmcgZm9yIFRUTSB0byBrZWVwIHRyYWNrIG9mIHRoaXMsIGJ1dCBpbiBvcmRlcgo+ID4+ Pj50byBkbyBzbyBpdCBuZWVkcyBhIGRyaXZlciBjYWxsYmFjayB0aGF0Cj4gPj4+PmNhbiBvcmRl ciB0d28gZmVuY2VzLCBhbmQgY2FuIG9yZGVyIGEgam9iIGluIHRoZSBjdXJyZW50IHJpbmcgdyBy IHQgYSBmZW5jZS4KPiA+Pj4+SW4gcmFkZW9uJ3MgY2FzZSB0aGF0IGRyaXZlciBjYWxsYmFjawo+ ID4+Pj53b3VsZCBwcm9iYWJseSBpbnNlcnQgYSBiYXJyaWVyIC8gc2VtYXBob3JlLiBJbiB0aGUg Y2FzZSBvZiBzaW1wbGVyIGhhcmR3YXJlCj4gPj4+Pml0IHdvdWxkIHdhaXQgb24gb25lIG9mIHRo ZSBmZW5jZXMuCj4gPj4+Pgo+ID4+Pj4vVGhvbWFzCj4gPj4+Pgo+ID4+PkkgZG9uJ3QgdGhpbmsg d2UgY2FuIG9yZGVyIGZlbmNlIGVhc2lseSB3aXRoIGEgY2xlYW4gYXBpLCBpIHdvdWxkCj4gPj4+ cmF0aGVyIHNlZSB0dG0gcHJvdmlkZSBhIGxpc3Qgb2YgZmVuY2UgdG8gZHJpdmVyIGFuZCB0ZWxs IHRvIHRoZQo+ID4+PmRyaXZlciBiZWZvcmUgbW92aW5nIHRoaXMgb2JqZWN0IGFsbCB0aGUgZmVu Y2Ugb24gdGhpcyBsaXN0IG5lZWQgdG8gYmUKPiA+Pj5jb21wbGV0ZWQuIEkgdGhpbmsgaXQncyBh cyBlYXN5IGFzIGFzc29jaWF0aW5nIGZlbmNlIHdpdGggZHJtX21tICh3ZWxsCj4gPj4+bm91dmVh dSBhcyBpdHMgb3duIG1tIHN0dWZmKSBidXQgaWRlYSB3b3VsZCBiYXNpY2x5IGJlIHRoYXQgZmVu Y2UgYXJlCj4gPj4+Ym90aCBhc3NvY2lhdGVkIHdpdGggYm8gYW5kIHdpdGggbW0gb2JqZWN0IHNv IHlvdSBrbm93IHdoZW4gYSBzZWdtZW50Cj4gPj4+b2YgbWVtb3J5IGlzIGlkbGUvYXZhaWxhYmxl IGZvciB1c2UuCj4gPj4+Cj4gPj4+Q2hlZXJzLAo+ID4+Pkplcm9tZQo+ID4+Cj4gPj5IbW0uIEFn cmVlZCB0aGF0IHdvdWxkIHNhdmUgYSBsb3Qgb2YgYmFycmllcnMuCj4gPj4KPiA+PkV2ZW4gaWYg VFRNIHRyYWNrcyBmZW5jZXMgYnkgZnJlZSBtbSByZWdpb25zIG9yIGEgc2luZ2xlIGZlbmNlIGZv cgo+ID4+dGhlIHdob2xlIG1lbW9yeSB0eXBlLCBpdCdzIGEgc2ltcGxlIGZhY3QgdGhhdCBmZW5j ZXMgZnJvbSB0aGUgc2FtZQo+ID4+cmluZyBhcmUgdHJpdmlhbGx5IG9yZGVyZWQsIHdoaWNoIG1l YW5zIHN1Y2ggYSBsaXN0IHNob3VsZCBjb250YWluIGF0Cj4gPj5tb3N0IGFzIG1hbnkgZmVuY2Vz IGFzIHRoZXJlIGFyZSByaW5ncy4KPiA+WWVzLCBvbmUgZnVuY3Rpb24gY2FsbGJhY2sgaXMgbmVl ZGVkIHRvIGtub3cgd2hpY2ggZmVuY2UgaXMgbmVjZXNzYXJ5LAo+ID5hbHNvIHR0bSBuZWVkcyB0 byBrbm93IHRoZSBudW1iZXIgb2YgcmluZ3MgKG5vdGUgdGhhdCBpIHRoaW5rIG5ld2VyCj4gPmh3 IHdpbGwgaGF2ZSBzb21ldGhpbmdzIGxpa2UgMTAyNCByaW5ncyBvciBldmVuIG1vcmUsIGV2ZW4g dG9kYXkgaHcKPiA+bWlnaHQgaGF2ZSBhcyBtYW55IGFzIGkgdGhpbmsgbnZpZGlhIGNoYW5uZWwg aXMgcHJldHR5IG11Y2ggd2hhdCBpCj4gPmRlZmluZSB0byBiZSBhIHJpbmcpLgo+ID4KPiA+QnV0 IGkgdGhpbmsgbW9zdCBjYXNlIHdpbGwgYmUgZmV3IGZlbmNlIGFjY3Jvc3MgZmV3IHJpbmdzLiBM aWtlIDEKPiA+cmluZyBpcyB0aGUgZG1hIHJpbmcgYW5kIHRoZW4geW91IGhhdmUgYSByaW5nIGZv ciBvbmUgb2YgdGhlIEdMCj4gPmNvbnRleHQgdGhhdCB1c2luZyB0aGUgbWVtb3J5IGFuZCBhbm90 aGVyIHJpbmcgZm9yIHRoZSBuZXcgY29udGV4dAo+ID50aGF0IHdhbnQgdG8gdXNlIHRoZSBtZW1v cnkuCj4gPgo+ID4+U28sIHdoYXRldmVyIGFwcHJvYWNoIGlzIGNob3NlbiwgVFRNIG5lZWRzIHRv IGJlIGFibGUgdG8gZGV0ZXJtaW5lCj4gPj50aGF0IHRyaXZpYWwgb3JkZXJpbmcsIGFuZCBJIHRo aW5rIHRoZSB1cGNvbWluZyBjcm9zcy1kZXZpY2UgZmVuY2luZwo+ID4+d29yayB3aWxsIGZhY2Ug dGhlIGV4YWN0IHNhbWUgcHJvYmxlbS4KPiA+Pgo+ID4+TXkgcHJvcG9zZWQgb3JkZXJpbmcgQVBJ IHdvdWxkIGxvb2sgc29tZXRoaW5nIGxpa2UKPiA+Pgo+ID4+c3RydWN0IGZlbmNlICpvcmRlcl9m ZW5jZXMoc3RydWN0IGZlbmNlICpmZW5jZV9hLCBzdHJ1Y3QgZmVuY2UKPiA+PipmZW5jZV9iLCBi b29sIHRyaXZpYWxfb3JkZXIsIGJvb2wgaW50ZXJydXB0aWJsZSwgYm9vbCBub193YWl0X2dwdSkK PiA+Pgo+ID4+UmV0dXJucyB3aGljaCBvZiB0aGUgZmVuY2VzIEBmZW5jZV9hIGFuZCBAZmVuY2Vf YiB0aGF0IHdoZW4KPiA+PnNpZ25hbGVkLCBndWFyYW50ZWVzIHRoYXQgYWxzbyB0aGUgb3RoZXIK PiA+PmZlbmNlIGhhcyBzaWduYWxlZC4gSWYgQHF1aWNrX29yZGVyIGlzIHRydWUsIGFuZCB0aGUg ZHJpdmVyIGNhbm5vdAo+ID4+dHJpdmlhbGx5IG9yZGVyIHRoZSBmZW5jZXMsIGl0IG1heSByZXR1 cm4gRVJSX1BUUigtRUFHQUlOKSwKPiA+PmlmIEBpbnRlcnJ1cHRpYmxlIGlzIHRydWUsIGFueSB3 YWl0IHNob3VsZCBiZSBwZXJmb3JtZWQKPiA+PmludGVycnVwdGlibHkgYW5kIGlmIG5vX3dhaXRf Z3B1IGlzIHRydWUsIHRoZSBmdW5jdGlvbiBpcyBub3QKPiA+PmFsbG93ZWQgdG8gd2FpdCBvbiBn cHUgYnV0IHNob3VsZCBpc3N1ZSBFUlJfUFRSKC1FQlVTWSkgaWYgaXQgbmVlZHMKPiA+PnRvIGRv IHNvIHRvIG9yZGVyIGZlbmNlcy4KPiA+Pgo+ID4+KEhhcmR3YXJlIHdpdGhvdXQgc2VtYXBob3Jl cyBjYW4ndCBvcmRlciBmZW5jZXMgd2l0aG91dCB3YWl0aW5nIG9uIHRoZW0pLgo+ID4+Cj4gPj5U aGUgbGlzdCBhcHByb2FjaCB5b3Ugc3VnZ2VzdCB3b3VsZCB1c2UgQHRyaXZpYWxfb3JkZXIgPSB0 cnVlLAo+ID4+U2luZ2xlIGZlbmNlIGFwcHJvYWNoIHdvdWxkIHVzZSBAdHJpdmlhbF9vcmRlciA9 IGZhbHNlLgo+ID4+Cj4gPj5BbmQgYSBmaXJzdCBzaW1wbGUgaW1wbGVtZW50YXRpb24gaW4gVFRN IHdvdWxkIHBlcmhhcHMgdXNlIHlvdXIgbGlzdAo+ID4+YXBwcm9hY2ggd2l0aCBhIHNpbmdsZSBs aXN0IGZvciB0aGUgd2hvbGUgbWVtb3J5IHR5cGUuCj4gPj4KPiA+Pi9UaG9tYXMKPiA+SSB3b3Vs ZCByYXRoZXIgYWRkIGEgY2FsbGJhY2sgbGlrZSA6Cj4gPgo+ID50dG1fcmVkdWNlX2ZlbmNlcyh1 bnNpZ25lZCAqbmZlbmNlcywgZmVuY2UgKipmZW5jZWFycmF5KQo+IAo+IEkgZG9uJ3QgYWdyZWUg aGVyZS4gSSB0aGluayB0aGUgZmVuY2Ugb3JkZXIgZnVuY3Rpb24gaXMgbW9yZQo+IHZlcnNhdGls ZSBhbmQgYSBnb29kIGFic3RyYWN0aW9uIHRoYXQgY2FuIGJlCj4gYXBwbGllZCBpbiBhIG51bWJl ciBvZiBjYXNlcyB0byB0aGlzIHByb2JsZW0uIEFueXdheSB3ZSBzaG91bGQgc3luYwo+IHRoaXMg d2l0aCBNYWFydGVuIGFuZCBoaXMKPiBmZW5jZSB3b3JrLiBUaGUgc2FtZSBwcm9ibGVtIGFwcGxp ZXMgdG8gYXR0YWNoaW5nIHNoYXJlZCBmZW5jZXMgdG8gYSBiby4KClJhZGVvbiBhbHJlYWR5IGhh bmRsZSB0aGUgYm8gY2FzZSBvbiBtdWx0aS1yaW5nIGFuZCBpIHRoaW5rIGl0IHNob3VsZApiZSBs ZWZ0IHRvIHRoZSBkcml2ZXIgdG8gZG8gd2hhdCBpdHMgbmVjZXNzYXJ5IHRoZXJlLgoKSSBkb24n dCB0aGluayBoZXJlIG1vcmUgdmVyc2F0aWxpdHkgaXMgYmFkLCBpbiBmYWN0IGkgYW0gcHJldHR5 IHN1cmUKdGhhdCBubyBodyBjYW4gZ2l2ZSBmZW5jZSBvcmRlcmluZyBhbmQgaSBhbHNvIHRoaW5r IHRoYXQgaWYgZHJpdmVyIGhhdmUKdG8gdHJhY2sgbXVsdGktcmluZyBmZW5jZSBvcmRlcmluZyBp dCB3aWxsIGp1c3Qgd2FzdGUgcmVzb3VyY2UgZm9yIG5vCmdvb2QgcmVhc29ucy4gRm9yIHRyYWNr aW5nIHRoYXQgaW4gcmFkZW9uIGkgd2lsbCBuZWVkIHRvIGtlZXAgYSBsaXN0Cm9mIHNlbWFwaG9y ZSBhbmQga25vd3Mgd2hpY2ggc2VtYXBob3JlcyBpbnN1cmUgc3luY2hyb25pemF0aW9uIGJ0dwp3 aGljaCByaW5nIGFuZCBmb3IgZWFjaCB3aGljaCBmZW5jZSBhcmUgY29uY2VybmVkIGp1c3QgdGhp bmtpbmcgdG8gaXQKaXQgd291bGQgYmUgYSBtZXNzeSBncmFwaCB3aXRoIHRvbnMgb2Ygbm9kZXMu CgpPZiBjb3Vyc2UgaGVyZSBpIGFtIHRoaW5raW5nIGluIHRlcm0gb2YgbmV3ZXIgR1BVIHdpdGgg dG9ucyBvZiByaW5ncywKR1BVIHdpdGggb25lIHJpbmcsIHdoaWNoIGFyZSBhIHZhbmlzaGluZyBj YXRlZ29yeSBhcyBuZXdlciBvcGVuY2wKcmVxdWlyZSBtb3JlIHJpbmcsIGFyZSBlYXN5IHRvIGhh bmRsZSBidXQgaSByZWFsbHkgZG9uJ3QgdGhpbmsgd2UKc2hvdWxkIGRlc2lnbiBmb3IgdGhvc2Uu CgpJIHRoaW5rIGhlcmUgd2Ugd2lsbCBoYXZlIHRvIGFncmVlIHRvIGRpc2FncmVlIGJ1dCBpIHNl ZSBhIGZlbmNlIGFycmF5CmFzIGEgcGVyZmVjdCBzb2x1dGlvbiB0aGF0IGlzIGZsZXhpYmxlIGVu b3VnaCBhbmQgdXNlIHRoZSBsZXNzIHJlc291cmNlCmJvdGggaW4gdGVybSBvZiBjcHUgdXNhZ2Ug YW5kIG1lbW9yeSAoYXNzdW1pbmcgcHJvcGVyIGltcGxlbWVudGF0aW9uKS4KCj4gCj4gPgo+ID5J biB0aGUgdHRtIGJvIG1vdmUgY2FsbGJhY2sgeW91IHByb3ZpZGUgdGhlIGxpc3QgbGlzdCBvZiBt bSBibG9jayAoZWFjaAo+ID5oYXZpbmcgaXRzIGFycmF5IG9mIGZlbmNlKSBhbmQgdGhlIG1vdmUg Y2FsbGJhY2sgaXMgcmVzcG9uc2libGUgdG8KPiA+dXNlIHdoYXQgZXZlciBtZWNhbmlzbSBpdCB3 YW50cyB0byBwcm9wZXJseSBzY2hlZHVsZSBhbmQgc3luY2hyb25pemUgdGhlCj4gPm1vdmUuCj4g Cj4gQWdyZWVkLgo+IAo+ID4KPiA+T25lIHRoaW5nIGkgYW0gbm90IHN1cmUgaXMgc2hvdWxkIHdl IG1lcmdlIGZyZWUgbW0gYmxvY2sgYW5kIG1lcmdlL3JlZHVjZQo+ID50aGVpciBmZW5jZSBhcnJh eSBvciBzaG91bGQgd2UgcHJvdmlkZSBhIGxpc3Qgb2YgbW0gYmxvY2sgdG8gdGhlIG1vdmUKPiA+ Y2FsbGJhY2suIEkgdGhpbmsgaGVyZSB0aGVyZSBpcyB0cmFkZW9mZiB5b3UgcHJvYmFibHkgd2Fu dCB0byBtZXJnZSBzbWFsbAo+ID5tbSBibG9jayB1cCB0byBhIGNlcnRhaW4gcG9pbnQgYnV0IHlv dSBkb24ndCB3YW50IHRvIG1lcmdlIHNvIG11Y2ggdGhhdAo+ID5hbnkgYWxsb2NhdGlvbiB3aWxs IGhhdmUgdG8gd2FpdCBvbiBhIHppbGxpb25zIGZlbmNlcy4KPiAKPiBBcyBtZW50aW9uZWQgcHJl dmlvdXNseSB3ZSBjYW4gY2hvb3NlIHRoZSBjb21wbGV4aXR5IGhlcmUsIGJ1dCB0aGUgc2ltcGxl c3QKPiBhcHByb2FjaCB3b3VsZCBiZSB0byBoYXZlIGEgc2luZ2xlIGxpc3QgZm9yIHRoZSB3aG9s ZSBtYW5hZ2VyLgo+IAo+IEkgdGhpbmsgaWYgd2UgZG9uJ3QgbWVyZ2UgbW0gYmxvY2tzIGltbWVk aWF0ZWx5IHdoZW4gZnJlZWQsIHdlJ3JlCj4gZ29pbmcgdG8gdXNlCj4gdXAgYSBsb3Qgb2YgcmVz b3VyY2VzLgo+IAoKSSB0aGluayBoZXJlIHRoZXJlIHNob3VsZCBiZSBhIGdyYW51bGFyaXR5IHNv bWV0aGluZyBsaWtlIGRvbid0IG1lcmdlIGJsb2NrCm92ZXIgMTZNIG9yIGRvbid0IG1lcmdlIGJs b2NrIGlmIHRoZXkgaGF2ZSBtb3JlIHRoYW4gTiBmZW5jZXMgaWYgbWVyZ2VkCnRvZ2V0aGVyLiBP ZiBjb3Vyc2UgaXQgbWVhbnMgYSBzcGVjaWFsIGFsbG9jYXRvciBidXQgYXMgbXkgd29yayBvbiBy YWRlb24KbWVtb3J5IHBsYWNlbWVudCBzaG93cyBpIHRoaW5rIHRoYXQgdGhlIHdob2xlIHZyYW0g YnVzaW5lc3MgKHdoaWNoIGlzIHJlYWxseQp3aGVyZSB0aGUgbXVsdGktZmVuY2Ugd2lsbCBiZSB1 c2VkIHRoZSBtb3N0KSBuZWVkcyBhIHdvcmtlciB0aHJlYWQgdGhhdApzY2hlZHVsZSB3b3JrcyBl dmVyeSBub3cgYW5kIHRoZW4sIHRoaXMgd29ya2VyIHRocmVhZCBjb3VsZCBhbHNvIG1lcmdlIG1t CndoZW4gZmVuY2UgY29tcGxldGUgLi4uCgpCdXQgaSByZWFsbHkgZG9uJ3QgdGhpbmsgdGhlcmUg c2hvdWxkIGJlIGEgbGlzdCBmb3IgdGhlIHdob2xlIG1hbmFnZXIsIHRoaW5rCmFib3V0IHRoZSBj YXNlIG9mIGEgdmVyeSBsb25nIGNsIHJ1bm5pbmcgam9iIHRoYXQgaXMgc3RpbGwgcnVubmluZyBi dXQgYWxyZWFkeQpoYXZlIGl0J3MgZXZpY3Rpb24gc2NoZWR1bGVkIGFuZCBpdCBtbSB2cmFtIG5v ZGUgbWFya2VkIGFzIGZyZWUgd2l0aCBhIGZlbmNlLgpJZiB3ZSBoYXZlIGEgbGlzdCBwZXIgbWFu YWdlciB0aGFuIHZyYW0gYmVjb21lcyB1bmF2YWlsYWJsZSBmb3IgYXMgbG9uZyBhcwp0aGlzIGNs IGpvYiBydW5zLiBJIGFtIHRoaW5raW5nIGhlcmUgdG8gbmV3ZXIgY3B1IHRoYXQgY2FuIHBhcnRp dGlvbiB0aGVyZQpjb21wdXRlIHVuaXQgKENMIDEuMiBzcGVjIG1hbmRhdGUgdGhhdCBpaXJjKSBm b3IgaW5zdGFuY2UgYnR3IGNsIGFuZCBnbCBzbyB0aGUKZ3B1IHN0aWxsIGNhbiBydW4gb3RoZXIg am9iIHdoaWxlIHRoaXMgY2wgdGhpbmdzIGlzIGdvaW5nIG9uLgoKV2hpbGUgaWYgd2Ugb25seSBt ZXJnZSBibG9jayB1cCB0byBhIGNlcnRhaW4gcG9pbnQgd2UgY2FuIGhhdmUgb3RoZXIgd29yawpk b25lIG9uIHRoZSBncHUgdXNpbmcgdGhpcyBtZW1vcnkgbWFuYWdlci4KCkNoZWVycywKSmVyb21l Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==