From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 16E8D4389D for ; Tue, 2 Aug 2022 17:21:34 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A819268BAF1; Tue, 2 Aug 2022 20:21:31 +0300 (EEST) Received: from shout01.mail.de (shout01.mail.de [62.201.172.24]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2AA0B68BAB2 for ; Tue, 2 Aug 2022 20:21:25 +0300 (EEST) Received: from postfix02.mail.de (postfix02.bt.mail.de [10.0.121.126]) by shout01.mail.de (Postfix) with ESMTP id C6FC2A07DC for ; Tue, 2 Aug 2022 19:21:24 +0200 (CEST) Received: from smtp02.mail.de (smtp02.bt.mail.de [10.0.121.212]) by postfix02.mail.de (Postfix) with ESMTP id AE703A03C3 for ; Tue, 2 Aug 2022 19:21:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mail.de; s=mailde202009; t=1659460884; bh=TTMS6tCogAKn/GFmjpSJCBVXSRbkXyTO3aM1dwp2+sI=; h=From:To:Subject:Date:Message-ID:From:To:CC:Subject:Reply-To; b=6MRU7QIVt/sPbt+DiUcZ51v5bOm1+Ud0+02E0AYkp7gWQvLyXOUiG3Lo0bNaEhSkE +rD/uoS7trWfxarvqjtr6+6h0WsWfcCgfg9RuHo/5EJewsz+gSDT4mpdXOQnRK8p25 uJATvfqzLzURG951dgumOi85s6BMi6Jv3SL1iXfXMRvwmXSYSeiAH73RQKYBer1lWQ qAOG8zWmkxF4VPmtFtpd/L+7VCb+ao1s0el5a8HIplWAzngPekNwwoAmrs9KQPEbKq N3rPgXBw5T4K+7bCSt6ASF9Iub1siMOTdyunKKDGbnqWT5OrqP+b5+VHb5LVjX1z+8 5EXHmWc7yxhuw== Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by smtp02.mail.de (Postfix) with ESMTPSA id 77A72A02FE for ; Tue, 2 Aug 2022 19:21:24 +0200 (CEST) From: "Thilo Borgmann" To: "FFmpeg development discussions and patches" Date: Tue, 02 Aug 2022 19:21:23 +0200 Message-ID: <59DA0BDB-3927-4F0F-92F5-882EBDCDBAAA@mail.de> In-Reply-To: References: <20220518180454.53301-1-jeebjp@gmail.com> <41dcff20-36db-c4e7-5d7f-36c4dc911a2c@gyani.pro> <64c6b7ce-671a-1a03-45e1-cad08a8cf04c@mail.de> <64edef9e-5052-d335-5dc3-97aa9e23f989@gyani.pro> MIME-Version: 1.0 X-purgate: clean X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate-type: clean X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate: clean X-purgate-size: 12910 X-purgate-ID: 154282::1659460884-0000737C-A81FF77D/2/47666170918 Subject: Re: [FFmpeg-devel] [PATCH 1/2] ffmpeg: add display_{rotation, hflip, vflip} options X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: CgpPbiAyIEF1ZyAyMDIyLCBhdCAxOToxMCwgQW5kcmVhcyBSaGVpbmhhcmR0IHdyb3RlOgoKPiBU aGlsbyBCb3JnbWFubjoKPj4gSGksCj4+Cj4+Pj4+Pj4gT24gMjAyMi0wNS0xOCAxMTozNCBwbSwg SmFuIEVrc3Ryw7ZtIHdyb3RlOgo+Pj4+Pj4+PiBUaGlzIGVuYWJsZXMgb3ZlcnJpZGluZyB0aGUg cm90YXRpb24gYXMgd2VsbCBhcyAKPj4+Pj4+Pj4gaG9yaXpvbnRhbC92ZXJ0aWNhbAo+Pj4+Pj4+ PiBmbGlwIHN0YXRlIG9mIGEgc3BlY2lmaWMgdmlkZW8gc3RyZWFtIG9uIGVpdGhlciB0aGUgaW5w dXQgb3IgCj4+Pj4+Pj4+IG91dHB1dAo+Pj4+Pj4+PiBzaWRlLgo+Pj4+Pj4+Cj4+Pj4+Pj4gU2lu Y2Ugcm90YXRpb24sIGZsaXAgYW5kIHNjYWxlIGFyZSBzdG9yZWQgaW4gYSBzaW5nbGUgZGF0YSAK Pj4+Pj4+PiBzdHJ1Y3R1cmUsCj4+Pj4+Pj4gaG93IGFib3V0IGEgc2luZ2xlIG9wdGlvbiBpLmUu IC1kaXNwbGF5IAo+Pj4+Pj4+ICJyb3RhdGU9OTAsZmxpcD1odixzY2FsZT0yIgo+Pj4+Pj4KPj4+ Pj4+Cj4+Pj4+PiBJIGRpZCB0aGluayBhYm91dCB0aGF0LCBhbmQgSSBldmVuIGltcGxlbWVudGVk IEFWRGljdCBiYXNlZCAKPj4+Pj4+IG9wdGlvbnMKPj4+Pj4+IGZvciBmZm1wZWcuYyBpbiBhIGJy YW5jaC4gQnV0IHRoZW4gcHJldHR5IG11Y2ggZ290IHRpcmVkIG9mIGxhY2sgCj4+Pj4+PiBvZgo+ Pj4+Pj4gQVZPcHRpb24gYXV0b21hdGlvbiAoZi5leC4gZm9yIHRoZSBmbGlwIGZsYWdnaW5nIGV0 YyksIGFuZCAKPj4+Pj4+IGRlY2lkZWQKPj4+Pj4+IHRoYXQgc2luY2UgdGhlc2UgYXJlIHJlbGF0 aXZlbHkgYmFzaWMgYW5kIHNpbXBsZSwgdGhlIG5vbi1nZW5lcmljCj4+Pj4+PiBvcHRpb24gZm9y IHRoaXMgY291bGQgYmUganVzdCB0aHJlZSBvcHRpb25zIGluIHRoZSBpbml0aWFsIAo+Pj4+Pj4g c3VibWlzc2lvbi4KPj4+Pj4KPj4+Pj4gSW4gdGhlIGVuZCBJIGRpZCBpbXBsZW1lbnQgdGhpcyB3 aXRoIGEgc2luZ2xlIGRpY3QtYmFzZWQgdGhpbmcgaW4gCj4+Pj4+IGEKPj4+Pj4gYnJhbmNoIGJ1 dCBuZXZlciBnb3QgdG8gcG9zdGluZyBpdCB0byB0aGlzIHRocmVhZDoKPj4+Pj4gaHR0cHM6Ly9n aXRodWIuY29tL2plZWIvZmZtcGVnL2NvbW1pdHMvZmZtcGVnX2NfZGlzcGxheV9tYXRyaXhfd2l0 aF9kaWN0cwo+Pj4+Pgo+Pj4+Pgo+Pj4+PiBTbyBmb3IgdGhlIHBvc2l0aXZlOiBOb3cgaXQncyBh bGwgaW4gYSBzaW5nbGUgb3B0aW9uIHNvIGl0J3MgY2xlYXIKPj4+Pj4gdGhhdCBpdCdzIGRlZmlu aW5nIGEgc2luZ2xlIHN0cnVjdHVyZS4KPj4+Pj4gQW5kIHRoZSBuZWdhdGl2ZTogTmVlZHMgYSBz dHJ1Y3QgZGVmaW5pdGlvbiwgc3RydWN0LCBBVk9wdGlvbiAKPj4+Pj4gbGlzdCwKPj4+Pj4gQVZD bGFzcyBhbmQgYWN0dWFsbHkgaWYgeW91IGFscmVhZHkgbWFkZSBhIGRpY3Qgb3V0IG9mIHRoZSBv cHRpb25zCj4+Pj4+IGJlZm9yZSwgYXMgdGhlIGZ1bmN0aW9ucyB3aWxsIGZyZWUgdGhlIG9yaWdp bmFsIGFmdGVyIHVzYWdlIGFuZAo+Pj4+PiBnZW5lcmF0ZSBhIG5ldyBvbmUsIGl0IGRlc3Ryb3lz IHRoZSBsaWZlIHRpbWUgZXhwZWN0YXRpb25zIG9mIHRoZSAKPj4+Pj4gZGljdAo+Pj4+PiBhbmQg dGh1cyBpdCBpcyBqdXN0IHNpbXBsZXIgdG8gY29weSB0aGUgZGljdCB3aGVuIGVudGVyaW5nIHRo ZQo+Pj4+PiBmdW5jdGlvbiAoSSB0aGluayB0aGVyZSBpcyBhbiBhcmd1bWVudHMgc3RyaW5nIGJh c2VkIEFQSSB3aGljaCAKPj4+Pj4gbWlnaHQKPj4+Pj4gb3IgbWlnaHQgbm90IGFjdHVhbGx5IGJl IHNpbXBsZXIgZm9yIHRoaXMgY2FzZSkuCj4+Pj4+Cj4+Pj4+IFNvIHllYSwgbm90IHN1cmUgaWYg SSBwcmVmZXIgdGhpcyB2ZXJzaW9uLgo+Pj4+Cj4+Pj4gUGluZy4KPj4+Pgo+Pj4+IERpZCB0aGlz IHN0YWxsIGZvciBhIHJlYXNvbj8gSG93IGNhbiB3ZSBpdGVyYXRlIG9uIGl0Pwo+Pj4KPj4+IFNp bmNlIHRoZSByb3RhdGlvbi9mbGlwL3NjYWxlIGhpbnRzIGFyZSBzdG9yZWQgaW4gYSBzaW5nbGUg ZGF0YQo+Pj4gc3RydWN0dXJlLCBJIHByZWZlciBhIHNpbmdsZSB1c2VyIG9wdGlvbiB0byBzZXQg dGhvc2UgdmFsdWVzLgo+Pgo+PiBhdHRhY2hlZCBwYXRjaCBhbGxvd3MgZm9yIHByaW50aW5nIHRo ZSBhcmd1bWVudHMgb2YgdGhlIG5ldwo+PiAtZGlzcGxheV9yb3RhdGlvbiAob3IgYW55KSBvcHRp b24uCj4+Cj4+IEkgd3JvdGUgdGhpcyBpbiBqZWViJ3MgZ2l0aHViIGJyYW5jaCBbMV0gd2hlcmUg aXQgYXBwbGllcyBvbi10b3AuIAo+PiBEaWRuJ3QKPj4gdGVzdCB3aXRoIEZGbXBlZy9IRUFEIGFz IHRoaXMgc3RpbGwgbmVlZHMgY2xlYW51cCBhbnl3YXlzLgo+PiBOZXZlciB0b3VjaGVkIHRoaXMg d2hvbGUgb3B0aW9ucyB0aGluZyBiZWZvcmUsIEkgZ3Vlc3MgdGhlcmUncyBsb3QgdG8KPj4gY29t cGxhaW4gYWJvdXQuLi4KPj4KPgo+IEluZGVlZC4gSSBob3BlIHlvdSBkb24ndCBleHBlY3QgdXMg dG8gYXBwbHkgdGhpcyBjbG9uZSBvZiBvcHRfbGlzdCAKPiAodGhlCj4gb25seSBkaWZmZXJlbmNl IEkgZm91bmQgd2VyZSB0aGF0IHlvdSBhcmUgbm90IHByaW50aW5nIHRoZSAKPiBBVl9PUFRfRkxB R18qCj4gdmFsdWVzKS4KCkkgZ3Vlc3Mgbm90LCBtb3JlIGEgcHJvb2Ygb2YgY29uY2VwdC4KTW9y ZSBkaWZmZXJlbmNlcyBhcmUgdGhhdCBpdCBkb2VzIG5vdCBwcmVmaXggdGhlIGFyZ3VtZW50cyB3 aXRoIGEgCuKAni3igJwKYW5kIGl0IGRvZXMgbm90IHByaW50IGEgaGVhZGVyIGxpa2Ug4oCePG5h bWU+IEFWQ29udGV4dCBhcmd1bWVudHPigJwgKG9yIApzb21ldGhpbmcgbGlrZSB0aGF0KQoKQ2Fu IGVpdGhlciBiZSBjb21wbGV4aWZpZWQgdG8gaGF2ZSB0aGVzZSBjb250cm9sbGVkIGJ5IG1vcmUg YXJncyBvciAKc3BsaXQgaW50byBzZXZlcmFsIHN1YiBmdW5jdGlvbnPigKY/CgotVGhpbG8KCgo+ Cj4+IGRpZmYgLS1naXQgYS9saWJhdnV0aWwvb3B0LmMgYi9saWJhdnV0aWwvb3B0LmMKPj4gaW5k ZXggOGZmYjEwNDQ5Yi4uNDI4ZGEyMzE5ZiAxMDA2NDQKPj4gLS0tIGEvbGliYXZ1dGlsL29wdC5j Cj4+ICsrKyBiL2xpYmF2dXRpbC9vcHQuYwo+PiBAQCAtMTQ0Myw2ICsxNDQzLDIwMSBAQCBGRl9F TkFCTEVfREVQUkVDQVRJT05fV0FSTklOR1MKPj4gICAgICB9Cj4+ICB9Cj4+Cj4+ICtzdGF0aWMg dm9pZCBhcmdfbGlzdCh2b2lkICpvYmosIHZvaWQgKmF2X2xvZ19vYmosIGNvbnN0IGNoYXIgKnVu aXQsIAo+PiBlbnVtIEFWT3B0aW9uVHlwZSBwYXJlbnRfdHlwZSkKPj4gK3sKPj4gKyAgICBjb25z dCBBVk9wdGlvbiAqb3B0ID0gTlVMTDsKPj4gKyAgICBBVk9wdGlvblJhbmdlcyAqcjsKPj4gKyAg ICBpbnQgaTsKPj4gKwo+PiArICAgIHdoaWxlICgob3B0ID0gYXZfb3B0X25leHQob2JqLCBvcHQp KSkgewo+PiArICAgICAgICAvKiBEb24ndCBwcmludCBDT05TVCdzIG9uIGxldmVsIG9uZS4KPj4g KyAgICAgICAgICogRG9uJ3QgcHJpbnQgYW55dGhpbmcgYnV0IENPTlNUJ3Mgb24gbGV2ZWwgdHdv Lgo+PiArICAgICAgICAgKiBPbmx5IHByaW50IGl0ZW1zIGZyb20gdGhlIHJlcXVlc3RlZCB1bml0 Lgo+PiArICAgICAgICAgKi8KPj4gKyAgICAgICAgaWYgKCF1bml0ICYmIG9wdC0+dHlwZSA9PSBB Vl9PUFRfVFlQRV9DT05TVCkKPj4gKyAgICAgICAgICAgIGNvbnRpbnVlOwo+PiArICAgICAgICBl bHNlIGlmICh1bml0ICYmIG9wdC0+dHlwZSAhPSBBVl9PUFRfVFlQRV9DT05TVCkKPj4gKyAgICAg ICAgICAgIGNvbnRpbnVlOwo+PiArICAgICAgICBlbHNlIGlmICh1bml0ICYmIG9wdC0+dHlwZSA9 PSBBVl9PUFRfVFlQRV9DT05TVCAmJiAKPj4gc3RyY21wKHVuaXQsIG9wdC0+dW5pdCkpCj4+ICsg ICAgICAgICAgICBjb250aW51ZTsKPj4gKyAgICAgICAgZWxzZSBpZiAodW5pdCAmJiBvcHQtPnR5 cGUgPT0gQVZfT1BUX1RZUEVfQ09OU1QpCj4+ICsgICAgICAgICAgICBhdl9sb2coYXZfbG9nX29i aiwgQVZfTE9HX0lORk8sICIgICAgICUtMTVzICIsIAo+PiBvcHQtPm5hbWUpOwo+PiArICAgICAg ICBlbHNlCj4+ICsgICAgICAgICAgICBhdl9sb2coYXZfbG9nX29iaiwgQVZfTE9HX0lORk8sICIg ICAlLTE3cyAiLCBvcHQtPm5hbWUpOwo+PiArCj4+ICsgICAgICAgIHN3aXRjaCAob3B0LT50eXBl KSB7Cj4+ICsgICAgICAgICAgICBjYXNlIEFWX09QVF9UWVBFX0ZMQUdTOgo+PiArICAgICAgICAg ICAgICAgIGF2X2xvZyhhdl9sb2dfb2JqLCBBVl9MT0dfSU5GTywgIiUtMTJzICIsIAo+PiAiPGZs YWdzPiIpOwo+PiArICAgICAgICAgICAgICAgIGJyZWFrOwo+PiArICAgICAgICAgICAgY2FzZSBB Vl9PUFRfVFlQRV9JTlQ6Cj4+ICsgICAgICAgICAgICAgICAgYXZfbG9nKGF2X2xvZ19vYmosIEFW X0xPR19JTkZPLCAiJS0xMnMgIiwgIjxpbnQ+Iik7Cj4+ICsgICAgICAgICAgICAgICAgYnJlYWs7 Cj4+ICsgICAgICAgICAgICBjYXNlIEFWX09QVF9UWVBFX0lOVDY0Ogo+PiArICAgICAgICAgICAg ICAgIGF2X2xvZyhhdl9sb2dfb2JqLCBBVl9MT0dfSU5GTywgIiUtMTJzICIsIAo+PiAiPGludDY0 PiIpOwo+PiArICAgICAgICAgICAgICAgIGJyZWFrOwo+PiArICAgICAgICAgICAgY2FzZSBBVl9P UFRfVFlQRV9VSU5UNjQ6Cj4+ICsgICAgICAgICAgICAgICAgYXZfbG9nKGF2X2xvZ19vYmosIEFW X0xPR19JTkZPLCAiJS0xMnMgIiwgCj4+ICI8dWludDY0PiIpOwo+PiArICAgICAgICAgICAgICAg IGJyZWFrOwo+PiArICAgICAgICAgICAgY2FzZSBBVl9PUFRfVFlQRV9ET1VCTEU6Cj4+ICsgICAg ICAgICAgICAgICAgYXZfbG9nKGF2X2xvZ19vYmosIEFWX0xPR19JTkZPLCAiJS0xMnMgIiwgCj4+ ICI8ZG91YmxlPiIpOwo+PiArICAgICAgICAgICAgICAgIGJyZWFrOwo+PiArICAgICAgICAgICAg Y2FzZSBBVl9PUFRfVFlQRV9GTE9BVDoKPj4gKyAgICAgICAgICAgICAgICBhdl9sb2coYXZfbG9n X29iaiwgQVZfTE9HX0lORk8sICIlLTEycyAiLCAKPj4gIjxmbG9hdD4iKTsKPj4gKyAgICAgICAg ICAgICAgICBicmVhazsKPj4gKyAgICAgICAgICAgIGNhc2UgQVZfT1BUX1RZUEVfU1RSSU5HOgo+ PiArICAgICAgICAgICAgICAgIGF2X2xvZyhhdl9sb2dfb2JqLCBBVl9MT0dfSU5GTywgIiUtMTJz ICIsIAo+PiAiPHN0cmluZz4iKTsKPj4gKyAgICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAg ICAgICAgIGNhc2UgQVZfT1BUX1RZUEVfUkFUSU9OQUw6Cj4+ICsgICAgICAgICAgICAgICAgYXZf bG9nKGF2X2xvZ19vYmosIEFWX0xPR19JTkZPLCAiJS0xMnMgIiwgCj4+ICI8cmF0aW9uYWw+Iik7 Cj4+ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgICAgICBjYXNlIEFWX09QVF9U WVBFX0JJTkFSWToKPj4gKyAgICAgICAgICAgICAgICBhdl9sb2coYXZfbG9nX29iaiwgQVZfTE9H X0lORk8sICIlLTEycyAiLCAKPj4gIjxiaW5hcnk+Iik7Cj4+ICsgICAgICAgICAgICAgICAgYnJl YWs7Cj4+ICsgICAgICAgICAgICBjYXNlIEFWX09QVF9UWVBFX0RJQ1Q6Cj4+ICsgICAgICAgICAg ICAgICAgYXZfbG9nKGF2X2xvZ19vYmosIEFWX0xPR19JTkZPLCAiJS0xMnMgIiwgCj4+ICI8ZGlj dGlvbmFyeT4iKTsKPj4gKyAgICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICAgICAgIGNh c2UgQVZfT1BUX1RZUEVfSU1BR0VfU0laRToKPj4gKyAgICAgICAgICAgICAgICBhdl9sb2coYXZf bG9nX29iaiwgQVZfTE9HX0lORk8sICIlLTEycyAiLCAKPj4gIjxpbWFnZV9zaXplPiIpOwo+PiAr ICAgICAgICAgICAgICAgIGJyZWFrOwo+PiArICAgICAgICAgICAgY2FzZSBBVl9PUFRfVFlQRV9W SURFT19SQVRFOgo+PiArICAgICAgICAgICAgICAgIGF2X2xvZyhhdl9sb2dfb2JqLCBBVl9MT0df SU5GTywgIiUtMTJzICIsIAo+PiAiPHZpZGVvX3JhdGU+Iik7Cj4+ICsgICAgICAgICAgICAgICAg YnJlYWs7Cj4+ICsgICAgICAgICAgICBjYXNlIEFWX09QVF9UWVBFX1BJWEVMX0ZNVDoKPj4gKyAg ICAgICAgICAgICAgICBhdl9sb2coYXZfbG9nX29iaiwgQVZfTE9HX0lORk8sICIlLTEycyAiLCAK Pj4gIjxwaXhfZm10PiIpOwo+PiArICAgICAgICAgICAgICAgIGJyZWFrOwo+PiArICAgICAgICAg ICAgY2FzZSBBVl9PUFRfVFlQRV9TQU1QTEVfRk1UOgo+PiArICAgICAgICAgICAgICAgIGF2X2xv Zyhhdl9sb2dfb2JqLCBBVl9MT0dfSU5GTywgIiUtMTJzICIsIAo+PiAiPHNhbXBsZV9mbXQ+Iik7 Cj4+ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgICAgICBjYXNlIEFWX09QVF9U WVBFX0RVUkFUSU9OOgo+PiArICAgICAgICAgICAgICAgIGF2X2xvZyhhdl9sb2dfb2JqLCBBVl9M T0dfSU5GTywgIiUtMTJzICIsIAo+PiAiPGR1cmF0aW9uPiIpOwo+PiArICAgICAgICAgICAgICAg IGJyZWFrOwo+PiArICAgICAgICAgICAgY2FzZSBBVl9PUFRfVFlQRV9DT0xPUjoKPj4gKyAgICAg ICAgICAgICAgICBhdl9sb2coYXZfbG9nX29iaiwgQVZfTE9HX0lORk8sICIlLTEycyAiLCAKPj4g Ijxjb2xvcj4iKTsKPj4gKyAgICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICAgICAgIGNh c2UgQVZfT1BUX1RZUEVfQ0hMQVlPVVQ6Cj4+ICsjaWYgRkZfQVBJX09MRF9DSEFOTkVMX0xBWU9V VAo+PiArRkZfRElTQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUwo+PiArICAgICAgICAgICAgY2Fz ZSBBVl9PUFRfVFlQRV9DSEFOTkVMX0xBWU9VVDoKPj4gK0ZGX0VOQUJMRV9ERVBSRUNBVElPTl9X QVJOSU5HUwo+PiArI2VuZGlmCj4+ICsgICAgICAgICAgICAgICAgYXZfbG9nKGF2X2xvZ19vYmos IEFWX0xPR19JTkZPLCAiJS0xMnMgIiwgCj4+ICI8Y2hhbm5lbF9sYXlvdXQ+Iik7Cj4+ICsgICAg ICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgICAgICBjYXNlIEFWX09QVF9UWVBFX0JPT0w6 Cj4+ICsgICAgICAgICAgICAgICAgYXZfbG9nKGF2X2xvZ19vYmosIEFWX0xPR19JTkZPLCAiJS0x MnMgIiwgCj4+ICI8Ym9vbGVhbj4iKTsKPj4gKyAgICAgICAgICAgICAgICBicmVhazsKPj4gKyAg ICAgICAgICAgIGNhc2UgQVZfT1BUX1RZUEVfQ09OU1Q6Cj4+ICsgICAgICAgICAgICAgICAgaWYg KHBhcmVudF90eXBlID09IEFWX09QVF9UWVBFX0lOVCkKPj4gKyAgICAgICAgICAgICAgICAgICAg YXZfbG9nKGF2X2xvZ19vYmosIEFWX0xPR19JTkZPLCAiJS0xMiJQUklkNjQiICIsIAo+PiBvcHQt PmRlZmF1bHRfdmFsLmk2NCk7Cj4+ICsgICAgICAgICAgICAgICAgZWxzZQo+PiArICAgICAgICAg ICAgICAgICAgICBhdl9sb2coYXZfbG9nX29iaiwgQVZfTE9HX0lORk8sICIlLTEycyAiLCAiIik7 Cj4+ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgICAgICBkZWZhdWx0Ogo+PiAr ICAgICAgICAgICAgICAgIGF2X2xvZyhhdl9sb2dfb2JqLCBBVl9MT0dfSU5GTywgIiUtMTJzICIs ICIiKTsKPj4gKyAgICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICAgfQo+PiArCj4+ICsg ICAgICAgIGlmIChvcHQtPmhlbHApCj4+ICsgICAgICAgICAgICBhdl9sb2coYXZfbG9nX29iaiwg QVZfTE9HX0lORk8sICIgJXMiLCBvcHQtPmhlbHApOwo+PiArCj4+ICsgICAgICAgIGlmIChhdl9v cHRfcXVlcnlfcmFuZ2VzKCZyLCBvYmosIG9wdC0+bmFtZSwgCj4+IEFWX09QVF9TRUFSQ0hfRkFL RV9PQkopID49IDApIHsKPj4gKyAgICAgICAgICAgIHN3aXRjaCAob3B0LT50eXBlKSB7Cj4+ICsg ICAgICAgICAgICBjYXNlIEFWX09QVF9UWVBFX0lOVDoKPj4gKyAgICAgICAgICAgIGNhc2UgQVZf T1BUX1RZUEVfSU5UNjQ6Cj4+ICsgICAgICAgICAgICBjYXNlIEFWX09QVF9UWVBFX1VJTlQ2NDoK Pj4gKyAgICAgICAgICAgIGNhc2UgQVZfT1BUX1RZUEVfRE9VQkxFOgo+PiArICAgICAgICAgICAg Y2FzZSBBVl9PUFRfVFlQRV9GTE9BVDoKPj4gKyAgICAgICAgICAgIGNhc2UgQVZfT1BUX1RZUEVf UkFUSU9OQUw6Cj4+ICsgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHItPm5iX3Jhbmdl czsgaSsrKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgIGF2X2xvZyhhdl9sb2dfb2JqLCBBVl9M T0dfSU5GTywgIiAoZnJvbSAiKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgbG9nX3ZhbHVlKGF2 X2xvZ19vYmosIEFWX0xPR19JTkZPLCAKPj4gci0+cmFuZ2VbaV0tPnZhbHVlX21pbik7Cj4+ICsg ICAgICAgICAgICAgICAgICAgIGF2X2xvZyhhdl9sb2dfb2JqLCBBVl9MT0dfSU5GTywgIiB0byAi KTsKPj4gKyAgICAgICAgICAgICAgICAgICAgbG9nX3ZhbHVlKGF2X2xvZ19vYmosIEFWX0xPR19J TkZPLCAKPj4gci0+cmFuZ2VbaV0tPnZhbHVlX21heCk7Cj4+ICsgICAgICAgICAgICAgICAgICAg IGF2X2xvZyhhdl9sb2dfb2JqLCBBVl9MT0dfSU5GTywgIikiKTsKPj4gKyAgICAgICAgICAgICAg ICB9Cj4+ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgICAgICB9Cj4+ICsgICAg ICAgICAgICBhdl9vcHRfZnJlZXBfcmFuZ2VzKCZyKTsKPj4gKyAgICAgICAgfQo+PiArCj4+ICsg ICAgICAgIGlmIChvcHQtPnR5cGUgIT0gQVZfT1BUX1RZUEVfQ09OU1QgICYmCj4+ICsgICAgICAg ICAgICBvcHQtPnR5cGUgIT0gQVZfT1BUX1RZUEVfQklOQVJZICYmCj4+ICsgICAgICAgICAgICAg ICAgISgob3B0LT50eXBlID09IEFWX09QVF9UWVBFX0NPTE9SICAgICAgfHwKPj4gKyAgICAgICAg ICAgICAgICAgICBvcHQtPnR5cGUgPT0gQVZfT1BUX1RZUEVfSU1BR0VfU0laRSB8fAo+PiArICAg ICAgICAgICAgICAgICAgIG9wdC0+dHlwZSA9PSBBVl9PUFRfVFlQRV9TVFJJTkcgICAgIHx8Cj4+ ICsgICAgICAgICAgICAgICAgICAgb3B0LT50eXBlID09IEFWX09QVF9UWVBFX0RJQ1QgICAgICAg fHwKPj4gKyAgICAgICAgICAgICAgICAgICBvcHQtPnR5cGUgPT0gQVZfT1BUX1RZUEVfQ0hMQVlP VVQgICB8fAo+PiArICAgICAgICAgICAgICAgICAgIG9wdC0+dHlwZSA9PSBBVl9PUFRfVFlQRV9W SURFT19SQVRFKSAmJgo+PiArICAgICAgICAgICAgICAgICAgIW9wdC0+ZGVmYXVsdF92YWwuc3Ry KSkgewo+PiArICAgICAgICAgICAgYXZfbG9nKGF2X2xvZ19vYmosIEFWX0xPR19JTkZPLCAiIChk ZWZhdWx0ICIpOwo+PiArICAgICAgICAgICAgc3dpdGNoIChvcHQtPnR5cGUpIHsKPj4gKyAgICAg ICAgICAgIGNhc2UgQVZfT1BUX1RZUEVfQk9PTDoKPj4gKyAgICAgICAgICAgICAgICBhdl9sb2co YXZfbG9nX29iaiwgQVZfTE9HX0lORk8sICIlcyIsIChjaGFyIAo+PiAqKWF2X3hfaWZfbnVsbChn ZXRfYm9vbF9uYW1lKG9wdC0+ZGVmYXVsdF92YWwuaTY0KSwgImludmFsaWQiKSk7Cj4+ICsgICAg ICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgICAgICBjYXNlIEFWX09QVF9UWVBFX0ZMQUdT OiB7Cj4+ICsgICAgICAgICAgICAgICAgY2hhciAqZGVmX2ZsYWdzID0gZ2V0X29wdF9mbGFnc19z dHJpbmcob2JqLCAKPj4gb3B0LT51bml0LCBvcHQtPmRlZmF1bHRfdmFsLmk2NCk7Cj4+ICsgICAg ICAgICAgICAgICAgaWYgKGRlZl9mbGFncykgewo+PiArICAgICAgICAgICAgICAgICAgICBhdl9s b2coYXZfbG9nX29iaiwgQVZfTE9HX0lORk8sICIlcyIsIAo+PiBkZWZfZmxhZ3MpOwo+PiArICAg ICAgICAgICAgICAgICAgICBhdl9mcmVlcCgmZGVmX2ZsYWdzKTsKPj4gKyAgICAgICAgICAgICAg ICB9IGVsc2Ugewo+PiArICAgICAgICAgICAgICAgICAgICBhdl9sb2coYXZfbG9nX29iaiwgQVZf TE9HX0lORk8sICIlIlBSSVg2NCwgCj4+IG9wdC0+ZGVmYXVsdF92YWwuaTY0KTsKPj4gKyAgICAg ICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgICAgICB9 Cj4+ICsgICAgICAgICAgICBjYXNlIEFWX09QVF9UWVBFX0RVUkFUSU9OOiB7Cj4+ICsgICAgICAg ICAgICAgICAgY2hhciBidWZbMjVdOwo+PiArICAgICAgICAgICAgICAgIGZvcm1hdF9kdXJhdGlv bihidWYsIHNpemVvZihidWYpLCAKPj4gb3B0LT5kZWZhdWx0X3ZhbC5pNjQpOwo+PiArICAgICAg ICAgICAgICAgIGF2X2xvZyhhdl9sb2dfb2JqLCBBVl9MT0dfSU5GTywgIiVzIiwgYnVmKTsKPj4g KyAgICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICAgICAgIH0KPj4gKyAgICAgICAgICAg IGNhc2UgQVZfT1BUX1RZUEVfSU5UOgo+PiArICAgICAgICAgICAgY2FzZSBBVl9PUFRfVFlQRV9V SU5UNjQ6Cj4+ICsgICAgICAgICAgICBjYXNlIEFWX09QVF9UWVBFX0lOVDY0OiB7Cj4+ICsgICAg ICAgICAgICAgICAgY29uc3QgY2hhciAqZGVmX2NvbnN0ID0gZ2V0X29wdF9jb25zdF9uYW1lKG9i aiwgCj4+IG9wdC0+dW5pdCwgb3B0LT5kZWZhdWx0X3ZhbC5pNjQpOwo+PiArICAgICAgICAgICAg ICAgIGlmIChkZWZfY29uc3QpCj4+ICsgICAgICAgICAgICAgICAgICAgIGF2X2xvZyhhdl9sb2df b2JqLCBBVl9MT0dfSU5GTywgIiVzIiwgCj4+IGRlZl9jb25zdCk7Cj4+ICsgICAgICAgICAgICAg ICAgZWxzZQo+PiArICAgICAgICAgICAgICAgICAgICBsb2dfaW50X3ZhbHVlKGF2X2xvZ19vYmos IEFWX0xPR19JTkZPLCAKPj4gb3B0LT5kZWZhdWx0X3ZhbC5pNjQpOwo+PiArICAgICAgICAgICAg ICAgIGJyZWFrOwo+PiArICAgICAgICAgICAgfQo+PiArICAgICAgICAgICAgY2FzZSBBVl9PUFRf VFlQRV9ET1VCTEU6Cj4+ICsgICAgICAgICAgICBjYXNlIEFWX09QVF9UWVBFX0ZMT0FUOgo+PiAr ICAgICAgICAgICAgICAgIGxvZ192YWx1ZShhdl9sb2dfb2JqLCBBVl9MT0dfSU5GTywgCj4+IG9w dC0+ZGVmYXVsdF92YWwuZGJsKTsKPj4gKyAgICAgICAgICAgICAgICBicmVhazsKPj4gKyAgICAg ICAgICAgIGNhc2UgQVZfT1BUX1RZUEVfUkFUSU9OQUw6IHsKPj4gKyAgICAgICAgICAgICAgICBB VlJhdGlvbmFsIHEgPSBhdl9kMnEob3B0LT5kZWZhdWx0X3ZhbC5kYmwsIAo+PiBJTlRfTUFYKTsK Pj4gKyAgICAgICAgICAgICAgICBhdl9sb2coYXZfbG9nX29iaiwgQVZfTE9HX0lORk8sICIlZC8l ZCIsIHEubnVtLCAKPj4gcS5kZW4pOyB9Cj4+ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsg ICAgICAgICAgICBjYXNlIEFWX09QVF9UWVBFX1BJWEVMX0ZNVDoKPj4gKyAgICAgICAgICAgICAg ICBhdl9sb2coYXZfbG9nX29iaiwgQVZfTE9HX0lORk8sICIlcyIsIChjaGFyIAo+PiAqKWF2X3hf aWZfbnVsbChhdl9nZXRfcGl4X2ZtdF9uYW1lKG9wdC0+ZGVmYXVsdF92YWwuaTY0KSwgIm5vbmUi KSk7Cj4+ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgICAgICBjYXNlIEFWX09Q VF9UWVBFX1NBTVBMRV9GTVQ6Cj4+ICsgICAgICAgICAgICAgICAgYXZfbG9nKGF2X2xvZ19vYmos IEFWX0xPR19JTkZPLCAiJXMiLCAoY2hhciAKPj4gKilhdl94X2lmX251bGwoYXZfZ2V0X3NhbXBs ZV9mbXRfbmFtZShvcHQtPmRlZmF1bHRfdmFsLmk2NCksIAo+PiAibm9uZSIpKTsKPj4gKyAgICAg ICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICAgICAgIGNhc2UgQVZfT1BUX1RZUEVfQ09MT1I6 Cj4+ICsgICAgICAgICAgICBjYXNlIEFWX09QVF9UWVBFX0lNQUdFX1NJWkU6Cj4+ICsgICAgICAg ICAgICBjYXNlIEFWX09QVF9UWVBFX1NUUklORzoKPj4gKyAgICAgICAgICAgIGNhc2UgQVZfT1BU X1RZUEVfRElDVDoKPj4gKyAgICAgICAgICAgIGNhc2UgQVZfT1BUX1RZUEVfVklERU9fUkFURToK Pj4gKyAgICAgICAgICAgIGNhc2UgQVZfT1BUX1RZUEVfQ0hMQVlPVVQ6Cj4+ICsgICAgICAgICAg ICAgICAgYXZfbG9nKGF2X2xvZ19vYmosIEFWX0xPR19JTkZPLCAiXCIlc1wiIiwgCj4+IG9wdC0+ ZGVmYXVsdF92YWwuc3RyKTsKPj4gKyAgICAgICAgICAgICAgICBicmVhazsKPj4gKyNpZiBGRl9B UElfT0xEX0NIQU5ORUxfTEFZT1VUCj4+ICtGRl9ESVNBQkxFX0RFUFJFQ0FUSU9OX1dBUk5JTkdT Cj4+ICsgICAgICAgICAgICBjYXNlIEFWX09QVF9UWVBFX0NIQU5ORUxfTEFZT1VUOgo+PiArICAg ICAgICAgICAgICAgIGF2X2xvZyhhdl9sb2dfb2JqLCBBVl9MT0dfSU5GTywgIjB4JSJQUkl4NjQs IAo+PiBvcHQtPmRlZmF1bHRfdmFsLmk2NCk7Cj4+ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ ICtGRl9FTkFCTEVfREVQUkVDQVRJT05fV0FSTklOR1MKPj4gKyNlbmRpZgo+PiArICAgICAgICAg ICAgfQo+PiArICAgICAgICAgICAgYXZfbG9nKGF2X2xvZ19vYmosIEFWX0xPR19JTkZPLCAiKSIp Owo+PiArICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgYXZfbG9nKGF2X2xvZ19vYmosIEFWX0xP R19JTkZPLCAiXG4iKTsKPj4gKyAgICAgICAgaWYgKG9wdC0+dW5pdCAmJiBvcHQtPnR5cGUgIT0g QVZfT1BUX1RZUEVfQ09OU1QpCj4+ICsgICAgICAgICAgICBhcmdfbGlzdChvYmosIGF2X2xvZ19v YmosIG9wdC0+dW5pdCwgb3B0LT50eXBlKTsKPj4gKyAgICB9Cj4+ICt9Cj4+ICsKPgo+Cj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBmZm1wZWctZGV2 ZWwgbWFpbGluZyBsaXN0Cj4gZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKPiBodHRwczovL2ZmbXBl Zy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKPgo+IFRvIHVuc3Vic2NyaWJlLCB2 aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbAo+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5v cmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRl dmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVn LWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVn LWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K