From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: Re: [PATCH v6] drm/i915/guc: Add GuC css header parser Date: Wed, 21 Oct 2015 12:13:13 +0100 Message-ID: <56277349.6070904@intel.com> References: <1444775409-20312-1-git-send-email-yu.dai@intel.com> <1445296254-27710-1-git-send-email-yu.dai@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 6185D6E916 for ; Wed, 21 Oct 2015 04:13:15 -0700 (PDT) In-Reply-To: <1445296254-27710-1-git-send-email-yu.dai@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: yu.dai@intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMjAvMTAvMTUgMDA6MTAsIHl1LmRhaUBpbnRlbC5jb20gd3JvdGU6Cj4gRnJvbTogQWxleCBE YWkgPHl1LmRhaUBpbnRlbC5jb20+Cj4KPiBUaGUgc2l6ZSAvIG9mZnNldCBpbmZvcm1hdGlvbiBv ZiBhbGwgZmlybXdhcmUgaW5ncmVkaWVudHMgYXJlCj4gbm93IGNhY3VsYXRlZCBmcm9tIGhlYWRl ci4gRHJpdmVyIHdpbGwgdmFsaWRhdGUgdGhlIGhlYWRlciBhbmQKPiByc2Ega2V5IHNpemUuIElm IGFueSBjb21wb25lbnQgaXMgb3V0IG9mIGJvdW5kYXJ5LCBkcml2ZXIgd2lsbAo+IHJlamVjdCB0 aGUgbG9hZGluZyB0b28uCj4KPiB2NjogQ2xlYW4gdXAgd2FybmluZ3MgZnJvbSBtYWtlIGRvY3MK Pgo+IHY1OiBUaWR5IHVwIEd1QyB0aXRsZXMgaW4ga2VybmVsL0RvYwo+Cj4gdjQ6IE5vdyB1c2lu ZyAnc2l6ZV9kdycgZm9yIHRob3NlIGRlZmluZWQgaW4gY3NzX2hlYWRlcgo+Cj4gdjM6IDEpIE1v dmUgRE9DIHRvIGludGVsX2d1Y19md2lmLmggcmlnaHQgYmVmb3JlIGNzc19oZWFkZXIKPiBkZWZp bml0aW9uLiBBZGQgbW9yZSBjb21tZW50cy4KPiAgICAgIDIpIENoYW5nZSAnc2l6ZScgdG8gJ2xl bicgb3IgJ2xlbmd0aCcgdG8gYXZvaWQgY29uZnVzaW9uLgo+ICAgICAgMykgQWRkIFVPU19SU0Ff U0NSQVRDSF9NQVhfQ09VTlQgYWNjb3JkaW5nIHRvIEJTcGVjLiBBbmQKPiBkcml2ZXIgdmFsaWRh dGUgc2l6ZSBvZiBSU0Ega2V5IG5vdy4KPiAgICAgIDQpIEFkZCBmdyBjb21wb25lbnQgc2l6ZS9v ZmZzZXQgaW5mbyB0byBpbnRlbF9ndWNfZncuCj4KPiB2MjogQWRkIGluZGVudCBpbnRvIERPQyB0 byBtYWtlIGZpeGVkLXdpZHRoIGZvcm1hdCByYXRoZXIgdGhhbgo+IGNoYW5nZSB0aGUgdG1wbC4K Pgo+IHYxOiAxKSBndWNfY3NzX2hlYWRlciBpcyBkZWZpbmVkIGFzIF9fcGFja2VkIG5vdwo+ICAg ICAgMikgQWRkIGFuZCBjb3JyZWN0IEd1QyByZWxhdGVkIHRvcGljcyBpbiBrZXJuZWwvRG9jCj4K PiBTaWduZWQtb2ZmLWJ5OiBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT4KPiAtLS0KCkRvY2Jv b2sgbG9va3MgT0sgbm93LCBhbmQgdGhlIGNvZGUgaXMgdGhlIHNhbWUgYXMgbGFzdCB2ZXJzaW9u IEkgCnJldmlld2VkLCBzbyAuLi4KClJldmlld2VkLWJ5OiBEYXZlIEdvcmRvbiA8ZGF2aWQucy5n b3Jkb25AaW50ZWwuY29tPgoKPiAgIERvY3VtZW50YXRpb24vRG9jQm9vay9ncHUudG1wbCAgICAg ICAgICAgICB8IDEyICsrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j ICAgICAgICB8ICA2ICsrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaCAg ICAgICAgfCAgMSArCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9u LmMgfCAgOCArLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICAg ICB8ICA4ICsrLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2Z3aWYuaCAgICAg IHwgNzIgKysrKysrKysrKysrKysrKysrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjX2xvYWRlci5jICAgIHwgOTUgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCj4g ICA3IGZpbGVzIGNoYW5nZWQsIDE1NyBpbnNlcnRpb25zKCspLCA0NSBkZWxldGlvbnMoLSkKPgo+ IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ3B1LnRtcGwgYi9Eb2N1bWVudGF0 aW9uL0RvY0Jvb2svZ3B1LnRtcGwKPiBpbmRleCBjMDVkN2RmLi4zZGNlNmY2IDEwMDY0NAo+IC0t LSBhL0RvY3VtZW50YXRpb24vRG9jQm9vay9ncHUudG1wbAo+ICsrKyBiL0RvY3VtZW50YXRpb24v RG9jQm9vay9ncHUudG1wbAo+IEBAIC00MTE1LDE3ICs0MTE1LDIxIEBAIGludCBudW1faW9jdGxz Ozwvc3lub3BzaXM+Cj4gICAgICAgICA8L3NlY3QyPgo+ICAgICAgIDwvc2VjdDE+Cj4gICAgICAg PHNlY3QxPgo+IC0gICAgICA8dGl0bGU+R3VDLWJhc2VkIENvbW1hbmQgU3VibWlzc2lvbjwvdGl0 bGU+Cj4gKyAgICAgIDx0aXRsZT5HdUM8L3RpdGxlPgo+ICAgICAgICAgPHNlY3QyPgo+IC0gICAg ICAgIDx0aXRsZT5HdUM8L3RpdGxlPgo+ICsgICAgICAgIDx0aXRsZT5HdUMtc3BlY2lmaWMgZmly bXdhcmUgbG9hZGVyPC90aXRsZT4KPiAgICFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X2xvYWRlci5jIEd1Qy1zcGVjaWZpYyBmaXJtd2FyZSBsb2FkZXIKPiAgICFJZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gICAgICAgICA8L3NlY3QyPgo+ICAgICAgICAg PHNlY3QyPgo+IC0gICAgICAgIDx0aXRsZT5HdUMgQ2xpZW50PC90aXRsZT4KPiAtIVBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgR3VDLWJhc2VkIGNvbW1hbmQgc3Vi bWlzc2lzb24KPiArICAgICAgICA8dGl0bGU+R3VDLWJhc2VkIGNvbW1hbmQgc3VibWlzc2lvbjwv dGl0bGU+Cj4gKyFQZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIEd1 Qy1iYXNlZCBjb21tYW5kIHN1Ym1pc3Npb24KPiAgICFJZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ndWNfc3VibWlzc2lvbi5jCj4gICAgICAgICA8L3NlY3QyPgo+ICsgICAgICA8c2VjdDI+Cj4g KyAgICAgICAgPHRpdGxlPkd1QyBGaXJtd2FyZSBMYXlvdXQ8L3RpdGxlPgo+ICshUGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19md2lmLmggR3VDIEZpcm13YXJlIExheW91dAo+ICsgICAg ICA8L3NlY3QyPgo+ICAgICAgIDwvc2VjdDE+Cj4KPiAgICAgICA8c2VjdDE+Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCBhM2IyMmJkLi5lY2E5NGQwIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtMjQwMiw2ICsyNDAyLDEyIEBAIHN0YXRp YyBpbnQgaTkxNV9ndWNfbG9hZF9zdGF0dXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQg KmRhdGEpCj4gICAJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCwgZ3VjX2Z3LT5ndWNfZndf bWlub3Jfd2FudGVkKTsKPiAgIAlzZXFfcHJpbnRmKG0sICJcdHZlcnNpb24gZm91bmQ6ICVkLiVk XG4iLAo+ICAgCQlndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCwgZ3VjX2Z3LT5ndWNfZndfbWlu b3JfZm91bmQpOwo+ICsJc2VxX3ByaW50ZihtLCAiXHRoZWFkZXI6IG9mZnNldCBpcyAlZDsgc2l6 ZSA9ICVkXG4iLAo+ICsJCWd1Y19mdy0+aGVhZGVyX29mZnNldCwgZ3VjX2Z3LT5oZWFkZXJfc2l6 ZSk7Cj4gKwlzZXFfcHJpbnRmKG0sICJcdHVDb2RlOiBvZmZzZXQgaXMgJWQ7IHNpemUgPSAlZFxu IiwKPiArCQlndWNfZnctPnVjb2RlX29mZnNldCwgZ3VjX2Z3LT51Y29kZV9zaXplKTsKPiArCXNl cV9wcmludGYobSwgIlx0UlNBOiBvZmZzZXQgaXMgJWQ7IHNpemUgPSAlZFxuIiwKPiArCQlndWNf ZnctPnJzYV9vZmZzZXQsIGd1Y19mdy0+cnNhX3NpemUpOwo+Cj4gICAJdG1wID0gSTkxNV9SRUFE KEdVQ19TVEFUVVMpOwo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3VjX3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKPiBpbmRleCBj NGNiMWMwLi5iNTFiODI4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3VjX3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgKPiBA QCAtNDIsNiArNDIsNyBAQAo+ICAgI2RlZmluZSBTT0ZUX1NDUkFUQ0gobikJCQkoMHhjMTgwICsg KChuKSAqIDQpKQo+Cj4gICAjZGVmaW5lIFVPU19SU0FfU0NSQVRDSChpKQkJKDB4YzIwMCArIChp KSAqIDQpCj4gKyNkZWZpbmUgICBVT1NfUlNBX1NDUkFUQ0hfTUFYX0NPVU5UCSAgNjQKPiAgICNk ZWZpbmUgRE1BX0FERFJfMF9MT1cJCQkweGMzMDAKPiAgICNkZWZpbmUgRE1BX0FERFJfMF9ISUdI CQkJMHhjMzA0Cj4gICAjZGVmaW5lIERNQV9BRERSXzFfTE9XCQkJMHhjMzA4Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwo+IGluZGV4IDAzNmI0MmIuLjU4YTYx YzQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lv bi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCj4g QEAgLTI3LDcgKzI3LDcgQEAKPiAgICNpbmNsdWRlICJpbnRlbF9ndWMuaCIKPgo+ICAgLyoqCj4g LSAqIERPQzogR3VDIENsaWVudAo+ICsgKiBET0M6IEd1Qy1iYXNlZCBjb21tYW5kIHN1Ym1pc3Np b24KPiAgICAqCj4gICAgKiBpOTE1X2d1Y19jbGllbnQ6Cj4gICAgKiBXZSB1c2UgdGhlIHRlcm0g Y2xpZW50IHRvIGF2b2lkIGNvbmZ1c2lvbiB3aXRoIGNvbnRleHRzLiBBIGk5MTVfZ3VjX2NsaWVu dCBpcwo+IEBAIC01ODgsOCArNTg4LDcgQEAgc3RhdGljIHZvaWQgbHJfY29udGV4dF91cGRhdGUo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKPiAgIC8qKgo+ICAgICogaTkxNV9ndWNf c3VibWl0KCkgLSBTdWJtaXQgY29tbWFuZHMgdGhyb3VnaCBHdUMKPiAgICAqIEBjbGllbnQ6CXRo ZSBndWMgY2xpZW50IHdoZXJlIGNvbW1hbmRzIHdpbGwgZ28gdGhyb3VnaAo+IC0gKiBAY3R4OglM UkMgd2hlcmUgY29tbWFuZHMgY29tZSBmcm9tCj4gLSAqIEByaW5nOglIVyBlbmdpbmUgdGhhdCB3 aWxsIGV4Y3V0ZSB0aGUgY29tbWFuZHMKPiArICogQHJxOgkJcmVxdWVzdCBhc3NvY2lhdGVkIHdp dGggdGhlIGNvbW1hbmRzCj4gICAgKgo+ICAgICogUmV0dXJuOgkwIGlmIHN1Y2NlZWQKPiAgICAq Lwo+IEBAIC03MzEsNyArNzMwLDggQEAgc3RhdGljIHZvaWQgZ3VjX2NsaWVudF9mcmVlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gICAgKiAJCVRoZSBrZXJuZWwgY2xpZW50IHRvIHJlcGxhY2Ug RXhlY0xpc3Qgc3VibWlzc2lvbiBpcyBjcmVhdGVkIHdpdGgKPiAgICAqIAkJTk9STUFMIHByaW9y aXR5LiBQcmlvcml0eSBvZiBhIGNsaWVudCBmb3Igc2NoZWR1bGVyIGNhbiBiZSBISUdILAo+ICAg ICogCQl3aGlsZSBhIHByZWVtcHRpb24gY29udGV4dCBjYW4gdXNlIENSSVRJQ0FMLgo+IC0gKiBA Y3R4CQl0aGUgY29udGV4dCB0byBvd24gdGhlIGNsaWVudCAod2UgdXNlIHRoZSBkZWZhdWx0IHJl bmRlciBjb250ZXh0KQo+ICsgKiBAY3R4Ogl0aGUgY29udGV4dCB0aGF0IG93bnMgdGhlIGNsaWVu dCAod2UgdXNlIHRoZSBkZWZhdWx0IHJlbmRlcgo+ICsgKiAJCWNvbnRleHQpCj4gICAgKgo+ICAg ICogUmV0dXJuOglBbiBpOTE1X2d1Y19jbGllbnQgb2JqZWN0IGlmIHN1Y2Nlc3MuCj4gICAgKi8K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAo+IGluZGV4IDA4MWQ1ZjYuLjViYTU4NjYgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAo+IEBAIC03NiwxMSArNzYsMTcgQEAgc3RydWN0IGlu dGVsX2d1Y19mdyB7Cj4gICAJdWludDE2X3QJCQlndWNfZndfbWlub3Jfd2FudGVkOwo+ICAgCXVp bnQxNl90CQkJZ3VjX2Z3X21ham9yX2ZvdW5kOwo+ICAgCXVpbnQxNl90CQkJZ3VjX2Z3X21pbm9y X2ZvdW5kOwo+ICsKPiArCXVpbnQzMl90IGhlYWRlcl9zaXplOwo+ICsJdWludDMyX3QgaGVhZGVy X29mZnNldDsKPiArCXVpbnQzMl90IHJzYV9zaXplOwo+ICsJdWludDMyX3QgcnNhX29mZnNldDsK PiArCXVpbnQzMl90IHVjb2RlX3NpemU7Cj4gKwl1aW50MzJfdCB1Y29kZV9vZmZzZXQ7Cj4gICB9 Owo+Cj4gICBzdHJ1Y3QgaW50ZWxfZ3VjIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3IGd1Y19m dzsKPiAtCj4gICAJdWludDMyX3QgbG9nX2ZsYWdzOwo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpsb2dfb2JqOwo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Y19md2lmLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfZndpZi5oCj4g aW5kZXggNTkzZDJmNS4uNDBiMmVhNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWNfZndpZi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X2Z3aWYuaAo+IEBAIC0xMjIsNiArMTIyLDc4IEBACj4KPiAgICNkZWZpbmUgR1VDX0NUTF9NQVhf RFdPUkRTCQkoR1VDX0NUTF9SU1JWRCArIDEpCj4KPiArLyoqCj4gKyAqIERPQzogR3VDIEZpcm13 YXJlIExheW91dAo+ICsgKgo+ICsgKiBUaGUgR3VDIGZpcm13YXJlIGxheW91dCBsb29rcyBsaWtl IHRoaXM6Cj4gKyAqCj4gKyAqICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK PiArICogICAgIHwgICAgICAgIGd1Y19jc3NfaGVhZGVyICAgICAgICAgfAo+ICsgKiAgICAgfCBj b250YWlucyBtYWpvci9taW5vciB2ZXJzaW9uICB8Cj4gKyAqICAgICArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsKPiArICogICAgIHwgICAgICAgICAgICAgdUNvZGUgICAgICAgICAg ICAgfAo+ICsgKiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqICAg ICB8ICAgICAgICAgUlNBIHNpZ25hdHVyZSAgICAgICAgIHwKPiArICogICAgICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwo+ICsgKiAgICAgfCAgICAgICAgICBtb2R1bHVzIGtleSAg ICAgICAgICB8Cj4gKyAqICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKPiAr ICogICAgIHwgICAgICAgICAgZXhwb25lbnQgdmFsICAgICAgICAgfAo+ICsgKiAgICAgKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4gKyAqCj4gKyAqIFRoZSBmaXJtd2FyZSBtYXkg b3IgbWF5IG5vdCBoYXZlIG1vZHVsdXMga2V5IGFuZCBleHBvbmVudCBkYXRhLiBUaGUgaGVhZGVy LAo+ICsgKiB1Q29kZSBhbmQgUlNBIHNpZ25hdHVyZSBhcmUgbXVzdC1oYXZlIGNvbXBvbmVudHMg dGhhdCB3aWxsIGJlIHVzZWQgYnkgZHJpdmVyLgo+ICsgKiBMZW5ndGggb2YgZWFjaCBjb21wb25l bnRzLCB3aGljaCBpcyBhbGwgaW4gZHdvcmRzLCBjYW4gYmUgZm91bmQgaW4gaGVhZGVyLgo+ICsg KiBJbiB0aGUgY2FzZSB0aGF0IG1vZHVsdXMgYW5kIGV4cG9uZW50IGFyZSBub3QgcHJlc2VudCBp biBmdywgYS5rLmEgdHJ1bmNhdGVkCj4gKyAqIGltYWdlLCB0aGUgbGVuZ3RoIHZhbHVlIHN0aWxs IGFwcGVhcnMgaW4gaGVhZGVyLgo+ICsgKgo+ICsgKiBEcml2ZXIgd2lsbCBkbyBzb21lIGJhc2lj IGZ3IHNpemUgdmFsaWRhdGlvbiBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIHJ1bGVzOgo+ICsgKgo+ ICsgKiAxLiBIZWFkZXIsIHVDb2RlIGFuZCBSU0EgYXJlIG11c3QtaGF2ZSBjb21wb25lbnRzLgo+ ICsgKiAyLiBBbGwgZmlybXdhcmUgY29tcG9uZW50cywgaWYgdGhleSBwcmVzZW50LCBhcmUgaW4g dGhlIHNlcXVlbmNlIGlsbHVzdHJhdGVkCj4gKyAqIGluIHRoZSBsYXlvdXQgdGFibGUgYWJvdmUu Cj4gKyAqIDMuIExlbmd0aCBpbmZvIG9mIGVhY2ggY29tcG9uZW50IGNhbiBiZSBmb3VuZCBpbiBo ZWFkZXIsIGluIGR3b3Jkcy4KPiArICogNC4gTW9kdWx1cyBhbmQgZXhwb25lbnQga2V5IGFyZSBu b3QgcmVxdWlyZWQgYnkgZHJpdmVyLiBUaGV5IG1heSBub3QgYXBwZWFyCj4gKyAqIGluIGZ3LiBT byBkcml2ZXIgd2lsbCBsb2FkIGEgdHJ1bmNhdGVkIGZpcm13YXJlIGluIHRoaXMgY2FzZS4KPiAr ICovCj4gKwo+ICtzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIgewo+ICsJdWludDMyX3QgbW9kdWxlX3R5 cGU7Cj4gKwkvKiBoZWFkZXJfc2l6ZSBpbmNsdWRlcyBhbGwgbm9uLXVDb2RlIGJpdHMsIGluY2x1 ZGluZyBjc3NfaGVhZGVyLCByc2EKPiArCSAqIGtleSwgbW9kdWx1cyBrZXkgYW5kIGV4cG9uZW50 IGRhdGEuICovCj4gKwl1aW50MzJfdCBoZWFkZXJfc2l6ZV9kdzsKPiArCXVpbnQzMl90IGhlYWRl cl92ZXJzaW9uOwo+ICsJdWludDMyX3QgbW9kdWxlX2lkOwo+ICsJdWludDMyX3QgbW9kdWxlX3Zl bmRvcjsKPiArCXVuaW9uIHsKPiArCQlzdHJ1Y3Qgewo+ICsJCQl1aW50OF90IGRheTsKPiArCQkJ dWludDhfdCBtb250aDsKPiArCQkJdWludDE2X3QgeWVhcjsKPiArCQl9Owo+ICsJCXVpbnQzMl90 IGRhdGU7Cj4gKwl9Owo+ICsJdWludDMyX3Qgc2l6ZV9kdzsgLyogdUNvZGUgcGx1cyBoZWFkZXJf c2l6ZV9kdyAqLwo+ICsJdWludDMyX3Qga2V5X3NpemVfZHc7Cj4gKwl1aW50MzJfdCBtb2R1bHVz X3NpemVfZHc7Cj4gKwl1aW50MzJfdCBleHBvbmVudF9zaXplX2R3Owo+ICsJdW5pb24gewo+ICsJ CXN0cnVjdCB7Cj4gKwkJCXVpbnQ4X3QgaG91cjsKPiArCQkJdWludDhfdCBtaW47Cj4gKwkJCXVp bnQxNl90IHNlYzsKPiArCQl9Owo+ICsJCXVpbnQzMl90IHRpbWU7Cj4gKwl9Owo+ICsKPiArCWNo YXIgdXNlcm5hbWVbOF07Cj4gKwljaGFyIGJ1aWxkbnVtYmVyWzEyXTsKPiArCXVpbnQzMl90IGRl dmljZV9pZDsKPiArCXVpbnQzMl90IGd1Y19zd192ZXJzaW9uOwo+ICsJdWludDMyX3QgcHJvZF9w cmVwcm9kX2Z3Owo+ICsJdWludDMyX3QgcmVzZXJ2ZWRbMTJdOwo+ICsJdWludDMyX3QgaGVhZGVy X2luZm87Cj4gK30gX19wYWNrZWQ7Cj4gKwo+ICAgc3RydWN0IGd1Y19kb29yYmVsbF9pbmZvIHsK PiAgIAl1MzIgZGJfc3RhdHVzOwo+ICAgCXUzMiBjb29raWU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19sb2FkZXIuYwo+IGluZGV4IGExN2I2YTUuLjYxMmVhZDcgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCj4gQEAgLTMxLDcgKzMxLDcgQEAKPiAg ICNpbmNsdWRlICJpbnRlbF9ndWMuaCIKPgo+ICAgLyoqCj4gLSAqIERPQzogR3VDCj4gKyAqIERP QzogR3VDLXNwZWNpZmljIGZpcm13YXJlIGxvYWRlcgo+ICAgICoKPiAgICAqIGludGVsX2d1YzoK PiAgICAqIFRvcCBsZXZlbCBzdHJ1Y3R1cmUgb2YgZ3VjLiBJdCBoYW5kbGVzIGZpcm13YXJlIGxv YWRpbmcgYW5kIG1hbmFnZXMgY2xpZW50Cj4gQEAgLTIwOCwxNiArMjA4LDYgQEAgc3RhdGljIGlu bGluZSBib29sIGd1Y191Y29kZV9yZXNwb25zZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gICAvKgo+ICAgICogVHJhbnNmZXIgdGhlIGZpcm13YXJlIGltYWdlIHRvIFJBTSBm b3IgZXhlY3V0aW9uIGJ5IHRoZSBtaWNyb2NvbnRyb2xsZXIuCj4gICAgKgo+IC0gKiBHdUMgRmly bXdhcmUgbGF5b3V0Ogo+IC0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgIC0t LS0KPiAtICogfCAgICAgICAgICBDU1MgaGVhZGVyICAgICAgICAgICB8ICAxMjhCCj4gLSAqIHwg Y29udGFpbnMgbWFqb3IvbWlub3IgdmVyc2lvbiAgfAo+IC0gKiArLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSsgIC0tLS0KPiAtICogfCAgICAgICAgICAgICB1Q29kZSAgICAgICAgICAg ICB8Cj4gLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgLS0tLQo+IC0gKiB8 ICAgICAgICAgUlNBIHNpZ25hdHVyZSAgICAgICAgIHwgIDI1NkIKPiAtICogKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rICAtLS0tCj4gLSAqCj4gICAgKiBBcmNoaXRlY3R1cmFsbHks IHRoZSBETUEgZW5naW5lIGlzIGJpZGlyZWN0aW9uYWwsIGFuZCBjYW4gcG90ZW50aWFsbHkgZXZl bgo+ICAgICogdHJhbnNmZXIgYmV0d2VlbiBHVFQgbG9jYXRpb25zLiBUaGlzIGZ1bmN0aW9uYWxp dHkgaXMgbGVmdCBvdXQgb2YgdGhlIEFQSQo+ICAgICogZm9yIG5vdyBhcyB0aGVyZSBpcyBubyBu ZWVkIGZvciBpdC4KPiBAQCAtMjI1LDMzICsyMTUsMjkgQEAgc3RhdGljIGlubGluZSBib29sIGd1 Y191Y29kZV9yZXNwb25zZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAg KiBOb3RlIHRoYXQgR3VDIG5lZWRzIHRoZSBDU1MgaGVhZGVyIHBsdXMgdUtlcm5lbCBjb2RlIHRv IGJlIGNvcGllZCBieSB0aGUKPiAgICAqIERNQSBlbmdpbmUgaW4gb25lIG9wZXJhdGlvbiwgd2hl cmVhcyB0aGUgUlNBIHNpZ25hdHVyZSBpcyBsb2FkZWQgdmlhIE1NSU8uCj4gICAgKi8KPiAtCj4g LSNkZWZpbmUgVU9TX0NTU19IRUFERVJfT0ZGU0VUCQkwCj4gLSNkZWZpbmUgVU9TX1ZFUl9NSU5P Ul9PRkZTRVQJCTB4NDQKPiAtI2RlZmluZSBVT1NfVkVSX01BSk9SX09GRlNFVAkJMHg0Ngo+IC0j ZGVmaW5lIFVPU19DU1NfSEVBREVSX1NJWkUJCTB4ODAKPiAtI2RlZmluZSBVT1NfUlNBX1NJR19T SVpFCQkweDEwMAo+IC0KPiAgIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3 ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKmZ3X29iaiA9IGd1Y19mdy0+Z3VjX2Z3X29iajsKPiAgIAl1bnNpZ25lZCBsb25n IG9mZnNldDsKPiAgIAlzdHJ1Y3Qgc2dfdGFibGUgKnNnID0gZndfb2JqLT5wYWdlczsKPiAtCXUz MiBzdGF0dXMsIHVjb2RlX3NpemUsIHJzYVtVT1NfUlNBX1NJR19TSVpFIC8gc2l6ZW9mKHUzMild Owo+ICsJdTMyIHN0YXR1cywgcnNhW1VPU19SU0FfU0NSQVRDSF9NQVhfQ09VTlRdOwo+ICAgCWlu dCBpLCByZXQgPSAwOwo+Cj4gLQkvKiB1Q29kZSBzaXplLCBhbHNvIGlzIHdoZXJlIFJTQSBzaWdu YXR1cmUgc3RhcnRzICovCj4gLQlvZmZzZXQgPSB1Y29kZV9zaXplID0gZ3VjX2Z3LT5ndWNfZndf c2l6ZSAtIFVPU19SU0FfU0lHX1NJWkU7Cj4gLQlJOTE1X1dSSVRFKERNQV9DT1BZX1NJWkUsIHVj b2RlX3NpemUpOwo+ICsJLyogd2hlcmUgUlNBIHNpZ25hdHVyZSBzdGFydHMgKi8KPiArCW9mZnNl dCA9IGd1Y19mdy0+cnNhX29mZnNldDsKPgo+ICAgCS8qIENvcHkgUlNBIHNpZ25hdHVyZSBmcm9t IHRoZSBmdyBpbWFnZSB0byBIVyBmb3IgdmVyaWZpY2F0aW9uICovCj4gLQlzZ19wY29weV90b19i dWZmZXIoc2ctPnNnbCwgc2ctPm5lbnRzLCByc2EsIFVPU19SU0FfU0lHX1NJWkUsIG9mZnNldCk7 Cj4gLQlmb3IgKGkgPSAwOyBpIDwgVU9TX1JTQV9TSUdfU0laRSAvIHNpemVvZih1MzIpOyBpKysp Cj4gKwlzZ19wY29weV90b19idWZmZXIoc2ctPnNnbCwgc2ctPm5lbnRzLCByc2EsIHNpemVvZihy c2EpLCBvZmZzZXQpOwo+ICsJZm9yIChpID0gMDsgaSA8IFVPU19SU0FfU0NSQVRDSF9NQVhfQ09V TlQ7IGkrKykKPiAgIAkJSTkxNV9XUklURShVT1NfUlNBX1NDUkFUQ0goaSksIHJzYVtpXSk7Cj4K PiArCS8qIFRoZSBoZWFkZXIgcGx1cyB1Q29kZSB3aWxsIGJlIGNvcGllZCB0byBXT1BDTSB2aWEg RE1BLCBleGNsdWRpbmcgYW55Cj4gKwkgKiBvdGhlciBjb21wb25lbnRzICovCj4gKwlJOTE1X1dS SVRFKERNQV9DT1BZX1NJWkUsIGd1Y19mdy0+aGVhZGVyX3NpemUgKyBndWNfZnctPnVjb2RlX3Np emUpOwo+ICsKPiAgIAkvKiBTZXQgdGhlIHNvdXJjZSBhZGRyZXNzIGZvciB0aGUgbmV3IGJsb2Ig Ki8KPiAtCW9mZnNldCA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChmd19vYmopOwo+ICsJb2Zm c2V0ID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KGZ3X29iaikgKyBndWNfZnctPmhlYWRlcl9v ZmZzZXQ7Cj4gICAJSTkxNV9XUklURShETUFfQUREUl8wX0xPVywgbG93ZXJfMzJfYml0cyhvZmZz ZXQpKTsKPiAgIAlJOTE1X1dSSVRFKERNQV9BRERSXzBfSElHSCwgdXBwZXJfMzJfYml0cyhvZmZz ZXQpICYgMHhGRkZGKTsKPgo+IEBAIC00NTcsMTAgKzQ0Myw4IEBAIHN0YXRpYyB2b2lkIGd1Y19m d19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNf ZncpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiAgIAljb25z dCBzdHJ1Y3QgZmlybXdhcmUgKmZ3Owo+IC0JY29uc3QgdTggKmNzc19oZWFkZXI7Cj4gLQljb25z dCBzaXplX3QgbWluc2l6ZSA9IFVPU19DU1NfSEVBREVSX1NJWkUgKyBVT1NfUlNBX1NJR19TSVpF Owo+IC0JY29uc3Qgc2l6ZV90IG1heHNpemUgPSBHVUNfV09QQ01fU0laRV9WQUxVRSArIFVPU19S U0FfU0lHX1NJWkUKPiAtCQkJLSAweDgwMDA7IC8qIDMyayByZXNlcnZlZCAoOEsgc3RhY2sgKyAy NGsgY29udGV4dCkgKi8KPiArCXN0cnVjdCBndWNfY3NzX2hlYWRlciAqY3NzOwo+ICsJc2l6ZV90 IHNpemU7Cj4gICAJaW50IGVycjsKPgo+ICAgCURSTV9ERUJVR19EUklWRVIoImJlZm9yZSByZXF1 ZXN0aW5nIGZpcm13YXJlOiBHdUMgZncgZmV0Y2ggc3RhdHVzICVzXG4iLAo+IEBAIC00NzQsMTIg KzQ1OCw1MiBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQo+Cj4gICAJRFJNX0RFQlVHX0RSSVZFUigi ZmV0Y2ggR3VDIGZ3IGZyb20gJXMgc3VjY2VlZGVkLCBmdyAlcFxuIiwKPiAgIAkJZ3VjX2Z3LT5n dWNfZndfcGF0aCwgZncpOwo+IC0JRFJNX0RFQlVHX0RSSVZFUigiZmlybXdhcmUgZmlsZSBzaXpl ICV6dSAobWluaW11bSAlenUsIG1heGltdW0gJXp1KVxuIiwKPiAtCQlmdy0+c2l6ZSwgbWluc2l6 ZSwgbWF4c2l6ZSk7Cj4KPiAtCS8qIENoZWNrIHRoZSBzaXplIG9mIHRoZSBibG9iIGJlZm9lIGV4 YW1pbmluZyBidWZmZXIgY29udGVudHMgKi8KPiAtCWlmIChmdy0+c2l6ZSA8IG1pbnNpemUgfHwg ZnctPnNpemUgPiBtYXhzaXplKQo+ICsJLyogQ2hlY2sgdGhlIHNpemUgb2YgdGhlIGJsb2IgYmVm b3JlIGV4YW1pbmluZyBidWZmZXIgY29udGVudHMgKi8KPiArCWlmIChmdy0+c2l6ZSA8IHNpemVv ZihzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKSB7Cj4gKwkJRFJNX0VSUk9SKCJGaXJtd2FyZSBoZWFk ZXIgaXMgbWlzc2luZ1xuIik7Cj4gICAJCWdvdG8gZmFpbDsKPiArCX0KPiArCj4gKwljc3MgPSAo c3RydWN0IGd1Y19jc3NfaGVhZGVyICopZnctPmRhdGE7Cj4gKwo+ICsJLyogRmlybXdhcmUgYml0 cyBhbHdheXMgc3RhcnQgZnJvbSBoZWFkZXIgKi8KPiArCWd1Y19mdy0+aGVhZGVyX29mZnNldCA9 IDA7Cj4gKwlndWNfZnctPmhlYWRlcl9zaXplID0gKGNzcy0+aGVhZGVyX3NpemVfZHcgLSBjc3Mt Pm1vZHVsdXNfc2l6ZV9kdyAtCj4gKwkJY3NzLT5rZXlfc2l6ZV9kdyAtIGNzcy0+ZXhwb25lbnRf c2l6ZV9kdykgKiBzaXplb2YodTMyKTsKPiArCj4gKwlpZiAoZ3VjX2Z3LT5oZWFkZXJfc2l6ZSAh PSBzaXplb2Yoc3RydWN0IGd1Y19jc3NfaGVhZGVyKSkgewo+ICsJCURSTV9FUlJPUigiQ1NTIGhl YWRlciBkZWZpbml0aW9uIG1pc21hdGNoXG4iKTsKPiArCQlnb3RvIGZhaWw7Cj4gKwl9Cj4gKwo+ ICsJLyogdGhlbiwgdUNvZGUgKi8KPiArCWd1Y19mdy0+dWNvZGVfb2Zmc2V0ID0gZ3VjX2Z3LT5o ZWFkZXJfb2Zmc2V0ICsgZ3VjX2Z3LT5oZWFkZXJfc2l6ZTsKPiArCWd1Y19mdy0+dWNvZGVfc2l6 ZSA9IChjc3MtPnNpemVfZHcgLSBjc3MtPmhlYWRlcl9zaXplX2R3KSAqIHNpemVvZih1MzIpOwo+ ICsKPiArCS8qIG5vdyBSU0EgKi8KPiArCWlmIChjc3MtPmtleV9zaXplX2R3ICE9IFVPU19SU0Ff U0NSQVRDSF9NQVhfQ09VTlQpIHsKPiArCQlEUk1fRVJST1IoIlJTQSBrZXkgc2l6ZSBpcyBiYWRc biIpOwo+ICsJCWdvdG8gZmFpbDsKPiArCX0KPiArCWd1Y19mdy0+cnNhX29mZnNldCA9IGd1Y19m dy0+dWNvZGVfb2Zmc2V0ICsgZ3VjX2Z3LT51Y29kZV9zaXplOwo+ICsJZ3VjX2Z3LT5yc2Ffc2l6 ZSA9IGNzcy0+a2V5X3NpemVfZHcgKiBzaXplb2YodTMyKTsKPiArCj4gKwkvKiBBdCBsZWFzdCwg aXQgc2hvdWxkIGhhdmUgaGVhZGVyLCB1Q29kZSBhbmQgUlNBLiBTaXplIG9mIGFsbCB0aHJlZS4g Ki8KPiArCXNpemUgPSBndWNfZnctPmhlYWRlcl9zaXplICsgZ3VjX2Z3LT51Y29kZV9zaXplICsg Z3VjX2Z3LT5yc2Ffc2l6ZTsKPiArCWlmIChmdy0+c2l6ZSA8IHNpemUpIHsKPiArCQlEUk1fRVJS T1IoIk1pc3NpbmcgZmlybXdhcmUgY29tcG9uZW50c1xuIik7Cj4gKwkJZ290byBmYWlsOwo+ICsJ fQo+ICsKPiArCS8qIEhlYWRlciBhbmQgdUNvZGUgd2lsbCBiZSBsb2FkZWQgdG8gV09QQ00uIFNp emUgb2YgdGhlIHR3by4gKi8KPiArCXNpemUgPSBndWNfZnctPmhlYWRlcl9zaXplICsgZ3VjX2Z3 LT51Y29kZV9zaXplOwo+ICsKPiArCS8qIFRvcCAzMmsgb2YgV09QQ00gaXMgcmVzZXJ2ZWQgKDhL IHN0YWNrICsgMjRrIFJDNiBjb250ZXh0KS4gKi8KPiArCWlmIChzaXplID4gR1VDX1dPUENNX1NJ WkVfVkFMVUUgLSAweDgwMDApIHsKPiArCQlEUk1fRVJST1IoIkZpcm13YXJlIGlzIHRvbyBsYXJn ZSB0byBmaXQgaW4gV09QQ01cbiIpOwo+ICsJCWdvdG8gZmFpbDsKPiArCX0KPgo+ICAgCS8qCj4g ICAJICogVGhlIEd1QyBmaXJtd2FyZSBpbWFnZSBoYXMgdGhlIHZlcnNpb24gbnVtYmVyIGVtYmVk ZGVkIGF0IGEgd2VsbC1rbm93bgo+IEBAIC00ODcsOSArNTExLDggQEAgc3RhdGljIHZvaWQgZ3Vj X2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1 Y19mdykKPiAgIAkgKiBUV08gYnl0ZXMgZWFjaCAoaS5lLiB1MTYpLCBhbHRob3VnaCBhbGwgcG9p bnRlcnMgYW5kIG9mZnNldHMgYXJlIGRlZmluZWQKPiAgIAkgKiBpbiB0ZXJtcyBvZiBieXRlcyAo dTgpLgo+ICAgCSAqLwo+IC0JY3NzX2hlYWRlciA9IGZ3LT5kYXRhICsgVU9TX0NTU19IRUFERVJf T0ZGU0VUOwo+IC0JZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQgPSAqKHUxNiAqKShjc3NfaGVh ZGVyICsgVU9TX1ZFUl9NQUpPUl9PRkZTRVQpOwo+IC0JZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91 bmQgPSAqKHUxNiAqKShjc3NfaGVhZGVyICsgVU9TX1ZFUl9NSU5PUl9PRkZTRVQpOwo+ICsJZ3Vj X2Z3LT5ndWNfZndfbWFqb3JfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uID4+IDE2Owo+ICsJ Z3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uICYgMHhGRkZG Owo+Cj4gICAJaWYgKGd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kICE9IGd1Y19mdy0+Z3VjX2Z3 X21ham9yX3dhbnRlZCB8fAo+ICAgCSAgICBndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCA8IGd1 Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCkgewo+CgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=