From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from ptx.hi.pengutronix.de ([2001:6f8:1178:2:5054:ff:fec0:8e10] ident=Debian-exim) by metis.ext.pengutronix.de with esmtp (Exim 4.72) (envelope-from ) id 1WW0td-0007Mn-TM for ptxdist@pengutronix.de; Fri, 04 Apr 2014 11:58:49 +0200 Received: from mol by ptx.hi.pengutronix.de with local (Exim 4.80) (envelope-from ) id 1WW0td-0005cx-R4 for ptxdist@pengutronix.de; Fri, 04 Apr 2014 11:58:49 +0200 Date: Fri, 4 Apr 2014 11:58:49 +0200 From: Michael Olbrich Message-ID: <20140404095849.GF21499@pengutronix.de> References: <20140324084153.GA10959@pengutronix.de> <1396447859-23430-1-git-send-email-post@lespocky.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1396447859-23430-1-git-send-email-post@lespocky.de> Subject: Re: [ptxdist] [PATCH] libcgi: add some patches with fixes, partly queued upstream Reply-To: ptxdist@pengutronix.de List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: ptxdist-bounces@pengutronix.de Errors-To: ptxdist-bounces@pengutronix.de To: ptxdist@pengutronix.de T24gV2VkLCBBcHIgMDIsIDIwMTQgYXQgMDQ6MTA6NThQTSArMDIwMCwgQWxleGFuZGVyIERhaGwg d3JvdGU6Cj4gVXBzdHJlYW0gbWlncmF0ZWQgdGhlIG9sZCBjb2RlIGJhc2UgdG8gZ2l0aHViIGlu IDIwMTE6Cj4gaHR0cHM6Ly9naXRodWIuY29tL3JhZmFlbHN0ZWlsL2xpYmNnaSDigJMgSSBnb3Qg dGhlIG9sZCBwdHhkaXN0IHBhdGNoZXMKPiBtZXJnZWQgaW4gMjAxMiBhbmQgdHdvIGZpeGVzIGZv ciBtZW0gbGVha2VzIGFzIHdlbGwuIE1lYW53aGlsZSBJIG1hZGUKPiBwdWxsIHJlcXVlc3RzIGZv ciBNaWNoYWVsJ3MgcGF0Y2ggZnJvbSBsYXN0IHllYXIgYW5kIGFub3RoZXIgZml4IG9mCj4gbWlu ZS4gSG93ZXZlciBJIGRvdWJ0IHRoZSBtYWludGFpbmVyIHdpbGwgZG8gYW5vdGhlciByZWxlYXNl IHNvb24gb3IKPiBldmVuIGF0IGFsbCwgc28gSSBhZGQgbXkgcGF0Y2hlcyBoZXJlLCB0b28uIEkn bSBzb3JyeSwgSSBzcXVlZXplZCB0aGUKPiBwdHhkaXN0IHBhdGNoZXMgaW50byBvbmUgdXBzdHJl YW0sIHNvIFJvYmVydCBsb3N0IGhpcyBjcmVkaXQgdGhlcmUsIGJ1dAo+IHRoaXMgaXMgbm90IHRv cGljIG9mIHRoaXMgc2VyaWVzIGRpc2N1c3Npb24uIDstKQo+IAo+IFBhdGNoIHNlcmllcyBpcyBy ZW9yZ2FuaXplZCB3aXRoIHB0eCBtYWdpYyBhY2NvcmRpbmcgdG8gTWljaGFlbCdzCj4gc3VnZ2Vz dGlvbnMuCj4gCj4gU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIERhaGwgPHBvc3RAbGVzcG9ja3ku ZGU+CgpUaGFua3MsIGFwcGxpZWQuCgpNaWNoYWVsCgo+IC0tLQo+ICAuLi5hdGNoZXMtZnJvbS1w dHhkaXN0LTktcGF0Y2hlcy1pbi0xLWNvbW1pdC5wYXRjaCB8ICAxNDQgKysrCj4gIC4uLi8wMDAx LWluc3RhbGwtaW50by1zZXBhcmF0ZS1kaXJlY3RvcnkucGF0Y2ggICAgIHwgICAyNCAtCj4gIC4u LjAwMi1jbGVhbnVwLWNvbXBpbGVyLWZsYWdzLWZvci1zaGFyZWQtbGliLnBhdGNoIHwgICA1NyAt Cj4gIC4uLmxpbmctd2hpdGVzcGFjZS1teS1lZGl0b3Itd291bGQtZG8tdGhpcy1hLnBhdGNoIHwg MTMzNCArKysrKysrKysrKysrKysrKysrKwo+ICBwYXRjaGVzL2xpYmNnaS0xLjAvMDAwMy1kZXN0 ZGlyLXN1cHBvcnQucGF0Y2ggICAgICB8ICAgNTcgLQo+ICAuLi4tYWxsb2NhdGVkLWJ5LXVuZXNj YXBlX3NwZWNpYWxfY2hhcnMtYWZ0ZS5wYXRjaCB8ICAgNjQgKwo+ICBwYXRjaGVzL2xpYmNnaS0x LjAvMDAwNC1jbGVhbnVwLWJ1aWxkLWxpbmUucGF0Y2ggICB8ICAgMjUgLQo+ICAuLi4tYWxsb2Nh dGVkLWZvci1yZWFkaW5nLWFuZC1wYXJzaW5nLVBPU1QtZC5wYXRjaCB8ICAgMzIgKwo+ICAuLi4v MDAwNS1GSUxFLXJlcXVpcmVzLWluY2x1ZGluZy1zdGRpby5wYXRjaCAgICAgICB8ICAgMjEgKwo+ ICBwYXRjaGVzL2xpYmNnaS0xLjAvMDAwNS1jbGVhbnVwLWNsZWFuLXRhcmdldC5wYXRjaCB8ICAg MjYgLQo+ICAuLi4vMDAwNi1jb3B5LXBhc3QtZXJyb3ItaW4taGV4dGFibGUucGF0Y2ggICAgICAg ICB8ICAgMjQgLQo+ICBwYXRjaGVzL2xpYmNnaS0xLjAvMDAwNy13cm9uZy12YXJpYWJsZS5wYXRj aCAgICAgICB8ICAgMjQgLQo+ICAuLi4vMDAwOC11c2UtaW5zdGFsbC1pbnN0ZWFkLW9mLWNwLnBh dGNoICAgICAgICAgICB8ICAgNTEgLQo+ICAuLi4vMDAwOS11c2Utc3RhbmRhcmQtZGlyZWN0b3J5 LW5hbWVzLnBhdGNoICAgICAgICB8ICAgNzkgLS0KPiAgcGF0Y2hlcy9saWJjZ2ktMS4wLzAyMDAt Zml4LXR5cG8ucGF0Y2ggICAgICAgICAgICAgfCAgIDIxICsKPiAgLi4ua2UtdGhlLWxpYnJhcnkt ZmlsZW5hbWUtbWF0Y2gtaXRzLXNvbmFtZS5wYXRjaH0gfCAgICAxICsKPiAgLi4ucGUtYnktb3B0 aW1pemluZy1oZXh0YWJsZS1pbml0LWFuZC1hY2Nlc3MucGF0Y2ggfCAgIDkzICsrCj4gIHBhdGNo ZXMvbGliY2dpLTEuMC9zZXJpZXMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMiArLQo+ ICAxOCBmaWxlcyBjaGFuZ2VkLCAxNzIxIGluc2VydGlvbnMoKyksIDM3OCBkZWxldGlvbnMoLSkK PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvbGliY2dpLTEuMC8wMDAxLWFwcGx5LXBhdGNo ZXMtZnJvbS1wdHhkaXN0LTktcGF0Y2hlcy1pbi0xLWNvbW1pdC5wYXRjaAo+ICBkZWxldGUgbW9k ZSAxMDA2NDQgcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDEtaW5zdGFsbC1pbnRvLXNlcGFyYXRlLWRp cmVjdG9yeS5wYXRjaAo+ICBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9saWJjZ2ktMS4wLzAw MDItY2xlYW51cC1jb21waWxlci1mbGFncy1mb3Itc2hhcmVkLWxpYi5wYXRjaAo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDItcmVtb3ZlLXRyYWlsaW5nLXdoaXRl c3BhY2UtbXktZWRpdG9yLXdvdWxkLWRvLXRoaXMtYS5wYXRjaAo+ICBkZWxldGUgbW9kZSAxMDA2 NDQgcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDMtZGVzdGRpci1zdXBwb3J0LnBhdGNoCj4gIGNyZWF0 ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL2xpYmNnaS0xLjAvMDAwMy1mcmVlLW1lbW9yeS1hbGxvY2F0 ZWQtYnktdW5lc2NhcGVfc3BlY2lhbF9jaGFycy1hZnRlLnBhdGNoCj4gIGRlbGV0ZSBtb2RlIDEw MDY0NCBwYXRjaGVzL2xpYmNnaS0xLjAvMDAwNC1jbGVhbnVwLWJ1aWxkLWxpbmUucGF0Y2gKPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IHBhdGNoZXMvbGliY2dpLTEuMC8wMDA0LWZyZWUtbWVtb3J5LWFs bG9jYXRlZC1mb3ItcmVhZGluZy1hbmQtcGFyc2luZy1QT1NULWQucGF0Y2gKPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IHBhdGNoZXMvbGliY2dpLTEuMC8wMDA1LUZJTEUtcmVxdWlyZXMtaW5jbHVkaW5n LXN0ZGlvLnBhdGNoCj4gIGRlbGV0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL2xpYmNnaS0xLjAvMDAw NS1jbGVhbnVwLWNsZWFuLXRhcmdldC5wYXRjaAo+ICBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hl cy9saWJjZ2ktMS4wLzAwMDYtY29weS1wYXN0LWVycm9yLWluLWhleHRhYmxlLnBhdGNoCj4gIGRl bGV0ZSBtb2RlIDEwMDY0NCBwYXRjaGVzL2xpYmNnaS0xLjAvMDAwNy13cm9uZy12YXJpYWJsZS5w YXRjaAo+ICBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDgtdXNlLWlu c3RhbGwtaW5zdGVhZC1vZi1jcC5wYXRjaAo+ICBkZWxldGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9s aWJjZ2ktMS4wLzAwMDktdXNlLXN0YW5kYXJkLWRpcmVjdG9yeS1uYW1lcy5wYXRjaAo+ICBjcmVh dGUgbW9kZSAxMDA2NDQgcGF0Y2hlcy9saWJjZ2ktMS4wLzAyMDAtZml4LXR5cG8ucGF0Y2gKPiAg cmVuYW1lIHBhdGNoZXMvbGliY2dpLTEuMC97MDAxMC1tYWtlLXRoZS1saWJyYXJ5LWZpbGVuYW1l LW1hdGNoLWl0cy1zb25hbWUucGF0Y2ggPT4gMDIwMS1tYWtlLXRoZS1saWJyYXJ5LWZpbGVuYW1l LW1hdGNoLWl0cy1zb25hbWUucGF0Y2h9ICg5NiUpCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBwYXRj aGVzL2xpYmNnaS0xLjAvMDIwMi1maXgtdW5lc2NhcGUtYnktb3B0aW1pemluZy1oZXh0YWJsZS1p bml0LWFuZC1hY2Nlc3MucGF0Y2gKPiAKPiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9saWJjZ2ktMS4w LzAwMDEtYXBwbHktcGF0Y2hlcy1mcm9tLXB0eGRpc3QtOS1wYXRjaGVzLWluLTEtY29tbWl0LnBh dGNoIGIvcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDEtYXBwbHktcGF0Y2hlcy1mcm9tLXB0eGRpc3Qt OS1wYXRjaGVzLWluLTEtY29tbWl0LnBhdGNoCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwLi5mMzExZmFiCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3BhdGNoZXMvbGliY2dp LTEuMC8wMDAxLWFwcGx5LXBhdGNoZXMtZnJvbS1wdHhkaXN0LTktcGF0Y2hlcy1pbi0xLWNvbW1p dC5wYXRjaAo+IEBAIC0wLDAgKzEsMTQ0IEBACj4gK0Zyb206IEFsZXhhbmRlciBEYWhsIDxwb3N0 QGxlc3BvY2t5LmRlPgo+ICtEYXRlOiBXZWQsIDUgU2VwIDIwMTIgMTE6MDg6MTQgKzAyMDAKPiAr U3ViamVjdDogW1BBVENIXSBhcHBseSBwYXRjaGVzIGZyb20gcHR4ZGlzdCAoOSBwYXRjaGVzIGlu IDEgY29tbWl0KQo+ICsKPiArLS0tCj4gKyBNYWtlZmlsZS5pbiAgfCAgIDY0ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArIHNyYy9j Z2kuYyAgICB8ICAgIDIgKy0KPiArIHNyYy9zdHJpbmcuYyB8ICAgIDIgKy0KPiArIDMgZmlsZXMg Y2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCj4gKwo+ICtkaWZmIC0t Z2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgo+ICtpbmRleCA2MDU2YzBjLi4yMWU0Y2U5 IDEwMDY0NAo+ICstLS0gYS9NYWtlZmlsZS5pbgo+ICsrKysgYi9NYWtlZmlsZS5pbgo+ICtAQCAt MSwyNiArMSwzMiBAQAo+ICstSU5TVEFMTCA9IEBJTlNUQUxMQAo+ICstSU5TVEFMTF9QUk9HUkFN ID0gQElOU1RBTExfUFJPR1JBTUAKPiArLUlOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACj4g KytJTlNUQUxMID0gQElOU1RBTExAIC1ECj4gKytJTlNUQUxMX1BST0dSQU0gPSBASU5TVEFMTF9Q Uk9HUkFNQCAtRAo+ICsrSU5TVEFMTF9EQVRBID0gQElOU1RBTExfREFUQUAgLUQKPiArIAo+ICsg cHJlZml4ID0gQHByZWZpeEAKPiArIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAo+ICsgCj4g Ky1TSEFSRURPUFQgPSAtc2hhcmVkCj4gKy1MSUJESVIgPSAkKHByZWZpeCkvbGliCj4gKy1JTkNE SVIgPSAkKHByZWZpeCkvaW5jbHVkZQo+ICstTUFORElSCT0gJChwcmVmaXgpL21hbi9tYW4zCj4g KytTSEFSRURPUFQgPSAtc2hhcmVkIC1zaGFyZWQgLWZQSUMsLVdsLC1zb25hbWUsbGliY2dpLnNv LjAKPiArK2xpYmRpciA9ICQocHJlZml4KS9saWIKPiArK2luY2RpciA9ICQocHJlZml4KS9pbmNs dWRlL2xpYmNnaQo+ICsrbWFuZGlyCT0gJChwcmVmaXgpL21hbi9tYW4zCj4gKyBTSEVMTCA9IC9i aW4vc2gKPiArIEVYVFJBX0xJQlMgPSAKPiArIAo+ICsgSU5DUyA9ICAtSXNyYwo+ICstRkxBR1Mg PSAtV2FsbCAtZnBpYwo+ICsrRkxBR1MgPSAtV2FsbCAtRF9SRUVOVFJBTlQKPiArIAo+ICsgT0JK UyA9IHNyYy9lcnJvci5vIHNyYy9jZ2kubyBzcmMvc2Vzc2lvbi5vIHNyYy9iYXNlNjQubyBzcmMv bWQ1Lm8gXAo+ICsgCXNyYy9zdHJpbmcubyBzcmMvZ2VuZXJhbC5vIHNyYy9saXN0Lm8gc3JjL2Nv b2tpZS5vCj4gKyAKPiArLS5jLm86ICQoQ0MpICQoRkxBR1MpIC1jICQ8Cj4gKytTSE9CSlMgPSAk KE9CSlM6Lm89LnNoLm8pCj4gKyAKPiArLWFsbDogJChPQkpTKSBzcmMvbGliY2dpLnNvCj4gKysl Lm86ICUuYwo+ICsrCSQoQ0MpICQoRkxBR1MpIC1jICQqLmMgLW8gJEAKPiArKwo+ICsrJS5zaC5v OiAlLmMKPiArKwkkKENDKSAkKEZMQUdTKSAtZlBJQyAtYyAkKi5jIC1vICRACj4gKysKPiArK2Fs bDogc3JjL2xpYmNnaS5zbyBzcmMvbGliY2dpLmEKPiArIAo+ICsgCUBlY2hvICIiCj4gKyAJQGVj aG8gIiIKPiArQEAgLTQzLDIwICs0OSwxOSBAQCBhbGw6ICQoT0JKUykgc3JjL2xpYmNnaS5zbwo+ ICsgCj4gKyAKPiArIHNoYXJlZDogc3JjL2xpYmNnaS5zbwo+ICstCWNwIHNyYy9saWJjZ2kuc28g JChMSUJESVIpCj4gKysJJChJTlNUQUxMKSAtbSAwNjQ0IHNyYy9saWJjZ2kuc28gJChERVNURElS KSQobGliZGlyKQo+ICsgCj4gKyBzcmMvbGliY2dpLmE6ICQoT0JKUykKPiArIAkkKEFSKSByYyBz cmMvbGliY2dpLmEgJChPQkpTKQo+ICsgCj4gKy1zcmMvbGliY2dpLnNvOiBzcmMvbGliY2dpLmEK PiArLQkkKENDKSAkKFNIQVJFRE9QVCkgLW8gc3JjL2xpYmNnaS5zbyAkKE9CSlMpICQoRVhUUkFf TElCUykKPiArK3NyYy9saWJjZ2kuc286ICQoU0hPQkpTKQo+ICsrCSQoQ0MpICQoU0hBUkVET1BU KSAtbyBzcmMvbGliY2dpLnNvICQoU0hPQkpTKSAkKEVYVFJBX0xJQlMpCj4gKyAKPiArIGluc3Rh bGw6Cj4gKy0JY3Agc3JjL2xpYmNnaS5hICQoTElCRElSKQo+ICstCWNwIHNyYy9saWJjZ2kuc28g JChMSUJESVIpCj4gKy0JY3Agc3JjL2NnaS5oICQoSU5DRElSKQo+ICstCWNwIHNyYy9zZXNzaW9u LmggJChJTkNESVIpCj4gKy0KPiArKwkkKElOU1RBTEwpIC1tIDA2NDQgc3JjL2xpYmNnaS5hICQo REVTVERJUikvJChsaWJkaXIpL2xpYmNnaS5hCj4gKysJJChJTlNUQUxMKSAtbSAwNjQ0IHNyYy9s aWJjZ2kuc28gJChERVNURElSKS8kKGxpYmRpcikvbGliY2dpLnNvCj4gKysJJChJTlNUQUxMKSAt bSAwNjQ0IHNyYy9jZ2kuaCAkKERFU1RESVIpLyQoaW5jZGlyKS9jZ2kuaAo+ICsrCSQoSU5TVEFM TCkgLW0gMDY0NCBzcmMvc2Vzc2lvbi5oICQoREVTVERJUikvJChpbmNkaXIpL3Nlc3Npb24uaAo+ ICsgCj4gKyBzcmMvZXJyb3Iubzogc3JjL2Vycm9yLmMgc3JjL2Vycm9yLmgKPiArIHNyYy9jZ2ku bzogc3JjL2NnaS5jIHNyYy9jZ2kuaAo+ICtAQCAtNjksMjAgKzc0LDIxIEBAIHNyYy9nZW5lcmFs Lm86IHNyYy9nZW5lcmFsLmMKPiArIHNyYy9saXN0Lm86IHNyYy9saXN0LmMKPiArIAo+ICsgY2xl YW46Cj4gKy0JZmluZCBzcmMvIC1uYW1lICouKm8gLWV4ZWMgcm0gLWYge30gXDsKPiArKwlmaW5k IHNyYy8gLW5hbWUgKi5vIC1leGVjIHJtIC1mIHt9IFw7Cj4gKyAJZmluZCBzcmMvIC1uYW1lICou YSAtZXhlYyBybSAtZiB7fSBcOwo+ICsrCWZpbmQgc3JjLyAtbmFtZSAqLnNvIC1leGVjIHJtIC1m IHt9IFw7Cj4gKyAKPiArIHVuaW5zdGFsbDogY2xlYW4KPiArLQlybSAtZiAkKExJQkRJUikvbGli Y2dpLioKPiArLQlybSAtZiAkKElOQ0RJUikvY2dpLmgKPiArLQlybSAtZiAkKElOQ0RJUikvc2Vz c2lvbi5oCj4gKy0Jcm0gLWYgJChNQU5ESVIpL2xpYmNnaSoKPiArKwlybSAtZiAkKGxpYmRpcikv bGliY2dpLioKPiArKwlybSAtZiAkKGluY2RpcikvY2dpLmgKPiArKwlybSAtZiAkKGluY2Rpcikv c2Vzc2lvbi5oCj4gKysJcm0gLWYgJChtYW5kaXIpL2xpYmNnaSoKPiArIAo+ICsgaW5zdGFsbF9t YW46Cj4gKy0JY3AgZG9jL21hbi9tYW4zL2xpYmNnaV9iYXNlNjQuMyAkKE1BTkRJUikKPiArLQlj cCBkb2MvbWFuL21hbjMvbGliY2dpX2NnaS4zICQoTUFORElSKQo+ICstCWNwIGRvYy9tYW4vbWFu My9saWJjZ2lfZ2VuZXJhbC4zICQoTUFORElSKQo+ICstCWNwIGRvYy9tYW4vbWFuMy9saWJjZ2lf c3RyaW5nLjMgJChNQU5ESVIpCj4gKy0JY3AgZG9jL21hbi9tYW4zL2xpYmNnaV9zZXNzaW9uLjMg JChNQU5ESVIpCj4gKy0JY3AgZG9jL21hbi9tYW4zL2xpYmNnaV9jb29raWUuMyAkKE1BTkRJUikK PiArKwljcCBkb2MvbWFuL21hbjMvbGliY2dpX2Jhc2U2NC4zICQoREVTVERJUikkKG1hbmRpcikK PiArKwljcCBkb2MvbWFuL21hbjMvbGliY2dpX2NnaS4zICQoREVTVERJUikkKG1hbmRpcikKPiAr KwljcCBkb2MvbWFuL21hbjMvbGliY2dpX2dlbmVyYWwuMyAkKERFU1RESVIpJChtYW5kaXIpCj4g KysJY3AgZG9jL21hbi9tYW4zL2xpYmNnaV9zdHJpbmcuMyAkKERFU1RESVIpJChtYW5kaXIpCj4g KysJY3AgZG9jL21hbi9tYW4zL2xpYmNnaV9zZXNzaW9uLjMgJChERVNURElSKSQobWFuZGlyKQo+ ICsrCWNwIGRvYy9tYW4vbWFuMy9saWJjZ2lfY29va2llLjMgJChERVNURElSKSQobWFuZGlyKQo+ ICsgCj4gK2RpZmYgLS1naXQgYS9zcmMvY2dpLmMgYi9zcmMvY2dpLmMKPiAraW5kZXggZmIzNzQ0 NS4uZWNhOWFjMiAxMDA2NDQKPiArLS0tIGEvc3JjL2NnaS5jCj4gKysrKyBiL3NyYy9jZ2kuYwo+ ICtAQCAtMzM2LDcgKzMzNiw3IEBAIHZvaWQgaW5pdF9oZXhfdGFibGUoKQo+ICsgCWhleHRhYmxl WydiJ10gPSAxMTsKPiArIAloZXh0YWJsZVsnYyddID0gMTI7Cj4gKyAJaGV4dGFibGVbJ2QnXSA9 IDEzOwo+ICstCWhleHRhYmxlWydlJ10gPSAxMzsKPiArKwloZXh0YWJsZVsnZSddID0gMTQ7Cj4g KyAJaGV4dGFibGVbJ2YnXSA9IDE1Owo+ICsgCWhleHRhYmxlWydBJ10gPSAxMDsKPiArIAloZXh0 YWJsZVsnQiddID0gMTE7Cj4gK2RpZmYgLS1naXQgYS9zcmMvc3RyaW5nLmMgYi9zcmMvc3RyaW5n LmMKPiAraW5kZXggMmNmY2JlMi4uM2RjNDM3ZiAxMDA2NDQKPiArLS0tIGEvc3JjL3N0cmluZy5j Cj4gKysrKyBiL3NyYy9zdHJpbmcuYwo+ICtAQCAtNTg0LDcgKzU4NCw3IEBAIGNoYXIgKm1ha2Vf c3RyaW5nKGNoYXIgKnMsIC4uLikKPiArIAo+ICsgCXZhX3N0YXJ0KHB0ciwgcyk7Cj4gKyAKPiAr LQl2YV9jb3B5KGJrcCwgc3RyKTsKPiArKwl2YV9jb3B5KGJrcCwgcHRyKTsKPiArIAlsZW4gPSBz dHJsZW4ocyk7Cj4gKyAKPiArIAl3aGlsZSAoKnN0cikgewo+IGRpZmYgLS1naXQgYS9wYXRjaGVz L2xpYmNnaS0xLjAvMDAwMS1pbnN0YWxsLWludG8tc2VwYXJhdGUtZGlyZWN0b3J5LnBhdGNoIGIv cGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDEtaW5zdGFsbC1pbnRvLXNlcGFyYXRlLWRpcmVjdG9yeS5w YXRjaAo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IGE2ZGVhMzQuLjAwMDAwMDAK PiAtLS0gYS9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwMS1pbnN0YWxsLWludG8tc2VwYXJhdGUtZGly ZWN0b3J5LnBhdGNoCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDI0ICswLDAgQEAKPiAtRnJvbTog Um9iZXJ0IFNjaHdlYmVsIDxyLnNjaHdlYmVsQHBlbmd1dHJvbml4LmRlPgo+IC1EYXRlOiBGcmks IDI2IE9jdCAyMDEyIDIxOjQ2OjIxICswMjAwCj4gLVN1YmplY3Q6IFtQQVRDSF0gaW5zdGFsbCBp bnRvIHNlcGFyYXRlIGRpcmVjdG9yeQo+IC0KPiAtVXN1YWxseSwgbGliY2dpIGhlYWRlciBmaWxl cyBhcmUgaW5zdGFsbGVkIGludG8gL3Vzci9pbmNsdWRlL2xpYmNnaS8uCj4gLQo+IC1TaWduZWQt b2ZmLWJ5OiBSb2JlcnQgU2Nod2ViZWwgPHIuc2Nod2ViZWxAcGVuZ3V0cm9uaXguZGU+Cj4gLS0t LQo+IC0gTWFrZWZpbGUuaW4gfCAgICAyICstCj4gLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKPiAtCj4gLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01h a2VmaWxlLmluCj4gLWluZGV4IDYwNTZjMGMuLjc1OTFiNDggMTAwNjQ0Cj4gLS0tLSBhL01ha2Vm aWxlLmluCj4gLSsrKyBiL01ha2VmaWxlLmluCj4gLUBAIC03LDcgKzcsNyBAQCBleGVjX3ByZWZp eCA9IEBleGVjX3ByZWZpeEAKPiAtIAo+IC0gU0hBUkVET1BUID0gLXNoYXJlZAo+IC0gTElCRElS ID0gJChwcmVmaXgpL2xpYgo+IC0tSU5DRElSID0gJChwcmVmaXgpL2luY2x1ZGUKPiAtK0lOQ0RJ UiA9ICQocHJlZml4KS9pbmNsdWRlL2xpYmNnaQo+IC0gTUFORElSCT0gJChwcmVmaXgpL21hbi9t YW4zCj4gLSBTSEVMTCA9IC9iaW4vc2gKPiAtIEVYVFJBX0xJQlMgPSAKPiBkaWZmIC0tZ2l0IGEv cGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDItY2xlYW51cC1jb21waWxlci1mbGFncy1mb3Itc2hhcmVk LWxpYi5wYXRjaCBiL3BhdGNoZXMvbGliY2dpLTEuMC8wMDAyLWNsZWFudXAtY29tcGlsZXItZmxh Z3MtZm9yLXNoYXJlZC1saWIucGF0Y2gKPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCA2MTY3MGNlLi4wMDAwMDAwCj4gLS0tIGEvcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDItY2xlYW51 cC1jb21waWxlci1mbGFncy1mb3Itc2hhcmVkLWxpYi5wYXRjaAo+ICsrKyAvZGV2L251bGwKPiBA QCAtMSw1NyArMCwwIEBACj4gLUZyb206IFJvYmVydCBTY2h3ZWJlbCA8ci5zY2h3ZWJlbEBwZW5n dXRyb25peC5kZT4KPiAtRGF0ZTogRnJpLCAyNiBPY3QgMjAxMiAyMTo0NjoyMSArMDIwMAo+IC1T dWJqZWN0OiBbUEFUQ0hdIGNsZWFudXAgY29tcGlsZXIgZmxhZ3MgZm9yIHNoYXJlZCBsaWIKPiAt Cj4gLVNlcGFyYXRlIGJ1aWxkaW5nIG9mIHNoYXJlZCBhbmQgbm9uLXNoYXJlZCBvYmplY3RzLgo+ IC0KPiAtU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFNjaHdlYmVsIDxyLnNjaHdlYmVsQHBlbmd1dHJv bml4LmRlPgo+IC0tLS0KPiAtIE1ha2VmaWxlLmluIHwgICAxNSArKysrKysrKysrLS0tLS0KPiAt IDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+IC0KPiAt ZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KPiAtaW5kZXggNzU5MWI0OC4u ZTM4ZTc3NiAxMDA2NDQKPiAtLS0tIGEvTWFrZWZpbGUuaW4KPiAtKysrIGIvTWFrZWZpbGUuaW4K PiAtQEAgLTUsNyArNSw3IEBAIElOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACj4gLSBwcmVm aXggPSBAcHJlZml4QAo+IC0gZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACj4gLSAKPiAtLVNI QVJFRE9QVCA9IC1zaGFyZWQKPiAtK1NIQVJFRE9QVCA9IC1zaGFyZWQgLXNoYXJlZCAtZlBJQyAt V2wsLXNvbmFtZSxsaWJjZ2kuc28uMAo+IC0gTElCRElSID0gJChwcmVmaXgpL2xpYgo+IC0gSU5D RElSID0gJChwcmVmaXgpL2luY2x1ZGUvbGliY2dpCj4gLSBNQU5ESVIJPSAkKHByZWZpeCkvbWFu L21hbjMKPiAtQEAgLTEzLDE0ICsxMywxOSBAQCBTSEVMTCA9IC9iaW4vc2gKPiAtIEVYVFJBX0xJ QlMgPSAKPiAtIAo+IC0gSU5DUyA9ICAtSXNyYwo+IC0tRkxBR1MgPSAtV2FsbCAtZnBpYwo+IC0r RkxBR1MgPSAtV2FsbCAtRF9SRUVOVFJBTlQKPiAtIAo+IC0gT0JKUyA9IHNyYy9lcnJvci5vIHNy Yy9jZ2kubyBzcmMvc2Vzc2lvbi5vIHNyYy9iYXNlNjQubyBzcmMvbWQ1Lm8gXAo+IC0gCXNyYy9z dHJpbmcubyBzcmMvZ2VuZXJhbC5vIHNyYy9saXN0Lm8gc3JjL2Nvb2tpZS5vCj4gLSAKPiAtK1NI T0JKUyA9ICQoT0JKUzoubz0uc2gubykKPiAtKwo+IC0gLmMubzogJChDQykgJChGTEFHUykgLWMg JDwKPiAtIAo+IC0tYWxsOiAkKE9CSlMpIHNyYy9saWJjZ2kuc28KPiAtKyUuc2gubzogJS5jCj4g LSsJJChDQykgJChGTEFHUykgLWZQSUMgLWMgJCouYyAtbyAkQAo+IC0rCj4gLSthbGw6IHNyYy9s aWJjZ2kuc28gc3JjL2xpYmNnaS5hCj4gLSAKPiAtIAlAZWNobyAiIgo+IC0gCUBlY2hvICIiCj4g LUBAIC00OCw4ICs1Myw4IEBAIHNoYXJlZDogc3JjL2xpYmNnaS5zbwo+IC0gc3JjL2xpYmNnaS5h OiAkKE9CSlMpCj4gLSAJJChBUikgcmMgc3JjL2xpYmNnaS5hICQoT0JKUykKPiAtIAo+IC0tc3Jj L2xpYmNnaS5zbzogc3JjL2xpYmNnaS5hCj4gLS0JJChDQykgJChTSEFSRURPUFQpIC1vIHNyYy9s aWJjZ2kuc28gJChPQkpTKSAkKEVYVFJBX0xJQlMpCj4gLStzcmMvbGliY2dpLnNvOiAkKFNIT0JK UykKPiAtKwkkKENDKSAkKFNIQVJFRE9QVCkgLW8gc3JjL2xpYmNnaS5zbyAkKFNIT0JKUykgJChF WFRSQV9MSUJTKQo+IC0gCj4gLSBpbnN0YWxsOgo+IC0gCWNwIHNyYy9saWJjZ2kuYSAkKExJQkRJ UikKPiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDItcmVtb3ZlLXRyYWlsaW5n LXdoaXRlc3BhY2UtbXktZWRpdG9yLXdvdWxkLWRvLXRoaXMtYS5wYXRjaCBiL3BhdGNoZXMvbGli Y2dpLTEuMC8wMDAyLXJlbW92ZS10cmFpbGluZy13aGl0ZXNwYWNlLW15LWVkaXRvci13b3VsZC1k by10aGlzLWEucGF0Y2gKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmNi MDM4M2MKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDItcmVt b3ZlLXRyYWlsaW5nLXdoaXRlc3BhY2UtbXktZWRpdG9yLXdvdWxkLWRvLXRoaXMtYS5wYXRjaAo+ IEBAIC0wLDAgKzEsMTMzNCBAQAo+ICtGcm9tOiBBbGV4YW5kZXIgRGFobCA8cG9zdEBsZXNwb2Nr eS5kZT4KPiArRGF0ZTogV2VkLCAyNCBPY3QgMjAxMiAxMToyMDoyNCArMDIwMAo+ICtTdWJqZWN0 OiBbUEFUQ0hdIHJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIChteSBlZGl0b3Igd291bGQgZG8g dGhpcyBhbGwgdGhlCj4gKyB0aW1lKQo+ICsKPiArLS0tCj4gKyBzcmMvYmFzZTY0LmMgIHwgICA2 MCArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQo+ICsgc3JjL2NnaS5jICAgICB8ICAgNjIg KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4gKyBzcmMvY2dpLmggICAgIHwgICAgOCAr Ky0tCj4gKyBzcmMvY29va2llLmMgIHwgICAyMCArKysrKy0tLS0tCj4gKyBzcmMvZXJyb3IuYyAg IHwgICAgMiArLQo+ICsgc3JjL2dlbmVyYWwuYyB8ICAgNTAgKysrKysrKysrKysrLS0tLS0tLS0t LS0tCj4gKyBzcmMvbGlzdC5jICAgIHwgICAyNCArKysrKystLS0tLS0KPiArIHNyYy9tZDUuYyAg ICAgfCAgICA2ICstLQo+ICsgc3JjL3Nlc3Npb24uYyB8ICAxMTggKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gKyBzcmMvc3RyaW5nLmMg IHwgICA3NCArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KPiArIDEwIGZpbGVz IGNoYW5nZWQsIDIxMiBpbnNlcnRpb25zKCspLCAyMTIgZGVsZXRpb25zKC0pCj4gKwo+ICtkaWZm IC0tZ2l0IGEvc3JjL2Jhc2U2NC5jIGIvc3JjL2Jhc2U2NC5jCj4gK2luZGV4IGE2ZTVkNWEuLjky MzFmODQgMTAwNjQ0Cj4gKy0tLSBhL3NyYy9iYXNlNjQuYwo+ICsrKysgYi9zcmMvYmFzZTY0LmMK PiArQEAgLTEsNiArMSw2IEBACj4gKyAvKgo+ICsgCUxpYkNHSSBiYXNlNjQgbWFuaXB1bGF0aW9u IGZ1bmN0aW9ucyBpcyBleHRyZW1seSBiYXNlZCBvbiB0aGUgd29yayBvZiBCb2IgVG93ZXIsCj4g Ky0JZnJvbSBpdHMgcHJvamVjIGh0dHA6Ly9iYXNlNjQuc291cmNlZm9yZ2UubmV0LiBUaGUgZnVu Y3Rpb25zIHdlcmUgYSBiaXQgbW9kaWNhdGVkLiAKPiArKwlmcm9tIGl0cyBwcm9qZWMgaHR0cDov L2Jhc2U2NC5zb3VyY2Vmb3JnZS5uZXQuIFRoZSBmdW5jdGlvbnMgd2VyZSBhIGJpdCBtb2RpY2F0 ZWQuCj4gKyAJQWJvdmUgaXMgdGhlIE1JVCBsaWNlbnNlIGZyb20gYjY0LmMgb3JpZ2luYWwgY29k ZToKPiArIAo+ICsgTElDRU5DRTogICAgICAgIENvcHlyaWdodCAoYykgMjAwMSBCb2IgVHJvd2Vy LCBUcmFudG9yIFN0YW5kYXJkIFN5c3RlbXMgSW5jLgo+ICtAQCAtNDYsMTkgKzQ2LDE5IEBAIHZv aWQgZW5jb2RlYmxvY2soIHVuc2lnbmVkIGNoYXIgaW5bM10sIHVuc2lnbmVkIGNoYXIgb3V0WzRd LCBpbnQgbGVuICkKPiArIH0KPiArIAo+ICsgdm9pZCBkZWNvZGVibG9jayggdW5zaWduZWQgY2hh ciBpbls0XSwgdW5zaWduZWQgY2hhciBvdXRbM10gKQo+ICsteyAgIAo+ICsrewo+ICsgCW91dFsw XSA9ICh1bnNpZ25lZCBjaGFyICkgKGluWzBdIDw8IDIgfCBpblsxXSA+PiA0KTsKPiArIAlvdXRb MV0gPSAodW5zaWduZWQgY2hhciApIChpblsxXSA8PCA0IHwgaW5bMl0gPj4gMik7Cj4gKyAJb3V0 WzJdID0gKHVuc2lnbmVkIGNoYXIgKSAoKChpblsyXSA8PCA2KSAmIDB4YzApIHwgaW5bM10pOwo+ ICsgfQo+ICsgCj4gKy0vKiogCj4gKysvKioKPiArICogQGluZ3JvdXAgbGliY2dpX3N0cmluZwo+ ICsgKi8KPiArIAo+ICsgLyoqCj4gKyAqIEVuY29kZXMgYSBnaXZlbiB0cmluZyB0byBpdHMgYmFz ZTY0IGZvcm0uCj4gKy0qIAo+ICsrKgo+ICsgKiBAcGFyYW0gKnN0ciBTdHJpbmcgdG8gY29udmVy dAo+ICsgKiBAcmV0dXJuIEJhc2U2NCBlbmNvZGVkIFN0cmluZwo+ICsgKiBAc2VlIHN0cl9iYXNl NjRfZGVjb2RlCj4gK0BAIC02OSw4NCArNjksODQgQEAgY2hhciAqc3RyX2Jhc2U2NF9lbmNvZGUo Y2hhciAqc3RyKQo+ICsgCXVuc2lnbmVkIGludCBpLCBsZW4sIGJsb2Nrc291dCA9IDAsIGxpbmVz aXplID0gc3RybGVuKHN0cik7Cj4gKyAJY2hhciAqdG1wID0gc3RyOwo+ICsgCWNoYXIgKnJlc3Vs dCA9IChjaGFyICopbWFsbG9jKChsaW5lc2l6ZSArIDMgLSBsaW5lc2l6ZSAlIDMpICogNCAvIDMg KyAxKTsKPiArLQkKPiArKwo+ICsgCWlmICghcmVzdWx0KQo+ICsgCQlsaWJjZ2lfZXJyb3IoRV9N RU1PUlksICJGYWlsZWQgdG8gYWxsb2MgbWVtb3J5IGF0IGJhc2U2NC5jIik7Cj4gKy0JCQo+ICsr Cj4gKyAJd2hpbGUgKCp0bXApIHsKPiArIAkJbGVuID0gMDsKPiArIAo+ICsgCQlmb3IoIGkgPSAw OyBpIDwgMzsgaSsrICkgewo+ICsgCQkJaW5baV0gPSAodW5zaWduZWQgY2hhcikoKnRtcCk7Cj4g Ky0JCQkKPiArKwo+ICsgCQkJaWYgKCp0bXApCj4gKyAJCQkJbGVuKys7Cj4gKyAJCQllbHNlCj4g KyAJCQkJaW5baV0gPSAwOwo+ICstCQkJCj4gKysKPiArIAkJCXRtcCsrOwo+ICsgCQl9Cj4gKy0J CQo+ICsrCj4gKyAJCWlmKCBsZW4gKSB7Cj4gKyAJCQllbmNvZGVibG9jayggaW4sIG91dCwgbGVu KTsKPiArLQkJCj4gKy0JCQlmb3IoIGkgPSAwOyBpIDwgNDsgaSsrICkgCj4gKysKPiArKwkJCWZv ciggaSA9IDA7IGkgPCA0OyBpKysgKQo+ICsgCQkJCXJlc3VsdFtibG9ja3NvdXQrK10gPSBvdXRb aV07Cj4gKy0JCX0JCQo+ICsrCQl9Cj4gKyAJfQo+ICstCQo+ICsrCj4gKyAJcmVzdWx0W2Jsb2Nr c291dF0gPSAnXDAnOwo+ICsgCXJldHVybiByZXN1bHQ7Cj4gKyB9Cj4gKyAKPiArLS8qKiAKPiAr Ky8qKgo+ICsgKiBAaW5ncm91cCBsaWJjZ2lfc3RyaW5nCj4gKyAqLwo+ICsgCj4gKyAvKioKPiAr ICogRGVjb2RlIGEgYmFzZTY0IGVuY29kZWQgc3RyaW5nLgo+ICstKiAKPiArKyoKPiArICogQHBh cmFtICpzdHIgRW5jb2RlZCBTdHJpbmcgdG8gZGVjb2RlCj4gKyAqIEByZXR1cm4gVGhlIGRlY29k ZWQgc3RyaW5nCj4gKyAqIEBzZWUgc3RyX2Jhc2U2NF9lbmNvZGUKPiArICoqLwo+ICsgY2hhciAq c3RyX2Jhc2U2NF9kZWNvZGUoY2hhciAqc3RyKQo+ICstewkKPiArK3sKPiArIAl1bnNpZ25lZCBj aGFyIGluWzRdLCBvdXRbM10sIHY7Cj4gKyAJdW5zaWduZWQgaW50IGksIGxlbiwgcG9zID0gMDsK PiArIAljaGFyICp0bXAgPSBzdHI7Cj4gKy0JCj4gKysKPiArIAljaGFyICpyZXN1bHQgPSAoY2hh ciAqKW1hbGxvYyhzdHJsZW4oc3RyKSArIDEpOwo+ICsgCWlmICghcmVzdWx0KQo+ICsgCQlsaWJj Z2lfZXJyb3IoRV9NRU1PUlksICJGYWlsZWQgdG8gYWxsb2MgbWVtb3J5IGF0IGJhc2U2NC5jIik7 Cj4gKy0JCQo+ICsrCj4gKyAJd2hpbGUoKnRtcCkgewo+ICsgCQlmb3IoIGxlbiA9IDAsIGkgPSAw OyBpIDwgNCAmJiAqdG1wOyBpKysgKSB7Cj4gKyAJCQl2ID0gMDsKPiArLQkJCQo+ICstCQkJd2hp bGUoKnRtcCAmJiB2ID09IDAgKSB7CQkJCj4gKy0JCQkJdiA9ICh1bnNpZ25lZCBjaGFyKSgqdG1w KTsJCQkJCj4gKy0JCQkJdiA9ICh1bnNpZ25lZCBjaGFyKSAoKHYgPCA0MyB8fCB2ID4gMTIyKSA/ IDAgOiBjZDY0WyB2IC0gNDMgXSk7CQkJCQo+ICstCQkJCQo+ICsrCj4gKysJCQl3aGlsZSgqdG1w ICYmIHYgPT0gMCApIHsKPiArKwkJCQl2ID0gKHVuc2lnbmVkIGNoYXIpKCp0bXApOwo+ICsrCQkJ CXYgPSAodW5zaWduZWQgY2hhcikgKCh2IDwgNDMgfHwgdiA+IDEyMikgPyAwIDogY2Q2NFsgdiAt IDQzIF0pOwo+ICsrCj4gKyAJCQkJaWYoIHYgKQo+ICsgCQkJCQl2ID0gKHVuc2lnbmVkIGNoYXIp ICgodiA9PSAnJCcpID8gMCA6IHYgLSA2MSk7Cj4gKy0JCQkJCQo+ICsrCj4gKyAJCQkJdG1wKys7 Cj4gKyAJCQl9Cj4gKy0JCQkKPiArKwo+ICsgCQkJaWYoKnRtcCkgewo+ICsgCQkJCWxlbisrOwo+ ICstCQkJCQo+ICstCQkJCWlmKCB2ICkgCj4gKysKPiArKwkJCQlpZiggdiApCj4gKyAJCQkJCWlu W2ldID0gKHVuc2lnbmVkIGNoYXIpICh2IC0gMSk7Cj4gKyAJCQl9Cj4gKy0JCQllbHNlIAo+ICsr CQkJZWxzZQo+ICsgCQkJCWluW2ldID0gMDsKPiArIAkJfQo+ICstCQkKPiArKwo+ICsgCQlpZihs ZW4pIHsKPiArIAkJCWRlY29kZWJsb2NrKCBpbiwgb3V0ICk7Cj4gKy0JCQkKPiArKwo+ICsgCQkJ Zm9yKCBpID0gMDsgaSA8IGxlbiAtIDE7IGkrKyApCj4gKyAJCQkJcmVzdWx0W3BvcysrXSA9IG91 dFtpXTsKPiArIAkJfQo+ICtkaWZmIC0tZ2l0IGEvc3JjL2NnaS5jIGIvc3JjL2NnaS5jCj4gK2lu ZGV4IGVjYTlhYzIuLmU5ZDc2YWUgMTAwNjQ0Cj4gKy0tLSBhL3NyYy9jZ2kuYwo+ICsrKysgYi9z cmMvY2dpLmMKPiArQEAgLTI3LDcgKzI3LDcgQEAKPiArICNpbmNsdWRlICJjZ2kuaCIKPiArICNp bmNsdWRlICJlcnJvci5oIgo+ICsgCj4gKy0vLyBXaG93Li4uIGlmIGhleHRhYmxlIGFycmF5IGhh cyBhIGxlbmd0aCBsZXNzIHRoYW4gMjU2LCAKPiArKy8vIFdob3cuLi4gaWYgaGV4dGFibGUgYXJy YXkgaGFzIGEgbGVuZ3RoIGxlc3MgdGhhbiAyNTYsCj4gKyAvLyB0aGUgY2dpX3VuZXNjYXBlX3Nw ZWNpYWxfY2hhcnMgZnVuY3Rpb24gd2lsbCBmYWlsLiAgQW5kIEkgZG9uJ3Qga25vdyB3aHkKPiAr IHN0YXRpYyBpbnQgaGV4dGFibGVbMjU2XTsKPiArIAo+ICtAQCAtNjEsMTMgKzYxLDEzIEBAIGZv cm12YXJzICpwcm9jZXNzX2RhdGEoY2hhciAqcXVlcnksIGZvcm12YXJzICoqc3RhcnQsIGZvcm12 YXJzICoqbGFzdCwgY29uc3QgY2hhCj4gKyAJYXV4ID0gcXVlcnk7Cj4gKyAJd2hpbGUgKCpxdWVy eSkgewo+ICsgCQlwb3NpdGlvbiA9IDA7Cj4gKy0JCQkJCj4gKysKPiArIAkJZGF0YSA9IChmb3Jt dmFycyAqKW1hbGxvYyhzaXplb2YoZm9ybXZhcnMpKTsKPiArIAkJaWYgKCFkYXRhKQo+ICsgCQkJ bGliY2dpX2Vycm9yKEVfTUVNT1JZLCAiJXMsIGxpbmUgJXMiLCBfX0ZJTEVfXywgX19MSU5FX18p Owo+ICstCQkJCj4gKy0JCW1lbXNldChkYXRhLCAwLCBzaXplb2YoZm9ybXZhcnMpKTsJCQkJCQkJ Cj4gKy0JCQo+ICsrCj4gKysJCW1lbXNldChkYXRhLCAwLCBzaXplb2YoZm9ybXZhcnMpKTsKPiAr Kwo+ICsgCQkvLyBTY2FucyB0aGUgc3RyaW5nIGZvciB0aGUgbmV4dCAnZGVsaW0nIGNoYXJhY3Rl cgo+ICsgCQl3aGlsZSAoKmF1eCAmJiAoKmF1eCAhPSBkZWxpbSkpIHsKPiArIAkJCXBvc2l0aW9u Kys7Cj4gK0BAIC04Niw3ICs4Niw3IEBAIGZvcm12YXJzICpwcm9jZXNzX2RhdGEoY2hhciAqcXVl cnksIGZvcm12YXJzICoqc3RhcnQsIGZvcm12YXJzICoqbGFzdCwgY29uc3QgY2hhCj4gKyAKPiAr IAkJc3RybmNweShkYXRhLT5uYW1lLCBxdWVyeSwgcG9zaXRpb24pOwo+ICsgCQlkYXRhLT5uYW1l W3Bvc2l0aW9uXSA9ICdcMCc7Cj4gKy0JCQo+ICsrCj4gKyAJCXF1ZXJ5ID0gYXV4Owo+ICsgCQlw b3NpdGlvbiA9IDA7Cj4gKyAJCXdoaWxlICgqYXV4ICYmICgqYXV4ICE9IHNlcCkpIHsKPiArQEAg LTk3LDI3ICs5NywyNyBAQCBmb3JtdmFycyAqcHJvY2Vzc19kYXRhKGNoYXIgKnF1ZXJ5LCBmb3Jt dmFycyAqKnN0YXJ0LCBmb3JtdmFycyAqKmxhc3QsIGNvbnN0IGNoYQo+ICsgCQkJCQlwb3NpdGlv bisrOwo+ICsgCQkJCX0KPiArIAkJCX0KPiArLQkJCWVsc2UJCQkKPiArKwkJCWVsc2UKPiArIAkJ CQlwb3NpdGlvbisrOwo+ICstCQkJCQo+ICsrCj4gKyAJCQlhdXgrKzsKPiArIAkJCWkrKzsKPiAr IAkJfQo+ICstCQkJCQo+ICsrCj4gKyAJCWlmICgqYXV4KSB7Cj4gKyAJCQlhdXgrKzsKPiArIAkJ CWkrKzsKPiArIAkJfQo+ICstCQkKPiArKwo+ICsgCQlkYXRhLT52YWx1ZSA9IChjaGFyICopbWFs bG9jKHBvc2l0aW9uKzEpOwo+ICsgCQlpZiAoZGF0YS0+dmFsdWUgPT0gTlVMTCkKPiArIAkJCWxp YmNnaV9lcnJvcihFX01FTU9SWSwgIiVzLCBsaW5lICVzIiwgX19GSUxFX18sIF9fTElORV9fKTsK PiArIAo+ICsgCQlzdHJuY3B5KGRhdGEtPnZhbHVlLCBjZ2lfdW5lc2NhcGVfc3BlY2lhbF9jaGFy cyhxdWVyeSksIHBvc2l0aW9uKTsKPiArIAkJZGF0YS0+dmFsdWVbcG9zaXRpb25dID0gJ1wwJzsK PiArLQkJCj4gKysKPiArIAkJc2xpc3RfYWRkKGRhdGEsIHN0YXJ0LCBsYXN0KTsKPiArLQkJCj4g KysKPiArIAkJcXVlcnkgPSBhdXg7Cj4gKyAJfQo+ICsgCj4gK0BAIC0xMzQsOCArMTM0LDggQEAg Zm9ybXZhcnMgKnByb2Nlc3NfZGF0YShjaGFyICpxdWVyeSwgZm9ybXZhcnMgKipzdGFydCwgZm9y bXZhcnMgKipsYXN0LCBjb25zdCBjaGEKPiArIC8qKgo+ICsgKiBQcm9jZXNzIEhUTUwgZm9ybSBv ciBVUkwgZGF0YS4KPiArICogVXNlZCB0byByZXRyaWV2ZSBHRVQgb3IgUE9TVCBkYXRhLiBJdCBo YW5kbGVzIGF1dG9tYXRpY2FseSB0aGUgY29ycmVjdCBSRVFVRVNUX01FVEhPRCwgc28geW91IGRv bid0IG5lZWQgdG8gYWZyYWlkIGFib3V0IGl0Lgo+ICstKiBAcmV0dXJuIFJldHVybnMgdGhlIGNv bnRlbnRzIG9mIFVSTCBvciBGT1JNIGludG8gYSBmb3JtdmFycyB2YXJpYWJsZSwgb3IgTlVMTCBp ZiBGQUxTRS4gTW9zdCBvZiB0aW1lLCB5b3UgCj4gKy0qIGRvbid0IG5lZWQgYW55IHZhcmlhYmxl IHRvIHN0b3JlIHRoZSBmb3JtIGRhdGEsIGJlY2F1c2UgaXMgdXNlZCBhbiBpbnRlcm5hbCB2YXJp YWJsZSB0byBtYW5pcHVsYXRlIHRoZSBjb250ZW50cy4gCj4gKysqIEByZXR1cm4gUmV0dXJucyB0 aGUgY29udGVudHMgb2YgVVJMIG9yIEZPUk0gaW50byBhIGZvcm12YXJzIHZhcmlhYmxlLCBvciBO VUxMIGlmIEZBTFNFLiBNb3N0IG9mIHRpbWUsIHlvdQo+ICsrKiBkb24ndCBuZWVkIGFueSB2YXJp YWJsZSB0byBzdG9yZSB0aGUgZm9ybSBkYXRhLCBiZWNhdXNlIGlzIHVzZWQgYW4gaW50ZXJuYWwg dmFyaWFibGUgdG8gbWFuaXB1bGF0ZSB0aGUgY29udGVudHMuCj4gKyAqIEBzZWUgY2dpX2luaXQs IGNnaV9pbml0X2hlYWRlcnMKPiArICoqLwo+ICsgZm9ybXZhcnMgKmNnaV9wcm9jZXNzX2Zvcm0o KQo+ICtAQCAtMTQ2LDcgKzE0Niw3IEBAIGZvcm12YXJzICpjZ2lfcHJvY2Vzc19mb3JtKCkKPiAr IAo+ICsgCS8vIFdoZW4gTUVUSE9EIGhhcyBubyBjb250ZW50cywgdGhlIGRlZmF1bHQgYWN0aW9u IGlzIHRvIHByb2Nlc3MgaXQgYXMgR0VUIG1ldGhvZAo+ICsgCWlmIChtZXRob2QgPT0gTlVMTCB8 fCAhc3RyY2FzZWNtcCgiR0VUIiwgbWV0aG9kKSkgewo+ICstCQljaGFyICpkYWRvczsgCj4gKysJ CWNoYXIgKmRhZG9zOwo+ICsgCQlkYWRvcyA9CWdldGVudigiUVVFUllfU1RSSU5HIik7Cj4gKyAK PiArIAkJLy8gU29tZXRpbWVzLCBHRVQgY29tZXMgd2l0aCBub3QgYW55IGRhdGEKPiArQEAgLTIy Miw3ICsyMjIsNyBAQCBpbnQgY2dpX2luY2x1ZGUoY29uc3QgY2hhciAqZmlsZW5hbWUpCj4gKyAK PiArIAkJcmV0dXJuIDA7Cj4gKyAJfQo+ICstCQo+ICsrCj4gKyAgCXdoaWxlIChmZ2V0cyhidWZm ZXIsIDI1NSwgaW5jKSkKPiArIAkJcHJpbnRmKCIlcyIsIGJ1ZmZlcik7Cj4gKyAKPiArQEAgLTI1 MCw3ICsyNTAsNyBAQCB2b2lkIGNnaV9pbml0X2hlYWRlcnMoKQo+ICsgKiBAcGFyYW0gbmFtZSBG b3JtIHZhcmlhYmxlIG5hbWUKPiArICogQHJldHVybiBGb3JtIHZhcmlhYmxlIGNvbnRlbnRzCj4g KyAqIEBzZWUgY2dpX3BhcmFtCj4gKy0qIAo+ICsrKgo+ICsgKiBFeGFtcGxlOgo+ICsgKiBGb3Ig ZXhhbXBsZSwgaWYgaW4geW91ciBIVE1MIHlvdSBoYXZlIHNvbWV0aGluZyBsaWtlPGJyPgo+ICsg KiAgPGJyPgo+ICtAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgY2dpX2luaXRfaGVhZGVycygpCj4g KyAqIDwvcHJlPgo+ICsgKiAgICAgICA8YnI+Cj4gKyAqIHRoZW4sIHRvIHJldHJpZXZlIGFsbCB2 YWx1ZXMsIHlvdSBjYW4gbWFrZSBhIGNvZGUgbGlrZTxicj48YnI+Cj4gKy0qIAo+ICsrKgo+ICsg KiBcY29kZQo+ICsgKiAvLyAuLi4KPiArICogY2hhciAqZGF0YTsKPiArQEAgLTI5NiwxMyArMjk2 LDEzIEBAIGNoYXIgKmNnaV9wYXJhbV9tdWx0aXBsZShjb25zdCBjaGFyICpuYW1lKQo+ICsgfQo+ ICsgCj4gKyAvKioKPiArLSogIFJlY2lyZWN0cyB0byB0aGUgc3BlY2lmaWVkIHVybC4gCj4gKysq ICBSZWNpcmVjdHMgdG8gdGhlIHNwZWNpZmllZCB1cmwuCj4gKyAqIFJlbWVtYmVyIHRoYXQgeW91 IGNhbm5vdCBzZW5kIGFueSBoZWFkZXIgYmVmb3JlIHRoaXMgZnVuY3Rpb24sIG9yIGl0IHdpbGwg bm90IHdvcmsuCj4gKyAqIDxiPk5vdGU6PC9iPjxicj4KPiArICogTGliQ0dJIGRvZXMgbm90IGlt cGxlbWVudCBSRkMgMjM5NiB0byBtYWtlIHRoZSBsaWIgc2ltcGxlIGFuZCBxdWljay4gWW91IHNo b3VsZCBiZSBzdXJlCj4gKy0qIHRvIHBhc3MgYSBjb3JyZWN0IFVSSSB0byB0aGlzIGZ1bmN0aW9u LiAKPiArKyogdG8gcGFzcyBhIGNvcnJlY3QgVVJJIHRvIHRoaXMgZnVuY3Rpb24uCj4gKyAqIEBw YXJhbSB1cmwgdXJsIHRvIHJlZGlyZWN0IHRoZSBicm93c2VyCj4gKy0qIAo+ICsrKgo+ICsgKiBc Y29kZQo+ICsgKiBjZ2lfcmVkaXJlY3QoImh0dHA6Ly93d3d3LmxpbnV4Lm9yZyIpOwo+ICsgKiBc ZW5kY29kZQo+ICtAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgaW5pdF9oZXhfdGFibGUoKQo+ICsg fQo+ICsgCj4gKyAvKioKPiArLSogIE1haW4gY2dpIGZ1bmN0aW9uLiAKPiArKyogIE1haW4gY2dp IGZ1bmN0aW9uLgo+ICsgKiAgQ29uZmlndXJlcyBhbGwgKG1vc3Q/KSB3ZSBuZWVkIHRvICBnZXQg Y2dpIGxpYnJhcnkgd29ya2luZyBjb3JyZWN0bHkuIEl0IE1VU1QgYmUgY2FsbGVkIGJlZm9yZQo+ ICsgKiAgYW55IG90aGVyIGNnaSBmdW5jdGlvbi4KPiArICogIEBzZWUgY2dpX2VuZCwgY2dpX3By b2Nlc3NfZm9ybSwgY2dpX2luaXRfaGVhZGVycwo+ICtAQCAtMzYwLDcgKzM2MCw3IEBAIGludCBj Z2lfaW5pdCgpCj4gKyAJLy8gY2F1c2UgcHJvYmxlbXMgd2l0aCBzZXNzaW9uJ3MuIE5vdGUgdGhh dCwgd2hlbiB5b3Ugd2FudAo+ICsgCS8vIHRvIHVzZSBzZXNzaW9uIHdpdGhpbiB5b3VyIHByb2dy YW0sIHlvdSBuZWVkICBjZ2lfZ2V0X2Nvb2tpZXMoKQo+ICsgCS8vIGJlZm9yZSBzZXNzaW9uX3N0 YXJ0KCksIG90aGVyd2lzZSB3ZSB3aWxsIGdldCBzb21lIHByb2JsZW1zLi4uIDopCj4gKy0JLy8g Q2FsbGluZyB0aGlzIGZ1bmN0aW9uIGhlcmUgaXMgdGhlIGJlc3Qgd2F5LiBUcnVzdCBtZSA6KQkK PiArKwkvLyBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gaGVyZSBpcyB0aGUgYmVzdCB3YXkuIFRydXN0 IG1lIDopCj4gKyAJY2dpX2dldF9jb29raWVzKCk7Cj4gKyAKPiArIAlyZXR1cm4gMTsKPiArQEAg LTM3Nyw3ICszNzcsNyBAQCB2b2lkIGNnaV9lbmQoKQo+ICsgCj4gKyAJZm9ybXZhcnNfbGFzdCA9 IE5VTEw7Cj4gKyAKPiArLQlpZiAoc2Vzc19saXN0X3N0YXJ0KSAKPiArKwlpZiAoc2Vzc19saXN0 X3N0YXJ0KQo+ICsgCQlzbGlzdF9mcmVlKCZzZXNzX2xpc3Rfc3RhcnQpOwo+ICsgCj4gKyAJaWYg KGNvb2tpZXNfc3RhcnQpCj4gK0BAIC00MTQsNyArNDE0LDcgQEAgY2hhciAqY2dpX3VuZXNjYXBl X3NwZWNpYWxfY2hhcnMoY2hhciAqc3RyKQo+ICsgCQkJdG1wW3Bvc10gPSAnICc7Cj4gKyAJCWVs c2UKPiArIAkJCXRtcFtwb3NdID0gc3RyW2ldOwo+ICstCQkKPiArKwo+ICsgCQlwb3MrKzsKPiAr IAl9Cj4gKyAKPiArQEAgLTQ2NCwyMSArNDY0LDIxIEBAIGNoYXIgKmNnaV9lc2NhcGVfc3BlY2lh bF9jaGFycyhjaGFyICpzdHIpCj4gKyAKPiArIC8qKgo+ICsgKiBHZXRzIHRoZSBvZiBIVE1MIG9y IFVSTCB2YXJpYWJsZSBpbmRpY2F0ZWQgYnkgJ25hbWUnCj4gKy0qIEBwYXJhbSBuYW1lIEZvcm0g VmFyaWFibGUgbmFtZSAKPiArKyogQHBhcmFtIG5hbWUgRm9ybSBWYXJpYWJsZSBuYW1lCj4gKyAq IEBzZWUgY2dpX3BhcmFtX211bHRpcGxlLCAgY2dpX3Byb2Nlc3NfZm9ybSwgY2dpX2luaXQKPiAr LSogCj4gKysqCj4gKyAqIFxjb2RlCj4gKyAqIC8vIC4uLgo+ICsgKiBjaGFyICpjb250ZW50czsK PiArLSogCj4gKysqCj4gKyAqIGNnaV9pbml0KCk7Cj4gKyAqIGNnaV9wcm9jZXNzX2Zvcm0oKTsK PiArICogY2dpX2luaXRfaGVhZGVycygpOwo+ICstKiAKPiArKyoKPiArICogY29udGVudHMgPSBj Z2lfcGFyYW0oImZvbyIpOwo+ICstKiAKPiArKyoKPiArICogcHV0cyhjb250ZW50cyk7Cj4gKy0q IAo+ICsrKgo+ICsgKiAvLyAuLi4KPiArICogXGVuZGNvZGUKPiArICoqLwo+ICtkaWZmIC0tZ2l0 IGEvc3JjL2NnaS5oIGIvc3JjL2NnaS5oCj4gK2luZGV4IDk4MTJlN2EuLjczMTczNWQgMTAwNjQ0 Cj4gKy0tLSBhL3NyYy9jZ2kuaAo+ICsrKysgYi9zcmMvY2dpLmgKPiArQEAgLTI4LDcgKzI4LDcg QEAgZXh0ZXJuICJDIiB7Cj4gKyAKPiArIC8vIGdlbmVyYWwgcHVycG9zZSBsaW5rZWQgbGlzdC4g QWN0dWFseSBpc24ndCB2ZXJ5IHBvcnRhYmxlCj4gKyAvLyBiZWNhdXNlIHVzZXMgb25seSAnbmFt ZScgYW5kICd2YWx1ZScgdmFyaWFibGVzIHRvIHN0b3JlIGRhdGEuCj4gKy0vLyBQcm9ibGFibHks IGluIGEgZnV0dXJlIHJlbGVhc2UsIHRoaXMgd2lsbCBiZSByZXBsYWNlZCBieSAKPiArKy8vIFBy b2JsYWJseSwgaW4gYSBmdXR1cmUgcmVsZWFzZSwgdGhpcyB3aWxsIGJlIHJlcGxhY2VkIGJ5Cj4g KyAvLyBhbm90aGVyIHR5cGUgb2Ygc3RydWN0Cj4gKyB0eXBlZGVmIHN0cnVjdCBmb3JtdmFyc0Eg ewo+ICsgICAgICAgICBjaGFyICpuYW1lOwo+ICtAQCAtODYsNyArODYsNyBAQCBleHRlcm4gaW50 IHNsaXN0X2RlbGV0ZShjaGFyICpuYW1lLCBmb3JtdmFycyAqKnN0YXJ0LCBmb3JtdmFycyAqKmxh c3QpOwo+ICsgZXh0ZXJuIGNoYXIgKnNsaXN0X2l0ZW0oY29uc3QgY2hhciAqbmFtZSwgZm9ybXZh cnMgKnN0YXJ0KTsKPiArIAo+ICsgZXh0ZXJuIHZvaWQgc2xpc3RfZnJlZShmb3JtdmFycyAqKnN0 YXJ0KTsKPiArLSAKPiArKwo+ICsgLy8gU2Vzc2lvbiBzdHVmZgo+ICsgLy8gV2UgY2FuIHVzZSB0 aGlzIHZhcmlhYmxlIHRvIGdldCB0aGUgZXJyb3IgbWVzc2FnZSBmcm9tIGEgKCBwb3NzaWJsZSAp IHNlc3Npb24gZXJyb3IKPiArIC8vIFVzZSBpdCB0b2doZXRlciB3aXRoIHNlc3Npb25fbGFzdGVy cm9yCj4gK0BAIC05OCw3ICs5OCw3IEBAIGV4dGVybiBmb3JtdmFycyAqc2Vzc19saXN0X3N0YXJ0 Owo+ICsgCj4gKyBleHRlcm4gY2hhciBTRVNTSU9OX1NBVkVfUEFUSFsyNTVdOwo+ICsgZXh0ZXJu IGNoYXIgU0VTU0lPTl9DT09LSUVfTkFNRVs1MF07Cj4gKy0gCj4gKysKPiArIGV4dGVybiB2b2lk IGNnaV9zZXNzaW9uX3NldF9tYXhfaWRsZV90aW1lKHVuc2lnbmVkIGxvbmcgc2Vjb25kcyk7Cj4g KyBleHRlcm4gaW50IGNnaV9zZXNzaW9uX2Rlc3Ryb3koKTsKPiArIGV4dGVybiBpbnQgY2dpX3Nl c3Npb25fcmVnaXN0ZXJfdmFyKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsK PiArQEAgLTEwOSw3ICsxMDksNyBAQCBleHRlcm4gaW50IGNnaV9zZXNzaW9uX3N0YXJ0KCk7Cj4g KyBleHRlcm4gdm9pZCBjZ2lfc2Vzc2lvbl9jb29raWVfbmFtZShjb25zdCBjaGFyICpjb29raWVf bmFtZSk7Cj4gKyBleHRlcm4gY2hhciAqY2dpX3Nlc3Npb25fdmFyKGNvbnN0IGNoYXIgKm5hbWUp Owo+ICsgZXh0ZXJuIHZvaWQgY2dpX3Nlc3Npb25fc2F2ZV9wYXRoKGNvbnN0IGNoYXIgKnBhdGgp Owo+ICstIAo+ICsrCj4gKyAjaWZkZWYgX19jcGx1c3BsdXMKPiArIH0KPiArICNlbmRpZgo+ICtk aWZmIC0tZ2l0IGEvc3JjL2Nvb2tpZS5jIGIvc3JjL2Nvb2tpZS5jCj4gK2luZGV4IGExMTY1MDMu LmU5ZGVlOWUgMTAwNjQ0Cj4gKy0tLSBhL3NyYy9jb29raWUuYwo+ICsrKysgYi9zcmMvY29va2ll LmMKPiArQEAgLTQxLDI0ICs0MSwyNCBAQCBleHRlcm4gaW50IGNnaV9kaXNwbGF5X2Vycm9yczsK PiArICovCj4gKyAKPiArIC8qKgo+ICstKiBTZW5kIGEgY29va2llIHRvIHRoZSBjbGllbnQuIAo+ ICsrKiBTZW5kIGEgY29va2llIHRvIHRoZSBjbGllbnQuCj4gKyAqIEBwYXJhbSBuYW1lIENvb2tp ZSBuYW1lCj4gKyAqIEBwYXJhbSB2YWx1ZSBDb29raWUgdmFsdWUKPiArLSogQHBhcmFtIG1heF9h Z2UgIENvb2tpZSB0aW1lIGxpZmUsIGluIHNlY29uZHMuIEEgdmFsdWUgZXF1YWwgdG8gMCAoIHpl cm8gKSBtZWFucyB0byBkaXNjYXJkIHRoZSBjb29raWUgd2hlbiB0aGUgc2Vzc2lvbiBpcyBkb25l LiAKPiArKyogQHBhcmFtIG1heF9hZ2UgIENvb2tpZSB0aW1lIGxpZmUsIGluIHNlY29uZHMuIEEg dmFsdWUgZXF1YWwgdG8gMCAoIHplcm8gKSBtZWFucyB0byBkaXNjYXJkIHRoZSBjb29raWUgd2hl biB0aGUgc2Vzc2lvbiBpcyBkb25lLgo+ICsgKiBAcGFyYW0gcGF0aCBDb29raWUgcGF0aCBhdCB0 aGUgc2VydmVyCj4gKyAqIEBwYXJhbSBkb21haW4gRG9tYWluIHdoZXJlIGNvb2tpZSB3aWxsIHdv cmsgOikKPiArICogQHBhcmFtIHNlY3VyZSBTZWN1cmUgb3Igbm90Cj4gKyAqIEBzZWUgY2dpX2Nv b2tpZV92YWx1ZQo+ICstKiAKPiArKyoKPiArICogXGNvZGUKPiArICogY2dpX2FkZF9jb29raWUo Im15Y29va2llIiwgIm15Y29va2llIHZhbHVlIiwgMCwgMCwgMCwgMCk7Cj4gKy0qIFxlbmRjb2Rl ICAKPiArKyogXGVuZGNvZGUKPiArICoqLwo+ICstaW50IGNnaV9hZGRfY29va2llKGNvbnN0IGNo YXIgKm5hbWUsIAo+ICstCWNvbnN0IGNoYXIgKnZhbHVlLCAKPiArK2ludCBjZ2lfYWRkX2Nvb2tp ZShjb25zdCBjaGFyICpuYW1lLAo+ICsrCWNvbnN0IGNoYXIgKnZhbHVlLAo+ICsgCWNvbnN0IGNo YXIgKm1heF9hZ2UsCj4gKy0JY29uc3QgY2hhciAqcGF0aCwgCj4gKy0JY29uc3QgY2hhciAqZG9t YWluLCAKPiArKwljb25zdCBjaGFyICpwYXRoLAo+ICsrCWNvbnN0IGNoYXIgKmRvbWFpbiwKPiAr IAljb25zdCBpbnQgc2VjdXJlKQo+ICsgewo+ICsgCWlmIChoZWFkZXJzX2luaXRpYWxpemVkKQo+ ICtAQCAtODEsNyArODEsNyBAQCBpbnQgY2dpX2FkZF9jb29raWUoY29uc3QgY2hhciAqbmFtZSwK PiArIAo+ICsgZm9ybXZhcnMgKmNnaV9nZXRfY29va2llcygpCj4gKyB7Cj4gKy0JcmVnaXN0ZXIg Zm9ybXZhcnMgKmRhdGE7CQo+ICsrCXJlZ2lzdGVyIGZvcm12YXJzICpkYXRhOwo+ICsgCXJlZ2lz dGVyIHNpemVfdCBwb3NpdGlvbjsKPiArIAljaGFyICpjb29raWVzLCAqYXV4Owo+ICsgCj4gK0BA IC0xMTcsNyArMTE3LDcgQEAgZm9ybXZhcnMgKmNnaV9nZXRfY29va2llcygpCj4gKyAJCQlwb3Np dGlvbiA9IHN0cmxlbihjb29raWVzKTsKPiArIAkJfQo+ICsgCQllbHNlIHsKPiArLQkJCXdoaWxl ICgqYXV4KysgIT0gJzsnKSAKPiArKwkJCXdoaWxlICgqYXV4KysgIT0gJzsnKQo+ICsgCQkJCXBv c2l0aW9uKys7Cj4gKyAJCQkvLyBFbGltaW5hdGUgdGhlIGJsYW5rIHNwYWNlIGFmdGVyICc7Jwo+ ICsgCQkJYXV4Kys7Cj4gK2RpZmYgLS1naXQgYS9zcmMvZXJyb3IuYyBiL3NyYy9lcnJvci5jCj4g K2luZGV4IDVkMmRhMTIuLjJmNDhiM2IgMTAwNjQ0Cj4gKy0tLSBhL3NyYy9lcnJvci5jCj4gKysr KyBiL3NyYy9lcnJvci5jCj4gK0BAIC0yMSw3ICsyMSw3IEBAIHZvaWQgbGliY2dpX2Vycm9yKGlu dCBlcnJvcl9jb2RlLCBjb25zdCBjaGFyICptc2csIC4uLikKPiArIAkJcmV0dXJuOwo+ICsgCj4g KyAJY2dpX2luaXRfaGVhZGVycygpOwo+ICstCXZhX3N0YXJ0KGFyZ3VtZW50cywgbXNnKTsJCj4g KysJdmFfc3RhcnQoYXJndW1lbnRzLCBtc2cpOwo+ICsgCj4gKyAJcHJpbnRmKCI8Yj4lczwvYj46 ICIsIGxpYmNnaV9lcnJvcl90eXBlW2Vycm9yX2NvZGVdKTsKPiArIAl2cHJpbnRmKG1zZywgYXJn dW1lbnRzKTsKPiArZGlmZiAtLWdpdCBhL3NyYy9nZW5lcmFsLmMgYi9zcmMvZ2VuZXJhbC5jCj4g K2luZGV4IGFkMzQzNWMuLjk2NjJlY2UgMTAwNjQ0Cj4gKy0tLSBhL3NyYy9nZW5lcmFsLmMKPiAr KysrIGIvc3JjL2dlbmVyYWwuYwo+ICtAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgaW50IG5jb2Rl cyA9IHNpemVvZihoZSkgLyBzaXplb2Yoc3RydWN0IGlzbzg4NTlfMTUpOwo+ICsgCj4gKyAvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKPiArIAkJCQkJCUdFTkVSQUwgR1JPVVAKPiArLSoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8JCj4gKysqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCj4gKyAv KiogQGRlZmdyb3VwIGxpYmNnaV9nZW5lcmFsIEdlbmVyYWwgcHVycG9zZQo+ICsgKiBAewo+ICsg Ki8KPiArQEAgLTU5LDQyICs1OSw0MiBAQCBzdGF0aWMgaW50IG5jb2RlcyA9IHNpemVvZihoZSkg LyBzaXplb2Yoc3RydWN0IGlzbzg4NTlfMTUpOwo+ICsgKiBsaWtlICcmbHQnIGFuZCAnJmd0Jwo+ ICsgKiBAcGFyYW0gc3RyIFN0cmluZyBjb250YWluaW5nIGNvZGUgdG8gcGFyc2UKPiArICogQHJl dHVybiBUaGUgbmV3IHN0cmluZwo+ICstKiBAYXV0aG9yIFJvYmVydCBDc29rIDxyY3Nva0BnbXgu ZGU+IAo+ICsrKiBAYXV0aG9yIFJvYmVydCBDc29rIDxyY3Nva0BnbXguZGU+Cj4gKyAqLwo+ICsg Ly8gVGhpcyBvbmUgbmVlZHMgdGhlIHN0cnVjdCBhbmQgbmNvZGVzIGFib3ZlLgo+ICstLy8gbmNv ZGVzIGlzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHN0cnVjdC4gCj4gKysvLyBuY29k ZXMgaXMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgc3RydWN0Lgo+ICsgY2hhciAqaHRt bGVudGl0aWVzKGNvbnN0IGNoYXIgKnN0cikKPiArIHsKPiArIAljaGFyICpidWY7Cj4gKyAJaW50 IHNpeiwgbGVuLCBpID0gMCwgajsKPiArIAo+ICsgCXNpeiA9IHN0cmxlbihzdHIpICsgMTsKPiAr LQkKPiArLQlidWYgPSAoY2hhciAqKW1hbGxvYyhzaXopOwkKPiArKwo+ICsrCWJ1ZiA9IChjaGFy ICopbWFsbG9jKHNpeik7Cj4gKyAJaWYgKCFidWYpCj4gKyAJCWxpYmNnaV9lcnJvcihFX01FTU9S WSwgIkZhaWxlZCB0byBhbGxvYyBtZW1vcnkgYXQgaHRtbGVudGl0aWVzLCBjZ2kuYyIpOwo+ICst CQo+ICsrCj4gKyAJZm9yICg7ICpzdHI7IHN0cisrLCBpKyspICB7Cj4gKyAJCWZvciAoaiA9IDA7 IGogPCBuY29kZXM7IGorKykgewo+ICsgCQkJaWYgKCpzdHIgPT0gaGVbal0uY29kZSkgewo+ICsg CQkJCWxlbiA9IHN0cmxlbihoZVtqXS5odG1sKSAtIDE7Cj4gKy0JCQkJCj4gKy0JCQkJYnVmID0g cmVhbGxvYyhidWYsIHNpeiArPSBsZW4pOwkKPiArKwo+ICsrCQkJCWJ1ZiA9IHJlYWxsb2MoYnVm LCBzaXogKz0gbGVuKTsKPiArIAkJCQlpZiAoIWJ1ZikKPiArIAkJCQkJbGliY2dpX2Vycm9yKEVf TUVNT1JZLCAiRmFpbGVkIHRvIGFsbG9jIG1lbW9yeSBhdCBodG1sZW50aXRpZXMsIGNnaS5jIik7 Cj4gKy0JCQkJCj4gKysKPiArIAkJCQlzdHJjcHkoYnVmICsgaSwgaGVbal0uaHRtbCk7Cj4gKyAJ CQkJaSArPSBsZW47Cj4gKyAJCQkJYnJlYWs7Cj4gKyAJCQl9Cj4gKyAJCX0KPiArLQkJCQo+ICst CQlpZiAoaiA9PSBuY29kZXMpIAo+ICsrCj4gKysJCWlmIChqID09IG5jb2RlcykKPiArIAkJCWJ1 ZltpXSA9ICpzdHI7Cj4gKyAJfQo+ICstCQo+ICsrCj4gKyAJYnVmW2ldID0gJ1wwJzsKPiArLQly ZXR1cm4gYnVmOwkKPiArKwlyZXR1cm4gYnVmOwo+ICsgfQo+ICsgCj4gKyAvKioKPiArQEAgLTEw MiwyMyArMTAyLDIzIEBAIGNoYXIgKmh0bWxlbnRpdGllcyhjb25zdCBjaGFyICpzdHIpCj4gKyAq IEBwYXJhbSBmaWxlbmFtZSBGaWxlbmFtZSB0byBvcGVuCj4gKyAqIEBwYXJhbSB0b3RhbCBJbnRl Z2VyIHZhcmlhYmxlIHBhc3NlZCBhcyByZWZlcmVuY2UsIHdoaWNoIHdpbGwgc3RvcmUgdGhlIHRv dGFsIG9mIGl0ZW1zCj4gKyAqIEByZXR1cm4gUmV0dXJucyB0aGUgZmlsZSBpbiBhbiBhcnJheS4g RWFjaCBlbGVtZW50IG9mIHRoZSBhcnJheSBjb3JyZXNwb25kcyB0byBhIGxpbmUgaW4gdGhlIGZp bGUuCj4gKy0qIAo+ICsrKgo+ICsgKiBcY29kZQo+ICsgKiBjaGFyICoqbGluZXM7Cj4gKyAqIHVu c2lnbmVkIGludCB0b3RhbCwgaTsKPiArLSogIAo+ICsrKgo+ICsgKiBsaW5lcyA9IGZpbGUoImZp bGVuYW1lLmV4dCIsICZ0b3RhbCk7Cj4gKy0qICAgIAo+ICsrKgo+ICsgKiBwcmludGYoIlRvdGFs IG9mIGxpbmVzOiAldVxuIiwgdG90YWwpOwo+ICstKiAgICAKPiArKyoKPiArICogZm9yIChpID0g MDsgaSA8IHRvdGFsOyBpKyspCj4gKyAqCXByaW50ZigiWyV1XSAlc1xuIiwgaSwgbGluZXNbaV0p Owo+ICstKiAgICAgCj4gKysqCj4gKyAqIGZvciAoaSA9IDA7IGkgPCB0b3RhbDsgaSsrKSB7Cj4g KyAqIAlpZiAobGluZXNbaV0pCj4gKyAqCQkgZnJlZShsaW5lc1tpXSk7Cj4gKyAqIH0KPiArLSog XGVuZGNvZGUJICAKPiArKyogXGVuZGNvZGUKPiArICovCj4gKyBjaGFyICoqZmlsZShjb25zdCBj aGFyICpmaWxlbmFtZSwgdW5zaWduZWQgaW50ICp0b3RhbCkKPiArIHsKPiArQEAgLTEzOCw3ICsx MzgsNyBAQCBjaGFyICoqZmlsZShjb25zdCBjaGFyICpmaWxlbmFtZSwgdW5zaWduZWQgaW50ICp0 b3RhbCkKPiArIAkvLyBpbml0aWFsIGxpbmUgbGVuZ3RoCj4gKyAJY29sdW1tcyA9IDEwMDsKPiAr IAo+ICstCS8vIEhvdyBtYW55IGNoYXJhY3RlcmVzIGluIHRoZSBsaW5lIAo+ICsrCS8vIEhvdyBt YW55IGNoYXJhY3RlcmVzIGluIHRoZSBsaW5lCj4gKyAJY2hhcl9jb3VudCA9IDE7Cj4gKyAKPiAr IAlpID0gMDsKPiArQEAgLTE0OCw5ICsxNDgsOSBAQCBjaGFyICoqZmlsZShjb25zdCBjaGFyICpm aWxlbmFtZSwgdW5zaWduZWQgaW50ICp0b3RhbCkKPiArIAlpZiAoIXN0cikKPiArIAkJbGliY2dp X2Vycm9yKEVfTUVNT1JZLCAiJXMsIGxpbmUgJXMiLCBfX0ZJTEVfXywgX19MSU5FX18pOwo+ICsg Cj4gKy0JLy8gQWxsb2NhdGUgaW5pdGlhbCBtZW1vcnkgdG8gYnVmIHZhcmlhYmxlLiBJdCBpcyB0 aGUgb25lIAo+ICsrCS8vIEFsbG9jYXRlIGluaXRpYWwgbWVtb3J5IHRvIGJ1ZiB2YXJpYWJsZS4g SXQgaXMgdGhlIG9uZQo+ICsgCS8vIHRoYXQgd2lsbCBjb250YWluIHRoZSBjaGFycyBvZiB0aGUg bGluZXMKPiArLQkvLyBCeSBkZWZhdWx0LCB3ZSdyZSBhbGxvY2F0aW5nIDgwIGNoYXJzLi4gaWYg bW9yZSBpcyBuZWVkZWQsIAo+ICsrCS8vIEJ5IGRlZmF1bHQsIHdlJ3JlIGFsbG9jYXRpbmcgODAg Y2hhcnMuLiBpZiBtb3JlIGlzIG5lZWRlZCwKPiArIAkvLyB0aGVuIHdlJ2xsIHJlYWxsb2MoKQo+ ICsgCWJ1ZiA9IChjaGFyICopbWFsbG9jKGNvbHVtbXMpOwo+ICsgCWlmIChidWYgPT0gTlVMTCkK PiArQEAgLTE1OCw4ICsxNTgsOCBAQCBjaGFyICoqZmlsZShjb25zdCBjaGFyICpmaWxlbmFtZSwg dW5zaWduZWQgaW50ICp0b3RhbCkKPiArIAo+ICsgCXdoaWxlICghZmVvZihmcCkpIHsKPiArIAkJ Y2ggPSBmZ2V0YyhmcCk7Cj4gKy0JCQo+ICstCQkvLyBUaGUgbmV4dCB3aGlsZSgpIGxvb3AgaXMg IHRvIGdldCBhbGwgY29udGVudHMgb2YgYWN0dWFsIGxpbmUgCj4gKysKPiArKwkJLy8gVGhlIG5l eHQgd2hpbGUoKSBsb29wIGlzICB0byBnZXQgYWxsIGNvbnRlbnRzIG9mIGFjdHVhbCBsaW5lCj4g KyAJCXdoaWxlICgoY2ggIT0gJ1xuJykgJiYgKGNoICE9IEVPRikpIHsKPiArIAkJCS8vIEluY3Jl bWVudHMgdGhlIGNoYXJhY3RlciBjb3VudGVyCj4gKyAJCQljaGFyX2NvdW50Kys7Cj4gK0BAIC0y MDEsNyArMjAxLDcgQEAgY2hhciAqKmZpbGUoY29uc3QgY2hhciAqZmlsZW5hbWUsIHVuc2lnbmVk IGludCAqdG90YWwpCj4gKyAJZmNsb3NlKGZwKTsKPiArIAo+ICsgCSp0b3RhbCA9IGxpbmVzIC0g MTsKPiArLQlyZXR1cm4gc3RyOwkKPiArKwlyZXR1cm4gc3RyOwo+ICsgfQo+ICsgCj4gKyAvKioK PiArZGlmZiAtLWdpdCBhL3NyYy9saXN0LmMgYi9zcmMvbGlzdC5jCj4gK2luZGV4IDhiZDY4Zjcu LjQyM2YyOGIgMTAwNjQ0Cj4gKy0tLSBhL3NyYy9saXN0LmMKPiArKysrIGIvc3JjL2xpc3QuYwo+ ICtAQCAtMjYsMTUgKzI2LDE1IEBACj4gKyAjaW5jbHVkZSAiZXJyb3IuaCIKPiArICNpbmNsdWRl ICJjZ2kuaCIKPiArIAo+ICstLy8gQWRkIGEgbmV3IGl0ZW0gdG8gdGhlIGxpc3QgCj4gKysvLyBB ZGQgYSBuZXcgaXRlbSB0byB0aGUgbGlzdAo+ICsgdm9pZCBzbGlzdF9hZGQoZm9ybXZhcnMgKml0 ZW0sIGZvcm12YXJzICoqc3RhcnQsIGZvcm12YXJzICoqbGFzdCkKPiArIHsKPiArIAkvLyBpZiAq c3RhcnQgaXMgZW1wdHksIHRoZW4gb3VyIGxpc3QgaXMgYWxzbyBlbXB0eS4gU28sIHRoZSBvbmx5 Cj4gKyAJLy8gdGFzayB0byBkbyBpcyBmaWxsIHRoZSB2YXJpYWJsZXMgKnN0YXJ0IGFuZCAqbGFz dCB3aXRoIHRoZSBkYXRhIHBvaW50ZWQgYnkgaXRlbQo+ICstCS8vICpzdGFydCBjb250YWlucyB0 aGUgZmlydHMgaXRlbSBpbiB0aGUgbGlzdCwgYW5kIHdlIG5lZWQgKmxhc3QgdG8ga25vdyB0aGUg Cj4gKysJLy8gKnN0YXJ0IGNvbnRhaW5zIHRoZSBmaXJ0cyBpdGVtIGluIHRoZSBsaXN0LCBhbmQg d2UgbmVlZCAqbGFzdCB0byBrbm93IHRoZQo+ICsgCS8vIGVuZCBvZiB0aGUgbGlzdAo+ICsgCWlm ICghKnN0YXJ0KSB7Cj4gKy0JCS8vIGl0ZW0tPm5leHQgbmVlZHMgdG8gYmUgTlVMTCwgb3RoZXJ3 aXNlIHdlIG5ldmVyIHdpbGwgCj4gKysJCS8vIGl0ZW0tPm5leHQgbmVlZHMgdG8gYmUgTlVMTCwg b3RoZXJ3aXNlIHdlIG5ldmVyIHdpbGwKPiArIAkJLy8gZmluZCB0aGUgZW5kIG9mIGxpc3QKPiAr IAkJaXRlbS0+bmV4dCA9IE5VTEw7Cj4gKyAKPiArQEAgLTU5LDggKzU5LDggQEAgdm9pZCBzbGlz dF9hZGQoZm9ybXZhcnMgKml0ZW0sIGZvcm12YXJzICoqc3RhcnQsIGZvcm12YXJzICoqbGFzdCkK PiArIAo+ICsgLy8gRGVsZXRlIGZyb20gbGlzdCB0aGUgaXRlbSBwb2ludGVkIGJ5IG5hbWUKPiAr IAo+ICstLy8gVGhpcyBjb2RlIGlzIGEgYml0IGNvbXBsaWNhdGVkLCBhbmQgSSBuZWVkZWQgc29t ZSAKPiArLS8vIGxvbmcgaG91cnMgdG8gdGVybWluYXRlIGl0LiBJbiBhIGZ1dHVyZSByZWxlYXNl LCAKPiArKy8vIFRoaXMgY29kZSBpcyBhIGJpdCBjb21wbGljYXRlZCwgYW5kIEkgbmVlZGVkIHNv bWUKPiArKy8vIGxvbmcgaG91cnMgdG8gdGVybWluYXRlIGl0LiBJbiBhIGZ1dHVyZSByZWxlYXNl LAo+ICsgLy8gSSB3aWxsIGV4cGxhaW4gdGhlIGFsZ29yaXRobSBiZXR0ZXIKPiArIGludCBzbGlz dF9kZWxldGUoY2hhciAqbmFtZSwgZm9ybXZhcnMgKipzdGFydCwgZm9ybXZhcnMgKipsYXN0KQo+ ICsgewo+ICtAQCAtNjgsNyArNjgsNyBAQCBpbnQgc2xpc3RfZGVsZXRlKGNoYXIgKm5hbWUsIGZv cm12YXJzICoqc3RhcnQsIGZvcm12YXJzICoqbGFzdCkKPiArIAkvLyAqcHJpb3Igd2lsbCBzdG9y ZSB0aGUgcHJpb3IgaXRlbSByZWxhY3RlZCB0byBhY3R1YWwgaW4gdGhlIGxvb3AKPiArIAlmb3Jt dmFycyAqYmVnaW4sICpwcmlvcjsKPiArIAo+ICstCS8vIEJlZm9yZSBvZiBhbGwsIGlzIG1vcmUg c2ltcGxlIHRvIGNoZWNrIGlmIHRoZSBpdGVtIAo+ICsrCS8vIEJlZm9yZSBvZiBhbGwsIGlzIG1v cmUgc2ltcGxlIHRvIGNoZWNrIGlmIHRoZSBpdGVtCj4gKyAJLy8gdG8gZGVsZXRlIGlzIGluIHRo ZSBuZXh0IGl0ZW0uIElmIHRydWUsIHdlIGRvbid0IG5lZWQKPiArIAkvLyB0byBlbnRlciBpbiB0 aGUgbG9vcAo+ICsgCWlmICghc3RyY2FzZWNtcCgoKnN0YXJ0KS0+bmFtZSwgbmFtZSkpIHsKPiAr QEAgLTc2LDggKzc2LDggQEAgaW50IHNsaXN0X2RlbGV0ZShjaGFyICpuYW1lLCBmb3JtdmFycyAq KnN0YXJ0LCBmb3JtdmFycyAqKmxhc3QpCj4gKyAJCSpzdGFydCA9ICgqc3RhcnQpLT5uZXh0Owo+ ICsgCj4gKyAJCS8vIGlmIHN0YXJ0IGlzIG51bGwsIHRoZW4gd2UgaGF2ZW4ndCBtb3JlIGl0ZW5z Cj4gKy0JCS8vIGluIHRoZSBsaXN0Li4gCj4gKy0JCWlmICghKnN0YXJ0KSAKPiArKwkJLy8gaW4g dGhlIGxpc3QuLgo+ICsrCQlpZiAoISpzdGFydCkKPiArIAkJCSpsYXN0ID0gTlVMTDsKPiArIAo+ ICsgCQlyZXR1cm4gMSA7Cj4gK0BAIC04Niw3ICs4Niw3IEBAIGludCBzbGlzdF9kZWxldGUoY2hh ciAqbmFtZSwgZm9ybXZhcnMgKipzdGFydCwgZm9ybXZhcnMgKipsYXN0KQo+ICsgCS8vIFN0b3Jl cyB0aGUgc3RhcnQgb2YgdGhlIGxpc3QKPiArIAliZWdpbiA9ICpzdGFydDsKPiArIAo+ICstCS8v IFN0YXlzIGluIHRoZSBsb29wIHdoaWxlIHRoZSBpdGVtIHRvIGJlIGRlbGV0ZWQgCj4gKysJLy8g U3RheXMgaW4gdGhlIGxvb3Agd2hpbGUgdGhlIGl0ZW0gdG8gYmUgZGVsZXRlZAo+ICsgCS8vIGlz IG5vdCBmb3VuZAo+ICsgCXdoaWxlICgqc3RhcnQpIHsKPiArIAkJLy8gU3RvcmVzIHRoZSBwcmlv ciBpdGVtIG9mIHRoZSBsaXN0Cj4gK0BAIC05OCwxMyArOTgsMTMgQEAgaW50IHNsaXN0X2RlbGV0 ZShjaGFyICpuYW1lLCBmb3JtdmFycyAqKnN0YXJ0LCBmb3JtdmFycyAqKmxhc3QpCj4gKyAJCS8v IHRoZSBuZXh0IGl0ZW0gaXMgdGhlIG9uZSB0byBiZSBkZWxldGVkPz8/Cj4gKyAJCWlmICghc3Ry Y2FzZWNtcCgoKnN0YXJ0KS0+bmV4dC0+bmFtZSwgbmFtZSkpIHsKPiArIAkJCS8vIEJlZm9yZSwg Y2hlY2sgaWYgdGhlIGl0ZW0gdGhhdCB3aWxsIGJlIGRlbGV0ZWQKPiArLQkJCS8vIGlzIHRoZSBs YXN0Li4uIGlmIHRydWUsIHRoZW4gdGhlIG5leHQgaXRlbSBuZWVkIHRvIAo+ICsrCQkJLy8gaXMg dGhlIGxhc3QuLi4gaWYgdHJ1ZSwgdGhlbiB0aGUgbmV4dCBpdGVtIG5lZWQgdG8KPiArIAkJCS8v IGNvbnRhaW4gbnVsbCAoIHRoZSBlbmQgb2YgbGlzdCApLCBhbmQgdGhlIGFjdHVhbAo+ICsgCQkJ Ly8gdmFsdWUgaXMgY2hhbmdlZCB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgcHJpb3IgdmFyaWFibGUK PiArIAkJCWlmICgoKnN0YXJ0KS0+bmV4dCA9PSAqbGFzdCkgewo+ICsgCQkJCSgqc3RhcnQpLT5u ZXh0ID0gTlVMTDsKPiArIAkJCQkqbGFzdCA9IHByaW9yOwo+ICstCQkJfQkJCQo+ICsrCQkJfQo+ ICsgCQkJZWxzZQo+ICsgCQkJCS8vIG90aGVyd2lzZS4uLiB3ZWxsCj4gKyAJCQkJLy8gdGhlIGl0 ZW0gdGhhdCB3aWxsIGJlIGRlbGV0ZWQgaXMgcG9pbnRlZAo+ICtAQCAtMTU3LDcgKzE1Nyw3IEBA IGNoYXIgKnNsaXN0X2l0ZW0oY29uc3QgY2hhciAqbmFtZSwgZm9ybXZhcnMgKnN0YXJ0KQo+ICsg CWJlZ2luID0gc3RhcnQ7Cj4gKyAKPiArIAl3aGlsZSAoYmVnaW4pIHsKPiArLQkJaWYgKCFzdHJj YXNlY21wKGJlZ2luLT5uYW1lLCBuYW1lKSkgCj4gKysJCWlmICghc3RyY2FzZWNtcChiZWdpbi0+ bmFtZSwgbmFtZSkpCj4gKyAJCQlyZXR1cm4gKCFiZWdpbi0+dmFsdWVbMF0gPyBOVUxMIDogYmVn aW4tPnZhbHVlKTsKPiArIAo+ICsgCQliZWdpbiA9IGJlZ2luLT5uZXh0Owo+ICtkaWZmIC0tZ2l0 IGEvc3JjL21kNS5jIGIvc3JjL21kNS5jCj4gK2luZGV4IDQ0YTFkZTIuLjU2Y2Y1YzAgMTAwNjQ0 Cj4gKy0tLSBhL3NyYy9tZDUuYwo+ICsrKysgYi9zcmMvbWQ1LmMKPiArQEAgLTU5LDcgKzU5LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgTUQ1Q29udGV4dCBNRDVfQ1RYOwo+ICsgCj4gKyAvKioKPiArICog Q29udmVydHMgYSBzdHJpbmcgdG8gTUQ1IGZvcm1hdC4KPiArLSogCj4gKysqCj4gKyAqIEBwYXJh bSBzdHIgU3RyaW5nIHRvIGNvbnZlcnQgdG8gTUQ1IGhhc2gKPiArICogQHJldHVybiBNRDUgaGFz aCBjb2RlCj4gKyAqKi8KPiArQEAgLTgyLDcgKzgyLDcgQEAgY2hhciAqbWQ1KGNvbnN0IGNoYXIg KnN0cikKPiArIAo+ICsgCS8vIGZpbmFsbHksIGhlcmUgaXMgYSBmaW5hbCBzdHJpbmcgZW5jcnlw dGVkIGluIGhleCBmbG9hdCBmb3JtYXQKPiArIAlNRDVGaW5hbChtZCwgJmNvbnRleHQpOwo+ICst CQo+ICsrCj4gKyAJLy8gaGVyZSwgdGhlIGxvb3AgaXMgbGVzcyB0aGFuIDMyIGJlY2F1c2UgYSBt ZDUgc3RyaW5nIGNhbiBjb250ZW50Cj4gKyAJLy8ganVzdCAzMiBieXRlcwo+ICsgCWZvcihpID0g MDsgaSA8IDMyOyBpKyspIHsKPiArQEAgLTIwNiw3ICsyMDYsNyBAQCBNRDVVcGRhdGUoc3RydWN0 IE1ENUNvbnRleHQgKmN0eCwgdW5zaWduZWQgY2hhciBjb25zdCAqYnVmLCB1bnNpZ25lZCBsZW4p Cj4gKyB9Cj4gKyAKPiArIC8qCj4gKy0gKiBGaW5hbCB3cmFwdXAgLSBwYWQgdG8gNjQtYnl0ZSBi b3VuZGFyeSB3aXRoIHRoZSBiaXQgcGF0dGVybiAKPiArKyAqIEZpbmFsIHdyYXB1cCAtIHBhZCB0 byA2NC1ieXRlIGJvdW5kYXJ5IHdpdGggdGhlIGJpdCBwYXR0ZXJuCj4gKyAgKiAxIDAqICg2NC1i aXQgY291bnQgb2YgYml0cyBwcm9jZXNzZWQsIE1TQi1maXJzdCkKPiArICAqLwo+ICsgdm9pZAo+ ICtkaWZmIC0tZ2l0IGEvc3JjL3Nlc3Npb24uYyBiL3NyYy9zZXNzaW9uLmMKPiAraW5kZXggYTlk MmVmMS4uNGQ5NmMzZSAxMDA2NDQKPiArLS0tIGEvc3JjL3Nlc3Npb24uYwo+ICsrKysgYi9zcmMv c2Vzc2lvbi5jCj4gK0BAIC0yNiw3ICsyNiw3IEBACj4gKyAgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKPiArICovCj4gKyAKPiArLS8qKiAKPiAr Ky8qKgo+ICsgKiBAZGVmZ3JvdXAgbGliY2dpX3Nlc3Npb24gU2Vzc2lvbiBIYW5kbGluZwo+ICsg KiAgIE9uZSBvZiB0aGUgbW9zdCBkaWZlcmVuY2lhbHMgb2YgTGliQ0dJIGlzIGl0cyBzdXBwb3J0 IHRvIHNlc3Npb25zLCBhIG1lY2hhbmlzbSB0aGF0IHBlcm1pdHMKPiArICogICB0aGUgYXBwbGlj YXRpb24gdG8ga2VlcCB2YXJpYWJsZXMgdHJvdWdoIHRoZSB1c2VyJ3Mgc2Vzc2lvbiwgd2hlbiBo ZSBpcyB2aXNpdGluZyB5b3VyIHdlYnNpdGUuCj4gK0BAIC0zNSw5ICszNSw5IEBACj4gKyAqIDx0 cj4KPiArICogPHRkPgo+ICsgKiAJU2Vzc2lvbiBmdW5jdGlvbnMgYXJlIGVhc3kgdG8gdXNlIGFu ZCB1bmRlcnN0YW5kLCBhbmQgcHJvYmFibHkgeW91J2xsIHdhbnQgdG8gdGFrZSBhIGNsb3Nlcgo+ ICstKiAJbG9vayBhdCA8aT5jZ2lfc2Vzc2lvbl9zYXZlX3BhdGgoKTwvaT4gYW5kIDxpPmNnaV9z ZXNzaW9uX2Nvb2tpZV9uYW1lKCk8L2k+IGZ1bmN0aW9ucy4gVGhlc2UgZnVuY3Rpb25zLCAKPiAr KyogCWxvb2sgYXQgPGk+Y2dpX3Nlc3Npb25fc2F2ZV9wYXRoKCk8L2k+IGFuZCA8aT5jZ2lfc2Vz c2lvbl9jb29raWVfbmFtZSgpPC9pPiBmdW5jdGlvbnMuIFRoZXNlIGZ1bmN0aW9ucywKPiArICog CWxldCB0aGUgcHJvZ3JhbW1lciB0byBzZXQgdGhlIGRpcmVjdG9yeSB3aGVyZSBzZXNzaW9uIGZp bGVzIHdpbGwKPiArLSogCWJlIHNhdmVkIGluIHRoZSBoYXJkIGRpc2sgYW5kIHRoZSBjb29raWUg bmFtZSB0byB0aGUgc2Vzc2lvbiwgcmVzcGVjdGl2ZWx5LiAKPiArKyogCWJlIHNhdmVkIGluIHRo ZSBoYXJkIGRpc2sgYW5kIHRoZSBjb29raWUgbmFtZSB0byB0aGUgc2Vzc2lvbiwgcmVzcGVjdGl2 ZWx5Lgo+ICsgKiAJPGJyPjxicj4KPiArICogCUFzIHRoZSBDR0kgaXMgcnVubmluZyBvbiB0aGUg d2Vic2VydmVyIHdoaWNoIGEgY29tbW9uIHVzZXIsIGl0IGhhdmUgZnVsbCBhY2Nlc3MgdG8gaXRz IHJlc3BlY3RpdmUgc2Vzc2lvbgo+ICsgKiAJZmlsZS4gQnV0IHRoZSBtb3N0IGJpZyBwcm9ibGVt IGlzIHRoYXQgeW91IG1heQo+ICtAQCAtMTAyLDcgKzEwMiw3IEBAIGNvbnN0IGNoYXIgKnNlc3Np b25fZXJyb3JfbWVzc2FnZVtdID0gewo+ICsgIAkiU2Vzc2lvbiB2YXJpYWJsZSBub3QgcmVnaXN0 ZXJlZCIsCj4gKyAgCSJGYWlsZWQgdG8gb3BlbiBzZXNzaW9uIGZpbGUgZm9yIG1hbmlwdWxhdGlv biIKPiArIH07Cj4gKy0gCj4gKysKPiArIAo+ICsgLy8gY2dpLmMKPiArIGV4dGVybiBpbnQgaGVh ZGVyc19pbml0aWFsaXplZDsKPiArQEAgLTE0Miw5ICsxNDIsOSBAQCB2b2lkIHNlc3NfZ2VuZXJh dGVfaWQoKQo+ICsgCXNlc3NfZm5hbWUgPSAoY2hhciAqKW1hbGxvYyhzYXZlX3BhdGhfbGVuICsg U0VTU19JRF9MRU4gKyAxKTsKPiArIAlpZiAoIXNlc3NfZm5hbWUpCj4gKyAJCWxpYmNnaV9lcnJv cihFX01FTU9SWSwgIkZpbGUgJXMsIGxpbmUgJXMiLCBfX0ZJTEVfXywgX19MSU5FX18pOwo+ICst CQkKPiArLQlmb3IgKGkgPSAwOyBpIDwgU0VTU19JRF9MRU47IGkrKykgCj4gKy0JCXNlc3NfaWRb aV0gPSB0YWJsZVtyYW5kKCklbGVuXTsJCj4gKysKPiArKwlmb3IgKGkgPSAwOyBpIDwgU0VTU19J RF9MRU47IGkrKykKPiArKwkJc2Vzc19pZFtpXSA9IHRhYmxlW3JhbmQoKSVsZW5dOwo+ICsgCXNl c3NfaWRbU0VTU19JRF9MRU5dID0gJ1wwJzsKPiArIAo+ICsgCXNucHJpbnRmKHNlc3NfZm5hbWUs IChTRVNTX0lEX0xFTiArIHNhdmVfcGF0aF9sZW4gKyAxKSwgIiVzJXMlcyIsIFNFU1NJT05fU0FW RV9QQVRILCBTRVNTSU9OX0ZJTEVfUFJFRklYLCBzZXNzX2lkKTsKPiArQEAgLTE1NSwxMCArMTU1 LDEwIEBAIGludCBzZXNzX2NyZWF0ZV9maWxlKCkKPiArIHsKPiArIAkvLyB0aW1ldmFsLCBnZXR0 aW1lb2ZkYXkgYXJlIHVzZWQgdG9naGV0ZXIgd2l0aCBzcmFuZCgpIGZ1bmN0aW9uCj4gKyAJc3Ry dWN0IHRpbWV2YWwgdHY7Cj4gKy0JCj4gKysKPiArIAlnZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKTsK PiArIAlzcmFuZCh0di50dl9zZWMgKiB0di50dl91c2VjICogMTAwMDAwKTsKPiArLQkKPiArKwo+ ICsgCXNlc3NfZ2VuZXJhdGVfaWQoKTsKPiArIAlzZXNzX2ZpbGUgPSBmb3BlbihzZXNzX2ZuYW1l LCAidyIpOwo+ICsgCWlmICghc2Vzc19maWxlKSB7Cj4gK0BAIC0xNjgsMTYgKzE2OCwxNiBAQCBp bnQgc2Vzc19jcmVhdGVfZmlsZSgpCj4gKyAKPiArIAkJcmV0dXJuIDA7Cj4gKyAJfQo+ICstCQo+ ICsrCj4gKyAJLy8gQ2hhbmdlcyBmaWxlIHBlcm1pc3Npb24gdG8gMDYwMAo+ICsgCWNobW9kKHNl c3NfZm5hbWUsIFNfSVJVU1J8U19JV1VTUik7Cj4gKyAJZmNsb3NlKHNlc3NfZmlsZSk7Cj4gKyAK PiArIAlyZXR1cm4gMTsKPiArLX0JCj4gKyt9Cj4gKyAKPiArLS8qKiAKPiArLSogRGVzdHJveXMg dGhlIHNlc3Npb24uIAo+ICsrLyoqCj4gKysqIERlc3Ryb3lzIHRoZSBzZXNzaW9uLgo+ICsgKiBE ZXN0cm95cyB0aGUgY3VycmVudCBvcGVuZWQgc2Vzc2lvbiwgaW5jbHVkaW5nIGFsbCBkYXRhLgo+ ICsgKiBBZnRlciBzZXNzaW9uX2Rlc3Ryb3koKSB3YXMgY2FsbGVkLCBpcyBub3QgbW9yZQo+ICsg KiBwb3NzaWJsZSB0byB1c2Ugc2Vzc2lvbiBmdW5jdGlvbnMgYmVmb3JlIGFuIGFub3RoZXIKPiAr QEAgLTE5MywxMCArMTkzLDEwIEBAIGludCBjZ2lfc2Vzc2lvbl9kZXN0cm95KCkKPiArIAkJc2Vz c19maW5pdGlhbGl6ZWQgPSAwOwo+ICsgCQlzbGlzdF9mcmVlKCZzZXNzX2xpc3Rfc3RhcnQpOwo+ ICsgCj4gKy0JCS8vIGhoaG1tbS4uIAo+ICstCQlpZiAoaGVhZGVyc19pbml0aWFsaXplZCkgCj4g KysJCS8vIGhoaG1tbS4uCj4gKysJCWlmIChoZWFkZXJzX2luaXRpYWxpemVkKQo+ICsgCQkJbGli Y2dpX2Vycm9yKEVfV0FSTklORywgIkhlYWRlcnMgYWxyZWF5IHNlbnQuIHNlc3Npb25fZGVzdHJv eSgpIGNhbid0IGZ1bGx5IHVucmVnaXN0ZXIgdGhlIHNlc3Npb24iKTsKPiArLQkJZWxzZSAKPiAr KwkJZWxzZQo+ICsgCQkJY2dpX2FkZF9jb29raWUoU0VTU0lPTl9DT09LSUVfTkFNRSwgIiIsIDAs IDAsIDAsIDApOwo+ICsgCj4gKyAJCXJldHVybiAxOwo+ICtAQCAtMjEzLDkgKzIxMyw5IEBAIGlu dCBjZ2lfc2Vzc2lvbl9kZXN0cm95KCkKPiArIGludCBzZXNzX2ZpbGVfcmV3cml0ZSgpCj4gKyB7 Cj4gKyAJZm9ybXZhcnMgKmRhdGE7Cj4gKy0JCj4gKysKPiArIAljZ2lfaW5pdF9oZWFkZXJzKCk7 Cj4gKy0JCj4gKysKPiArIAkvLyBSZXdyaXRlcyBhbGwgZGF0YSB0byBzZXNzaW9uIGZpbGUKPiAr IAlzZXNzX2ZpbGUgPSBmb3BlbihzZXNzX2ZuYW1lLCAidyIpOwo+ICsgCj4gK0BAIC0yMjYsNyAr MjI2LDcgQEAgaW50IHNlc3NfZmlsZV9yZXdyaXRlKCkKPiArIAo+ICsgCQlyZXR1cm4gMDsKPiAr IAl9Cj4gKy0JCj4gKysKPiArIAlkYXRhID0gc2Vzc19saXN0X3N0YXJ0Owo+ICsgCj4gKyAJaWYg KGRhdGEgIT0gTlVMTCkgewo+ICtAQCAtMjYwLDEwICsyNjAsMTAgQEAgY2hhciAqY2dpX3Nlc3Np b25fdmFyKGNvbnN0IGNoYXIgKnZhcl9uYW1lKQo+ICsgCj4gKyAvKioKPiArICogRGVmaW5lcyB0 aGUgbmFtZSBvZiB0aGUgY29va2llIHRoYXQgTGliQ0dJIHdpbGwgdXNlIHRvIHN0b3JlIHNlc3Np b24ncyBJRC4KPiArLSogVGhpcyBmdW5jdGlvbiB3b3JrcyBsaWtlIGNnaV9zZXNzaW9uX3NhdmVf cGF0aCgpLiAKPiArLSogVGhpcyBmdW5jdGlvbmFsaXR5IGxldCB5b3UgdG8gdXNlICBkaWZmZXJl bnQgbmFtZXMgZm9yIGVhY2ggc2l0ZSwgYnV0IHJlbWVtYmVyLCB5b3UgY2Fubm90IAo+ICstKiB1 c2UgbXVsdGlwbGUgc2Vzc2lvbiBmb3IgdGhlIHNhbWUgYXBwbGljYXRpb24geWV0LiAKPiArLSog Cj4gKysqIFRoaXMgZnVuY3Rpb24gd29ya3MgbGlrZSBjZ2lfc2Vzc2lvbl9zYXZlX3BhdGgoKS4K PiArKyogVGhpcyBmdW5jdGlvbmFsaXR5IGxldCB5b3UgdG8gdXNlICBkaWZmZXJlbnQgbmFtZXMg Zm9yIGVhY2ggc2l0ZSwgYnV0IHJlbWVtYmVyLCB5b3UgY2Fubm90Cj4gKysqIHVzZSBtdWx0aXBs ZSBzZXNzaW9uIGZvciB0aGUgc2FtZSBhcHBsaWNhdGlvbiB5ZXQuCj4gKysqCj4gKyAqIEBwYXJh bSBjb29raWVfbmFtZSBOYW1lIG9mIHRoZSBjb29raWUgdG8gY3JlYXRlCj4gKyAqIEBzZWUgY2dp X3Nlc3Npb25fc2F2ZV9wYXRoKCkKPiArICogQG5vdGUgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNh bGxlZCBiZWZvcmUgY2dpX3Nlc3Npb25fc3RhcnQoKQo+ICtAQCAtMjc2LDIzICsyNzYsMjMgQEAg dm9pZCBjZ2lfc2Vzc2lvbl9jb29raWVfbmFtZShjb25zdCBjaGFyICpjb29raWVfbmFtZSkKPiAr IC8qKgo+ICsgKiBEZWZpbmVzIHdoZXJlIHNlc3Npb24gY29udHJvbCBmaWxlcyB3aWxsIGJlIHNh dmVkLgo+ICsgKiBJZiBpbiB0aGUgeW91ciBDR0kgeW91IGRvbid0IG1ha2UgYSBjYWxsIHRvIGNn aV9zZXNzaW9uX3NhdmVfcGF0aCgpLCBMaWJDR0kgd2lsbAo+ICstKiB1c2UgdGhlIGRlZmF1bHQg dmFsdWUsIHdoaWNoIGlzICIvdG1wLyIuIFRvIHNlZSBob3cgdG8gbW9kaWZ5IHRoZSB2YWx1ZSwg c2VlIHRoZSBmb2xsb3dpbmcgZXhhbXBsZS4gCj4gKysqIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZSwg d2hpY2ggaXMgIi90bXAvIi4gVG8gc2VlIGhvdyB0byBtb2RpZnkgdGhlIHZhbHVlLCBzZWUgdGhl IGZvbGxvd2luZyBleGFtcGxlLgo+ICsgKiA8YnI+SnVzdCBub3RlIHlvdSBuZWVkIHRvIGFkZCAn LycgYXQgdGhlIGVuZCBvZiB0aGUgZGlyZWN0b3J5IG5hbWUKPiArICogXGNvZGUKPiArICogLy8g eW91cl9jZ2kuYwo+ICstKiAvLyBTZXQgInNlc3Npb25fZmlsZXMiIGRpcmVjdG9yeSB1bmRlciB5 b3VyIENHSSBkaXJlY3RvcnkgYXMgdGhlIHBhdGggCj4gKysqIC8vIFNldCAic2Vzc2lvbl9maWxl cyIgZGlyZWN0b3J5IHVuZGVyIHlvdXIgQ0dJIGRpcmVjdG9yeSBhcyB0aGUgcGF0aAo+ICsgKiAv LyB3aGljaCBMaWJDR0kgd2lsbCB1c2UgdG8gc3RvcmUgc2Vzc2lvbiBmaWxlcy4KPiArLSogCj4g KysqCj4gKyAqIGNnaV9zZXNzaW9uX3NhdmVfcGF0aCgic2Vzc2lvbl9maWxlcy8iKTsKPiArICog IFxlbmRjb2RlCj4gKy0qICAKPiArLSogIE5vdGUgdGhhdCB1c2luZyB0aGlzIGZvcm0sIExpYkNH SSB3aWxsIHNlYXJjaCBmb3IgInNlc3Npb25fZmlsZXMiIGRpcmVjdG9yeSB1c2luZyByZWxhdGl2 ZSBwYXRoIAo+ICsrKgo+ICsrKiAgTm90ZSB0aGF0IHVzaW5nIHRoaXMgZm9ybSwgTGliQ0dJIHdp bGwgc2VhcmNoIGZvciAic2Vzc2lvbl9maWxlcyIgZGlyZWN0b3J5IHVzaW5nIHJlbGF0aXZlIHBh dGgKPiArICogIHRvIHlvdXIgY2dpIGFwcGxpY2F0aW9uLiBGb3IgZXhhbXBsZSwgaWYgeW91ciBD R0kgc2NyaXB0IGlzIGxvY2F0ZWQgYXQKPiArICogIC91c3IvbG9jYWwvaHR0cGQvd2ViL3lvdXJf bmFtZS9jZ2ktYmluLyBkaXJlY3RvcnksIGFuZCB5b3UgdXNlIHRoZSBhYm92ZSBkZWNsYXJhdGlv biwgdGhlIGZpbGVzIGZvciB0aGUgc2Vzc2lvbiB3aWxsIGJlCj4gKy0qIHN0b3JlZCBhdCAgL3Vz ci9sb2NhbC9odHRwZC93ZWIveW91cl9uYW1lL2NnaS1iaW4vc2Vzc2lvbl9maWxlcyBkaXJlY3Rv cnkuIAo+ICsrKiBzdG9yZWQgYXQgIC91c3IvbG9jYWwvaHR0cGQvd2ViL3lvdXJfbmFtZS9jZ2kt YmluL3Nlc3Npb25fZmlsZXMgZGlyZWN0b3J5Lgo+ICsgKiBSZXN1bWluZywgdGhlIHBhdGggaXMg cmVsYXRpdmUgdG8gd2hlcmUgeW91ciBhcHBsaWNhdGlvbiByZXNpZGVzLiA8YnI+PGJyPkFuZCBy ZW1lbWJlciwgTGliQ0dJIFxiIGRvZXMgXGIgbm90Cj4gKy0qIGNyZWF0ZSB0aGUgZGlyZWN0b3J5 IGZvciB5b3UuIAo+ICstKiAKPiArKyogY3JlYXRlIHRoZSBkaXJlY3RvcnkgZm9yIHlvdS4KPiAr KyoKPiArICogQHBhcmFtIHBhdGggUGF0aCwgcmVsYXRpdmUgb3IgYWJzb2x1dGUKPiArICogQHNl ZSBjZ2lfc2Vzc2lvbl9jb29raWVfbmFtZQo+ICsgKiBAbm90ZSBUaGlzIGZ1bmN0aW9uIG11c3Qg YmUgY2FsbGVkIGJlZm9yZSBjZ2lfc2Vzc2lvbl9zdGFydCgpCj4gK0BAIC0zMTMsMTIgKzMxMywx MiBAQCB2b2lkIGNnaV9zZXNzaW9uX3NhdmVfcGF0aChjb25zdCBjaGFyICpwYXRoKQo+ICsgaW50 IGNnaV9zZXNzaW9uX3JlZ2lzdGVyX3Zhcihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2 YWx1ZSkKPiArIHsKPiArIAlmb3JtdmFycyAqZGF0YTsKPiArLQkKPiArKwo+ICsgCWlmICghc2Vz c19pbml0aWFsaXplZCkgewo+ICsgCQlzZXNzaW9uX2xhc3RlcnJvciA9IFNFU1NfTk9UX0lOSVRJ QUxJWkVEOwo+ICsgCj4gKyAJCWxpYmNnaV9lcnJvcihFX1dBUk5JTkcsIHNlc3Npb25fZXJyb3Jf bWVzc2FnZVtzZXNzaW9uX2xhc3RlcnJvcl0pOwo+ICstCQkKPiArKwo+ICsgCQlyZXR1cm4gMDsK PiArIAl9Cj4gKyAKPiArQEAgLTMyOCwxNCArMzI4LDE0IEBAIGludCBjZ2lfc2Vzc2lvbl9yZWdp c3Rlcl92YXIoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCj4gKyAJCQlzZXNz aW9uX2xhc3RlcnJvciA9IFNFU1NfT1BFTl9GSUxFOwo+ICsgCj4gKyAJCQlsaWJjZ2lfZXJyb3Io RV9XQVJOSU5HLCBzZXNzaW9uX2Vycm9yX21lc3NhZ2Vbc2Vzc2lvbl9sYXN0ZXJyb3JdKTsKPiAr LQkJCQo+ICsrCj4gKyAJCQlyZXR1cm4gMDsKPiArIAkJfQo+ICstCQkKPiArKwo+ICsgCQlkYXRh ID0gKGZvcm12YXJzICopbWFsbG9jKHNpemVvZihmb3JtdmFycykpOwo+ICsgCQlpZiAoIWRhdGEp Cj4gKyAJCQlsaWJjZ2lfZXJyb3IoRV9NRU1PUlksICIlcywgbGluZSAlcyIsIF9fRklMRV9fLCBf X0xJTkVfXyk7Cj4gKy0JCQo+ICsrCj4gKyAJCWRhdGEtPm5hbWUgPSAoY2hhciAqKW1hbGxvYyhz dHJsZW4obmFtZSkgKyAxKTsKPiArIAkJaWYgKCFkYXRhLT5uYW1lKQo+ICsgCQkJbGliY2dpX2Vy cm9yKEVfTUVNT1JZLCAiJXMsIGxpbmUgJXMiLCBfX0ZJTEVfXywgX19MSU5FX18pOwo+ICtAQCAt MzUwLDEwICszNTAsMTAgQEAgaW50IGNnaV9zZXNzaW9uX3JlZ2lzdGVyX3Zhcihjb25zdCBjaGFy ICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKPiArIAo+ICsgCQlzdHJuY3B5KGRhdGEtPm5hbWUs IG5hbWUsIHN0cmxlbihuYW1lKSk7Cj4gKyAJCWRhdGEtPm5hbWVbc3RybGVuKG5hbWUpXSA9ICdc MCc7Cj4gKy0JCQo+ICsrCj4gKyAJCXN0cm5jcHkoZGF0YS0+dmFsdWUsIHZhbHVlLCBzdHJsZW4o dmFsdWUpKTsKPiArIAkJZGF0YS0+dmFsdWVbc3RybGVuKHZhbHVlKV0gPSAnXDAnOwo+ICstCQkK PiArKwo+ICsgCQlpZiAoIXNlc3NfbGlzdF9sYXN0KQo+ICsgCQkJZnByaW50ZihzZXNzX2ZpbGUs ICIlcz0lcyIsIG5hbWUsIHZhbHVlKTsKPiArIAkJZWxzZQo+ICtAQCAtMzgxLDEyICszODEsMTIg QEAgaW50IGNnaV9zZXNzaW9uX2FsdGVyX3Zhcihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFy ICpuZXdfdmFsdWUpCj4gKyB7Cj4gKyAJcmVnaXN0ZXIgZm9ybXZhcnMgKmRhdGE7Cj4gKyAJdW5z aWduZWQgaW50IHZhbHVlX2xlbjsKPiArLQkKPiArKwo+ICsgCWRhdGEgPSBzZXNzX2xpc3Rfc3Rh cnQ7Cj4gKyAJd2hpbGUgKGRhdGEpIHsKPiArIAkJaWYgKCFzdHJjbXAoZGF0YS0+bmFtZSwgbmFt ZSkpIHsKPiArIAkJCXZhbHVlX2xlbiA9IHN0cmxlbihuZXdfdmFsdWUpICsgMTsKPiArLQkJCQo+ ICsrCj4gKyAJCQlpZiAodmFsdWVfbGVuID4gc3RybGVuKGRhdGEtPnZhbHVlKSkgewo+ICsgCQkJ CWRhdGEtPnZhbHVlID0gcmVhbGxvYyhkYXRhLT52YWx1ZSwgdmFsdWVfbGVuKzEpOwo+ICsgCQkJ CWlmICghZGF0YS0+dmFsdWUpCj4gK0BAIC0zOTYsNyArMzk2LDcgQEAgaW50IGNnaV9zZXNzaW9u X2FsdGVyX3Zhcihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpuZXdfdmFsdWUpCj4gKyAK PiArIAkJCXN0cm5jcHkoZGF0YS0+dmFsdWUsIG5ld192YWx1ZSwgdmFsdWVfbGVuKTsKPiArIAkJ CWRhdGEtPnZhbHVlW3ZhbHVlX2xlbl0gPSAnXDAnOwo+ICstCQkJCj4gKysKPiArIAkJCXNlc3Nf ZmlsZV9yZXdyaXRlKCk7Cj4gKyAKPiArIAkJCXJldHVybiAxOwo+ICtAQCAtNDA0LDkgKzQwNCw5 IEBAIGludCBjZ2lfc2Vzc2lvbl9hbHRlcl92YXIoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hh ciAqbmV3X3ZhbHVlKQo+ICsgCj4gKyAJCWRhdGEgPSBkYXRhLT5uZXh0Owo+ICsgCX0KPiArLQkK PiArKwo+ICsgCXNlc3Npb25fbGFzdGVycm9yID0gU0VTU19WQVJfTk9UX1JFR0lTVEVSRUQ7Cj4g Ky0JCj4gKysKPiArIAlyZXR1cm4gMDsKPiArIH0KPiArIAo+ICtAQCAtNDM3LDcgKzQzNyw3IEBA IGludCBjZ2lfc2Vzc2lvbl91bnJlZ2lzdGVyX3ZhcihjaGFyICpuYW1lKQo+ICsgCQlzZXNzaW9u X2xhc3RlcnJvciA9IFNFU1NfTk9UX0lOSVRJQUxJWkVEOwo+ICsgCj4gKyAJCWxpYmNnaV9lcnJv cihFX1dBUk5JTkcsIHNlc3Npb25fZXJyb3JfbWVzc2FnZVtzZXNzaW9uX2xhc3RlcnJvcl0pOwo+ ICstCQkKPiArKwo+ICsgCQlyZXR1cm4gMDsKPiArIAl9Cj4gKyAKPiArQEAgLTQ0OSw3ICs0NDks NyBAQCBpbnQgY2dpX3Nlc3Npb25fdW5yZWdpc3Rlcl92YXIoY2hhciAqbmFtZSkKPiArIAkJcmV0 dXJuIDA7Cj4gKyAJfQo+ICsgCj4gKy0JaWYgKCFzZXNzX2ZpbGVfcmV3cml0ZSgpKSAKPiArKwlp ZiAoIXNlc3NfZmlsZV9yZXdyaXRlKCkpCj4gKyAJCXJldHVybiAwOwo+ICsgCj4gKyAJcmV0dXJu IDE7Cj4gK0BAIC00NTcsNyArNDU3LDcgQEAgaW50IGNnaV9zZXNzaW9uX3VucmVnaXN0ZXJfdmFy KGNoYXIgKm5hbWUpCj4gKyAKPiArIC8qKgo+ICsgKiBTdGFydHMgYSBuZXcgc2Vzc2lvbi4KPiAr LSogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3Igc3RhcnRpbmcgYW5kIGNyZWF0aW5n IGEgbmV3IAo+ICsrKiBUaGlzIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBzdGFydGluZyBh bmQgY3JlYXRpbmcgYSBuZXcKPiArICogc2Vzc2lvbi4gSXQgbXVzdCBiZSBjYWxsZWQgYmVmb3Jl IGFueSBvdGhlciBzZXNzaW9uIGZ1bmN0aW9uLAo+ICsgKiBhbmQgZXZlcnkgdGltZSBiZWZvcmUg YW55IEhUTUwgaGVhZGVyIGhhcyBzZW50Lgo+ICsgKiBAc2VlIHNlc3Npb25fZGVzdHJveSgpCj4g K0BAIC00NzIsMTMgKzQ3MiwxMyBAQCBpbnQgY2dpX3Nlc3Npb25fc3RhcnQoKQo+ICsgCQlzZXNz aW9uX2xhc3RlcnJvciA9IFNFU1NfU1RBUlRFRDsKPiArIAo+ICsgCQlsaWJjZ2lfZXJyb3IoRV9X QVJOSU5HLCBzZXNzaW9uX2Vycm9yX21lc3NhZ2Vbc2Vzc2lvbl9sYXN0ZXJyb3JdKTsKPiArLQkJ Cj4gKysKPiArIAkJcmV0dXJuIDA7Cj4gKyAJfQo+ICstCQo+ICsrCj4gKyAJaWYgKGhlYWRlcnNf aW5pdGlhbGl6ZWQpIHsKPiArIAkJc2Vzc2lvbl9sYXN0ZXJyb3IgPSBTRVNTX0hFQURFUlNfU0VO VDsKPiArLQkJCj4gKysKPiArIAkJbGliY2dpX2Vycm9yKEVfV0FSTklORywgc2Vzc2lvbl9lcnJv cl9tZXNzYWdlW3Nlc3Npb25fbGFzdGVycm9yXSk7Cj4gKyAKPiArIAkJcmV0dXJuIDA7Cj4gK0BA IC00ODcsNyArNDg3LDcgQEAgaW50IGNnaV9zZXNzaW9uX3N0YXJ0KCkKPiArIAkvLyBHZXQgdGhl IHNlc3Npb24gSUQKPiArIAlzaWQgPSBjZ2lfY29va2llX3ZhbHVlKFNFU1NJT05fQ09PS0lFX05B TUUpOwo+ICsgCj4gKy0JLy8gSWYgdGhlcmUgaXNuJ3QgYSBzZXNzaW9uIElELCB3ZSBuZWVkIHRv IGNyZWF0ZSBvbmUgCj4gKysJLy8gSWYgdGhlcmUgaXNuJ3QgYSBzZXNzaW9uIElELCB3ZSBuZWVk IHRvIGNyZWF0ZSBvbmUKPiArIAlpZiAoc2lkID09IE5VTEwpIHsKPiArIAkJaWYgKHNlc3NfY3Jl YXRlX2ZpbGUoKSkgewo+ICsgCQkJY2dpX2FkZF9jb29raWUoU0VTU0lPTl9DT09LSUVfTkFNRSwg c2Vzc19pZCwgMCwgMCwgMCwgMCk7Cj4gK0BAIC01MDIsMTcgKzUwMiwxNyBAQCBpbnQgY2dpX3Nl c3Npb25fc3RhcnQoKQo+ICsgCS8vIE1ha2Ugc3VyZSB0aGUgZmlsZSBleGlzdHMKPiArIAllbHNl IHsKPiArIAkJc2F2ZV9wYXRoX2xlbiA9IHN0cmxlbihTRVNTSU9OX1NBVkVfUEFUSCkgKyBzdHJs ZW4oU0VTU0lPTl9GSUxFX1BSRUZJWCk7Cj4gKy0JCQo+ICsrCj4gKyAJCXNlc3NfZm5hbWUgPSAo Y2hhciAqKW1hbGxvYyhzYXZlX3BhdGhfbGVuICsgU0VTU19JRF9MRU4gKyAxKTsKPiArIAkJaWYg KCFzZXNzX2ZuYW1lKQo+ICsgCQkJbGliY2dpX2Vycm9yKEVfTUVNT1JZLCAiRmlsZSAlcywgbGlu ZSAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXyk7Cj4gKy0JCj4gKysKPiArIAkJc25wcmludGYoc2Vz c19mbmFtZSwgKFNFU1NfSURfTEVOICsgc2F2ZV9wYXRoX2xlbiArIDEpLCAiJXMlcyVzIiwgU0VT U0lPTl9TQVZFX1BBVEgsIFNFU1NJT05fRklMRV9QUkVGSVgsIHNpZCk7Cj4gKyAJCXNlc3NfZm5h bWVbU0VTU19JRF9MRU4gKyBzYXZlX3BhdGhfbGVuXSA9ICdcMCc7Cj4gKy0JCQo+ICstCQllcnJu byA9IDA7CQkKPiArKwo+ICsrCQllcnJubyA9IDA7Cj4gKyAJCWZwID0gZm9wZW4oc2Vzc19mbmFt ZSwgInIiKTsKPiArLQkJaWYgKGVycm5vID09IEVOT0VOVCkgeyAKPiArKwkJaWYgKGVycm5vID09 IEVOT0VOVCkgewo+ICsgCQkJLy8gVGhlIGZpbGUgZG9lc24ndCBleGlzdHMuIENyZWF0ZSBhIG5l dyBzZXNzaW9uCj4gKyAJCQlpZiAoc2Vzc19jcmVhdGVfZmlsZSgpKSB7Cj4gKyAJCQkJY2dpX2Fk ZF9jb29raWUoU0VTU0lPTl9DT09LSUVfTkFNRSwgc2Vzc19pZCwgMCwgMCwgMCwgMCk7Cj4gK0BA IC01MzIsMTUgKzUzMiwxNSBAQCBpbnQgY2dpX3Nlc3Npb25fc3RhcnQoKQo+ICsgCXNlc3NfaWRb U0VTU19JRF9MRU5dID0gJ1wwJzsKPiArIAo+ICsgCS8vIE5vdyB3ZSBuZWVkIHRvIHJlYWQgYWxs IHRoZSBmaWxlIGNvbnRlbnRzCj4gKy0JLy8gVGhpcyBpcyBhIHRlbXBvcmFyeSBzb2x1dGlvbiwg SSdsbCB0cnkgdG8gCj4gKysJLy8gVGhpcyBpcyBhIHRlbXBvcmFyeSBzb2x1dGlvbiwgSSdsbCB0 cnkgdG8KPiArIAkvLyBtYWtlIGEgZmFzdGVyIGltcGxlbWVudGF0aW9uCj4gKyAJc3RhdChzZXNz X2ZuYW1lLCAmc3QpOwo+ICsgCWJ1ZiA9IChjaGFyICopbWFsbG9jKHN0LnN0X3NpemUgKyAyKTsK PiArIAlpZiAoIWJ1ZikKPiArIAkJbGliY2dpX2Vycm9yKEVfTUVNT1JZLCAiRmlsZSAlcywgbGlu ZSAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXyk7Cj4gKy0JCQo+ICsrCj4gKyAJZmdldHMoYnVmLCBz dC5zdF9zaXplKzEsIGZwKTsKPiArLQkJCj4gKysKPiArIAlpZiAoYnVmICE9IE5VTEwgJiYgc3Ry bGVuKGJ1ZikgPiAxKQo+ICsgCQlwcm9jZXNzX2RhdGEoYnVmLCAmc2Vzc19saXN0X3N0YXJ0LCAm c2Vzc19saXN0X2xhc3QsICc9JywgJzsnKTsKPiArIAo+ICtAQCAtNTUxLDYgKzU1MSw2IEBAIGlu dCBjZ2lfc2Vzc2lvbl9zdGFydCgpCj4gKyAJcmV0dXJuIDE7Cj4gKyB9Cj4gKyAKPiArLS8qKiAK PiArKy8qKgo+ICsgKiBAfQo+ICsgKi8KPiArZGlmZiAtLWdpdCBhL3NyYy9zdHJpbmcuYyBiL3Ny Yy9zdHJpbmcuYwo+ICtpbmRleCAzZGM0MzdmLi5lMmJiYTk3IDEwMDY0NAo+ICstLS0gYS9zcmMv c3RyaW5nLmMKPiArKysrIGIvc3JjL3N0cmluZy5jCj4gK0BAIC0zMSw3ICszMSw3IEBACj4gKyAv KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Cj4gKyAqIAkJCQkJU1RSSU5HIEdST1VQCj4gKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCj4gKy0vKiogCj4gKysvKioKPiArICogQGRl Zmdyb3VwIGxpYmNnaV9zdHJpbmcgU3RyaW5ncwo+ICsgKiBHZW5lcmFsIHN0cmluZyBtYW5pcHVs YXRpb24gYW5kIHV0aWxpdGllcyBmdW5jdGlvbnMKPiArICogQHsKPiArQEAgLTQwLDEyICs0MCwx MiBAQAo+ICsgLyoqCj4gKyAqIFNhbWUgdG8gYWRkc2xhc2hlcygpLCBleGNlcHQgdGhhdCB0aGlz IG9uZSBvbmx5IGRvIHRoZSBhY3Rpb24gd2hpbGUgJ24nIGlzIGdyZWF0IHRoYW4gMC4KPiArICog QHBhcmFtIHMgU3RyaW5nIHRvIHBhcnNlCj4gKy0qIEBwYXJhbSBuIE51bWJlciBvZiBjaGFyYWN0 ZXJzIHRvIHdvcmsgd2l0aC4gCj4gKysqIEBwYXJhbSBuIE51bWJlciBvZiBjaGFyYWN0ZXJzIHRv IHdvcmsgd2l0aC4KPiArICogQHNlZSBhZGRzbGFzaGVzKCkKPiArICogXGNvZGUKPiArICogY2hh ciAqbmFtZSA9ICJNeSB0ZXN0IHN0cmluZyBpcyBjYWxsZWQgXCJmb29iYXJcIiI7Cj4gKyAqIHB1 dHMobmFtZSk7IC8vIHdpbGwgZGlzcGxheSBNeSB0ZXN0IHN0cmluZyBpcyBjYWxsZWQgImZvb2Jh ciIKPiArLSogCj4gKysqCj4gKyAqIG5hbWUgPSBhZGRuc2xhc2hlcyhuYW1lLCAzMSk7Cj4gKyAq IHB1dHMobmFtZSk7IC8vIHdpbGwgZGlzcGxheSBNeSB0ZXN0IHN0cmluZyBpcyBjYWxsZWQgXCJm b29iYXIiCj4gKyAqIFxlbmRjb2RlCj4gK0BAIC04MSw3ICs4MSw3IEBAIGNoYXIgKmFkZG5zbGFz aGVzKGNoYXIgKnMsIGludCBuKQo+ICsgCXJldHVybiB0bXA7Cj4gKyB9Cj4gKyAKPiArLS8qKiAK PiArKy8qKgo+ICsgKiBBZGQgc2xhc2hlcyB0byBhIHN0cmluZyB3aGVuIG5lY2Vzc2FyeS4KPiAr ICogQWRkcyBhICdcJyBpbiBldmVyeSBxdW90ZSAoICIgKSwgYXBvc3Ryb3BoZSAoICcgKSBvciAg YmFja3NsYXNoICggXCApCj4gKyAqIEl0J3MgdXNlZnVsIHdoZW4gd29ya2luZyB3aXRoIGRhdGFi YXNlcywgZm9yIGV4YW1wbGUsIGJlY2F1c2UKPiArQEAgLTkzLDcgKzkzLDcgQEAgY2hhciAqYWRk bnNsYXNoZXMoY2hhciAqcywgaW50IG4pCj4gKyAqIFxjb2RlCj4gKyAqIGNoYXIgKm5hbWUgPSAi TXkgdGVzdCBzdHJpbmcgaXMgY2FsbGVkIFwiZm9vYmFyXCIiOwo+ICsgKiBwdXRzKG5hbWUpOyAv LyB3aWxsIGRpc3BsYXkgTXkgdGVzdCBzdHJpbmcgaXMgY2FsbGVkICJmb29iYXIiCj4gKy0qIAo+ ICsrKgo+ICsgKiBuYW1lID0gYWRkc2xhc2hlcyhuYW1lKTsKPiArICogcHV0cyhuYW1lKTsgLy8g d2lsbCBkaXNwbGF5IE15IHRlc3Qgc3RyaW5nIGlzIGNhbGxlZCBcImZvb2JhclwiCj4gKyAqIFxl bmRjb2RlCj4gK0BAIC0xMzEsNyArMTMxLDcgQEAgY2hhciAqc3RyaXBuc2xhc2hlcyhjaGFyICpz LCBpbnQgbikKPiArIAkJcmV0dXJuIE5VTEw7Cj4gKyAKPiArIAl3aGlsZSAoKnMpIHsKPiArLQkJ aWYgKChuLS0gPiAwKSAmJiAoKnMgPT0gJ1xcJykpIAo+ICsrCQlpZiAoKG4tLSA+IDApICYmICgq cyA9PSAnXFwnKSkKPiArIAkJCXMrKzsKPiArIAkJdG1wW2orK10gPSAqcysrOwo+ICsgCX0KPiAr QEAgLTIzMywxMCArMjMzLDEwIEBAIHZvaWQgdHJpbShjaGFyICpzdHIpCj4gKyAqIENvcHkgcGFy dCBvZiBhIHN0cmluZy4KPiArICogQ29weSAgY291bnQgY2hhcmFjdGVycyBmcm9tIHNyYywgc3Rh cnRpbmcgZnJvbSBzdGFydAo+ICsgKiBAcGFyYW0gc3JjIFN0cmluZyB0byBjb3B5IGZyb20KPiAr LSogQHBhcmFtIHN0YXJ0IEluaXRpYWwgb2Zmc2V0IAo+ICsrKiBAcGFyYW0gc3RhcnQgSW5pdGlh bCBvZmZzZXQKPiArICogQHBhcmFtIGNvdW50IE51bWJlciBvZiBjaGFycyB0byBjb3B5Cj4gKyAq IEByZXR1cm4gVGhlIG5ldyBzdHJpbmcKPiArLSogCj4gKysqCj4gKyAqIFxjb2RlCj4gKyAqIGNo YXIgKnBhcnQsICpzdHIgPSAiVGVzdCBvbmUsIHRlc3QgdHdvIjsKPiArICogcGFydCA9IHN1YnN0 cihzdHIsIDEsIDUpOwo+ICtAQCAtMjY1LDEyICsyNjUsMTIgQEAgY2hhciAqc3Vic3RyKGNoYXIg KnNyYywgY29uc3QgaW50IHN0YXJ0LCBjb25zdCBpbnQgY291bnQpCj4gKyAqICBhbmQgc3Rvcmlu ZyB0aGUgdG90YWwgb2YgcGllY2VzIGluIHRvdGFsCj4gKyAqIEBwYXJhbSBzcmMgU3RyaW5nIHRv IHBhcnNlCj4gKyAqIEBwYXJhbSB0b2tlbiBDaGFyYWN0ZXIgZGVsaW1pdGVyIHRvIHNlYXJjaC4K PiArLSogQHBhcmFtIHRvdGFsIEFuIGludGVnZXIgdmFyaWFibGUgcGFzc2VkIGFzIHJlZmVyZW5j ZSwgd2hpY2ggc3RvcmVzIHRoZSB0b3RhbCBvZiAKPiArKyogQHBhcmFtIHRvdGFsIEFuIGludGVn ZXIgdmFyaWFibGUgcGFzc2VkIGFzIHJlZmVyZW5jZSwgd2hpY2ggc3RvcmVzIHRoZSB0b3RhbCBv Zgo+ICsgKiBpdGVucyBvZiB0aGUgYXJyYXkKPiArICogQHJldHVybiBUaGUgYXJyYXksIHdoZXJl IGVhY2ggaXRlbSBpcyBvbmUgc2VwYXJldGVkIGJ5IHRva2VuCj4gKy0qIAo+ICsrKgo+ICsgKiBc Y29kZQo+ICstKiAgCj4gKysqCj4gKyAqICBjaGFyICoqcGllY2VzOwo+ICsgKiAgY2hhciAqbmFt ZSA9ICJUaGlzLGlzLGEsc3RyaW5nLG9mLHRlc3QiOwo+ICsgKiAgaW50IHRvdGFsLCBpOwo+ICtA QCAtMjgwLDE0ICsyODAsMTQgQEAgY2hhciAqc3Vic3RyKGNoYXIgKnNyYywgY29uc3QgaW50IHN0 YXJ0LCBjb25zdCBpbnQgY291bnQpCj4gKyAqIFxlbmRjb2RlCj4gKyAqKi8KPiArIGNoYXIgKipl eHBsb2RlKGNoYXIgKnNyYywgY29uc3QgY2hhciAqdG9rZW4sIGludCAqdG90YWwpCj4gKy17CQo+ ICsrewo+ICsgCWNoYXIgKipzdHI7Cj4gKyAJcmVnaXN0ZXIgaW50IGksIGosIGNvdW50LCBpdGVt LCBzdGFydDsKPiArIAlpbnQgbGVuOwo+ICsgCj4gKyAJaWYgKCFzcmMgfHwgIXRva2VuKSB7Cj4g KyAJCSp0b3RhbCA9IDA7Cj4gKy0JCQo+ICsrCj4gKyAJCXJldHVybiBOVUxMOwo+ICsgCX0KPiAr IAo+ICtAQCAtMzQ4LDcgKzM0OCw3IEBAIGNoYXIgKipleHBsb2RlKGNoYXIgKnNyYywgY29uc3Qg Y2hhciAqdG9rZW4sIGludCAqdG90YWwpCj4gKyAKPiArIC8qKgo+ICsgKiBSZXBsYWNlIGNoYXJh Y3RlcmVzIGluIGEgc3RyaW5nLCBidXQgbm90IG1vcmUgdGhhbiAnbicuCj4gKy0qICBSZXBsYWNl IGFsbCBvY2NvdXJlbmNlcyBvZiAqZGVsaW0gb24gKnNyYyB3aXRoIGNoYXJhY3RlcmVzIHBvaW50 ZWQgYnkgKndpdGgsIAo+ICsrKiAgUmVwbGFjZSBhbGwgb2Njb3VyZW5jZXMgb2YgKmRlbGltIG9u ICpzcmMgd2l0aCBjaGFyYWN0ZXJlcyBwb2ludGVkIGJ5ICp3aXRoLAo+ICsgKiAgc3RvcHBpbmcg YWZ0ZXIgJ24nIGNoYXIuCj4gKyAqICBAcGFyYW0gKnNyYyBTdHJpbmcgdG8gcGFyc2UKPiArICog IEBwYXJhbSAqZGVsaW0gQ2hhcmFjdGVyIHRvIHNlYXJjaCB0aGF0IHdpbGwgYmUgcmVwbGFjZWQK PiArQEAgLTM1Niw3ICszNTYsNyBAQCBjaGFyICoqZXhwbG9kZShjaGFyICpzcmMsIGNvbnN0IGNo YXIgKnRva2VuLCBpbnQgKnRvdGFsKQo+ICsgKiAgQHBhcmFtIG4gTWF4aW11bSBudW1iZXIgb2Yg Y2hhcnMgdG8gcGFyc2UKPiArICogIEByZXR1cm4gVGhlIG5ldyBzdHJpbmcKPiArICogIEBzZWUg c3RyX3JlcGxhY2UKPiArLSogIAo+ICsrKgo+ICsgKiAgXGNvZGUKPiArICogIGNoYXIgKmxpbnV4 ID0gIkxpbnV4IEMiOwo+ICsgKiAgbGludXggPSBzdHJfbnJlcGxhY2UobGludXgsICJDIiwgIkNv b2wiLCBzdHJsZW4obGludXgpKTsKPiArQEAgLTQxNCw3ICs0MTQsNyBAQCBjaGFyICpzdHJfbnJl cGxhY2UoY2hhciAqc3JjLCBjb25zdCBjaGFyICpkZWxpbSwgY29uc3QgY2hhciAqd2l0aCwgaW50 IG4pCj4gKyAvKioKPiArICogUmVwbGFjZSBjaGFyYWN0ZXJlcyBpbiBhIHN0cmluZy4KPiArICog IFJlcGxhY2UgYWxsIG9jY291cmVuY2VzIG9mICpkZWxpbSBvbiAqc3JjIHdpdGggY2hhcmFjdGVy ZXMgcG9pbnRlZCBieSAqd2l0aC4KPiArLSogIFRoZSBwcm9ibGVtIHdpdGggdGhlIGZvbG93aW5n IGNvZGUgaXMgdGhhdCB0aGUgZnVuY3Rpb24gb25seSBzZWFyY2hlcyBmb3IgdGhlIAo+ICsrKiAg VGhlIHByb2JsZW0gd2l0aCB0aGUgZm9sb3dpbmcgY29kZSBpcyB0aGF0IHRoZSBmdW5jdGlvbiBv bmx5IHNlYXJjaGVzIGZvciB0aGUKPiArICogIGZpcnN0IGNhcmFjdGVyIG9mICpkZWxpbSwgaW5n b3JpbmcgdGhlIHJlc3QuIE90aGVyIHByb2JsZW0gaXMgc3BlZWQgcmVsYWNpb25lZDoKPiArICog IG5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gZXZlciBjb21wYXJlIHRoZSBsZW5ndGggb2YgKndpdGgg dG8gZG8gdGhlIGNvcnJlY3QgYWN0aW9uLgo+ICsgKiAgQHBhcmFtIHNyYyBTdHJpbmcgdG8gcGFy c2UKPiArQEAgLTQyMiw3ICs0MjIsNyBAQCBjaGFyICpzdHJfbnJlcGxhY2UoY2hhciAqc3JjLCBj b25zdCBjaGFyICpkZWxpbSwgY29uc3QgY2hhciAqd2l0aCwgaW50IG4pCj4gKyAqICBAcGFyYW0g d2l0aCBTdHJpbmcgdG8gcmVwbGFjZSB3aXRoCj4gKyAqICBAcmV0dXJuIFRoZSBuZXcgc3RyaW5n Cj4gKyAqICBAc2VlIHN0cl9ucmVwbGFjZQo+ICstKiAgCj4gKysqCj4gKyAqICBcY29kZQo+ICsg KiAgY2hhciAqbGludXggPSAiTGludXggQyI7Cj4gKyAqICBsaW51eCA9IHN0cl9yZXBsYWNlKGxp bnV4LCAiQyIsICJDb29sIik7Cj4gK0BAIC00NTQsMTQgKzQ1NCwxNCBAQCBjaGFyICpyZXBsYWNl KGNoYXIgKnN0ciwgY29uc3QgY2hhciAqZGVsaW0sIGNvbnN0IGNoYXIgKndpdGgpCj4gKyBpbnQg c3RybnBvcyhjaGFyICpzLCBjaGFyICpjaCwgdW5zaWduZWQgaW50IGNvdW50KQo+ICsgewo+ICsg CXJlZ2lzdGVyIHVuc2lnbmVkIGludCBwb3MgPSAwLCBpOwo+ICstCQo+ICsrCj4gKyAJZm9yIChp ID0gMDsgaSA8PSBjb3VudCAmJiAqczsgaSsrKSB7Cj4gKyAJCWlmICgqcysrID09ICpjaCkKPiAr IAkJCXJldHVybiBwb3M7Cj4gKy0JCQo+ICsrCj4gKyAJCXBvcysrOwo+ICsgCX0KPiArLQkKPiAr Kwo+ICsgCXJldHVybiAtMTsKPiArIH0KPiArIAo+ICtAQCAtNDg1LDEzICs0ODUsMTMgQEAgaW50 IHN0cnBvcyhjaGFyICpzLCBjaGFyICpjaCkKPiArICogIEBwYXJhbSBjb3VudCBOdW1iZXIgb2Yg Y2hhcmFjdGVyZXMgdG8gZGVsZXRlCj4gKyAqICBAcmV0dXJuIFRoZSBuZXcgc3RyaW5nCj4gKyAq ICBAc2VlIHN0cm5kZWwoKQo+ICstKiAKPiArKyoKPiArICogIFxjb2RlCj4gKyAqICAqdHh0ID0g IlNvbWUgdGV4dCB0byB0ZXN0IGFueXRoaW5nIjsKPiArICogIHB1dHModHh0KTsKPiArICogIHR4 dCA9IHN0cmRlbCh0eHQsIDIsIDgpOwo+ICsgKiAgcHV0cyh0eHQpOwo+ICstKiBcZW5kY29kZSAg IAo+ICsrKiBcZW5kY29kZQo+ICsgKiovCj4gKyBjaGFyICpzdHJkZWwoY2hhciAqcywgaW50IHN0 YXJ0LCBpbnQgY291bnQpCj4gKyB7Cj4gK0BAIC01MDgsNyArNTA4LDcgQEAgY2hhciAqc3RyZGVs KGNoYXIgKnMsIGludCBzdGFydCwgaW50IGNvdW50KQo+ICsgCQlsaWJjZ2lfZXJyb3IoRV9NRU1P UlksICIlcywgbGluZSAlcyIsIF9fRklMRV9fLCBfX0xJTkVfXyk7Cj4gKyAKPiArIAlmb3IgKGkg PSAwOyBpIDwgbGVuOyBpKyspIHsKPiArLQkJaWYgKChpID49IHN0YXJ0KSAmJiAoaSA8IChzdGFy dCtjb3VudCkpKSAKPiArKwkJaWYgKChpID49IHN0YXJ0KSAmJiAoaSA8IChzdGFydCtjb3VudCkp KQo+ICsgCQkJcysrOwo+ICsgCQllbHNlCj4gKyAJCQl0bXBbY29udGFkb3IrK10gPSAqcysrOwo+ ICtAQCAtNTM2LDM3ICs1MzYsMzcgQEAgY2hhciAqcmVjdmxpbmUoRklMRSAqcykKPiArIAlzaXpl X3Qgc2l6ID0gMDsKPiArIAo+ICsgCWZvciAoOyAoY2ggPSBmZ2V0YyhzKSkgIT0gRU9GOyBpKysp IHsKPiArLQkJaWYgKGkgPT0gc2l6KSAKPiArKwkJaWYgKGkgPT0gc2l6KQo+ICsgCQkJYnVmID0g cmVhbGxvYyhidWYsIHNpeiArPSBCVUZTSVopOwo+ICstCQkJCj4gKysKPiArIAkJYnVmW2ldID0g Y2g7Cj4gKy0JCQo+ICsrCj4gKyAJCWlmIChidWZbaV0gPT0gJ1xuJykgewo+ICsgCQkJYnVmW2ld ID0gJ1wwJzsKPiArLQkJCQo+ICstCQkJaWYgKGkgPiAwICYmIGJ1ZltpLTFdID09ICdccicpIAo+ ICsrCj4gKysJCQlpZiAoaSA+IDAgJiYgYnVmW2ktMV0gPT0gJ1xyJykKPiArIAkJCQlidWZbaS0x XSA9ICdcMCc7Cj4gKy0JCQkJCj4gKysKPiArIAkJCXJldHVybiBidWY7Cj4gKyAJCX0KPiArIAl9 Cj4gKy0JCj4gKysKPiArIAlpZiAoaSA+IDApIHsKPiArIAkJaWYgKGkgPT0gc2l6KSBidWYgPSBy ZWFsbG9jKGJ1Ziwgc2l6ICsgMSk7Cj4gKyAJCQlidWZbaV0gPSAnXDAnOwo+ICstCQkJCj4gKysK PiArIAkJcmV0dXJuIGJ1ZjsKPiArIAl9Cj4gKy0JCj4gKysKPiArIAlyZXR1cm4gTlVMTDsKPiAr IH0KPiArIAo+ICsgLyoqCj4gKyAqIE1ha2VzIGEgc3RyaW5nLgo+ICsgKiBXb3JrcyBsaWtlIHBy aW50ZigpLCB3aXRoIHRoZSBkaWZmZXJlbmNlCj4gKy0qIHRoYXQgaXQgcmV0dXJucyBhIHN0cmlu ZyB0aGF0IGlzIHRoZSAKPiArKyogdGhhdCBpdCByZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgdGhl Cj4gKyAqIGNvbmNhdGVuYXRpb24gb2YgdGhlIHZhbHVlcyBwYXNzZWQgYXMgcGFyYW1ldGVyLgo+ ICstKiAKPiArKyoKPiArICogQHBhcmFtICpzIEluaWNpYWwgU3RyaW5nIGFuZCBvcHRpb25hbGx5 IGZvcm1hdGF0aW9uIHBhcmFtZXRlcnMgKCBqdXN0ICVzIGlzIGFsbG93ZWQgKQo+ICsgKiBAcmV0 dXJuIFRoZSBuZXcgU3RyaW5nCj4gKyAqIFxjb2RlCj4gK0BAIC01OTksNyArNTk5LDcgQEAgY2hh ciAqbWFrZV9zdHJpbmcoY2hhciAqcywgLi4uKQo+ICsgCQkJCQlicmVhazsKPiArIAkJCX0KPiAr IAkJfQo+ICstCQkKPiArKwo+ICsgCQlzdHIrKzsKPiArIAl9Cj4gKyAKPiArQEAgLTYyOCwxMyAr NjI4LDEzIEBAIGNoYXIgKnN0cmNhdF9leChjb25zdCBjaGFyICpzdHIxLCBjb25zdCBjaGFyICpz dHIyKQo+ICsgCWxlbiA9IHN0cmxlbihzdHIxKSArIHN0cmxlbihzdHIyKTsKPiArIAo+ICsgCW5l d19zdHIgPSAoY2hhciAqKW1hbGxvYygobGVuICsgMSkgKiBzaXplb2YoY2hhciopKTsKPiArLQlp ZiAoIW5ld19zdHIpIAo+ICsrCWlmICghbmV3X3N0cikKPiArIAkJbGliY2dpX2Vycm9yKEVfTUVN T1JZLCAiJXMsIGxpbmUgJXMiLCBfX0ZJTEVfXywgX19MSU5FX18pOwo+ICsgCj4gKyAJc3ByaW50 ZihuZXdfc3RyLCAiJXMlcyIsIHN0cjEsIHN0cjIpOwo+ICsgCj4gKyAJbmV3X3N0cltsZW5dID0g J1wwJzsKPiArLQkKPiArKwo+ICsgCXJldHVybiBuZXdfc3RyOwo+ICsgfQo+ICsgCj4gZGlmZiAt LWdpdCBhL3BhdGNoZXMvbGliY2dpLTEuMC8wMDAzLWRlc3RkaXItc3VwcG9ydC5wYXRjaCBiL3Bh dGNoZXMvbGliY2dpLTEuMC8wMDAzLWRlc3RkaXItc3VwcG9ydC5wYXRjaAo+IGRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAo+IGluZGV4IDU2YWJhMmIuLjAwMDAwMDAKPiAtLS0gYS9wYXRjaGVzL2xp YmNnaS0xLjAvMDAwMy1kZXN0ZGlyLXN1cHBvcnQucGF0Y2gKPiArKysgL2Rldi9udWxsCj4gQEAg LTEsNTcgKzAsMCBAQAo+IC1Gcm9tOiBSb2JlcnQgU2Nod2ViZWwgPHIuc2Nod2ViZWxAcGVuZ3V0 cm9uaXguZGU+Cj4gLURhdGU6IEZyaSwgMjYgT2N0IDIwMTIgMjE6NDY6MjEgKzAyMDAKPiAtU3Vi amVjdDogW1BBVENIXSBkZXN0ZGlyIHN1cHBvcnQKPiAtCj4gLURvbid0IGluc3RhbGwgaW50byBm aW5hbCBkaXJlY3RvcmllcyBkaXJlY3RseSwgdXNlIERFU1RESVIuIFRoaXMgcGF0Y2gKPiAtaGVs cHMgZGlzdHJpYnV0b3JzIHRvIHBhY2thZ2UgbGliY2dpIG9mZmxpbmUuCj4gLQo+IC1TaWduZWQt b2ZmLWJ5OiBSb2JlcnQgU2Nod2ViZWwgPHIuc2Nod2ViZWxAcGVuZ3V0cm9uaXguZGU+Cj4gLS0t LQo+IC0gTWFrZWZpbGUuaW4gfCAgIDIyICsrKysrKysrKysrLS0tLS0tLS0tLS0KPiAtIDEgZmls ZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKPiAtCj4gLWRpZmYg LS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCj4gLWluZGV4IGUzOGU3NzYuLmQzNjY3 OWUgMTAwNjQ0Cj4gLS0tLSBhL01ha2VmaWxlLmluCj4gLSsrKyBiL01ha2VmaWxlLmluCj4gLUBA IC00OCw3ICs0OCw3IEBAIGFsbDogc3JjL2xpYmNnaS5zbyBzcmMvbGliY2dpLmEKPiAtIAo+IC0g Cj4gLSBzaGFyZWQ6IHNyYy9saWJjZ2kuc28KPiAtLQljcCBzcmMvbGliY2dpLnNvICQoTElCRElS KQo+IC0rCWNwIHNyYy9saWJjZ2kuc28gJChERVNURElSKSQoTElCRElSKQo+IC0gCj4gLSBzcmMv bGliY2dpLmE6ICQoT0JKUykKPiAtIAkkKEFSKSByYyBzcmMvbGliY2dpLmEgJChPQkpTKQo+IC1A QCAtNTcsMTAgKzU3LDEwIEBAIHNyYy9saWJjZ2kuc286ICQoU0hPQkpTKQo+IC0gCSQoQ0MpICQo U0hBUkVET1BUKSAtbyBzcmMvbGliY2dpLnNvICQoU0hPQkpTKSAkKEVYVFJBX0xJQlMpCj4gLSAK PiAtIGluc3RhbGw6Cj4gLS0JY3Agc3JjL2xpYmNnaS5hICQoTElCRElSKQo+IC0tCWNwIHNyYy9s aWJjZ2kuc28gJChMSUJESVIpCj4gLS0JY3Agc3JjL2NnaS5oICQoSU5DRElSKQo+IC0tCWNwIHNy Yy9zZXNzaW9uLmggJChJTkNESVIpCj4gLSsJY3Agc3JjL2xpYmNnaS5hICQoREVTVERJUikkKExJ QkRJUikKPiAtKwljcCBzcmMvbGliY2dpLnNvICQoREVTVERJUikkKExJQkRJUikKPiAtKwljcCBz cmMvY2dpLmggJChERVNURElSKSQoSU5DRElSKQo+IC0rCWNwIHNyYy9zZXNzaW9uLmggJChERVNU RElSKSQoSU5DRElSKQo+IC0gCj4gLSAKPiAtIHNyYy9lcnJvci5vOiBzcmMvZXJyb3IuYyBzcmMv ZXJyb3IuaAo+IC1AQCAtODQsMTAgKzg0LDEwIEBAIHVuaW5zdGFsbDogY2xlYW4KPiAtIAlybSAt ZiAkKE1BTkRJUikvbGliY2dpKgo+IC0gCj4gLSBpbnN0YWxsX21hbjoKPiAtLQljcCBkb2MvbWFu L21hbjMvbGliY2dpX2Jhc2U2NC4zICQoTUFORElSKQo+IC0tCWNwIGRvYy9tYW4vbWFuMy9saWJj Z2lfY2dpLjMgJChNQU5ESVIpCj4gLS0JY3AgZG9jL21hbi9tYW4zL2xpYmNnaV9nZW5lcmFsLjMg JChNQU5ESVIpCj4gLS0JY3AgZG9jL21hbi9tYW4zL2xpYmNnaV9zdHJpbmcuMyAkKE1BTkRJUikK PiAtLQljcCBkb2MvbWFuL21hbjMvbGliY2dpX3Nlc3Npb24uMyAkKE1BTkRJUikKPiAtLQljcCBk b2MvbWFuL21hbjMvbGliY2dpX2Nvb2tpZS4zICQoTUFORElSKQo+IC0rCWNwIGRvYy9tYW4vbWFu My9saWJjZ2lfYmFzZTY0LjMgJChERVNURElSKSQoTUFORElSKQo+IC0rCWNwIGRvYy9tYW4vbWFu My9saWJjZ2lfY2dpLjMgJChERVNURElSKSQoTUFORElSKQo+IC0rCWNwIGRvYy9tYW4vbWFuMy9s aWJjZ2lfZ2VuZXJhbC4zICQoREVTVERJUikkKE1BTkRJUikKPiAtKwljcCBkb2MvbWFuL21hbjMv bGliY2dpX3N0cmluZy4zICQoREVTVERJUikkKE1BTkRJUikKPiAtKwljcCBkb2MvbWFuL21hbjMv bGliY2dpX3Nlc3Npb24uMyAkKERFU1RESVIpJChNQU5ESVIpCj4gLSsJY3AgZG9jL21hbi9tYW4z L2xpYmNnaV9jb29raWUuMyAkKERFU1RESVIpJChNQU5ESVIpCj4gLSAKPiBkaWZmIC0tZ2l0IGEv cGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDMtZnJlZS1tZW1vcnktYWxsb2NhdGVkLWJ5LXVuZXNjYXBl X3NwZWNpYWxfY2hhcnMtYWZ0ZS5wYXRjaCBiL3BhdGNoZXMvbGliY2dpLTEuMC8wMDAzLWZyZWUt bWVtb3J5LWFsbG9jYXRlZC1ieS11bmVzY2FwZV9zcGVjaWFsX2NoYXJzLWFmdGUucGF0Y2gKPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjE4NDYwMWQKPiAtLS0gL2Rldi9u dWxsCj4gKysrIGIvcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDMtZnJlZS1tZW1vcnktYWxsb2NhdGVk LWJ5LXVuZXNjYXBlX3NwZWNpYWxfY2hhcnMtYWZ0ZS5wYXRjaAo+IEBAIC0wLDAgKzEsNjQgQEAK PiArRnJvbTogQWxleGFuZGVyIERhaGwgPHBvc3RAbGVzcG9ja3kuZGU+Cj4gK0RhdGU6IFdlZCwg MjQgT2N0IDIwMTIgMTE6MzE6MTAgKzAyMDAKPiArU3ViamVjdDogW1BBVENIXSBmcmVlIG1lbW9y eSBhbGxvY2F0ZWQgYnkgdW5lc2NhcGVfc3BlY2lhbF9jaGFycygpIGFmdGVyIG5vdAo+ICsgbmVl ZGVkIGFueW1vcmUsIHNob3VsZCBmaXggIzMKPiArCj4gKy0tLQo+ICsgc3JjL2NnaS5jICAgIHwg ICAgNiArKysrLS0KPiArIHNyYy9jb29raWUuYyB8ICAgIDcgKysrKystLQo+ICsgMiBmaWxlcyBj aGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCj4gKwo+ICtkaWZmIC0tZ2l0 IGEvc3JjL2NnaS5jIGIvc3JjL2NnaS5jCj4gK2luZGV4IGU5ZDc2YWUuLjQ2MWViYTMgMTAwNjQ0 Cj4gKy0tLSBhL3NyYy9jZ2kuYwo+ICsrKysgYi9zcmMvY2dpLmMKPiArQEAgLTUxLDcgKzUxLDcg QEAgZXh0ZXJuIGZvcm12YXJzICpjb29raWVfZW5kOwo+ICsgZm9ybXZhcnMgKnByb2Nlc3NfZGF0 YShjaGFyICpxdWVyeSwgZm9ybXZhcnMgKipzdGFydCwgZm9ybXZhcnMgKipsYXN0LCBjb25zdCBj aGFyIGRlbGltLCBjb25zdCBjaGFyIHNlcCkKPiArIHsKPiArIAlyZWdpc3RlciBzaXplX3QgcG9z aXRpb24gPSAwLCB0b3RhbF9sZW4gPSAwLCBpID0gMDsKPiArLQljaGFyICphdXg7Cj4gKysJY2hh ciAqYXV4LCAqc3RyX3VuZXNjOwo+ICsgCWZvcm12YXJzICpkYXRhOwo+ICsgCj4gKyAJaWYgKHF1 ZXJ5ID09IE5VTEwpCj4gK0BAIC0xMTMsOCArMTEzLDEwIEBAIGZvcm12YXJzICpwcm9jZXNzX2Rh dGEoY2hhciAqcXVlcnksIGZvcm12YXJzICoqc3RhcnQsIGZvcm12YXJzICoqbGFzdCwgY29uc3Qg Y2hhCj4gKyAJCWlmIChkYXRhLT52YWx1ZSA9PSBOVUxMKQo+ICsgCQkJbGliY2dpX2Vycm9yKEVf TUVNT1JZLCAiJXMsIGxpbmUgJXMiLCBfX0ZJTEVfXywgX19MSU5FX18pOwo+ICsgCj4gKy0JCXN0 cm5jcHkoZGF0YS0+dmFsdWUsIGNnaV91bmVzY2FwZV9zcGVjaWFsX2NoYXJzKHF1ZXJ5KSwgcG9z aXRpb24pOwo+ICsrCQlzdHJfdW5lc2MgPSBjZ2lfdW5lc2NhcGVfc3BlY2lhbF9jaGFycyhxdWVy eSk7Cj4gKysJCXN0cm5jcHkoZGF0YS0+dmFsdWUsIHN0cl91bmVzYywgcG9zaXRpb24pOwo+ICsg CQlkYXRhLT52YWx1ZVtwb3NpdGlvbl0gPSAnXDAnOwo+ICsrCQlmcmVlKHN0cl91bmVzYyk7Cj4g KyAKPiArIAkJc2xpc3RfYWRkKGRhdGEsIHN0YXJ0LCBsYXN0KTsKPiArIAo+ICtkaWZmIC0tZ2l0 IGEvc3JjL2Nvb2tpZS5jIGIvc3JjL2Nvb2tpZS5jCj4gK2luZGV4IGU5ZGVlOWUuLjZlODRjODEg MTAwNjQ0Cj4gKy0tLSBhL3NyYy9jb29raWUuYwo+ICsrKysgYi9zcmMvY29va2llLmMKPiArQEAg LTgzLDEyICs4MywxMyBAQCBmb3JtdmFycyAqY2dpX2dldF9jb29raWVzKCkKPiArIHsKPiArIAly ZWdpc3RlciBmb3JtdmFycyAqZGF0YTsKPiArIAlyZWdpc3RlciBzaXplX3QgcG9zaXRpb247Cj4g Ky0JY2hhciAqY29va2llcywgKmF1eDsKPiArKwljaGFyICpjb29raWVzLCAqYXV4LCAqc3RyX3Vu ZXNjOwo+ICsgCj4gKyAJaWYgKChjb29raWVzID0gZ2V0ZW52KCJIVFRQX0NPT0tJRSIpKSA9PSBO VUxMKQo+ICsgCQlyZXR1cm4gTlVMTDsKPiArIAo+ICstCWNvb2tpZXMgPSBjZ2lfdW5lc2NhcGVf c3BlY2lhbF9jaGFycyhjb29raWVzKTsKPiArKwlzdHJfdW5lc2MgPSBjZ2lfdW5lc2NhcGVfc3Bl Y2lhbF9jaGFycyhjb29raWVzKTsKPiArKwljb29raWVzID0gc3RyX3VuZXNjOwo+ICsgCWF1eCA9 IGNvb2tpZXM7Cj4gKyAKPiArIAl3aGlsZSAoY29va2llcykgewo+ICtAQCAtMTM1LDYgKzEzNiw4 IEBAIGZvcm12YXJzICpjZ2lfZ2V0X2Nvb2tpZXMoKQo+ICsgCQljb29raWVzID0gYXV4Owo+ICsg CX0KPiArIAo+ICsrCWZyZWUoc3RyX3VuZXNjKTsKPiArKwo+ICsgCXJldHVybiBjb29raWVzX3N0 YXJ0Owo+ICsgfQo+ICsgCj4gZGlmZiAtLWdpdCBhL3BhdGNoZXMvbGliY2dpLTEuMC8wMDA0LWNs ZWFudXAtYnVpbGQtbGluZS5wYXRjaCBiL3BhdGNoZXMvbGliY2dpLTEuMC8wMDA0LWNsZWFudXAt YnVpbGQtbGluZS5wYXRjaAo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IGZjYTI5 YzMuLjAwMDAwMDAKPiAtLS0gYS9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwNC1jbGVhbnVwLWJ1aWxk LWxpbmUucGF0Y2gKPiArKysgL2Rldi9udWxsCj4gQEAgLTEsMjUgKzAsMCBAQAo+IC1Gcm9tOiBS b2JlcnQgU2Nod2ViZWwgPHIuc2Nod2ViZWxAcGVuZ3V0cm9uaXguZGU+Cj4gLURhdGU6IEZyaSwg MjYgT2N0IDIwMTIgMjE6NDY6MjEgKzAyMDAKPiAtU3ViamVjdDogW1BBVENIXSBjbGVhbnVwIGJ1 aWxkIGxpbmUKPiAtCj4gLVB1dCBydWxlcyBvbiBzZXBhcmF0ZSBsaW5lLgo+IC0KPiAtU2lnbmVk LW9mZi1ieTogUm9iZXJ0IFNjaHdlYmVsIDxyLnNjaHdlYmVsQHBlbmd1dHJvbml4LmRlPgo+IC0t LS0KPiAtIE1ha2VmaWxlLmluIHwgICAgMyArKy0KPiAtIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAtCj4gLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBi L01ha2VmaWxlLmluCj4gLWluZGV4IGQzNjY3OWUuLjIyOTgzZjEgMTAwNjQ0Cj4gLS0tLSBhL01h a2VmaWxlLmluCj4gLSsrKyBiL01ha2VmaWxlLmluCj4gLUBAIC0yMCw3ICsyMCw4IEBAIE9CSlMg PSBzcmMvZXJyb3IubyBzcmMvY2dpLm8gc3JjL3Nlc3Npb24ubyBzcmMvYmFzZTY0Lm8gc3JjL21k NS5vIFwKPiAtIAo+IC0gU0hPQkpTID0gJChPQkpTOi5vPS5zaC5vKQo+IC0gCj4gLS0uYy5vOiAk KENDKSAkKEZMQUdTKSAtYyAkPAo+IC0rJS5vOiAlLmMKPiAtKwkkKENDKSAkKEZMQUdTKSAtYyAk Ki5jIC1vICRACj4gLSAKPiAtICUuc2gubzogJS5jCj4gLSAJJChDQykgJChGTEFHUykgLWZQSUMg LWMgJCouYyAtbyAkQAo+IGRpZmYgLS1naXQgYS9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwNC1mcmVl LW1lbW9yeS1hbGxvY2F0ZWQtZm9yLXJlYWRpbmctYW5kLXBhcnNpbmctUE9TVC1kLnBhdGNoIGIv cGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDQtZnJlZS1tZW1vcnktYWxsb2NhdGVkLWZvci1yZWFkaW5n LWFuZC1wYXJzaW5nLVBPU1QtZC5wYXRjaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMC4uYmY2ZDFkYQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9wYXRjaGVzL2xpYmNnaS0x LjAvMDAwNC1mcmVlLW1lbW9yeS1hbGxvY2F0ZWQtZm9yLXJlYWRpbmctYW5kLXBhcnNpbmctUE9T VC1kLnBhdGNoCj4gQEAgLTAsMCArMSwzMiBAQAo+ICtGcm9tOiBBbGV4YW5kZXIgRGFobCA8cG9z dEBsZXNwb2NreS5kZT4KPiArRGF0ZTogV2VkLCAyNCBPY3QgMjAxMiAxMjo0ODozNiArMDIwMAo+ ICtTdWJqZWN0OiBbUEFUQ0hdIGZyZWUgbWVtb3J5IGFsbG9jYXRlZCBmb3IgcmVhZGluZyBhbmQg cGFyc2luZyBQT1NUIGRhdGEKPiArIGFmdGVyIGNvcHlpbmcgdG8gc2xpc3QsIHNob3VsZCBmaXgg IzIKPiArCj4gKy0tLQo+ICsgc3JjL2NnaS5jIHwgICAgNSArKysrLQo+ICsgMSBmaWxlIGNoYW5n ZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ICsKPiArZGlmZiAtLWdpdCBhL3Ny Yy9jZ2kuYyBiL3NyYy9jZ2kuYwo+ICtpbmRleCA0NjFlYmEzLi45OTU2M2FkIDEwMDY0NAo+ICst LS0gYS9zcmMvY2dpLmMKPiArKysrIGIvc3JjL2NnaS5jCj4gK0BAIC0xNjEsNiArMTYxLDcgQEAg Zm9ybXZhcnMgKmNnaV9wcm9jZXNzX2Zvcm0oKQo+ICsgCQljaGFyICpwb3N0X2RhdGE7Cj4gKyAJ CWNoYXIgKnRtcF9kYXRhOwo+ICsgCQlpbnQgY29udGVudF9sZW5ndGg7Cj4gKysJCWZvcm12YXJz ICpyZXQ7Cj4gKyAKPiArIAkJdG1wX2RhdGEgPSBnZXRlbnYoIkNPTlRFTlRfTEVOR1RIIik7Cj4g KyAJCWlmICh0bXBfZGF0YSA9PSBOVUxMKQo+ICtAQCAtMTc1LDcgKzE3Niw5IEBAIGZvcm12YXJz ICpjZ2lfcHJvY2Vzc19mb3JtKCkKPiArIAkJZnJlYWQocG9zdF9kYXRhLCBjb250ZW50X2xlbmd0 aCwgMSwgc3RkaW4pOwo+ICsgCQlwb3N0X2RhdGFbY29udGVudF9sZW5ndGhdID0gJ1wwJzsKPiAr IAo+ICstCQlyZXR1cm4gcHJvY2Vzc19kYXRhKHBvc3RfZGF0YSwgJmZvcm12YXJzX3N0YXJ0LCAm Zm9ybXZhcnNfbGFzdCwgJz0nLCAnJicpOwo+ICsrCQlyZXQgPSBwcm9jZXNzX2RhdGEocG9zdF9k YXRhLCAmZm9ybXZhcnNfc3RhcnQsICZmb3JtdmFyc19sYXN0LCAnPScsICcmJyk7Cj4gKysJCWZy ZWUocG9zdF9kYXRhKTsKPiArKwkJcmV0dXJuIHJldDsKPiArIAl9Cj4gKyAKPiArIAlyZXR1cm4g TlVMTDsKPiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDUtRklMRS1yZXF1aXJl cy1pbmNsdWRpbmctc3RkaW8ucGF0Y2ggYi9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwNS1GSUxFLXJl cXVpcmVzLWluY2x1ZGluZy1zdGRpby5wYXRjaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5k ZXggMDAwMDAwMC4uNDU4OGE4Zgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9wYXRjaGVzL2xpYmNn aS0xLjAvMDAwNS1GSUxFLXJlcXVpcmVzLWluY2x1ZGluZy1zdGRpby5wYXRjaAo+IEBAIC0wLDAg KzEsMjEgQEAKPiArRnJvbTogQWxleGFuZGVyIERhaGwgPHBvc3RAbGVzcG9ja3kuZGU+Cj4gK0Rh dGU6IFR1ZSwgNiBOb3YgMjAxMiAxNDoyMjo1OCArMDEwMAo+ICtTdWJqZWN0OiBbUEFUQ0hdIEZJ TEUgcmVxdWlyZXMgaW5jbHVkaW5nIHN0ZGlvCj4gKwo+ICstLS0KPiArIHNyYy9jZ2kuaCB8ICAg IDIgKysKPiArIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKPiArCj4gK2RpZmYgLS1n aXQgYS9zcmMvY2dpLmggYi9zcmMvY2dpLmgKPiAraW5kZXggNzMxNzM1ZC4uN2NkNWExNyAxMDA2 NDQKPiArLS0tIGEvc3JjL2NnaS5oCj4gKysrKyBiL3NyYy9jZ2kuaAo+ICtAQCAtMjEsNiArMjEs OCBAQAo+ICsgI2lmbmRlZiBfQ0dJX0gKPiArICNkZWZpbmUgX0NHSV9ICTEKPiArIAo+ICsrI2lu Y2x1ZGUgPHN0ZGlvLmg+Cj4gKysKPiArICNpZmRlZiBfX2NwbHVzcGx1cwo+ICsgZXh0ZXJuICJD IiB7Cj4gKyAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDUtY2xl YW51cC1jbGVhbi10YXJnZXQucGF0Y2ggYi9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwNS1jbGVhbnVw LWNsZWFuLXRhcmdldC5wYXRjaAo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDE5 NGRjNmQuLjAwMDAwMDAKPiAtLS0gYS9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwNS1jbGVhbnVwLWNs ZWFuLXRhcmdldC5wYXRjaAo+ICsrKyAvZGV2L251bGwKPiBAQCAtMSwyNiArMCwwIEBACj4gLUZy b206IFJvYmVydCBTY2h3ZWJlbCA8ci5zY2h3ZWJlbEBwZW5ndXRyb25peC5kZT4KPiAtRGF0ZTog RnJpLCAyNiBPY3QgMjAxMiAyMTo0NjoyMSArMDIwMAo+IC1TdWJqZWN0OiBbUEFUQ0hdIGNsZWFu dXAgY2xlYW4gdGFyZ2V0Cj4gLQo+IC1SZW1vdmUgYWxsIGdlbmVyYXRlZCBmaWxlcy4gV2hpbGUg YmVpbmcgdGhlcmUsIGZpeCBhIHR5cG8uCj4gLQo+IC1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgU2No d2ViZWwgPHIuc2Nod2ViZWxAcGVuZ3V0cm9uaXguZGU+Cj4gLS0tLQo+IC0gTWFrZWZpbGUuaW4g fCAgICAzICsrLQo+IC0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQo+IC0KPiAtZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KPiAtaW5k ZXggMjI5ODNmMS4uNjhhMGZhNiAxMDA2NDQKPiAtLS0tIGEvTWFrZWZpbGUuaW4KPiAtKysrIGIv TWFrZWZpbGUuaW4KPiAtQEAgLTc1LDggKzc1LDkgQEAgc3JjL2dlbmVyYWwubzogc3JjL2dlbmVy YWwuYwo+IC0gc3JjL2xpc3Qubzogc3JjL2xpc3QuYwo+IC0gCj4gLSBjbGVhbjoKPiAtLQlmaW5k IHNyYy8gLW5hbWUgKi4qbyAtZXhlYyBybSAtZiB7fSBcOwo+IC0rCWZpbmQgc3JjLyAtbmFtZSAq Lm8gLWV4ZWMgcm0gLWYge30gXDsKPiAtIAlmaW5kIHNyYy8gLW5hbWUgKi5hIC1leGVjIHJtIC1m IHt9IFw7Cj4gLSsJZmluZCBzcmMvIC1uYW1lICouc28gLWV4ZWMgcm0gLWYge30gXDsKPiAtIAo+ IC0gdW5pbnN0YWxsOiBjbGVhbgo+IC0gCXJtIC1mICQoTElCRElSKS9saWJjZ2kuKgo+IGRpZmYg LS1naXQgYS9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwNi1jb3B5LXBhc3QtZXJyb3ItaW4taGV4dGFi bGUucGF0Y2ggYi9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwNi1jb3B5LXBhc3QtZXJyb3ItaW4taGV4 dGFibGUucGF0Y2gKPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCA2YzMwYmZiLi4w MDAwMDAwCj4gLS0tIGEvcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDYtY29weS1wYXN0LWVycm9yLWlu LWhleHRhYmxlLnBhdGNoCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDI0ICswLDAgQEAKPiAtRnJv bTogUm9iZXJ0IFNjaHdlYmVsIDxyLnNjaHdlYmVsQHBlbmd1dHJvbml4LmRlPgo+IC1EYXRlOiBG cmksIDI2IE9jdCAyMDEyIDIxOjQ2OjIxICswMjAwCj4gLVN1YmplY3Q6IFtQQVRDSF0gY29weS1w YXN0IGVycm9yIGluIGhleHRhYmxlCj4gLQo+IC1Mb29rcyBsaWtlIGEgY29weS1wYXN0ZSBlcnJv ci4KPiAtCj4gLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBTY2h3ZWJlbCA8ci5zY2h3ZWJlbEBwZW5n dXRyb25peC5kZT4KPiAtLS0tCj4gLSBzcmMvY2dpLmMgfCAgICAyICstCj4gLSAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKPiAtCj4gLWRpZmYgLS1naXQgYS9z cmMvY2dpLmMgYi9zcmMvY2dpLmMKPiAtaW5kZXggZmIzNzQ0NS4uZWNhOWFjMiAxMDA2NDQKPiAt LS0tIGEvc3JjL2NnaS5jCj4gLSsrKyBiL3NyYy9jZ2kuYwo+IC1AQCAtMzM2LDcgKzMzNiw3IEBA IHZvaWQgaW5pdF9oZXhfdGFibGUoKQo+IC0gCWhleHRhYmxlWydiJ10gPSAxMTsKPiAtIAloZXh0 YWJsZVsnYyddID0gMTI7Cj4gLSAJaGV4dGFibGVbJ2QnXSA9IDEzOwo+IC0tCWhleHRhYmxlWydl J10gPSAxMzsKPiAtKwloZXh0YWJsZVsnZSddID0gMTQ7Cj4gLSAJaGV4dGFibGVbJ2YnXSA9IDE1 Owo+IC0gCWhleHRhYmxlWydBJ10gPSAxMDsKPiAtIAloZXh0YWJsZVsnQiddID0gMTE7Cj4gZGlm ZiAtLWdpdCBhL3BhdGNoZXMvbGliY2dpLTEuMC8wMDA3LXdyb25nLXZhcmlhYmxlLnBhdGNoIGIv cGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDctd3JvbmctdmFyaWFibGUucGF0Y2gKPiBkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKPiBpbmRleCBjNmY0NmU2Li4wMDAwMDAwCj4gLS0tIGEvcGF0Y2hlcy9s aWJjZ2ktMS4wLzAwMDctd3JvbmctdmFyaWFibGUucGF0Y2gKPiArKysgL2Rldi9udWxsCj4gQEAg LTEsMjQgKzAsMCBAQAo+IC1Gcm9tOiBSb2JlcnQgU2Nod2ViZWwgPHIuc2Nod2ViZWxAcGVuZ3V0 cm9uaXguZGU+Cj4gLURhdGU6IEZyaSwgMjYgT2N0IDIwMTIgMjE6NDY6MjEgKzAyMDAKPiAtU3Vi amVjdDogW1BBVENIXSB3cm9uZyB2YXJpYWJsZQo+IC0KPiAtV2UgdXNlIGEgd3JvbmcgdmFyaWFi bGUgaGVyZS4KPiAtCj4gLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBTY2h3ZWJlbCA8ci5zY2h3ZWJl bEBwZW5ndXRyb25peC5kZT4KPiAtLS0tCj4gLSBzcmMvc3RyaW5nLmMgfCAgICAyICstCj4gLSAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKPiAtCj4gLWRpZmYg LS1naXQgYS9zcmMvc3RyaW5nLmMgYi9zcmMvc3RyaW5nLmMKPiAtaW5kZXggMmNmY2JlMi4uM2Rj NDM3ZiAxMDA2NDQKPiAtLS0tIGEvc3JjL3N0cmluZy5jCj4gLSsrKyBiL3NyYy9zdHJpbmcuYwo+ IC1AQCAtNTg0LDcgKzU4NCw3IEBAIGNoYXIgKm1ha2Vfc3RyaW5nKGNoYXIgKnMsIC4uLikKPiAt IAo+IC0gCXZhX3N0YXJ0KHB0ciwgcyk7Cj4gLSAKPiAtLQl2YV9jb3B5KGJrcCwgc3RyKTsKPiAt Kwl2YV9jb3B5KGJrcCwgcHRyKTsKPiAtIAlsZW4gPSBzdHJsZW4ocyk7Cj4gLSAKPiAtIAl3aGls ZSAoKnN0cikgewo+IGRpZmYgLS1naXQgYS9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwOC11c2UtaW5z dGFsbC1pbnN0ZWFkLW9mLWNwLnBhdGNoIGIvcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDgtdXNlLWlu c3RhbGwtaW5zdGVhZC1vZi1jcC5wYXRjaAo+IGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IGQxMTA5MGIuLjAwMDAwMDAKPiAtLS0gYS9wYXRjaGVzL2xpYmNnaS0xLjAvMDAwOC11c2Ut aW5zdGFsbC1pbnN0ZWFkLW9mLWNwLnBhdGNoCj4gKysrIC9kZXYvbnVsbAo+IEBAIC0xLDUxICsw LDAgQEAKPiAtRnJvbTogUm9iZXJ0IFNjaHdlYmVsIDxyLnNjaHdlYmVsQHBlbmd1dHJvbml4LmRl Pgo+IC1EYXRlOiBGcmksIDI2IE9jdCAyMDEyIDIxOjQ2OjIxICswMjAwCj4gLVN1YmplY3Q6IFtQ QVRDSF0gdXNlIGluc3RhbGwgaW5zdGVhZCBvZiBjcAo+IC0KPiAtVXNlIGluc3RhbGwsIG5vdCBj cC4gSXQgaXMgYWJsZSB0byBjcmVhdGUgZGlyZWN0b3JpZXMgYW5kIGFwcGx5IHByb3Blcgo+IC1w ZXJtaXNzaW9ucyB0byB0aGVtLgo+IC0KPiAtU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFNjaHdlYmVs IDxyLnNjaHdlYmVsQHBlbmd1dHJvbml4LmRlPgo+IC0tLS0KPiAtIE1ha2VmaWxlLmluIHwgICAx NyArKysrKysrKy0tLS0tLS0tLQo+IC0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwg OSBkZWxldGlvbnMoLSkKPiAtCj4gLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxl LmluCj4gLWluZGV4IDY4YTBmYTYuLjQ0OTFiNjggMTAwNjQ0Cj4gLS0tLSBhL01ha2VmaWxlLmlu Cj4gLSsrKyBiL01ha2VmaWxlLmluCj4gLUBAIC0xLDYgKzEsNiBAQAo+IC0tSU5TVEFMTCA9IEBJ TlNUQUxMQAo+IC0tSU5TVEFMTF9QUk9HUkFNID0gQElOU1RBTExfUFJPR1JBTUAKPiAtLUlOU1RB TExfREFUQSA9IEBJTlNUQUxMX0RBVEFACj4gLStJTlNUQUxMID0gQElOU1RBTExAIC1ECj4gLStJ TlNUQUxMX1BST0dSQU0gPSBASU5TVEFMTF9QUk9HUkFNQCAtRAo+IC0rSU5TVEFMTF9EQVRBID0g QElOU1RBTExfREFUQUAgLUQKPiAtIAo+IC0gcHJlZml4ID0gQHByZWZpeEAKPiAtIGV4ZWNfcHJl Zml4ID0gQGV4ZWNfcHJlZml4QAo+IC1AQCAtNDksNyArNDksNyBAQCBhbGw6IHNyYy9saWJjZ2ku c28gc3JjL2xpYmNnaS5hCj4gLSAKPiAtIAo+IC0gc2hhcmVkOiBzcmMvbGliY2dpLnNvCj4gLS0J Y3Agc3JjL2xpYmNnaS5zbyAkKERFU1RESVIpJChMSUJESVIpCj4gLSsJJChJTlNUQUxMKSAtbSAw NjQ0IHNyYy9saWJjZ2kuc28gJChERVNURElSKSQoTElCRElSKQo+IC0gCj4gLSBzcmMvbGliY2dp LmE6ICQoT0JKUykKPiAtIAkkKEFSKSByYyBzcmMvbGliY2dpLmEgJChPQkpTKQo+IC1AQCAtNTgs MTEgKzU4LDEwIEBAIHNyYy9saWJjZ2kuc286ICQoU0hPQkpTKQo+IC0gCSQoQ0MpICQoU0hBUkVE T1BUKSAtbyBzcmMvbGliY2dpLnNvICQoU0hPQkpTKSAkKEVYVFJBX0xJQlMpCj4gLSAKPiAtIGlu c3RhbGw6Cj4gLS0JY3Agc3JjL2xpYmNnaS5hICQoREVTVERJUikkKExJQkRJUikKPiAtLQljcCBz cmMvbGliY2dpLnNvICQoREVTVERJUikkKExJQkRJUikKPiAtLQljcCBzcmMvY2dpLmggJChERVNU RElSKSQoSU5DRElSKQo+IC0tCWNwIHNyYy9zZXNzaW9uLmggJChERVNURElSKSQoSU5DRElSKQo+ IC0tCj4gLSsJJChJTlNUQUxMKSAtbSAwNjQ0IHNyYy9saWJjZ2kuYSAkKERFU1RESVIpLyQoTElC RElSKS9saWJjZ2kuYQo+IC0rCSQoSU5TVEFMTCkgLW0gMDY0NCBzcmMvbGliY2dpLnNvICQoREVT VERJUikvJChMSUJESVIpL2xpYmNnaS5zbwo+IC0rCSQoSU5TVEFMTCkgLW0gMDY0NCBzcmMvY2dp LmggJChERVNURElSKS8kKElOQ0RJUikvY2dpLmgKPiAtKwkkKElOU1RBTEwpIC1tIDA2NDQgc3Jj L3Nlc3Npb24uaCAkKERFU1RESVIpLyQoSU5DRElSKS9zZXNzaW9uLmgKPiAtIAo+IC0gc3JjL2Vy cm9yLm86IHNyYy9lcnJvci5jIHNyYy9lcnJvci5oCj4gLSBzcmMvY2dpLm86IHNyYy9jZ2kuYyBz cmMvY2dpLmgKPiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDktdXNlLXN0YW5k YXJkLWRpcmVjdG9yeS1uYW1lcy5wYXRjaCBiL3BhdGNoZXMvbGliY2dpLTEuMC8wMDA5LXVzZS1z dGFuZGFyZC1kaXJlY3RvcnktbmFtZXMucGF0Y2gKPiBkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCBjODA0N2FjLi4wMDAwMDAwCj4gLS0tIGEvcGF0Y2hlcy9saWJjZ2ktMS4wLzAwMDkt dXNlLXN0YW5kYXJkLWRpcmVjdG9yeS1uYW1lcy5wYXRjaAo+ICsrKyAvZGV2L251bGwKPiBAQCAt MSw3OSArMCwwIEBACj4gLUZyb206IFJvYmVydCBTY2h3ZWJlbCA8ci5zY2h3ZWJlbEBwZW5ndXRy b25peC5kZT4KPiAtRGF0ZTogRnJpLCAyNiBPY3QgMjAxMiAyMTo0NjoyMSArMDIwMAo+IC1TdWJq ZWN0OiBbUEFUQ0hdIHVzZSBzdGFuZGFyZCBkaXJlY3RvcnkgbmFtZXMKPiAtCj4gLUluIHVzdWFs IG1ha2VmaWxlcywgZGlyZWN0b3J5IG5hbWVzIGFyZSB3cml0dGVuIGluIGxvd2VyIGNhc2UuCj4g LQo+IC1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgU2Nod2ViZWwgPHIuc2Nod2ViZWxAcGVuZ3V0cm9u aXguZGU+Cj4gLS0tLQo+IC0gTWFrZWZpbGUuaW4gfCAgIDM2ICsrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLQo+IC0gMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDE4 IGRlbGV0aW9ucygtKQo+IC0KPiAtZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUu aW4KPiAtaW5kZXggNDQ5MWI2OC4uYmQwMDQxMyAxMDA2NDQKPiAtLS0tIGEvTWFrZWZpbGUuaW4K PiAtKysrIGIvTWFrZWZpbGUuaW4KPiAtQEAgLTYsOSArNiw5IEBAIHByZWZpeCA9IEBwcmVmaXhA Cj4gLSBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKPiAtIAo+IC0gU0hBUkVET1BUID0gLXNo YXJlZCAtc2hhcmVkIC1mUElDIC1XbCwtc29uYW1lLGxpYmNnaS5zby4wCj4gLS1MSUJESVIgPSAk KHByZWZpeCkvbGliCj4gLS1JTkNESVIgPSAkKHByZWZpeCkvaW5jbHVkZS9saWJjZ2kKPiAtLU1B TkRJUgk9ICQocHJlZml4KS9tYW4vbWFuMwo+IC0rbGliZGlyID0gJChwcmVmaXgpL2xpYgo+IC0r aW5jZGlyID0gJChwcmVmaXgpL2luY2x1ZGUvbGliY2dpCj4gLSttYW5kaXIJPSAkKHByZWZpeCkv bWFuL21hbjMKPiAtIFNIRUxMID0gL2Jpbi9zaAo+IC0gRVhUUkFfTElCUyA9IAo+IC0gCj4gLUBA IC00OSw3ICs0OSw3IEBAIGFsbDogc3JjL2xpYmNnaS5zbyBzcmMvbGliY2dpLmEKPiAtIAo+IC0g Cj4gLSBzaGFyZWQ6IHNyYy9saWJjZ2kuc28KPiAtLQkkKElOU1RBTEwpIC1tIDA2NDQgc3JjL2xp YmNnaS5zbyAkKERFU1RESVIpJChMSUJESVIpCj4gLSsJJChJTlNUQUxMKSAtbSAwNjQ0IHNyYy9s aWJjZ2kuc28gJChERVNURElSKSQobGliZGlyKQo+IC0gCj4gLSBzcmMvbGliY2dpLmE6ICQoT0JK UykKPiAtIAkkKEFSKSByYyBzcmMvbGliY2dpLmEgJChPQkpTKQo+IC1AQCAtNTgsMTAgKzU4LDEw IEBAIHNyYy9saWJjZ2kuc286ICQoU0hPQkpTKQo+IC0gCSQoQ0MpICQoU0hBUkVET1BUKSAtbyBz cmMvbGliY2dpLnNvICQoU0hPQkpTKSAkKEVYVFJBX0xJQlMpCj4gLSAKPiAtIGluc3RhbGw6Cj4g LS0JJChJTlNUQUxMKSAtbSAwNjQ0IHNyYy9saWJjZ2kuYSAkKERFU1RESVIpLyQoTElCRElSKS9s aWJjZ2kuYQo+IC0tCSQoSU5TVEFMTCkgLW0gMDY0NCBzcmMvbGliY2dpLnNvICQoREVTVERJUikv JChMSUJESVIpL2xpYmNnaS5zbwo+IC0tCSQoSU5TVEFMTCkgLW0gMDY0NCBzcmMvY2dpLmggJChE RVNURElSKS8kKElOQ0RJUikvY2dpLmgKPiAtLQkkKElOU1RBTEwpIC1tIDA2NDQgc3JjL3Nlc3Np b24uaCAkKERFU1RESVIpLyQoSU5DRElSKS9zZXNzaW9uLmgKPiAtKwkkKElOU1RBTEwpIC1tIDA2 NDQgc3JjL2xpYmNnaS5hICQoREVTVERJUikvJChsaWJkaXIpL2xpYmNnaS5hCj4gLSsJJChJTlNU QUxMKSAtbSAwNjQ0IHNyYy9saWJjZ2kuc28gJChERVNURElSKS8kKGxpYmRpcikvbGliY2dpLnNv Cj4gLSsJJChJTlNUQUxMKSAtbSAwNjQ0IHNyYy9jZ2kuaCAkKERFU1RESVIpLyQoaW5jZGlyKS9j Z2kuaAo+IC0rCSQoSU5TVEFMTCkgLW0gMDY0NCBzcmMvc2Vzc2lvbi5oICQoREVTVERJUikvJChp bmNkaXIpL3Nlc3Npb24uaAo+IC0gCj4gLSBzcmMvZXJyb3Iubzogc3JjL2Vycm9yLmMgc3JjL2Vy cm9yLmgKPiAtIHNyYy9jZ2kubzogc3JjL2NnaS5jIHNyYy9jZ2kuaAo+IC1AQCAtNzksMTYgKzc5 LDE2IEBAIGNsZWFuOgo+IC0gCWZpbmQgc3JjLyAtbmFtZSAqLnNvIC1leGVjIHJtIC1mIHt9IFw7 Cj4gLSAKPiAtIHVuaW5zdGFsbDogY2xlYW4KPiAtLQlybSAtZiAkKExJQkRJUikvbGliY2dpLioK PiAtLQlybSAtZiAkKElOQ0RJUikvY2dpLmgKPiAtLQlybSAtZiAkKElOQ0RJUikvc2Vzc2lvbi5o Cj4gLS0Jcm0gLWYgJChNQU5ESVIpL2xpYmNnaSoKPiAtKwlybSAtZiAkKGxpYmRpcikvbGliY2dp LioKPiAtKwlybSAtZiAkKGluY2RpcikvY2dpLmgKPiAtKwlybSAtZiAkKGluY2Rpcikvc2Vzc2lv bi5oCj4gLSsJcm0gLWYgJChtYW5kaXIpL2xpYmNnaSoKPiAtIAo+IC0gaW5zdGFsbF9tYW46Cj4g LS0JY3AgZG9jL21hbi9tYW4zL2xpYmNnaV9iYXNlNjQuMyAkKERFU1RESVIpJChNQU5ESVIpCj4g LS0JY3AgZG9jL21hbi9tYW4zL2xpYmNnaV9jZ2kuMyAkKERFU1RESVIpJChNQU5ESVIpCj4gLS0J Y3AgZG9jL21hbi9tYW4zL2xpYmNnaV9nZW5lcmFsLjMgJChERVNURElSKSQoTUFORElSKQo+IC0t CWNwIGRvYy9tYW4vbWFuMy9saWJjZ2lfc3RyaW5nLjMgJChERVNURElSKSQoTUFORElSKQo+IC0t CWNwIGRvYy9tYW4vbWFuMy9saWJjZ2lfc2Vzc2lvbi4zICQoREVTVERJUikkKE1BTkRJUikKPiAt LQljcCBkb2MvbWFuL21hbjMvbGliY2dpX2Nvb2tpZS4zICQoREVTVERJUikkKE1BTkRJUikKPiAt KwljcCBkb2MvbWFuL21hbjMvbGliY2dpX2Jhc2U2NC4zICQoREVTVERJUikkKG1hbmRpcikKPiAt KwljcCBkb2MvbWFuL21hbjMvbGliY2dpX2NnaS4zICQoREVTVERJUikkKG1hbmRpcikKPiAtKwlj cCBkb2MvbWFuL21hbjMvbGliY2dpX2dlbmVyYWwuMyAkKERFU1RESVIpJChtYW5kaXIpCj4gLSsJ Y3AgZG9jL21hbi9tYW4zL2xpYmNnaV9zdHJpbmcuMyAkKERFU1RESVIpJChtYW5kaXIpCj4gLSsJ Y3AgZG9jL21hbi9tYW4zL2xpYmNnaV9zZXNzaW9uLjMgJChERVNURElSKSQobWFuZGlyKQo+IC0r CWNwIGRvYy9tYW4vbWFuMy9saWJjZ2lfY29va2llLjMgJChERVNURElSKSQobWFuZGlyKQo+IC0g Cj4gZGlmZiAtLWdpdCBhL3BhdGNoZXMvbGliY2dpLTEuMC8wMjAwLWZpeC10eXBvLnBhdGNoIGIv cGF0Y2hlcy9saWJjZ2ktMS4wLzAyMDAtZml4LXR5cG8ucGF0Y2gKPiBuZXcgZmlsZSBtb2RlIDEw MDY0NAo+IGluZGV4IDAwMDAwMDAuLjFhZDFkN2IKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvcGF0 Y2hlcy9saWJjZ2ktMS4wLzAyMDAtZml4LXR5cG8ucGF0Y2gKPiBAQCAtMCwwICsxLDIxIEBACj4g K0Zyb206IEFsZXhhbmRlciBEYWhsIDxwb3N0QGxlc3BvY2t5LmRlPgo+ICtEYXRlOiBGcmksIDIx IE1hciAyMDE0IDEzOjU4OjA4ICswMTAwCj4gK1N1YmplY3Q6IFtQQVRDSF0gZml4IHR5cG8KPiAr Cj4gKy0tLQo+ICsgTWFrZWZpbGUuaW4gfCAgICAyICstCj4gKyAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKPiArCj4gK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5p biBiL01ha2VmaWxlLmluCj4gK2luZGV4IDIxZTRjZTkuLmJkMDA0MTMgMTAwNjQ0Cj4gKy0tLSBh L01ha2VmaWxlLmluCj4gKysrKyBiL01ha2VmaWxlLmluCj4gK0BAIC01LDcgKzUsNyBAQCBJTlNU QUxMX0RBVEEgPSBASU5TVEFMTF9EQVRBQCAtRAo+ICsgcHJlZml4ID0gQHByZWZpeEAKPiArIGV4 ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAo+ICsgCj4gKy1TSEFSRURPUFQgPSAtc2hhcmVkIC1z aGFyZWQgLWZQSUMsLVdsLC1zb25hbWUsbGliY2dpLnNvLjAKPiArK1NIQVJFRE9QVCA9IC1zaGFy ZWQgLXNoYXJlZCAtZlBJQyAtV2wsLXNvbmFtZSxsaWJjZ2kuc28uMAo+ICsgbGliZGlyID0gJChw cmVmaXgpL2xpYgo+ICsgaW5jZGlyID0gJChwcmVmaXgpL2luY2x1ZGUvbGliY2dpCj4gKyBtYW5k aXIJPSAkKHByZWZpeCkvbWFuL21hbjMKPiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9saWJjZ2ktMS4w LzAwMTAtbWFrZS10aGUtbGlicmFyeS1maWxlbmFtZS1tYXRjaC1pdHMtc29uYW1lLnBhdGNoIGIv cGF0Y2hlcy9saWJjZ2ktMS4wLzAyMDEtbWFrZS10aGUtbGlicmFyeS1maWxlbmFtZS1tYXRjaC1p dHMtc29uYW1lLnBhdGNoCj4gc2ltaWxhcml0eSBpbmRleCA5NiUKPiByZW5hbWUgZnJvbSBwYXRj aGVzL2xpYmNnaS0xLjAvMDAxMC1tYWtlLXRoZS1saWJyYXJ5LWZpbGVuYW1lLW1hdGNoLWl0cy1z b25hbWUucGF0Y2gKPiByZW5hbWUgdG8gcGF0Y2hlcy9saWJjZ2ktMS4wLzAyMDEtbWFrZS10aGUt bGlicmFyeS1maWxlbmFtZS1tYXRjaC1pdHMtc29uYW1lLnBhdGNoCj4gaW5kZXggMzlhMTk5Zi4u MDhhN2VjNyAxMDA2NDQKPiAtLS0gYS9wYXRjaGVzL2xpYmNnaS0xLjAvMDAxMC1tYWtlLXRoZS1s aWJyYXJ5LWZpbGVuYW1lLW1hdGNoLWl0cy1zb25hbWUucGF0Y2gKPiArKysgYi9wYXRjaGVzL2xp YmNnaS0xLjAvMDIwMS1tYWtlLXRoZS1saWJyYXJ5LWZpbGVuYW1lLW1hdGNoLWl0cy1zb25hbWUu cGF0Y2gKPiBAQCAtMyw2ICszLDcgQEAgRGF0ZTogRnJpLCAyNiBPY3QgMjAxMiAyMjowMzoxMSAr MDIwMAo+ICBTdWJqZWN0OiBbUEFUQ0hdIG1ha2UgdGhlIGxpYnJhcnkgZmlsZW5hbWUgbWF0Y2gg aXRzIHNvbmFtZQo+ICAKPiAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBPbGJyaWNoIDxtLm9sYnJp Y2hAcGVuZ3V0cm9uaXguZGU+Cj4gK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBEYWhsIDxwb3N0 QGxlc3BvY2t5LmRlPgo+ICAtLS0KPiAgIE1ha2VmaWxlLmluICB8ICAgIDYgKysrKy0tCj4gICBj b25maWd1cmUuaW4gfCAgICAxICsKPiBkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9saWJjZ2ktMS4wLzAy MDItZml4LXVuZXNjYXBlLWJ5LW9wdGltaXppbmctaGV4dGFibGUtaW5pdC1hbmQtYWNjZXNzLnBh dGNoIGIvcGF0Y2hlcy9saWJjZ2ktMS4wLzAyMDItZml4LXVuZXNjYXBlLWJ5LW9wdGltaXppbmct aGV4dGFibGUtaW5pdC1hbmQtYWNjZXNzLnBhdGNoCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBp bmRleCAwMDAwMDAwLi5mN2MxYzQwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL3BhdGNoZXMvbGli Y2dpLTEuMC8wMjAyLWZpeC11bmVzY2FwZS1ieS1vcHRpbWl6aW5nLWhleHRhYmxlLWluaXQtYW5k LWFjY2Vzcy5wYXRjaAo+IEBAIC0wLDAgKzEsOTMgQEAKPiArRnJvbTogQWxleGFuZGVyIERhaGwg PHBvc3RAbGVzcG9ja3kuZGU+Cj4gK0RhdGU6IFR1ZSwgMTggTWFyIDIwMTQgMTE6Mjg6NDkgKzAx MDAKPiArU3ViamVjdDogW1BBVENIXSBmaXggdW5lc2NhcGUgYnkgb3B0aW1pemluZyBoZXh0YWJs ZSBpbml0IGFuZCBhY2Nlc3MKPiArCj4gK2ludCBzaXplIGlzIHJlZHVjZWQgdG8gMSBieXRlLCB0 YWJsZSBsZW5ndGggaXMgdHJ1bmNhdGVkIHRvIG9ubHkKPiArYWNjZXNzZWQgYnl0ZXMsIGFuZCBh Y2Nlc3MgaXMgbGltaXRlZCB0byBvbmx5IHRoZSBoZXggZGlnaXQgY2hhcmFjdGVycwo+ICtieSBy ZXBsYWNpbmcgaXNhbG51bSgpIHdpdGggaXN4ZGlnaXQoKSBpbiBjZ2lfdW5lc2NhcGVfc3BlY2lh bF9jaGFycygpLgo+ICtUaGlzIGFjdHVhbGx5IGZpeGVzIGEgYnVnIGluIGRlY29kaW5nIGlmIG9u ZSBvZiB0aGUgaGV4IGRpZ2l0cyBhZnRlciB0aGUKPiArJyUnIHdhcyBhbm90aGVyIGNoYXJhY3Rl ciB0aGFuIGEgdG8gZiEKPiArLS0tCj4gKyBzcmMvY2dpLmMgfCAgIDU1ICsrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiArIDEgZmlsZSBjaGFu Z2VkLCAyOCBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKPiArCj4gK2RpZmYgLS1naXQg YS9zcmMvY2dpLmMgYi9zcmMvY2dpLmMKPiAraW5kZXggOTk1NjNhZC4uNWQ5ZmZjMCAxMDA2NDQK PiArLS0tIGEvc3JjL2NnaS5jCj4gKysrKyBiL3NyYy9jZ2kuYwo+ICtAQCAtMjcsOSArMjcsNyBA QAo+ICsgI2luY2x1ZGUgImNnaS5oIgo+ICsgI2luY2x1ZGUgImVycm9yLmgiCj4gKyAKPiArLS8v IFdob3cuLi4gaWYgaGV4dGFibGUgYXJyYXkgaGFzIGEgbGVuZ3RoIGxlc3MgdGhhbiAyNTYsCj4g Ky0vLyB0aGUgY2dpX3VuZXNjYXBlX3NwZWNpYWxfY2hhcnMgZnVuY3Rpb24gd2lsbCBmYWlsLiAg QW5kIEkgZG9uJ3Qga25vdyB3aHkKPiArLXN0YXRpYyBpbnQgaGV4dGFibGVbMjU2XTsKPiArK3N0 YXRpYyB1bnNpZ25lZCBjaGFyIGhleHRhYmxlWydmJysxXTsKPiArIAo+ICsgaW50IGhlYWRlcnNf aW5pdGlhbGl6ZWQgPSAwOwo+ICsgCj4gK0BAIC0zMjYsMjkgKzMyNCwzMiBAQCB2b2lkIGNnaV9y ZWRpcmVjdChjaGFyICp1cmwpCj4gKyAvLyBPcmlnaW5hbCBpZGVhIGZyb20gY2dpYyBsaWJyYXJ5 Cj4gKyB2b2lkIGluaXRfaGV4X3RhYmxlKCkKPiArIHsKPiArLQltZW1zZXQoaGV4dGFibGUsIDAs IDI1NSk7Cj4gKy0KPiArLQloZXh0YWJsZVsnMSddID0gMTsKPiArLQloZXh0YWJsZVsnMiddID0g MjsKPiArLQloZXh0YWJsZVsnMyddID0gMzsKPiArLQloZXh0YWJsZVsnNCddID0gNDsKPiArLQlo ZXh0YWJsZVsnNSddID0gNTsKPiArLQloZXh0YWJsZVsnNiddID0gNjsKPiArLQloZXh0YWJsZVsn NyddID0gNzsKPiArLQloZXh0YWJsZVsnOCddID0gODsKPiArLQloZXh0YWJsZVsnOSddID0gOTsK PiArLQloZXh0YWJsZVsnYSddID0gMTA7Cj4gKy0JaGV4dGFibGVbJ2InXSA9IDExOwo+ICstCWhl eHRhYmxlWydjJ10gPSAxMjsKPiArLQloZXh0YWJsZVsnZCddID0gMTM7Cj4gKy0JaGV4dGFibGVb J2UnXSA9IDE0Owo+ICstCWhleHRhYmxlWydmJ10gPSAxNTsKPiArLQloZXh0YWJsZVsnQSddID0g MTA7Cj4gKy0JaGV4dGFibGVbJ0InXSA9IDExOwo+ICstCWhleHRhYmxlWydDJ10gPSAxMjsKPiAr LQloZXh0YWJsZVsnRCddID0gMTM7Cj4gKy0JaGV4dGFibGVbJ0UnXSA9IDE0Owo+ICstCWhleHRh YmxlWydGJ10gPSAxNTsKPiArKwltZW1zZXQoaGV4dGFibGUsIDAsICdmJysxKTsKPiArKwo+ICsr CWhleHRhYmxlWycwJ10gPSAweDA7CS8qIDQ4ICovCj4gKysJaGV4dGFibGVbJzEnXSA9IDB4MTsJ LyogNDkgKi8KPiArKwloZXh0YWJsZVsnMiddID0gMHgyOwkvKiA1MCAqLwo+ICsrCWhleHRhYmxl WyczJ10gPSAweDM7CS8qIDUxICovCj4gKysJaGV4dGFibGVbJzQnXSA9IDB4NDsJLyogNTIgKi8K PiArKwloZXh0YWJsZVsnNSddID0gMHg1OwkvKiA1MyAqLwo+ICsrCWhleHRhYmxlWyc2J10gPSAw eDY7CS8qIDU0ICovCj4gKysJaGV4dGFibGVbJzcnXSA9IDB4NzsJLyogNTUgKi8KPiArKwloZXh0 YWJsZVsnOCddID0gMHg4OwkvKiA1NiAqLwo+ICsrCWhleHRhYmxlWyc5J10gPSAweDk7CS8qIDU3 ICovCj4gKysKPiArKwloZXh0YWJsZVsnQSddID0gMHhBOwkvKiA2NSAqLwo+ICsrCWhleHRhYmxl WydCJ10gPSAweEI7CS8qIDY2ICovCj4gKysJaGV4dGFibGVbJ0MnXSA9IDB4QzsJLyogNjcgKi8K PiArKwloZXh0YWJsZVsnRCddID0gMHhEOwkvKiA2OCAqLwo+ICsrCWhleHRhYmxlWydFJ10gPSAw eEU7CS8qIDY5ICovCj4gKysJaGV4dGFibGVbJ0YnXSA9IDB4RjsJLyogNzAgKi8KPiArKwo+ICsr CWhleHRhYmxlWydhJ10gPSAweGE7CS8qIDk3ICovCj4gKysJaGV4dGFibGVbJ2InXSA9IDB4YjsJ LyogOTggKi8KPiArKwloZXh0YWJsZVsnYyddID0gMHhjOwkvKiA5OSAqLwo+ICsrCWhleHRhYmxl WydkJ10gPSAweGQ7CS8qIDEwMCAqLwo+ICsrCWhleHRhYmxlWydlJ10gPSAweGU7CS8qIDEwMSAq Lwo+ICsrCWhleHRhYmxlWydmJ10gPSAweGY7CS8qIDEwMiAqLwo+ICsgfQo+ICsgCj4gKyAvKioK PiArQEAgLTQxMSw3ICs0MTIsNyBAQCBjaGFyICpjZ2lfdW5lc2NhcGVfc3BlY2lhbF9jaGFycyhj aGFyICpzdHIpCj4gKyAJCS8vIGhleGEgY29kZS4gQ29udmVydGluZyBhIGhleGFkZWNpbWFsIGNv ZGUgdG8gdGhlaXIgZGVjaW1hbCBpcyBlYXN5Ogo+ICsgCQkvLyBUaGUgZmlyc3QgY2hhcmFjdGVy IG5lZWRzIHRvIGJlIG11bHRpcGxpZWQgYnkgMTYgKCA8PCA0ICksIGFuZCB0aGUgYW5vdGhlcgo+ ICsgCQkvLyBvbmUgd2UganVzdCBnZXQgdGhlIHZhbHVlIGZyb20gaGV4dGFibGUgdmFyaWFibGUK PiArLQkJaWYgKChzdHJbaV0gPT0gJyUnKSAmJiBpc2FsbnVtKHN0cltpKzFdKSAmJiBpc2FsbnVt KHN0cltpKzJdKSkgewo+ICsrCQlpZiAoKHN0cltpXSA9PSAnJScpICYmIGlzeGRpZ2l0KHN0cltp KzFdKSAmJiBpc3hkaWdpdChzdHJbaSsyXSkpIHsKPiArIAkJCXRtcFtwb3NdID0gKGhleHRhYmxl Wyh1bnNpZ25lZCBjaGFyKSBzdHJbaSsxXV0gPDwgNCkgKyBoZXh0YWJsZVsodW5zaWduZWQgY2hh cikgc3RyW2krMl1dOwo+ICsgCQkJaSArPSAyOwo+ICsgCQl9Cj4gZGlmZiAtLWdpdCBhL3BhdGNo ZXMvbGliY2dpLTEuMC9zZXJpZXMgYi9wYXRjaGVzL2xpYmNnaS0xLjAvc2VyaWVzCj4gaW5kZXgg NTI5ZjllMS4uYzgxMzBkYSAxMDA2NDQKPiAtLS0gYS9wYXRjaGVzL2xpYmNnaS0xLjAvc2VyaWVz Cj4gKysrIGIvcGF0Y2hlcy9saWJjZ2ktMS4wL3Nlcmllcwo+IEBAIC0xLDEzICsxLDEzIEBACj4g ICMgZ2VuZXJhdGVkIGJ5IGdpdC1wdHgtcGF0Y2hlcwo+ICAjdGFnOmJhc2UgLS1zdGFydC1udW1i ZXIgMQo+IC0wMDAxLWluc3RhbGwtaW50by1zZXBhcmF0ZS1kaXJlY3RvcnkucGF0Y2gKPiAtMDAw Mi1jbGVhbnVwLWNvbXBpbGVyLWZsYWdzLWZvci1zaGFyZWQtbGliLnBhdGNoCj4gLTAwMDMtZGVz dGRpci1zdXBwb3J0LnBhdGNoCj4gLTAwMDQtY2xlYW51cC1idWlsZC1saW5lLnBhdGNoCj4gLTAw MDUtY2xlYW51cC1jbGVhbi10YXJnZXQucGF0Y2gKPiAtMDAwNi1jb3B5LXBhc3QtZXJyb3ItaW4t aGV4dGFibGUucGF0Y2gKPiAtMDAwNy13cm9uZy12YXJpYWJsZS5wYXRjaAo+IC0wMDA4LXVzZS1p bnN0YWxsLWluc3RlYWQtb2YtY3AucGF0Y2gKPiAtMDAwOS11c2Utc3RhbmRhcmQtZGlyZWN0b3J5 LW5hbWVzLnBhdGNoCj4gLTAwMTAtbWFrZS10aGUtbGlicmFyeS1maWxlbmFtZS1tYXRjaC1pdHMt c29uYW1lLnBhdGNoCj4gLSMgNDBjOGU1MGRmMmE4ZDhkY2NiNDExOGU1MzIzMzExZDIgIC0gZ2l0 LXB0eC1wYXRjaGVzIG1hZ2ljCj4gKyN0YWc6dXBzdHJlYW0gLS1zdGFydC1udW1iZXIgMQo+ICsw MDAxLWFwcGx5LXBhdGNoZXMtZnJvbS1wdHhkaXN0LTktcGF0Y2hlcy1pbi0xLWNvbW1pdC5wYXRj aAo+ICswMDAyLXJlbW92ZS10cmFpbGluZy13aGl0ZXNwYWNlLW15LWVkaXRvci13b3VsZC1kby10 aGlzLWEucGF0Y2gKPiArMDAwMy1mcmVlLW1lbW9yeS1hbGxvY2F0ZWQtYnktdW5lc2NhcGVfc3Bl Y2lhbF9jaGFycy1hZnRlLnBhdGNoCj4gKzAwMDQtZnJlZS1tZW1vcnktYWxsb2NhdGVkLWZvci1y ZWFkaW5nLWFuZC1wYXJzaW5nLVBPU1QtZC5wYXRjaAo+ICswMDA1LUZJTEUtcmVxdWlyZXMtaW5j bHVkaW5nLXN0ZGlvLnBhdGNoCj4gKyN0YWc6cHR4IC0tc3RhcnQtbnVtYmVyIDIwMAo+ICswMjAw LWZpeC10eXBvLnBhdGNoCj4gKzAyMDEtbWFrZS10aGUtbGlicmFyeS1maWxlbmFtZS1tYXRjaC1p dHMtc29uYW1lLnBhdGNoCj4gKzAyMDItZml4LXVuZXNjYXBlLWJ5LW9wdGltaXppbmctaGV4dGFi bGUtaW5pdC1hbmQtYWNjZXNzLnBhdGNoCj4gKyMgNDE5MDA5M2U1ZmYwMzgyMGZiNzExYzI0NWIy MTI4NTggIC0gZ2l0LXB0eC1wYXRjaGVzIG1hZ2ljCj4gLS0gCj4gMS43LjEwLjQKPiAKPiAKPiAt LSAKPiBwdHhkaXN0IG1haWxpbmcgbGlzdAo+IHB0eGRpc3RAcGVuZ3V0cm9uaXguZGUKCi0tIApQ ZW5ndXRyb25peCBlLksuICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfApJbmR1c3RyaWFsIExpbnV4IFNvbHV0aW9ucyAgICAgICAgICAgICAg ICAgfCBodHRwOi8vd3d3LnBlbmd1dHJvbml4LmRlLyAgfApQZWluZXIgU3RyLiA2LTgsIDMxMTM3 IEhpbGRlc2hlaW0sIEdlcm1hbnkgfCBQaG9uZTogKzQ5LTUxMjEtMjA2OTE3LTAgICAgfApBbXRz Z2VyaWNodCBIaWxkZXNoZWltLCBIUkEgMjY4NiAgICAgICAgICAgfCBGYXg6ICAgKzQ5LTUxMjEt MjA2OTE3LTU1NTUgfAoKLS0gCnB0eGRpc3QgbWFpbGluZyBsaXN0CnB0eGRpc3RAcGVuZ3V0cm9u aXguZGUK