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 5324549F1E for ; Mon, 15 Apr 2024 17:56:59 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E571C68CD83; Mon, 15 Apr 2024 20:56:57 +0300 (EEST) Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 58D6868B22B for ; Mon, 15 Apr 2024 20:56:51 +0300 (EEST) Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-563cb3ba9daso3435645a12.3 for ; Mon, 15 Apr 2024 10:56:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1713203810; x=1713808610; darn=ffmpeg.org; h=user-agent:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:mail-followup-to :message-id:subject:to:from:date:from:to:cc:subject:date:message-id :reply-to; bh=o5L2WUIP+MpTTItDLUbs4yOiTDktmWcGr92TVxYYoQM=; b=dhSntmszyBBBlZ/oxra4RQ4bRCf2c5l6xa/XLMr4zGd2bXVBmlZiuLN5vn5PFzVeYs PZrsVtqVh2ye5vjmVshRIdIJVtxm8JVPqGysAZlVKD9nmPbsceZN6N1o77MyAGiefYN9 snu1mK1nZ6oMskzjQ7Kc0mOx+1D/82TyYfOA8Qe+SDOly6beWZ11KYmz9ll5sbXhZDv4 u78YwmmDcjX6dBdb8OSbDncJUn9FYtIbAWy5iHQZ4E6ELY6n8DOKdOhcSfROB8TUU/Y6 uS93A/NeEdTsLOZPDrNziK6xsgUu6aqm3cVFiA/Im1FX2Lc6EX4ktcIofT6VeQWSAFP/ 86Wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713203810; x=1713808610; h=user-agent:in-reply-to:content-transfer-encoding :content-disposition:mime-version:references:mail-followup-to :message-id:subject:to:from:date:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=o5L2WUIP+MpTTItDLUbs4yOiTDktmWcGr92TVxYYoQM=; b=W6VXSUTf89IQtL7Vt7fcq0x8fmjeGFZWIgCMePwytGyi0JsjpJ+wHaZ7rqPzqjAmvj ucTedFYnTmuKuy28Wla7MLer4tAoFnTRxgBslbHnG5GmOQd594gF24AP65WqzRkIlWOm ANBjD0npdY4S0vSmYYiDLJxjCeTOK31eogUsoNVgFDhUuZ2hQmAi9RraXNVYFnOvtiOK BU95fjeZ2Embm3SJJMA6uoHP71xDzJvAO1fuj677O2laINpc86YdwiOiV4jZxQ7D52Ic xxkoBJgFauZJmN4xU9piZ1dClQ7OM15/oYEX77V3Fj1TvrTqrput61CvW7pGrh1QGoPh ipiA== X-Gm-Message-State: AOJu0YxYll6RKZRnGnZRqfeacENiVbEIuZ9elNcBZCbGveF+KyQ2HQj/ 2ihjqa1yj5xTkQO0eiJaYcxrcmeCcjnOtK5pefX3P8tg/9kn0Z6l561CkA== X-Google-Smtp-Source: AGHT+IGvgIKzdBCZY1jBUEi7vI69TcwEw7RspvUObi2jMomqZGhioTnD1RotfuFx683cm6AyoMUJtw== X-Received: by 2002:a17:906:6a01:b0:a4e:4e76:5fc7 with SMTP id qw1-20020a1709066a0100b00a4e4e765fc7mr11509855ejc.65.1713203809684; Mon, 15 Apr 2024 10:56:49 -0700 (PDT) Received: from mariano (host-82-58-28-189.retail.telecomitalia.it. [82.58.28.189]) by smtp.gmail.com with ESMTPSA id dk5-20020a170907940500b00a518b14d6cesm5808568ejc.172.2024.04.15.10.56.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Apr 2024 10:56:49 -0700 (PDT) Received: by mariano (Postfix, from userid 1000) id 39D73BFCE8; Mon, 15 Apr 2024 19:56:48 +0200 (CEST) Date: Mon, 15 Apr 2024 19:56:48 +0200 From: Stefano Sabatini To: FFmpeg development discussions and patches Message-ID: Mail-Followup-To: FFmpeg development discussions and patches References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/2.1.4 (2021-12-11) Subject: Re: [FFmpeg-devel] [PATCH] avformat/httpauth.c Support RFC7616 [Style fixed] 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-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: T24gZGF0ZSBNb25kYXkgMjAyNC0wNC0xNSAwMjozMjoxNCArMDAwMCwg77+977+977+977+977+9 77+9IHwgRXVnZW5lIHdyb3RlOgo+IFVwZGF0ZSBkaWdlc3QgYXV0aGVudGljYXRpb24gaW4gaHR0 cGF1dGguYwo+IAo+IC0gUmVmYWN0b3IgbWFrZV9kaWdlc3RfYXV0aCgpIHRvIHN1cHBvcnQgUkZD IDI2MTcgYW5kIFJGQyA3NjE3Cj4gLSBBZGQgc3VwcG9ydCBmb3IgU0hBLTI1NiBhbmQgU0hBLTUx Mi8yNTYgYWxnb3JpdGhtcyBhbG9uZyB3aXRoIE1ENQo+IC0gTUQ1IGFuZCBTSEEtMjU2IHRlc3Rl ZCwgYnV0IFNIQS01MTIvMjU2IHVudGVzdGVkIGR1ZSB0byBsYWNrIG9mIHNlcnZlcgo+IC0gUmVw bGFjZSBBVk1ENSBzdHJ1Y3R1cmUgd2l0aCBBVkhhc2hDb250ZXh0IGZvciBoYXNoIGFsZ29yaXRo bSBmbGV4aWJpbGl0eQo+IC0gUmVuYW1lIHVwZGF0ZV9tZDVfc3RyaW5ncygpIHRvIHVwZGF0ZV9o YXNoX3N0cmluZ3MoKSBmb3IgY29uc2lzdGVuY3kKPiAtIEFkZHJlc3MgY29kaW5nIHN0eWxlIGZl ZWRiYWNrIGZyb20gcmV2aWV3ZXI6Cj4gCj4gVGhpcyBpcyBhIGZlYXR1cmUgdXBkYXRlIGZvY3Vz ZWQgb24gZGlnZXN0IGF1dGhlbnRpY2F0aW9uIGVuaGFuY2VtZW50cy4KPiBTb21lIGxpbnQgaXNz dWVzIGluIHRoZSBleGlzdGluZyBjb2RlIHJlbWFpbiB1bmFkZHJlc3NlZCBpbiB0aGlzIHBhdGNo Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IEV1Z2VuZS1iaXRzZW5zaW5nIDxldWdlbmVAYml0c2Vuc2lu Zy5jb20+Cj4gLS0tCgo+ICBsaWJhdmZvcm1hdC9odHRwYXV0aC5jIHwgMTAyICsrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCA1MyBpbnNl cnRpb25zKCspLCA0OSBkZWxldGlvbnMoLSkKCmFkZCBlbnRyeSB0byBDaGFuZ2Vsb2c/Cgo+IAo+ IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9odHRwYXV0aC5jIGIvbGliYXZmb3JtYXQvaHR0cGF1 dGguYwo+IGluZGV4IDk3ODA5MjgzNTcuLjI1OTIxNDA1MjYgMTAwNjQ0Cj4gLS0tIGEvbGliYXZm b3JtYXQvaHR0cGF1dGguYwo+ICsrKyBiL2xpYmF2Zm9ybWF0L2h0dHBhdXRoLmMKPiBAQCAtMjQs NyArMjQsNyBAQAo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL2F2c3RyaW5nLmgiCj4gICNpbmNsdWRl ICJpbnRlcm5hbC5oIgo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL3JhbmRvbV9zZWVkLmgiCj4gLSNp bmNsdWRlICJsaWJhdnV0aWwvbWQ1LmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvaGFzaC5oIgo+ ICAjaW5jbHVkZSAidXJsZGVjb2RlLmgiCj4gIAo+ICBzdGF0aWMgdm9pZCBoYW5kbGVfYmFzaWNf cGFyYW1zKEhUVFBBdXRoU3RhdGUgKnN0YXRlLCBjb25zdCBjaGFyICprZXksCj4gQEAgLTExNywz NSArMTE3LDM1IEBAIHZvaWQgZmZfaHR0cF9hdXRoX2hhbmRsZV9oZWFkZXIoSFRUUEF1dGhTdGF0 ZSAqc3RhdGUsIGNvbnN0IGNoYXIgKmtleSwKPiAgICAgIH0KPiAgfQo+ICAKPiAtCj4gLXN0YXRp YyB2b2lkIHVwZGF0ZV9tZDVfc3RyaW5ncyhzdHJ1Y3QgQVZNRDUgKm1kNWN0eCwgLi4uKQo+ICsv KiBHZW5lcmF0ZSBoYXNoIHN0cmluZywgdXBkYXRlZCB0byB1c2UgQVZIYXNoQ29udGV4dCB0byBz dXBwb3J0IG90aGVyIGFsZ29yaXRobXMgKi8KPiArc3RhdGljIHZvaWQgdXBkYXRlX2hhc2hfc3Ry aW5ncyhzdHJ1Y3QgQVZIYXNoQ29udGV4dCAqaGFzaF9jdHgsIC4uLikKPiAgewo+ICAgICAgdmFf bGlzdCB2bDsKPiAgCj4gLSAgICB2YV9zdGFydCh2bCwgbWQ1Y3R4KTsKPiArICAgIHZhX3N0YXJ0 KHZsLCBoYXNoX2N0eCk7Cj4gICAgICB3aGlsZSAoMSkgewo+IC0gICAgICAgIGNvbnN0IGNoYXIq IHN0ciA9IHZhX2FyZyh2bCwgY29uc3QgY2hhciopOwo+ICsgICAgICAgIGNvbnN0IGNoYXIgKnN0 ciA9IHZhX2FyZyh2bCwgY29uc3QgY2hhciopOwo+ICAgICAgICAgIGlmICghc3RyKQo+ICAgICAg ICAgICAgICBicmVhazsKPiAtICAgICAgICBhdl9tZDVfdXBkYXRlKG1kNWN0eCwgc3RyLCBzdHJs ZW4oc3RyKSk7Cj4gKyAgICAgICAgYXZfaGFzaF91cGRhdGUoaGFzaF9jdHgsIChjb25zdCB1aW50 OF90ICopc3RyLCBzdHJsZW4oc3RyKSk7Cj4gICAgICB9Cj4gICAgICB2YV9lbmQodmwpOwo+ICB9 Cj4gIAo+IC0vKiBHZW5lcmF0ZSBhIGRpZ2VzdCByZXBseSwgYWNjb3JkaW5nIHRvIFJGQyAyNjE3 LiAqLwo+ICsvKiBHZW5lcmF0ZSBhIGRpZ2VzdCByZXBseSwgYWNjb3JkaW5nIHRvIFJGQyAyNjE3 LiBVcGRhdGUgdG8gc3VwcG9ydCBSRkMgNzYxNyovCj4gIHN0YXRpYyBjaGFyICptYWtlX2RpZ2Vz dF9hdXRoKEhUVFBBdXRoU3RhdGUgKnN0YXRlLCBjb25zdCBjaGFyICp1c2VybmFtZSwKPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGFzc3dvcmQsIGNvbnN0IGNo YXIgKnVyaSwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbWV0 aG9kKQo+ICB7Cj4gICAgICBEaWdlc3RQYXJhbXMgKmRpZ2VzdCA9ICZzdGF0ZS0+ZGlnZXN0X3Bh cmFtczsKPiAtICAgIGludCBsZW47Cj4gKyAgICBzaXplX3QgbGVuOwo+ICAgICAgdWludDMyX3Qg Y25vbmNlX2J1ZlsyXTsKPiAgICAgIGNoYXIgY25vbmNlWzE3XTsKPiAgICAgIGNoYXIgbmNbOV07 Cj4gICAgICBpbnQgaTsKPiAtICAgIGNoYXIgQTFoYXNoWzMzXSwgQTJoYXNoWzMzXSwgcmVzcG9u c2VbMzNdOwo+IC0gICAgc3RydWN0IEFWTUQ1ICptZDVjdHg7Cj4gLSAgICB1aW50OF90IGhhc2hb MTZdOwo+ICsgICAgY2hhciBhMV9oYXNoWzY1XSwgYTJfaGFzaFs2NV0sIHJlc3BvbnNlWzY1XTsK PiArICAgIHN0cnVjdCBBVkhhc2hDb250ZXh0ICpoYXNoX2N0eCA9IE5VTEw7IC8vIHVzZSBBVkhh c2hDb250ZXh0IGZvciBvdGhlciBhbGdvcml0aG0gc3VwcG9ydAo+ICsgICAgc2l6ZV90IGxlbl9o YXNoID0gMzM7IC8vIE1vZGlmaWFibGUgaGFzaCBsZW5ndGgsIE1ENTozMiwgU0hBLTI6NjQKPiAg ICAgIGNoYXIgKmF1dGhzdHI7Cj4gIAo+ICAgICAgZGlnZXN0LT5uYysrOwo+IEBAIC0xNTYsNTIg KzE1Niw1NiBAQCBzdGF0aWMgY2hhciAqbWFrZV9kaWdlc3RfYXV0aChIVFRQQXV0aFN0YXRlICpz dGF0ZSwgY29uc3QgY2hhciAqdXNlcm5hbWUsCj4gICAgICAgICAgY25vbmNlX2J1ZltpXSA9IGF2 X2dldF9yYW5kb21fc2VlZCgpOwo+ICAgICAgZmZfZGF0YV90b19oZXgoY25vbmNlLCAoY29uc3Qg dWludDhfdCopIGNub25jZV9idWYsIHNpemVvZihjbm9uY2VfYnVmKSwgMSk7Cj4gIAo+IC0gICAg bWQ1Y3R4ID0gYXZfbWQ1X2FsbG9jKCk7Cj4gLSAgICBpZiAoIW1kNWN0eCkKPiAtICAgICAgICBy ZXR1cm4gTlVMTDsKPiAtCj4gLSAgICBhdl9tZDVfaW5pdChtZDVjdHgpOwo+IC0gICAgdXBkYXRl X21kNV9zdHJpbmdzKG1kNWN0eCwgdXNlcm5hbWUsICI6Iiwgc3RhdGUtPnJlYWxtLCAiOiIsIHBh c3N3b3JkLCBOVUxMKTsKPiAtICAgIGF2X21kNV9maW5hbChtZDVjdHgsIGhhc2gpOwo+IC0gICAg ZmZfZGF0YV90b19oZXgoQTFoYXNoLCBoYXNoLCAxNiwgMSk7Cj4gLQo+IC0gICAgaWYgKCFzdHJj bXAoZGlnZXN0LT5hbGdvcml0aG0sICIiKSB8fCAhc3RyY21wKGRpZ2VzdC0+YWxnb3JpdGhtLCAi TUQ1IikpIHsKPiAtICAgIH0gZWxzZSBpZiAoIXN0cmNtcChkaWdlc3QtPmFsZ29yaXRobSwgIk1E NS1zZXNzIikpIHsKPiAtICAgICAgICBhdl9tZDVfaW5pdChtZDVjdHgpOwo+IC0gICAgICAgIHVw ZGF0ZV9tZDVfc3RyaW5ncyhtZDVjdHgsIEExaGFzaCwgIjoiLCBkaWdlc3QtPm5vbmNlLCAiOiIs IGNub25jZSwgTlVMTCk7Cj4gLSAgICAgICAgYXZfbWQ1X2ZpbmFsKG1kNWN0eCwgaGFzaCk7Cj4g LSAgICAgICAgZmZfZGF0YV90b19oZXgoQTFoYXNoLCBoYXNoLCAxNiwgMSk7Cj4gLSAgICB9IGVs c2Ugewo+IC0gICAgICAgIC8qIFVuc3VwcG9ydGVkIGFsZ29yaXRobSAqLwo+IC0gICAgICAgIGF2 X2ZyZWUobWQ1Y3R4KTsKPiArICAgIC8qIEdlbmVyYXRlIGhhc2ggY29udGV4dCBieSBhbGdvcml0 aG0uICovCj4gKyAgICBjb25zdCBjaGFyICphbGdvcml0aG0gPSBkaWdlc3QtPmFsZ29yaXRobTsK Cj4gKyAgICBjb25zdCBjaGFyICpoYXNoaW5nX2FsZ29yaXRobTsKCm5pdCsrOiB0byBhdm9pZCBz ZW1hbnRpYyBvdmVybGFwIEknZCByYXRoZXIgbmFtZSB0aGlzCnNlbGVjdGVkX2FsZ29yaXRobQoK PiArICAgIGlmICghKmFsZ29yaXRobSkgewo+ICsgICAgICAgIGFsZ29yaXRobSA9ICJNRDUiOyAg Ly8gaWYgZW1wdHksIHVzZSBNRDUgYXMgRGVmYXVsdCAKPiArICAgICAgICBoYXNoaW5nX2FsZ29y aXRobSA9ICJNRDUiOwo+ICsgICAgfSBlbHNlIGlmIChhdl9zdHJpc3RyKGFsZ29yaXRobSwgIk1E NSIpKSB7Cj4gKyAgICAgICAgaGFzaGluZ19hbGdvcml0aG0gPSAiTUQ1IjsKPiArICAgIH0gZWxz ZSBpZiAoYXZfc3RyaXN0cihhbGdvcml0aG0sICJzaGEyNTYiKSB8fCBhdl9zdHJpc3RyKGFsZ29y aXRobSwgInNoYS0yNTYiKSkgewo+ICsgICAgICAgIGhhc2hpbmdfYWxnb3JpdGhtID0gIlNIQTI1 NiI7Cj4gKyAgICAgICAgbGVuX2hhc2ggPSA2NTsgLy8gU0hBLTI6IDY0IGNoYXJhY3RlcnMuCj4g KyAgICB9IGVsc2UgaWYgKGF2X3N0cmlzdHIoYWxnb3JpdGhtLCAic2hhNTEyLTI1NiIpIHx8IGF2 X3N0cmlzdHIoYWxnb3JpdGhtLCAic2hhLTUxMi0yNTYiKSkgewo+ICsgICAgICAgIGhhc2hpbmdf YWxnb3JpdGhtID0gIlNIQTUxMl8yNTYiOwo+ICsgICAgICAgIGxlbl9oYXNoID0gNjU7IC8vIFNI QS0yOiA2NCBjaGFyYWN0ZXJzLgo+ICsgICAgfSBlbHNlIHsgLy8gVW5zdXBwb3J0ZWQgYWxnb3Jp dGhtCj4gICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gICAgICB9Cj4gIAo+IC0gICAgYXZfbWQ1X2lu aXQobWQ1Y3R4KTsKPiAtICAgIHVwZGF0ZV9tZDVfc3RyaW5ncyhtZDVjdHgsIG1ldGhvZCwgIjoi LCB1cmksIE5VTEwpOwo+IC0gICAgYXZfbWQ1X2ZpbmFsKG1kNWN0eCwgaGFzaCk7Cj4gLSAgICBm Zl9kYXRhX3RvX2hleChBMmhhc2gsIGhhc2gsIDE2LCAxKTsKPiArICAgIGludCByZXQgPSBhdl9o YXNoX2FsbG9jKCZoYXNoX2N0eCwgaGFzaGluZ19hbGdvcml0aG0pOwo+ICsgICAgaWYgKHJldCA8 IDApCj4gKyAgICAgICAgcmV0dXJuIE5VTEw7Cj4gIAo+IC0gICAgYXZfbWQ1X2luaXQobWQ1Y3R4 KTsKPiAtICAgIHVwZGF0ZV9tZDVfc3RyaW5ncyhtZDVjdHgsIEExaGFzaCwgIjoiLCBkaWdlc3Qt Pm5vbmNlLCBOVUxMKTsKPiAtICAgIGlmICghc3RyY21wKGRpZ2VzdC0+cW9wLCAiYXV0aCIpIHx8 ICFzdHJjbXAoZGlnZXN0LT5xb3AsICJhdXRoLWludCIpKSB7Cj4gLSAgICAgICAgdXBkYXRlX21k NV9zdHJpbmdzKG1kNWN0eCwgIjoiLCBuYywgIjoiLCBjbm9uY2UsICI6IiwgZGlnZXN0LT5xb3As IE5VTEwpOwo+ICsgICAgLyogYTEgaGFzaCBjYWxjdWxhdGlvbiAqLwo+ICsgICAgYXZfaGFzaF9p bml0KGhhc2hfY3R4KTsKPiArICAgIHVwZGF0ZV9oYXNoX3N0cmluZ3MoaGFzaF9jdHgsIHVzZXJu YW1lLCAiOiIsIHN0YXRlLT5yZWFsbSwgIjoiLCBwYXNzd29yZCwgTlVMTCk7Cj4gKyAgICBpZiAo YXZfc3RyaXN0cihhbGdvcml0aG0sICItc2VzcyIpKSB7Cj4gKyAgICAgICAgdXBkYXRlX2hhc2hf c3RyaW5ncyhoYXNoX2N0eCwgIjoiLCBkaWdlc3QtPm5vbmNlLCAiOiIsIGNub25jZSwgTlVMTCk7 Cj4gICAgICB9Cj4gLSAgICB1cGRhdGVfbWQ1X3N0cmluZ3MobWQ1Y3R4LCAiOiIsIEEyaGFzaCwg TlVMTCk7Cj4gLSAgICBhdl9tZDVfZmluYWwobWQ1Y3R4LCBoYXNoKTsKPiAtICAgIGZmX2RhdGFf dG9faGV4KHJlc3BvbnNlLCBoYXNoLCAxNiwgMSk7Cj4gLQo+IC0gICAgYXZfZnJlZShtZDVjdHgp Owo+IC0KPiAtICAgIGlmICghc3RyY21wKGRpZ2VzdC0+cW9wLCAiIikgfHwgIXN0cmNtcChkaWdl c3QtPnFvcCwgImF1dGgiKSkgewo+IC0gICAgfSBlbHNlIGlmICghc3RyY21wKGRpZ2VzdC0+cW9w LCAiYXV0aC1pbnQiKSkgewo+IC0gICAgICAgIC8qIHFvcD1hdXRoLWludCBub3Qgc3VwcG9ydGVk ICovCj4gLSAgICAgICAgcmV0dXJuIE5VTEw7Cj4gLSAgICB9IGVsc2Ugewo+IC0gICAgICAgIC8q IFVuc3VwcG9ydGVkIHFvcCB2YWx1ZS4gKi8KPiArICAgIGF2X2hhc2hfZmluYWxfaGV4KGhhc2hf Y3R4LCBhMV9oYXNoLCBsZW5faGFzaCk7Cj4gKwo+ICsgICAgLyogYTIgaGFzaCBjYWxjdWxhdGlv biAqLwo+ICsgICAgYXZfaGFzaF9pbml0KGhhc2hfY3R4KTsKPiArICAgIHVwZGF0ZV9oYXNoX3N0 cmluZ3MoaGFzaF9jdHgsIG1ldGhvZCwgIjoiLCB1cmksIE5VTEwpOwo+ICsgICAgYXZfaGFzaF9m aW5hbF9oZXgoaGFzaF9jdHgsIGEyX2hhc2gsIGxlbl9oYXNoKTsKPiArICAgIAo+ICsgICAgLyog cmVzcG9uc2UgaGFzaCBjYWxjdWxhdGlvbiAqLwo+ICsgICAgYXZfaGFzaF9pbml0KGhhc2hfY3R4 KTsKPiArICAgIHVwZGF0ZV9oYXNoX3N0cmluZ3MoaGFzaF9jdHgsIGExX2hhc2gsICI6IiwgZGln ZXN0LT5ub25jZSwgTlVMTCk7Cj4gKyAgICBpZiAoIXN0cmNtcChkaWdlc3QtPnFvcCwgImF1dGgi KSkgewo+ICsgICAgICAgIHVwZGF0ZV9oYXNoX3N0cmluZ3MoaGFzaF9jdHgsICI6IiwgbmMsICI6 IiwgY25vbmNlLCAiOiIsIGRpZ2VzdC0+cW9wLCBOVUxMKTsKPiArICAgIH0gZWxzZSBpZiAoIXN0 cmNtcChkaWdlc3QtPnFvcCwgImF1dGgtaW50IikpIHsgLy8gdW5zdXBwb3J0ZWQKPiArICAgICAg ICBhdl9oYXNoX2ZyZWVwKCZoYXNoX2N0eCk7Cj4gICAgICAgICAgcmV0dXJuIE5VTEw7Cj4gICAg ICB9Cj4gKyAgICB1cGRhdGVfaGFzaF9zdHJpbmdzKGhhc2hfY3R4LCAiOiIsIGEyX2hhc2gsIE5V TEwpOwo+ICsgICAgdXBkYXRlX2hhc2hfc3RyaW5ncyhoYXNoX2N0eCwgTlVMTCk7Cj4gKyAgICBh dl9oYXNoX2ZpbmFsX2hleChoYXNoX2N0eCwgcmVzcG9uc2UsIGxlbl9oYXNoKTsKPiArICAgIGF2 X2hhc2hfZnJlZXAoJmhhc2hfY3R4KTsKPiAgCj4gKyAgICAvKiBBdXRob3JpemF0aW9uIGhlYWRl ciBnZW5lcmF0aW9uICovCj4gICAgICBsZW4gPSBzdHJsZW4odXNlcm5hbWUpICsgc3RybGVuKHN0 YXRlLT5yZWFsbSkgKyBzdHJsZW4oZGlnZXN0LT5ub25jZSkgKwo+ICAgICAgICAgICAgICAgIHN0 cmxlbih1cmkpICsgc3RybGVuKHJlc3BvbnNlKSArIHN0cmxlbihkaWdlc3QtPmFsZ29yaXRobSkg Kwo+ICAgICAgICAgICAgICAgIHN0cmxlbihkaWdlc3QtPm9wYXF1ZSkgKyBzdHJsZW4oZGlnZXN0 LT5xb3ApICsgc3RybGVuKGNub25jZSkgKwo+IC0tIAo+IDIuNDIuMC53aW5kb3dzLjIKCkxvb2tz IGdvb2QgdG8gbWUgb3RoZXJ3aXNlLCBJJ2xsIHdhaXQgYSBmZXcgbW9yZSBkYXlzIHRvIGxldCBt b3JlCmNvbW1lbnRzIGJlZm9yZSBhcHBseWluZyB0aGlzLCB0aGFua3MuCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxp c3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlz dGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3Ig ZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vi c2NyaWJlIi4K