From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mario Kleiner Subject: Re: Funky new vblank counter regressions in Linux 4.4-rc1 Date: Mon, 23 Nov 2015 22:20:40 +0100 Message-ID: <56538328.1020702@gmail.com> References: <564E0AF4.3050406@gmail.com> <56533883.8020706@gmail.com> <5653714A.9050809@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 8425F6E65C for ; Mon, 30 Nov 2015 12:13:08 -0800 (PST) Resent-Message-ID: <20151130201305.GZ4437@intel.com> Resent-To: dri-devel@lists.freedesktop.org In-Reply-To: <5653714A.9050809@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Harry Wentland , Alex Deucher Cc: =?UTF-8?Q?Michel_D=c3=a4nzer?= , "Koenig, Christian" List-Id: dri-devel@lists.freedesktop.org T24gMTEvMjMvMjAxNSAwOTowNCBQTSwgSGFycnkgV2VudGxhbmQgd3JvdGU6Cj4gSGkgTWFyaW8s Cj4KPiB3aGVuIHdlJ3ZlIGhhZCBpc3N1ZXMgd2l0aCB0aGlzIG9uIGFtZGdwdSBDaHJpc3RpYW4g Zml4ZWQgaXQgYnkgZW5hYmxpbmcKPiBwYWdlIGZsaXAgaXJxIGFsbCB0aGUgdGltZSwgcmF0aGVy IHRoYW4gdHVybmluZyBpdCBvbiB3aGVuIHVzZXJtb2RlCj4gcmVxdWVzdCBhIGZsaXAgYW5kIHR1 cm5pbmcgaXQgYmFjayBvZmYgYWZ0ZXIgd2UgaGFuZGxlZCBpdC4gSSBiZWxpZXZlCj4gdGhhdCBm aXggZXhpc3RzIG9uIHJhZGVvbiBhbHJlYWR5LiBNaWNoZWwgc2hvdWxkIGhhdmUgbW9yZSBpbmZv IG9uIHRoYXQuCj4KPiBTZWUgb3RoZXIgY29tbWVudHMgaW5saW5lLgo+Cj4gVGhhbmtzLAo+IEhh cnJ5Cj4KPgo+IE9uIDIwMTUtMTEtMjMgMTE6MDIgQU0sIE1hcmlvIEtsZWluZXIgd3JvdGU6Cj4+ IE9uIDExLzIwLzIwMTUgMDQ6NDIgQU0sIEFsZXggRGV1Y2hlciB3cm90ZToKPj4+IE9uIFRodSwg Tm92IDE5LCAyMDE1IGF0IDEyOjQ2IFBNLCBNYXJpbyBLbGVpbmVyCj4+PiA8bWFyaW8ua2xlaW5l ci5kZUBnbWFpbC5jb20+IHdyb3RlOgo+Pj4+IEhpIEFsZXggYW5kIE1pY2hlbCBhbmQgVmlsbGUs Cj4+Pj4KPj4+PiBpdCdzICJmaXggdmJsYW5rIHN0dWZmIiB0aW1lIGFnYWluIDstKQo+Pj4KPj4+ IEFkZGluZyBIYXJyeSBmcm9tIG91ciBkaXNwbGF5IHRlYW0uICBIZSBtaWdodCBiZSBhYmxlIHRv IGZpbGwgaW4gdGhlCj4+PiBibGFua3Mgb2Ygb24gc29tZSBvZiB0aGlzIGJldHRlciB0aGFuIEkg Y2FuLiAgSXQgbWlnaHQgYWxzbyBiZSB3b3J0aAo+Pj4gY2hlY2tpbmcgdG8gc2VlIGhvdyBvdXIg REFMIChvdXIgbmV3IGRpc3BsYXkgY29kZSB3aGljaCBpcyBiZWluZwo+Pj4gZGV2ZWxvcGVkIGRp cmVjdGx5IGJ5IG91ciBkaXNwbGF5IHRlYW0pIGNvZGUgaGFuZGxlcyB0aGlzLiAgSXQgY291bGQK Pj4+IGJlIHRoYXQgd2UgYXJlIGp1c3QgbWlzc2luZyByZWdpc3RlciBzZXR0aW5nczoKPj4KPj4g VGhhbmtzIEFsZXghIEFuZCBoZWxsbyBIYXJyeSA6KQo+Pgo+Pj4gaHR0cDovL2NnaXQuZnJlZWRl c2t0b3Aub3JnL35hZ2Q1Zi9saW51eC9sb2cvP2g9REFMLXdpcAo+Pgo+PiBJJ2xsIGhhdmUgYSBs b29rIGF0IHRoaXMuCj4+Cj4+PiBBZGRpdGlvbmFsbHkgd2UndmUgcHVibGlzaGVkIGZ1bGwgcmVn aXN0ZXJzIGhlYWRlcnMgZm9yIHRoZSBkaXNwbGF5Cj4+PiBibG9jazoKPj4+IGh0dHA6Ly9naXQu a2VybmVsLm9yZy9jZ2l0L2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0L3RyZWUv ZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2FzaWNfcmVnL2RjZQo+Pj4KPj4+IFRoZSBEQ0U4 IHN0dWZmIHNob3VsZCBnZW5lcmFsbHkgYXBwbHkgYmFjayB0byBEQ0U0LiAgSWYgeW91IGhhdmUK Pj4+IHF1ZXN0aW9ucyBhYm91dCByZWdpc3RlcnMgb2xkZXIgYXNpY3Mgbm90IGNvdmVyZWQgaW4g dGhlIGh3IGRvY3MsIGxldAo+Pj4gbWUga25vdy4gIE5vdGUgdGhlIG5ldyBoZWFkZXJzIGFyZSBk d29yZCBhbGlnbmVkIHJhdGhlciB0aGFuIGJ5dGUKPj4+IGFsaWduZWQuCj4+Pgo+Pgo+PiBJJ3Zl IHRlc3RlZCBub3cgd2l0aCB0d28gZGlmZmVyZW50IHByb2dyZXNzaXZlIG1vZGVzIG9uIERDRTMg YW5kIG9uZQo+PiBwcm9ncmVzc2l2ZSBtb2RlIG9uIERDRTQsIHRoZSBvbmx5IGNhcmRzIGkgaGF2 ZSBhdG0uIFNvIGZhciBpdCBzZWVtcwo+PiB0aGF0IHRoZSBmcmFtZWNvdW50ZXIgaW5kZWVkIGlu Y3JlbWVudHMgd2hlbiB0aGUgdnBvcyBmcm9tIHRoZSBzY2Fub3V0Cj4+IHBvc2l0aW9uIHF1ZXJ5 IGp1bXBzIGJhY2sgdG8gemVyby4gQXR0YWNoZWQgZm9yIHJlZmVyZW5jZSBpcyBteQo+PiBjdXJy ZW50IHBhdGNoIHRvIHJhZGVvbi1rbXMuIFRoaXMgb25lIHNlZW1zIHRvIHdvcmsgcmVsaWFibHkg c28gZmFyLAo+PiBhbHNvIGlmIGkgZW5hYmxlIHRoZSBpbW1lZGlhdGUgdmJsYW5rIGlycSBkaXNh YmxlIHdoaWNoIHdlIHNvIGZhciBvbmx5Cj4+IHVzZWQgb24gaW50ZWwta21zLgo+Pgo+PiBCdXQg YWNjb3JkaW5nIHRvIHRoaXMgcGF0Y2ggdGhlIGZyYW1lY291bnRlciBpbmNyZW1lbnQgaGFwcGVu cwo+PiBzb21ld2hlcmUgaW4gdGhlIG1pZGRsZSBvZiB2YmxhbmsuCj4+Cj4+IEVzc2VudGlhbGx5 IGZyb20gdGhlIHZwb3MgZXh0cmFjdGVkIGZyb20KPj4gRVZFUkdSRUVOX0NSVENfU1RBVFVTX1BP U0lUSU9OIHdoaWNoIGRlZmluZXMgc3RhcnQgb2YgdmJsYW5rICgiU3RhcnQiCj4+IHBhcnQgb2Yg RVZFUkdSRUVOX0NSVENfVl9CTEFOS19TVEFSVF9FTkQpIHVudGlsIG1heGltdW0gaWUuIFZUT1RB TC0xCj4+IHRoZSBmcmFtZWNvdW50ZXIgc3RheXMgb24gdGhlIGNvdW50IG9mIHRoZSBvbGQgcHJl dmlvdXMgc2Nhbm91dCBjeWNsZS4KPj4gVGhlbiB3aGVuIHZwb3Mgd3JhcHMgdG8gemVybyB0aGUg ZnJhbWVjb3VudGVyIGluY3JlbWVudHMgYnkgMS4gQW5kCj4+IHRoZW4gd2UgaGF2ZSBhbm90aGVy IGNvdXBsZSBvZiBkb3plbiBsaW5lcyBpbnNpZGUgdmJsYW5rIHVudGlsCj4+IHJlYWNoaW5nIHRo ZSAiRW5kIiBwYXJ0IG9mIEVWRVJHUkVFTl9DUlRDX1ZfQkxBTktfU1RBUlRfRU5EIGFuZAo+PiBl bnRlcmluZyBhY3RpdmUgc2Nhbm91dCBmb3IgdGhlIG5ldyBmcmFtZS4KPj4KPj4gU28gdGhlIHBv c2l0aW9uIG9mIG9ic2VydmVkIGZyYW1lY291bnRlciBpbmNyZW1lbnQgc2VlbXMgdG8gYmUgbm90 Cj4+IGNsb3NlIHRvIHRoZSBlbmQgb2YgdmJsYW5rICgic3RhcnQgb2YgZnJhbWUiIGluZGljYXRv cj8pLCBidXQgYSBjb3VwbGUKPj4gb2Ygc2NhbmxpbmVzIGFmdGVyIHN0YXJ0IG9mIHZibGFuay4K Pj4KPj4gRS5nLiwgZm9yIGEgMjU2MHgxNDQwIHZpZGVvIG1vZGUgYXQgNjAgSHosIHN0YXJ0IG9m IHZibGFuayBpcyAxNDc4LAo+PiB2dG90YWwgaXMgMTQ4MSwgZW5kIG9mIHZibGFuayBpcyAzOC4g U28gaSBlbnRlciB0aGUgdmJsYW5rIGFuZCBzZWUgdGhlCj4+IG9sZCBmcmFtZWNvdW50ZXIgZm9y IHZwb3MgPSAxNDc4LCAxNDc5LCAxNDgwLCB0aGVuIGl0IHdyYXBzIHRvIDAgYW5kCj4+IHRoZSBm cmFtZWNvdW50ZXIgaW5jcmVtZW50cyBieSAxLCB0aGVuIDM4IHNjYW5saW5lcyBsYXRlciB0aGUg dmJsYW5rCj4+IGVuZHMuCj4+Cj4+IFNvIGkgc2VlbSB0byBoYXZlIHNvbWV0aGluZyB0aGF0IHNl ZW1zIHRvIHdvcmsgaW4gcHJhY3RpY2UgYW5kIHRoaXMKPj4gImluY3JlbWVudCBmcmFtZWNvdW50 ZXIgaWYgdnBvcyB3cmFwcyBiYWNrIHRvIHplcm8iIGJlaGF2aW9yIG1ha2VzCj4+IHNvbWUgc2Vu c2UuIEl0IGp1c3QgZG9lc24ndCBjb25mb3JtIHRvIHdoYXQgdGhvc2UgZGVzY3JpcHRpb25zIGZv cgo+PiBzdGFydF9saW5lIGFuZCAic3RhcnQgb2YgZnJhbWUiIGluZGljYXRvciBkZXNjcmliZT8K Pj4KPiBUaGlzIGlzIGNvcnJlY3QuIE91ciBIVyBkb2Vzbid0IHJlYWxseSBoYXZlIGEgdmJsYW5r IGNvdW50ZXIgYnV0IGEgZnJhbWUKPiBjb3VudGVyLiBUaGUgZnJhbWVjb3VudGVyIGluY3JlbWVu dHMgYXQgdGhlIHN0YXJ0IG9mIHZzeW5jLCB3aGljaCBpcwo+IHdoZW4gd2Ugd3JhcCB0byB6ZXJv IHdoaWNoIGRvZXNuJ3QgY29pbmNpZGUgd2l0aCB0aGUgc3RhcnQgb2YgdmJsYW5rLgo+Cj4gV2hh dCB3ZSdyZSB0cnlpbmcgdG8gZG8gd2l0aCBnZXRfdmJsYW5rX2NvdW50ZXIgaXNuJ3QgdGhlIHNh bWUgYXMgd2hhdAo+IGZyYW1lY291bnQgZ2l2ZXMgdXMsIGJ1dCB3ZSBjb3VsZCBwcm9iYWJseSBk byBzb21ldGhpbmcgbGlrZToKPgo+IGlmIChnZXRfc2Nhbm91dF9wb3MgPiB2Ymxhbmtfc3RhcnQp Cj4gICAgcmV0dXJuIGZyYW1lX2NvdW50ICsgMTsKPiBlbHNlCj4gICAgcmV0dXJuIGZyYW1lX2Nv dW50Owo+CgpHcmVhdCEgVGhhdCdzIHdoYXQgbXkgY3VycmVudCBwYXRjaCBkb2VzIGFuZCBpdCBz ZWVtcyB0byB3b3JrIHdlbGwgd2l0aCAKZGlmZmVyZW50IHZpZGVvIG1vZGVzIG9uIGJvdGggRENF MyBhbmQgRENFNC4gU28gdGhlb3J5IGFncmVlcyB3aXRoIApwcmFjdGljZSBhZ2FpbiA6KSAtIHRo YW5rcyBmb3IgY2xhcmlmeWluZyB0aGlzLgoKU28gdGhlIG90aGVyIHByb2JsZW0gd2UgaGF2ZSBz aW5jZSBmb3JldmVyIGlzIHRoZSB2YmxhbmsgaXJxIGZpcmluZyAKYmVmb3JlIHRoZSBzdGFydCBv ZiB2YmxhbmsuIFdlIGFyZSB0eXBpY2FsbHkgMS0yIHNjYW5saW5lcyBiZWZvcmUgCnZibGFua19z dGFydCB3aGVuIHdlIHNhbXBsZSB0aGUgc2Nhbm91dCBwb3NpdGlvbiBhbmQgZnJhbWVjb3VudGVy LiBUaGlzIApuZWVkcyBhIHNsaWdodGx5IHVnbHkgd29ya2Fyb3VuZC4gSXMgdGhlcmUgYSB3YXks IG1heWJlIHNvbWUgY29uZmlnIApyZWdpc3RlciwgdG8gZmlyZSB0aGUgaXJxIGF0IGxlYWRpbmcg ZWRnZSBvZiB2YmxhbmsgaW5zdGVhZCBvZiBhIGJpdCB0b28gCmVhcmx5PwoKdGhhbmtzLAotbWFy aW8KCj4gSGFycnkKPgo+PiBJJ2xsIHRlc3Qgd2l0aCBhIGZldyBtb3JlIHZpZGVvIG1vZGVzLgo+ Pgo+PiB0aGFua3MsCj4+IC1tYXJpbwo+Pgo+Pgo+Pj4+Cj4+Pj4gVmlsbGUncyBjaGFuZ2VzIHRv IHRoZSBEUk0ncyBkcm1faGFuZGxlX3ZibGFuaygpIC8KPj4+PiBkcm1fdXBkYXRlX3ZibGFua19j b3VudCgpCj4+Pj4gY29kZSBpbiBMaW51eCA0LjQgbm90IG9ubHkgbWFkZSB0aGF0IGNvZGUgbW9y ZSBlbGVnYW50LCBidXQgYWxzbwo+Pj4+IHJlbW92ZWQgdGhlCj4+Pj4gcm9idXN0bmVzcyBhZ2Fp bnN0IHRoZSB2YmxhbmsgaXJxIHF1aXJrcyBpbiBBTUQgaHcgYW5kIHNpbWlsYXIKPj4+PiBoYXJk d2FyZS4gU28KPj4+PiBub3cgaSBnZXQgdG9ucyBvZiBvZmYtYnktb25lIGVycm9ycyBhbmQKPj4+ Pgo+Pj4+ICJbICAgNDMyLjM0NV0gKFdXKSBSQURFT04oMSk6IHJhZGVvbl9kcmkyX2ZsaXBfZXZl bnRfaGFuZGxlcjogUGFnZWZsaXAKPj4+PiBjb21wbGV0aW9uIGV2ZW50IGhhcyBpbXBvc3NpYmxl IG1zYyAyNDgwMyA8IHRhcmdldF9tc2MgMjQ4MDQiIFhPcmcKPj4+PiBtZXNzYWdlcwo+Pj4+IGZy b20gdGhhdCBrZXJuZWwuCj4+Pj4KPj4+PiBPbmUgb2YgdGhlIHJlYXNvbnMgZm9yIHRyb3VibGUg aXMgdGhhdCBBTUQgaHcgcXVpcmsgd2hlcmUgdGhlIGh3Cj4+Pj4gZmlyZXMgYW4KPj4+PiBleHRy YSB2YmxhbmsgaXJxIHNob3J0bHkgYWZ0ZXIgdmJsYW5rIGlycSdzIGdldCBlbmFibGVkLCBub3QK Pj4+PiBzeW5jaHJvbml6ZWQgdG8KPj4+PiB2YmxhbmssIGJ1dCB0eXBpY2FsbHkgaW4gdGhlIG1p ZGRsZSBvZiBhY3RpdmUgc2Nhbm91dCwgc28gd2UgZ2V0IGEKPj4+PiByZWR1bmRhbnQKPj4+PiBj YWxsIHRvIGRybV9oYW5kbGVfdmJsYW5rIGluIHRoZSBtaWRkbGUgb2Ygc2Nhbm91dC4KPj4+Pgo+ Pj4+IFRvIGZpeCB0aGF0IGkgaGF2ZSBhIG1pbm9yIHBhdGNoIHRvIG1ha2UgZHJtX3VwZGF0ZV92 YmxhbmtfY291bnQoKQo+Pj4+IGFnYWluCj4+Pj4gcm9idXN0IGFnYWluc3Qgc3VjaCByZWR1bmRh bnQgY2FsbHMsIHdoaWNoIGkgd2lsbCBzZW5kIG91dCBsYXRlciB0byB0aGUKPj4+PiBtYWlsaW5n IGxpc3QuIERpZmYgYXR0YWNoZWQgZm9yIHJlZmVyZW5jZS4KPj4+Pgo+Pj4+IFRoZSBzZWNvbmQg cXVpcmsgb2YgQU1EIGh3IGlzIHRoYXQgdGhlIHZibGFuayBpbnRlcnJ1cHQgZmlyZXMgYSBmZXcK Pj4+PiBzY2FubGluZXMgYmVmb3JlIHN0YXJ0IG9mIHZibGFuaywgc28gZHJtX2hhbmRsZV92Ymxh bmsgLT4KPj4+PiBkcm1fdXBkYXRlX3ZibGFua19jb3VudCgpIC0+IGRldi0+ZHJpdmVyLT5nZXRf dmJsYW5rX2NvdW50ZXIoKSBnZXRzCj4+Pj4gY2FsbGVkCj4+Pj4gYmVmb3JlIHRoZSBzdGFydCBv ZiB0aGUgdmJsYW5rIGZvciB3aGljaCB0aGUgbmV3IHZibGFuayBjb3VudCBzaG91bGQgYmUKPj4+ PiBxdWVyaWVkLgo+Pj4+Cj4+Pj4gVGhlIHRoaXJkIHByb2JsZW0gaXMgdGhhdCB0aGUgRFJNIHZi bGFuayBoYW5kbGluZyBhbHdheXMgaGFkIHRoZQo+Pj4+IGFzc3VtcHRpb24KPj4+PiB0aGF0IGhh cmR3YXJlIHZibGFuayBjb3VudGVycyB3b3VsZCBlc3NlbnRpYWxseSBpbmNyZW1lbnQgYXQgbGVh ZGluZwo+Pj4+IGVkZ2Ugb2YKPj4+PiB2YmxhbmsgLSBiYXNpY2FsbHkgaW4gc3luYyB3aXRoIHRo ZSBmaXJpbmcgb2YgdGhlIHZibGFuayBpcnEsIHNvCj4+Pj4gdGhhdCBhIGh3Cj4+Pj4gY291bnRl ciByZWFkb3V0IGZyb20gd2l0aGluIHRoZSB2YmxhbmsgaXJxIGhhbmRsZXIgd291bGQgYWx3YXlz Cj4+Pj4gZGVsaXZlciB0aGUKPj4+PiBuZXcgaW5jcmVtZW50ZWQgdmFsdWUuIElmIHRoaXMgYXNz dW1wdGlvbiBpcyB2aW9sYXRlZCB0aGVuIHRoZQo+Pj4+IGNvdW50aW5nIGJ5Cj4+Pj4gdXNlIG9m IHRoZSBodyBjb3VudGVyIGdldHMgdW5yZWxpYWJsZSwgYmVjYXVzZSBkZXBlbmRpbmcgb24gcmFu ZG9tCj4+Pj4gc21hbGwKPj4+PiBkZWxheXMgaW4gaXJxIGhhbmRsaW5nIHRoZSBjb2RlIG1heSBl bmQgdXAgc2FtcGxpbmcgdGhlIGh3IGNvdW50ZXIKPj4+PiBwcmUtIG9yCj4+Pj4gcG9zdC1pbmNy ZW1lbnQsIGxlYWRpbmcgdG8gaW5jb25zaXN0ZW50IHVwZGF0aW5nIGFuZCBmdW5reSBidWdzLiBJ dAo+Pj4+IGp1c3Qgc28KPj4+PiBoYXBwZW5zIHRoYXQgQU1EIGhhcmR3YXJlIGRvZXNuJ3QgaW5j cmVtZW50IHRoZSBodyBjb3VudGVyIGF0Cj4+Pj4gbGVhZGluZyBlZGdlCj4+Pj4gb2YgdmJsYW5r LCBzbyBzdHVmZiBmYWxscyBhcGFydC4KPj4+Pgo+Pj4+IFNvIHRvIGZpeCB0aG9zZSB0d28gcHJv YmxlbXMgaSdtIHRpbmtlcmluZyB3aXRoIGNvb2tpbmcgdGhlIGh3IHZibGFuawo+Pj4+IGNvdW50 ZXIgdmFsdWUgcmV0dXJuZWQgYnkgcmFkZW9uX2dldF92YmxhbmtfY291bnRlcl9rbXMoKSB0byBt YWtlIGl0Cj4+Pj4gYXBwZWFyCj4+Pj4gYXMgaWYgdGhlIGNvdW50ZXIgaW5jcmVtZW50ZWQgYXQg bGVhZGluZyBlZGdlIG9mIHZibGFuayBpbiBzeW5jIHdpdGgKPj4+PiB2YmxhbmsKPj4+PiBpcnEu Cj4+Pj4KPj4+PiBJdCBhbG1vc3Qgc29ydCBvZiB3b3JrcyBvbiB0aGUgcnM2MDAgY29kZSBwYXRo LCBidXQgaSBuZWVkIGEgYml0IG9mCj4+Pj4gaW5mbwo+Pj4+IGZyb20geW91Ogo+Pj4+Cj4+Pj4g MS4gVGhlcmUncyB0aGlzIHJlZ2lzdGVyIGZyb20gdGhlIG9sZCBzcGVjcyBmb3IgbTc2LnBkZiwg d2hpY2ggaXMKPj4+PiBub3QgcGFydAo+Pj4+IG9mIHRoZSBjdXJyZW50IHJlZ2lzdGVyIGRlZmlu ZXMgZm9yIHJhZGVvbi1rbXM6Cj4+Pj4KPj4+PiAiRDFDUlRDX1NUQVRVU19WRl9DT1VOVCAtIFJX IC0gMzIgYml0cyAtIFtHcHVGME1NUmVnOjB4NjBBOF0iCj4+Pj4KPj4+PiBJdCBjb250YWlucyB0 aGUgbG93ZXIgMTYgYml0cyBvZiBmcmFtZWNvdW50ZXIgYW5kIHRoZSAxMyBiaXRzIG9mCj4+Pj4g dmVydGljYWwKPj4+PiBzY2Fub3V0IHBvc2l0aW9uLiBJdCBzZWVtcyB0byBnaXZlIHRoZSBzYW1l IHJlYWRpbmdzIGFzIHRoZSAyNCBiaXQKPj4+PiBSXzAwNjBBNF9EMUNSVENfU1RBVFVTX0ZSQU1F X0NPVU5UIHdlIHVzZSBmb3IgdGhlIGh3IGNvdW50ZXIuIFRoaXMKPj4+PiB3b3VsZAo+Pj4+IGNv bWUgaGFuZHkuCj4+Pj4KPj4+PiBEb2VzIEV2ZXJncmVlbiBhbmQgbGF0ZXIgaGF2ZSBhIHNhbWUv c2ltaWxhciByZWdpc3RlciBhbmQgd2hlcmUgaXMgaXQ/Cj4+Pgo+Pj4gWWVzLiAgQ1JUQ19TVEFU VVNfVkZfQ09VTlQKPj4+Cj4+PiBDUlRDOkNSVENfU1RBVFVTX1ZGX0NPVU5UICDCtyAgW1IvV10g IMK3ICAzMiBiaXRzICDCtyAgQWNjZXNzOiA4LzE2LzMyICDCtwo+Pj4gICBbSU5TVDBdIEdwdUYw TU1SZWc6MHg2ZTljLCBbSU5TVDFdIEdwdUYwTU1SZWc6MHg3YTljLCBbSU5TVDJdCj4+PiBHcHVG ME1NUmVnOjB4MTA2OWMsIFtJTlNUM10gR3B1RjBNTVJlZzoweDExMjljLCBbSU5TVDRdCj4+PiBH cHVGME1NUmVnOjB4MTFlOWMsIFtJTlNUNV0gR3B1RjBNTVJlZzoweDEyYTljCj4+PiBERVNDUklQ VElPTjogQ3VycmVudCBjb21wb3NpdGUgdmVydGljYWwgYW5kIGZyYW1lIGNvdW50IGZvciBDUlRD Cj4+PiBGaWVsZCBOYW1lICAgQml0cyAgICBEZWZhdWx0ICAgRGVzY3JpcHRpb24KPj4+IENSVENf VkZfQ09VTlQKPj4+IChBY2Nlc3M6IFIpICAgIDI4OjAgICAgMHgwICAgIFJlcG9ydHMgY3VycmVu dCB2ZXJ0aWNhbCBhbmQgZnJhbWUgY291bnQKPj4+Cj4+Pj4KPj4+PiAyLiBUaGUgaHcgZnJhbWVj b3VudGVyIHNlZW1zIHRvIGluY3JlbWVudCB3aGVuIHRoZSB2ZXJ0aWNhbCBzY2Fub3V0Cj4+Pj4g cG9zaXRpb24KPj4+PiB3cmFwcyBiYWNrIGZyb20gKFZUT1RBTCAtIDEpIHRvIDAsIGF0IGxlYXN0 IG9uIHRoZSBvbmUgRENFLTMgZ3B1IGkKPj4+PiB0ZXN0ZWQgc28KPj4+PiBmYXIuIElzIHRoaXMg c28gb24gYWxsIGFzaWNzPyBBbmQgaXMgdGhlIGh3IGNvdW50ZXIgaW5jcmVtZW50IGhhcHBlbmlu Zwo+Pj4+IGV4YWN0bHkgYXQgdGhlIG1vbWVudCB0aGF0IHZlcnRpY2FsIHNjYW5vdXQgcG9zaXRp b24ganVtcHMgYmFjayB0bwo+Pj4+IHplcm8sIGllLgo+Pj4+IGJvdGggZXZlbnRzIGFyZSBkcml2 ZW4gYnkgdGhlIHNhbWUgc2lnbmFsPyBPciBpcyB0aGUgZnJhbWVjb3VudGVyCj4+Pj4gaW5jcmVt ZW50Cj4+Pj4ganVzdCBoYXBwZW5pbmcgc29tZXdoZXJlIGluc2lkZSBlaXRoZXIgc2NhbmxpbmUg VlRPVEFMLTEgb3Igc2NhbmxpbmUgMD8KPj4+Cj4+PiBVbmxlc3MgSGFycnkga25vd3MsIHdlIGNh biBhc2sgdGhlIGh3IHRlYW0sIGJ1dCBJIGRvdWJ0IHRoZXkgd291bGQKPj4+IGhhdmUgY2hhbmdl ZCBpdC4gIEkgdGhpbmsgaXQncyB0aWVkIHRvIHRoZSBzdGFydCBsaW5lIHdoaWNoIGlzCj4+PiBj b250cm9sbGVkIGJ5IHRoaXMgcmVnaXN0ZXI6Cj4+PiBDUlRDOkNSVENfU1RBUlRfTElORV9DT05U Uk9MICDCtyAgW1IvV10gIMK3ICAzMiBiaXRzICDCtyAgQWNjZXNzOiA4LzE2LzMyCj4+PiAgIMK3 ICBbSU5TVDBdIEdwdUYwTU1SZWc6MHg2ZWNjLCBbSU5TVDFdIEdwdUYwTU1SZWc6MHg3YWNjLCBb SU5TVDJdCj4+PiBHcHVGME1NUmVnOjB4MTA2Y2MsIFtJTlNUM10gR3B1RjBNTVJlZzoweDExMmNj LCBbSU5TVDRdCj4+PiBHcHVGME1NUmVnOjB4MTFlY2MsIFtJTlNUNV0gR3B1RjBNTVJlZzoweDEy YWNjCj4+PiBERVNDUklQVElPTjogbW92ZSBzdGFydF9saW5lIHNpZ25hbCBlYXJsaWVyIGJ5IDEg bGluZSBpbiBDUlRDCj4+PiBGaWVsZCBOYW1lICAgQml0cyAgICAgICAgICBEZWZhdWx0ICAgICAg ICAgRGVzY3JpcHRpb24KPj4+IENSVENfUFJPR1JFU1NJVkVfU1RBUlRfTElORV9FQVJMWSAgICAg ICAgIDAgICAgMHgwICAgIG1vdmUgc3RhcnRfbGluZQo+Pj4gc2lnbmFsIGJ5IDEgbGluZSBlYXJp bGVyIGluIHByb2dyZXNzaXZlIG1vZGUKPj4+Cj4+PiBDUlRDX0lOVEVSTEFDRV9TVEFSVF9MSU5F X0VBUkxZICAgICAgICAgOCAgICAgMHgxICAgICBtb3ZlIHN0YXJ0X2xpbmUKPj4+IHNpZ25hbCBi eSAxIGxpbmUgZWFybGllciBpbiBpbnRlcmxhY2VkIHRpbWluZyBtb2RlCj4+Pgo+Pj4gQ1JUQ19B RFZBTkNFRF9TVEFSVF9MSU5FX1BPU0lUSU9OICAgICAgICAgMTk6MTYgICAgIDB4NCBBZHZhbmNl ZAo+Pj4gU3RhcnQgTGluZSBwb3NpdGlvbiByZXNwZWN0IHRvIG5vdCBWQkxBTksuIERlZmF1bHQg b2YgNCBtZWFucyB0aGUKPj4+IEFkdmFuY2VkIFN0YXJ0IExpbmUgaXMgNCBsaW5lcyBiZWZvcmUg dGhlIGZpcnN0IG5vbiBWQkxBTksgbGluZQo+Pj4KPj4+IFRoZSBmb2xsb3dpbmcgaW5mbyBJIGR1 ZyB1cCBpbnRlcm5hbGx5IG1heSBiZSB1c2VmdWw6Cj4+Pgo+Pj4gVGhlIHBvc2l0aW9uIG9mIHRo ZSBDUlRDIG91dHB1dCB0aW1pbmcgZ2VuZXJhdG9yIHdoZW4gdGhlIOKAnHN0YXJ0IG9mCj4+PiBm cmFtZeKAnSBpbmRpY2F0b3Igb2NjdXJzIGRlcGVuZHMgb24gc2V2ZXJhbCBjb25kaXRpb25zLiAg VGhlc2UKPj4+IGNvbmRpdGlvbnMgYXJlIHdoZXRoZXIgdGhlIHRpbWluZyBnZW5lcmF0b3IgaXMg b3V0cHV0dGluZyB0aW1pbmcgZm9yIGEKPj4+IHByb2dyZXNzaXZlIG9yIGludGVybGFjZWQgZGlz cGxheSBtb2RlLCB3aGV0aGVyIHRoZSBzY2FsZXIgaXMgZW5hYmxlZCwKPj4+IGFuZCBpZiBzbywg d2hldGhlciB0aGUgcmVnaXN0ZXIgdG8gc2VsZWN0IGFuIGVhcmxpZXIgdGhhbiBub3JtYWwKPj4+ IOKAnHN0YXJ0IG9mIGZyYW1l4oCdIGluZGljYXRvciBpcyBzZXQuICBUaGUg4oCcc3RhcnQgb2Yg ZnJhbWXigJ0gaW5kaWNhdG9yCj4+PiB0eXBpY2FsbHkgb2NjdXJzIDIgbGluZXMgYmVmb3JlIHRo ZSB2ZXJ0aWNhbCBibGFuayBlbmQgcG9zaXRpb24KPj4+IChEeENSVENfVl9CTEFOS19FTkQpIGlz IHJlYWNoZWQKPj4+Cj4+PiBXaGVuIGludGVybGFjZWQgb3V0cHV0IGRpc3BsYXkgbW9kZXMgYXJl IGVuYWJsZWQKPj4+IChEeENSVENfSU5URVJMQUNFX0VOQUJMRSA9IDEpIGFuZCB0aGUgQ1JUQyB0 aW1pbmcgZ2VuZXJhdG9yIGlzIGVuYWJsZWQKPj4+IChEeENSVENfTUFTVEVSX0VOID0gMSksIHRo ZSB0aW1pbmcgZ2VuZXJhdG9y4oCZcyB2ZXJ0aWNhbCBjb3VudGVyIGNvdW50cwo+Pj4gYnkgMiBm b3IgYm90aCB0aGUgZXZlbiBmaWVsZHMgYW5kIG9kZCBmaWVsZHMgb2YgZWFjaCBmcmFtZS4gIEZv ciBib3RoCj4+PiB0aGUgZXZlbiBmaWVsZHMgYW5kIHRoZSBvZGQgZmllbGRzIG9mIGludGVybGFj ZWQgb3V0cHV0IG1vZGVzLCB0aGUKPj4+IOKAnHN0YXJ0IG9mIGZyYW1l4oCdIGluZGljYXRvciBv Y2N1cnMgMiBsaW5lcyBiZWZvcmUgdGhlIGVuZCBvZiB0aGUKPj4+IHZlcnRpY2FsIGJsYW5rIG9j Y3VycyAoRHhDUlRDX1ZfQkxBTktfRU5EIOKAkyA0IG9yIER4Q1JUQ19WX0JMQU5LX0VORCDigJMK Pj4+IDMgZGVwZW5kaW5nIG9uIHRoZSBmaWVsZCBzaW5jZSB0aGUgdmVydGljYWwgY291bnRlciBj b3VudHMgYnkgMiBpbgo+Pj4gaW50ZXJsYWNlZCksIHNpbmNlIHRoZSB2ZXJ0aWNhbCBjb3VudGVy IGNvdW50cyBieSAyIGluIHRoaXMgbW9kZSkuCj4+PiBUaGVyZSBpcyBvbmUgZXhjZXB0aW9uIHRv IHRoZSBwcmV2aW91cyBzdGF0ZW1lbnQuICBJZiBzY2FsaW5nIGlzCj4+PiBlbmFibGVkIChEeFND TF9TQ0FMRV9FTiA9IDEpIGFuZCB0aGUgZWFybHkgc3RhcnQgbGluZSBpcyBlbmFibGVkCj4+PiAo RHhDUlRDX0lOVEVSTEFDRV9TVEFSVF9MSU5FX0VBUkxZID0gMSkgaW4gaW50ZXJsYWNlZCBvdXRw dXQgbW9kZSB0aGVuCj4+PiB0aGUg4oCcc3RhcnQgb2YgZnJhbWXigJ0gaW5kaWNhdG9yIGhhcHBl bnMgMyBsaW5lcyBiZWZvcmUgdGhlIGVuZCBvZiB0aGUKPj4+IHZlcnRpY2FsIGJsYW5rIChEeENS VENfVl9CTEFOS19FTkQg4oCTIDYgb3IgRHhDUlRDX1ZfQkxBTktfRU5EIOKAkyA1Cj4+PiBkZXBl bmRpbmcgb24gdGhlIGZpZWxkIHNpbmNlIHRoZSB2ZXJ0aWNhbCBjb3VudGVyIGNvdW50cyBieSAy IGluCj4+PiBpbnRlcmxhY2VkKS4KPj4+Cj4+PiBXaGVuIHByb2dyZXNzaXZlIG91dHB1dCBkaXNw bGF5IG1vZGVzIGFyZSBlbmFibGVkCj4+PiAoRHhDUlRDX0lOVEVSTEFDRV9FTkFCTEUgPSAwKSBh bmQgdGhlIENSVEMgdGltaW5nIGdlbmVyYXRvciBpcyBlbmFibGVkCj4+PiAoRHhDUlRDX01BU1RF Ul9FTiA9IDEpLCB0aGUg4oCcc3RhcnQgb2YgZnJhbWXigJ0gaW5kaWNhdG9yIG9jY3VycyAyIGxp bmVzCj4+PiBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgdmVydGljYWwgYmxhbmsgb2NjdXJzIChEeENS VENfVl9CTEFOS19FTkQgLSAyKS4KPj4+IFNpbWlsYXIgdG8gaW50ZXJsYWNlZCBvdXRwdXQgbW9k ZSwgdGhlcmUgaXMgb25lIGV4Y2VwdGlvbiB0byB0aGUKPj4+IHByZXZpb3VzIHN0YXRlbWVudC4g IElmIHNjYWxpbmcgaXMgZW5hYmxlZCAoRHhTQ0xfU0NBTEVfRU4gPSAxKSBhbmQKPj4+IHRoZSBl YXJseSBzdGFydCBsaW5lIGlzIGVuYWJsZWQgKER4Q1JUQ19QUk9HUkVTU0lWRV9TVEFSVF9MSU5F X0VBUkxZID0KPj4+IDEpIGluIHByb2dyZXNzaXZlIG91dHB1dCBtb2RlIHRoZW4gdGhlIOKAnHN0 YXJ0IG9mIGZyYW1l4oCdIGluZGljYXRvcgo+Pj4gaGFwcGVucyAzIGxpbmVzIGJlZm9yZSB0aGUg ZW5kIG9mIHRoZSB2ZXJ0aWNhbCBibGFuawo+Pj4gKER4Q1JUQ19WX0JMQU5LX0VORCDigJMgMykK Pj4+Cj4+PiBJIGhvcGUgdGhpcyBoZWxwcywKPj4+Cj4+PiBBbGV4Cj4+Pgo+Pj4+Cj4+Pj4KPj4+ PiBJZiB3ZSBjYW4gZml4IHRoaXMgYW5kIGdldCBpdCBpbnRvIHJjMiBvciByYzMgdGhlbiB3ZSBj b3VsZCBhdm9pZCBhIGJhZAo+Pj4+IHJlZ3Jlc3Npb24gYW5kIHdpdGggYSBiaXQgb2YgbHVjayBh dCB0aGUgc2FtZSB0aW1lIGltcHJvdmUgYnkgYmVpbmcKPj4+PiBhYmxlIHRvCj4+Pj4gc2V0IGRl di0+dmJsYW5rX2Rpc2FibGVfaW1tZWRpYXRlID0gdHJ1ZSB0aGVuIGFuZCBhbGxvdyB2Ymxhbmsg aXJxcwo+Pj4+IHRvIGdldAo+Pj4+IHR1cm5lZCBvZmYgbW9yZSBhZ2dyZXNzaXZlbHkgZm9yIGEg Yml0IG9mIGV4dHJhIHBvd2VyIHNhdmluZy4KPj4+Pgo+Pj4+IHRoYW5rcywKPj4+PiAtbWFyaW8K PgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=