From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3 21/22] drm/atomic: Introduce drm_atomic_helper_duplicate_commited_state() Date: Fri, 7 Jul 2017 16:05:28 +0200 Message-ID: References: <20170706202442.5394-1-ville.syrjala@linux.intel.com> <20170706202442.5394-22-ville.syrjala@linux.intel.com> <20170707120338.tahioabaifi7gpi7@phenom.ffwll.local> <20170707132157.GD12629@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170707132157.GD12629@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= Cc: intel-gfx , dri-devel List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBKdWwgNywgMjAxNyBhdCAzOjIxIFBNLCBWaWxsZSBTeXJqw6Rsw6QKPHZpbGxlLnN5 cmphbGFAbGludXguaW50ZWwuY29tPiB3cm90ZToKPiBPbiBGcmksIEp1bCAwNywgMjAxNyBhdCAw MjowMzozOFBNICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+PiBPbiBUaHUsIEp1bCAwNiwg MjAxNyBhdCAxMToyNDo0MVBNICswMzAwLCB2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbSB3 cm90ZToKPj4gPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50 ZWwuY29tPgo+PiA+Cj4+ID4gRm9yIGk5MTUgR1BVIHJlc2V0IGhhbmRsaW5nIHdlJ2xsIHdhbnQg dG8gYmUgYWJsZSB0byBkdXBsaWNhdGUgdGhlIHN0YXRlCj4+ID4gdGhhdCB3YXMgbGFzdCBjb21t aXRlZCB0byB0aGUgaGFyZHdhcmUuIEZvciB0aGF0IHB1cnBvc2UgbGV0J3Mgc3RhcnQgdG8KPj4g PiB0cmFjayB0aGUgY29tbWl0ZWQgc3RhdGUgZm9yIGVhY2ggb2JqZWN0IGFuZCBwcm92aWRlIGEg d2F5IHRvIGR1cGxpY2F0ZQo+PiA+IHRoZSBjb21tbWl0ZWQgc3RhdGUgaW50byBhIG5ldyBkcm1f YXRvbWljX3N0YXRlLiBUaGUgbG9ja2luZyBmb3IKPj4gPiAuY29tbWl0ZWRfc3RhdGUgbXVzdCB0 byBiZSBwcm92aWRlZCBieSB0aGUgZHJpdmVyLgo+PiA+Cj4+ID4gZHJtX2F0b21pY19oZWxwZXJf ZHVwbGljYXRlX2NvbW1pdGVkX3N0YXRlKCkgZHVwbGljYXRlcyB0aGUgc3RhdGUKPj4gPiB0byBi b3RoIG9sZF9zdGF0ZSBhbmQgbmV3X3N0YXRlLiBGb3IgdGhlIHB1cnBvc2VzIG9mIGk5MTUgR1BV IHJlc2V0IHdlCj4+ID4gd291bGQgb25seSBuZWVkIG9uZSBvZiB0aGVtLCBidXQgd2UgYWN0dWFs bHkgbmVlZCB0d28gdG9wIGxldmVsIHN0YXRlczsKPj4gPiBvbmUgZm9yIGRpc2FibGluZyBldmVy eXRoaW5nICh3aGljaCB3b3VsZCBuZWVkIHRoZSBkdXBsaWNhdGVkIHN0YXRlIHRvCj4+ID4gYmUg b2xkX3N0YXRlKSwgYW5kIGFub3RoZXIgdG8gcmVlbmFibGUgZXZlcnl0aGluZyAod2hpY2ggd291 bGQgbmVlZCB0aGUKPj4gPiBkdXBsaWNhdGVkIHN0YXRlIHRvIGJlIG5ld19zdGF0ZSkuIFNvIHRv IG1ha2UgaXQgbGVzcyBjb21wbGVzIEkgZmlndXJlZAo+PiA+IEknZCBqdXN0IGFsd2F5cyBkdXBs aWNhdGUgYm90aC4gTWlnaHQgd2FudCB0byByZXRoaW5rIHRoaXMgaWYgZm9yIG5vCj4+ID4gb3Ro ZXIgcmVhc29uIHRoYXQgcmVkdWNpbmcgdGhlIGNoYW5jZXMgb2YgbWVtb3J5IGFsbG9jYXRpb24g ZmFpbHVyZS4KPj4gPiBEdWUgdG8gdGhlIGRvdWJsZSBzdGF0ZSBkdXBsaWNhdGlvbiB3ZSBuZWVk Cj4+ID4gZHJtX2F0b21pY19oZWxwZXJfY2xlYW5fY29tbWl0ZWRfc3RhdGUoKSB0byBjbGVhbiB1 cCB0aGUgZHVwbGljYXRlZAo+PiA+IG9sZF9zdGF0ZSBzaW5jZSB0aGF0J3Mgbm90IGhhbmRsZWQg YnkgdGhlIG5vcm1hbCBkcm1fYXRvbWljX3N0YXRlCj4+ID4gY2xlYW51cCBjb2RlLgo+PiA+Cj4+ ID4gVE9ETzogZG8gd2Ugd2FudCB0aGlzIGluIHRoZSBoZWxwZXIsIG9yIG1heWJlIGl0IHNob3Vs ZCBiZSBqdXN0IGluIGk5MTU/Cj4+ID4KPj4gPiB2Mjogcy9jb21taXRlZC9jb21taXR0ZWQvIGV2 ZXJ5d2hlcmUgKGNoZWNrcGF0Y2gpCj4+ID4gICAgIEhhbmRsZSBzdGF0ZSBkdXBsaWNhdGlvbiBl cnJvcnMgYmV0dGVyCj4+ID4gdjM6IEV2ZW4gbW9yZSBjYXJlIGluIGRlYWxpbmcgd2l0aCBtZW1v cnkgYWxsb2NhdGlvbiBlcnJvcnMKPj4gPiAgICAgSGFuZGxlIHByaXZhdGUgb2JqcyB0b28KPj4g PiAgICAgRGVhbCB3aXRoIHRoZSBwb3RlbnRpYWwgb3JkZXJpbmcgaXNzdWVzIGJldHdlZW4gc3dh cF9zdGF0ZSgpCj4+ID4gICAgIGFuZCBod19kb25lKCkgYnkga2VlcGluZyB0cmFjayBvZiB3aGlj aCBzdGF0ZSB3YXMgc3dhcHBlZCBpbgo+PiA+ICAgICBsYXN0Cj4+ID4KPj4gPiBTaWduZWQtb2Zm LWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+Pgo+ PiBJIHN0aWxsIGRvbid0IGdldCB3aHkgd2UgbmVlZCB0byBkdXBsaWNhdGUgdGhlIGNvbW1pdHRl ZCBzdGF0ZSBmb3IgZ3B1Cj4+IHJlc2V0LiBXaGVuIEkgc2FpZCBJJ20gbm90IGFnYWluc3QgYWRk aW5nIGFsbCB0aGF0IGNvbXBsZXhpdHkgbG9uZy10ZXJtIEkKPj4gbWVhbnQgd2hlbiB3ZSBhY3R1 YWxseSByZWFsbHkgbmVlZCBpdC4gSW1vIGc0eCBncHUgcmVzZXQgaXNuJ3QgYSBnb29kCj4+IGp1 c3RpZmljYXRpb24gZm9yIHRoYXQsIHJld29ya2luZyB0aGUgYXRvbWljIHdvcmxkIGZvciB0aGF0 IHNlZW1zCj4+IG1hc3NpdmVseSBvdXQgb2YgcHJvcG9ydGlvbi4KPgo+IFdlbGwsIEkgc3RpbGwg ZG9uJ3Qgc2VlIHdoYXQncyBzbyAibWFzc2l2ZSIgYWJvdXQgYSBjb3VwbGUgb2YgZXh0cmEgc3Rh dGUKPiBwb2ludGVycyBoYW5naW5nIGFyb3VuZC4KPgo+IEFsc28gd2hpbGUgZG9pbmcgdGhhdCBz dGF0ZSBkdXBsaWNhdGlvbiBzdHVmZiwgbXkgb2xkIGlkZWEgb2YKPiBzcGxpdHRpbmcgdGhlIGNy dGMgZGlzYWJsZSBhbmQgZW5hYmxlIHBoYXNlcyBpbnRvIHNlcGFyYXRlIGF0b21pYwo+IGNvbW1p dHMgcG9wcGVkIHVwIGFnYWluIGluIG15IGhlYWQuIEZvciB0aGF0IGJlaW5nIGFibGUgdG8gZHVw bGljYXRlCj4gYXJiaXRyYXJ5IHN0YXRlcyB3b3VsZCBzZWVtIGxpa2UgYSBuaWNlIHRoaW5nIHRv IGhhdmUuIFNvIHRoZQo+IHJlZmFjdG9yaW5nIEkgaGFkIHRvIGRvIGNhbiBoYXZlIG90aGVyIHVz ZXMuCgpJIGZ1bGx5IHJlYWxpemUgdGhhdCB5b3UncmUgdW5oYXBweSB3aXRoIGhvdyBhdG9taWMg ZW5kZWQgdXAgZ2V0dGluZwptZXJnZWQgYW5kIHRoYXQgeW91IHRoaW5rIGl0J3MgYSBncmF2ZSBt aXN0YWtlLiBBbmQgbWF5YmUgaXQgaXMsIG1heWJlCml0IGlzbid0LCBJIGhhdmUgbm8gaWRlYS4g QnV0IHJpZ2h0IG5vdyB3ZSBoYXZlIF9ub3RoaW5nXyBhc2tpbmcgZm9yCnRoYXQgcmVvcmcgYWZh aWssIGFuZCB1c2luZyBnZW40IHJlc2V0IHRvIGp1c3RpZnkgaXQgaXMgaW4gbXkgb3Bpbmlvbgpz aW1wbHkgbm90IHNvbGlkIGVuZ2luZWVyaW5nIHByYWN0aWNlLiBNYXliZSB3ZSBuZWVkIHRoaXMg aW4gdGhlCmZ1dHVyZSwgYW5kIHRoZW4gd2UgY2FuIGFkZCBpdCwgYnV0IG5vdCBiZWZvcmUuIFJl ZmFjdG9yaW5nIHN0dWZmIHRvCnByZXR0aWZ5IHRoZSBhcmNoaXRlY3R1cmUgaXNuJ3QgcmVhbGx5 IHVzZWZ1bCB3b3JrLgoKPj4gV2h5IGV4YWN0bHkgY2FuJ3Qgd2UgZG8gdGhpcyBzaW1wbGVyPyBJ IHN0aWxsIGRvbid0IGdldCB0aGF0IHBhcnQuIElzCj4+IHRoZXJlIHJlYWxseSBubyBzb2x1dGlv biB0aGF0IGRvZXNuJ3QgYnJlYWsgYXRvbWljJ3MgY3VycmVudCBhc3N1bXB0aW9uCj4+IHRoYXQg Y29tbWl0cyBhcmUgZnVsbHkgb3JkZXJlZCBvbiBhIGdpdmVuIGNydGM/Cj4KPiBGcm9tIHRoZSBw b2ludCBvZiB2aWV3IG9mIHRoZSBvbGQgYW5kIG5ldyBzdGF0ZXMgaXQgZG9lc24ndCBhY3R1YWxs eQo+IGJyZWFrIHRoYXQuIFRoZSBjb21taXRzIGRvbmUgZnJvbSB0aGUgcmVzZXQgcGF0aCBhcmUg ZXNzZW50aWFsbHkKPiBpbnZpc2libGUgdG8gdGhlIG5vcm1hbCBtb2Rlc2V0IG9wZXJhdGlvbi4K CllvdSBpbnNlcnQgc29tZXRoaW5nIGludG8gYSBmdWxseSBvcmRlcmVkIHF1ZXVlLiBUaGF0IGRv ZXMgYnJlYWsgdGhlCmVudGlyZSBjb25jZXB0IGFuZCBuZWVkcyBhIHBpbGUgb2YgbG9ja3MgYW5k IHN0dWZmIHRvIG1ha2UgaXQgd29yay4KWWVzIGl0J3MgZG9hYmxlLCBidXQgaXQncyBhIHJlZGVz aWduIHdpdGggYWxsIHRoZSBpbXBsaWNhdGlvbnMgb2YKc3VidGxlIGJyZWFrYWdlIGFsbCBvdmVy LiBXaGlsZSB3ZSBkbyBoYXZlIG9wZW4gYnVncyBmb3IgdGhlIGN1cnJlbnQKZGVzaWduLiBSZXdy aXRpbmcgdGhlIHdvcmxkIHRvIGZpeCBhIGJ1ZyBuZWVkcyBzZXJpb3VzbHkgYmV0dGVyCmp1c3Rp ZmljYXRpb24gaW1vLgoKPiBUaGUgb25lIGFsdGVybmF0aXZlIHByb3Bvc2VkIGlkZWEgb2YgYWxs b3dpbmcgZ2VtIGFuZCBrbXMgc2lkZXMgZ28KPiBvdXQgb2Ygd2hhY2sgc2NhcmVzIG1lIGEgYml0 LiBJIHRoaW5rIHRoYXQgbWlnaHQgbGFuZCB1cyBpbiBtb3JlCj4gdHJvdWJsZSB3aGVuIEkgZmlu YWxseSBnZXQgYXJvdW5kIHRvIG1ha2luZyB0aGUgdmlkZW8gb3ZlcmxheSBhCj4gZHJtX3BsYW5l LgoKV2UndmUgcnVuIHBlcmZlY3RseSBmaW5lIHdpdGggdGhpcyBpZGVhIGZvciB5ZWFycy4KCj4g QW5kIEkgdGhpbmsgdHJ5aW5nIHRvIGtlZXAgdGhlIEdQVSByZXNldCBwYXRocyBhcyBzaW1pbGFy IGFzIHBvc3NpYmxlCj4gYmV0d2VlbiBhbGwgdGhlIHBsYXRmb3JtcyB3b3VsZCBiZSBhIG5pY2Ug dGhpbmcuIEp1c3Qgd2hhY2tpbmcKPiBldmVyeXRoaW5nIG9uIHRoZSBoZWFkIHdpdGggYSBoYW1t ZXIgb24gb25lIHBsYXRmb3JtIGJ1dCBub3Qgb24KPiBhbm90aGVyIG9uZSBzZWVtcyB0byBtZSBs aWtlIGV4dHJhIHZhcmlhdGlvbiBpbiBiZWhhdmlvdXIgdGhhdCB3ZQo+IGRvbid0IG5lY2Vzc2Fy aWx5IHdhbnQuCj4KPiBCdXQgbGlrZSBJIHNhaWQsIGlmIHNvbWVvbmUgY2FuIGNvbWUgdXAgd2l0 aCBhIGJldHRlciBzb2x1dGlvbiBJCj4gcHJvYmFibHkgd291bGRuJ3Qgb2JqZWN0IHRvbyBtdWNo LiBJdCdzIG5vdCBnb2luZyB0byBiZSBjb21pbmcgZnJvbSBtZQo+IHRob3VnaCBzaW5jZSBJIGhh dmUgcGxlbnR5IG9mIG90aGVyIHRoaW5ncyB0byBkbyBhbmQgdmFjYXRpb24gdGltZSBpcwo+IGNv bWluZyB1cCB2ZXJ5IHNvb24uIFNvIHVubGVzcyBzb21lb25lIGVsc2UgY29tZXMgdXAgd2l0aCBz b21ldGhpbmcgbmljZQo+IHNvb24gSSB0aGluayB3ZSBzaG91bGQganVzdCBnbyB3aXRoIG15IHNv bHV0aW9uIGJlY2F1c2UgYSkgaXQncyBhbHJlYWR5Cj4gYXZhaWxhYmxlLCBhbmQgYikgd29ya3Mg cXVpdGUgZGVjZW50bHkgZnJvbSB3aGF0IEkgY2FuIHNlZS4KCkkgZ3Vlc3MgSSdsbCBoYXZlIHRv IHJldHlwZSB0aGUgb2xkIHRoaW5nIGluIHRoZSBuZXcgd29ybGQsIGJ1dCBpdApyZWFsbHkgc2hv dWxkbid0IGJlIG1vcmUgdGhhbiB0aGUgcXVpY2sgZHJhZnQgSSd2ZSBsYWlkIGRvd24gaW4gdGhl Cm9sZCB0aHJlYWQuIFRoaXMgaGVyZSBpcyBpbW8gbm8tZ28gd2l0aCBhbGwgdGhlIGNvcmUgY2hh bmdlcywgYW5kIGV2ZW4KanVzdCBkb25lIHdpdGhpbiBpOTE1IEkgdGhpbmsgaXQncyBoaWdobHkg ZHViaW91cyB0aGF0IGl0IHByb3ZpZGVzIGEKcmVhbCBiZW5lZml0LCBzaW5jZSBkZWZhY3RvIGl0 IG1lYW5zIHdlJ2xsIGhhdmUgdG8gYWJhbmRvbiB0aGUgYXRvbWljCmhlbHBlcnMgZW50aXJlbHku Ci1EYW5pZWwKCj4KPj4gLURhbmllbAo+Pgo+PiA+IC0tLQo+PiA+ICBkcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pYy5jICAgICAgICB8ICAgMSArCj4+ID4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljX2hlbHBlci5jIHwgMjMxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ PiA+ICBpbmNsdWRlL2RybS9kcm1fYXRvbWljLmggICAgICAgICAgICB8ICAgNCArCj4+ID4gIGlu Y2x1ZGUvZHJtL2RybV9hdG9taWNfaGVscGVyLmggICAgIHwgICA4ICsrCj4+ID4gIGluY2x1ZGUv ZHJtL2RybV9jb25uZWN0b3IuaCAgICAgICAgIHwgIDExICsrCj4+ID4gIGluY2x1ZGUvZHJtL2Ry bV9jcnRjLmggICAgICAgICAgICAgIHwgIDExICsrCj4+ID4gIGluY2x1ZGUvZHJtL2RybV9wbGFu ZS5oICAgICAgICAgICAgIHwgIDExICsrCj4+ID4gIDcgZmlsZXMgY2hhbmdlZCwgMjc3IGluc2Vy dGlvbnMoKykKPj4gPgo+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21p Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+PiA+IGluZGV4IDU2OTI1YjkzZjU5 OC4uZTE1NzhkNTBkNjZmIDEwMDY0NAo+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljLmMKPj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4+ID4gQEAgLTEw MjAsNiArMTAyMCw3IEBAIGRybV9hdG9taWNfcHJpdmF0ZV9vYmpfaW5pdChzdHJ1Y3QgZHJtX3By aXZhdGVfb2JqICpvYmosCj4+ID4gICAgIG1lbXNldChvYmosIDAsIHNpemVvZigqb2JqKSk7Cj4+ ID4KPj4gPiAgICAgb2JqLT5zdGF0ZSA9IHN0YXRlOwo+PiA+ICsgICBvYmotPmNvbW1pdHRlZF9z dGF0ZSA9IHN0YXRlOwo+PiA+ICAgICBvYmotPmZ1bmNzID0gZnVuY3M7Cj4+ID4gIH0KPj4gPiAg RVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX3ByaXZhdGVfb2JqX2luaXQpOwo+PiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fYXRvbWljX2hlbHBlci5jCj4+ID4gaW5kZXggZjA4ODdmMjMxZmI4Li5jM2QwMmYxMmNk NWQgMTAwNjQ0Cj4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMK Pj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+PiA+IEBAIC0x ODE1LDYgKzE4MTUsMTEgQEAgdm9pZCBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9kZXBlbmRl bmNpZXMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPj4gPiAgfQo+PiA+ICBF WFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX2RlcGVuZGVuY2llcyk7Cj4+ ID4KPj4gPiArc3RhdGljIGJvb2wgc3RhdGVfc2Vxbm9fYWZ0ZXIodW5zaWduZWQgaW50IGEsIHVu c2lnbmVkIGludCBiKQo+PiA+ICt7Cj4+ID4gKyAgIHJldHVybiAoaW50KShiIC0gYSkgPCAwOwo+ PiA+ICt9Cj4+ID4gKwo+PiA+ICAvKioKPj4gPiAgICogZHJtX2F0b21pY19oZWxwZXJfY29tbWl0 X2h3X2RvbmUgLSBzZXR1cCBwb3NzaWJsZSBub25ibG9ja2luZyBjb21taXQKPj4gPiAgICogQG9s ZF9zdGF0ZTogYXRvbWljIHN0YXRlIG9iamVjdCB3aXRoIG9sZCBzdGF0ZSBzdHJ1Y3R1cmVzCj4+ ID4gQEAgLTE4MzMsMTEgKzE4MzgsMzkgQEAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBl cl93YWl0X2Zvcl9kZXBlbmRlbmNpZXMpOwo+PiA+ICB2b2lkIGRybV9hdG9taWNfaGVscGVyX2Nv bW1pdF9od19kb25lKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCj4+ID4gIHsK Pj4gPiAgICAgc3RydWN0IGRybV9jcnRjICpjcnRjOwo+PiA+ICsgICBzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZTsKPj4gPiArICAgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPj4gPiAr ICAgc3RydWN0IGRybV9wcml2YXRlX29iaiAqb2JqOwo+PiA+ICAgICBzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKm5ld19jcnRjX3N0YXRlOwo+PiA+ICsgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpu ZXdfcGxhbmVfc3RhdGU7Cj4+ID4gKyAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpuZXdf Y29ubmVjdG9yX3N0YXRlOwo+PiA+ICsgICBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKm5ld19v Ympfc3RhdGU7Cj4+ID4gICAgIHN0cnVjdCBkcm1fY3J0Y19jb21taXQgKmNvbW1pdDsKPj4gPiAg ICAgaW50IGk7Cj4+ID4gKyAgIHN0YXRpYyBERUZJTkVfU1BJTkxPQ0soY29tbWl0dGVkX3N0YXRl X2xvY2spOwo+PiA+ICsKPj4gPiArICAgc3Bpbl9sb2NrKCZjb21taXR0ZWRfc3RhdGVfbG9jayk7 Cj4+ID4gKwo+PiA+ICsgICBmb3JfZWFjaF9uZXdfcGxhbmVfaW5fc3RhdGUob2xkX3N0YXRlLCBw bGFuZSwgbmV3X3BsYW5lX3N0YXRlLCBpKSB7Cj4+ID4gKyAgICAgICAgICAgaWYgKHBsYW5lLT5j b21taXR0ZWRfc3RhdGUgJiYKPj4gPiArICAgICAgICAgICAgICAgc3RhdGVfc2Vxbm9fYWZ0ZXIo bmV3X3BsYW5lX3N0YXRlLT5zZXFubywKPj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGxhbmUtPmNvbW1pdHRlZF9zdGF0ZS0+c2Vxbm8pKQo+PiA+ICsgICAgICAgICAgICAg ICAgICAgcGxhbmUtPmNvbW1pdHRlZF9zdGF0ZSA9IG5ld19wbGFuZV9zdGF0ZTsKPj4gPiArICAg fQo+PiA+ICsKPj4gPiArICAgZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3Rh dGUsIGNvbm5lY3RvciwgbmV3X2Nvbm5lY3Rvcl9zdGF0ZSwgaSkgewo+PiA+ICsgICAgICAgICAg IGlmIChjb25uZWN0b3ItPmNvbW1pdHRlZF9zdGF0ZSAmJgo+PiA+ICsgICAgICAgICAgICAgICBz dGF0ZV9zZXFub19hZnRlcihuZXdfY29ubmVjdG9yX3N0YXRlLT5zZXFubywKPj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdG9yLT5jb21taXR0ZWRfc3RhdGUtPnNl cW5vKSkKPj4gPiArICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rvci0+Y29tbWl0dGVkX3N0YXRl ID0gbmV3X2Nvbm5lY3Rvcl9zdGF0ZTsKPj4gPiArICAgfQo+PiA+Cj4+ID4gICAgIGZvcl9lYWNo X25ld19jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUsIGkpIHsK Pj4gPiArICAgICAgICAgICBpZiAoY3J0Yy0+Y29tbWl0dGVkX3N0YXRlICYmCj4+ID4gKyAgICAg ICAgICAgICAgIHN0YXRlX3NlcW5vX2FmdGVyKG5ld19jcnRjX3N0YXRlLT5zZXFubywKPj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3J0Yy0+Y29tbWl0dGVkX3N0YXRlLT5z ZXFubykpCj4+ID4gKyAgICAgICAgICAgICAgICAgICBjcnRjLT5jb21taXR0ZWRfc3RhdGUgPSBu ZXdfY3J0Y19zdGF0ZTsKPj4gPiArCj4+ID4gICAgICAgICAgICAgY29tbWl0ID0gb2xkX3N0YXRl LT5jcnRjc1tpXS5jb21taXQ7Cj4+ID4gICAgICAgICAgICAgaWYgKCFjb21taXQpCj4+ID4gICAg ICAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4gPiBAQCAtMTg0Niw2ICsxODc5LDE1IEBAIHZv aWQgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X2h3X2RvbmUoc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKm9sZF9zdGF0ZSkKPj4gPiAgICAgICAgICAgICBXQVJOX09OKG5ld19jcnRjX3N0YXRlLT5l dmVudCk7Cj4+ID4gICAgICAgICAgICAgY29tcGxldGVfYWxsKCZjb21taXQtPmh3X2RvbmUpOwo+ PiA+ICAgICB9Cj4+ID4gKwo+PiA+ICsgICBmb3JfZWFjaF9uZXdfcHJpdmF0ZV9vYmpfaW5fc3Rh dGUob2xkX3N0YXRlLCBvYmosIG5ld19vYmpfc3RhdGUsIGkpIHsKPj4gPiArICAgICAgICAgICBp ZiAob2JqLT5jb21taXR0ZWRfc3RhdGUgJiYKPj4gPiArICAgICAgICAgICAgICAgc3RhdGVfc2Vx bm9fYWZ0ZXIobmV3X29ial9zdGF0ZS0+c2Vxbm8sCj4+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG9iai0+Y29tbWl0dGVkX3N0YXRlLT5zZXFubykpCj4+ID4gKyAgICAgICAg ICAgICAgICAgICBvYmotPmNvbW1pdHRlZF9zdGF0ZSA9IG5ld19vYmpfc3RhdGU7Cj4+ID4gKyAg IH0KPj4gPiArCj4+ID4gKyAgIHNwaW5fdW5sb2NrKCZjb21taXR0ZWRfc3RhdGVfbG9jayk7Cj4+ ID4gIH0KPj4gPiAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfaHdfZG9u ZSk7Cj4+ID4KPj4gPiBAQCAtMjI5Niw2ICsyMzM4LDcgQEAgdm9pZCBkcm1fYXRvbWljX2hlbHBl cl9zd2FwX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPj4gPgo+PiA+ICAg ICAgICAgICAgIG9sZF9jb25uX3N0YXRlLT5zdGF0ZSA9IHN0YXRlOwo+PiA+ICAgICAgICAgICAg IG5ld19jb25uX3N0YXRlLT5zdGF0ZSA9IE5VTEw7Cj4+ID4gKyAgICAgICAgICAgbmV3X2Nvbm5f c3RhdGUtPnNlcW5vID0gKytjb25uZWN0b3ItPnN0YXRlX3NlcW5vOwo+PiA+Cj4+ID4gICAgICAg ICAgICAgX19kcm1fYXRvbWljX3N0YXRlX2Nvbm5lY3RvcihzdGF0ZSwgaSktPnN0YXRlID0gb2xk X2Nvbm5fc3RhdGU7Cj4+ID4gICAgICAgICAgICAgY29ubmVjdG9yLT5zdGF0ZSA9IG5ld19jb25u X3N0YXRlOwo+PiA+IEBAIC0yMzA5LDYgKzIzNTIsNyBAQCB2b2lkIGRybV9hdG9taWNfaGVscGVy X3N3YXBfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+PiA+Cj4+ID4gICAg ICAgICAgICAgc3RhdGUtPmNydGNzW2ldLnN0YXRlID0gb2xkX2NydGNfc3RhdGU7Cj4+ID4gICAg ICAgICAgICAgY3J0Yy0+c3RhdGUgPSBuZXdfY3J0Y19zdGF0ZTsKPj4gPiArICAgICAgICAgICBu ZXdfY3J0Y19zdGF0ZS0+c2Vxbm8gPSArK2NydGMtPnN0YXRlX3NlcW5vOwo+PiA+Cj4+ID4gICAg ICAgICAgICAgaWYgKHN0YXRlLT5jcnRjc1tpXS5jb21taXQpIHsKPj4gPiAgICAgICAgICAgICAg ICAgICAgIHNwaW5fbG9jaygmY3J0Yy0+Y29tbWl0X2xvY2spOwo+PiA+IEBAIC0yMzI1LDYgKzIz NjksNyBAQCB2b2lkIGRybV9hdG9taWNfaGVscGVyX3N3YXBfc3RhdGUoc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlLAo+PiA+Cj4+ID4gICAgICAgICAgICAgb2xkX3BsYW5lX3N0YXRlLT5z dGF0ZSA9IHN0YXRlOwo+PiA+ICAgICAgICAgICAgIG5ld19wbGFuZV9zdGF0ZS0+c3RhdGUgPSBO VUxMOwo+PiA+ICsgICAgICAgICAgIG5ld19wbGFuZV9zdGF0ZS0+c2Vxbm8gPSArK3BsYW5lLT5z dGF0ZV9zZXFubzsKPj4gPgo+PiA+ICAgICAgICAgICAgIHN0YXRlLT5wbGFuZXNbaV0uc3RhdGUg PSBvbGRfcGxhbmVfc3RhdGU7Cj4+ID4gICAgICAgICAgICAgcGxhbmUtPnN0YXRlID0gbmV3X3Bs YW5lX3N0YXRlOwo+PiA+IEBAIC0yMzM1LDYgKzIzODAsNyBAQCB2b2lkIGRybV9hdG9taWNfaGVs cGVyX3N3YXBfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+PiA+Cj4+ID4g ICAgICAgICAgICAgb2xkX29ial9zdGF0ZS0+c3RhdGUgPSBzdGF0ZTsKPj4gPiAgICAgICAgICAg ICBuZXdfb2JqX3N0YXRlLT5zdGF0ZSA9IE5VTEw7Cj4+ID4gKyAgICAgICAgICAgbmV3X29ial9z dGF0ZS0+c2Vxbm8gPSArK29iai0+c3RhdGVfc2Vxbm87Cj4+ID4KPj4gPiAgICAgICAgICAgICBf X2RybV9hdG9taWNfc3RhdGVfcHJpdmF0ZV9vYmooc3RhdGUsIGkpLT5zdGF0ZSA9IG9sZF9vYmpf c3RhdGU7Cj4+ID4gICAgICAgICAgICAgb2JqLT5zdGF0ZSA9IG5ld19vYmpfc3RhdGU7Cj4+ID4g QEAgLTM1ODIsNiArMzYyOCw3IEBAIF9fZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0 KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+ID4gICAgICAgICAgICAgY29ubl9z dGF0ZS0+Y29ubmVjdG9yID0gY29ubmVjdG9yOwo+PiA+Cj4+ID4gICAgIGNvbm5lY3Rvci0+c3Rh dGUgPSBjb25uX3N0YXRlOwo+PiA+ICsgICBjb25uZWN0b3ItPmNvbW1pdHRlZF9zdGF0ZSA9IGNv bm5fc3RhdGU7Cj4+ID4gIH0KPj4gPiAgRVhQT1JUX1NZTUJPTChfX2RybV9hdG9taWNfaGVscGVy X2Nvbm5lY3Rvcl9yZXNldCk7Cj4+ID4KPj4gPiBAQCAtMzc0MCw2ICszNzg3LDE4OSBAQCBkcm1f YXRvbWljX2hlbHBlcl9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4g PiAgfQo+PiA+ICBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVyX2R1cGxpY2F0ZV9zdGF0 ZSk7Cj4+ID4KPj4gPiArc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKgo+PiA+ICtkcm1fYXRvbWlj X2hlbHBlcl9kdXBsaWNhdGVfY29tbWl0dGVkX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4+ID4gK3sKPj4gPiArICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwo+PiA+ICsg ICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXIgY29ubl9pdGVyOwo+PiA+ICsgICBzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubjsKPj4gPiArICAgc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7 Cj4+ID4gKyAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPj4gPiArICAgaW50IGVyciA9IDA7Cj4+ ID4gKwo+PiA+ICsgICBzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKPj4gPiAr ICAgaWYgKCFzdGF0ZSkKPj4gPiArICAgICAgICAgICByZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsK Pj4gPiArCj4+ID4gKyAgIGRybV9mb3JfZWFjaF9wbGFuZShwbGFuZSwgZGV2KSB7Cj4+ID4gKyAg ICAgICAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlLCAqbmV3X3N0YXRlOwo+ PiA+ICsgICAgICAgICAgIGludCBpID0gZHJtX3BsYW5lX2luZGV4KHBsYW5lKTsKPj4gPiArCj4+ ID4gKyAgICAgICAgICAgb2xkX3N0YXRlID0gcGxhbmUtPmZ1bmNzLT5hdG9taWNfZHVwbGljYXRl X3N0YXRlKHBsYW5lLCBwbGFuZS0+Y29tbWl0dGVkX3N0YXRlKTsKPj4gPiArICAgICAgICAgICBp ZiAoIW9sZF9zdGF0ZSkgewo+PiA+ICsgICAgICAgICAgICAgICAgICAgZXJyID0gLUVOT01FTTsK Pj4gPiArICAgICAgICAgICAgICAgICAgIGdvdG8gZnJlZTsKPj4gPiArICAgICAgICAgICB9Cj4+ ID4gKyAgICAgICAgICAgbmV3X3N0YXRlID0gcGxhbmUtPmZ1bmNzLT5hdG9taWNfZHVwbGljYXRl X3N0YXRlKHBsYW5lLCBwbGFuZS0+Y29tbWl0dGVkX3N0YXRlKTsKPj4gPiArICAgICAgICAgICBp ZiAoIW5ld19zdGF0ZSkgewo+PiA+ICsgICAgICAgICAgICAgICAgICAgcGxhbmUtPmZ1bmNzLT5h dG9taWNfZGVzdHJveV9zdGF0ZShwbGFuZSwgb2xkX3N0YXRlKTsKPj4gPiArICAgICAgICAgICAg ICAgICAgIGVyciA9IC1FTk9NRU07Cj4+ID4gKyAgICAgICAgICAgICAgICAgICBnb3RvIGZyZWU7 Cj4+ID4gKyAgICAgICAgICAgfQo+PiA+ICsKPj4gPiArICAgICAgICAgICBzdGF0ZS0+cGxhbmVz W2ldLnN0YXRlID0gbmV3X3N0YXRlOwo+PiA+ICsgICAgICAgICAgIHN0YXRlLT5wbGFuZXNbaV0u b2xkX3N0YXRlID0gb2xkX3N0YXRlOwo+PiA+ICsgICAgICAgICAgIHN0YXRlLT5wbGFuZXNbaV0u bmV3X3N0YXRlID0gbmV3X3N0YXRlOwo+PiA+ICsgICAgICAgICAgIHN0YXRlLT5wbGFuZXNbaV0u cHRyID0gcGxhbmU7Cj4+ID4gKwo+PiA+ICsgICAgICAgICAgIG9sZF9zdGF0ZS0+c3RhdGUgPSBz dGF0ZTsKPj4gPiArICAgfQo+PiA+ICsKPj4gPiArICAgZHJtX2Zvcl9lYWNoX2NydGMoY3J0Yywg ZGV2KSB7Cj4+ID4gKyAgICAgICAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfc3RhdGUs ICpuZXdfc3RhdGU7Cj4+ID4gKyAgICAgICAgICAgaW50IGkgPSBkcm1fY3J0Y19pbmRleChjcnRj KTsKPj4gPiArCj4+ID4gKyAgICAgICAgICAgb2xkX3N0YXRlID0gY3J0Yy0+ZnVuY3MtPmF0b21p Y19kdXBsaWNhdGVfc3RhdGUoY3J0YywgY3J0Yy0+Y29tbWl0dGVkX3N0YXRlKTsKPj4gPiArICAg ICAgICAgICBpZiAoIW9sZF9zdGF0ZSkgewo+PiA+ICsgICAgICAgICAgICAgICAgICAgZXJyID0g LUVOT01FTTsKPj4gPiArICAgICAgICAgICAgICAgICAgIGdvdG8gZnJlZTsKPj4gPiArICAgICAg ICAgICB9Cj4+ID4gKyAgICAgICAgICAgbmV3X3N0YXRlID0gY3J0Yy0+ZnVuY3MtPmF0b21pY19k dXBsaWNhdGVfc3RhdGUoY3J0YywgY3J0Yy0+Y29tbWl0dGVkX3N0YXRlKTsKPj4gPiArICAgICAg ICAgICBpZiAoIW5ld19zdGF0ZSkgewo+PiA+ICsgICAgICAgICAgICAgICAgICAgY3J0Yy0+ZnVu Y3MtPmF0b21pY19kZXN0cm95X3N0YXRlKGNydGMsIG9sZF9zdGF0ZSk7Cj4+ID4gKyAgICAgICAg ICAgICAgICAgICBlcnIgPSAtRU5PTUVNOwo+PiA+ICsgICAgICAgICAgICAgICAgICAgZ290byBm cmVlOwo+PiA+ICsgICAgICAgICAgIH0KPj4gPiArCj4+ID4gKyAgICAgICAgICAgc3RhdGUtPmNy dGNzW2ldLnN0YXRlID0gbmV3X3N0YXRlOwo+PiA+ICsgICAgICAgICAgIHN0YXRlLT5jcnRjc1tp XS5vbGRfc3RhdGUgPSBvbGRfc3RhdGU7Cj4+ID4gKyAgICAgICAgICAgc3RhdGUtPmNydGNzW2ld Lm5ld19zdGF0ZSA9IG5ld19zdGF0ZTsKPj4gPiArICAgICAgICAgICBzdGF0ZS0+Y3J0Y3NbaV0u cHRyID0gY3J0YzsKPj4gPiArCj4+ID4gKyAgICAgICAgICAgb2xkX3N0YXRlLT5zdGF0ZSA9IHN0 YXRlOwo+PiA+ICsgICB9Cj4+ID4gKwo+PiA+ICsgICBkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9i ZWdpbihkZXYsICZjb25uX2l0ZXIpOwo+PiA+ICsgICBkcm1fZm9yX2VhY2hfY29ubmVjdG9yX2l0 ZXIoY29ubiwgJmNvbm5faXRlcikgewo+PiA+ICsgICAgICAgICAgIHN0cnVjdCBkcm1fY29ubmVj dG9yX3N0YXRlICpvbGRfc3RhdGUsICpuZXdfc3RhdGU7Cj4+ID4gKyAgICAgICAgICAgc3RydWN0 IF9fZHJtX2Nvbm5lY3RvcnNfc3RhdGUgKmM7Cj4+ID4gKyAgICAgICAgICAgaW50IGkgPSBkcm1f Y29ubmVjdG9yX2luZGV4KGNvbm4pOwo+PiA+ICsKPj4gPiArICAgICAgICAgICBlcnIgPSBkcm1f ZHluYXJyYXlfcmVzZXJ2ZSgmc3RhdGUtPmNvbm5lY3RvcnMsIGkpOwo+PiA+ICsgICAgICAgICAg IGlmIChlcnIpCj4+ID4gKyAgICAgICAgICAgICAgICAgICBicmVhazsKPj4gPiArCj4+ID4gKyAg ICAgICAgICAgb2xkX3N0YXRlID0gY29ubi0+ZnVuY3MtPmF0b21pY19kdXBsaWNhdGVfc3RhdGUo Y29ubiwgY29ubi0+Y29tbWl0dGVkX3N0YXRlKTsKPj4gPiArICAgICAgICAgICBpZiAoIW9sZF9z dGF0ZSkgewo+PiA+ICsgICAgICAgICAgICAgICAgICAgZXJyID0gLUVOT01FTTsKPj4gPiArICAg ICAgICAgICAgICAgICAgIGJyZWFrOwo+PiA+ICsgICAgICAgICAgIH0KPj4gPiArICAgICAgICAg ICBuZXdfc3RhdGUgPSBjb25uLT5mdW5jcy0+YXRvbWljX2R1cGxpY2F0ZV9zdGF0ZShjb25uLCBj b25uLT5jb21taXR0ZWRfc3RhdGUpOwo+PiA+ICsgICAgICAgICAgIGlmICghbmV3X3N0YXRlKSB7 Cj4+ID4gKyAgICAgICAgICAgICAgICAgICBjb25uLT5mdW5jcy0+YXRvbWljX2Rlc3Ryb3lfc3Rh dGUoY29ubiwgb2xkX3N0YXRlKTsKPj4gPiArICAgICAgICAgICAgICAgICAgIGVyciA9IC1FTk9N RU07Cj4+ID4gKyAgICAgICAgICAgICAgICAgICBicmVhazsKPj4gPiArICAgICAgICAgICB9Cj4+ ID4gKwo+PiA+ICsgICAgICAgICAgIHN0YXRlLT5udW1fY29ubmVjdG9yID0gc3RhdGUtPmNvbm5l Y3RvcnMubnVtX2VsZW1zOwo+PiA+ICsKPj4gPiArICAgICAgICAgICBjID0gX19kcm1fYXRvbWlj X3N0YXRlX2Nvbm5lY3RvcihzdGF0ZSwgaSk7Cj4+ID4gKwo+PiA+ICsgICAgICAgICAgIGMtPnN0 YXRlID0gbmV3X3N0YXRlOwo+PiA+ICsgICAgICAgICAgIGMtPm9sZF9zdGF0ZSA9IG9sZF9zdGF0 ZTsKPj4gPiArICAgICAgICAgICBjLT5uZXdfc3RhdGUgPSBuZXdfc3RhdGU7Cj4+ID4gKyAgICAg ICAgICAgYy0+cHRyID0gZHJtX2Nvbm5lY3Rvcl9nZXQoY29ubik7Cj4+ID4gKwo+PiA+ICsgICAg ICAgICAgIG9sZF9zdGF0ZS0+c3RhdGUgPSBzdGF0ZTsKPj4gPiArICAgfQo+PiA+ICsgICBkcm1f Y29ubmVjdG9yX2xpc3RfaXRlcl9lbmQoJmNvbm5faXRlcik7Cj4+ID4gKwo+PiA+ICtmcmVlOgo+ PiA+ICsgICBpZiAoZXJyIDwgMCkgewo+PiA+ICsgICAgICAgICAgIGRybV9hdG9taWNfaGVscGVy X2NsZWFuX2NvbW1pdHRlZF9zdGF0ZShzdGF0ZSk7Cj4+ID4gKyAgICAgICAgICAgZHJtX2F0b21p Y19zdGF0ZV9wdXQoc3RhdGUpOwo+PiA+ICsgICAgICAgICAgIHN0YXRlID0gRVJSX1BUUihlcnIp Owo+PiA+ICsgICB9Cj4+ID4gKwo+PiA+ICsgICByZXR1cm4gc3RhdGU7Cj4+ID4gK30KPj4gPiAr RVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9kdXBsaWNhdGVfY29tbWl0dGVkX3N0YXRl KTsKPj4gPiArCj4+ID4gK2ludCBkcm1fYXRvbWljX2hlbHBlcl9kdXBsaWNhdGVfcHJpdmF0ZV9v YmpfY29tbWl0dGVkX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGRybV9wcml2YXRlX29iaiAqb2JqKQo+PiA+ICt7Cj4+ID4gKyAgIHN0cnVjdCBkcm1fcHJp dmF0ZV9zdGF0ZSAqb2xkX3N0YXRlLCAqbmV3X3N0YXRlOwo+PiA+ICsgICBzdHJ1Y3QgX19kcm1f cHJpdmF0ZV9vYmpzX3N0YXRlICpwOwo+PiA+ICsgICBpbnQgcmV0LCBpID0gc3RhdGUtPm51bV9w cml2YXRlX29ianM7Cj4+ID4gKwo+PiA+ICsgICByZXQgPSBkcm1fZHluYXJyYXlfcmVzZXJ2ZSgm c3RhdGUtPnByaXZhdGVfb2JqcywgaSk7Cj4+ID4gKyAgIGlmIChyZXQpCj4+ID4gKyAgICAgICAg ICAgcmV0dXJuIHJldDsKPj4gPiArCj4+ID4gKyAgIG9sZF9zdGF0ZSA9IG9iai0+ZnVuY3MtPmF0 b21pY19kdXBsaWNhdGVfc3RhdGUob2JqLCBvYmotPmNvbW1pdHRlZF9zdGF0ZSk7Cj4+ID4gKyAg IGlmICghb2xkX3N0YXRlKQo+PiA+ICsgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+PiA+ICsK Pj4gPiArICAgbmV3X3N0YXRlID0gb2JqLT5mdW5jcy0+YXRvbWljX2R1cGxpY2F0ZV9zdGF0ZShv YmosIG9iai0+Y29tbWl0dGVkX3N0YXRlKTsKPj4gPiArICAgaWYgKCFuZXdfc3RhdGUpIHsKPj4g PiArICAgICAgICAgICBvYmotPmZ1bmNzLT5hdG9taWNfZGVzdHJveV9zdGF0ZShvYmosIG9iai0+ Y29tbWl0dGVkX3N0YXRlKTsKPj4gPiArICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPj4gPiAr ICAgfQo+PiA+ICsKPj4gPiArICAgc3RhdGUtPm51bV9wcml2YXRlX29ianMgPSBzdGF0ZS0+cHJp dmF0ZV9vYmpzLm51bV9lbGVtczsKPj4gPiArCj4+ID4gKyAgIHAgPSBfX2RybV9hdG9taWNfc3Rh dGVfcHJpdmF0ZV9vYmooc3RhdGUsIGkpOwo+PiA+ICsKPj4gPiArICAgcC0+c3RhdGUgPSBuZXdf c3RhdGU7Cj4+ID4gKyAgIHAtPm9sZF9zdGF0ZSA9IG9sZF9zdGF0ZTsKPj4gPiArICAgcC0+bmV3 X3N0YXRlID0gbmV3X3N0YXRlOwo+PiA+ICsgICBwLT5wdHIgPSBvYmo7Cj4+ID4gKwo+PiA+ICsg ICBvbGRfc3RhdGUtPnN0YXRlID0gc3RhdGU7Cj4+ID4gKwo+PiA+ICsgICByZXR1cm4gMDsKPj4g PiArfQo+PiA+ICtFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVyX2R1cGxpY2F0ZV9wcml2 YXRlX29ial9jb21taXR0ZWRfc3RhdGUpOwo+PiA+ICsKPj4gPiArdm9pZAo+PiA+ICtkcm1fYXRv bWljX2hlbHBlcl9jbGVhbl9jb21taXR0ZWRfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlKQo+PiA+ICt7Cj4+ID4gKyAgIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+PiA+ICsg ICBzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4+ID4gKyAgIHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uOwo+PiA+ICsgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKPj4gPiAr ICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+PiA+ICsgICBzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZTsKPj4gPiArICAgc3RydWN0IGRybV9wcml2YXRl X29iaiAqb2JqOwo+PiA+ICsgICBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKm9ial9zdGF0ZTsK Pj4gPiArICAgaW50IGk7Cj4+ID4gKwo+PiA+ICsgICAvKiByZXN0b3JlIHRoZSBjb3JyZWN0IHN0 YXRlLT5zdGF0ZSAqLwo+PiA+ICsgICBmb3JfZWFjaF9uZXdfcGxhbmVfaW5fc3RhdGUoc3RhdGUs IHBsYW5lLCBwbGFuZV9zdGF0ZSwgaSkgewo+PiA+ICsgICAgICAgICAgIHBsYW5lLT5mdW5jcy0+ YXRvbWljX2Rlc3Ryb3lfc3RhdGUocGxhbmUsIHN0YXRlLT5wbGFuZXNbaV0ub2xkX3N0YXRlKTsK Pj4gPiArICAgICAgICAgICBzdGF0ZS0+cGxhbmVzW2ldLm9sZF9zdGF0ZSA9IE5VTEw7Cj4+ID4g KyAgIH0KPj4gPiArICAgZm9yX2VhY2hfbmV3X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNy dGNfc3RhdGUsIGkpIHsKPj4gPiArICAgICAgICAgICBjcnRjLT5mdW5jcy0+YXRvbWljX2Rlc3Ry b3lfc3RhdGUoY3J0Yywgc3RhdGUtPmNydGNzW2ldLm9sZF9zdGF0ZSk7Cj4+ID4gKyAgICAgICAg ICAgc3RhdGUtPmNydGNzW2ldLm9sZF9zdGF0ZSA9IE5VTEw7Cj4+ID4gKyAgIH0KPj4gPiArICAg Zm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubiwgY29ubl9zdGF0ZSwg aSkgewo+PiA+ICsgICAgICAgICAgIHN0cnVjdCBfX2RybV9jb25uZWN0b3JzX3N0YXRlICpjID0K Pj4gPiArICAgICAgICAgICAgICAgICAgIF9fZHJtX2F0b21pY19zdGF0ZV9jb25uZWN0b3Ioc3Rh dGUsIGkpOwo+PiA+ICsKPj4gPiArICAgICAgICAgICBjb25uLT5mdW5jcy0+YXRvbWljX2Rlc3Ry b3lfc3RhdGUoY29ubiwgYy0+b2xkX3N0YXRlKTsKPj4gPiArICAgICAgICAgICBjLT5vbGRfc3Rh dGUgPSBOVUxMOwo+PiA+ICsgICB9Cj4+ID4gKyAgIGZvcl9lYWNoX25ld19wcml2YXRlX29ial9p bl9zdGF0ZShzdGF0ZSwgb2JqLCBvYmpfc3RhdGUsIGkpIHsKPj4gPiArICAgICAgICAgICBzdHJ1 Y3QgX19kcm1fcHJpdmF0ZV9vYmpzX3N0YXRlICpwID0KPj4gPiArICAgICAgICAgICAgICAgICAg IF9fZHJtX2F0b21pY19zdGF0ZV9wcml2YXRlX29iaihzdGF0ZSwgaSk7Cj4+ID4gKwo+PiA+ICsg ICAgICAgICAgIG9iai0+ZnVuY3MtPmF0b21pY19kZXN0cm95X3N0YXRlKG9iaiwgcC0+b2xkX3N0 YXRlKTsKPj4gPiArICAgICAgICAgICBwLT5vbGRfc3RhdGUgPSBOVUxMOwo+PiA+ICsgICB9Cj4+ ID4gK30KPj4gPiArRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hlbHBlcl9jbGVhbl9jb21taXR0 ZWRfc3RhdGUpOwo+PiA+ICsKPj4gPiAgLyoqCj4+ID4gICAqIF9fZHJtX2F0b21pY19oZWxwZXJf Y29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUgLSByZWxlYXNlIGNvbm5lY3RvciBzdGF0ZQo+PiA+ICAg KiBAc3RhdGU6IGNvbm5lY3RvciBzdGF0ZSBvYmplY3QgdG8gcmVsZWFzZQo+PiA+IEBAIC0zODU2 LDYgKzQwODYsNyBAQCBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNfaGVscGVyX2xlZ2FjeV9nYW1t YV9zZXQpOwo+PiA+ICAgKiBfX2RybV9hdG9taWNfaGVscGVyX3ByaXZhdGVfZHVwbGljYXRlX3N0 YXRlIC0gY29weSBhdG9taWMgcHJpdmF0ZSBzdGF0ZQo+PiA+ICAgKiBAb2JqOiBDUlRDIG9iamVj dAo+PiA+ICAgKiBAc3RhdGU6IG5ldyBwcml2YXRlIG9iamVjdCBzdGF0ZQo+PiA+ICsgKiBAb2xk X3N0YXRlOiBvbGQgcHJpdmF0ZSBvYmplY3Qgc3RhdGUKPj4gPiAgICoKPj4gPiAgICogQ29waWVz IGF0b21pYyBzdGF0ZSBmcm9tIGEgcHJpdmF0ZSBvYmplY3RzJ3MgY3VycmVudCBzdGF0ZSBhbmQg cmVzZXRzIGluZmVycmVkIHZhbHVlcy4KPj4gPiAgICogVGhpcyBpcyB1c2VmdWwgZm9yIGRyaXZl cnMgdGhhdCBzdWJjbGFzcyB0aGUgcHJpdmF0ZSBzdGF0ZS4KPj4gPiBkaWZmIC0tZ2l0IGEvaW5j bHVkZS9kcm0vZHJtX2F0b21pYy5oIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oCj4+ID4gaW5k ZXggMGU2YzU0YjNlMGFmLi45ZmY0ZmI0NmQ1MDAgMTAwNjQ0Cj4+ID4gLS0tIGEvaW5jbHVkZS9k cm0vZHJtX2F0b21pYy5oCj4+ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oCj4+ID4g QEAgLTE5NCwxMiArMTk0LDE2IEBAIHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZV9mdW5jcyB7Cj4+ ID4KPj4gPiAgc3RydWN0IGRybV9wcml2YXRlX29iaiB7Cj4+ID4gICAgIHN0cnVjdCBkcm1fcHJp dmF0ZV9zdGF0ZSAqc3RhdGU7Cj4+ID4gKyAgIHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSAqY29t bWl0dGVkX3N0YXRlOwo+PiA+Cj4+ID4gICAgIGNvbnN0IHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0 ZV9mdW5jcyAqZnVuY3M7Cj4+ID4gKwo+PiA+ICsgICB1bnNpZ25lZCBpbnQgc3RhdGVfc2Vxbm87 Cj4+ID4gIH07Cj4+ID4KPj4gPiAgc3RydWN0IGRybV9wcml2YXRlX3N0YXRlIHsKPj4gPiAgICAg c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwo+PiA+ICsgICB1bnNpZ25lZCBpbnQgc2Vx bm87Cj4+ID4gIH07Cj4+ID4KPj4gPiAgc3RydWN0IF9fZHJtX3ByaXZhdGVfb2Jqc19zdGF0ZSB7 Cj4+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9hdG9taWNfaGVscGVyLmggYi9pbmNs dWRlL2RybS9kcm1fYXRvbWljX2hlbHBlci5oCj4+ID4gaW5kZXggYjc5OTY4N2E0YjA5Li4zYTYw OWJiYjU4MTggMTAwNjQ0Cj4+ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2F0b21pY19oZWxwZXIu aAo+PiA+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9hdG9taWNfaGVscGVyLmgKPj4gPiBAQCAtMTg1 LDYgKzE4NSwxNCBAQCBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRl KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+ID4gIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICoKPj4gPiAgZHJtX2F0b21pY19oZWxwZXJfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4ICpjdHgpOwo+PiA+ICtzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqCj4+ID4gK2RybV9hdG9taWNfaGVscGVyX2R1cGxpY2F0ZV9jb21taXR0ZWRfc3RhdGUo c3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4+ID4gK3N0cnVjdCBkcm1fcHJpdmF0ZV9vYmo7Cj4+ ID4gK2ludAo+PiA+ICtkcm1fYXRvbWljX2hlbHBlcl9kdXBsaWNhdGVfcHJpdmF0ZV9vYmpfY29t bWl0dGVkX3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9w cml2YXRlX29iaiAqb2JqKTsKPj4gPiArdm9pZAo+PiA+ICtkcm1fYXRvbWljX2hlbHBlcl9jbGVh bl9jb21taXR0ZWRfc3RhdGUoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPj4gPiAg dm9pZAo+PiA+ICBfX2RybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRlKHN0 cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpzdGF0ZSk7Cj4+ID4gIHZvaWQgZHJtX2F0b21pY19o ZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwKPj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oIGIvaW5j bHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4+ID4gaW5kZXggOGYyNjE2NmY3OGI0Li5hMzhiYTA1 ZGI0ZmEgMTAwNjQ0Cj4+ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4+ID4g KysrIGIvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4+ID4gQEAgLTMwNiw2ICszMDYsOCBA QCBzdHJ1Y3QgZHJtX3R2X2Nvbm5lY3Rvcl9zdGF0ZSB7Cj4+ID4gIHN0cnVjdCBkcm1fY29ubmVj dG9yX3N0YXRlIHsKPj4gPiAgICAgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPj4g Pgo+PiA+ICsgICB1bnNpZ25lZCBpbnQgc2Vxbm87Cj4+ID4gKwo+PiA+ICAgICAvKioKPj4gPiAg ICAgICogQGNydGM6IENSVEMgdG8gY29ubmVjdCBjb25uZWN0b3IgdG8sIE5VTEwgaWYgZGlzYWJs ZWQuCj4+ID4gICAgICAqCj4+ID4gQEAgLTcwNyw2ICs3MDksOCBAQCBzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciB7Cj4+ID4KPj4gPiAgICAgY2hhciAqbmFtZTsKPj4gPgo+PiA+ICsgICB1bnNpZ25lZCBp bnQgc3RhdGVfc2Vxbm87Cj4+ID4gKwo+PiA+ICAgICAvKioKPj4gPiAgICAgICogQG11dGV4OiBM b2NrIGZvciBnZW5lcmFsIGNvbm5lY3RvciBzdGF0ZSwgYnV0IGN1cnJlbnRseSBvbmx5IHByb3Rl Y3RzCj4+ID4gICAgICAqIEByZWdpc3RlcmVkLiBNb3N0IG9mIHRoZSBjb25uZWN0b3Igc3RhdGUg aXMgc3RpbGwgcHJvdGVjdGVkIGJ5Cj4+ID4gQEAgLTg2OCw2ICs4NzIsMTMgQEAgc3RydWN0IGRy bV9jb25uZWN0b3Igewo+PiA+ICAgICAgKi8KPj4gPiAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKnN0YXRlOwo+PiA+Cj4+ID4gKyAgIC8qKgo+PiA+ICsgICAgKiBAY29tbWl0dGVkX3N0 YXRlOgo+PiA+ICsgICAgKgo+PiA+ICsgICAgKiBDdXJyZW50IGNvbW1pdHRlZCBhdG9taWMgc3Rh dGUgZm9yIHRoaXMgY29ubmVjdG9yLgo+PiA+ICsgICAgKi8KPj4gPiArICAgc3RydWN0IGRybV9j b25uZWN0b3Jfc3RhdGUgKmNvbW1pdHRlZF9zdGF0ZTsKPj4gPiArCj4+ID4gICAgIC8qIERpc3Bs YXlJRCBiaXRzICovCj4+ID4gICAgIGJvb2wgaGFzX3RpbGU7Cj4+ID4gICAgIHN0cnVjdCBkcm1f dGlsZV9ncm91cCAqdGlsZV9ncm91cDsKPj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJt X2NydGMuaCBiL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKPj4gPiBpbmRleCA4YmZiYzU0NjYwYWIu LjJhMTg5N2Q3NmM3MSAxMDA2NDQKPj4gPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCj4+ ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAo+PiA+IEBAIC0xMDgsNiArMTA4LDggQEAg c3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3M7Cj4+ID4gIHN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSB7Cj4+ID4gICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPj4gPgo+PiA+ICsgICB1bnNpZ25l ZCBpbnQgc2Vxbm87Cj4+ID4gKwo+PiA+ICAgICBib29sIGVuYWJsZTsKPj4gPiAgICAgYm9vbCBh Y3RpdmU7Cj4+ID4KPj4gPiBAQCAtNzUwLDYgKzc1Miw4IEBAIHN0cnVjdCBkcm1fY3J0YyB7Cj4+ ID4KPj4gPiAgICAgY2hhciAqbmFtZTsKPj4gPgo+PiA+ICsgICB1bnNpZ25lZCBpbnQgc3RhdGVf c2Vxbm87Cj4+ID4gKwo+PiA+ICAgICAvKioKPj4gPiAgICAgICogQG11dGV4Ogo+PiA+ICAgICAg Kgo+PiA+IEBAIC04MTYsNiArODIwLDEzIEBAIHN0cnVjdCBkcm1fY3J0YyB7Cj4+ID4gICAgIHN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqc3RhdGU7Cj4+ID4KPj4gPiAgICAgLyoqCj4+ID4gKyAgICAq IEBjb21taXR0ZWRfc3RhdGU6Cj4+ID4gKyAgICAqCj4+ID4gKyAgICAqIEN1cnJlbnQgY29tbWl0 dGVkIGF0b21pYyBzdGF0ZSBmb3IgdGhpcyBDUlRDLgo+PiA+ICsgICAgKi8KPj4gPiArICAgc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpjb21taXR0ZWRfc3RhdGU7Cj4+ID4gKwo+PiA+ICsgICAvKioK Pj4gPiAgICAgICogQGNvbW1pdF9saXN0Ogo+PiA+ICAgICAgKgo+PiA+ICAgICAgKiBMaXN0IG9m ICZkcm1fY3J0Y19jb21taXQgc3RydWN0dXJlcyB0cmFja2luZyBwZW5kaW5nIGNvbW1pdHMuCj4+ ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9wbGFuZS5oIGIvaW5jbHVkZS9kcm0vZHJt X3BsYW5lLmgKPj4gPiBpbmRleCAwOGFkNGI1OGFkYmUuLmZmMzQ5NTcwNWU2MyAxMDA2NDQKPj4g PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaAo+PiA+ICsrKyBiL2luY2x1ZGUvZHJtL2Ry bV9wbGFuZS5oCj4+ID4gQEAgLTU5LDYgKzU5LDggQEAgc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVp cmVfY3R4Owo+PiA+ICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIHsKPj4gPiAgICAgc3RydWN0IGRy bV9wbGFuZSAqcGxhbmU7Cj4+ID4KPj4gPiArICAgdW5zaWduZWQgaW50IHNlcW5vOwo+PiA+ICsK Pj4gPiAgICAgLyoqCj4+ID4gICAgICAqIEBjcnRjOgo+PiA+ICAgICAgKgo+PiA+IEBAIC00NzAs NiArNDcyLDggQEAgc3RydWN0IGRybV9wbGFuZSB7Cj4+ID4KPj4gPiAgICAgY2hhciAqbmFtZTsK Pj4gPgo+PiA+ICsgICB1bnNpZ25lZCBpbnQgc3RhdGVfc2Vxbm87Cj4+ID4gKwo+PiA+ICAgICAv KioKPj4gPiAgICAgICogQG11dGV4Ogo+PiA+ICAgICAgKgo+PiA+IEBAIC01MjIsNiArNTI2LDEz IEBAIHN0cnVjdCBkcm1fcGxhbmUgewo+PiA+ICAgICAgKi8KPj4gPiAgICAgc3RydWN0IGRybV9w bGFuZV9zdGF0ZSAqc3RhdGU7Cj4+ID4KPj4gPiArICAgLyoqCj4+ID4gKyAgICAqIEBjb21taXR0 ZWRfc3RhdGU6Cj4+ID4gKyAgICAqCj4+ID4gKyAgICAqIEN1cnJlbnQgY29tbWl0dGVkIGF0b21p YyBzdGF0ZSBmb3IgdGhpcyBwbGFuZS4KPj4gPiArICAgICovCj4+ID4gKyAgIHN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgKmNvbW1pdHRlZF9zdGF0ZTsKPj4gPiArCj4+ID4gICAgIHN0cnVjdCBkcm1f cHJvcGVydHkgKnpwb3NfcHJvcGVydHk7Cj4+ID4gICAgIHN0cnVjdCBkcm1fcHJvcGVydHkgKnJv dGF0aW9uX3Byb3BlcnR5Owo+PiA+ICB9Owo+PiA+IC0tCj4+ID4gMi4xMy4wCj4+ID4KPj4gPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiA+IEludGVs LWdmeCBtYWlsaW5nIGxpc3QKPj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+ ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngKPj4KPj4gLS0KPj4gRGFuaWVsIFZldHRlcgo+PiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwg Q29ycG9yYXRpb24KPj4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKPgo+IC0tCj4gVmlsbGUgU3lyasOk bMOkCj4gSW50ZWwgT1RDCgoKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJ bnRlbCBDb3Jwb3JhdGlvbgorNDEgKDApIDc5IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xs LmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=