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 65AE04A1FE for ; Sun, 23 Jun 2024 19:00:55 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6793168D5B7; Sun, 23 Jun 2024 22:00:52 +0300 (EEST) Received: from mail-vk1-f182.google.com (mail-vk1-f182.google.com [209.85.221.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C1FDA68C094 for ; Sun, 23 Jun 2024 22:00:45 +0300 (EEST) Received: by mail-vk1-f182.google.com with SMTP id 71dfb90a1353d-4ef6b14a34eso300009e0c.1 for ; Sun, 23 Jun 2024 12:00:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719169244; x=1719774044; darn=ffmpeg.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=rM/8IIl4tL+zAmCIgBq3K0dyE60ClR5pUozqWEdc5Kg=; b=IIsYAZWvt/TTRDB560lwDTH9pHRff+gQdHCxWMAfFYNBx8+yvv/pcU0t4GNxB2AtpC 1vOdcSLfhpX9lv8cI+CvewaAaDbIs71vTrkM+iZc4a8phdS4Ml7HDsNfvPIj2uqQ/DZA +hUZkH/aGpYytcugEeKUW5TnBjNlt0hXUyXY0RIBdO8d5QjnA02npz1ax1n5wZD26umG GtBg+iCM9HO++MtZCKvJK+CqXmWVNorYRU8z1o39E4DQYB+9tZ6tgJpKZQqA4Vem9DIR Nwc/h0tKXnKALkCO8yrKg+OT8g+kjvgO8TVOfw5hOoLRVbD/RVZS2VAcaOD5T8AqIEaB a22w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719169244; x=1719774044; h=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=rM/8IIl4tL+zAmCIgBq3K0dyE60ClR5pUozqWEdc5Kg=; b=YYDJIADny4T7+B07xjtNKTzMpsktRxIYO2qihCu1pko2OqISpGAuTa8IFSkngoM17R 9tC/s9M6GXQUKWN84pOW5IEn+t0p3gaR6f4MO6R/Mq5Q/cgKC11VdR9oinVWtGYjAcjD +K5ZT7PQ3Fc+w7KzyTlnjbYLYMqdfzSZyGokDDXD0kd42YWTTuCwOYb2YqjZZ760V2VC tho0RvrU8VILCUTHPRuLtP3t3748YUV0f6fAxRCOSXbq1ZQclS5sPj27ZzaYUKJxCLEx c0Z/JfI78RTWRAO228/VbFOtnFh2u+XauPOXsyuDV8HauU2UO5xuoJVjIvb0vLuD4iAX BI3w== X-Gm-Message-State: AOJu0YyQ9KzTeZ2TaFGtC3aofbBX3nnQwz2TQHeqLpoPuS+GL+vdSZ85 nX0ezQa4gfw6CFSvEwECjZPECeYtmygffdKsjehxigfwOk0T4mkIEhnNjbN7TrkqTj1aVJMKWwG Xbybof7vUC8BeVjZNHyMKrWEGk6TQ1w== X-Google-Smtp-Source: AGHT+IHEh9O86DE4pn1QE2ZeLBzaSsERiUGnZHOSu3GW1fCJIj3+ADih2NNDZY1tcsOSDh2SXjMSfKmw72Aao5ZuVNQ= X-Received: by 2002:a05:6122:a1c:b0:4ec:fc20:a51a with SMTP id 71dfb90a1353d-4ef6d82f0f1mr1490729e0c.9.1719169243991; Sun, 23 Jun 2024 12:00:43 -0700 (PDT) MIME-Version: 1.0 References: <20240622151334.GD14140@haasn.xyz> <20240623174619.GA4991@pb2> In-Reply-To: <20240623174619.GA4991@pb2> From: Paul B Mahol Date: Sun, 23 Jun 2024 21:00:24 +0200 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [RFC]] swscale modernization proposal 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: T24gU3VuLCBKdW4gMjMsIDIwMjQgYXQgNzo0NuKAr1BNIE1pY2hhZWwgTmllZGVybWF5ZXIgPG1p Y2hhZWxAbmllZGVybWF5ZXIuY2M+Cndyb3RlOgoKPiBPbiBTdW4sIEp1biAyMywgMjAyNCBhdCAx MjoxOToxM0FNICswMjAwLCBWaXR0b3JpbyBHaW92YXJhIHdyb3RlOgo+ID4gT24gU2F0LCBKdW4g MjIsIDIwMjQgYXQgMzoyMuKAr1BNIE5pa2xhcyBIYWFzIDxmZm1wZWdAaGFhc24ueHl6PiB3cm90 ZToKPiA+Cj4gPiA+IEhleSwKPiA+ID4KPiA+ID4gQXMgc29tZSBvZiB5b3Uga25vdywgSSBnb3Qg Y29udHJhY3RlZCAoYnkgU1RGIDIwMjQpIHRvIHdvcmsgb24KPiBpbXByb3ZpbmcKPiA+ID4gc3dz Y2FsZSwgb3ZlciB0aGUgY291cnNlIG9mIHRoZSBuZXh0IGNvdXBsZSBvZiBtb250aHMuIEkgd2Fu dCB0byBzaGFyZQo+IG15Cj4gPiA+IGN1cnJlbnQgcGxhbnMgYW5kIGdhdGhlciBmZWVkYmFjayAr IG1lYXN1cmUgc2VudGltZW50Lgo+ID4gPgo+ID4gPiAjIyBQcm9ibGVtIHN0YXRlbWVudAo+ID4g Pgo+ID4gPiBUaGUgdHdvIGlzc3VlcyBJJ2QgbGlrZSB0byBmb2N1cyBvbiBmb3Igbm93IGFyZToK PiA+ID4KPiA+ID4gMS4gTGFjayBvZiBzdXBwb3J0IGZvciBhIGxvdCBvZiBtb2Rlcm4gZm9ybWF0 cyBhbmQgY29udmVyc2lvbnMgKEhEUiwKPiBJQ3RDcCwKPiA+ID4gICAgSVBUYzIsIEJULjIwMjAt Q0wsIFhZWiwgWUNnQ28sIERvbGJ5IFZpc2lvbiwgLi4uKQo+ID4gPiAyLiBDb21wbGljYXRlZCBj b250ZXh0IG1hbmFnZW1lbnQsIHdpdGggY2FzY2FkZWQgY29udGV4dHMsIHRocmVhZGluZywKPiA+ ID4gc3RhdGVmdWwKPiA+ID4gICAgY29uZmlndXJhdGlvbiwgbXVsdGktc3RlcCBpbml0IHByb2Nl ZHVyZXMsIGV0YzsgYW5kIHJlbGF0ZWQgYnVncwo+ID4gPgo+ID4gPiBJbiBvcmRlciB0byBtYWtl IHRoZXNlIGZlYXNpYmxlLCBzb21lIGFtb3VudCBvZiBpbnRlcm5hbAo+IHJlLW9yZ2FuaXphdGlv biBvZgo+ID4gPiBkdXRpZXMgaW5zaWRlIHN3c2NhbGUgaXMgcHJ1ZGVudC4KPiA+ID4KPiA+ID4g IyMgUHJvcG9zZWQgYXBwcm9hY2gKPiA+ID4KPiA+ID4gVGhlIGZpcnN0IHN0ZXAgaXMgdG8gY3Jl YXRlIGEgbmV3IEFQSSwgd2hpY2ggd2lsbCAodGVudGF0aXZlbHkpIGxpdmUgaW4KPiA+ID4gPGxp YnN3c2NhbGUvYXZzY2FsZS5oPi4gVGhpcyBBUEkgd2lsbCBpbml0aWFsbHkgc3RhcnQgb2ZmIGFz IGEKPiBuZWFyLWNvcHkKPiA+ID4gb2YgdGhlCj4gPiA+IGN1cnJlbnQgc3dzY2FsZSBwdWJsaWMg QVBJLCBidXQgd2l0aCB0aGUgbWFqb3IgZGlmZmVyZW5jZSB0aGF0IEkgd2FudAo+IGl0Cj4gPiA+ IHRvIGJlCj4gPiA+IHN0YXRlLWZyZWUgYW5kIG9ubHkgYWNjZXNzIG1ldGFkYXRhIGluIHRlcm1z IG9mIEFWRnJhbWUgcHJvcGVydGllcy4gU28KPiA+ID4gdGhlcmUKPiA+ID4gd2lsbCBiZSBubyBp bmRlcGVuZGVudCBjb25maWd1cmF0aW9uIG9mIHRoZSBpbnB1dCBjaHJvbWEgbG9jYXRpb24gZXRj Lgo+IGxpa2UKPiA+ID4gdGhlcmUgaXMgY3VycmVudGx5LCBhbmQgbm8gbmVlZCB0byByZS1jb25m aWd1cmUgb3IgcmUtaW5pdCB0aGUgY29udGV4dAo+IHdoZW4KPiA+ID4gZmVlZGluZyBpdCBmcmFt ZXMgd2l0aCBkaWZmZXJlbnQgcHJvcGVydGllcy4gVGhlIGdvYWwgaXMgZm9yIHVzZXJzIHRvCj4g YmUKPiA+ID4gYWJsZQo+ID4gPiB0byBqdXN0IGZlZWQgaXQgQVZGcmFtZSBwYWlycyBhbmQgaGF2 ZSBpdCBpbnRlcm5hbGx5IGNhY2hlIGV4cGVuc2l2ZQo+ID4gPiBwcmUtcHJvY2Vzc2luZyBzdGVw cyBhcyBuZWVkZWQuIEZpbmFsbHksIGF2c2NhbGVfKiBzaG91bGQgdWx0aW1hdGVseQo+IGFsc28K PiA+ID4gc3VwcG9ydCBoYXJkd2FyZSBmcmFtZXMgZGlyZWN0bHksIGluIHdoaWNoIGNhc2UgaXQg d2lsbCBkaXNwYXRjaCB0bwo+IHNvbWUKPiA+ID4gZXF1aXZhbGVudCBvZiBzY2FsZV92dWxrYW4v dmFhcGkvY3VkYSBvciBwb3NzaWJseSBldmVuIGxpYnBsYWNlYm8uCj4gKEJ1dCBJCj4gPiA+IHdp bGwKPiA+ID4gZGVmZXIgdGhpcyB0byBhIGZ1dHVyZSBtaWxlc3RvbmUpCj4gPiA+Cj4gPiA+IEFm dGVyIHRoaXMgQVBJIGlzIGVzdGFibGlzaGVkLCBJIHdhbnQgdG8gc3RhcnQgZXhwYW5kaW5nIHRo ZQo+IGZ1bmN0aW9uYWxpdHkKPiA+ID4gaW4KPiA+ID4gdGhlIGZvbGxvd2luZyBtYW5uZXI6Cj4g PiA+Cj4gPiA+ICMjIyBQaGFzZSAxCj4gPiA+Cj4gPiA+IEZvciBiYXNpYyBvcGVyYXRpb24sIGF2 c2NhbGVfKiB3aWxsIGp1c3QgZGlzcGF0Y2ggdG8gYSBzZXF1ZW5jZSBvZgo+ID4gPiBzd3NjYWxl XyoKPiA+ID4gaW52b2NhdGlvbnMuIEluIHRoZSBiYXNpYyBjYXNlLCBpdCB3aWxsIGp1c3QgZGly ZWN0bHkgaW52b2tlIHN3c2NhbGUKPiB3aXRoCj4gPiA+IG1pbmltYWwgb3ZlcmhlYWQuIEluIG1v cmUgYWR2YW5jZWQgY2FzZXMsIGl0IG1pZ2h0IHJlc29sdmUgdG8gYQo+ICpzZXF1ZW5jZSoKPiA+ ID4gb2YKPiA+ID4gc3dzY2FsZSBvcGVyYXRpb25zLCB3aXRoIG90aGVyIG9wZXJhdGlvbnMgKGUu Zy4gY29sb3JzcGFjZSBjb252ZXJzaW9ucwo+IGEgbGEKPiA+ID4gdmZfY29sb3JzcGFjZSkgbWl4 ZWQgaW4uCj4gPiA+Cj4gPiA+IFRoaXMgd2lsbCBhbGxvdyB1cyB0byBnYWluIG5ldyBmdW5jdGlv bmFsaXR5IGluIGEgbWluaW1hbGx5IGludmFzaXZlCj4gd2F5LAo+ID4gPiBhbmQKPiA+ID4gd2ls bCBsZXQgQVBJIHVzZXJzIHN0YXJ0IHBvcnRpbmcgdG8gdGhlIG5ldyBBUEkuIFRoaXMgd2lsbCBh bHNvIHNlcnZlCj4gYXMgYQo+ID4gPiBnb29kCj4gPiA+ICJzZWxsaW5nIHBvaW50IiBmb3IgdGhl IG5ldyBBUEksIGFsbG93aW5nIHVzIHRvIGhvcGVmdWxseSBicmVhayB1cCB0aGUKPiA+ID4gbGVn YWN5Cj4gPiA+IHN3c2NhbGUgQVBJIGFmdGVyd2FyZHMuCj4gPiA+Cj4gPiA+ICMjIyBQaGFzZSAy Cj4gPiA+Cj4gPiA+IEFmdGVyIHRoaXMgaXMgd29ya2luZywgSSB3YW50IHRvIGNsZWFubHkgc2Vw YXJhdGUgc3dzY2FsZSBpbnRvIHR3bwo+IGRpc3RpbmN0Cj4gPiA+IGNvbXBvbmVudHM6Cj4gPiA+ Cj4gPiA+IDEuIHZlcnRpY2FsL2hvcml6b250YWwgc2NhbGluZwo+ID4gPiAyLiBpbnB1dC9vdXRw dXQgY29udmVyc2lvbnMKPiA+ID4KPiA+ID4gUmlnaHQgbm93LCB0aGVzZSBvcGVyYXRpb25zIGJv dGggbGl2ZSBpbnNpZGUgdGhlIG1haW4gU3dzQ29udGV4dCwgZXZlbgo+ID4gPiB0aG91Z2gKPiA+ ID4gdGhleSBhcmUgY29uY2VwdHVhbGx5IG9ydGhvZ29uYWwuIElucHV0IGhhbmRsaW5nIGlzIGRv bmUgZW50aXJlbHkgYnkKPiB0aGUKPiA+ID4gYWJzdHJhY3QgY2FsbGJhY2tzIGx1bVRvWVYxMiBl dGMuLCB3aGlsZSBvdXRwdXQgY29udmVyc2lvbiBpcyBjdXJyZW50bHkKPiA+ID4gIm1lcmdlZCIg d2l0aCB2ZXJ0aWNhbCBzY2FsaW5nICh5dXYycGxhbmVYIGV0Yy4pLgo+ID4gPgo+ID4gPiBJIHdh bnQgdG8gY2xlYW5seSBzZXBhcmF0ZSB0aGVzZSBjb21wb25lbnRzIHNvIHRoZXkgY2FuIGxpdmUg aW5zaWRlCj4gPiA+IGluZGVwZW5kZW50Cj4gPiA+IGNvbnRleHRzLCBhbmQgYmUgY29uc2lkZXJl ZCBhcyBzZW1hbnRpY2FsbHkgZGlzdGluY3Qgc3RlcHMuIChJbgo+IHBhcnRpY3VsYXIsCj4gPiA+ IHRoZXJlIHNob3VsZCBpZGVhbGx5IGJlIG5vIG1vcmUgInVuc2NhbGVkIHNwZWNpYWwgY29udmVy dGVycyIsIGluc3RlYWQKPiA+ID4gdGhpcyBjYW4KPiA+ID4gYmUgc2VlbiBhcyBhIHNwZWNpYWwg Y2FzZSB3aGVyZSB0aGVyZSBzaW1wbHkgaXMgbm8gdmVydGljYWwvaG9yaXpvbnRhbAo+ID4gPiBz Y2FsaW5nCj4gPiA+IHN0ZXApCj4gPiA+Cj4gPiA+IFRoZSBpZGVhIGlzIGZvciB0aGUgY29sb3Jz cGFjZSBjb252ZXJzaW9uIGxheWVyIHRvIHNpdCBpbiBiZXR3ZWVuIHRoZQo+ID4gPiBpbnB1dC9v dXRwdXQgY29udmVydGVycyBhbmQgdGhlIGhvcml6b250YWwvdmVydGljYWwgc2NhbGVycy4gVGhp cyBhbGwKPiA+ID4gd291bGQgYmUKPiA+ID4gb3JjaGVzdHJhdGVkIGJ5IHRoZSBhdnNjYWxlXyog YWJzdHJhY3Rpb24uCj4gPiA+Cj4gPiA+ICMjIEltcGxlbWVudGF0aW9uIGRldGFpbHMKPiA+ID4K PiA+ID4gVG8gYXZvaWQgcGVyZm9ybWFuY2UgbG9zcyBmcm9tIHNlcGFyYXRpbmcgIm1lcmdlZCIg ZnVuY3Rpb25zIGludG8gdGhlaXIKPiA+ID4gY29uc3RpdHVlbnRzLCBjYXJlIG5lZWRzIHRvIGJl IHRha2VuIHN1Y2ggdGhhdCBhbGwgaW50ZXJtZWRpYXRlIGRhdGEsCj4gaW4KPiA+ID4gYWRkaXRp b24gdG8gYWxsIGludm9sdmVkIGxvb2stdXAgdGFibGVzLCB3aWxsIGZpdCBjb21mb3J0YWJseSBp bnNpZGUKPiB0aGUgTDEKPiA+ID4gY2FjaGUuIFRoZSBhcHByb2FjaCBJIHByb3Bvc2UsIHdoaWNo IGlzIGFsc28gKGFmYWljdCkgdXNlZCBieSB6c2NhbGUsCj4gaXMgdG8KPiA+ID4gbG9vcCBvdmVy IGxpbmUgc2VnbWVudHMsIGFwcGx5aW5nIGVhY2ggb3BlcmF0aW9uIGluIHNlcXVlbmNlLCBvbiBh Cj4gc21hbGwKPiA+ID4gdGVtcG9yYXJ5IGJ1ZmZlci4KPiA+ID4KPiA+ID4gZS5nLgo+ID4gPgo+ ID4gPiBoc2NhbGVfcm93KHBpeGVsICpkc3QsIGNvbnN0IHBpeGVsICpzcmMsIGludCBpbWdfd2lk dGgpCj4gPiA+IHsKPiA+ID4gICAgIGNvbnN0IGludCBTSVpFID0gMjU2OyAvLyBvciBzb21lIG90 aGVyIHNtYWxsLWlzaCBmaWd1cmUsIHBvc3NpYmx5IGEKPiA+ID4gZGVzaWduCj4gPiA+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gY29uc3RhbnQgb2YgdGhlIEFQSSBzbyB0aGF0IFNJTUQK PiA+ID4gaW1wbGVtZW50YXRpb25zCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g Y2FuIGJlIGFwcHJvcHJpYXRlbHkgdW5yb2xsZWQKPiA+ID4KPiA+ID4gICAgIHBpeGVsIHRtcFtT SVpFXTsKPiA+ID4gICAgIGZvciAoaSA9IDA7IGkgPCBpbWdfd2lkdGg7IGkgKz0gU0laRSkgewo+ ID4gPiAgICAgICAgIGludCBwaXhlbHMgPSBtaW4oU0laRSwgaW1nX3dpZHRoIC0gaSk7Cj4gPiA+ Cj4gPiA+ICAgICAgICAgeyAvKiBpbnNpZGUgcmVhZCBpbnB1dCBjYWxsYmFjayAqLwo+ID4gPiAg ICAgICAgICAgICB1bnBhY2tfaW5wdXQodG1wLCBzcmMsIHBpeGVscyk7Cj4gPiA+ICAgICAgICAg ICAgIC8vIHRoZSBhbW91bnQgb2Ygc2VwYXJhdGlvbiBoZXJlIHdpbGwgZGVwZW5kIG9uIHRoZQo+ IHBlcmZvcm1hbmNlCj4gPiA+ICAgICAgICAgICAgIGFwcGx5X21hdHJpeDN4Myh0bXAsIHl1djJy Z2IsIHBpeGVscyk7Cj4gPiA+ICAgICAgICAgICAgIGFwcGx5X2x1dDN4MWQodG1wLCBnYW1tYV9s dXQsIHBpeGVscyk7Cj4gPiA+ICAgICAgICAgICAgIC4uLgo+ID4gPiAgICAgICAgIH0KPiA+ID4K PiA+ID4gICAgICAgICBoc2NhbGUoZHN0LCB0bXAsIGZpbHRlciwgcGl4ZWxzKTsKPiA+ID4KPiA+ ID4gICAgICAgICBzcmMgKz0gcGl4ZWxzOwo+ID4gPiAgICAgICAgIGRzdCArPSBzY2FsZV9mYWN0 b3IocGl4ZWxzKTsKPiA+ID4gICAgIH0KPiA+ID4gfQo+ID4gPgo+ID4gPiBUaGlzIGZ1bmN0aW9u IGNhbiB0aGVuIG91dHB1dCByb3dzIGludG8gYSByaW5nIGJ1ZmZlciBmb3IgdXNlIGluc2lkZQo+ IHRoZQo+ID4gPiB2ZXJ0aWNhbCBzY2FsZXIsIGFmdGVyIHdoaWNoIHRoZSBzYW1lIHByb2NlZHVy ZSBoYXBwZW5zIChpbiByZXZlcnNlKQo+IGZvcgo+ID4gPiB0aGUKPiA+ID4gZmluYWwgb3V0cHV0 IHBhc3MuCj4gPiA+Cj4gPiA+IFBvc3NpYmx5LCB3ZSBhbHNvIHdhbnQgdG8gYWRkaXRpb25hbGx5 IGxpbWl0IHRoZSBzaXplIG9mIGEgcm93IGZvciB0aGUKPiA+ID4gaG9yaXpvbnRhbCBzY2FsZXIs IHRvIGFsbG93IGFyYml0cmFyeSBsYXJnZSBpbnB1dCBpbWFnZXMuCj4gPiA+Cj4gPiA+ICMjIENv bW1lbnRzIC8gZmVlZGJhY2s/Cj4gPiA+Cj4gPiA+IERvZXMgdGhlIGFib3ZlIGFwcHJvYWNoIHNl ZW0gcmVhc29uYWJsZT8gSG93IGRvIHBlb3BsZSBmZWVsIGFib3V0Cj4gPiA+IGludHJvZHVjaW5n Cj4gPiA+IGEgbmV3IEFQSSB2cy4gdHJ5aW5nIHRvIGhhbW1lciB0aGUgZXhpc3RpbmcgQVBJIGlu dG8gdGhlIHNoYXBlIEkgd2FudAo+IGl0Cj4gPiA+IHRvIGJlPwo+ID4gPgo+ID4gPiBJJ3ZlIGF0 dGFjaGVkIGFuIGV4YW1wbGUgb2Ygd2hhdCA8YXZzY2FsZS5oPiBjb3VsZCBlbmQgdXAgbG9va2lu Zwo+IGxpa2UuIElmCj4gPiA+IHRoZXJlIGlzIGJyb2FkIGFncmVlbWVudCBvbiB0aGlzIGRlc2ln biwgSSB3aWxsIG1vdmUgb24gdG8gYW4KPiA+ID4gaW1wbGVtZW50YXRpb24uCj4gPiA+Cj4gPgo+ ID4gV2hhdCBkbyB5b3UgdGhpbmsgb2YgdGhlIGNvbmNlcHQgb2Yga2VybmVscyBsaWtlCj4gPiBo dHRwczovL2dpdGh1Yi5jb20vbHUtemVyby9hdnNjYWxlL2Jsb2IvbWFzdGVyL2tlcm5lbHMvcmdi Mnl1di5jCj4gPiBUaGUgaWRlYSBpcyB0aGF0IHRoZXJlIGlzIGEgYml0IG9mIGFuYWx5c2lzIG9u IGlucHV0IGFuZCBvdXRwdXQgZm9ybWF0Cj4gPiByZXF1ZXN0ZWQsIGFuZCBlaXRoZXIgYSBzcGVj aWFsaXplZCBrZXJuZWwgaXMgdXNlZCwgb3IgYSBjaGFpbiBvZiBrZXJuZWxzCj4gPiBpcyBidWls dCBhbmQgZGF0YSBpcyBwYXNzZWQgYWxvbmcuCj4gPiBBbW9uZyB0aGUgZGVzaWduIGdvYWxzIG9m IHRoYXQgbGlicmFyeSwgdGhlcmUgd2FzIGFsc28gcmVhZGFiaWxpdHkgKHNvCj4gdGhhdAo+ID4g dGhlIGZsb3cgd2FzIGFsd2F5cyB1bmRlciBjb250cm9sKSBhbmQgdGhlIGVhc2Ugb2Ygd3JpdGlu ZyBhc3NlbWJseQo+IGFuZC9vcgo+ID4gc2hhZGVyIGZvciBhbnkgc2luZ2xlIGtlcm5lbC4KPgo+ IEkgdGhpbmsgSSBoYXZlIG5vdCBsb29rZWQgYXQgbHVjYXMgd29yayBiZWZvcmUsIHNvIGkgY2Fu bm90IGNvbW1lbnQgb24gaXQKPiBzcGVjaWZpY2FsbHkKPiBCdXQgaSB0aGluayB3aGF0IHlvdSBz dWdnZXN0IGlzIHdoYXQgTmlrbGFzIGludGVuZHMgdG8gZG8uCj4gc3dzY2FsZSBoYXMgZXZvbHZl ZCBvdmVyIGEgbG9uZyB0aW1lIGZyb20gY29kZSB3aXRoIGEgdmVyeSBzbWFsbCBzdWJzZXQgb2YK PiB0aGUgY3VycmVudCBmZWF0dXJlcy4gVGhlIGNvZGUgaXMgaW4gbmVlZCBmb3IgYmVpbmcgInJl ZmFjdG9yZWQiIGludG8gc29tZQo+IGNsZWFuZXIga2VybmVsIC8gbW9kdWxhciBkZXNpZ24uCj4g QWxzbyBhcyB5b3UgbWVudGlvbiBsdV96ZXJvLCBJIGhhZCB0YWxrZWQgd2l0aCBoaW0gdmVyeSBi cmllZmx5IGFuZCBoZSB3aWxsCj4gYmUgb24gdGhlIG5leHQgZXh0cmEgbWVtYmVyIHZvdGUgZm9y IHRoZSBHQSAod2hvZXZlciBpbml0aWF0ZXMgaXQsIGlsbCB0cnkKPiB0bwo+IG1ha2Ugc3VyZSBs dWNhIGlzIG5vdCBmb3Jnb3R0ZW4pIEp1c3Qgc2F5aW5nLCBpIGhhdmUgbm90IGZvcmdvdHRlbgo+ IGhpbSwganVzdCB0aGF0IGkgd2FudGVkIHRvIGFjY3VtdWxhdGUgbW9yZSBwZW9wbGUgYmVmb3Jl IGJyaW5naW5nIHRoYXQgdXAuCj4KPgo+ID4KPiA+IE5lZWRsZXNzIHRvIHNheSBJIHN1cHBvcnQg dGhlIHBsYW4gb2YgcmVuYW1pbmcgdGhlIGxpYnJhcnkgc28gdGhhdCBpdCBjYW4KPgo+IEFzIHRo ZSBtYWluIGF1dGhvciBvZiBsaWJzd3NjYWxlLCBpIGZpbmQgdGhpcyBxdWl0ZSBvZmZlbnNpdmUu Cj4KCkxvb2tzIGxpa2UgUnVzdCBpcyBub3Qgc28gcG9wdWxhciwgc28gYmlnZ2VyIGNvaW5zIGFy ZSBpbiBGRmxhbmQuCgoKPgo+IHRoeAo+Cj4gWy4uLl0KPiAtLQo+IE1pY2hhZWwgICAgIEdudVBH IGZpbmdlcnByaW50OiA5RkYyMTI4QjE0N0VGNjczMEJBREYxMzM2MTFFQzc4NzA0MEIwRkFCCj4K PiBFdmVyeXRoaW5nIHNob3VsZCBiZSBtYWRlIGFzIHNpbXBsZSBhcyBwb3NzaWJsZSwgYnV0IG5v dCBzaW1wbGVyLgo+IC0tIEFsYmVydCBFaW5zdGVpbgo+IF9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+IGZm bXBlZy1kZXZlbEBmZm1wZWcub3JnCj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGlu Zm8vZmZtcGVnLWRldmVsCj4KPiBUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3Ig ZW1haWwKPiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5z dWJzY3JpYmUiLgo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0 cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNj cmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZt cGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K