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 E7EEB4AA33 for ; Fri, 7 Jun 2024 03:33:43 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1FA5368D72F; Fri, 7 Jun 2024 06:33:40 +0300 (EEST) Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 78BB768D622 for ; Fri, 7 Jun 2024 06:33:33 +0300 (EEST) Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-57a7dc13aabso1986759a12.0 for ; Thu, 06 Jun 2024 20:33:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717731212; x=1718336012; darn=ffmpeg.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=X+lDu0ajCVY3qFyBG82aDqT/hsbeO0OJX7WlAetfyx0=; b=CqIymb9EIVX/jf9dnUJBT54QXhgZ83mt80EsQ8QG+RVajMBAepTqA5k6BOMB/Aw8yn KSAqF7UgT5bF1WC1ru04xN1MG1wJBllkLl39afdfHsOyGu2duQOilfgBzwSVRTsaefX6 ec/iESo+o7vnuN4H8sBJt90gJqFwfMt3N8JWqwlvOYcLyC/pDPSjPB2LAq0Efg87YZaJ gVa9I+iLIgAGfSXD9bEz8AxtJIg8jlgvYiE2Jq6yp0oY7wUdDkgC96Mru9Rz5t+iEHz2 qvAsYIB+OfLg4QvkWRMQw+ayzvskIIBnCZwkSGtbrFldu67oqMQsqDLcLF7TQOTh3ZpU aERg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717731212; x=1718336012; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=X+lDu0ajCVY3qFyBG82aDqT/hsbeO0OJX7WlAetfyx0=; b=Qdguvj9kcIcYV4yTZ0NtjFlYoMfdV1ZwTvk4SDdeQsErgHQdZyRIM1CbN4jybVJXvN /sXYKo+NWRNXvqWH0zualNPK5kBDDlNnvPYtLvqEPSv/q3quxaCuZNq5Vl+fzejtpha+ dMi42XDIzC6q2muzm5CXIjChQU3j+qPUtjIywS36inZRh32HhMHqc44CGRC9me7ULAXp sDN4C3jUgvm/2ZQGUpzTmHa1fN0hwwZx4T39VGCt9apCwLmiUr15AObZEm/HUm+F+tBx p0G6irnOjYl1H/ejNEg27S2oHAw1LQ+TI2Y0OOClAlWRqSZ1XJ+LopwJLTSrbTbleg9b Ygaw== X-Gm-Message-State: AOJu0YwFD6TL0HxAodK12g6UiDI9wO2XhyhE0ISk/vbc0tv1C44AfjXA /XHmtp/kdbtEZ2RFg9WR+I1j0ksH5vhRtJD5EnjgS4ANf+1kNNU55RmW4nMgQuANPhe3pYK0LRF VrFt63hu+dA5lU/jewO4nbal3IHw= X-Google-Smtp-Source: AGHT+IGPbWrvaPdwCV7d/yc5qm5ADD57EQWHNAry+8aReEmsTudVXO07HFTYwoNvwpZLl/kdCodu3/n7NJOxy1IhFKE= X-Received: by 2002:a05:6402:342:b0:57c:489b:b26e with SMTP id 4fb4d7f45d1cf-57c509797b0mr698458a12.36.1717731212328; Thu, 06 Jun 2024 20:33:32 -0700 (PDT) MIME-Version: 1.0 References: <20240606115100.44233-1-hiccupzhu@gmail.com> In-Reply-To: From: Shiqi Zhu Date: Fri, 7 Jun 2024 11:33:20 +0800 Message-ID: To: Zhao Zhili Subject: Re: [FFmpeg-devel] [PATCH] avfilter: add sdlvsink for video display 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 Cc: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: T24gRnJpLCA3IEp1biAyMDI0IGF0IDEwOjMyLCBaaGFvIFpoaWxpIDxxdWlua2JsYWNrQGZveG1h aWwuY29tPiB3cm90ZToKPgo+Cj4KPiA+IE9uIEp1biA3LCAyMDI0LCBhdCAxMDoxMiwgSGljY3Vw IFpodSA8aGljY3Vwemh1QGdtYWlsLmNvbT4gd3JvdGU6Cj4gPgo+ID4gT24gVGh1LCA2IEp1biAy MDI0IGF0IDIwOjIwLCBaaGFvIFpoaWxpIDxxdWlua2JsYWNrQGZveG1haWwuY29tPiB3cm90ZToK PiA+Pgo+ID4+Cj4gPj4gT24gSnVuIDYsIDIwMjQsIGF0IDE5OjUxLCBTaGlxaSBaaHUgPGhpY2N1 cHpodUBnbWFpbC5jb20+IHdyb3RlOgo+ID4+Cj4gPj4KPiA+PiBJ4oCZbSBhZnJhaWQgdGhpcyBo YXMgdGhlIHNhbWUgaXNzdWUgYXMgbGliYXZkZXZpY2Uvc2RsWzFdLgo+ID4+Cj4gPj4gWzFdIGh0 dHBzOi8vcGF0Y2h3b3JrLmZmbXBlZy5vcmcvcHJvamVjdC9mZm1wZWcvcGF0Y2gvMjAyMzA5MTgw NjM3MjguMTk4Mzc3LTEtaGFpaGFvLnhpYW5nQGludGVsLmNvbS8KPiA+Pgo+ID4KPiA+IFRoYW5r IHlvdSBmb3IgdGhlIHJlbWluZGVyLiBUaGlzIHBhdGNoIGRvZXMgbm90IGhhdmUgdGhhdCBpc3N1 ZS4gQWxsCj4gPiBTREwgaW5pdGlhbGl6YXRpb24gaXMgd2l0aGluIHRoZSBmaWx0ZXJfZnJhbWUo KSBmdW5jdGlvbiwgc28gdGhlcmUncwo+ID4gbm8gcHJvYmxlbSB3aXRoIGRpZmZlcmVudCB0aHJl YWRzIGJlaW5nIGNyZWF0ZWQuCj4KPiBJbml0aWFsaXphdGlvbiBhbmQgcmVuZGVyIGluIHRoZSBz YW1lIHRocmVhZCBpcyBvbmUgb2YgdGhlIGlzc3Vlcy4gQW5vdGhlcgo+IGlzc3VlIGlzIFNETCBy ZW5kZXIgc2hvdWxkIGJlIHJ1biBpbiBtYWluIHRocmVhZC4gTWF5YmUgaXTigJlzIG5vdCB0aGUK PiBkdXR5IG9mIHRoaXMgZmlsdGVyIHRvIGNvbnRyb2wgd2hpY2ggdGhyZWFkIHRvIGJlIGNhbGxl ZCwgYnV0IHRoaXMgd291bGRu4oCZdAo+IHdvcmsgd2l0aCBmZm1wZWcgY21kLgo+ClllcywgSSBh Z3JlZSB3aXRoIHlvdXIgb3Bpbmlvbi4gVGhlIGNvbnRyb2wgb2YgdGhlIGZpbHRlciBzaG91bGQg YmUKbGVmdCB0byB0aGUgYXBwbGljYXRpb24sIGFuZCB0aGUgZmZtcGVnIGNvbW1hbmQgc2hvdWxk IG9ubHkgc2VydmUgdGhlCnB1cnBvc2Ugb2YgZGVtb25zdHJhdGluZyBmdW5jdGlvbmFsaXR5LgoK PiA+Cj4gPiBGdXJ0aGVybW9yZSwgbXkgZXhwZXJ0aXNlIGxpZXMgcHJpbWFyaWx5IGluIG11bHRp bWVkaWEgZnJhbWV3b3JrCj4gPiBkZXZlbG9wbWVudC4gSSd2ZSBub3RpY2VkIHRoYXQgdGhlIGxp YmF2ZmlsdGVyIG5vdyBvZmZlcnMgYQo+ID4gY29tcHJlaGVuc2l2ZSBiYXNpYyBmcmFtZXdvcmss IHByb3ZpZGluZyB2YXJpb3VzIHR5cGVzIG9mIGZpbHRlcnMgc3VjaAo+ID4gYXMgc3JjLCB0cmFu cywgYW5kIHNpbmsgd2l0aGluIHRoZSBmaWx0ZXItZ3JhcGguCj4KPiBsaWJhdmRldmljZS9zZGwg c2hvdWxkIHdvcmsgZm9yIHRoaXMgY2FzZSwgYWx0aG91Z2ggaXTigJlzIGRlcHJlY2F0ZWQsCj4g YW5kIGl0IHN1cHBvcnQgbW9yZSBwaXhlbCBmb3JtYXRzIHRoYW4gY3VycmVudCBwYXRjaC4KPgpP ZiBjb3Vyc2UsIGluIHRoZSBuZXh0IHBhdGNoLCBJIHdpbGwgZXhwYW5kIHRoZSBwaXhlbCBmb3Jt YXQsIHByb3ZpZGVkCnRoYXQgdGhpcyBzaW5rLWZpbHRlciBpcyBtZWFuaW5nZnVsIGZvciB0aGUg ZW50aXJlIHByb2plY3QgYW5kIGNhbiBiZQptZXJnZWQgaW50byB0aGUgbWFzdGVyIGJyYW5jaC4K Cj4gVEJILCBhIHZpZGVvc2luayBpbiBsaWJhdmZpbHRlciBtYWtlIHNlbnNlIHRoYW4gbGliYXZk ZXZpY2UuIEJ1dCB3aXRoCj4gdGhlIHJlYXNvbnMgbWVudGlvbmVkIGVhcmxpZXIsIEkgZG9u4oCZ dCBrbm93IGhvdyB0byBtYWtlIHByb2dyZXNzLgo+ClRoYW5rcyB5b3UgZm9yIHlvdXIgY29tbWVu dHMuIEkgYmVsaWV2ZSB0aGVyZSBhcmUgbWFueSBleHBlcmllbmNlZAplbmdpbmVlcnMgaW4gdGhl IGNvbW11bml0eSB3aXRoIHdob20gd2UgY2FuIGNvbGxlY3RpdmVseSBkaXNjdXNzIHRoaXMKaXNz dWUgYW5kIHRoZW4gcHVzaCB0aGUgcGF0Y2ggZm9yd2FyZCB0b2dldGhlci4KCj4gPgo+ID4gVGhl cmUgYXJlIGFscmVhZHkgbWFueSBzcmMgYW5kIHRyYW5zIHR5cGUgZmlsdGVycyBpbiB0aGUgZXhp c3RpbmcKPiA+IGNvZGViYXNlLCB3aXRoIHJpY2ggZnVuY3Rpb25hbGl0aWVzLiBIb3dldmVyLCB0 aGVyZSBhcmUgb25seSB0d28gc2luawo+ID4gZmlsdGVyczogYnVmZmVyc2luayBhbmQgbnVsbHNp bmssIHdoaWNoIGlzIG5vdCBxdWl0ZSBzdWZmaWNpZW50IGZvcgo+ID4gdGhlIGRldmVsb3BtZW50 IG9mIGZpbHRlci1ncmFwaHMuCj4gPgo+ID4gVGh1cywgSSBzdWJtaXR0ZWQgdGhpcyBwYXRjaCB3 aXRoIHRoZSBpbnRlbnRpb24gb2YgZW5yaWNoaW5nIHRoZSB0eXBlcwo+ID4gb2Ygc2luayBmaWx0 ZXJzIGF2YWlsYWJsZS4KPiA+Cj4gPiBNYW55IHRoYW5rcyBmb3IgeW91ciB2YWx1YWJsZSBjb21t ZW50cy4KPiA+Cj4gPj4KPiA+PiBTaWduZWQtb2ZmLWJ5OiBTaGlxaSBaaHUgPGhpY2N1cHpodUBn bWFpbC5jb20+Cj4gPj4gLS0tCj4gPj4gY29uZmlndXJlICAgICAgICAgICAgICAgICAgICB8ICAg MSArCj4gPj4gbGliYXZmaWx0ZXIvTWFrZWZpbGUgICAgICAgICB8ICAgMSArCj4gPj4gbGliYXZm aWx0ZXIvYWxsZmlsdGVycy5jICAgICB8ICAgMSArCj4gPj4gbGliYXZmaWx0ZXIvdnNpbmtfc2Rs dnNpbmsuYyB8IDE0MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4+IDQg ZmlsZXMgY2hhbmdlZCwgMTQ1IGluc2VydGlvbnMoKykKPiA+PiBjcmVhdGUgbW9kZSAxMDA2NDQg bGliYXZmaWx0ZXIvdnNpbmtfc2RsdnNpbmsuYwo+ID4+Cj4gPj4gZGlmZiAtLWdpdCBhL2NvbmZp Z3VyZSBiL2NvbmZpZ3VyZQo+ID4+IGluZGV4IDZjNWI4YWFiOWEuLjk2OGI1Yzg5MTIgMTAwNzU1 Cj4gPj4gLS0tIGEvY29uZmlndXJlCj4gPj4gKysrIGIvY29uZmlndXJlCj4gPj4gQEAgLTM5Nzcs NiArMzk3Nyw3IEBAIHhzdGFja19xc3ZfZmlsdGVyX2RlcHM9ImxpYm1meCIKPiA+PiB4c3RhY2tf cXN2X2ZpbHRlcl9zZWxlY3Q9InFzdnZwcCIKPiA+PiBwYWRfdmFhcGlfZmlsdGVyX2RlcHM9InZh YXBpXzEiCj4gPj4gZHJhd2JveF92YWFwaV9maWx0ZXJfZGVwcz0idmFhcGlfMSIKPiA+PiArc2Rs dnNpbmtfZmlsdGVyX2RlcHM9InNkbDIiCj4gPj4KPiA+PiAjIGV4YW1wbGVzCj4gPj4gYXZpb19o dHRwX3NlcnZlX2ZpbGVzX2RlcHM9ImF2Zm9ybWF0IGF2dXRpbCBmb3JrIgo+ID4+IGRpZmYgLS1n aXQgYS9saWJhdmZpbHRlci9NYWtlZmlsZSBiL2xpYmF2ZmlsdGVyL01ha2VmaWxlCj4gPj4gaW5k ZXggNTk5MmZkMTYxZi4uZmVhYzZiNDY0ZCAxMDA2NDQKPiA+PiAtLS0gYS9saWJhdmZpbHRlci9N YWtlZmlsZQo+ID4+ICsrKyBiL2xpYmF2ZmlsdGVyL01ha2VmaWxlCj4gPj4gQEAgLTYxNiw2ICs2 MTYsNyBAQCBPQkpTLSQoQ09ORklHX1lVVlRFU1RTUkNfRklMVEVSKSAgICAgICAgICAgICArPSB2 c3JjX3Rlc3RzcmMubwo+ID4+IE9CSlMtJChDT05GSUdfWk9ORVBMQVRFX0ZJTFRFUikgICAgICAg ICAgICAgICs9IHZzcmNfdGVzdHNyYy5vCj4gPj4KPiA+PiBPQkpTLSQoQ09ORklHX05VTExTSU5L X0ZJTFRFUikgICAgICAgICAgICAgICArPSB2c2lua19udWxsc2luay5vCj4gPj4gK09CSlMtJChD T05GSUdfU0RMVlNJTktfRklMVEVSKSAgICAgICAgICAgICAgICs9IHZzaW5rX3NkbHZzaW5rLm8K PiA+Pgo+ID4+ICMgbXVsdGltZWRpYSBmaWx0ZXJzCj4gPj4gT0JKUy0kKENPTkZJR19BM0RTQ09Q RV9GSUxURVIpICAgICAgICAgICAgICAgKz0gYXZmX2EzZHNjb3BlLm8KPiA+PiBkaWZmIC0tZ2l0 IGEvbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jIGIvbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jCj4g Pj4gaW5kZXggYzUzMjY4MmZjMi4uZDVmOTQyZmZiNSAxMDA2NDQKPiA+PiAtLS0gYS9saWJhdmZp bHRlci9hbGxmaWx0ZXJzLmMKPiA+PiArKysgYi9saWJhdmZpbHRlci9hbGxmaWx0ZXJzLmMKPiA+ PiBAQCAtNTc5LDYgKzU3OSw3IEBAIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92c3JjX3l1dnRl c3RzcmM7Cj4gPj4gZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZzcmNfem9uZXBsYXRlOwo+ID4+ Cj4gPj4gZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZzaW5rX251bGxzaW5rOwo+ID4+ICtleHRl cm4gY29uc3QgQVZGaWx0ZXIgZmZfdnNpbmtfc2RsdnNpbms7Cj4gPj4KPiA+PiAvKiBtdWx0aW1l ZGlhIGZpbHRlcnMgKi8KPiA+PiBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfYXZmX2EzZHNjb3Bl Owo+ID4+IGRpZmYgLS1naXQgYS9saWJhdmZpbHRlci92c2lua19zZGx2c2luay5jIGIvbGliYXZm aWx0ZXIvdnNpbmtfc2RsdnNpbmsuYwo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPj4gaW5k ZXggMDAwMDAwMDAwMC4uNjMwZjcxOWM3ZQo+ID4+IC0tLSAvZGV2L251bGwKPiA+PiArKysgYi9s aWJhdmZpbHRlci92c2lua19zZGx2c2luay5jCj4gPj4gQEAgLTAsMCArMSwxNDIgQEAKPiA+PiAr LyoKPiA+PiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgo+ID4+ICsgKgo+ID4+ICsg KiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y Cj4gPj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu ZXJhbCBQdWJsaWMKPiA+PiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCj4gPj4gKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNl bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ID4+ICsgKgo+ID4+ ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKPiA+PiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKPiA+PiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKPiA+PiArICogTGVzc2VyIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiA+PiArICoKPiA+PiArICog WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYwo+ID4+ICsgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4gPj4gKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r bGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKPiA+PiAr ICovCj4gPj4gKwo+ID4+ICsjaW5jbHVkZSAiYXZmaWx0ZXIuaCIKPiA+PiArI2luY2x1ZGUgImlu dGVybmFsLmgiCj4gPj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvaW50ZXJuYWwuaCIKPiA+PiArI2lu Y2x1ZGUgPFNETDIvU0RMLmg+Cj4gPj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4KPiA+PiArCj4gPj4g K3R5cGVkZWYgc3RydWN0IHsKPiA+PiArICAgIFNETF9XaW5kb3cgICAqd2luZG93Owo+ID4+ICsg ICAgU0RMX1JlbmRlcmVyICpyZW5kZXI7Cj4gPj4gKyAgICBTRExfVGV4dHVyZSAgKnRleHR1cmU7 Cj4gPj4gK30gU0RMVmlkZW9Db250ZXh0Owo+ID4+ICsKPiA+PiArc3RhdGljIGludCBpbml0KEFW RmlsdGVyQ29udGV4dCAqY3R4KQo+ID4+ICt7Cj4gPj4gKyAgICBpZiAoU0RMX0luaXQoU0RMX0lO SVRfVklERU8pIDwgMCkKPiA+PiArICAgIHsKPiA+PiArICAgICAgICBhdl9sb2coY3R4LCBBVl9M T0dfRVJST1IsICJTREwyIGNvdWxkIG5vdCBpbml0aWFsaXplISAlc1xuIiwgU0RMX0dldEVycm9y KCkpOwo+ID4+ICsgICAgICAgIHJldHVybiAtRU5PTUVNOwo+ID4+ICsgICAgfQo+ID4+ICsKPiA+ PiArICAgIFNETF9Qb2xsRXZlbnQoTlVMTCk7Cj4gPj4gKyAgICBTRExfU2V0SGludChTRExfSElO VF9WSURFT19YMTFfTkVUX1dNX0JZUEFTU19DT01QT1NJVE9SLCAiMCIpOwo+ID4+ICsKPiA+PiAr ICAgIHJldHVybiAwOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICtzdGF0aWMgdm9pZCB1bmluaXQoQVZG aWx0ZXJDb250ZXh0ICpjdHgpCj4gPj4gK3sKPiA+PiArICAgIFNETFZpZGVvQ29udGV4dCAqc2lu ayA9IGN0eC0+cHJpdjsKPiA+PiArCj4gPj4gKyAgICBpZiAoc2luay0+dGV4dHVyZSkgewo+ID4+ ICsgICAgICAgIFNETF9EZXN0cm95VGV4dHVyZShzaW5rLT50ZXh0dXJlKTsKPiA+PiArICAgICAg ICBzaW5rLT50ZXh0dXJlID0gTlVMTDsKPiA+PiArICAgIH0KPiA+PiArCj4gPj4gKyAgICBpZiAo c2luay0+cmVuZGVyKSB7Cj4gPj4gKyAgICAgICAgU0RMX0Rlc3Ryb3lSZW5kZXJlcihzaW5rLT5y ZW5kZXIpOwo+ID4+ICsgICAgICAgIHNpbmstPnJlbmRlciA9IE5VTEw7Cj4gPj4gKyAgICB9Cj4g Pj4gKwo+ID4+ICsgICAgaWYgKHNpbmstPndpbmRvdykgewo+ID4+ICsgICAgICAgIFNETF9EZXN0 cm95V2luZG93KHNpbmstPndpbmRvdyk7Cj4gPj4gKyAgICAgICAgc2luay0+d2luZG93ID0gTlVM TDsKPiA+PiArICAgIH0KPiA+PiArCj4gPj4gKyAgICBTRExfUXVpdCgpOwo+ID4+ICt9Cj4gPj4g Kwo+ID4+ICtzdGF0aWMgaW50IGZpbHRlcl9mcmFtZShBVkZpbHRlckxpbmsgKmxpbmssIEFWRnJh bWUgKmZyYW1lKQo+ID4+ICt7Cj4gPj4gKyAgICBBVkZpbHRlckNvbnRleHQgKmN0eCA9IGxpbmst PmRzdDsKPiA+PiArICAgIFNETFZpZGVvQ29udGV4dCAqc2luayA9IGN0eC0+cHJpdjsKPiA+PiAr ICAgIFNETF9SZW5kZXJlckluZm8gcmVuZGVyZXJfaW5mbzsKPiA+PiArCj4gPj4gKyAgICBpZiAo IXNpbmstPndpbmRvdykgewo+ID4+ICsgICAgICAgIHNpbmstPndpbmRvdyA9IFNETF9DcmVhdGVX aW5kb3coIllVViBQbGF5ZXIiLAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFNETF9XSU5ET1dQT1NfVU5ERUZJTkVELCBTRExfV0lORE9XUE9TX1VOREVGSU5F RCwKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ d2lkdGgsIGZyYW1lLT5oZWlnaHQsIFNETF9XSU5ET1dfU0hPV04gfCBTRExfV0lORE9XX1JFU0la QUJMRSk7Cj4gPj4gKyAgICAgICAgaWYgKCFzaW5rLT53aW5kb3cpIHsKPiA+PiArICAgICAgICAg ICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiU0RMMiBjb3VsZCBub3QgY3JlYXRlIHdpbmRv dyAlc1xuIiwgU0RMX0dldEVycm9yKCkpOwo+ID4+ICsgICAgICAgICAgICByZXR1cm4gLUVOT01F TTsKPiA+PiArICAgICAgICB9Cj4gPj4gKyAgICB9Cj4gPj4gKwo+ID4+ICsgICAgaWYgKCFzaW5r LT5yZW5kZXIpIHsKPiA+PiArICAgICAgICBzaW5rLT5yZW5kZXIgPSBTRExfQ3JlYXRlUmVuZGVy ZXIoc2luay0+d2luZG93LCAtMSwgMCk7Cj4gPj4gKyAgICAgICAgaWYgKCFzaW5rLT5yZW5kZXIp IHsKPiA+PiArICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLCAiU0RMMiBjb3Vs ZCBub3QgY3JlYXRlIHJlbmRlciAlc1xuIiwgU0RMX0dldEVycm9yKCkpOwo+ID4+ICsgICAgICAg ICAgICByZXR1cm4gLUVOT01FTTsKPiA+PiArICAgICAgICB9Cj4gPj4gKyAgICAgICAgU0RMX1Nl dEhpbnQoU0RMX0hJTlRfUkVOREVSX1NDQUxFX1FVQUxJVFksICJsaW5lYXIiKTsKPiA+PiArCj4g Pj4gKyAgICAgICAgU0RMX0dldFJlbmRlcmVySW5mbyhzaW5rLT5yZW5kZXIsICZyZW5kZXJlcl9p bmZvKTsKPiA+PiArICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfSU5GTywgInNkbDIgcmVuZGVy ZXIgbmFtZTolc1xuIiwgcmVuZGVyZXJfaW5mby5uYW1lKTsKPiA+PiArICAgIH0KPiA+PiArCj4g Pj4gKyAgICBpZiAoIXNpbmstPnRleHR1cmUpIHsKPiA+PiArICAgICAgICBzaW5rLT50ZXh0dXJl ID0gU0RMX0NyZWF0ZVRleHR1cmUoc2luay0+cmVuZGVyLCBTRExfUElYRUxGT1JNQVRfSVlVViwK PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNETF9URVhU VVJFQUNDRVNTX1NUUkVBTUlORywgZnJhbWUtPndpZHRoLCBmcmFtZS0+aGVpZ2h0KTsKPiA+PiAr ICAgICAgICBpZiAoIXNpbmstPnRleHR1cmUpIHsKPiA+PiArICAgICAgICAgICAgYXZfbG9nKGN0 eCwgQVZfTE9HX0VSUk9SLCAiY3JlYXRlIHRleHR1cmUgZmFpbGVkICVzXG4iLCBTRExfR2V0RXJy b3IoKSk7Cj4gPj4gKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4+ICsgICAgICAgIH0K PiA+PiArICAgIH0KPiA+PiArCj4gPj4gKyAgICBTRExfVXBkYXRlWVVWVGV4dHVyZShzaW5rLT50 ZXh0dXJlLCBOVUxMLAo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmRhdGFb MF0sIGZyYW1lLT5saW5lc2l6ZVswXSwKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgIGZy YW1lLT5kYXRhWzFdLCBmcmFtZS0+bGluZXNpemVbMV0sCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICBmcmFtZS0+ZGF0YVsyXSwgZnJhbWUtPmxpbmVzaXplWzJdKTsKPiA+PiArCj4gPj4g KyAgICBTRExfUmVuZGVyQ2xlYXIoc2luay0+cmVuZGVyKTsKPiA+PiArCj4gPj4gKyAgICBTRExf UmVuZGVyQ29weShzaW5rLT5yZW5kZXIsIHNpbmstPnRleHR1cmUsIE5VTEwsIE5VTEwpOwo+ID4+ ICsgICAgU0RMX1JlbmRlclByZXNlbnQoc2luay0+cmVuZGVyKTsKPiA+PiArCj4gPj4gKyAgICBh dl9mcmFtZV9mcmVlKCZmcmFtZSk7Cj4gPj4gKwo+ID4+ICsgICAgcmV0dXJuIDA7Cj4gPj4gK30K PiA+PiArCj4gPj4gK3N0YXRpYyBjb25zdCBBVkZpbHRlclBhZCBhdmZpbHRlcl92c2lua19zZGx2 c2lua19pbnB1dHNbXSA9IHsKPiA+PiArICAgIHsKPiA+PiArICAgICAgICAubmFtZSAgICAgICAg PSAiZGVmYXVsdCIsCj4gPj4gKyAgICAgICAgLnR5cGUgICAgICAgID0gQVZNRURJQV9UWVBFX1ZJ REVPLAo+ID4+ICsgICAgICAgIC5maWx0ZXJfZnJhbWUgPSBmaWx0ZXJfZnJhbWUsCj4gPj4gKyAg ICB9LAo+ID4+ICt9Owo+ID4+ICsKPiA+PiArc3RhdGljIGNvbnN0IEFWRmlsdGVyUGFkIGF2Zmls dGVyX3ZzaW5rX3NkbHZzaW5rX291dHB1dHNbXSA9IHsKPiA+PiArICAgIHsKPiA+PiArICAgICAg ICAubmFtZSA9IE5VTEwsCj4gPj4gKyAgICAgICAgLnR5cGUgPSBBVk1FRElBX1RZUEVfVklERU8s Cj4gPj4gKyAgICB9LAo+ID4+ICt9Owo+ID4+ICsKPiA+PiArY29uc3QgQVZGaWx0ZXIgZmZfdnNp bmtfc2RsdnNpbmsgPSB7Cj4gPj4gKyAgICAubmFtZSAgICAgICAgPSAic2RsdnNpbmsiLAo+ID4+ ICsgICAgLmRlc2NyaXB0aW9uID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIkRvIGFic29sdXRlbHkg bm90aGluZyB3aXRoIHRoZSBpbnB1dCB2aWRlby4iKSwKPiA+PiArICAgIC5wcml2X3NpemUgICA9 IHNpemVvZihTRExWaWRlb0NvbnRleHQpLAo+ID4+ICsgICAgLmluaXQgICAgICAgID0gaW5pdCwK PiA+PiArICAgIC51bmluaXQgICAgICA9IHVuaW5pdCwKPiA+PiArICAgIEZJTFRFUl9JTlBVVFMo YXZmaWx0ZXJfdnNpbmtfc2RsdnNpbmtfaW5wdXRzKSwKPiA+PiArICAgIEZJTFRFUl9PVVRQVVRT KGF2ZmlsdGVyX3ZzaW5rX3NkbHZzaW5rX291dHB1dHMpLAo+ID4+ICt9Owo+ID4+IC0tCj4gPj4g Mi4zNC4xCj4gPj4KPiA+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+ID4+IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+PiBmZm1wZWctZGV2ZWxA ZmZtcGVnLm9yZwo+ID4+IGh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBl Zy1kZXZlbAo+ID4+Cj4gPj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVt YWlsCj4gPj4gZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVu c3Vic2NyaWJlIi4KPiA+Pgo+ID4+Cj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZt cGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwK ClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwt cmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=