From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 1/3] drm/i915: Add enum aux_ch and clean up the aux init to use it Date: Thu, 22 Feb 2018 18:29:07 +0200 Message-ID: <20180222162907.GA5453@intel.com> References: <20180220170524.12303-1-ville.syrjala@linux.intel.com> <20180220193109.GE27433@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7649D6EE81 for ; Thu, 22 Feb 2018 16:29:10 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180220193109.GE27433@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBGZWIgMjAsIDIwMTggYXQgMTE6MzE6MDlBTSAtMDgwMCwgUm9kcmlnbyBWaXZpIHdy b3RlOgo+IE9uIFR1ZSwgRmViIDIwLCAyMDE4IGF0IDA3OjA1OjIyUE0gKzAyMDAsIFZpbGxlIFN5 cmphbGEgd3JvdGU6Cj4gPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGlu dXguaW50ZWwuY29tPgo+ID4gCj4gPiBTaW5jZSB3ZSBubyBsb25nZXIgaGF2ZSBhIDE6MSBjb3Jy ZXNwb25kZW5jZSBiZXR3ZWVuIHBvcnRzIGFuZCBBVVgKPiA+IGNoYW5uZWxzLCBsZXQncyBnaXZl IEFVWCBjaGFubmVscyB0aGVpciBvd24gZW51bS4gTWFrZXMgaXQgZWFzaWVyCj4gPiB0byB0ZWxs IHRoZSBhcHBsZXMgZnJvbSB0aGUgb3JhbmdlcywgYW5kIHdlIGdldCByaWQgb2YgdGhlCj4gPiBw b3J0IEUgQVVYIHBvd2VyIGRvbWFpbiBGSVhNRSBzaW5jZSB3ZSBub3cgZGVyaXZlIHRoZSBwb3dl ciBkb21haW4KPiA+IGZyb20gdGhlIGFjdHVhbCBBVVggQ0guCj4gCj4gCj4gQmVhdXRpZnVsIGNs ZWFuLXVwLiBJIGhhZCB0aGlzIGluIGEgdG9kbyBsaXN0IHllYXJzIGFnbyBhbmQKPiBhZnRlciBz dGF5aW5nIG9uIHRoZSBib3R0b20gZm9yIHNvIGxvbmcgSSBoYWQgcmVtb3ZlZCBpdCBmcm9tIHRo ZXJlLi4uCj4gPiAKPiA+IHYyOiBSZWJhc2UgZHVlIHRvIEFVWCBGCj4gCj4gc29ycnkgYW5kIHRo YW5rcyEgOikKPiAKPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxs ZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiAKPiBJIHdvbmRlcmVkIGlmIGF0IGxlYXN0IGF1 eF9wb3dlcl9kb21haW4gcGFydCBjb3VsZCBiZSBpbiBhCj4gc2VwYXJhdGVkIHBhdGNoIGJlY2F1 c2UgYnkgdGhlIGVuZCBJIHdhcyBhIGJpdCBjb25mdXNlZC4uLgo+IEJ1dCBpbiB0aGUgZW5kIEkg Y291bGQgcHV0IGFsbCBwaWVjZXMgdG9nZXRoZXIgYW5kIGl0IG1hZGUgc2Vuc2UKPiBhZ2Fpbi4g U28gb25lIHBhdGNoIGZvciBlYXN5IGJhY2sgcG9ydGluZyBzZWVtcyBiZXR0ZXIuCgpJIHN1cHBv c2Ugd2UgbWlnaHQgd2FudCB0byBiYWNrcG9ydCBqdXN0IHRoZSBwb3dlcl9kb21haW4gZml4LgpT byBtaWdodCBiZSB3b3J0aCBleHRyYWN0aW5nIHRoYXQgaW50byBhIHNlcGFyYXRlIHBhdGNoLiBT aG91bGQKYmUgYSBzaW1wbGUgbWF0dGVyIG9mIHMvZW5jb2Rlci0+cG9ydC9pbnRlbF9kcF9hdXhf cG9ydCgpLwoKPiAKPiBSZXZpZXdlZC1ieTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50 ZWwuY29tPgo+IAo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAg ICAgIHwgICA4ICstCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5oIHwg IDExICsrCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgIHwgMjQwICsr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggICAgIHwgICAxICsKPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDEzMSBpbnNl cnRpb25zKCspLCAxMjkgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aAo+ID4gaW5kZXggMTQxMmFiY2IyN2Q0Li4zOWQ2MjQwODNhMTcgMTAwNjQ0Cj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oCj4gPiBAQCAtNTM0Nyw4ICs1MzQ3LDggQEAgZW51bSB7Cj4gPiAgI2Rl ZmluZSBfRFBGX0FVWF9DSF9EQVRBNAkoZGV2X3ByaXYtPmluZm8uZGlzcGxheV9tbWlvX29mZnNl dCArIDB4NjQ1MjApCj4gPiAgI2RlZmluZSBfRFBGX0FVWF9DSF9EQVRBNQkoZGV2X3ByaXYtPmlu Zm8uZGlzcGxheV9tbWlvX29mZnNldCArIDB4NjQ1MjQpCj4gPiAgCj4gPiAtI2RlZmluZSBEUF9B VVhfQ0hfQ1RMKHBvcnQpCV9NTUlPX1BPUlQocG9ydCwgX0RQQV9BVVhfQ0hfQ1RMLCBfRFBCX0FV WF9DSF9DVEwpCj4gPiAtI2RlZmluZSBEUF9BVVhfQ0hfREFUQShwb3J0LCBpKQlfTU1JTyhfUE9S VChwb3J0LCBfRFBBX0FVWF9DSF9EQVRBMSwgX0RQQl9BVVhfQ0hfREFUQTEpICsgKGkpICogNCkg LyogNSByZWdpc3RlcnMgKi8KPiA+ICsjZGVmaW5lIERQX0FVWF9DSF9DVEwoYXV4X2NoKQlfTU1J T19QT1JUKGF1eF9jaCwgX0RQQV9BVVhfQ0hfQ1RMLCBfRFBCX0FVWF9DSF9DVEwpCj4gPiArI2Rl ZmluZSBEUF9BVVhfQ0hfREFUQShhdXhfY2gsIGkpCV9NTUlPKF9QT1JUKGF1eF9jaCwgX0RQQV9B VVhfQ0hfREFUQTEsIF9EUEJfQVVYX0NIX0RBVEExKSArIChpKSAqIDQpIC8qIDUgcmVnaXN0ZXJz ICovCj4gPiAgCj4gPiAgI2RlZmluZSAgIERQX0FVWF9DSF9DVExfU0VORF9CVVNZCSAgICAoMSA8 PCAzMSkKPiA+ICAjZGVmaW5lICAgRFBfQVVYX0NIX0NUTF9ET05FCQkgICAgKDEgPDwgMzApCj4g PiBAQCAtNzg3NSw4ICs3ODc1LDggQEAgZW51bSB7Cj4gPiAgI2RlZmluZSBfUENIX0RQRF9BVVhf Q0hfREFUQTQJMHhlNDMyMAo+ID4gICNkZWZpbmUgX1BDSF9EUERfQVVYX0NIX0RBVEE1CTB4ZTQz MjQKPiA+ICAKPiA+IC0jZGVmaW5lIFBDSF9EUF9BVVhfQ0hfQ1RMKHBvcnQpCQlfTU1JT19QT1JU KChwb3J0KSAtIFBPUlRfQiwgX1BDSF9EUEJfQVVYX0NIX0NUTCwgX1BDSF9EUENfQVVYX0NIX0NU TCkKPiA+IC0jZGVmaW5lIFBDSF9EUF9BVVhfQ0hfREFUQShwb3J0LCBpKQlfTU1JTyhfUE9SVCgo cG9ydCkgLSBQT1JUX0IsIF9QQ0hfRFBCX0FVWF9DSF9EQVRBMSwgX1BDSF9EUENfQVVYX0NIX0RB VEExKSArIChpKSAqIDQpIC8qIDUgcmVnaXN0ZXJzICovCj4gPiArI2RlZmluZSBQQ0hfRFBfQVVY X0NIX0NUTChhdXhfY2gpCQlfTU1JT19QT1JUKChhdXhfY2gpIC0gQVVYX0NIX0IsIF9QQ0hfRFBC X0FVWF9DSF9DVEwsIF9QQ0hfRFBDX0FVWF9DSF9DVEwpCj4gPiArI2RlZmluZSBQQ0hfRFBfQVVY X0NIX0RBVEEoYXV4X2NoLCBpKQlfTU1JTyhfUE9SVCgoYXV4X2NoKSAtIEFVWF9DSF9CLCBfUENI X0RQQl9BVVhfQ0hfREFUQTEsIF9QQ0hfRFBDX0FVWF9DSF9EQVRBMSkgKyAoaSkgKiA0KSAvKiA1 IHJlZ2lzdGVycyAqLwo+ID4gIAo+ID4gIC8qIENQVCAqLwo+ID4gICNkZWZpbmUgIFBPUlRfVFJB TlNfQV9TRUxfQ1BUCTAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmgKPiA+IGlu ZGV4IGM0MDQyZTM0MmY1MC4uZjU3MzNhMjU3NmU3IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmgKPiA+IEBAIC0xMzksNiArMTM5LDE3IEBAIGVudW0gZHBpb19waHkg ewo+ID4gIAo+ID4gICNkZWZpbmUgSTkxNV9OVU1fUEhZU19WTFYgMgo+ID4gIAo+ID4gK2VudW0g YXV4X2NoIHsKPiA+ICsJQVVYX0NIX0EsCj4gPiArCUFVWF9DSF9CLAo+ID4gKwlBVVhfQ0hfQywK PiA+ICsJQVVYX0NIX0QsCj4gPiArCV9BVVhfQ0hfRSwgLyogZG9lcyBub3QgZXhpc3QgKi8KPiA+ ICsJQVVYX0NIX0YsCj4gPiArfTsKPiA+ICsKPiA+ICsjZGVmaW5lIGF1eF9jaF9uYW1lKGEpICgo YSkgKyAnQScpCj4gPiArCj4gPiAgZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiB7Cj4g PiAgCVBPV0VSX0RPTUFJTl9QSVBFX0EsCj4gPiAgCVBPV0VSX0RPTUFJTl9QSVBFX0IsCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+IGluZGV4IGYyMGIyNWY5OGU1YS4uZWViOGEwMjZmZDA4 IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gQEAgLTEzMzEsMTcxICsxMzMx LDE5NCBAQCBpbnRlbF9kcF9hdXhfdHJhbnNmZXIoc3RydWN0IGRybV9kcF9hdXggKmF1eCwgc3Ry dWN0IGRybV9kcF9hdXhfbXNnICptc2cpCj4gPiAgCXJldHVybiByZXQ7Cj4gPiAgfQo+ID4gIAo+ ID4gLXN0YXRpYyBlbnVtIHBvcnQgaW50ZWxfYXV4X3BvcnQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ID4gLQkJCQllbnVtIHBvcnQgcG9ydCkKPiA+ICtzdGF0aWMgZW51bSBh dXhfY2ggaW50ZWxfYXV4X2NoKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiAgewo+ID4g KwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9ICZkcF90b19kaWdfcG9ydChpbnRlbF9k cCktPmJhc2U7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ID4gKwllbnVtIHBvcnQgcG9ydCA9IGVuY29kZXItPnBv cnQ7Cj4gPiAgCWNvbnN0IHN0cnVjdCBkZGlfdmJ0X3BvcnRfaW5mbyAqaW5mbyA9Cj4gPiAgCQkm ZGV2X3ByaXYtPnZidC5kZGlfcG9ydF9pbmZvW3BvcnRdOwo+ID4gLQllbnVtIHBvcnQgYXV4X3Bv cnQ7Cj4gPiArCWVudW0gYXV4X2NoIGF1eF9jaDsKPiA+ICAKPiA+ICAJaWYgKCFpbmZvLT5hbHRl cm5hdGVfYXV4X2NoYW5uZWwpIHsKPiA+ICsJCWF1eF9jaCA9IChlbnVtIGF1eF9jaCkgcG9ydDsK PiA+ICsKPiA+ICAJCURSTV9ERUJVR19LTVMoInVzaW5nIEFVWCAlYyBmb3IgcG9ydCAlYyAocGxh dGZvcm0gZGVmYXVsdClcbiIsCj4gPiAtCQkJICAgICAgcG9ydF9uYW1lKHBvcnQpLCBwb3J0X25h bWUocG9ydCkpOwo+ID4gLQkJcmV0dXJuIHBvcnQ7Cj4gPiArCQkJICAgICAgYXV4X2NoX25hbWUo YXV4X2NoKSwgcG9ydF9uYW1lKHBvcnQpKTsKPiA+ICsJCXJldHVybiBhdXhfY2g7Cj4gPiAgCX0K PiA+ICAKPiA+ICAJc3dpdGNoIChpbmZvLT5hbHRlcm5hdGVfYXV4X2NoYW5uZWwpIHsKPiA+ICAJ Y2FzZSBEUF9BVVhfQToKPiA+IC0JCWF1eF9wb3J0ID0gUE9SVF9BOwo+ID4gKwkJYXV4X2NoID0g QVVYX0NIX0E7Cj4gPiAgCQlicmVhazsKPiA+ICAJY2FzZSBEUF9BVVhfQjoKPiA+IC0JCWF1eF9w b3J0ID0gUE9SVF9COwo+ID4gKwkJYXV4X2NoID0gQVVYX0NIX0I7Cj4gPiAgCQlicmVhazsKPiA+ ICAJY2FzZSBEUF9BVVhfQzoKPiA+IC0JCWF1eF9wb3J0ID0gUE9SVF9DOwo+ID4gKwkJYXV4X2No ID0gQVVYX0NIX0M7Cj4gPiAgCQlicmVhazsKPiA+ICAJY2FzZSBEUF9BVVhfRDoKPiA+IC0JCWF1 eF9wb3J0ID0gUE9SVF9EOwo+ID4gKwkJYXV4X2NoID0gQVVYX0NIX0Q7Cj4gPiAgCQlicmVhazsK PiA+ICAJY2FzZSBEUF9BVVhfRjoKPiA+IC0JCWF1eF9wb3J0ID0gUE9SVF9GOwo+ID4gKwkJYXV4 X2NoID0gQVVYX0NIX0Y7Cj4gPiAgCQlicmVhazsKPiA+ICAJZGVmYXVsdDoKPiA+ICAJCU1JU1NJ TkdfQ0FTRShpbmZvLT5hbHRlcm5hdGVfYXV4X2NoYW5uZWwpOwo+ID4gLQkJYXV4X3BvcnQgPSBQ T1JUX0E7Cj4gPiArCQlhdXhfY2ggPSBBVVhfQ0hfQTsKPiA+ICAJCWJyZWFrOwo+ID4gIAl9Cj4g PiAgCj4gPiAgCURSTV9ERUJVR19LTVMoInVzaW5nIEFVWCAlYyBmb3IgcG9ydCAlYyAoVkJUKVxu IiwKPiA+IC0JCSAgICAgIHBvcnRfbmFtZShhdXhfcG9ydCksIHBvcnRfbmFtZShwb3J0KSk7Cj4g PiArCQkgICAgICBhdXhfY2hfbmFtZShhdXhfY2gpLCBwb3J0X25hbWUocG9ydCkpOwo+ID4gIAo+ ID4gLQlyZXR1cm4gYXV4X3BvcnQ7Cj4gPiArCXJldHVybiBhdXhfY2g7Cj4gPiArfQo+ID4gKwo+ ID4gK3N0YXRpYyBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluCj4gPiAraW50ZWxfYXV4 X3Bvd2VyX2RvbWFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gK3sKPiA+ICsJc3dp dGNoIChpbnRlbF9kcC0+YXV4X2NoKSB7Cj4gPiArCWNhc2UgQVVYX0NIX0E6Cj4gPiArCQlyZXR1 cm4gUE9XRVJfRE9NQUlOX0FVWF9BOwo+ID4gKwljYXNlIEFVWF9DSF9COgo+ID4gKwkJcmV0dXJu IFBPV0VSX0RPTUFJTl9BVVhfQjsKPiA+ICsJY2FzZSBBVVhfQ0hfQzoKPiA+ICsJCXJldHVybiBQ T1dFUl9ET01BSU5fQVVYX0M7Cj4gPiArCWNhc2UgQVVYX0NIX0Q6Cj4gPiArCQlyZXR1cm4gUE9X RVJfRE9NQUlOX0FVWF9EOwo+ID4gKwljYXNlIEFVWF9DSF9GOgo+ID4gKwkJcmV0dXJuIFBPV0VS X0RPTUFJTl9BVVhfRjsKPiA+ICsJZGVmYXVsdDoKPiA+ICsJCU1JU1NJTkdfQ0FTRShpbnRlbF9k cC0+YXV4X2NoKTsKPiA+ICsJCXJldHVybiBQT1dFUl9ET01BSU5fQVVYX0E7Cj4gPiArCX0KPiA+ ICB9Cj4gPiAgCj4gPiAgc3RhdGljIGk5MTVfcmVnX3QgZzR4X2F1eF9jdGxfcmVnKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+IC0JCQkJICBlbnVtIHBvcnQgcG9ydCkKPiA+ ICsJCQkJICBlbnVtIGF1eF9jaCBhdXhfY2gpCj4gPiAgewo+ID4gLQlzd2l0Y2ggKHBvcnQpIHsK PiA+IC0JY2FzZSBQT1JUX0I6Cj4gPiAtCWNhc2UgUE9SVF9DOgo+ID4gLQljYXNlIFBPUlRfRDoK PiA+IC0JCXJldHVybiBEUF9BVVhfQ0hfQ1RMKHBvcnQpOwo+ID4gKwlzd2l0Y2ggKGF1eF9jaCkg ewo+ID4gKwljYXNlIEFVWF9DSF9COgo+ID4gKwljYXNlIEFVWF9DSF9DOgo+ID4gKwljYXNlIEFV WF9DSF9EOgo+ID4gKwkJcmV0dXJuIERQX0FVWF9DSF9DVEwoYXV4X2NoKTsKPiA+ICAJZGVmYXVs dDoKPiA+IC0JCU1JU1NJTkdfQ0FTRShwb3J0KTsKPiA+IC0JCXJldHVybiBEUF9BVVhfQ0hfQ1RM KFBPUlRfQik7Cj4gPiArCQlNSVNTSU5HX0NBU0UoYXV4X2NoKTsKPiA+ICsJCXJldHVybiBEUF9B VVhfQ0hfQ1RMKEFVWF9DSF9CKTsKPiA+ICAJfQo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgaTkx NV9yZWdfdCBnNHhfYXV4X2RhdGFfcmVnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiA+IC0JCQkJICAgZW51bSBwb3J0IHBvcnQsIGludCBpbmRleCkKPiA+ICsJCQkJICAgZW51 bSBhdXhfY2ggYXV4X2NoLCBpbnQgaW5kZXgpCj4gPiAgewo+ID4gLQlzd2l0Y2ggKHBvcnQpIHsK PiA+IC0JY2FzZSBQT1JUX0I6Cj4gPiAtCWNhc2UgUE9SVF9DOgo+ID4gLQljYXNlIFBPUlRfRDoK PiA+IC0JCXJldHVybiBEUF9BVVhfQ0hfREFUQShwb3J0LCBpbmRleCk7Cj4gPiArCXN3aXRjaCAo YXV4X2NoKSB7Cj4gPiArCWNhc2UgQVVYX0NIX0I6Cj4gPiArCWNhc2UgQVVYX0NIX0M6Cj4gPiAr CWNhc2UgQVVYX0NIX0Q6Cj4gPiArCQlyZXR1cm4gRFBfQVVYX0NIX0RBVEEoYXV4X2NoLCBpbmRl eCk7Cj4gPiAgCWRlZmF1bHQ6Cj4gPiAtCQlNSVNTSU5HX0NBU0UocG9ydCk7Cj4gPiAtCQlyZXR1 cm4gRFBfQVVYX0NIX0RBVEEoUE9SVF9CLCBpbmRleCk7Cj4gPiArCQlNSVNTSU5HX0NBU0UoYXV4 X2NoKTsKPiA+ICsJCXJldHVybiBEUF9BVVhfQ0hfREFUQShBVVhfQ0hfQiwgaW5kZXgpOwo+ID4g IAl9Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyBpOTE1X3JlZ190IGlsa19hdXhfY3RsX3JlZyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAtCQkJCSAgZW51bSBwb3J0IHBv cnQpCj4gPiAtewo+ID4gLQlzd2l0Y2ggKHBvcnQpIHsKPiA+IC0JY2FzZSBQT1JUX0E6Cj4gPiAt CQlyZXR1cm4gRFBfQVVYX0NIX0NUTChwb3J0KTsKPiA+IC0JY2FzZSBQT1JUX0I6Cj4gPiAtCWNh c2UgUE9SVF9DOgo+ID4gLQljYXNlIFBPUlRfRDoKPiA+IC0JCXJldHVybiBQQ0hfRFBfQVVYX0NI X0NUTChwb3J0KTsKPiA+ICsJCQkJICBlbnVtIGF1eF9jaCBhdXhfY2gpCj4gPiArewo+ID4gKwlz d2l0Y2ggKGF1eF9jaCkgewo+ID4gKwljYXNlIEFVWF9DSF9BOgo+ID4gKwkJcmV0dXJuIERQX0FV WF9DSF9DVEwoYXV4X2NoKTsKPiA+ICsJY2FzZSBBVVhfQ0hfQjoKPiA+ICsJY2FzZSBBVVhfQ0hf QzoKPiA+ICsJY2FzZSBBVVhfQ0hfRDoKPiA+ICsJCXJldHVybiBQQ0hfRFBfQVVYX0NIX0NUTChh dXhfY2gpOwo+ID4gIAlkZWZhdWx0Ogo+ID4gLQkJTUlTU0lOR19DQVNFKHBvcnQpOwo+ID4gLQkJ cmV0dXJuIERQX0FVWF9DSF9DVEwoUE9SVF9BKTsKPiA+ICsJCU1JU1NJTkdfQ0FTRShhdXhfY2gp Owo+ID4gKwkJcmV0dXJuIERQX0FVWF9DSF9DVEwoQVVYX0NIX0EpOwo+ID4gIAl9Cj4gPiAgfQo+ ID4gIAo+ID4gIHN0YXRpYyBpOTE1X3JlZ190IGlsa19hdXhfZGF0YV9yZWcoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gLQkJCQkgICBlbnVtIHBvcnQgcG9ydCwgaW50IGlu ZGV4KQo+ID4gLXsKPiA+IC0Jc3dpdGNoIChwb3J0KSB7Cj4gPiAtCWNhc2UgUE9SVF9BOgo+ID4g LQkJcmV0dXJuIERQX0FVWF9DSF9EQVRBKHBvcnQsIGluZGV4KTsKPiA+IC0JY2FzZSBQT1JUX0I6 Cj4gPiAtCWNhc2UgUE9SVF9DOgo+ID4gLQljYXNlIFBPUlRfRDoKPiA+IC0JCXJldHVybiBQQ0hf RFBfQVVYX0NIX0RBVEEocG9ydCwgaW5kZXgpOwo+ID4gKwkJCQkgICBlbnVtIGF1eF9jaCBhdXhf Y2gsIGludCBpbmRleCkKPiA+ICt7Cj4gPiArCXN3aXRjaCAoYXV4X2NoKSB7Cj4gPiArCWNhc2Ug QVVYX0NIX0E6Cj4gPiArCQlyZXR1cm4gRFBfQVVYX0NIX0RBVEEoYXV4X2NoLCBpbmRleCk7Cj4g PiArCWNhc2UgQVVYX0NIX0I6Cj4gPiArCWNhc2UgQVVYX0NIX0M6Cj4gPiArCWNhc2UgQVVYX0NI X0Q6Cj4gPiArCQlyZXR1cm4gUENIX0RQX0FVWF9DSF9EQVRBKGF1eF9jaCwgaW5kZXgpOwo+ID4g IAlkZWZhdWx0Ogo+ID4gLQkJTUlTU0lOR19DQVNFKHBvcnQpOwo+ID4gLQkJcmV0dXJuIERQX0FV WF9DSF9EQVRBKFBPUlRfQSwgaW5kZXgpOwo+ID4gKwkJTUlTU0lOR19DQVNFKGF1eF9jaCk7Cj4g PiArCQlyZXR1cm4gRFBfQVVYX0NIX0RBVEEoQVVYX0NIX0EsIGluZGV4KTsKPiA+ICAJfQo+ID4g IH0KPiA+ICAKPiA+ICBzdGF0aWMgaTkxNV9yZWdfdCBza2xfYXV4X2N0bF9yZWcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gLQkJCQkgIGVudW0gcG9ydCBwb3J0KQo+ID4g LXsKPiA+IC0Jc3dpdGNoIChwb3J0KSB7Cj4gPiAtCWNhc2UgUE9SVF9BOgo+ID4gLQljYXNlIFBP UlRfQjoKPiA+IC0JY2FzZSBQT1JUX0M6Cj4gPiAtCWNhc2UgUE9SVF9EOgo+ID4gLQljYXNlIFBP UlRfRjoKPiA+IC0JCXJldHVybiBEUF9BVVhfQ0hfQ1RMKHBvcnQpOwo+ID4gKwkJCQkgIGVudW0g YXV4X2NoIGF1eF9jaCkKPiA+ICt7Cj4gPiArCXN3aXRjaCAoYXV4X2NoKSB7Cj4gPiArCWNhc2Ug QVVYX0NIX0E6Cj4gPiArCWNhc2UgQVVYX0NIX0I6Cj4gPiArCWNhc2UgQVVYX0NIX0M6Cj4gPiAr CWNhc2UgQVVYX0NIX0Q6Cj4gPiArCWNhc2UgQVVYX0NIX0Y6Cj4gPiArCQlyZXR1cm4gRFBfQVVY X0NIX0NUTChhdXhfY2gpOwo+ID4gIAlkZWZhdWx0Ogo+ID4gLQkJTUlTU0lOR19DQVNFKHBvcnQp Owo+ID4gLQkJcmV0dXJuIERQX0FVWF9DSF9DVEwoUE9SVF9BKTsKPiA+ICsJCU1JU1NJTkdfQ0FT RShhdXhfY2gpOwo+ID4gKwkJcmV0dXJuIERQX0FVWF9DSF9DVEwoQVVYX0NIX0EpOwo+ID4gIAl9 Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyBpOTE1X3JlZ190IHNrbF9hdXhfZGF0YV9yZWcoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gLQkJCQkgICBlbnVtIHBvcnQgcG9y dCwgaW50IGluZGV4KQo+ID4gLXsKPiA+IC0Jc3dpdGNoIChwb3J0KSB7Cj4gPiAtCWNhc2UgUE9S VF9BOgo+ID4gLQljYXNlIFBPUlRfQjoKPiA+IC0JY2FzZSBQT1JUX0M6Cj4gPiAtCWNhc2UgUE9S VF9EOgo+ID4gLQljYXNlIFBPUlRfRjoKPiA+IC0JCXJldHVybiBEUF9BVVhfQ0hfREFUQShwb3J0 LCBpbmRleCk7Cj4gPiArCQkJCSAgIGVudW0gYXV4X2NoIGF1eF9jaCwgaW50IGluZGV4KQo+ID4g K3sKPiA+ICsJc3dpdGNoIChhdXhfY2gpIHsKPiA+ICsJY2FzZSBBVVhfQ0hfQToKPiA+ICsJY2Fz ZSBBVVhfQ0hfQjoKPiA+ICsJY2FzZSBBVVhfQ0hfQzoKPiA+ICsJY2FzZSBBVVhfQ0hfRDoKPiA+ ICsJY2FzZSBBVVhfQ0hfRjoKPiA+ICsJCXJldHVybiBEUF9BVVhfQ0hfREFUQShhdXhfY2gsIGlu ZGV4KTsKPiA+ICAJZGVmYXVsdDoKPiA+IC0JCU1JU1NJTkdfQ0FTRShwb3J0KTsKPiA+IC0JCXJl dHVybiBEUF9BVVhfQ0hfREFUQShQT1JUX0EsIGluZGV4KTsKPiA+ICsJCU1JU1NJTkdfQ0FTRShh dXhfY2gpOwo+ID4gKwkJcmV0dXJuIERQX0FVWF9DSF9EQVRBKEFVWF9DSF9BLCBpbmRleCk7Cj4g PiAgCX0KPiA+ICB9Cj4gPiAgCj4gPiAgc3RhdGljIGk5MTVfcmVnX3QgaW50ZWxfYXV4X2N0bF9y ZWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gLQkJCQkgICAgZW51bSBw b3J0IHBvcnQpCj4gPiArCQkJCSAgICBlbnVtIGF1eF9jaCBhdXhfY2gpCj4gPiAgewo+ID4gIAlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ID4gLQkJcmV0dXJuIHNrbF9hdXhfY3RsX3Jl ZyhkZXZfcHJpdiwgcG9ydCk7Cj4gPiArCQlyZXR1cm4gc2tsX2F1eF9jdGxfcmVnKGRldl9wcml2 LCBhdXhfY2gpOwo+ID4gIAllbHNlIGlmIChIQVNfUENIX1NQTElUKGRldl9wcml2KSkKPiA+IC0J CXJldHVybiBpbGtfYXV4X2N0bF9yZWcoZGV2X3ByaXYsIHBvcnQpOwo+ID4gKwkJcmV0dXJuIGls a19hdXhfY3RsX3JlZyhkZXZfcHJpdiwgYXV4X2NoKTsKPiA+ICAJZWxzZQo+ID4gLQkJcmV0dXJu IGc0eF9hdXhfY3RsX3JlZyhkZXZfcHJpdiwgcG9ydCk7Cj4gPiArCQlyZXR1cm4gZzR4X2F1eF9j dGxfcmVnKGRldl9wcml2LCBhdXhfY2gpOwo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgaTkxNV9y ZWdfdCBpbnRlbF9hdXhfZGF0YV9yZWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ID4gLQkJCQkgICAgIGVudW0gcG9ydCBwb3J0LCBpbnQgaW5kZXgpCj4gPiArCQkJCSAgICAg ZW51bSBhdXhfY2ggYXV4X2NoLCBpbnQgaW5kZXgpCj4gPiAgewo+ID4gIAlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA5KQo+ID4gLQkJcmV0dXJuIHNrbF9hdXhfZGF0YV9yZWcoZGV2X3ByaXYs IHBvcnQsIGluZGV4KTsKPiA+ICsJCXJldHVybiBza2xfYXV4X2RhdGFfcmVnKGRldl9wcml2LCBh dXhfY2gsIGluZGV4KTsKPiA+ICAJZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdikpCj4g PiAtCQlyZXR1cm4gaWxrX2F1eF9kYXRhX3JlZyhkZXZfcHJpdiwgcG9ydCwgaW5kZXgpOwo+ID4g KwkJcmV0dXJuIGlsa19hdXhfZGF0YV9yZWcoZGV2X3ByaXYsIGF1eF9jaCwgaW5kZXgpOwo+ID4g IAllbHNlCj4gPiAtCQlyZXR1cm4gZzR4X2F1eF9kYXRhX3JlZyhkZXZfcHJpdiwgcG9ydCwgaW5k ZXgpOwo+ID4gKwkJcmV0dXJuIGc0eF9hdXhfZGF0YV9yZWcoZGV2X3ByaXYsIGF1eF9jaCwgaW5k ZXgpOwo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgdm9pZCBpbnRlbF9hdXhfcmVnX2luaXQoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfZHBfdG9fZGV2KGludGVsX2RwKSk7Cj4gPiAt CWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfYXV4X3BvcnQoZGV2X3ByaXYsCj4gPiAtCQkJCQlkcF90 b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2UucG9ydCk7Cj4gPiArCWVudW0gYXV4X2NoIGF1eF9j aCA9IGludGVsX2RwLT5hdXhfY2g7Cj4gPiAgCWludCBpOwo+ID4gIAo+ID4gLQlpbnRlbF9kcC0+ YXV4X2NoX2N0bF9yZWcgPSBpbnRlbF9hdXhfY3RsX3JlZyhkZXZfcHJpdiwgcG9ydCk7Cj4gPiAr CWludGVsX2RwLT5hdXhfY2hfY3RsX3JlZyA9IGludGVsX2F1eF9jdGxfcmVnKGRldl9wcml2LCBh dXhfY2gpOwo+ID4gIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShpbnRlbF9kcC0+YXV4X2No X2RhdGFfcmVnKTsgaSsrKQo+ID4gLQkJaW50ZWxfZHAtPmF1eF9jaF9kYXRhX3JlZ1tpXSA9IGlu dGVsX2F1eF9kYXRhX3JlZyhkZXZfcHJpdiwgcG9ydCwgaSk7Cj4gPiArCQlpbnRlbF9kcC0+YXV4 X2NoX2RhdGFfcmVnW2ldID0gaW50ZWxfYXV4X2RhdGFfcmVnKGRldl9wcml2LCBhdXhfY2gsIGkp Owo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgdm9pZAo+ID4gQEAgLTE1MDcsMTQgKzE1MzAsMTcg QEAgaW50ZWxfZHBfYXV4X2Zpbmkoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ICBzdGF0 aWMgdm9pZAo+ID4gIGludGVsX2RwX2F1eF9pbml0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Cj4gPiAgewo+ID4gLQlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9 IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiA+IC0JZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9k aWdfcG9ydC0+YmFzZS5wb3J0Owo+ID4gKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9 ICZkcF90b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2U7Cj4gPiArCj4gPiArCWludGVsX2RwLT5h dXhfY2ggPSBpbnRlbF9hdXhfY2goaW50ZWxfZHApOwo+ID4gKwlpbnRlbF9kcC0+YXV4X3Bvd2Vy X2RvbWFpbiA9IGludGVsX2F1eF9wb3dlcl9kb21haW4oaW50ZWxfZHApOwo+ID4gIAo+ID4gIAlp bnRlbF9hdXhfcmVnX2luaXQoaW50ZWxfZHApOwo+ID4gIAlkcm1fZHBfYXV4X2luaXQoJmludGVs X2RwLT5hdXgpOwo+ID4gIAo+ID4gIAkvKiBGYWlsdXJlIHRvIGFsbG9jYXRlIG91ciBwcmVmZXJy ZWQgbmFtZSBpcyBub3QgY3JpdGljYWwgKi8KPiA+IC0JaW50ZWxfZHAtPmF1eC5uYW1lID0ga2Fz cHJpbnRmKEdGUF9LRVJORUwsICJEUEREQy0lYyIsIHBvcnRfbmFtZShwb3J0KSk7Cj4gPiArCWlu dGVsX2RwLT5hdXgubmFtZSA9IGthc3ByaW50ZihHRlBfS0VSTkVMLCAiRFBEREMtJWMiLAo+ID4g KwkJCQkgICAgICAgcG9ydF9uYW1lKGVuY29kZXItPnBvcnQpKTsKPiA+ICAJaW50ZWxfZHAtPmF1 eC50cmFuc2ZlciA9IGludGVsX2RwX2F1eF90cmFuc2ZlcjsKPiA+ICB9Cj4gPiAgCj4gPiBAQCAt NjI2Niw0MiArNjI5Miw2IEBAIHN0YXRpYyBib29sIGludGVsX2VkcF9pbml0X2Nvbm5lY3Rvcihz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ID4gIAlyZXR1cm4gZmFsc2U7Cj4gPiAgfQo+ID4g IAo+ID4gLS8qIFNldCB1cCB0aGUgaG90cGx1ZyBwaW4gYW5kIGF1eCBwb3dlciBkb21haW4uICov Cj4gPiAtc3RhdGljIHZvaWQKPiA+IC1pbnRlbF9kcF9pbml0X2Nvbm5lY3Rvcl9wb3J0X2luZm8o c3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpCj4gPiAtewo+ID4gLQlz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9ICZpbnRlbF9kaWdfcG9ydC0+YmFzZTsKPiA+ IC0Jc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9ICZpbnRlbF9kaWdfcG9ydC0+ZHA7Cj4gPiAt CXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gJmludGVsX2RpZ19wb3J0LT5i YXNlOwo+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGlu dGVsX2VuY29kZXItPmJhc2UuZGV2KTsKPiA+IC0KPiA+IC0JZW5jb2Rlci0+aHBkX3BpbiA9IGlu dGVsX2hwZF9waW5fZGVmYXVsdChkZXZfcHJpdiwgZW5jb2Rlci0+cG9ydCk7Cj4gPiAtCj4gPiAt CXN3aXRjaCAoZW5jb2Rlci0+cG9ydCkgewo+ID4gLQljYXNlIFBPUlRfQToKPiA+IC0JCWludGVs X2RwLT5hdXhfcG93ZXJfZG9tYWluID0gUE9XRVJfRE9NQUlOX0FVWF9BOwo+ID4gLQkJYnJlYWs7 Cj4gPiAtCWNhc2UgUE9SVF9COgo+ID4gLQkJaW50ZWxfZHAtPmF1eF9wb3dlcl9kb21haW4gPSBQ T1dFUl9ET01BSU5fQVVYX0I7Cj4gPiAtCQlicmVhazsKPiA+IC0JY2FzZSBQT1JUX0M6Cj4gPiAt CQlpbnRlbF9kcC0+YXV4X3Bvd2VyX2RvbWFpbiA9IFBPV0VSX0RPTUFJTl9BVVhfQzsKPiA+IC0J CWJyZWFrOwo+ID4gLQljYXNlIFBPUlRfRDoKPiA+IC0JCWludGVsX2RwLT5hdXhfcG93ZXJfZG9t YWluID0gUE9XRVJfRE9NQUlOX0FVWF9EOwo+ID4gLQkJYnJlYWs7Cj4gPiAtCWNhc2UgUE9SVF9F Ogo+ID4gLQkJLyogRklYTUU6IENoZWNrIFZCVCBmb3IgYWN0dWFsIHdpcmluZyBvZiBQT1JUIEUg Ki8KPiA+IC0JCWludGVsX2RwLT5hdXhfcG93ZXJfZG9tYWluID0gUE9XRVJfRE9NQUlOX0FVWF9E Owo+ID4gLQkJYnJlYWs7Cj4gPiAtCWNhc2UgUE9SVF9GOgo+ID4gLQkJaW50ZWxfZHAtPmF1eF9w b3dlcl9kb21haW4gPSBQT1dFUl9ET01BSU5fQVVYX0Y7Cj4gPiAtCQlicmVhazsKPiA+IC0JZGVm YXVsdDoKPiA+IC0JCU1JU1NJTkdfQ0FTRShlbmNvZGVyLT5wb3J0KTsKPiA+IC0JfQo+ID4gLX0K PiA+IC0KPiA+ICBzdGF0aWMgdm9pZCBpbnRlbF9kcF9tb2Rlc2V0X3JldHJ5X3dvcmtfZm4oc3Ry dWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ID4gIHsKPiA+ICAJc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqaW50ZWxfY29ubmVjdG9yOwo+ID4gQEAgLTY0MDcsNyArNjM5Nyw3IEBAIGludGVsX2RwX2lu aXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ ID4gIAkJY29ubmVjdG9yLT5pbnRlcmxhY2VfYWxsb3dlZCA9IHRydWU7Cj4gPiAgCWNvbm5lY3Rv ci0+ZG91Ymxlc2Nhbl9hbGxvd2VkID0gMDsKPiA+ICAKPiA+IC0JaW50ZWxfZHBfaW5pdF9jb25u ZWN0b3JfcG9ydF9pbmZvKGludGVsX2RpZ19wb3J0KTsKPiA+ICsJaW50ZWxfZW5jb2Rlci0+aHBk X3BpbiA9IGludGVsX2hwZF9waW5fZGVmYXVsdChkZXZfcHJpdiwgcG9ydCk7Cj4gPiAgCj4gPiAg CWludGVsX2RwX2F1eF9pbml0KGludGVsX2RwKTsKPiA+ICAKPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCj4gPiBpbmRleCA4OTgwNjRlOGJlYTcuLjdmNmE3ZjU5MmZlNiAxMDA2NDQKPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gQEAgLTEwNDksNiArMTA0OSw3IEBAIHN0cnVjdCBp bnRlbF9kcCB7Cj4gPiAgCWJvb2wgZGV0ZWN0X2RvbmU7Cj4gPiAgCWJvb2wgY2hhbm5lbF9lcV9z dGF0dXM7Cj4gPiAgCWJvb2wgcmVzZXRfbGlua19wYXJhbXM7Cj4gPiArCWVudW0gYXV4X2NoIGF1 eF9jaDsKPiA+ICAJdWludDhfdCBkcGNkW0RQX1JFQ0VJVkVSX0NBUF9TSVpFXTsKPiA+ICAJdWlu dDhfdCBwc3JfZHBjZFtFRFBfUFNSX1JFQ0VJVkVSX0NBUF9TSVpFXTsKPiA+ICAJdWludDhfdCBk b3duc3RyZWFtX3BvcnRzW0RQX01BWF9ET1dOU1RSRUFNX1BPUlRTXTsKPiA+IC0tIAo+ID4gMi4x My42Cj4gPiAKPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCj4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==