From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id ADB1A4BAFF for ; Wed, 2 Jul 2025 05:17:14 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id A3BE968D674; Wed, 2 Jul 2025 08:17:09 +0300 (EEST) Received: from mail-ua1-f47.google.com (mail-ua1-f47.google.com [209.85.222.47]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id CAB6F68C6C8 for ; Wed, 2 Jul 2025 08:17:02 +0300 (EEST) Received: by mail-ua1-f47.google.com with SMTP id a1e0cc1a2514c-87f36c458afso2302247241.1 for ; Tue, 01 Jul 2025 22:17:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751433421; x=1752038221; 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=WWHJOe/k/lY6x62LoV0DoiqjQBwhql8/RocASgxv5Ko=; b=IfX/CLwXX72fYk81Jrriga71OD6+sgpxZcYfE9j7lJyiHpGmQAw2+BKQfE1GLD7EXi FwkKq3lv1iskCpqlh0RkYUbPFQhXmRAFieKeiCtPFbbta6ef6dhEnvv74c9au9h8kUvg CmXmKgg6TjewVtS6ARpBeNUtMSsXwSmFvRDv8eFwkpD8vO4Vvtt+3G3VsfdrkPKjuDy8 FDCk0R/F/X9swtAjEn2rKX1wvROPppUTcze7aHtyCk18VkqWHar+JXR61cbD/t1Jq1SB HeRO118ESKCJS+RJI+Y2bTFNCk+i0vHL/TwiER6NBSBFoUWLCzhdClwuFKra2mTp7BoG IJIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751433421; x=1752038221; 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=WWHJOe/k/lY6x62LoV0DoiqjQBwhql8/RocASgxv5Ko=; b=BQ2Fc8buLCWS+rYEDQcmLtIeFicCkibHbymP3KB+CJ7+ed5t9/vGYg8mMt2l92Be3P 4yZdfc6NxlyqRDNYBW4IaNwyBfjKqUZmrMDTHlIEPHmAZleklaOSI/lyQ6O4rH6hWapu ky5q8Q8fRTRc5+EzWmL7q9IxsyoTxA0EBoCbee+rm9ubcIiTNDgLYq8CCzLJn4sonX9e 4Fa2n98oYFQqcCQVXawexnFAgDwSopeXVJKoxmFiPJF4SmenycYUmDaptVEXlqDDvRML ThDnG4X3TJN7grthm8xdcmgAjjtaR1Yec/G8UoPL9pHm82uyNIrLqGNOUWTIy3NU3XrV Lv8A== X-Gm-Message-State: AOJu0YzfqXizNbDrXBNzAGThBrwvPykFLieB80SpdznD6f0YcRCzJ4fV 7SXwfHgSzCtMR1tBqZsWk3vgNxwxurMSGwGge+aMfZj1KPtTOHu6GOmPmaXa/USuaB9IwWkgfam EH6eBZ1qzavgQY90I9ZEQSoSo4iFlTl6wYw== X-Gm-Gg: ASbGncuzQW6GZadab8KxA3hgI9WpEF5HZzroNBks6e13c8+y7KXcf94SRETM1l7fgH7 dKI/fnKhxXuMmG/nhy93diF5Ps9deVQbv7qJfn/wswFIXDUoo9Csdw/STflXu5vu4QYM1Hw5tav kNXFH3vey6f+HiwMtYgXyeSkOi9wwnbVTdkE0u/lQSZg== X-Google-Smtp-Source: AGHT+IFFJ0Kh93sz9ekRUR+85uZxL3gGgClI0J8DXK0BLoKJGrBtcET6M8xn8HnjVj55A0/jEdA4fKx9BOuQe/QDsOo= X-Received: by 2002:a05:6102:3a13:b0:4e6:ddd0:96fc with SMTP id ada2fe7eead31-4f16135e95fmr529071137.18.1751433420602; Tue, 01 Jul 2025 22:17:00 -0700 (PDT) MIME-Version: 1.0 References: <20250702042505.72292-1-jacklau1222@qq.com> <20250702042505.72292-2-jacklau1222@qq.com> <20250702042505.72292-3-jacklau1222@qq.com> <20250702042505.72292-4-jacklau1222@qq.com> <20250702042505.72292-5-jacklau1222@qq.com> <20250702042505.72292-6-jacklau1222@qq.com> <20250702042505.72292-7-jacklau1222@qq.com> In-Reply-To: <20250702042505.72292-7-jacklau1222@qq.com> From: Steven Liu Date: Wed, 2 Jul 2025 13:16:48 +0800 X-Gm-Features: Ac12FXzSHJQbD5jgYWG7ylp4uB3heuUMsA1KOX5CBuefJMaB6jaSY48scUsFxM4 Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH 6/6] avformat/whip: implement NACK and RTX suppport 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: Sergio Garcia Murillo , Jack Lau 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: SmFjayBMYXUgPGphY2tsYXUxMjIyZ20tYXQtZ21haWwuY29tQGZmbXBlZy5vcmc+IOS6jjIwMjXl ubQ35pyIMuaXpeWRqOS4iSAxMjozNeWGmemBk++8mgo+Cj4gUlRQIHJldHJhbnNtaXNzaW9uIGRl c2NyaWJlZCBpbiBSRkM0NTg4IChSVFgpIGlzIGFuIGVmZmVjdGl2ZSBwYWNrZXQKPiBsb3NzIHJl Y292ZXJ5IHRlY2huaXF1ZSBmb3IgcmVhbC10aW1lIGFwcGxpY2F0aW9ucyB3aXRoIHJlbGF4ZWQg ZGVsYXkgYm91bmRzLgo+Cj4gVGhpcyBwYXRjaCBwcm92aWRlcyBhIG1pbmltYWwgaW1wbGVtZW50 YXRpb24gZm9yIFJUWCBhbmQgUlRDUCBOQUNLIChSRkMzOTQwKQo+IGFuZCBpdHMgYXNzb2NpYXRl ZCBTRFAgc2lnbmFsaW5nIGFuZCBuZWdvdGlhdGlvbi4KPgo+IENvLWF1dGhvcmVkLWJ5OiBTZXJn aW8gR2FyY2lhIE11cmlsbG8gPHNlcmdpby5nYXJjaWEubXVyaWxsb0BnbWFpbC5jb20+Cj4gU2ln bmVkLW9mZi1ieTogSmFjayBMYXUgPGphY2tsYXUxMjIyQHFxLmNvbT4KPiAtLS0KPiAgbGliYXZm b3JtYXQvd2hpcC5jIHwgMTk4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLQo+ICAxIGZpbGUgY2hhbmdlZCwgMTk1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25z KC0pCj4KPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvd2hpcC5jIGIvbGliYXZmb3JtYXQvd2hp cC5jCj4gaW5kZXggMTVkMWRlNjkxZS4uYTMyMTc3ZTBiNCAxMDA2NDQKPiAtLS0gYS9saWJhdmZv cm1hdC93aGlwLmMKPiArKysgYi9saWJhdmZvcm1hdC93aGlwLmMKPiBAQCAtMTE0LDYgKzExNCw3 IEBACj4gIC8qIFJlZmVycmluZyB0byBDaHJvbWUncyBkZWZpbml0aW9uIG9mIFJUUCBwYXlsb2Fk IHR5cGVzLiAqLwo+ICAjZGVmaW5lIFdISVBfUlRQX1BBWUxPQURfVFlQRV9IMjY0IDEwNgo+ICAj ZGVmaW5lIFdISVBfUlRQX1BBWUxPQURfVFlQRV9PUFVTIDExMQo+ICsjZGVmaW5lIFdISVBfUlRQ X1BBWUxPQURfVFlQRV9SVFggIDEwNQo+Cj4gIC8qKgo+ICAgKiBUaGUgU1RVTiBtZXNzYWdlIGhl YWRlciwgd2hpY2ggaXMgMjAgYnl0ZXMgbG9uZywgY29tcHJpc2VzIHRoZQo+IEBAIC0xNTAsNiAr MTUxLDExIEBACj4gICNkZWZpbmUgV0hJUF9TRFBfU0VTU0lPTl9JRCAiNDQ4OTA0NTE0MTY5Mjc5 OTM1OSIKPiAgI2RlZmluZSBXSElQX1NEUF9DUkVBVE9SX0lQICIxMjcuMC4wLjEiCj4KPiArLyoq Cj4gKyAqIFJldHJhbnNtaXNzaW9uIC8gTkFDSyBzdXBwb3J0Cj4gKyovCj4gKyNkZWZpbmUgSElT VE9SWV9TSVpFX0RFRkFVTFQgNTEyCj4gKwo+ICAvKiBDYWxjdWxhdGUgdGhlIGVsYXBzZWQgdGlt ZSBmcm9tIHN0YXJ0dGltZSB0byBlbmR0aW1lIGluIG1pbGxpc2Vjb25kcy4gKi8KPiAgI2RlZmlu ZSBFTEFQU0VEKHN0YXJ0dGltZSwgZW5kdGltZSkgKChpbnQpKGVuZHRpbWUgLSBzdGFydHRpbWUp IC8gMTAwMCkKPgo+IEBAIC0xOTQsOSArMjAwLDE5IEBAIGVudW0gV0hJUFN0YXRlIHsKPiAgfTsK Pgo+ICB0eXBlZGVmIGVudW0gV0hJUEZsYWdzIHsKPiAtICAgIFdISVBfRkxBR19JR05PUkVfSVBW NiAgPSAoMSA8PCAwKSAvLyBJZ25vcmUgaXB2NiBjYW5kaWRhdGUKPiArICAgIFdISVBfRkxBR19J R05PUkVfSVBWNiAgPSAoMSA8PCAwKSwgLy8gSWdub3JlIGlwdjYgY2FuZGlkYXRlCj4gKyAgICBX SElQX0ZMQUdfRElTQUJMRV9SVFggICAgID0gKDEgPDwgMSkgIC8vIEVuYWJsZSBOQUNLIGFuZCBS VFgKPiAgfSBXSElQRmxhZ3M7Cj4KPiArdHlwZWRlZiBzdHJ1Y3QgUnRwSGlzdG9yeUl0ZW0gewo+ ICsgICAgICAgIC8qIG9yaWdpbmFsIFJUUCBzZXEgKi8KPiArICAgICAgICB1aW50MTZfdCBzZXE7 Cj4gKyAgICAgICAgLyogbGVuZ3RoIGluIGJ5dGVzICovCj4gKyAgICAgICAgaW50IHNpemU7Cj4g KyAgICAgICAgLyogbWFsbG9jLWVkIGNvcHkgKi8KPiArICAgICAgICB1aW50OF90KiBwa3Q7Cj4g K30gUnRwSGlzdG9yeUl0ZW07Cj4gKwo+ICB0eXBlZGVmIHN0cnVjdCBXSElQQ29udGV4dCB7Cj4g ICAgICBBVkNsYXNzICphdl9jbGFzczsKPgo+IEBAIC0yODUsNiArMzAxLDcgQEAgdHlwZWRlZiBz dHJ1Y3QgV0hJUENvbnRleHQgewo+ICAgICAgLyogVGhlIFNSVFAgc2VuZCBjb250ZXh0LCB0byBl bmNyeXB0IG91dGdvaW5nIHBhY2tldHMuICovCj4gICAgICBTUlRQQ29udGV4dCBzcnRwX2F1ZGlv X3NlbmQ7Cj4gICAgICBTUlRQQ29udGV4dCBzcnRwX3ZpZGVvX3NlbmQ7Cj4gKyAgICBTUlRQQ29u dGV4dCBzcnRwX3ZpZGVvX3J0eF9zZW5kOwo+ICAgICAgU1JUUENvbnRleHQgc3J0cF9ydGNwX3Nl bmQ7Cj4gICAgICAvKiBUaGUgU1JUUCByZWNlaXZlIGNvbnRleHQsIHRvIGRlY3J5cHQgaW5jb21p bmcgcGFja2V0cy4gKi8KPiAgICAgIFNSVFBDb250ZXh0IHNydHBfcmVjdjsKPiBAQCAtMzA5LDYg KzMyNiwxNCBAQCB0eXBlZGVmIHN0cnVjdCBXSElQQ29udGV4dCB7Cj4gICAgICAvKiBUaGUgY2Vy dGlmaWNhdGUgYW5kIHByaXZhdGUga2V5IHVzZWQgZm9yIERUTFMgaGFuZHNoYWtlLiAqLwo+ICAg ICAgY2hhciogY2VydF9maWxlOwo+ICAgICAgY2hhcioga2V5X2ZpbGU7Cj4gKwo+ICsgICAgLyog UlRYIC8gTkFDSyAqLwo+ICsgICAgdWludDhfdCBydHhfcGF5bG9hZF90eXBlOwo+ICsgICAgdWlu dDMyX3QgdmlkZW9fcnR4X3NzcmM7Cj4gKyAgICB1aW50MTZfdCBydHhfc2VxOwo+ICsgICAgaW50 ICBoaXN0b3J5X3NpemU7Cj4gKyAgICBSdHBIaXN0b3J5SXRlbSAqaGlzdG9yeTsgIC8qIHJpbmcg YnVmZmVyICAqLwo+ICsgICAgaW50IGhpc3RfaGVhZDsKPiAgfSBXSElQQ29udGV4dDsKPgo+ICAv KioKPiBAQCAtNjA2LDYgKzYzMSwxNiBAQCBzdGF0aWMgaW50IGdlbmVyYXRlX3NkcF9vZmZlcihB VkZvcm1hdENvbnRleHQgKnMpCj4gICAgICB3aGlwLT5hdWRpb19wYXlsb2FkX3R5cGUgPSBXSElQ X1JUUF9QQVlMT0FEX1RZUEVfT1BVUzsKPiAgICAgIHdoaXAtPnZpZGVvX3BheWxvYWRfdHlwZSA9 IFdISVBfUlRQX1BBWUxPQURfVFlQRV9IMjY0Owo+Cj4gKyAgICAvKiBSVFggYW5kIE5BQ0sgaW5p dCAqLwo+ICsgICAgd2hpcC0+cnR4X3BheWxvYWRfdHlwZSA9IFdISVBfUlRQX1BBWUxPQURfVFlQ RV9SVFg7Cj4gKyAgICB3aGlwLT52aWRlb19ydHhfc3NyYyA9IGF2X2xmZ19nZXQoJndoaXAtPnJu ZCk7Cj4gKyAgICB3aGlwLT5ydHhfc2VxID0gMDsKPiArICAgIHdoaXAtPmhpc3RfaGVhZCA9IDA7 Cj4gKyAgICB3aGlwLT5oaXN0b3J5X3NpemUgPSBGRk1BWCg2NCwgd2hpcC0+aGlzdG9yeV9zaXpl KTsKPiArICAgIHdoaXAtPmhpc3RvcnkgPSBhdl9jYWxsb2Mod2hpcC0+aGlzdG9yeV9zaXplLCBz aXplb2YoKndoaXAtPmhpc3RvcnkpKTsKPiArICAgIGlmICghd2hpcC0+aGlzdG9yeSkKPiArICAg ICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiArCj4gICAgICBhdl9icHJpbnRmKCZi cCwgIiIKPiAgICAgICAgICAidj0wXHJcbiIKPiAgICAgICAgICAibz1GRm1wZWcgJXMgMiBJTiBJ UDQgJXNcclxuIgo+IEBAIC02NTYsNyArNjkxLDcgQEAgc3RhdGljIGludCBnZW5lcmF0ZV9zZHBf b2ZmZXIoQVZGb3JtYXRDb250ZXh0ICpzKQo+ICAgICAgICAgIH0KPgo+ICAgICAgICAgIGF2X2Jw cmludGYoJmJwLCAiIgo+IC0gICAgICAgICAgICAibT12aWRlbyA5IFVEUC9UTFMvUlRQL1NBVlBG ICV1XHJcbiIKPiArICAgICAgICAgICAgIm09dmlkZW8gOSBVRFAvVExTL1JUUC9TQVZQRiAldSAl dVxyXG4iCj4gICAgICAgICAgICAgICJjPUlOIElQNCAwLjAuMC4wXHJcbiIKPiAgICAgICAgICAg ICAgImE9aWNlLXVmcmFnOiVzXHJcbiIKPiAgICAgICAgICAgICAgImE9aWNlLXB3ZDolc1xyXG4i Cj4gQEAgLTY2OSw5ICs3MDQsMTYgQEAgc3RhdGljIGludCBnZW5lcmF0ZV9zZHBfb2ZmZXIoQVZG b3JtYXRDb250ZXh0ICpzKQo+ICAgICAgICAgICAgICAiYT1ydGNwLXJzaXplXHJcbiIKPiAgICAg ICAgICAgICAgImE9cnRwbWFwOiV1ICVzLzkwMDAwXHJcbiIKPiAgICAgICAgICAgICAgImE9Zm10 cDoldSBsZXZlbC1hc3ltbWV0cnktYWxsb3dlZD0xO3BhY2tldGl6YXRpb24tbW9kZT0xO3Byb2Zp bGUtbGV2ZWwtaWQ9JTAyeCUwMnglMDJ4XHJcbiIKPiArICAgICAgICAgICAgImE9cnRjcC1mYjol dSBuYWNrXHJcbiIKPiArICAgICAgICAgICAgImE9cnRwbWFwOiV1IHJ0eC85MDAwMFxyXG4iCj4g KyAgICAgICAgICAgICJhPWZtdHA6JXUgYXB0PSV1XHJcbiIKPiArICAgICAgICAgICAgImE9c3Ny Yy1ncm91cDpGSUQgJXUgJXVcclxuIgo+ICsgICAgICAgICAgICAiYT1zc3JjOiV1IGNuYW1lOkZG bXBlZ1xyXG4iCj4gKyAgICAgICAgICAgICJhPXNzcmM6JXUgbXNpZDpGRm1wZWcgdmlkZW9cclxu Igo+ICAgICAgICAgICAgICAiYT1zc3JjOiV1IGNuYW1lOkZGbXBlZ1xyXG4iCj4gICAgICAgICAg ICAgICJhPXNzcmM6JXUgbXNpZDpGRm1wZWcgdmlkZW9cclxuIiwKPiAgICAgICAgICAgICAgd2hp cC0+dmlkZW9fcGF5bG9hZF90eXBlLAo+ICsgICAgICAgICAgICB3aGlwLT5ydHhfcGF5bG9hZF90 eXBlLAo+ICAgICAgICAgICAgICB3aGlwLT5pY2VfdWZyYWdfbG9jYWwsCj4gICAgICAgICAgICAg IHdoaXAtPmljZV9wd2RfbG9jYWwsCj4gICAgICAgICAgICAgIHdoaXAtPmR0bHNfZmluZ2VycHJp bnQsCj4gQEAgLTY4MSw4ICs3MjMsMTYgQEAgc3RhdGljIGludCBnZW5lcmF0ZV9zZHBfb2ZmZXIo QVZGb3JtYXRDb250ZXh0ICpzKQo+ICAgICAgICAgICAgICBwcm9maWxlLAo+ICAgICAgICAgICAg ICB3aGlwLT5jb25zdHJhaW50X3NldF9mbGFncywKPiAgICAgICAgICAgICAgbGV2ZWwsCj4gKyAg ICAgICAgICAgIHdoaXAtPnZpZGVvX3BheWxvYWRfdHlwZSwKPiArICAgICAgICAgICAgd2hpcC0+ cnR4X3BheWxvYWRfdHlwZSwKPiArICAgICAgICAgICAgd2hpcC0+cnR4X3BheWxvYWRfdHlwZSwK PiArICAgICAgICAgICAgd2hpcC0+dmlkZW9fcGF5bG9hZF90eXBlLAo+ICsgICAgICAgICAgICB3 aGlwLT52aWRlb19zc3JjLAo+ICsgICAgICAgICAgICB3aGlwLT52aWRlb19ydHhfc3NyYywKPiAg ICAgICAgICAgICAgd2hpcC0+dmlkZW9fc3NyYywKPiAtICAgICAgICAgICAgd2hpcC0+dmlkZW9f c3NyYyk7Cj4gKyAgICAgICAgICAgIHdoaXAtPnZpZGVvX3NzcmMsCj4gKyAgICAgICAgICAgIHdo aXAtPnZpZGVvX3J0eF9zc3JjLAo+ICsgICAgICAgICAgICB3aGlwLT52aWRlb19ydHhfc3NyYyk7 Cj4gICAgICB9Cj4KPiAgICAgIGlmICghYXZfYnByaW50X2lzX2NvbXBsZXRlKCZicCkpIHsKPiBA QCAtMTM5Niw2ICsxNDQ2LDEyIEBAIHN0YXRpYyBpbnQgc2V0dXBfc3J0cChBVkZvcm1hdENvbnRl eHQgKnMpCj4gICAgICAgICAgZ290byBlbmQ7Cj4gICAgICB9Cj4KPiArICAgIHJldCA9IGZmX3Ny dHBfc2V0X2NyeXB0bygmd2hpcC0+c3J0cF92aWRlb19ydHhfc2VuZCwgc3VpdGUsIGJ1Zik7Cj4g KyAgICBpZiAocmV0IDwgMCkgewo+ICsgICAgICAgIGF2X2xvZyh3aGlwLCBBVl9MT0dfRVJST1Is ICJXSElQOiBGYWlsZWQgdG8gc2V0IGNyeXB0byBmb3IgdmlkZW8gcnR4IHNlbmRcbiIpOwo+ICsg ICAgICAgIGdvdG8gZW5kOwo+ICsgICAgfQo+ICsKPiAgICAgIHJldCA9IGZmX3NydHBfc2V0X2Ny eXB0bygmd2hpcC0+c3J0cF9ydGNwX3NlbmQsIHN1aXRlLCBidWYpOwo+ICAgICAgaWYgKHJldCA8 IDApIHsKPiAgICAgICAgICBhdl9sb2cod2hpcCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIHNl dCBjcnlwdG8gZm9yIHJ0Y3Agc2VuZFxuIik7Cj4gQEAgLTE0MjUsNiArMTQ4MSwzNyBAQCBlbmQ6 Cj4gICAgICByZXR1cm4gcmV0Owo+ICB9Cj4KPiArCj4gKy8qKgo+ICsgKiBSVFggaGlzdG9yeSBo ZWxwZXJzCj4gKyAqLwo+ICsgc3RhdGljIHZvaWQgcnRwX2hpc3Rvcnlfc3RvcmUoV0hJUENvbnRl eHQgKndoaXAsIGNvbnN0IHVpbnQ4X3QgKnBrdCwgaW50IHNpemUpCj4gK3sKPiArICAgIGludCBw b3MgPSB3aGlwLT5oaXN0X2hlYWQgJSB3aGlwLT5oaXN0b3J5X3NpemU7Cj4gKyAgICBSdHBIaXN0 b3J5SXRlbSAqaXQgPSAmd2hpcC0+aGlzdG9yeVtwb3NdOwo+ICsgICAgLyogZnJlZSBvbGRlciBl bnRyeSAqLwo+ICsgICAgYXZfZnJlZShpdC0+cGt0KTsKPiArICAgIGl0LT5wa3QgPSBhdl9tYWxs b2Moc2l6ZSk7Cj4gKyAgICBpZiAoIWl0LT5wa3QpCj4gKyAgICAgICAgcmV0dXJuOwo+ICsKPiAr ICAgIG1lbWNweShpdC0+cGt0LCBwa3QsIHNpemUpOwphdl9wYWNrZXRfY2xvbmU/Cj4gKyAgICBp dC0+c2l6ZSA9IHNpemU7Cj4gKyAgICBpdC0+c2VxID0gQVZfUkIxNihwa3QgKyAyKTsKPiArCj4g KyAgICB3aGlwLT5oaXN0X2hlYWQgPSArK3BvczsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IFJ0 cEhpc3RvcnlJdGVtICpydHBfaGlzdG9yeV9maW5kKGNvbnN0IFdISVBDb250ZXh0ICp3aGlwLCB1 aW50MTZfdCBzZXEpCj4gK3sKPiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd2hpcC0+aGlzdG9y eV9zaXplOyBpKyspIHsKPiArICAgICAgICBjb25zdCBSdHBIaXN0b3J5SXRlbSAqaXQgPSAmd2hp cC0+aGlzdG9yeVtpXTsKPiArICAgICAgICBpZiAoaXQtPnBrdCAmJiBpdC0+c2VxID09IHNlcSkK PiArICAgICAgICAgICAgcmV0dXJuIGl0Owo+ICsgICAgfQo+ICsgICAgcmV0dXJuIE5VTEw7Cj4g K30KPiArCj4gIC8qKgo+ICAgKiBDYWxsYmFjayB0cmlnZ2VyZWQgYnkgdGhlIFJUUCBtdXhlciB3 aGVuIGl0IGNyZWF0ZXMgYW5kIHNlbmRzIG91dCBhbiBSVFAgcGFja2V0Lgo+ICAgKgo+IEBAIC0x NDYxLDYgKzE1NDgsMTAgQEAgc3RhdGljIGludCBvbl9ydHBfd3JpdGVfcGFja2V0KHZvaWQgKm9w YXF1ZSwgY29uc3QgdWludDhfdCAqYnVmLCBpbnQgYnVmX3NpemUpCj4gICAgICAgICAgcmV0dXJu IDA7Cj4gICAgICB9Cj4KPiArICAgIC8qIFN0b3JlIG9ubHkgT1JJR0lOQUwgdmlkZW8gcGFja2V0 cyAobm9uLVJUWCwgbm9uLVJUQ1ApICovCj4gKyAgICBpZiAoIWlzX3J0Y3AgJiYgaXNfdmlkZW8p Cj4gKyAgICAgICAgcnRwX2hpc3Rvcnlfc3RvcmUod2hpcCwgYnVmLCBidWZfc2l6ZSk7Cj4gKwo+ ICAgICAgcmV0ID0gZmZ1cmxfd3JpdGUod2hpcC0+dWRwLCB3aGlwLT5idWYsIGNpcGhlcl9zaXpl KTsKPiAgICAgIGlmIChyZXQgPCAwKSB7Cj4gICAgICAgICAgYXZfbG9nKHdoaXAsIEFWX0xPR19F UlJPUiwgIkZhaWxlZCB0byB3cml0ZSBwYWNrZXQ9JWRCLCByZXQ9JWRcbiIsIGNpcGhlcl9zaXpl LCByZXQpOwo+IEBAIC0xNDY5LDYgKzE1NjAsNDUgQEAgc3RhdGljIGludCBvbl9ydHBfd3JpdGVf cGFja2V0KHZvaWQgKm9wYXF1ZSwgY29uc3QgdWludDhfdCAqYnVmLCBpbnQgYnVmX3NpemUpCj4K PiAgICAgIHJldHVybiByZXQ7Cj4gIH0KPiArLyoqCj4gKyAqIFNlZSBodHRwczovL2RhdGF0cmFj a2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzQ1ODgKPiArICogQnVpbGQgYW5kIHNlbmQgYSBzaW5n bGUgUlRYIHBhY2tldAo+ICsgKi8KPiArc3RhdGljIGludCBzZW5kX3J0eF9wYWNrZXQoQVZGb3Jt YXRDb250ZXh0ICpzLCBjb25zdCB1aW50OF90ICpvcmlnX3BrdCwgaW50IG9yaWdfc2l6ZSkKPiAr ewo+ICsgICAgV0hJUENvbnRleHQgKndoaXAgPSBzLT5wcml2X2RhdGE7Cj4gKyAgICBpbnQgbmV3 X3NpemUsIGNpcGhlcl9zaXplOwo+ICsgICAgaWYgKHdoaXAtPmZsYWdzICYgV0hJUF9GTEFHX0RJ U0FCTEVfUlRYKQo+ICsgICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgIC8qIGFsbG9jYXRlIG5l dyBidWZmZXI6IGhlYWRlciArIDIgKyBwYXlsb2FkICovCj4gKyAgICBpZiAob3JpZ19zaXplICsg MiA+IHNpemVvZih3aGlwLT5idWYpKQo+ICsgICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgIG1l bWNweSh3aGlwLT5idWYsIG9yaWdfcGt0LCBvcmlnX3NpemUpOwo+ICsKPiArICAgIHVpbnQ4X3Qg KmhkciA9IHdoaXAtPmJ1ZjsKPiArICAgIHVpbnQxNl90IG9yaWdfc2VxID0gQVZfUkIxNihoZHIg KyAyKTsKPiArCj4gKyAgICAvKiByZXdyaXRlIGhlYWRlciAqLwo+ICsgICAgaGRyWzFdID0gKGhk clsxXSAmIDB4ODApIHwgd2hpcC0+cnR4X3BheWxvYWRfdHlwZTsgLyoga2VlcCBNIGJpdCAqLwo+ ICsgICAgQVZfV0IxNihoZHIgKyAyLCB3aGlwLT5ydHhfc2VxKyspOwo+ICsgICAgQVZfV0IzMiho ZHIgKyA4LCB3aGlwLT52aWRlb19ydHhfc3NyYyk7Cj4gKwo+ICsgICAgLyogc2hpZnQgcGF5bG9h ZCAyIGJ5dGVzICovCj4gKyAgICBtZW1tb3ZlKGhkciArIDEyICsgMiwgaGRyICsgMTIsIG9yaWdf c2l6ZSAtIDEyKTsKPiArICAgIEFWX1dCMTYoaGRyICsgMTIsIG9yaWdfc2VxKTsKPiArCj4gKyAg ICBuZXdfc2l6ZSA9IG9yaWdfc2l6ZSArIDI7Cj4gKwo+ICsgICAgLyogRW5jcnlwdCBieSBTUlRQ IGFuZCBzZW5kIG91dC4gKi8KPiArICAgIGNpcGhlcl9zaXplID0gZmZfc3J0cF9lbmNyeXB0KCZ3 aGlwLT5zcnRwX3ZpZGVvX3J0eF9zZW5kLCB3aGlwLT5idWYsIG5ld19zaXplLCB3aGlwLT5idWYs IHNpemVvZih3aGlwLT5idWYpKTsKPiArICAgIGlmIChjaXBoZXJfc2l6ZSA8PSAwIHx8IGNpcGhl cl9zaXplIDwgbmV3X3NpemUpIHsKPiArICAgICAgICBhdl9sb2cod2hpcCwgQVZfTE9HX1dBUk5J TkcsICJXSElQOiBGYWlsZWQgdG8gZW5jcnlwdCBwYWNrZXQ9JWRCLCBjaXBoZXI9JWRCXG4iLCBu ZXdfc2l6ZSwgY2lwaGVyX3NpemUpOwo+ICsgICAgICAgIHJldHVybiAwOwo+ICsgICAgfQo+ICsg ICAgcmV0dXJuIGZmdXJsX3dyaXRlKHdoaXAtPnVkcCwgd2hpcC0+YnVmLCBjaXBoZXJfc2l6ZSk7 Cj4gK30KPgo+ICAvKioKPiAgICogQ3JlYXRlcyBkZWRpY2F0ZWQgUlRQIG11eGVycyBmb3IgZWFj aCBzdHJlYW0gaW4gdGhlIEFWRm9ybWF0Q29udGV4dCB0byBidWlsZCBSVFAKPiBAQCAtMTc5MSw2 ICsxOTIxLDY2IEBAIHN0YXRpYyBpbnQgd2hpcF93cml0ZV9wYWNrZXQoQVZGb3JtYXRDb250ZXh0 ICpzLCBBVlBhY2tldCAqcGt0KQo+ICAgICAgICAgICAgICAgICAgZ290byBlbmQ7Cj4gICAgICAg ICAgICAgIH0KPiAgICAgICAgICB9Cj4gKyAgICAgICAgLyoqCj4gKyAgICAgICAgICogSGFuZGxl IFJUQ1AgTkFDSwo+ICsgICAgICAgICAqIFJlZmVyIHRvIFJGQyA0NTg1LCBTZWN0aW9uIDYuMi4x Cj4gKyAgICAgICAgICogVGhlIEdlbmVyaWMgTkFDSyBtZXNzYWdlIGlzIGlkZW50aWZpZWQgYnkg UFQ9UlRQRkIgYW5kIEZNVD0xLgo+ICsgICAgICAgICAqIFRPRE86IGRpc2FibGUgcmV0cmFuc21p c3N0aW9uIHdoZW4gIi10dW5lIHplcm9sYXRlbmN5Igo+ICsgICAgICAgICAqLwo+ICsgICAgICAg IGlmIChtZWRpYV9pc19ydGNwKHdoaXAtPmJ1ZiwgcmV0KSkgewo+ICsgICAgICAgICAgICBpbnQg cHRyID0gMDsKPiArICAgICAgICAgICAgdWludDhfdCBwdCA9IHdoaXAtPmJ1ZltwdHIgKyAxXTsK PiArICAgICAgICAgICAgdWludDhfdCBmbXQgPSAod2hpcC0+YnVmW3B0cl0gJiAweDFmKTsKPiAr ICAgICAgICAgICAgaWYgKHB0ciArIDQgPD0gcmV0ICYmIHB0ID09IDIwNSAmJiBmbXQgPT0gMSkg ewo+ICsgICAgICAgICAgICAgICAgLyoqCj4gKyAgICAgICAgICAgICAgICAgKiBSZWZlciB0byBS RkMgMzU1MCwgU2VjdGlvbiA2LjQuMS4KPiArICAgICAgICAgICAgICAgICAqIFRoZSBsZW5ndGgg b2YgdGhpcyBSVENQIHBhY2tldCBpbiAzMi1iaXQgd29yZHMgbWludXMgb25lLAo+ICsgICAgICAg ICAgICAgICAgICogaW5jbHVkaW5nIHRoZSBoZWFkZXIgYW5kIGFueSBwYWRkaW5nLgo+ICsgICAg ICAgICAgICAgICAgICovCj4gKyAgICAgICAgICAgICAgICBpbnQgcnRjcF9sZW4gPSAoQVZfUkIx Nigmd2hpcC0+YnVmW3B0ciArIDJdKSArIDEpICogNDsKPiArICAgICAgICAgICAgICAgIC8qIFNS VENQIGluZGV4KDQgYnl0ZXMpICsgSE1BQyAoU1JUUF9BRVMxMjhfQ01fU0hBMV84MCAxMGJ5dGVz KSAqLwo+ICsgICAgICAgICAgICAgICAgaW50IHNydGNwX2xlbiA9IHJ0Y3BfbGVuICsgNCArIDEw Owo+ICsgICAgICAgICAgICAgICAgaWYgKHNydGNwX2xlbiA9PSByZXQgJiYgcnRjcF9sZW4gPj0g MTIpIHsKPiArICAgICAgICAgICAgICAgICAgICBpbnQgaSA9IDA7Cj4gKyAgICAgICAgICAgICAg ICAgICAgdWludDhfdCAqcGt0ID0gYXZfbWFsbG9jKHNydGNwX2xlbik7Cj4gKyAgICAgICAgICAg ICAgICAgICAgbWVtY3B5KHBrdCwgd2hpcC0+YnVmLCBzcnRjcF9sZW4pOwo+ICsgICAgICAgICAg ICAgICAgICAgIGludCByZXQgPSBmZl9zcnRwX2RlY3J5cHQoJndoaXAtPnNydHBfcmVjdiwgcGt0 LCAmc3J0Y3BfbGVuKTsKPiArICAgICAgICAgICAgICAgICAgICBpZiAocmV0IDwgMCkKPiArICAg ICAgICAgICAgICAgICAgICAgICAgYXZfbG9nKHdoaXAsIEFWX0xPR19FUlJPUiwgIldISVA6IFNS VENQIGRlY3J5cHQgZmFpbGVkOiAlZFxuIiwgcmV0KTsKPiArICAgICAgICAgICAgICAgICAgICB3 aGlsZSAoMTIgKyBpIDwgcnRjcF9sZW4gJiYgcmV0ID09IDApIHsKPiArICAgICAgICAgICAgICAg ICAgICAgICAgLyoqCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqICBTZWUgaHR0cHM6Ly9k YXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM0NTg1I3NlY3Rpb24tNi4xCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAqICBIYW5kbGUgbXVsdGkgTkFDS3MgaW4gYnVuZGxlZCBwYWNr ZXQuCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqLwo+ICsgICAgICAgICAgICAgICAgICAg ICAgICB1aW50MTZfdCBwaWQgPSBBVl9SQjE2KCZwa3RbcHRyICsgMTIgKyBpXSk7Cj4gKyAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGJscCA9IEFWX1JCMTYoJnBrdFtwdHIgKyAxNCAr IGldKTsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJldHJhbnNtaXQgcGlkICsg YW55IGJpdCBzZXQgaW4gYmxwICovCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50 IGJpdCA9IC0xOyBiaXQgPCAxNjsgYml0KyspIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQxNl90IHNlcSA9IChiaXQgPCAwKSA/IHBpZCA6IHBpZCArIGJpdCArIDE7Cj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYml0ID49IDAgJiYgIShibHAgJiAoMSA8PCBi aXQpKSkKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiArCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSdHBIaXN0b3J5SXRlbSAqaXQgPSBy dHBfaGlzdG9yeV9maW5kKHdoaXAsIHNlcSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAoaXQpIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdl9sb2cod2hp cCwgQVZfTE9HX1ZFUkJPU0UsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJXSElQOiBOQUNLLCBwYWNrZXQgZm91bmQ6IHNpemU6ICVkLCBzZXE9JWQsIHJ0eCBzaXplPSVk LCBsYXRlc2V0IHN0b3JlZCBwYWNrZXQgc2VxOiVkXG4iLAo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpdC0+c2l6ZSwgc2VxLCByZXQsIHdoaXAtPmhpc3Rvcnlbd2hpcC0+ aGlzdF9oZWFkLTFdLnNlcSk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0 ID0gc2VuZF9ydHhfcGFja2V0KHMsIGl0LT5wa3QsIGl0LT5zaXplKTsKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAocmV0IDw9IDAgJiYgISh3aGlwLT5mbGFncyAmIFdISVBf RkxBR19ESVNBQkxFX1JUWCkpCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGF2X2xvZyh3aGlwLCBBVl9MT0dfRVJST1IsICJXSElQOiBGYWlsZWQgdG8gc2VuZCBSVFggcGFj a2V0XG4iKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZfbG9nKHdoaXAsIEFWX0xPR19WRVJCT1NFLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV0hJUDogTkFDSywgcGFja2V0 IG5vdCBmb3VuZCwgc2VxPSVkLCBsYXRlc3Qgc3RvcmVkIHBhY2tldCBzZXE6ICVkLCBsYXRlc3Qg cnR4IHNlcTogJWRcbiIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl cSwgd2hpcC0+aGlzdG9yeVt3aGlwLT5oaXN0X2hlYWQtMV0uc2VxLCB3aGlwLT5ydHhfc2VxKTsK PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSArIDQ7Cj4gKyAgICAgICAgICAg ICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgIGF2X2ZyZWUocGt0KTsKPiArICAgICAg ICAgICAgICAgIH0KPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0KPiAgICAgIH0gZWxzZSBp ZiAocmV0ICE9IEFWRVJST1IoRUFHQUlOKSkgewo+ICAgICAgICAgIGF2X2xvZyh3aGlwLCBBVl9M T0dfRVJST1IsICJGYWlsZWQgdG8gcmVhZCBmcm9tIFVEUCBzb2NrZXRcbiIpOwo+ICAgICAgICAg IGdvdG8gZW5kOwo+IEBAIC0xOTAzLDYgKzIwOTMsOCBAQCBzdGF0aWMgY29uc3QgQVZPcHRpb24g b3B0aW9uc1tdID0gewo+ICAgICAgICAgIEFWX09QVF9UWVBFX0ZMQUdTLCAgeyAuaTY0ID0gMCB9 LCAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIFVJTlRfTUFYLCBFTkMsIC51bml0ID0gImZs YWdzIiB9LAo+ICAgICAgeyAiaWdub3JlX2lwdjYiLCAgICAgICAgIklnbm9yZSBhbnkgSVB2NiBJ Q0UgY2FuZGlkYXRlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKPiAgICAgICAgICBB Vl9PUFRfVFlQRV9DT05TVCwgIHsgLmk2NCA9IFdISVBfRkxBR19JR05PUkVfSVBWNiB9LCAgICAg ICAwLCBVSU5UX01BWCwgRU5DLCAudW5pdCA9ICJmbGFncyIgfSwKPiArICAgIHsgImRpc2FibGVf cnR4IiwgICAgIkRpc2FibGUgUkZDIDQ1ODggUlRYIiwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDAsCj4gKyAgICAgICAgQVZfT1BUX1RZUEVfQ09OU1QsICB7IC5pNjQg PSBXSElQX0ZMQUdfRElTQUJMRV9SVFggfSwgICAgICAgMCwgVUlOVF9NQVgsIEVOQywgLnVuaXQg PSAiZmxhZ3MiIH0sCj4gICAgICB7IE5VTEwgfSwKPiAgfTsKPgo+IC0tCj4gMi40OS4wCj4KPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGZmbXBlZy1k ZXZlbCBtYWlsaW5nIGxpc3QKPiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwo+IGh0dHBzOi8vZmZt cGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAo+Cj4gVG8gdW5zdWJzY3JpYmUs IHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4gZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVn Lm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWct ZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1w ZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1w ZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=