From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm/i915: Reserve space improvements Date: Wed, 1 Jul 2015 14:29:31 +0200 Message-ID: <20150701122931.GF24055@phenom.ffwll.local> References: <1435165408-15470-1-git-send-email-John.C.Harrison@Intel.com> <1435664455-12657-1-git-send-email-John.C.Harrison@Intel.com> <5592AB2C.8050303@intel.com> <5592BB83.3070001@Intel.com> <5592C0A1.4040705@intel.com> <5593C477.7080504@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f177.google.com (mail-wi0-f177.google.com [209.85.212.177]) by gabe.freedesktop.org (Postfix) with ESMTPS id E6CB88A35E for ; Wed, 1 Jul 2015 05:27:13 -0700 (PDT) Received: by wiwl6 with SMTP id l6so163463099wiw.0 for ; Wed, 01 Jul 2015 05:27:12 -0700 (PDT) Content-Disposition: inline In-Reply-To: <5593C477.7080504@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tomas Elf Cc: Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKdWwgMDEsIDIwMTUgYXQgMTE6NDQ6MDdBTSArMDEwMCwgVG9tYXMgRWxmIHdyb3Rl Ogo+IE9uIDMwLzA2LzIwMTUgMTc6MTUsIFRvbWFzIEVsZiB3cm90ZToKPiA+T24gMzAvMDYvMjAx NSAxNjo1MywgSm9obiBIYXJyaXNvbiB3cm90ZToKPiA+Pk9uIDMwLzA2LzIwMTUgMTU6NDMsIFRv bWFzIEVsZiB3cm90ZToKPiA+Pj5PbiAzMC8wNi8yMDE1IDEyOjQwLCBKb2huLkMuSGFycmlzb25A SW50ZWwuY29tIHdyb3RlOgo+ID4+Pj5Gcm9tOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlz b25ASW50ZWwuY29tPgo+ID4+Pj4KPiA+Pj4+QW4gZWFybGllciBwYXRjaCB3YXMgYWRkZWQgdG8g cmVzZXJ2ZSBzcGFjZSBpbiB0aGUgcmluZyBidWZmZXIgZm9yIHRoZQo+ID4+Pj5jb21tYW5kcyBp c3N1ZWQgZHVyaW5nICdhZGRfcmVxdWVzdCgpJy4gVGhlIGluaXRpYWwgdmVyc2lvbiB3YXMKPiA+ Pj4+cGVzc2ltaXN0aWMgaW4gdGhlIHdheSBpdCBoYW5kbGVkIGJ1ZmZlciB3cmFwcGluZyBhbmQg d291bGQgY2F1c2UKPiA+Pj4+cHJlbWF0dXJlIHdyYXBzIGFuZCB0aHVzIHdhc3RlIHJpbmcgc3Bh Y2UuCj4gPj4+Pgo+ID4+Pj5UaGlzIHBhdGNoIHVwZGF0ZXMgdGhlIGNvZGUgdG8gYmV0dGVyIGhh bmRsZSB0aGUgd3JhcCBjYXNlLiBJdCBubwo+ID4+Pj5sb25nZXIgZW5mb3JjZXMgdGhhdCB0aGUg c3BhY2UgYmVpbmcgYXNrZWQgZm9yIGFuZCB0aGUgcmVzZXJ2ZWQgc3BhY2UKPiA+Pj4+YXJlIGEg c2luZ2xlIGNvbnRpZ3VvdXMgYmxvY2suIEluc3RlYWQsIGl0IGFsbG93cyB0aGUgcmVzZXJ2ZSB0 byBiZSBvbgo+ID4+Pj50aGUgZmFyIGVuZCBvZiBhIHdyYXAgb3BlcmF0aW9uLiBJdCBzdGlsbCBn dWFyYW50ZWVzIHRoYXQgdGhlIHNwYWNlIGlzCj4gPj4+PmF2YWlsYWJsZSBzbyB3aGVuIHRoZSB3 cmFwIG9jY3Vycywgbm8gd2FpdCB3aWxsIGhhcHBlbi4gVGh1cyB0aGUgd3JhcAo+ID4+Pj5jYW5u b3QgZmFpbCB3aGljaCBpcyB0aGUgd2hvbGUgcG9pbnQgb2YgdGhlIGV4ZXJjaXNlLgo+ID4+Pj4K PiA+Pj4+QWxzbyBmaXhlZCBhIG1lcmdlIGZhaWx1cmUgd2l0aCBzb21lIGNvbW1lbnRzIGZyb20g dGhlIG9yaWdpbmFsIHBhdGNoLgo+ID4+Pj4KPiA+Pj4+djI6IEluY29ycG9yYXRlZCBzdWdnZXN0 aW9uIGJ5IERhdmlkIEdvcmRvbiB0byBtb3ZlIHRoZSB3cmFwIGNvZGUKPiA+Pj4+aW5zaWRlIHRo ZSBwcmVwYXJlIGZ1bmN0aW9uIGFuZCB0aHVzIGFsbG93IGEgc2luZ2xlIGNvbWJpbmVkCj4gPj4+ PndhaXRfZm9yX3NwYWNlKCkgY2FsbCByYXRoZXIgdGhhbiBkb2luZyBvbmUgYmVmb3JlIHRoZSB3 cmFwIGFuZAo+ID4+Pj5hbm90aGVyIGFmdGVyLiBUaGlzIGFsc28gbWFrZXMgdGhlIHByZXBhcmUg Y29kZSBtdWNoIHNpbXBsZXIgYW5kCj4gPj4+PmVhc2llciB0byBmb2xsb3cuCj4gPj4+Pgo+ID4+ Pj52MzogRml4IGZvciAnZWZmZWN0aXZlX3NpemUnIHZzICdzaXplJyBkdXJpbmcgcmluZyBidWZm ZXIgcmVtYWluZGVyCj4gPj4+PmNhbGN1bGF0aW9ucyAoc3BvdHRlZCBieSBUb21hcyBFbGYpLgo+ ID4+Pj4KPiA+Pj4+Rm9yOiBWSVotNTExNQo+ID4+Pj5DQzogRGFuaWVsIFZldHRlciA8ZGFuaWVs QGZmd2xsLmNoPgo+ID4+Pj5TaWduZWQtb2ZmLWJ5OiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFy cmlzb25ASW50ZWwuY29tPgo+ID4+Pj4tLS0KPiA+Pj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYyAgICAgICAgfCA3Mwo+ID4+Pj4rKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+ ID4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyB8IDkwCj4gPj4+ PisrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+ID4+Pj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCB8ICA0ICstCj4gPj4+PiAgMyBmaWxlcyBjaGFuZ2Vk LCA5MCBpbnNlcnRpb25zKCspLCA3NyBkZWxldGlvbnMoLSkKPiA+Pj4+Cj4gPj4+PmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ID4+Pj5iL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gPj4+PmluZGV4IGIzNmUwNjQuLjdkOTUxNWQgMTAwNjQ0 Cj4gPj4+Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gPj4+PisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gPj4+PkBAIC02NjMsMTIgKzY2Mywx MiBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ193YWl0X2Zvcl9zcGFjZShzdHJ1Y3QKPiA+Pj4+ ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiA+Pj4+ICAgICAgdW5zaWduZWQgc3BhY2U7Cj4g Pj4+PiAgICAgIGludCByZXQ7Cj4gPj4+Pgo+ID4+Pj4tICAgIC8qIFRoZSB3aG9sZSBwb2ludCBv ZiByZXNlcnZpbmcgc3BhY2UgaXMgdG8gbm90IHdhaXQhICovCj4gPj4+Pi0gICAgV0FSTl9PTihy aW5nYnVmLT5yZXNlcnZlZF9pbl91c2UpOwo+ID4+Pj4tCj4gPj4+PiAgICAgIGlmIChpbnRlbF9y aW5nX3NwYWNlKHJpbmdidWYpID49IGJ5dGVzKQo+ID4+Pj4gICAgICAgICAgcmV0dXJuIDA7Cj4g Pj4+Pgo+ID4+Pj4rICAgIC8qIFRoZSB3aG9sZSBwb2ludCBvZiByZXNlcnZpbmcgc3BhY2UgaXMg dG8gbm90IHdhaXQhICovCj4gPj4+PisgICAgV0FSTl9PTihyaW5nYnVmLT5yZXNlcnZlZF9pbl91 c2UpOwo+ID4+Pj4rCj4gPj4+PiAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkodGFyZ2V0LCAmcmlu Zy0+cmVxdWVzdF9saXN0LCBsaXN0KSB7Cj4gPj4+PiAgICAgICAgICAvKgo+ID4+Pj4gICAgICAg ICAgICogVGhlIHJlcXVlc3QgcXVldWUgaXMgcGVyLWVuZ2luZSwgc28gY2FuIGNvbnRhaW4gcmVx dWVzdHMKPiA+Pj4+QEAgLTcxOCwyMiArNzE4LDExIEBAIGludGVsX2xvZ2ljYWxfcmluZ19hZHZh bmNlX2FuZF9zdWJtaXQoc3RydWN0Cj4gPj4+PmRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0 KQo+ID4+Pj4gICAgICBleGVjbGlzdHNfY29udGV4dF9xdWV1ZShyZXF1ZXN0KTsKPiA+Pj4+ICB9 Cj4gPj4+Pgo+ID4+Pj4tc3RhdGljIGludCBsb2dpY2FsX3Jpbmdfd3JhcF9idWZmZXIoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gPj4+PitzdGF0aWMgdm9pZCBfX3dyYXBfcmlu Z19idWZmZXIoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4gPj4+PiAgewo+ID4+ Pj4tICAgIHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcmVxLT5yaW5nYnVmOwo+ ID4+Pj4gICAgICB1aW50MzJfdCBfX2lvbWVtICp2aXJ0Owo+ID4+Pj4gICAgICBpbnQgcmVtID0g cmluZ2J1Zi0+c2l6ZSAtIHJpbmdidWYtPnRhaWw7Cj4gPj4+Pgo+ID4+Pj4tICAgIC8qIENhbid0 IHdyYXAgaWYgc3BhY2UgaGFzIGFscmVhZHkgYmVlbiByZXNlcnZlZCEgKi8KPiA+Pj4+LSAgICBX QVJOX09OKHJpbmdidWYtPnJlc2VydmVkX2luX3VzZSk7Cj4gPj4+Pi0KPiA+Pj4+LSAgICBpZiAo cmluZ2J1Zi0+c3BhY2UgPCByZW0pIHsKPiA+Pj4+LSAgICAgICAgaW50IHJldCA9IGxvZ2ljYWxf cmluZ193YWl0X2Zvcl9zcGFjZShyZXEsIHJlbSk7Cj4gPj4+Pi0KPiA+Pj4+LSAgICAgICAgaWYg KHJldCkKPiA+Pj4+LSAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPj4+Pi0gICAgfQo+ID4+Pj4t Cj4gPj4+PiAgICAgIHZpcnQgPSByaW5nYnVmLT52aXJ0dWFsX3N0YXJ0ICsgcmluZ2J1Zi0+dGFp bDsKPiA+Pj4+ICAgICAgcmVtIC89IDQ7Cj4gPj4+PiAgICAgIHdoaWxlIChyZW0tLSkKPiA+Pj4+ QEAgLTc0MSw0MCArNzMwLDUwIEBAIHN0YXRpYyBpbnQgbG9naWNhbF9yaW5nX3dyYXBfYnVmZmVy KHN0cnVjdAo+ID4+Pj5kcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ID4+Pj4KPiA+Pj4+ICAg ICAgcmluZ2J1Zi0+dGFpbCA9IDA7Cj4gPj4+PiAgICAgIGludGVsX3JpbmdfdXBkYXRlX3NwYWNl KHJpbmdidWYpOwo+ID4+Pj4tCj4gPj4+Pi0gICAgcmV0dXJuIDA7Cj4gPj4+PiAgfQo+ID4+Pj4K PiA+Pj4+ICBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ19wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxLAo+ID4+Pj5pbnQgYnl0ZXMpCj4gPj4+PiAgewo+ID4+Pj4gICAgICBz dHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiA9IHJlcS0+cmluZ2J1ZjsKPiA+Pj4+LSAg ICBpbnQgcmV0Owo+ID4+Pj4tCj4gPj4+Pi0gICAgLyoKPiA+Pj4+LSAgICAgKiBBZGQgb24gdGhl IHJlc2VydmVkIHNpemUgdG8gdGhlIHJlcXVlc3QgdG8gbWFrZSBzdXJlIHRoYXQgYWZ0ZXIKPiA+ Pj4+LSAgICAgKiB0aGUgaW50ZW5kZWQgY29tbWFuZHMgaGF2ZSBiZWVuIGVtaXR0ZWQsIHRoZXJl IGlzIGd1YXJhbnRlZWQgdG8KPiA+Pj4+LSAgICAgKiBzdGlsbCBiZSBlbm91Z2ggZnJlZSBzcGFj ZSB0byBzZW5kIHRoZW0gdG8gdGhlIGhhcmR3YXJlLgo+ID4+Pj4tICAgICAqLwo+ID4+Pj4tICAg IGlmICghcmluZ2J1Zi0+cmVzZXJ2ZWRfaW5fdXNlKQo+ID4+Pj4tICAgICAgICBieXRlcyArPSBy aW5nYnVmLT5yZXNlcnZlZF9zaXplOwo+ID4+Pj4tCj4gPj4+Pi0gICAgaWYgKHVubGlrZWx5KHJp bmdidWYtPnRhaWwgKyBieXRlcyA+IHJpbmdidWYtPmVmZmVjdGl2ZV9zaXplKSkgewo+ID4+Pj4t ICAgICAgICByZXQgPSBsb2dpY2FsX3Jpbmdfd3JhcF9idWZmZXIocmVxKTsKPiA+Pj4+LSAgICAg ICAgaWYgKHVubGlrZWx5KHJldCkpCj4gPj4+Pi0gICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4+ Pj4rICAgIGludCByZW1haW5fdXNhYmxlID0gcmluZ2J1Zi0+ZWZmZWN0aXZlX3NpemUgLSByaW5n YnVmLT50YWlsOwo+ID4+Pj4rICAgIGludCByZW1haW5fYWN0dWFsID0gcmluZ2J1Zi0+c2l6ZSAt IHJpbmdidWYtPnRhaWw7Cj4gPj4+Cj4gPj4+WW91IGNvdWxkIGFkZCBhIGNvbW1lbnQgaGVyZSAo YW5kIGluIHRoZSBsZWdhY3kgaW1wbGVtZW50YXRpb24pCj4gPj4+ZXhwbGFpbmluZyB3aHkgd2Ug bWFrZSB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiByZW1haW5fdXNhYmxlIGFuZAo+ID4+PnJlbWFp bl9hY3R1YWwuIE9yIHlvdSBjb3VsZCBhZGQgdGhlIGNvbW1lbnQgd2hlbiB3ZSBhY3R1YWxseSB1 c2UKPiA+Pj5yZW1haW5fYWN0dWFsIGZ1cnRoZXIgZG93biBpbiB0aGUgZnVuY3Rpb24uIEl0J3Mg dXAgdG8geW91Lgo+ID4+Pgo+ID4+PldlIGZpcnN0IG5lZWQgdG8gYmUgcGVzc2ltaXN0aWMgYWJv dXQgaG93IG11Y2ggc3BhY2UgaXMgbGVmdCBpbiB0aGUKPiA+Pj5yaW5nIGJ1ZmZlciB3aGVuIGRl dGVybWluaW5nIHRoZSBuZWVkIGZvciB3cmFwcGluZyAtIHRoZXJlZm9yZSB3ZSB1c2UKPiA+Pj5y ZW1haW5fdXNhYmxlLCB3aGljaCBkaXNyZWdhcmRzIHRoZSBlbmQtb2YtYnVmZmVyIHBhZGRpbmcg LSBhbmQgdGhlbgo+ID4+PndlIG5lZWQgdG8gYmUgcGVzc2ltaXN0aWMgYWJvdXQgaG93IG11Y2gg cmluZyBzcGFjZSB3ZSBuZWVkIHRvIHdhaXQKPiA+Pj5mb3IgLSB0aGVyZWZvcmUgd2UgdXNlIHJl bWFpbl9hY3R1YWwsIHdoaWNoIHRha2VzIHRoZSBlbmQtb2YtYnVmZmVyCj4gPj4+cGFkZGluZyBp bnRvIGNvbnNpZGVyYXRpb24gdG8gbWFrZSBzdXJlIHRoYXQgd2UncmUgYWN0dWFsbHkgbm90Cj4g Pj4+d2FpdGluZyBmb3IgdG9vIGxpdHRsZSBzcGFjZS4KPiA+Pgo+ID4+SXQncyBub3QgYWJvdXQg YmVpbmcgcGVzc2ltaXN0aWMgb3Igb3B0aW1pc3RpYy4gVGhhdCBpbXBsaWVzIHRoZXJlIGlzCj4g Pj5zb21lIGNob2ljZSwgdGhhdCBvbmUgdmVyc2lvbiBpcyBhIGxpdHRsZSBiaXQgYmV0dGVyIGlu IG9uZSBzaXR1YXRpb24KPiA+PmJ1dCBlaXRoZXIgd291bGQgZG8uIFdoZXJlYXMgdGhpcyBpcyBh Ym91dCBmdW5jdGlvbmFsIGNvcnJlY3RuZXNzLiBUaGUKPiA+PmRpZmZlcmVuY2UgYmV0d2VlbiB0 aGUgYWN0dWFsIHJpbmcgc2l6ZSBhbmQgdGhlIHVzYWJsZSByaW5nIHNpemUgaXMgbm90Cj4gPj5z b21lIHJlc2VydmVkIHNwYWNlIHRoaW5nIHRvIG1ha2Ugc29tZXRoaW5nIGdvIGZhc3Rlci4gVGhp cyBpcyBhYm91dCB0aGUKPiA+PmhhcmR3YXJlIGxvY2tpbmcgdXAgaWYgdGhlIGVudGlyZSBidWZm ZXIgaXMgdXNlZC4gSSB0aGluayAndXNhYmxlJyBhbmQKPiA+PidhY3R1YWwnIGFyZSBmYWlybHkg b2J2aW91cyBuYW1lcy4gSWYgeW91IHdhbnQgdG8ga25vdyB0aGUgZGV0YWlscyBhYm91dAo+ID4+ d2h5IHRoZXJlIGlzIGFuICdlZmZlY3RpdmVfc2l6ZScgaW4gdGhlIGZpcnN0IHBsYWNlIHRoZW4g bG9vayB1cAo+ID4+J2VmZmVjdGl2ZV9zaXplJyBpbiB0aGUgY29kZSBhbmQgcmVhZCB0aGUgY29t bWVudCBhYm91dCBpODMwIGhhbmdzLgo+ID4KPiA+WW91J3JlIHByb2JhYmx5IHJpZ2h0LiBMZXQn cyBqdXN0IGZvcmdldCBhYm91dCBpdC4KPiA+Cj4gPj4KPiA+Pj5JZiB5b3UgYWRkIHRob3NlIGNv bW1lbnRzIG1heWJlIHlvdSBjb3VsZCBhbHNvIHJlbmFtZSB0aGUgdmFyaWFibGVzIHRvCj4gPj4+ c29tZXRoaW5nIGxpa2UgInJlbWFpbmluZ19zcGFjZV91c2FibGUiIGV0Yy4gc2luY2UgInJlbWFp bl91c2FibGUiIGlzCj4gPj4+bW9yZSBvZiBhIHZlcmIgdGhhbiBhIG5vdW4uIEJ1dCB0aGF0J3Mg c2VyaW91c2x5IG5pdHBpY2tpbmcuCj4gPj5PciBtYXliZQo+ID4+J3JlbWFpbmluZ19zcGFjZV90 aGF0X2lzX3VzYWJsZV93aXRob3V0X2NhdXNpbmdfYW5faTgzMF90b19oYW5nX2JlY2F1c2VfaXRf c2tpcHNfdGhlX2xhc3RfdHdvX2NhY2hlbGluZXMnPwo+ID4+Cj4gPj5UaGVyZSBpcyBzdWNoIGEg dGhpbmcgYXMgYmVpbmcgdG9vIHZlcmJvc2UgYW5kIG1ha2luZyB0aGUgY29kZSBoYXJkIHRvCj4g Pj5yZWFkLgo+ID4KPiA+VGhhdCBpcyBpbmRlZWQgYSB2ZXJ5IGxvbmcgdmFyaWFibGUgbmFtZS4g SXQncyAxMDQgY2hhcmFjdGVycyBsb25nIHNvCj4gPnRoYXQgd291bGRuJ3QgY2xlYXIgY2hlY2tw YXRjaC5wbCA6KS4gTXkgbml0cGlja3kgc3VnZ2VzdGlvbiB3YXMgOQo+ID5jaGFyYWN0ZXJzIGxv bmdlci4gQW5kLCB5ZWFoLCBpdCdzIHBvc3NpYmxlIHRvIGdldCB0b28gdmVyYm9zZS4gVGhpcwo+ ID5kcml2ZXIgaXMgbm90IGV2ZW4gcmVtb3RlbHkgY2xvc2UgdG8gdGhhdCBwb2ludCBhcyBpdCBz dGFuZHMgdG9kYXkgOikuCj4gPgo+ID5UaGFua3MsCj4gPlRvbWFzCj4gCj4gQW55d2F5LCBJIHRo aW5rIHdlJ3JlIGRvbmUgaGVyZS4KPiAKPiBSZXZpZXdlZC1ieTogVG9tYXMgRWxmIDx0b21hcy5l bGZAaW50ZWwuY29tPgoKUXVldWVkIGZvciAtbmV4dC50Ci0tIApEYW5pZWwgVmV0dGVyClNvZnR3 YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=