From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Zijlstra Subject: Re: [RFC PATCH 00/11] drm/i915: Expose OA metrics via perf PMU Date: Wed, 27 May 2015 17:39:14 +0200 Message-ID: <20150527153914.GC3644@twins.programming.kicks-ass.net> References: <1431008154-6833-1-git-send-email-robert@sixbynine.org> <20150508162452.GR27504@twins.programming.kicks-ass.net> <20150519145337.GD3644@twins.programming.kicks-ass.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Robert Bragg Cc: dri-devel@lists.freedesktop.org, David Airlie , linux-api@vger.kernel.org, intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, Ingo Molnar , Paul Mackerras , Arnaldo Carvalho de Melo , Daniel Vetter List-Id: linux-api@vger.kernel.org T24gVGh1LCBNYXkgMjEsIDIwMTUgYXQgMTI6MTc6NDhBTSArMDEwMCwgUm9iZXJ0IEJyYWdnIHdy b3RlOgo+ID4KPiA+IFNvIGZvciBtZSB0aGUgJ25hdHVyYWwnIHdheSB0byByZXByZXNlbnQgdGhp cyBpbiBwZXJmIHdvdWxkIGJlIHRocm91Z2gKPiA+IGV2ZW50IGdyb3Vwcy4gQ3JlYXRlIGEgcGVy ZiBldmVudCBmb3IgZXZlcnkgc2luZ2xlIGV2ZW50IC0tIHllcyB0aGlzIGlzCj4gPiA1MyBldmVu dHMuCj4gCj4gU28gd2hlbiBJIHdhcyBmaXJzdCBsb29raW5nIGF0IHRoaXMgd29yayBJIGhhZCBj b25zaWRlcmVkIHRoZQo+IHBvc3NpYmlsaXR5IG9mIHNlcGFyYXRlIGV2ZW50cywgYW5kIHRoZXNl IGFyZSBzb21lIG9mIHRoZSB0aGluZ3MgdGhhdAo+IGluIHRoZSBlbmQgbWFkZSBtZSBmb3J3YXJk IHRoZSBoYXJkd2FyZSdzIHJhdyByZXBvcnQgZGF0YSB2aWEgYSBzaW5nbGUKPiBldmVudCBpbnN0 ZWFkLi4uCj4gCj4gVGhlcmUgYXJlIDEwMHMgb2YgcG9zc2libGUgQiBjb3VudGVycyBkZXBlbmRp bmcgb24gdGhlIE1VWAo+IGNvbmZpZ3VyYXRpb24gKyBmaXhlZC1mdW5jdGlvbiBsb2dpYyBpbiBh ZGRpdGlvbiB0byB0aGUgQSBjb3VudGVycy4KClRoZXJlJ3Mgb25seSA4IEIgY291bnRlcnMsIHdo YXQgdGhlcmUgaXMgMTAwcyBvZiBpcyBjb25maWd1cmF0aW9ucywgYW5kCnRoYXQncyBubyBkaWZm ZXJlbnQgZnJvbSBhbnkgb3RoZXIgUE1VLiBUaGVyZSdzIDEwMHMgb2YgZXZlbnRzIHRvIHNlbGVj dApvbiB0aGUgQ1BVIHNpZGUgYXMgd2VsbCAtIHlldCBvbmx5IDQgKGdlbmVyYWwgcHVycG9zZSkg Y291bnRlcnMgKDggaWYKeW91IGRpc2FibGUgSFQgb24gcmVjZW50IG1hY2hpbmVzKSBwZXIgQ1BV LgoKT2YgY291cnNlLCB5b3UgY291bGQgY3JlYXRlIG1vcmUgdGhhbiA4IGV2ZW50cyBhdCBhbnkg b25lIHRpbWUsIGFuZCB0aGVuCnBlcmYgd2lsbCByb3VuZC1yb2JpbiB0aGUgY29uZmlndXJhdGlv biBmb3IgeW91LgoKPiBBCj4gY2hvaWNlIHdvdWxkIG5lZWQgdG8gYmUgbWFkZSBhYm91dCB3aGV0 aGVyIHRvIGV4cG9zZSBldmVudHMgZm9yIHRoZQo+IGNvbmZpZ3VyYWJsZSBjb3VudGVycyB0aGF0 IGFyZW4ndCBpbmhlcmVudGx5IGFzc29jaWF0ZWQgd2l0aCBhbnkKPiBzZW1hbnRpY3MsIG9yIGlu c3RlYWQgZGVmaW5pbmcgZXZlbnRzIGZvciBjb3VudGVycyB3aXRoIHNwZWNpZmljCj4gc2VtYW50 aWNzICh3aXRoIDEwMHMgb2YgcG9zc2libGUgY291bnRlcnMgdG8gZGVmaW5lKS4gVGhlIGxhdGVy IHdvdWxkCj4gc2VlbSBtb3JlIGNvbXBsZXggZm9yIHVzZXJzcGFjZSBhbmQgdGhlIGtlcm5lbCBp ZiB0aGV5IGJvdGggbm93IGhhdmUKPiB0byB1bmRlcnN0YW5kIHRoZSBjb25zdHJhaW50cyBvbiB3 aGF0IGNvdW50ZXJzIGNhbiBiZSB1c2VkIHRvZ2V0aGVyLgoKQWdhaW4sIG5vIGRpZmZlcmVudCBm cm9tIGV4aXN0aW5nIFBNVXMuIFRoZSBtb3N0ICdpbnRlcmVzdGluZycgcGFydCBvZgphbnkgUE1V IGRyaXZlciBpcyBldmVudCBzY2hlZHVsaW5nLgoKVGhlIGV4cGxpY2l0IGRlc2lnbiBvZiBwZXJm IHdhcyB0byBwdXQgZXZlbnQgc2NoZWR1bGluZyBfaW5fIHRoZSBrZXJuZWwKYW5kIG5vdCBhbGxv dyB1c2Vyc3BhY2UgZGlyZWN0IGFjY2VzcyB0byB0aGUgaGFyZHdhcmUgKGFzIHByZXZpb3VzIFBN VQptb2RlbHMgZGlkKS4KCj4gSQo+IGd1ZXNzIHdpdGggZWl0aGVyIGFwcHJvYWNoIHdlIHdvdWxk IGFsc28gbmVlZCB0byBoYXZlIHNvbWUgZm9ybSBvZgo+IGRlZGljYXRlZCBncm91cCBsZWFkZXIg ZXZlbnQgYWNjZXB0aW5nIGF0dHJpYnV0ZXMgZm9yIGNvbmZpZ3VyaW5nIHRoZQo+IHN0YXRlIHRo YXQgYWZmZWN0cyB0aGUgZ3JvdXAgYXMgYSB3aG9sZSwgc3VjaCBhcyB0aGUgY291bnRlcgo+IGNv bmZpZ3VyYXRpb24gKDNEIHZzIEdQR1BVIHZzIG1lZGlhIGV0YykuIAoKVGhhdCBkZXBlbmRzIGEg Yml0IG9uIGhvdyBmbGV4aWJsZSB5b3Ugd2FudCB0byBzd2l0Y2ggYmV0d2VlbiB0aGVzZQptb2Rl czsgd2l0aCB0aGUgY29zdCBiZWluZyBpbiB0aGUgMTAwcyBvZiBNTUlPIHJlZ2lzdGVyIHdyaXRl cywgaXQgbWlnaHQKanVzdCBub3QgbWFrZSBzZW5zZSB0byBtYWtlIHRoaXMgdG9vIGR5bmFtaWMu CgpBbiBvcHRpb24gbWlnaHQgYmUgdG8gc2VsZWN0IHRoZSBtb2RlIHRocm91Z2ggdGhlIFBNVSBk cml2ZXIncyBzeXNmcwpmaWxlcy4gQW5vdGhlciBvcHRpb24gbWlnaHQgYmUgdG8gZXhwb3NlIHRo ZSBCIGNvdW50ZXJzIDMgdGltZXMgYW5kIGhhdmUKZWFjaCBzZXQgYmUgbXV0dWFsbHkgZXhjbHVz aXZlLiBUaGF0IGlzLCBhcyBzb29uIGFzIHlvdSd2ZSBjcmVhdGVkIGEgM0QKZXZlbnQsIHlvdSBj YW4gbm8gbG9uZ2VyIGNyZWF0ZSBHUEdQVS9NZWRpYSBldmVudHMuCgo+IEknbSBub3Qgc3VyZSB3 aGVyZSB3ZSB3b3VsZAo+IGhhbmRsZSB0aGUgY29udGV4dC1pZCArIGRybSBmaWxlIGRlc2NyaXB0 b3IgYXR0cmlidXRlcyBmb3IgaW5pdGlhdGluZwo+IHNpbmdsZSBjb250ZXh0IHByb2ZpbGluZyBi dXQgZ3Vlc3Mgd2UnZCBuZWVkIHRvIGF1dGhlbnRpY2F0ZSBlYWNoCj4gaW5kaXZpZHVhbCBldmVu dCBvcGVuLgoKRXZlbnQgb3BlbiBpcyBhIHNsb3cgcGF0aCwgc28gdGhhdCBzaG91bGQgbm90IGJl IGEgcHJvYmxlbSwgcmlnaHQ/Cgo+IEl0J3Mgbm90IGNsZWFyIGlmIHdlJ2QgY29uZmlndXJlIHRo ZSByZXBvcnQKPiBsYXlvdXQgdmlhIHRoZSBncm91cCBsZWFkZXIsIG9yIHRyeSB0byBhdXRvbWF0 aWNhbGx5IGNob29zZSB0aGUgbW9zdAo+IGNvbXBhY3QgZm9ybWF0IGJhc2VkIG9uIHRoZSBncm91 cCBtZW1iZXJzLiBJJ20gbm90IHN1cmUgaG93IHBtdXMKPiBjdXJyZW50bHkgaGFuZGxlIHRoZSBv cGVuaW5nIG9mIGVuYWJsZWQgZXZlbnRzIG9uIGFuIGVuYWJsZWQgZ3JvdXAgYnV0CgpXaXRoIHRo ZSBQRVJGX0ZPUk1BVF9HUk9VUCBsYXlvdXQgY2hhbmdpbmcgaW4tZmxpZ2h0LiBJIHdvdWxkIHJl Y29tbWVuZApub3QgZG9pbmcgdGhhdCAtLSBkZWNvZGluZyB0aGUgb3V0cHV0IHdpbGwgYmUgJ2lu dGVyZXN0aW5nJyBidXQgbm90CmltcG9zc2libGUuCgo+IEkgdGhpbmsgdGhlcmUgd291bGQgbmVl ZCB0byBiZSBsaW1pdGF0aW9ucyBpbiBvdXIgY2FzZSB0aGF0IG5ldwo+IG1lbWJlcnMgY2FuJ3Qg cmVzdWx0IGluIGEgcmVjb25maWd1cmUgb2YgdGhlIGNvdW50ZXJzIGlmIHRoYXQgbWlnaHQKPiBs b29zZSB0aGUgY3VycmVudCBjb3VudGVyIHZhbHVlcyBrbm93biB0byB1c2Vyc3BhY2UuCgpJJ20g bm90IGVudGlyZWx5IHN1cmUgd2hhdCB5b3UgbWVhbiBoZXJlLgoKPiBGcm9tIGEgdXNlcidzIHBv diwgdGhlcmUncyBubyByZWFsIGZyZWVkb20gdG8gbWl4IGFuZCBtYXRjaCB3aGljaAo+IGNvdW50 ZXJzIGFyZSBjb25maWd1cmVkIHRvZ2V0aGVyLCBhbmQgdGhlcmUncyBvbmx5IHNvbWUgbGltaXRl ZAo+IGFiaWxpdHkgdG8gaWdub3JlIHNvbWUgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBjb3Vu dGVycyBieSBub3QKPiBpbmNsdWRpbmcgdGhlbSBpbiByZXBvcnRzLgoKSXQgaXMgJ2ltcG9zc2li bGUnIHRvIGNyZWF0ZSBhIGdyb3VwIHRoYXQgaXMgbm90IHByb2dyYW1tYWJsZS4gVGhhdCBpcywK dGhlIHBtdTo6ZXZlbnRfaW5pdCgpIGNhbGwgX3Nob3VsZF8gdmVyaWZ5IHRoYXQgdGhlIGFkZGl0 aW9uIG9mIHRoZQpldmVudCB0byB0aGUgZ3JvdXAgKGFzIGdpdmVuIGJ5IGV2ZW50LT5ncm91cF9s ZWFkZXIpIGlzIHZhbGlkLgoKPiBTb21ldGhpbmcgdG8gdW5kZXJzdGFuZCBoZXJlIGlzIHRoYXQg d2UgaGF2ZSB0byB3b3JrIHdpdGggc2V0cyBvZgo+IHByZS1kZWZpbmVkIE1VWCArIGZpeGVkLWZ1 bmN0aW9uIGxvZ2ljIGNvbmZpZ3VyYXRpb25zIHRoYXQgaGF2ZSBiZWVuCj4gdmFsaWRhdGVkIHRv IGdpdmUgdXNlZnVsIG1ldHJpY3MgZm9yIHNwZWNpZmljIHVzZSBjYXNlcywgc3VjaCBhcwo+IGJl bmNobWFya2luZyAzRCByZW5kZXJpbmcsIEdQR1BVIG9yIG1lZGlhIHdvcmtsb2Fkcy4KClRoaXMg aXMgZmluZTsgYXMgc3RhdGVkIGFib3ZlLiBTaW5jZSB0aGVzZSBhcmUgbGltaXRlZCBwaWVjZXMg b2YKJ2Zpcm13YXJlJyB3aGljaCBhcmUgZXhwZW5zaXZlIHRvIGxvYWQsIHlvdSBkb24ndCBoYXZl IHRvIGRvIGEgZnVsbHkKZHluYW1pYyBzb2x1dGlvbiBoZXJlLgoKPiBBcyBpdCBpcyBjdXJyZW50 bHkgdGhlIGtlcm5lbCBkb2Vzbid0IG5lZWQgdG8ga25vdyBhbnl0aGluZyBhYm91dCB0aGUKPiBz ZW1hbnRpY3Mgb2YgaW5kaXZpZHVhbCBjb3VudGVycyBiZWluZyBzZWxlY3RlZCwgc28gaXQncyBj dXJyZW50bHkKPiBjb252ZW5pZW50IHRoYXQgd2UgY2FuIGFpbSB0byBtYWludGFpbiBhbGwgdGhl IGNvdW50ZXIgbWV0YSBkYXRhIHdlCj4gaGF2ZSBpbiB1c2Vyc3BhY2UgYWNjb3JkaW5nIHRvIHRo ZSBjaGFuZ2luZyBuZWVkcyBvZiB0b29scyBvciBkcml2ZXJzCj4gKGUuZy4gbmFtZXMsIGRlc2Ny aXB0aW9ucywgdW5pdHMsIG1heCB2YWx1ZXMsIG5vcm1hbGl6YXRpb24KPiBlcXVhdGlvbnMpLCBk ZS1jb3VwbGVkIGZyb20gdGhlIGtlcm5lbCwgaW5zdGVhZCBvZiBzcGxpdHRpbmcgaXQKPiBiZXR3 ZWVuIHRoZSBrZXJuZWwgYW5kIHVzZXJzcGFjZS4KCkFuZCB0aGF0IGZ1bGx5IHZpb2xhdGVzIHRo ZSBkZXNpZ24gcHJlbWlzZSBvZiBwZXJmLiBUaGUga2VybmVsIHNob3VsZCBiZQppbiBjb250cm9s IG9mIHJlc291cmNlcywgbm90IHVzZXJzcGFjZS4KCklmIHdlJ2QgaGF2ZSBwdXQgdXNlcnNwYWNl IGluIGNoYXJnZSwgd2UgY291bGQgbm93IG5vdCBwcm9maWxlIHRoZSBzYW1lCnRhc2sgYnkgdHdv IChvciBtb3JlKSBkaWZmZXJlbnQgb2JzZXJ2ZXJzLiBCdXQgd2l0aCBrZXJuZWwgc2lkZSBjb3Vu dGVyCm1hbmFnZW1lbnQgdGhhdCBpcyBubyBwcm9ibGVtIGF0IGFsbC4KCj4gQSBiZW5lZml0IG9m IGJlaW5nIGFibGUgdG8gY2hhbmdlIHRoZSByZXBvcnQgc2l6ZSBpcyB0byByZWR1Y2UgbWVtb3J5 Cj4gYmFuZHdpZHRoIHVzYWdlIHRoYXQgY2FuIHNrZXcgbWVhc3VyZW1lbnRzLiBJdCdzIHBvc3Np YmxlIHRvIHJlcXVlc3QKPiB0aGUgZ3B1IHRvIHdyaXRlIG91dCBwZXJpb2RpYyBzbmFwc2hvdHMg YXQgYSB2ZXJ5IGhpZ2ggZnJlcXVlbmN5ICh3ZQo+IGNhbiBwcm9ncmFtIGEgcGVyaW9kIGFzIGxv dyBhcyAxNjAgbmFub3NlY29uZHMpIGFuZCBoaWdoZXIgZnJlcXVlbmNpZXMKPiBjYW4gc3RhcnQg dG8gZXhwb3NlIHNvbWUgaW50ZXJlc3RpbmcgZGV0YWlscyBhYm91dCBob3cgdGhlIGdwdSBpcwo+ IHV0aWxpemVkIC0gdGhvdWdoIHdpdGggbm90YWJsZSBvYnNlcnZlciBlZmZlY3RzIHRvby4gSG93 IGNhcmVmdWwgd2UKPiBhcmUgdG8gbm90IHdhc3RlIGJhbmR3aWR0aCBpcyBleHBlY3RlZCB0byBk ZXRlcm1pbmUgd2hhdCBzYW1wbGluZwo+IHJlc29sdXRpb25zIHdlIGNhbiBhY2hpZXZlIGJlZm9y ZSBzaWduaWZpY2FudGx5IGltcGFjdGluZyB3aGF0IHdlIGFyZQo+IG1lYXN1cmluZy4KPiAKPiBT cGxpdHRpbmcgdGhlIGNvdW50ZXJzIHVwIGxvb2tlZCBsaWtlIGl0IGNvdWxkIGluY3JlYXNlIHRo ZSBiYW5kd2lkdGgKPiB3ZSB1c2UgcXVpdGUgYSBiaXQuIFRoZSBtYWluIGRpZmZlcmVuY2UgY29t ZXMgZnJvbSByZXF1aXJpbmcgNjRiaXQKPiB2YWx1ZXMgaW5zdGVhZCBvZiB0aGUgMzJiaXQgdmFs dWVzIGluIG91ciByYXcgcmVwb3J0cy4gVGhpcyBjYW4gYmUKPiBvZmZzZXQgcGFydGx5IHNpbmNl IHRoZXJlIGFyZSBxdWl0ZSBhIGZldyAncmVzZXJ2ZWQnL3JlZHVuZGFudCBBCj4gY291bnRlcnMg dGhhdCBkb24ndCBuZWVkIGZvcndhcmRpbmcuIEFzIGFuIGV4YW1wbGUgaW4gdGhlIG1vc3QgZXh0 cmVtZQo+IGNhc2UsIGluc3RlYWQgb2YgYW4gOCBieXRlIHBlcmZfZXZlbnRfaGVhZGVyICsgNGJ5 dGUgcmF3X3NpemUgKyAyNTYKPiBieXRlIHJlcG9ydHMgKyA0IGJ5dGUgcGFkZGluZyBldmVyeSAx NjBucyB+PSAxLjVHQi9zLCB3ZSBtaWdodCBoYXZlIDMzCj4gQSBjb3VudGVycyAoaWdub3Jpbmcg cmVkdW5kYW50IG9uZXMpICsgMTYgY29uZmlndXJhYmxlIGNvdW50ZXJzID0gNDAwCgpJbiB0aGF0 IFBERiB0aGVyZSdzIG9ubHkgOCBjb25maWd1cmFibGUgJ0InIGNvdW50ZXJzLgoKPiBieXRlIHN0 cnVjdCByZWFkX2Zvcm1hdCAodXNpbmcgUEVSRl9GT1JNQVRfR1JPVVApICsgOCBieXRlCj4gcGVy Zl9ldmVudF9oZWFkZXIgZXZlcnkgMTYwbnMgfj0gMi40R0Ivcy4gT24gdGhlIG90aGVyIGhhbmQg dGhvdWdoIHdlCj4gY291bGQgY2hvb3NlIHRvIGZvcndhcmQgb25seSAyIG9yIDMgY291bnRlcnMg b2YgaW50ZXJlc3QgYXQgdGhlc2UgaGlnaAo+IGZyZXF1ZW5jaWVzIHdoaWNoIGlzbid0IHBvc3Np YmxlIGN1cnJlbnRseS4KClJpZ2h0OyBhbHRob3VnaCB5b3UnZCBoYXZlIHRvIHNwZW5kIHNvbWUg Y3B1IGN5Y2xlcyBvbiB0aGUgZm9ybWF0IHNoaWZ0LgpXaGljaCBtaWdodCBtYWtlIGl0IG1vb3Qg YWdhaW4uIFRoYXQgc2FpZDsgSSB3b3VsZCByZWFsbHkgcHJlZmVyIHdlCnN0YXJ0IG91dCB3aXRo IHRyeWluZyB0byBtYWtlIHRoZSBnZW5lcmljIGZvcm1hdCBzdHVmZiB3b3JrIGJlZm9yZQp0cnlp bmcgdG8gY29tZSB1cCB3aXRoIHNwZWNpYWwgY2FzZSBoYWNrcy4KCj4gPiBVc2UgdGhlIE1NSU8g cmVhZHMgZm9yIHRoZSByZWd1bGFyIHJlYWQoKSBpbnRlcmZhY2UsIGFuZCB1c2UgYSBocnRpbWVy Cj4gPiBwbGFjaW5nIE1JX1JFUE9SVF9QRVJGX0NPVU5UIGNvbW1hbmRzLCB3aXRoIGEgY291bnRl ciBzZWxlY3QgbWFzawo+ID4gY292ZXJpbmcgdGhlIGFsbCBldmVudHMgaW4gdGhlIGN1cnJlbnQg Z3JvdXAsIGZvciBzYW1wbGluZy4KPiAKPiBVbmZvcnR1bmF0ZWx5IGR1ZSB0byB0aGUgbW1pbyBs aW1pdGF0aW9ucyBhbmQgdGhlIG5lZWQgdG8gcmVsYXRlCj4gY291bnRlcnMgSSBjYW4ndCBpbWFn aW5lIG1hbnkgdXNlIGNhc2VzIGZvciBkaXJlY3RseSBhY2Nlc3NpbmcgdGhlCj4gY291bnRlcnMg aW5kaXZpZHVhbGx5IHZpYSB0aGUgcmVhZCgpIGludGVyZmFjZS4KCkZhaXIgZW5vdWdoLgoKPiBN SV9SRVBPUlRfUEVSRl9DT1VOVCBjb21tYW5kcyBhcmUgcmVhbGx5IG9ubHkgaW50ZW5kZWQgZm9y IGNvbGxlY3RpbmcKPiByZXBvcnRzIGluIHN5bmMgd2l0aCBhIGNvbW1hbmQgc3RyZWFtLiBXZSBh cmUgZXhwZXJpbWVudGluZyBjdXJyZW50bHkKPiB3aXRoIGFuIGV4dGVuc2lvbiBvZiBteSBQTVUg ZHJpdmVyIHRoYXQgZW1pdHMgTUlfUkVQT1JUX1BFUkZfQ09VTlQKPiBjb21tYW5kcyBhdXRvbWF0 aWNhbGx5IGFyb3VuZCB0aGUgYmF0Y2hlcyBvZiBjb21tYW5kcyBzdWJtaXR0ZWQgYnkKPiB1c2Vy c3BhY2Ugc28gd2UgY2FuIGRvIGEgYmV0dGVyIGpvYiBvZiBmaWx0ZXJpbmcgbWV0cmljcyBhY3Jv c3MgbWFueQo+IGdwdSBjb250ZXh0cywgYnV0IGZvciBub3cgdGhlIGV4cGVjdGF0aW9uIGlzIHRo YXQgdGhlIGtlcm5lbCBzaG91bGRuJ3QKPiBiZSBlbWl0dGluZyBNSV9SRVBPUlRfUEVSRl9DT1VO VCBjb21tYW5kcy4gV2UgZW1pdAo+IE1JX1JFUE9SVF9QRVJGX0NPVU5UIGNvbW1hbmRzIHdpdGhp biBNZXNhIGZvciBleGFtcGxlIHRvIGltcGxlbWVudCB0aGUKPiBHTF9JTlRFTF9wZXJmb3JtYW5j ZV9xdWVyeSBleHRlbnNpb24sIGF0IHRoZSBzdGFydCBhbmQgZW5kIG9mIGEgcXVlcnkKPiBhcm91 bmQgYSBzZXF1ZW5jZSBvZiBjb21tYW5kcyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBpcyBpbnRlcmVz dGVkIGluCj4gbWVhc3VyaW5nLgoKSSB3aWxsIHRyeSBhbmQgcmVhZCB1cCBvbiB0aGUgR0xfSU5U RUxfcGVyZm9ybWFuY2VfcXVlcnkgdGhpbmcuCgo+ID4gWW91IGNhbiB1c2UgdGhlIHBlcmZfZXZl bnRfYXR0cjo6Y29uZmlnIHRvIHNlbGVjdCB0aGUgY291bnRlciAoQTAtQTQ0LAo+ID4gQjAtQjcp IGFuZCB1c2UgcGVyZl9ldmVudF9hdHRyOjpjb25maWcxIChsb3cgYW5kIGhpZ2ggZHdvcmQpIGZv ciB0aGUKPiA+IGNvcnJlc3BvbmRpbmcgQ0VDIHJlZ2lzdGVycy4KPiA+Cj4gCj4gSG9wZWZ1bGx5 IGNvdmVyZWQgYWJvdmUsIGJ1dCBzaW5jZSB0aGUgZml4ZWQtZnVuY3Rpb24gc3RhdGUgaXMgc28K PiBkZXBlbmRlbnQgb24gdGhlIE1VWCBjb25maWd1cmF0aW9uIEkgdGhpbmsgaXQgY3VycmVudGx5 IG1ha2VzIHNlbnNlIHRvCj4gdHJlYXQgdGhlIE1VWCBwbHVzIGxvZ2ljIHN0YXRlIChpbmNsdWRp bmcgdGhlIENFQyBzdGF0ZSkgYSB0aWdodGx5Cj4gY291cGxlZCB1bml0LgoKT2ggd2FpdCwgdGhl IEEgY291bnRlcnMgYXJlIGFsc28gYWZmZWN0ZWQgYnkgdGhlIE1VWCBwcm9ncmFtbWluZyEKVGhh dCB3YXNuJ3QgY2xlYXIgdG8gbWUgYmVmb3JlIHRoaXMuCgpTYW1lIGRpZmZlcmVuY2UgdGhvdWdo OyB5b3UgY291bGQgc3RpbGwgZG8gZWl0aGVyIHRoZSBzeXNmcyBhaWRlZCBmbGlwcwpvciB0aGUg bXV0dWFsbHkgZXhjbHVzaXZlIGNvdW50ZXIgdHlwZXMgdG8gZGVhbCB3aXRoIHRoaXM7IGFsbCBz dGlsbAphc3N1bWluZyByZXByb2dyYW1taW5nIGFsbCB0aGF0IGlzICdleHBlbnNpdmUnLgoKPiBU aGUgRmxleGlibGUgRVUgQ291bnRlcnMgZm9yIEJyb2Fkd2VsbCsgY291bGQgYmUgbW9yZSBhbWVu YWJsZSB0byB0aGlzCj4ga2luZCBvZiBpbmRlcGVuZGVudCBjb25maWd1cmF0aW9uLCBhcyBJIGRv bid0IGJlbGlldmUgdGhleSBhcmUKPiBkZXBlbmRhbnQgb24gdGhlIE1VWCBjb25maWd1cmF0aW9u LgoKVGhhdCBzb3VuZHMgZ29vZCA6LSkKCj4gT25lIGlkZWEgdGhhdCdzIGNvbWUgdXAgYSBsb3Qg dGhvdWdoIGlzIGhhdmluZyB0aGUgcG9zc2liaWxpdHkgb2YKPiBiZWluZyBhYmxlIHRvIGNvbmZp Z3VyZSBhbiBldmVudCB3aXRoIGEgZnVsbCBNVVggKyBmaXhlZC1mdW5jdGlvbgo+IHN0YXRlIGRl c2NyaXB0aW9uLgoKUmlnaHQ7IHNlZWluZyBob3cgdGhlcmUncyBvbmx5IGEgdmVyeSBsaW1pdGVk IG51bWJlciBvZiB0aGVzZSBNVVgKcHJvZ3JhbXMgdmFsaWRhdGVkICgzRCwgR1BHUFUsIE1lZGlh LCBhbnkgb3RoZXJzPykgdGhpcyBzaG91bGQgYmUKZG9hYmxlLiBBbmQgYXMgbWVudGlvbmVkIGJl Zm9yZSwgeW91IGNvdWxkIGRpc2FibGUgdGhlIG90aGVyIHR5cGVzIG9uY2UKeW91IGNyZWF0ZSBv bmUgaW4gb3JkZXIgdG8gbGltaXQgdGhlIHJlcHJvZ3JhbW1pbmcgdGhpbmcuCgo+ID4KPiA+IFRo aXMgZG9lcyBub3QgcmVxdWlyZSByYW5kb20gcGVyIGRyaXZlciBBQkkgZXh0ZW50aW9ucyBmb3IK PiA+IHBlcmZfZXZlbnRfYXR0ciwgbm9yIHlvdXIgY3VzdG9tIG91dHB1dCBmb3JtYXQuCj4gPgo+ ID4gQW0gSSBtaXNzaW5nIHNvbWV0aGluZyBvYnZpb3VzIGhlcmU/Cj4gCj4gRGVmaW5pdGVseSBu b3RoaW5nICdvYnZpb3VzJyBzaW5jZSB0aGUgY3VycmVudCBkb2N1bWVudGF0aW9uIGlzCj4gbm90 YWJseSBpbmNvbXBsZXRlIGEudC5tLCBidXQgSSBkb24ndCB0aGluayB3ZSB3ZXJlIG9uIHRoZSBz YW1lIHBhZ2UKPiBhYm91dCBob3cgdGhlIGhhcmR3YXJlIHdvcmtzIGFuZCBvdXIgdXNlIGNhc2Vz Lgo+IAo+IEhvcGVmdWxseSBzb21lIG9mIG15IGFib3ZlIGNvbW1lbnRzIGhlbHAgY2xhcmlmeSBz b21lIGRldGFpbHMuCgpZZXMsIHRoYW5rcyEKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK