From mboxrd@z Thu Jan 1 00:00:00 1970 From: Harry Wentland Subject: Re: Funky new vblank counter regressions in Linux 4.4-rc1 Date: Mon, 23 Nov 2015 15:04:26 -0500 Message-ID: <5653714A.9050809@amd.com> References: <564E0AF4.3050406@gmail.com> <56533883.8020706@gmail.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 410BB6E65B for ; Mon, 30 Nov 2015 12:13:06 -0800 (PST) Resent-Message-ID: <20151130201302.GY4437@intel.com> Resent-To: dri-devel@lists.freedesktop.org In-Reply-To: <56533883.8020706@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Mario Kleiner , Alex Deucher Cc: =?UTF-8?Q?Michel_D=c3=a4nzer?= , "Koenig, Christian" List-Id: dri-devel@lists.freedesktop.org SGkgTWFyaW8sCgp3aGVuIHdlJ3ZlIGhhZCBpc3N1ZXMgd2l0aCB0aGlzIG9uIGFtZGdwdSBDaHJp c3RpYW4gZml4ZWQgaXQgYnkgZW5hYmxpbmcgCnBhZ2UgZmxpcCBpcnEgYWxsIHRoZSB0aW1lLCBy YXRoZXIgdGhhbiB0dXJuaW5nIGl0IG9uIHdoZW4gdXNlcm1vZGUgCnJlcXVlc3QgYSBmbGlwIGFu ZCB0dXJuaW5nIGl0IGJhY2sgb2ZmIGFmdGVyIHdlIGhhbmRsZWQgaXQuIEkgYmVsaWV2ZSAKdGhh dCBmaXggZXhpc3RzIG9uIHJhZGVvbiBhbHJlYWR5LiBNaWNoZWwgc2hvdWxkIGhhdmUgbW9yZSBp bmZvIG9uIHRoYXQuCgpTZWUgb3RoZXIgY29tbWVudHMgaW5saW5lLgoKVGhhbmtzLApIYXJyeQoK Ck9uIDIwMTUtMTEtMjMgMTE6MDIgQU0sIE1hcmlvIEtsZWluZXIgd3JvdGU6Cj4gT24gMTEvMjAv MjAxNSAwNDo0MiBBTSwgQWxleCBEZXVjaGVyIHdyb3RlOgo+PiBPbiBUaHUsIE5vdiAxOSwgMjAx NSBhdCAxMjo0NiBQTSwgTWFyaW8gS2xlaW5lcgo+PiA8bWFyaW8ua2xlaW5lci5kZUBnbWFpbC5j b20+IHdyb3RlOgo+Pj4gSGkgQWxleCBhbmQgTWljaGVsIGFuZCBWaWxsZSwKPj4+Cj4+PiBpdCdz ICJmaXggdmJsYW5rIHN0dWZmIiB0aW1lIGFnYWluIDstKQo+Pgo+PiBBZGRpbmcgSGFycnkgZnJv bSBvdXIgZGlzcGxheSB0ZWFtLiAgSGUgbWlnaHQgYmUgYWJsZSB0byBmaWxsIGluIHRoZQo+PiBi bGFua3Mgb2Ygb24gc29tZSBvZiB0aGlzIGJldHRlciB0aGFuIEkgY2FuLiAgSXQgbWlnaHQgYWxz byBiZSB3b3J0aAo+PiBjaGVja2luZyB0byBzZWUgaG93IG91ciBEQUwgKG91ciBuZXcgZGlzcGxh eSBjb2RlIHdoaWNoIGlzIGJlaW5nCj4+IGRldmVsb3BlZCBkaXJlY3RseSBieSBvdXIgZGlzcGxh eSB0ZWFtKSBjb2RlIGhhbmRsZXMgdGhpcy4gIEl0IGNvdWxkCj4+IGJlIHRoYXQgd2UgYXJlIGp1 c3QgbWlzc2luZyByZWdpc3RlciBzZXR0aW5nczoKPgo+IFRoYW5rcyBBbGV4ISBBbmQgaGVsbG8g SGFycnkgOikKPgo+PiBodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvfmFnZDVmL2xpbnV4L2xv Zy8/aD1EQUwtd2lwCj4KPiBJJ2xsIGhhdmUgYSBsb29rIGF0IHRoaXMuCj4KPj4gQWRkaXRpb25h bGx5IHdlJ3ZlIHB1Ymxpc2hlZCBmdWxsIHJlZ2lzdGVycyBoZWFkZXJzIGZvciB0aGUgZGlzcGxh eSAKPj4gYmxvY2s6Cj4+IGh0dHA6Ly9naXQua2VybmVsLm9yZy9jZ2l0L2xpbnV4L2tlcm5lbC9n aXQvdG9ydmFsZHMvbGludXguZ2l0L3RyZWUvZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2Fz aWNfcmVnL2RjZSAKPj4KPj4gVGhlIERDRTggc3R1ZmYgc2hvdWxkIGdlbmVyYWxseSBhcHBseSBi YWNrIHRvIERDRTQuICBJZiB5b3UgaGF2ZQo+PiBxdWVzdGlvbnMgYWJvdXQgcmVnaXN0ZXJzIG9s ZGVyIGFzaWNzIG5vdCBjb3ZlcmVkIGluIHRoZSBodyBkb2NzLCBsZXQKPj4gbWUga25vdy4gIE5v dGUgdGhlIG5ldyBoZWFkZXJzIGFyZSBkd29yZCBhbGlnbmVkIHJhdGhlciB0aGFuIGJ5dGUKPj4g YWxpZ25lZC4KPj4KPgo+IEkndmUgdGVzdGVkIG5vdyB3aXRoIHR3byBkaWZmZXJlbnQgcHJvZ3Jl c3NpdmUgbW9kZXMgb24gRENFMyBhbmQgb25lIAo+IHByb2dyZXNzaXZlIG1vZGUgb24gRENFNCwg dGhlIG9ubHkgY2FyZHMgaSBoYXZlIGF0bS4gU28gZmFyIGl0IHNlZW1zIAo+IHRoYXQgdGhlIGZy YW1lY291bnRlciBpbmRlZWQgaW5jcmVtZW50cyB3aGVuIHRoZSB2cG9zIGZyb20gdGhlIHNjYW5v dXQgCj4gcG9zaXRpb24gcXVlcnkganVtcHMgYmFjayB0byB6ZXJvLiBBdHRhY2hlZCBmb3IgcmVm ZXJlbmNlIGlzIG15IAo+IGN1cnJlbnQgcGF0Y2ggdG8gcmFkZW9uLWttcy4gVGhpcyBvbmUgc2Vl bXMgdG8gd29yayByZWxpYWJseSBzbyBmYXIsIAo+IGFsc28gaWYgaSBlbmFibGUgdGhlIGltbWVk aWF0ZSB2YmxhbmsgaXJxIGRpc2FibGUgd2hpY2ggd2Ugc28gZmFyIG9ubHkgCj4gdXNlZCBvbiBp bnRlbC1rbXMuCj4KPiBCdXQgYWNjb3JkaW5nIHRvIHRoaXMgcGF0Y2ggdGhlIGZyYW1lY291bnRl ciBpbmNyZW1lbnQgaGFwcGVucyAKPiBzb21ld2hlcmUgaW4gdGhlIG1pZGRsZSBvZiB2Ymxhbmsu Cj4KPiBFc3NlbnRpYWxseSBmcm9tIHRoZSB2cG9zIGV4dHJhY3RlZCBmcm9tIAo+IEVWRVJHUkVF Tl9DUlRDX1NUQVRVU19QT1NJVElPTiB3aGljaCBkZWZpbmVzIHN0YXJ0IG9mIHZibGFuayAoIlN0 YXJ0IiAKPiBwYXJ0IG9mIEVWRVJHUkVFTl9DUlRDX1ZfQkxBTktfU1RBUlRfRU5EKSB1bnRpbCBt YXhpbXVtIGllLiBWVE9UQUwtMSAKPiB0aGUgZnJhbWVjb3VudGVyIHN0YXlzIG9uIHRoZSBjb3Vu dCBvZiB0aGUgb2xkIHByZXZpb3VzIHNjYW5vdXQgY3ljbGUuIAo+IFRoZW4gd2hlbiB2cG9zIHdy YXBzIHRvIHplcm8gdGhlIGZyYW1lY291bnRlciBpbmNyZW1lbnRzIGJ5IDEuIEFuZCAKPiB0aGVu IHdlIGhhdmUgYW5vdGhlciBjb3VwbGUgb2YgZG96ZW4gbGluZXMgaW5zaWRlIHZibGFuayB1bnRp bCAKPiByZWFjaGluZyB0aGUgIkVuZCIgcGFydCBvZiBFVkVSR1JFRU5fQ1JUQ19WX0JMQU5LX1NU QVJUX0VORCBhbmQgCj4gZW50ZXJpbmcgYWN0aXZlIHNjYW5vdXQgZm9yIHRoZSBuZXcgZnJhbWUu Cj4KPiBTbyB0aGUgcG9zaXRpb24gb2Ygb2JzZXJ2ZWQgZnJhbWVjb3VudGVyIGluY3JlbWVudCBz ZWVtcyB0byBiZSBub3QgCj4gY2xvc2UgdG8gdGhlIGVuZCBvZiB2YmxhbmsgKCJzdGFydCBvZiBm cmFtZSIgaW5kaWNhdG9yPyksIGJ1dCBhIGNvdXBsZSAKPiBvZiBzY2FubGluZXMgYWZ0ZXIgc3Rh cnQgb2YgdmJsYW5rLgo+Cj4gRS5nLiwgZm9yIGEgMjU2MHgxNDQwIHZpZGVvIG1vZGUgYXQgNjAg SHosIHN0YXJ0IG9mIHZibGFuayBpcyAxNDc4LCAKPiB2dG90YWwgaXMgMTQ4MSwgZW5kIG9mIHZi bGFuayBpcyAzOC4gU28gaSBlbnRlciB0aGUgdmJsYW5rIGFuZCBzZWUgdGhlIAo+IG9sZCBmcmFt ZWNvdW50ZXIgZm9yIHZwb3MgPSAxNDc4LCAxNDc5LCAxNDgwLCB0aGVuIGl0IHdyYXBzIHRvIDAg YW5kIAo+IHRoZSBmcmFtZWNvdW50ZXIgaW5jcmVtZW50cyBieSAxLCB0aGVuIDM4IHNjYW5saW5l cyBsYXRlciB0aGUgdmJsYW5rIAo+IGVuZHMuCj4KPiBTbyBpIHNlZW0gdG8gaGF2ZSBzb21ldGhp bmcgdGhhdCBzZWVtcyB0byB3b3JrIGluIHByYWN0aWNlIGFuZCB0aGlzIAo+ICJpbmNyZW1lbnQg ZnJhbWVjb3VudGVyIGlmIHZwb3Mgd3JhcHMgYmFjayB0byB6ZXJvIiBiZWhhdmlvciBtYWtlcyAK PiBzb21lIHNlbnNlLiBJdCBqdXN0IGRvZXNuJ3QgY29uZm9ybSB0byB3aGF0IHRob3NlIGRlc2Ny aXB0aW9ucyBmb3IgCj4gc3RhcnRfbGluZSBhbmQgInN0YXJ0IG9mIGZyYW1lIiBpbmRpY2F0b3Ig ZGVzY3JpYmU/Cj4KVGhpcyBpcyBjb3JyZWN0LiBPdXIgSFcgZG9lc24ndCByZWFsbHkgaGF2ZSBh IHZibGFuayBjb3VudGVyIGJ1dCBhIGZyYW1lIApjb3VudGVyLiBUaGUgZnJhbWVjb3VudGVyIGlu Y3JlbWVudHMgYXQgdGhlIHN0YXJ0IG9mIHZzeW5jLCB3aGljaCBpcyAKd2hlbiB3ZSB3cmFwIHRv IHplcm8gd2hpY2ggZG9lc24ndCBjb2luY2lkZSB3aXRoIHRoZSBzdGFydCBvZiB2YmxhbmsuCgpX aGF0IHdlJ3JlIHRyeWluZyB0byBkbyB3aXRoIGdldF92YmxhbmtfY291bnRlciBpc24ndCB0aGUg c2FtZSBhcyB3aGF0IApmcmFtZWNvdW50IGdpdmVzIHVzLCBidXQgd2UgY291bGQgcHJvYmFibHkg ZG8gc29tZXRoaW5nIGxpa2U6CgppZiAoZ2V0X3NjYW5vdXRfcG9zID4gdmJsYW5rX3N0YXJ0KQog ICByZXR1cm4gZnJhbWVfY291bnQgKyAxOwplbHNlCiAgIHJldHVybiBmcmFtZV9jb3VudDsKCkhh cnJ5Cgo+IEknbGwgdGVzdCB3aXRoIGEgZmV3IG1vcmUgdmlkZW8gbW9kZXMuCj4KPiB0aGFua3Ms Cj4gLW1hcmlvCj4KPgo+Pj4KPj4+IFZpbGxlJ3MgY2hhbmdlcyB0byB0aGUgRFJNJ3MgZHJtX2hh bmRsZV92YmxhbmsoKSAvIAo+Pj4gZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoKQo+Pj4gY29kZSBp biBMaW51eCA0LjQgbm90IG9ubHkgbWFkZSB0aGF0IGNvZGUgbW9yZSBlbGVnYW50LCBidXQgYWxz byAKPj4+IHJlbW92ZWQgdGhlCj4+PiByb2J1c3RuZXNzIGFnYWluc3QgdGhlIHZibGFuayBpcnEg cXVpcmtzIGluIEFNRCBodyBhbmQgc2ltaWxhciAKPj4+IGhhcmR3YXJlLiBTbwo+Pj4gbm93IGkg Z2V0IHRvbnMgb2Ygb2ZmLWJ5LW9uZSBlcnJvcnMgYW5kCj4+Pgo+Pj4gIlsgICA0MzIuMzQ1XSAo V1cpIFJBREVPTigxKTogcmFkZW9uX2RyaTJfZmxpcF9ldmVudF9oYW5kbGVyOiBQYWdlZmxpcAo+ Pj4gY29tcGxldGlvbiBldmVudCBoYXMgaW1wb3NzaWJsZSBtc2MgMjQ4MDMgPCB0YXJnZXRfbXNj IDI0ODA0IiBYT3JnIAo+Pj4gbWVzc2FnZXMKPj4+IGZyb20gdGhhdCBrZXJuZWwuCj4+Pgo+Pj4g T25lIG9mIHRoZSByZWFzb25zIGZvciB0cm91YmxlIGlzIHRoYXQgQU1EIGh3IHF1aXJrIHdoZXJl IHRoZSBodyAKPj4+IGZpcmVzIGFuCj4+PiBleHRyYSB2YmxhbmsgaXJxIHNob3J0bHkgYWZ0ZXIg dmJsYW5rIGlycSdzIGdldCBlbmFibGVkLCBub3QgCj4+PiBzeW5jaHJvbml6ZWQgdG8KPj4+IHZi bGFuaywgYnV0IHR5cGljYWxseSBpbiB0aGUgbWlkZGxlIG9mIGFjdGl2ZSBzY2Fub3V0LCBzbyB3 ZSBnZXQgYSAKPj4+IHJlZHVuZGFudAo+Pj4gY2FsbCB0byBkcm1faGFuZGxlX3ZibGFuayBpbiB0 aGUgbWlkZGxlIG9mIHNjYW5vdXQuCj4+Pgo+Pj4gVG8gZml4IHRoYXQgaSBoYXZlIGEgbWlub3Ig cGF0Y2ggdG8gbWFrZSBkcm1fdXBkYXRlX3ZibGFua19jb3VudCgpIAo+Pj4gYWdhaW4KPj4+IHJv YnVzdCBhZ2FpbnN0IHN1Y2ggcmVkdW5kYW50IGNhbGxzLCB3aGljaCBpIHdpbGwgc2VuZCBvdXQg bGF0ZXIgdG8gdGhlCj4+PiBtYWlsaW5nIGxpc3QuIERpZmYgYXR0YWNoZWQgZm9yIHJlZmVyZW5j ZS4KPj4+Cj4+PiBUaGUgc2Vjb25kIHF1aXJrIG9mIEFNRCBodyBpcyB0aGF0IHRoZSB2Ymxhbmsg aW50ZXJydXB0IGZpcmVzIGEgZmV3Cj4+PiBzY2FubGluZXMgYmVmb3JlIHN0YXJ0IG9mIHZibGFu aywgc28gZHJtX2hhbmRsZV92YmxhbmsgLT4KPj4+IGRybV91cGRhdGVfdmJsYW5rX2NvdW50KCkg LT4gZGV2LT5kcml2ZXItPmdldF92YmxhbmtfY291bnRlcigpIGdldHMgCj4+PiBjYWxsZWQKPj4+ IGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIHZibGFuayBmb3Igd2hpY2ggdGhlIG5ldyB2Ymxhbmsg Y291bnQgc2hvdWxkIGJlCj4+PiBxdWVyaWVkLgo+Pj4KPj4+IFRoZSB0aGlyZCBwcm9ibGVtIGlz IHRoYXQgdGhlIERSTSB2YmxhbmsgaGFuZGxpbmcgYWx3YXlzIGhhZCB0aGUgCj4+PiBhc3N1bXB0 aW9uCj4+PiB0aGF0IGhhcmR3YXJlIHZibGFuayBjb3VudGVycyB3b3VsZCBlc3NlbnRpYWxseSBp bmNyZW1lbnQgYXQgbGVhZGluZyAKPj4+IGVkZ2Ugb2YKPj4+IHZibGFuayAtIGJhc2ljYWxseSBp biBzeW5jIHdpdGggdGhlIGZpcmluZyBvZiB0aGUgdmJsYW5rIGlycSwgc28gCj4+PiB0aGF0IGEg aHcKPj4+IGNvdW50ZXIgcmVhZG91dCBmcm9tIHdpdGhpbiB0aGUgdmJsYW5rIGlycSBoYW5kbGVy IHdvdWxkIGFsd2F5cyAKPj4+IGRlbGl2ZXIgdGhlCj4+PiBuZXcgaW5jcmVtZW50ZWQgdmFsdWUu IElmIHRoaXMgYXNzdW1wdGlvbiBpcyB2aW9sYXRlZCB0aGVuIHRoZSAKPj4+IGNvdW50aW5nIGJ5 Cj4+PiB1c2Ugb2YgdGhlIGh3IGNvdW50ZXIgZ2V0cyB1bnJlbGlhYmxlLCBiZWNhdXNlIGRlcGVu ZGluZyBvbiByYW5kb20gCj4+PiBzbWFsbAo+Pj4gZGVsYXlzIGluIGlycSBoYW5kbGluZyB0aGUg Y29kZSBtYXkgZW5kIHVwIHNhbXBsaW5nIHRoZSBodyBjb3VudGVyIAo+Pj4gcHJlLSBvcgo+Pj4g cG9zdC1pbmNyZW1lbnQsIGxlYWRpbmcgdG8gaW5jb25zaXN0ZW50IHVwZGF0aW5nIGFuZCBmdW5r eSBidWdzLiBJdCAKPj4+IGp1c3Qgc28KPj4+IGhhcHBlbnMgdGhhdCBBTUQgaGFyZHdhcmUgZG9l c24ndCBpbmNyZW1lbnQgdGhlIGh3IGNvdW50ZXIgYXQgCj4+PiBsZWFkaW5nIGVkZ2UKPj4+IG9m IHZibGFuaywgc28gc3R1ZmYgZmFsbHMgYXBhcnQuCj4+Pgo+Pj4gU28gdG8gZml4IHRob3NlIHR3 byBwcm9ibGVtcyBpJ20gdGlua2VyaW5nIHdpdGggY29va2luZyB0aGUgaHcgdmJsYW5rCj4+PiBj b3VudGVyIHZhbHVlIHJldHVybmVkIGJ5IHJhZGVvbl9nZXRfdmJsYW5rX2NvdW50ZXJfa21zKCkg dG8gbWFrZSBpdCAKPj4+IGFwcGVhcgo+Pj4gYXMgaWYgdGhlIGNvdW50ZXIgaW5jcmVtZW50ZWQg YXQgbGVhZGluZyBlZGdlIG9mIHZibGFuayBpbiBzeW5jIHdpdGggCj4+PiB2YmxhbmsKPj4+IGly cS4KPj4+Cj4+PiBJdCBhbG1vc3Qgc29ydCBvZiB3b3JrcyBvbiB0aGUgcnM2MDAgY29kZSBwYXRo LCBidXQgaSBuZWVkIGEgYml0IG9mIAo+Pj4gaW5mbwo+Pj4gZnJvbSB5b3U6Cj4+Pgo+Pj4gMS4g VGhlcmUncyB0aGlzIHJlZ2lzdGVyIGZyb20gdGhlIG9sZCBzcGVjcyBmb3IgbTc2LnBkZiwgd2hp Y2ggaXMgCj4+PiBub3QgcGFydAo+Pj4gb2YgdGhlIGN1cnJlbnQgcmVnaXN0ZXIgZGVmaW5lcyBm b3IgcmFkZW9uLWttczoKPj4+Cj4+PiAiRDFDUlRDX1NUQVRVU19WRl9DT1VOVCAtIFJXIC0gMzIg Yml0cyAtIFtHcHVGME1NUmVnOjB4NjBBOF0iCj4+Pgo+Pj4gSXQgY29udGFpbnMgdGhlIGxvd2Vy IDE2IGJpdHMgb2YgZnJhbWVjb3VudGVyIGFuZCB0aGUgMTMgYml0cyBvZiAKPj4+IHZlcnRpY2Fs Cj4+PiBzY2Fub3V0IHBvc2l0aW9uLiBJdCBzZWVtcyB0byBnaXZlIHRoZSBzYW1lIHJlYWRpbmdz IGFzIHRoZSAyNCBiaXQKPj4+IFJfMDA2MEE0X0QxQ1JUQ19TVEFUVVNfRlJBTUVfQ09VTlQgd2Ug dXNlIGZvciB0aGUgaHcgY291bnRlci4gVGhpcyAKPj4+IHdvdWxkCj4+PiBjb21lIGhhbmR5Lgo+ Pj4KPj4+IERvZXMgRXZlcmdyZWVuIGFuZCBsYXRlciBoYXZlIGEgc2FtZS9zaW1pbGFyIHJlZ2lz dGVyIGFuZCB3aGVyZSBpcyBpdD8KPj4KPj4gWWVzLiAgQ1JUQ19TVEFUVVNfVkZfQ09VTlQKPj4K Pj4gQ1JUQzpDUlRDX1NUQVRVU19WRl9DT1VOVCAgwrcgIFtSL1ddICDCtyAgMzIgYml0cyAgwrcg IEFjY2VzczogOC8xNi8zMiAgwrcKPj4gICBbSU5TVDBdIEdwdUYwTU1SZWc6MHg2ZTljLCBbSU5T VDFdIEdwdUYwTU1SZWc6MHg3YTljLCBbSU5TVDJdCj4+IEdwdUYwTU1SZWc6MHgxMDY5YywgW0lO U1QzXSBHcHVGME1NUmVnOjB4MTEyOWMsIFtJTlNUNF0KPj4gR3B1RjBNTVJlZzoweDExZTljLCBb SU5TVDVdIEdwdUYwTU1SZWc6MHgxMmE5Ywo+PiBERVNDUklQVElPTjogQ3VycmVudCBjb21wb3Np dGUgdmVydGljYWwgYW5kIGZyYW1lIGNvdW50IGZvciBDUlRDCj4+IEZpZWxkIE5hbWUgICBCaXRz ICAgIERlZmF1bHQgICBEZXNjcmlwdGlvbgo+PiBDUlRDX1ZGX0NPVU5UCj4+IChBY2Nlc3M6IFIp ICAgIDI4OjAgICAgMHgwICAgIFJlcG9ydHMgY3VycmVudCB2ZXJ0aWNhbCBhbmQgZnJhbWUgY291 bnQKPj4KPj4+Cj4+PiAyLiBUaGUgaHcgZnJhbWVjb3VudGVyIHNlZW1zIHRvIGluY3JlbWVudCB3 aGVuIHRoZSB2ZXJ0aWNhbCBzY2Fub3V0IAo+Pj4gcG9zaXRpb24KPj4+IHdyYXBzIGJhY2sgZnJv bSAoVlRPVEFMIC0gMSkgdG8gMCwgYXQgbGVhc3Qgb24gdGhlIG9uZSBEQ0UtMyBncHUgaSAKPj4+ IHRlc3RlZCBzbwo+Pj4gZmFyLiBJcyB0aGlzIHNvIG9uIGFsbCBhc2ljcz8gQW5kIGlzIHRoZSBo dyBjb3VudGVyIGluY3JlbWVudCBoYXBwZW5pbmcKPj4+IGV4YWN0bHkgYXQgdGhlIG1vbWVudCB0 aGF0IHZlcnRpY2FsIHNjYW5vdXQgcG9zaXRpb24ganVtcHMgYmFjayB0byAKPj4+IHplcm8sIGll Lgo+Pj4gYm90aCBldmVudHMgYXJlIGRyaXZlbiBieSB0aGUgc2FtZSBzaWduYWw/IE9yIGlzIHRo ZSBmcmFtZWNvdW50ZXIgCj4+PiBpbmNyZW1lbnQKPj4+IGp1c3QgaGFwcGVuaW5nIHNvbWV3aGVy ZSBpbnNpZGUgZWl0aGVyIHNjYW5saW5lIFZUT1RBTC0xIG9yIHNjYW5saW5lIDA/Cj4+Cj4+IFVu bGVzcyBIYXJyeSBrbm93cywgd2UgY2FuIGFzayB0aGUgaHcgdGVhbSwgYnV0IEkgZG91YnQgdGhl eSB3b3VsZAo+PiBoYXZlIGNoYW5nZWQgaXQuICBJIHRoaW5rIGl0J3MgdGllZCB0byB0aGUgc3Rh cnQgbGluZSB3aGljaCBpcwo+PiBjb250cm9sbGVkIGJ5IHRoaXMgcmVnaXN0ZXI6Cj4+IENSVEM6 Q1JUQ19TVEFSVF9MSU5FX0NPTlRST0wgIMK3ICBbUi9XXSAgwrcgIDMyIGJpdHMgIMK3ICBBY2Nl c3M6IDgvMTYvMzIKPj4gICDCtyAgW0lOU1QwXSBHcHVGME1NUmVnOjB4NmVjYywgW0lOU1QxXSBH cHVGME1NUmVnOjB4N2FjYywgW0lOU1QyXQo+PiBHcHVGME1NUmVnOjB4MTA2Y2MsIFtJTlNUM10g R3B1RjBNTVJlZzoweDExMmNjLCBbSU5TVDRdCj4+IEdwdUYwTU1SZWc6MHgxMWVjYywgW0lOU1Q1 XSBHcHVGME1NUmVnOjB4MTJhY2MKPj4gREVTQ1JJUFRJT046IG1vdmUgc3RhcnRfbGluZSBzaWdu YWwgZWFybGllciBieSAxIGxpbmUgaW4gQ1JUQwo+PiBGaWVsZCBOYW1lICAgQml0cyAgICAgICAg ICBEZWZhdWx0ICAgICAgICAgRGVzY3JpcHRpb24KPj4gQ1JUQ19QUk9HUkVTU0lWRV9TVEFSVF9M SU5FX0VBUkxZICAgICAgICAgMCAgICAweDAgICAgbW92ZSBzdGFydF9saW5lCj4+IHNpZ25hbCBi eSAxIGxpbmUgZWFyaWxlciBpbiBwcm9ncmVzc2l2ZSBtb2RlCj4+Cj4+IENSVENfSU5URVJMQUNF X1NUQVJUX0xJTkVfRUFSTFkgICAgICAgICA4ICAgICAweDEgICAgIG1vdmUgc3RhcnRfbGluZQo+ PiBzaWduYWwgYnkgMSBsaW5lIGVhcmxpZXIgaW4gaW50ZXJsYWNlZCB0aW1pbmcgbW9kZQo+Pgo+ PiBDUlRDX0FEVkFOQ0VEX1NUQVJUX0xJTkVfUE9TSVRJT04gICAgICAgICAxOToxNiAgICAgMHg0 IEFkdmFuY2VkCj4+IFN0YXJ0IExpbmUgcG9zaXRpb24gcmVzcGVjdCB0byBub3QgVkJMQU5LLiBE ZWZhdWx0IG9mIDQgbWVhbnMgdGhlCj4+IEFkdmFuY2VkIFN0YXJ0IExpbmUgaXMgNCBsaW5lcyBi ZWZvcmUgdGhlIGZpcnN0IG5vbiBWQkxBTksgbGluZQo+Pgo+PiBUaGUgZm9sbG93aW5nIGluZm8g SSBkdWcgdXAgaW50ZXJuYWxseSBtYXkgYmUgdXNlZnVsOgo+Pgo+PiBUaGUgcG9zaXRpb24gb2Yg dGhlIENSVEMgb3V0cHV0IHRpbWluZyBnZW5lcmF0b3Igd2hlbiB0aGUg4oCcc3RhcnQgb2YKPj4g ZnJhbWXigJ0gaW5kaWNhdG9yIG9jY3VycyBkZXBlbmRzIG9uIHNldmVyYWwgY29uZGl0aW9ucy4g IFRoZXNlCj4+IGNvbmRpdGlvbnMgYXJlIHdoZXRoZXIgdGhlIHRpbWluZyBnZW5lcmF0b3IgaXMg b3V0cHV0dGluZyB0aW1pbmcgZm9yIGEKPj4gcHJvZ3Jlc3NpdmUgb3IgaW50ZXJsYWNlZCBkaXNw bGF5IG1vZGUsIHdoZXRoZXIgdGhlIHNjYWxlciBpcyBlbmFibGVkLAo+PiBhbmQgaWYgc28sIHdo ZXRoZXIgdGhlIHJlZ2lzdGVyIHRvIHNlbGVjdCBhbiBlYXJsaWVyIHRoYW4gbm9ybWFsCj4+IOKA nHN0YXJ0IG9mIGZyYW1l4oCdIGluZGljYXRvciBpcyBzZXQuICBUaGUg4oCcc3RhcnQgb2YgZnJh bWXigJ0gaW5kaWNhdG9yCj4+IHR5cGljYWxseSBvY2N1cnMgMiBsaW5lcyBiZWZvcmUgdGhlIHZl cnRpY2FsIGJsYW5rIGVuZCBwb3NpdGlvbgo+PiAoRHhDUlRDX1ZfQkxBTktfRU5EKSBpcyByZWFj aGVkCj4+Cj4+IFdoZW4gaW50ZXJsYWNlZCBvdXRwdXQgZGlzcGxheSBtb2RlcyBhcmUgZW5hYmxl ZAo+PiAoRHhDUlRDX0lOVEVSTEFDRV9FTkFCTEUgPSAxKSBhbmQgdGhlIENSVEMgdGltaW5nIGdl bmVyYXRvciBpcyBlbmFibGVkCj4+IChEeENSVENfTUFTVEVSX0VOID0gMSksIHRoZSB0aW1pbmcg Z2VuZXJhdG9y4oCZcyB2ZXJ0aWNhbCBjb3VudGVyIGNvdW50cwo+PiBieSAyIGZvciBib3RoIHRo ZSBldmVuIGZpZWxkcyBhbmQgb2RkIGZpZWxkcyBvZiBlYWNoIGZyYW1lLiAgRm9yIGJvdGgKPj4g dGhlIGV2ZW4gZmllbGRzIGFuZCB0aGUgb2RkIGZpZWxkcyBvZiBpbnRlcmxhY2VkIG91dHB1dCBt b2RlcywgdGhlCj4+IOKAnHN0YXJ0IG9mIGZyYW1l4oCdIGluZGljYXRvciBvY2N1cnMgMiBsaW5l cyBiZWZvcmUgdGhlIGVuZCBvZiB0aGUKPj4gdmVydGljYWwgYmxhbmsgb2NjdXJzIChEeENSVENf Vl9CTEFOS19FTkQg4oCTIDQgb3IgRHhDUlRDX1ZfQkxBTktfRU5EIOKAkwo+PiAzIGRlcGVuZGlu ZyBvbiB0aGUgZmllbGQgc2luY2UgdGhlIHZlcnRpY2FsIGNvdW50ZXIgY291bnRzIGJ5IDIgaW4K Pj4gaW50ZXJsYWNlZCksIHNpbmNlIHRoZSB2ZXJ0aWNhbCBjb3VudGVyIGNvdW50cyBieSAyIGlu IHRoaXMgbW9kZSkuCj4+IFRoZXJlIGlzIG9uZSBleGNlcHRpb24gdG8gdGhlIHByZXZpb3VzIHN0 YXRlbWVudC4gIElmIHNjYWxpbmcgaXMKPj4gZW5hYmxlZCAoRHhTQ0xfU0NBTEVfRU4gPSAxKSBh bmQgdGhlIGVhcmx5IHN0YXJ0IGxpbmUgaXMgZW5hYmxlZAo+PiAoRHhDUlRDX0lOVEVSTEFDRV9T VEFSVF9MSU5FX0VBUkxZID0gMSkgaW4gaW50ZXJsYWNlZCBvdXRwdXQgbW9kZSB0aGVuCj4+IHRo ZSDigJxzdGFydCBvZiBmcmFtZeKAnSBpbmRpY2F0b3IgaGFwcGVucyAzIGxpbmVzIGJlZm9yZSB0 aGUgZW5kIG9mIHRoZQo+PiB2ZXJ0aWNhbCBibGFuayAoRHhDUlRDX1ZfQkxBTktfRU5EIOKAkyA2 IG9yIER4Q1JUQ19WX0JMQU5LX0VORCDigJMgNQo+PiBkZXBlbmRpbmcgb24gdGhlIGZpZWxkIHNp bmNlIHRoZSB2ZXJ0aWNhbCBjb3VudGVyIGNvdW50cyBieSAyIGluCj4+IGludGVybGFjZWQpLgo+ Pgo+PiBXaGVuIHByb2dyZXNzaXZlIG91dHB1dCBkaXNwbGF5IG1vZGVzIGFyZSBlbmFibGVkCj4+ IChEeENSVENfSU5URVJMQUNFX0VOQUJMRSA9IDApIGFuZCB0aGUgQ1JUQyB0aW1pbmcgZ2VuZXJh dG9yIGlzIGVuYWJsZWQKPj4gKER4Q1JUQ19NQVNURVJfRU4gPSAxKSwgdGhlIOKAnHN0YXJ0IG9m IGZyYW1l4oCdIGluZGljYXRvciBvY2N1cnMgMiBsaW5lcwo+PiBiZWZvcmUgdGhlIGVuZCBvZiB0 aGUgdmVydGljYWwgYmxhbmsgb2NjdXJzIChEeENSVENfVl9CTEFOS19FTkQgLSAyKS4KPj4gU2lt aWxhciB0byBpbnRlcmxhY2VkIG91dHB1dCBtb2RlLCB0aGVyZSBpcyBvbmUgZXhjZXB0aW9uIHRv IHRoZQo+PiBwcmV2aW91cyBzdGF0ZW1lbnQuICBJZiBzY2FsaW5nIGlzIGVuYWJsZWQgKER4U0NM X1NDQUxFX0VOID0gMSkgYW5kCj4+IHRoZSBlYXJseSBzdGFydCBsaW5lIGlzIGVuYWJsZWQgKER4 Q1JUQ19QUk9HUkVTU0lWRV9TVEFSVF9MSU5FX0VBUkxZID0KPj4gMSkgaW4gcHJvZ3Jlc3NpdmUg b3V0cHV0IG1vZGUgdGhlbiB0aGUg4oCcc3RhcnQgb2YgZnJhbWXigJ0gaW5kaWNhdG9yCj4+IGhh cHBlbnMgMyBsaW5lcyBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgdmVydGljYWwgYmxhbmsKPj4gKER4 Q1JUQ19WX0JMQU5LX0VORCDigJMgMykKPj4KPj4gSSBob3BlIHRoaXMgaGVscHMsCj4+Cj4+IEFs ZXgKPj4KPj4+Cj4+Pgo+Pj4gSWYgd2UgY2FuIGZpeCB0aGlzIGFuZCBnZXQgaXQgaW50byByYzIg b3IgcmMzIHRoZW4gd2UgY291bGQgYXZvaWQgYSBiYWQKPj4+IHJlZ3Jlc3Npb24gYW5kIHdpdGgg YSBiaXQgb2YgbHVjayBhdCB0aGUgc2FtZSB0aW1lIGltcHJvdmUgYnkgYmVpbmcgCj4+PiBhYmxl IHRvCj4+PiBzZXQgZGV2LT52YmxhbmtfZGlzYWJsZV9pbW1lZGlhdGUgPSB0cnVlIHRoZW4gYW5k IGFsbG93IHZibGFuayBpcnFzIAo+Pj4gdG8gZ2V0Cj4+PiB0dXJuZWQgb2ZmIG1vcmUgYWdncmVz c2l2ZWx5IGZvciBhIGJpdCBvZiBleHRyYSBwb3dlciBzYXZpbmcuCj4+Pgo+Pj4gdGhhbmtzLAo+ Pj4gLW1hcmlvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==