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 BDD6A40963 for ; Sun, 3 Apr 2022 22:37:55 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4763868B2B7; Mon, 4 Apr 2022 01:37:53 +0300 (EEST) Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A660168B266 for ; Mon, 4 Apr 2022 01:37:46 +0300 (EEST) Received: by mail-wr1-f52.google.com with SMTP id c7so12059142wrd.0 for ; Sun, 03 Apr 2022 15:37:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=iiaySnnKIxTU4dflKFqxOKcq3lNZIs/wUSwJ5+X8kMY=; b=gkKoZ9ekCM9qmBUb6eVEoqPKMK5z1TAKm+zP0GdzpKugadhmHIpVRnpPmL/XT2jSRj qg8P2E2H+5JVf10jN5blCutln09uopTu73O0+y1qvQQDvAvFovkLBbdHvW+jbMNkvHsj 5urOeIWSmR0Vtkp6RZzgKVmQpcK9EIPaebIj5HzW9d9ZzX1VeucGR6VDe21kf934eyrA JfvTvfeQdm82e+Trk5Y83WnAfi/hRaoNTXuOnclHW9g3LE004kJHmZEmdOpyEoHSO10h muOJji/eRVxvejp6Sg2eH3E/1Ahb6lbiHzFyeSCzKSIWMR1EyYiaUz02mJNN+PQKQqXQ 4qJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=iiaySnnKIxTU4dflKFqxOKcq3lNZIs/wUSwJ5+X8kMY=; b=EyqZWOulHLmb49yF5NGdIMluXR3G0IZPDS2G1vbI/PhZHv4NIKuPnWc+L/hF7fqOYc uNuir9jgXLM5JvN0c/uA0eq37L4lp+zCYFXX4W9fgeYVVf6sGtpKge3hnmmxdYqdOM0W k/v8m+dup8DyNABAFDs9gqF3YVZSXTFdCs1UH1+3nqAee3N5MZAkKFDz3oUaD9NqLir5 nKl5X9Ampj/pFuC8OLdbSoih+6sNpXUHZ98BlfjuGENSdlS7/z0VUT2+5BzkFBl48ovh n8uR00yEGR/j7sE7kDCqE0HQiHRFAODP9ahKdqa5JN2UDKahTpxuVf8c+r/+HzE8iYH6 vsaw== X-Gm-Message-State: AOAM533GF94FTxBFr6AZ7m2Ol+06Fw9eXu5dF/XUWblcLav2yZ2Lbcja 0ZlZgeeVDFxluAroV31BT4G+YaCgrqQa8LVskYW6Q2ok X-Google-Smtp-Source: ABdhPJzSyCKVK87+4RQTgWMt6MXnW1I93fZCoFxbI/zpkqs3fR5TryKWbje7RwtTDh4owVbvFiTag4Pf020WkXncmmc= X-Received: by 2002:a5d:64aa:0:b0:206:132a:aeb5 with SMTP id m10-20020a5d64aa000000b00206132aaeb5mr1030960wrp.561.1649025465570; Sun, 03 Apr 2022 15:37:45 -0700 (PDT) MIME-Version: 1.0 References: <20220401000852.156566-1-markg85@gmail.com> <20220401000852.156566-2-markg85@gmail.com> <20220401153906.GQ2829255@pb2> In-Reply-To: From: Mark Gaiser Date: Mon, 4 Apr 2022 00:36:34 +0200 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v11 1/1] avformat: Add IPFS protocol support. 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: michael@niedermayer.cc 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: T24gU3VuLCBBcHIgMywgMjAyMiBhdCA4OjAwIFBNIE1hcmsgR2Fpc2VyIDxtYXJrZzg1QGdtYWls LmNvbT4gd3JvdGU6Cgo+Cj4gT24gU3VuLCBBcHIgMywgMjAyMiBhdCA3OjU0IFBNIE1hcmsgR2Fp c2VyIDxtYXJrZzg1QGdtYWlsLmNvbT4gd3JvdGU6Cj4KPj4gT24gRnJpLCBBcHIgMSwgMjAyMiBh dCA1OjM5IFBNIE1pY2hhZWwgTmllZGVybWF5ZXIgPAo+PiBtaWNoYWVsQG5pZWRlcm1heWVyLmNj PiB3cm90ZToKPj4KPj4+IE9uIEZyaSwgQXByIDAxLCAyMDIyIGF0IDAyOjIzOjIzQU0gKzAyMDAs IE1hcmsgR2Fpc2VyIHdyb3RlOgo+Pj4gPiBPbiBGcmksIEFwciAxLCAyMDIyIGF0IDI6MDkgQU0g TWFyayBHYWlzZXIgPG1hcmtnODVAZ21haWwuY29tPiB3cm90ZToKPj4+ID4KPj4+ID4gPiBUaGlz IHBhdGNoIGFkZHMgc3VwcG9ydCBmb3I6Cj4+PiA+ID4gLSBmZnBsYXkgaXBmczovLzxjaWQ+Cj4+ PiA+ID4gLSBmZnBsYXkgaXBuczovLzxjaWQ+Cj4+PiA+ID4KPj4+ID4gPiBJUEZTIGRhdGEgY2Fu IGJlIHBsYXllZCBmcm9tIHNvIGNhbGxlZCAiaXBmcyBnYXRld2F5cyIuCj4+PiA+ID4gQSBnYXRl d2F5IGlzIGVzc2VudGlhbGx5IGEgd2Vic2VydmVyIHRoYXQgZ2l2ZXMgYWNjZXNzIHRvIHRoZQo+ Pj4gPiA+IGRpc3RyaWJ1dGVkIElQRlMgbmV0d29yay4KPj4+ID4gPgo+Pj4gPiA+IFRoaXMgcHJv dG9jb2wgc3VwcG9ydCAoaXBmcyBhbmQgaXBucykgdGhlcmVmb3JlIHRyYW5zbGF0ZXMKPj4+ID4g PiBpcGZzOi8vIGFuZCBpcG5zOi8vIHRvIGEgaHR0cDovLyB1cmwuIFRoaXMgcmVzdWx0aW5nIHVy bCBpcwo+Pj4gPiA+IHRoZW4gaGFuZGxlZCBieSB0aGUgaHR0cCBwcm90b2NvbC4gSXQgY291bGQg YWxzbyBiZSBodHRwcwo+Pj4gPiA+IGRlcGVuZGluZyBvbiB0aGUgZ2F0ZXdheSBwcm92aWRlZC4K Pj4+ID4gPgo+Pj4gPiA+IFRvIHVzZSB0aGlzIHByb3RvY29sLCBhIGdhdGV3YXkgbXVzdCBiZSBw cm92aWRlZC4KPj4+ID4gPiBJZiB5b3UgZG8gbm90aGluZyBpdCB3aWxsIHRyeSB0byBmaW5kIGl0 IGluIHlvdXIKPj4+ID4gPiAkSE9NRS8uaXBmcy9nYXRld2F5IGZpbGUuIFRoZSB3YXlzIHRvIHNl dCBpdCBtYW51YWxseSBhcmU6Cj4+PiA+ID4gMS4gRGVmaW5lIGEgLWdhdGV3YXkgPHVybD4gdG8g dGhlIGdhdGV3YXkuCj4+PiA+ID4gMi4gRGVmaW5lICRJUEZTX0dBVEVXQVkgd2l0aCB0aGUgZnVs bCBodHRwIGxpbmsgdG8gdGhlIGdhdGV3YXkuCj4+PiA+ID4gMy4gRGVmaW5lICRJUEZTX1BBVEgg YW5kIHBvaW50IGl0IHRvIHRoZSBJUEZTIGRhdGEgcGF0aC4KPj4+ID4gPiA0LiBIYXZlIElQRlMg cnVubmluZyBpbiB5b3VyIGxvY2FsIHVzZXIgZm9sZGVyICh1bmRlciAkSE9NRS8uaXBmcykuCj4+ PiA+ID4KPj4+ID4gPiBTaWduZWQtb2ZmLWJ5OiBNYXJrIEdhaXNlciA8bWFya2c4NUBnbWFpbC5j b20+Cj4+PiA+ID4gLS0tCj4+PiA+ID4gIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgfCAgIDIg Kwo+Pj4gPiA+ICBkb2MvcHJvdG9jb2xzLnRleGkgICAgICAgIHwgIDMwICsrKysKPj4+ID4gPiAg bGliYXZmb3JtYXQvTWFrZWZpbGUgICAgICB8ICAgMiArCj4+PiA+ID4gIGxpYmF2Zm9ybWF0L2lw ZnNnYXRld2F5LmMgfCAzMjgKPj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4+PiA+ID4gIGxpYmF2Zm9ybWF0L3Byb3RvY29scy5jICAgfCAgIDIgKwo+Pj4gPiA+ICA1 IGZpbGVzIGNoYW5nZWQsIDM2NCBpbnNlcnRpb25zKCspCj4+PiA+ID4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jCj4+PiA+ID4KPj4+ID4gPiBkaWZmIC0tZ2l0 IGEvY29uZmlndXJlIGIvY29uZmlndXJlCj4+PiA+ID4gaW5kZXggZTRkMzZhYTYzOS4uNTVhZjkw OTU3YSAxMDA3NTUKPj4+ID4gPiAtLS0gYS9jb25maWd1cmUKPj4+ID4gPiArKysgYi9jb25maWd1 cmUKPj4+ID4gPiBAQCAtMzU3OSw2ICszNTc5LDggQEAgdWRwX3Byb3RvY29sX3NlbGVjdD0ibmV0 d29yayIKPj4+ID4gPiAgdWRwbGl0ZV9wcm90b2NvbF9zZWxlY3Q9Im5ldHdvcmsiCj4+PiA+ID4g IHVuaXhfcHJvdG9jb2xfZGVwcz0ic3lzX3VuX2giCj4+PiA+ID4gIHVuaXhfcHJvdG9jb2xfc2Vs ZWN0PSJuZXR3b3JrIgo+Pj4gPiA+ICtpcGZzX3Byb3RvY29sX3NlbGVjdD0iaHR0cHNfcHJvdG9j b2wiCj4+PiA+ID4gK2lwbnNfcHJvdG9jb2xfc2VsZWN0PSJodHRwc19wcm90b2NvbCIKPj4+ID4g Pgo+Pj4gPiA+ICAjIGV4dGVybmFsIGxpYnJhcnkgcHJvdG9jb2xzCj4+PiA+ID4gIGxpYmFtcXBf cHJvdG9jb2xfZGVwcz0ibGlicmFiYml0bXEiCj4+PiA+ID4gZGlmZiAtLWdpdCBhL2RvYy9wcm90 b2NvbHMudGV4aSBiL2RvYy9wcm90b2NvbHMudGV4aQo+Pj4gPiA+IGluZGV4IGQyMDdkZjBiNTIu LjdjOWMwYTQ4MDggMTAwNjQ0Cj4+PiA+ID4gLS0tIGEvZG9jL3Byb3RvY29scy50ZXhpCj4+PiA+ ID4gKysrIGIvZG9jL3Byb3RvY29scy50ZXhpCj4+PiA+ID4gQEAgLTIwMjUsNSArMjAyNSwzNSBA QCBkZWNvZGluZyBlcnJvcnMuCj4+PiA+ID4KPj4+ID4gPiAgQGVuZCB0YWJsZQo+Pj4gPiA+Cj4+ PiA+ID4gK0BzZWN0aW9uIGlwZnMKPj4+ID4gPiArCj4+PiA+ID4gK0ludGVyUGxhbmV0YXJ5IEZp bGUgU3lzdGVtIChJUEZTKSBwcm90b2NvbCBzdXBwb3J0LiBPbmUgY2FuIGFjY2Vzcwo+Pj4gZmls ZXMKPj4+ID4gPiBzdG9yZWQKPj4+ID4gPiArb24gdGhlIElQRlMgbmV0d29yayB0aHJvdWdoIHNv IGNhbGxlZCBnYXRld2F5cy4gVGhvc2UgYXJlIGh0dHAocykKPj4+ID4gPiBlbmRwb2ludHMuCj4+ PiA+ID4gK1RoaXMgcHJvdG9jb2wgd3JhcHMgdGhlIElQRlMgbmF0aXZlIHByb3RvY29scyAoaXBm czovLyBhbmQgaXBuczovLykKPj4+IHRvIGJlCj4+PiA+ID4gc2VuZAo+Pj4gPiA+ICt0byBzdWNo IGEgZ2F0ZXdheS4gVXNlcnMgY2FuIChhbmQgc2hvdWxkKSBob3N0IHRoZWlyIG93biBub2RlIHdo aWNoCj4+PiBtZWFucwo+Pj4gPiA+IHRoaXMKPj4+ID4gPiArcHJvdG9jb2wgd2lsbCB1c2UgeW91 ciBsb2NhbCBtYWNoaW5lIGdhdGV3YXkgdG8gYWNjZXNzIGZpbGVzIG9uIHRoZQo+Pj4gSVBGUwo+ Pj4gPiA+IG5ldHdvcmsuCj4+PiA+ID4gKwo+Pj4gPiA+ICtJZiBhIHVzZXIgZG9lc24ndCBoYXZl IGEgbm9kZSBvZiB0aGVpciBvd24gdGhlbiB0aGUgcHVibGljIGdhdGV3YXkKPj4+ID4gPiBkd2Vi LmxpbmsgaXMKPj4+ID4gPiArdXNlZCBieSBkZWZhdWx0Lgo+Pj4gPiA+ICsKPj4+ID4gPiArWW91 IGNhbiB1c2UgdGhpcyBwcm90b2NvbCBpbiAyIHdheXMuIFVzaW5nIElQRlM6Cj4+PiA+ID4gK0Bl eGFtcGxlCj4+PiA+ID4gK2ZmcGxheSBpcGZzOi8vUW1iR3RKZzIzc2todkZtdTltSmllUFZCeWhm enU1cndvNzRNRWtWRFlBbUY1VAo+Pj4gPiA+ICtAZW5kIGV4YW1wbGUKPj4+ID4gPiArCj4+PiA+ ID4gK09yIHRoZSBJUE5TIHByb3RvY29sIChJUE5TIGlzIG11dGFibGUgSVBGUyk6Cj4+PiA+ID4g K0BleGFtcGxlCj4+PiA+ID4gK2ZmcGxheSBpcG5zOi8vUW1iR3RKZzIzc2todkZtdTltSmllUFZC eWhmenU1cndvNzRNRWtWRFlBbUY1VAo+Pj4gPiA+ICtAZW5kIGV4YW1wbGUKPj4+ID4gPiArCj4+ PiA+ID4gK1lvdSBjYW4gYWxzbyBjaGFuZ2UgdGhlIGdhdGV3YXkgdG8gYmUgdXNlZDoKPj4+ID4g PiArCj4+PiA+ID4gK0B0YWJsZSBAb3B0aW9uCj4+PiA+ID4gKwo+Pj4gPiA+ICtAaXRlbSBnYXRl d2F5Cj4+PiA+ID4gK0RlZmluZXMgdGhlIGdhdGV3YXkgdG8gdXNlLiBXaGVuIG5vdGhpbmcgaXMg cHJvdmlkZWQgdGhlIHByb3RvY29sCj4+PiB3aWxsCj4+PiA+ID4gZmlyc3QgdHJ5Cj4+PiA+ID4g K3lvdXIgbG9jYWwgZ2F0ZXdheS4gSWYgdGhhdCBmYWlscyBkd2ViLmxpbmsgd2lsbCBiZSB1c2Vk Lgo+Pj4gPiA+ICsKPj4+ID4gPiArQGVuZCB0YWJsZQo+Pj4gPiA+Cj4+PiA+ID4gIEBjIG1hbiBl bmQgUFJPVE9DT0xTCj4+PiA+ID4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlIGIv bGliYXZmb3JtYXQvTWFrZWZpbGUKPj4+ID4gPiBpbmRleCBkNzE4MmQ2YmQ4Li5lMzIzM2ZkN2Fj IDEwMDY0NAo+Pj4gPiA+IC0tLSBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlCj4+PiA+ID4gKysrIGIv bGliYXZmb3JtYXQvTWFrZWZpbGUKPj4+ID4gPiBAQCAtNjYwLDYgKzY2MCw4IEBAIE9CSlMtJChD T05GSUdfU1JUUF9QUk9UT0NPTCkgICAgICAgICAgICAgKz0KPj4+ID4gPiBzcnRwcHJvdG8ubyBz cnRwLm8KPj4+ID4gPiAgT0JKUy0kKENPTkZJR19TVUJGSUxFX1BST1RPQ09MKSAgICAgICAgICAr PSBzdWJmaWxlLm8KPj4+ID4gPiAgT0JKUy0kKENPTkZJR19URUVfUFJPVE9DT0wpICAgICAgICAg ICAgICArPSB0ZWVwcm90by5vIHRlZV9jb21tb24ubwo+Pj4gPiA+ICBPQkpTLSQoQ09ORklHX1RD UF9QUk9UT0NPTCkgICAgICAgICAgICAgICs9IHRjcC5vCj4+PiA+ID4gK09CSlMtJChDT05GSUdf SVBGU19QUk9UT0NPTCkgICAgICAgICAgICAgKz0gaXBmc2dhdGV3YXkubwo+Pj4gPiA+ICtPQkpT LSQoQ09ORklHX0lQTlNfUFJPVE9DT0wpICAgICAgICAgICAgICs9IGlwZnNnYXRld2F5Lm8KPj4+ ID4gPiAgVExTLU9CSlMtJChDT05GSUdfR05VVExTKSAgICAgICAgICAgICAgICArPSB0bHNfZ251 dGxzLm8KPj4+ID4gPiAgVExTLU9CSlMtJChDT05GSUdfTElCVExTKSAgICAgICAgICAgICAgICAr PSB0bHNfbGlidGxzLm8KPj4+ID4gPiAgVExTLU9CSlMtJChDT05GSUdfTUJFRFRMUykgICAgICAg ICAgICAgICArPSB0bHNfbWJlZHRscy5vCj4+PiA+ID4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0 L2lwZnNnYXRld2F5LmMgYi9saWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jCj4+PiA+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPj4+ID4gPiBpbmRleCAwMDAwMDAwMDAwLi43MjVjYzVlNDc0Cj4+PiA+ ID4gLS0tIC9kZXYvbnVsbAo+Pj4gPiA+ICsrKyBiL2xpYmF2Zm9ybWF0L2lwZnNnYXRld2F5LmMK Pj4+ID4gPiBAQCAtMCwwICsxLDMyOCBAQAo+Pj4gPiA+ICsvKgo+Pj4gPiA+ICsgKiBJUEZTIGFu ZCBJUE5TIHByb3RvY29sIHN1cHBvcnQgdGhyb3VnaCBJUEZTIEdhdGV3YXkuCj4+PiA+ID4gKyAq IENvcHlyaWdodCAoYykgMjAyMiBNYXJrIEdhaXNlcgo+Pj4gPiA+ICsgKgo+Pj4gPiA+ICsgKiBU aGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4+PiA+ID4gKyAqCj4+PiA+ID4gKyAqIEZGbXBl ZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKPj4+ID4g PiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYwo+Pj4gPiA+ICsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPj4+ID4gPiArICogdmVyc2lvbiAyLjEgb2YgdGhlIExp Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyCj4+PiB2ZXJzaW9uLgo+Pj4gPiA+ ICsgKgo+Pj4gPiA+ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKPj4+ID4gPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPj4+ID4gPiArICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK Pj4+ID4gPiArICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KPj4+ID4gPiArICoKPj4+ID4gPiArICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+Pj4gPiA+ICsgKiBMaWNlbnNlIGFs b25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4+PiA+ ID4gKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is IEJvc3RvbiwgTUEKPj4+ID4gPiAwMjExMC0xMzAxIFVTQQo+Pj4gPiA+ICsgKi8KPj4+ID4gPiAr Cj4+PiA+ID4gKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZzdHJpbmcuaCIKPj4+ID4gPiArI2luY2x1 ZGUgImxpYmF2dXRpbC9vcHQuaCIKPj4+ID4gPiArI2luY2x1ZGUgInVybC5oIgo+Pj4gPiA+ICsj aW5jbHVkZSA8c3lzL3N0YXQuaD4KPj4+ID4gPiArCj4+PiA+ID4gK3R5cGVkZWYgc3RydWN0IElQ RlNHYXRld2F5Q29udGV4dCB7Cj4+PiA+ID4gKyAgICBBVkNsYXNzICpjbGFzczsKPj4+ID4gPiAr ICAgIFVSTENvbnRleHQgKmlubmVyOwo+Pj4gPiA+ICsgICAgLy8gSXMgZmlsbGVkIGJ5IHRoZSAt Z2F0ZXdheSBhcmd1bWVudCBhbmQgbm90IGNoYW5nZWQgYWZ0ZXIuCj4+PiA+ID4gKyAgICBjaGFy ICpnYXRld2F5Owo+Pj4gPiA+ICsgICAgLy8gSWYgdGhlIGFib3ZlIGdhdGV3YXkgaXMgbm9uIG51 bGwsIGl0IHdpbGwgYmUgY29waWVkIGludG8gdGhpcwo+Pj4gPiA+IGJ1ZmZlci4KPj4+ID4gPiAr ICAgIC8vIEVsc2UgdGhpcyBidWZmZXIgd2lsbCBjb250YWluIHRoZSBhdXRvIGRldGVjdGVkIGdh dGV3YXkuCj4+PiA+ID4gKyAgICAvLyBJbiBlaXRoZXIgY2FzZSwgdGhlIGdhdGV3YXkgdG8gdXNl IHdpbGwgYmUgaW4gdGhpcyBidWZmZXIuCj4+PiA+ID4gKyAgICBjaGFyIGdhdGV3YXlfYnVmZmVy W1BBVEhfTUFYXTsKPj4+ID4gPiArfSBJUEZTR2F0ZXdheUNvbnRleHQ7Cj4+PiA+ID4gKwo+Pj4g PiA+ICsvLyBBIGJlc3QtZWZmb3J0IHdheSB0byBmaW5kIHRoZSBJUEZTIGdhdGV3YXkuCj4+PiA+ ID4gKy8vIE9ubHkgdGhlIG1vc3QgYXBwcm9waWF0ZSBnYXRld2F5IGlzIHNldC4gSXQncyBub3Qg YWN0dWFsbHkKPj4+IHJlcXVlc3RlZAo+Pj4gPiA+ICsvLyAoaHR0cCBjYWxsKSB0byBwcmV2ZW50 IGEgcG90ZW50aWFsIHNsb3dkb3duIGluIHN0YXJ0dXAuIEEKPj4+IHBvdGVudGlhbAo+Pj4gPiA+ IHRpbWVvdXQKPj4+ID4gPiArLy8gaXMgaGFuZGxlZCBieSB0aGUgSFRUUCBwcm90b2NvbC4KPj4+ ID4gPiArc3RhdGljIGludCBwb3B1bGF0ZV9pcGZzX2dhdGV3YXkoVVJMQ29udGV4dCAqaCkKPj4+ ID4gPiArewo+Pj4gPiA+ICsgICAgSVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+cHJpdl9kYXRh Owo+Pj4gPiA+ICsgICAgY2hhciBpcGZzX2Z1bGxfZGF0YV9mb2xkZXJbUEFUSF9NQVhdOwo+Pj4g PiA+ICsgICAgY2hhciBpcGZzX2dhdGV3YXlfZmlsZVtQQVRIX01BWF07Cj4+PiA+ID4gKyAgICBz dHJ1Y3Qgc3RhdCBzdDsKPj4+ID4gPiArICAgIGludCBzdGF0X3JldCA9IDA7Cj4+PiA+ID4gKyAg ICBpbnQgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+Pj4gPiA+ICsgICAgRklMRSAqZ2F0ZXdheV9m aWxlID0gTlVMTDsKPj4+ID4gPiArCj4+PiA+ID4gKyAgICAvLyBUZXN0ICRJUEZTX0dBVEVXQVku Cj4+PiA+ID4gKyAgICBpZiAoZ2V0ZW52KCJJUEZTX0dBVEVXQVkiKSAhPSBOVUxMKSB7Cj4+PiA+ ID4gKyAgICAgICAgaWYgKHNucHJpbnRmKGMtPmdhdGV3YXlfYnVmZmVyLCBzaXplb2YoYy0+Z2F0 ZXdheV9idWZmZXIpLAo+Pj4gIiVzIiwKPj4+ID4gPiArICAgICAgICAgICAgICAgICAgICAgZ2V0 ZW52KCJJUEZTX0dBVEVXQVkiKSkgPj0KPj4+ID4gPiBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIp KSB7Cj4+PiA+ID4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJ UEZTX0dBVEVXQVkgZW52aXJvbm1lbnQKPj4+ID4gPiB2YXJpYWJsZSAiCj4+PiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VlZHMgdGhlIG1heGltdW0gbGVu Z3RoLiAiCj4+PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldl IGFsbG93IGEgbWF4IG9mICV6dQo+Pj4gPiA+IGNoYXJhY3RlcnNcbiIsCj4+PiA+ID4gKyAgICAg ICAgICAgICAgICAgICBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpKTsKPj4+ID4gPiArICAgICAg ICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+Pj4gPiA+ICsgICAgICAgICAgICBnb3RvIGVy cjsKPj4+ID4gPiArICAgICAgICB9Cj4+PiA+ID4gKwo+Pj4gPiA+ICsgICAgICAgIHJldCA9IDE7 Cj4+PiA+ID4gKyAgICAgICAgZ290byBlcnI7Cj4+PiA+ID4gKyAgICB9IGVsc2UKPj4+ID4gPiAr ICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0RFQlVHLCAiJElQRlNfR0FURVdBWSBpcyBlbXB0eS5c biIpOwo+Pj4gPiA+ICsKPj4+ID4gPiArICAgIC8vIFdlIG5lZWQgdG8ga25vdyB0aGUgSVBGUyBm b2xkZXIgdG8gLSBldmVudHVhbGx5IC0gcmVhZCB0aGUKPj4+ID4gPiBjb250ZW50cyBvZgo+Pj4g PiA+ICsgICAgLy8gdGhlICJnYXRld2F5IiBmaWxlIHdoaWNoIHdvdWxkIHRlbGwgdXMgdGhlIGdh dGV3YXkgdG8gdXNlLgo+Pj4gPiA+ICsgICAgaWYgKGdldGVudigiSVBGU19QQVRIIikgPT0gTlVM TCkgewo+Pj4gPiA+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfREVCVUcsICIkSVBGU19QQVRI IGlzIGVtcHR5LlxuIik7Cj4+PiA+ID4gKwo+Pj4gPiA+ICsgICAgICAgIC8vIFRyeSB2aWEgdGhl IGhvbWUgZm9sZGVyLgo+Pj4gPiA+ICsgICAgICAgIGlmIChnZXRlbnYoIkhPTUUiKSA9PSBOVUxM KSB7Cj4+PiA+ID4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIiRIT01F IGFwcGVhcnMgdG8gYmUKPj4+IGVtcHR5LlxuIik7Cj4+PiA+ID4gKyAgICAgICAgICAgIHJldCA9 IEFWRVJST1IoRUlOVkFMKTsKPj4+ID4gPiArICAgICAgICAgICAgZ290byBlcnI7Cj4+PiA+ID4g KyAgICAgICAgfQo+Pj4gPiA+ICsKPj4+ID4gPiArICAgICAgICAvLyBWZXJpZnkgdGhlIGNvbXBv c2VkIHBhdGggZml0cy4KPj4+ID4gPiArICAgICAgICBpZiAoc25wcmludGYoaXBmc19mdWxsX2Rh dGFfZm9sZGVyLAo+Pj4gc2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlciksCj4+PiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICIlcy8uaXBmcy8iLCBnZXRlbnYoIkhPTUUiKSkgPj0KPj4+ID4g PiBzaXplb2YoaXBmc19mdWxsX2RhdGFfZm9sZGVyKSkgewo+Pj4gPiA+ICsgICAgICAgICAgICBh dl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgSVBGUyBkYXRhIHBhdGggZXhjZWVkcwo+Pj4g dGhlICIKPj4+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWF4 IHBhdGggbGVuZ3RoICglenUpXG4iLAo+Pj4gPiA+ICsgICAgICAgICAgICAgICAgICAgc2l6ZW9m KGlwZnNfZnVsbF9kYXRhX2ZvbGRlcikpOwo+Pj4gPiA+ICsgICAgICAgICAgICByZXQgPSBBVkVS Uk9SKEVJTlZBTCk7Cj4+PiA+ID4gKyAgICAgICAgICAgIGdvdG8gZXJyOwo+Pj4gPiA+ICsgICAg ICAgIH0KPj4+ID4gPiArCj4+PiA+ID4gKyAgICAgICAgLy8gU3RhdCB0aGUgZm9sZGVyLgo+Pj4g PiA+ICsgICAgICAgIC8vIEl0IHNob3VsZCBleGlzdCBpbiBhIGRlZmF1bHQgSVBGUyBzZXR1cCB3 aGVuIHJ1biBhcwo+Pj4gbG9jYWwgdXNlci4KPj4+ID4gPiArI2lmbmRlZiBfV0lOMzIKPj4+ID4g PiArICAgICAgICBzdGF0X3JldCA9IHN0YXQoaXBmc19mdWxsX2RhdGFfZm9sZGVyLCAmc3QpOwo+ Pj4gPiA+ICsjZWxzZQo+Pj4gPiA+ICsgICAgICAgIHN0YXRfcmV0ID0gd2luMzJfc3RhdChpcGZz X2Z1bGxfZGF0YV9mb2xkZXIsICZzdCk7Cj4+PiA+ID4gKyNlbmRpZgo+Pj4gPiA+ICsgICAgICAg IGlmIChzdGF0X3JldCA8IDApIHsKPj4+ID4gPiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xP R19JTkZPLCAiVW5hYmxlIHRvIGZpbmQgSVBGUyBmb2xkZXIuIFdlCj4+PiA+ID4gdHJpZWQ6XG4i KTsKPj4+ID4gPiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiLSAkSVBGU19Q QVRILCB3aGljaCB3YXMKPj4+IGVtcHR5LlxuIik7Cj4+PiA+ID4gKyAgICAgICAgICAgIGF2X2xv ZyhoLCBBVl9MT0dfSU5GTywgIi0gJEhPTUUvLmlwZnMgKGZ1bGwgdXJpOiAlcykKPj4+IHdoaWNo Cj4+PiA+ID4gZG9lc24ndCBleGlzdC5cbiIsIGlwZnNfZnVsbF9kYXRhX2ZvbGRlcik7Cj4+PiA+ ID4gKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRU5PRU5UKTsKPj4+ID4gPiArICAgICAgICAg ICAgZ290byBlcnI7Cj4+PiA+ID4gKyAgICAgICAgfQo+Pj4gPiA+ICsgICAgfSBlbHNlIHsKPj4+ ID4gPiArICAgICAgICBpZiAoc25wcmludGYoaXBmc19mdWxsX2RhdGFfZm9sZGVyLAo+Pj4gPiA+ IHNpemVvZihpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpLCAiJXMiLAo+Pj4gPiA+ICsgICAgICAgICAg ICAgICAgIGdldGVudigiSVBGU19QQVRIIikpID49Cj4+PiBzaXplb2YoaXBmc19mdWxsX2RhdGFf Zm9sZGVyKSkgewo+Pj4gPiA+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcs ICJUaGUgSVBGU19QQVRIIGVudmlyb25tZW50Cj4+PiB2YXJpYWJsZQo+Pj4gPiA+ICIKPj4+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZWVkcyB0aGUgbWF4 aW11bSBsZW5ndGguICIKPj4+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiV2UgYWxsb3cgYSBtYXggb2YgJXp1Cj4+PiA+ID4gY2hhcmFjdGVyc1xuIiwKPj4+ID4g PiArICAgICAgICAgICAgICAgICAgIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikpOwo+Pj4gPiA+ ICsgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4+PiA+ID4gKyAgICAgICAgICAg IGdvdG8gZXJyOwo+Pj4gPiA+ICsgICAgICAgIH0KPj4+ID4gPiArCj4+PiA+ID4gKyAgICB9Cj4+ PiA+ID4gKwo+Pj4gPiA+ICsgICAgLy8gQ29weSB0aGUgZnVsbHkgY29tcG9zZWQgZ2F0ZXdheSBw YXRoIGludG8gaXBmc19nYXRld2F5X2ZpbGUuCj4+PiA+ID4gKyAgICBpZiAoc25wcmludGYoaXBm c19nYXRld2F5X2ZpbGUsIHNpemVvZihpcGZzX2dhdGV3YXlfZmlsZSksCj4+PiA+ID4gIiVzZ2F0 ZXdheSIsCj4+PiA+ID4gKyAgICAgICAgICAgICAgICAgaXBmc19mdWxsX2RhdGFfZm9sZGVyKSA+ PQo+Pj4gc2l6ZW9mKGlwZnNfZ2F0ZXdheV9maWxlKSkgewo+Pj4gPiA+ICsgICAgICAgIGF2X2xv ZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTIGdhdGV3YXkgZmlsZSBwYXRoCj4+PiBleGNl ZWRzICIKPj4+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgbWF4 IHBhdGggbGVuZ3RoICglenUpXG4iLAo+Pj4gPiA+ICsgICAgICAgICAgICAgICBzaXplb2YoaXBm c19nYXRld2F5X2ZpbGUpKTsKPj4+ID4gPiArICAgICAgICByZXQgPSBBVkVSUk9SKEVOT0VOVCk7 Cj4+PiA+ID4gKyAgICAgICAgZ290byBlcnI7Cj4+PiA+ID4gKyAgICB9Cj4+PiA+ID4gKwo+Pj4g PiA+ICsgICAgLy8gR2V0IHRoZSBjb250ZW50cyBvZiB0aGUgZ2F0ZXdheSBmaWxlLgo+Pj4gPiA+ ICsgICAgZ2F0ZXdheV9maWxlID0gYXZfZm9wZW5fdXRmOChpcGZzX2dhdGV3YXlfZmlsZSwgInIi KTsKPj4+ID4gPiArICAgIGlmICghZ2F0ZXdheV9maWxlKSB7Cj4+PiA+ID4gKyAgICAgICAgYXZf bG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIElQRlMgZ2F0ZXdheSBmaWxlIChmdWxsIHVyaToK Pj4+ICVzKQo+Pj4gPiA+IGRvZXNuJ3QgZXhpc3QuICIKPj4+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJJcyB0aGUgZ2F0ZXdheSBlbmFibGVkP1xuIiwKPj4+ID4gPiAr ICAgICAgICAgICAgICAgaXBmc19nYXRld2F5X2ZpbGUpOwo+Pj4gPiA+ICsgICAgICAgIHJldCA9 IEFWRVJST1IoRU5PRU5UKTsKPj4+ID4gPiArICAgICAgICBnb3RvIGVycjsKPj4+ID4gPiArICAg IH0KPj4+ID4gPiArCj4+PiA+ID4gKyAgICAvLyBSZWFkIGEgc2luZ2xlIGxpbmUgKGZnZXRzIHN0 b3BzIGF0IG5ldyBsaW5lIG1hcmspLgo+Pj4gPiA+ICsgICAgaWYgKCFmZ2V0cyhjLT5nYXRld2F5 X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSAtIDEsCj4+PiA+ID4gZ2F0ZXdheV9m aWxlKSkgewo+Pj4gPiA+ICsgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJVbmFibGUg dG8gcmVhZCBmcm9tIGZpbGUgKGZ1bGwgdXJpOgo+Pj4gPiA+ICVzKS5cbiIsCj4+PiA+ID4gKyAg ICAgICAgICAgICBpcGZzX2dhdGV3YXlfZmlsZSk7Cj4+PiA+ID4gKyAgICAgIHJldCA9IEFWRVJS T1IoRU5PRU5UKTsKPj4+ID4gPiArICAgICAgZ290byBlcnI7Cj4+PiA+ID4gKyAgICB9Cj4+PiA+ ID4gKwo+Pj4gPiA+ICsgICAgLy8gUmVwbGFjZSBmaXJzdCBvY2N1cmVuY2Ugb2YgZW5kIG9mIGxp bmUgd2l0aCBcMAo+Pj4gPiA+ICsgICAgYy0+Z2F0ZXdheV9idWZmZXJbc3RyY3NwbihjLT5nYXRl d2F5X2J1ZmZlciwgIlxyXG4iKV0gPSAwOwo+Pj4gPiA+ICsKPj4+ID4gPiArICAgIC8vIElmIHN0 cmxlbiBmaW5kcyBhbnl0aGluZyBsb25nZXIgdGhlbiAwIGNoYXJhY3RlcnMgdGhlbiB3ZQo+Pj4g aGF2ZSBhCj4+PiA+ID4gKyAgICAvLyBwb3RlbnRpYWwgZ2F0ZXdheSB1cmwuCj4+PiA+ID4gKyAg ICBpZiAoKmMtPmdhdGV3YXlfYnVmZmVyID09ICdcMCcpIHsKPj4+ID4gPiArICAgICAgICBhdl9s b2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgSVBGUyBnYXRld2F5IGZpbGUgKGZ1bGwgdXJpOgo+ Pj4gJXMpCj4+PiA+ID4gYXBwZWFycyB0byBiZSBlbXB0eS4gIgo+Pj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIklzIHRoZSBnYXRld2F5IHN0YXJ0ZWQ/XG4iLAo+Pj4g PiA+ICsgICAgICAgICAgICAgICBpcGZzX2dhdGV3YXlfZmlsZSk7Cj4+PiA+ID4gKyAgICAgICAg cmV0ID0gQVZFUlJPUihFSUxTRVEpOwo+Pj4gPiA+ICsgICAgICAgIGdvdG8gZXJyOwo+Pj4gPiA+ ICsgICAgfSBlbHNlIHsKPj4+ID4gPiArICAgICAgICAvLyBXZSdyZSBkb25lLCB0aGUgYy0+Z2F0 ZXdheV9idWZmZXIgaGFzIHNvbWV0aGluZyB0aGF0Cj4+PiBsb29rcwo+Pj4gPiA+IHZhbGlkLgo+ Pj4gPiA+ICsgICAgICAgIHJldCA9IDE7Cj4+PiA+ID4gKyAgICAgICAgZ290byBlcnI7Cj4+PiA+ ID4gKyAgICB9Cj4+PiA+ID4gKwo+Pj4gPiA+ICtlcnI6Cj4+PiA+ID4gKyAgICBpZiAoZ2F0ZXdh eV9maWxlKQo+Pj4gPiA+ICsgICAgICAgIGZjbG9zZShnYXRld2F5X2ZpbGUpOwo+Pj4gPiA+ICsK Pj4+ID4gPiArICAgIHJldHVybiByZXQ7Cj4+PiA+ID4gK30KPj4+ID4gPiArCj4+PiA+ID4gK3N0 YXRpYyBpbnQgdHJhbnNsYXRlX2lwZnNfdG9faHR0cChVUkxDb250ZXh0ICpoLCBjb25zdCBjaGFy ICp1cmksCj4+PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxh Z3MsIEFWRGljdGlvbmFyeSAqKm9wdGlvbnMpCj4+PiA+ID4gK3sKPj4+ID4gPiArICAgIGNvbnN0 IGNoYXIgKmlwZnNfY2lkOwo+Pj4gPiA+ICsgICAgY2hhciAqZnVsbHVyaSA9IE5VTEw7Cj4+PiA+ ID4gKyAgICBpbnQgcmV0Owo+Pj4gPiA+ICsgICAgSVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+ cHJpdl9kYXRhOwo+Pj4gPiA+ICsKPj4+ID4gPiArICAgIC8vIFRlc3QgZm9yIGlwZnM6Ly8sIGlw ZnM6LCBpcG5zOi8vIGFuZCBpcG5zOi4gVGhpcyBwcmVmaXggaXMKPj4+ID4gPiBzdHJpcHBlZCBm cm9tCj4+PiA+ID4gKyAgICAvLyB0aGUgc3RyaW5nIGxlYXZpbmcganVzdCB0aGUgQ0lEIGluIGlw ZnNfY2lkLgo+Pj4gPiA+ICsgICAgaW50IGlzX2lwZnMgPSBhdl9zdHJpc3RhcnQodXJpLCAiaXBm czovLyIsICZpcGZzX2NpZCk7Cj4+PiA+ID4gKyAgICBpbnQgaXNfaXBucyA9IGF2X3N0cmlzdGFy dCh1cmksICJpcG5zOi8vIiwgJmlwZnNfY2lkKTsKPj4+ID4gPiArCj4+PiA+ID4gKyAgICAvLyBX ZSBtdXN0IGhhdmUgZWl0aGVyIGlwbnMgb3IgaXBmcy4KPj4+ID4gPiArICAgIGlmICghaXNfaXBm cyAmJiAhaXNfaXBucykgewo+Pj4gPiA+ICsgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsK Pj4+ID4gPiArICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJVbnN1cHBvcnRlZCB1 cmwgJXNcbiIsIHVyaSk7Cj4+PiA+ID4gKyAgICAgICAgZ290byBlcnI7Cj4+PiA+ID4gKyAgICB9 Cj4+PiA+ID4gKwo+Pj4gPiA+ICsgICAgLy8gSWYgdGhlIENJRCBoYXMgYSBsZW5ndGggZ3JlYXRl ciB0aGVuIDAgdGhlbiB3ZSBhc3N1bWUgd2UKPj4+IGhhdmUgYQo+Pj4gPiA+IHByb3BlciB3b3Jr aW5nIG9uZS4KPj4+ID4gPiArICAgIC8vIEl0IGNvdWxkIHN0aWxsIGJlIHdyb25nIGJ1dCBpbiB0 aGF0IGNhc2UgdGhlIGdhdGV3YXkgc2hvdWxkCj4+PiBzYXZlCj4+PiA+ID4gdXMgYW5kCj4+PiA+ ID4gKyAgICAvLyBydXR1cm4gYSA0MDMgZXJyb3IuIFRoZSBodHRwIHByb3RvY29sIGhhbmRsZXMg dGhpcy4KPj4+ID4gPiArICAgIGlmIChzdHJsZW4oaXBmc19jaWQpIDwgMSkgewo+Pj4gPiA+ICsg ICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIkEgQ0lEIG11c3QgYmUgcHJvdmlkZWQu XG4iKTsKPj4+ID4gPiArICAgICAgICByZXQgPSBBVkVSUk9SKEVJTFNFUSk7Cj4+PiA+ID4gKyAg ICAgICAgZ290byBlcnI7Cj4+PiA+ID4gKyAgICB9Cj4+PiA+ID4gKwo+Pj4gPiA+ICsgICAgLy8g UG9wdWxhdGUgYy0+Z2F0ZXdheV9idWZmZXIgd2l0aCB3aGF0ZXZlciBpcyBpbiBjLT5nYXRld2F5 Cj4+PiA+ID4gKyAgICBpZiAoYy0+Z2F0ZXdheSAhPSBOVUxMKSB7Cj4+PiA+ID4gKyAgICAgICAg aWYgKHNucHJpbnRmKGMtPmdhdGV3YXlfYnVmZmVyLCBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIp LAo+Pj4gIiVzIiwKPj4+ID4gPiArICAgICAgICAgICAgICAgICAgICAgYy0+Z2F0ZXdheSkgPj0g c2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSkgewo+Pj4gPiA+ICsgICAgICAgICAgICBhdl9sb2co aCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgLWdhdGV3YXkgcGFyYW1ldGVyIGlzIHRvbwo+Pj4gPiA+ IGxvbmcuICIKPj4+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi V2UgYWxsb3cgYSBtYXggb2YgJXp1Cj4+PiA+ID4gY2hhcmFjdGVyc1xuIiwKPj4+ID4gPiArICAg ICAgICAgICAgICAgICAgIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikpOwo+Pj4gPiA+ICsgICAg ICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4+PiA+ID4gKyAgICAgICAgICAgIGdvdG8g ZXJyOwo+Pj4gPiA+ICsgICAgICAgIH0KPj4+ID4gPiArICAgIH0gZWxzZSB7Cj4+PiA+ID4gKyAg ICAgICAgLy8gUG9wdWxhdGUgdGhlIElQRlMgZ2F0ZXdheSBpZiB3ZSBoYXZlIGFueS4KPj4+ID4g PiArICAgICAgICAvLyBJZiBub3QsIGluZm9ybSB0aGUgdXNlciBob3cgdG8gcHJvcGVybHkgc2V0 IG9uZS4KPj4+ID4gPiArICAgICAgICByZXQgPSBwb3B1bGF0ZV9pcGZzX2dhdGV3YXkoaCk7Cj4+ PiA+ID4gKwo+Pj4gPiA+ICsgICAgICAgIGlmIChyZXQgPCAxKSB7Cj4+PiA+ID4gKyAgICAgICAg ICAgIC8vIFdlIGZhbGxiYWNrIG9uIGR3ZWIubGluayAobWFuYWdlZCBieSBQcm90b2NvbCBMYWJz KS4KPj4+ID4gPiArICAgICAgICAgICAgc25wcmludGYoYy0+Z2F0ZXdheV9idWZmZXIsIHNpemVv ZihjLT5nYXRld2F5X2J1ZmZlciksICIKPj4+ID4gPiBodHRwczovL2R3ZWIubGluayIpOwo+Pj4g PiA+ICsKPj4+ID4gPiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiSVBG UyBkb2VzIG5vdCBhcHBlYXIgdG8gYmUKPj4+ID4gPiBydW5uaW5nLiAiCj4+PiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIllvdeKAmXJlIG5vdyB1c2luZyB0aGUg cHVibGljCj4+PiA+ID4gZ2F0ZXdheSBhdCBkd2ViLmxpbmsuXG4iKTsKPj4+ID4gPiArICAgICAg ICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiSW5zdGFsbGluZyBJUEZTIGxvY2FsbHkgaXMK Pj4+ID4gPiByZWNvbW1lbmRlZCB0byAiCj4+PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgImltcHJvdmUgcGVyZm9ybWFuY2UgYW5kCj4+PiByZWxpYWJpbGl0eSwgIgo+ Pj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgbm90IHNoYXJl IGFsbCB5b3VyIGFjdGl2aXR5Cj4+PiB3aXRoCj4+PiA+ID4gYSBzaW5nbGUgSVBGUyBnYXRld2F5 LlxuIgo+Pj4gPiA+ICsgICAgICAgICAgICAgICAgICAgIlRoZXJlIGFyZSBtdWx0aXBsZSBvcHRp b25zIHRvIGRlZmluZSB0aGlzCj4+PiBnYXRld2F5LlxuIgo+Pj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgIjEuIENhbGwgZmZtcGVnIHdpdGggYSBnYXRld2F5IHBhcmFtLCAiCj4+PiA+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGhvdXQgYSB0cmFpbGluZyBzbGFz aDoKPj4+IC1nYXRld2F5Cj4+PiA+ID4gPHVybD4uXG4iCj4+PiA+ID4gKyAgICAgICAgICAgICAg ICAgICAiMi4gRGVmaW5lIGFuICRJUEZTX0dBVEVXQVkgZW52aXJvbm1lbnQgdmFyaWFibGUKPj4+ IHdpdGgKPj4+ID4gPiB0aGUgIgo+Pj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJmdWxsIEhUVFAgVVJMIHRvIHRoZSBnYXRld2F5ICIKPj4+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aG91dCB0cmFpbGluZyBmb3J3YXJkCj4+PiBz bGFzaC5cbiIKPj4+ID4gPiArICAgICAgICAgICAgICAgICAgICIzLiBEZWZpbmUgYW4gJElQRlNf UEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSAiCj4+PiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImFuZCBwb2ludCBpdCB0byB0aGUgSVBGUyBkYXRhCj4+PiBwYXRoICIK Pj4+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLSB0aGlzIGlzIHR5 cGljYWxseSB+Ly5pcGZzXG4iKTsKPj4+ID4gPiArICAgICAgICB9Cj4+PiA+ID4gKyAgICB9Cj4+ PiA+ID4gKwo+Pj4gPiA+ICsgICAgLy8gVGVzdCBpZiB0aGUgZ2F0ZXdheSBzdGFydHMgd2l0aCBl aXRoZXIgaHR0cDovLyBvciBodHRwczovLwo+Pj4gPiA+ICsgICAgaWYgKGF2X3N0cmlzdGFydChj LT5nYXRld2F5X2J1ZmZlciwgImh0dHA6Ly8iLCBOVUxMKSA9PSAwCj4+PiA+ID4gKyAgICAgICAg JiYgYXZfc3RyaXN0YXJ0KGMtPmdhdGV3YXlfYnVmZmVyLCAiaHR0cHM6Ly8iLCBOVUxMKSA9PSAw KQo+Pj4gewo+Pj4gPiA+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBn YXRld2F5IFVSTCBkaWRuJ3Qgc3RhcnQgd2l0aAo+Pj4gPiA+IGh0dHA6Ly8gb3IgIgo+Pj4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHBzOi8vIGFuZCBpcyB0aGVy ZWZvcmUKPj4+ID4gPiBpbnZhbGlkLlxuIik7Cj4+PiA+ID4gKyAgICAgICAgcmV0ID0gQVZFUlJP UihFSUxTRVEpOwo+Pj4gPiA+ICsgICAgICAgIGdvdG8gZXJyOwo+Pj4gPiA+ICsgICAgfQo+Pj4g PiA+ICsKPj4+ID4gPiArICAgIC8vIENvbmNhdGVuYXRlIHRoZSB1cmwuCj4+PiA+ID4gKyAgICAv LyBUaGlzIGVuZHMgdXAgd2l0aCBzb21ldGhpbmcgbGlrZToKPj4+IGh0dHA6Ly9sb2NhbGhvc3Q6 ODA4MC9pcGZzL1FtLi4uCj4+PiA+ID4gLi4KPj4+ID4gPiArICAgIC8vIFRoZSBmb3JtYXQgb2Yg IiVzJXMlcyVzIiBpcyB0aGUgZm9sbG93aW5nOgo+Pj4gPiA+ICsgICAgLy8gMXN0ICVzID0gVGhl IGdhdGV3YXkuCj4+PiA+ID4gKyAgICAvLyAybmQgJXMgPSBJZiB0aGUgZ2F0ZXdheSBkaWRuJ3Qg ZW5kIGluIGEgc2xhc2gsIGFkZCBhICIvIi4KPj4+ID4gPiBPdGhlcndpc2UgaXQncyBhbiBlbXB0 eSBzdHJpbmcKPj4+ID4gPiArICAgIC8vIDNyZCAlcyA9IEVpdGhlciBpcG5zLyBvciBpcGZzLy4K Pj4+ID4gPiArICAgIC8vIDR0aCAlcyA9IFRoZSBJUEZTIENJRCAoUW0uLi4sIGJhZnkuLi4sIC4u LikuCj4+PiA+ID4gKyAgICBmdWxsdXJpID0gYXZfYXNwcmludGYoIiVzJXMlcyVzIiwKPj4+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICBjLT5nYXRld2F5X2J1ZmZlciwKPj4+ID4gPiAr Cj4+PiAoYy0+Z2F0ZXdheV9idWZmZXJbc3RybGVuKGMtPmdhdGV3YXlfYnVmZmVyKSAtCj4+PiA+ ID4gMV0gPT0gJy8nKSA/ICIiIDogIi8iLAo+Pj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgIChpc19pcG5zKSA/ICJpcG5zLyIgOiAiaXBmcy8iLAo+Pj4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgIGlwZnNfY2lkKTsKPj4+ID4gPiArCj4+PiA+ID4gKyAgICBpZiAoIWZ1bGx1 cmkpIHsKPj4+ID4gPiArICAgICAgYXZfbG9nKGgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBj b21wb3NlIHRoZSBVUkxcbiIpOwo+Pj4gPiA+ICsgICAgICByZXQgPSBBVkVSUk9SKEVOT01FTSk7 Cj4+PiA+ID4gKyAgICAgIGdvdG8gZXJyOwo+Pj4gPiA+ICsgICAgfQo+Pj4gPiA+ICsKPj4+ID4g PiArICAgIC8vIFBhc3MgdGhlIFVSTCBiYWNrIHRvIEZGTXBlZydzIHByb3RvY29sIGhhbmRsZXIu Cj4+PiA+ID4gKyAgICByZXQgPSBmZnVybF9vcGVuX3doaXRlbGlzdCgmYy0+aW5uZXIsIGZ1bGx1 cmksIGZsYWdzLAo+Pj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmgtPmlu dGVycnVwdF9jYWxsYmFjaywgb3B0aW9ucywKPj4+ID4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGgtPnByb3RvY29sX3doaXRlbGlzdCwKPj4+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGgtPnByb3RvY29sX2JsYWNrbGlzdCwgaCk7Cj4+PiA+ID4gKyAgICBp ZiAocmV0IDwgMCkgewo+Pj4gPiA+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywg IlVuYWJsZSB0byBvcGVuIHJlc291cmNlOiAlc1xuIiwKPj4+ID4gPiBmdWxsdXJpKTsKPj4+ID4g PiArICAgICAgICBnb3RvIGVycjsKPj4+ID4gPiArICAgIH0KPj4+ID4gPiArCj4+PiA+ID4gK2Vy cjoKPj4+ID4gPiArICAgIGF2X2ZyZWUoZnVsbHVyaSk7Cj4+PiA+ID4gKyAgICByZXR1cm4gcmV0 Owo+Pj4gPiA+ICt9Cj4+PiA+ID4gKwo+Pj4gPiA+ICtzdGF0aWMgaW50IGlwZnNfcmVhZChVUkxD b250ZXh0ICpoLCB1bnNpZ25lZCBjaGFyICpidWYsIGludCBzaXplKQo+Pj4gPiA+ICt7Cj4+PiA+ ID4gKyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2RhdGE7Cj4+PiA+ID4gKyAg ICByZXR1cm4gZmZ1cmxfcmVhZChjLT5pbm5lciwgYnVmLCBzaXplKTsKPj4+ID4gPiArfQo+Pj4g PiA+ICsKPj4+ID4gPiArc3RhdGljIGludDY0X3QgaXBmc19zZWVrKFVSTENvbnRleHQgKmgsIGlu dDY0X3QgcG9zLCBpbnQgd2hlbmNlKQo+Pj4gPiA+ICt7Cj4+PiA+ID4gKyAgICBJUEZTR2F0ZXdh eUNvbnRleHQgKmMgPSBoLT5wcml2X2RhdGE7Cj4+PiA+ID4gKyAgICByZXR1cm4gZmZ1cmxfc2Vl ayhjLT5pbm5lciwgcG9zLCB3aGVuY2UpOwo+Pj4gPiA+ICt9Cj4+PiA+ID4gKwo+Pj4gPiA+ICtz dGF0aWMgaW50IGlwZnNfY2xvc2UoVVJMQ29udGV4dCAqaCkKPj4+ID4gPiArewo+Pj4gPiA+ICsg ICAgSVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+cHJpdl9kYXRhOwo+Pj4gPiA+ICsgICAgcmV0 dXJuIGZmdXJsX2Nsb3NlcCgmYy0+aW5uZXIpOwo+Pj4gPiA+ICt9Cj4+PiA+ID4gKwo+Pj4gPiA+ ICsjZGVmaW5lIE9GRlNFVCh4KSBvZmZzZXRvZihJUEZTR2F0ZXdheUNvbnRleHQsIHgpCj4+PiA+ ID4gKwo+Pj4gPiA+ICtzdGF0aWMgY29uc3QgQVZPcHRpb24gb3B0aW9uc1tdID0gewo+Pj4gPiA+ ICsgICAgeyJnYXRld2F5IiwgIlRoZSBnYXRld2F5IHRvIGFzayBmb3IgSVBGUyBkYXRhLiIsCj4+ PiBPRkZTRVQoZ2F0ZXdheSksCj4+PiA+ID4gQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0ciA9IE5V TEx9LCAwLCAwLCBBVl9PUFRfRkxBR19ERUNPRElOR19QQVJBTX0sCj4+PiA+ID4gKyAgICB7TlVM TH0sCj4+PiA+ID4gK307Cj4+PiA+ID4gKwo+Pj4gPiA+ICtzdGF0aWMgY29uc3QgQVZDbGFzcyBp cGZzX2NvbnRleHRfY2xhc3MgPSB7Cj4+PiA+ID4gKyAgICAuY2xhc3NfbmFtZSAgID0gIklQRlMi LAo+Pj4gPiA+ICsgICAgLml0ZW1fbmFtZSAgICA9IGF2X2RlZmF1bHRfaXRlbV9uYW1lLAo+Pj4g PiA+ICsgICAgLm9wdGlvbiAgICAgICA9IG9wdGlvbnMsCj4+PiA+ID4gKyAgICAudmVyc2lvbiAg ICAgID0gTElCQVZVVElMX1ZFUlNJT05fSU5ULAo+Pj4gPiA+ICt9Owo+Pj4gPiA+ICsKPj4+ID4g PiArY29uc3QgVVJMUHJvdG9jb2wgZmZfaXBmc19wcm90b2NvbCA9IHsKPj4+ID4gPiArICAgIC5u YW1lICAgICAgICAgICAgID0gImlwZnMiLAo+Pj4gPiA+ICsgICAgLnVybF9vcGVuMiAgICAgICAg PSB0cmFuc2xhdGVfaXBmc190b19odHRwLAo+Pj4gPiA+ICsgICAgLnVybF9yZWFkICAgICAgICAg PSBpcGZzX3JlYWQsCj4+PiA+ID4gKyAgICAudXJsX3NlZWsgICAgICAgICA9IGlwZnNfc2VlaywK Pj4+ID4gPiArICAgIC51cmxfY2xvc2UgICAgICAgID0gaXBmc19jbG9zZSwKPj4+ID4gPiArICAg IC5wcml2X2RhdGFfc2l6ZSAgID0gc2l6ZW9mKElQRlNHYXRld2F5Q29udGV4dCksCj4+PiA+ID4g KyAgICAucHJpdl9kYXRhX2NsYXNzICA9ICZpcGZzX2NvbnRleHRfY2xhc3MsCj4+PiA+ID4gK307 Cj4+PiA+ID4gKwo+Pj4gPiA+ICtjb25zdCBVUkxQcm90b2NvbCBmZl9pcG5zX3Byb3RvY29sID0g ewo+Pj4gPiA+ICsgICAgLm5hbWUgICAgICAgICAgICAgPSAiaXBucyIsCj4+PiA+ID4gKyAgICAu dXJsX29wZW4yICAgICAgICA9IHRyYW5zbGF0ZV9pcGZzX3RvX2h0dHAsCj4+PiA+ID4gKyAgICAu dXJsX3JlYWQgICAgICAgICA9IGlwZnNfcmVhZCwKPj4+ID4gPiArICAgIC51cmxfc2VlayAgICAg ICAgID0gaXBmc19zZWVrLAo+Pj4gPiA+ICsgICAgLnVybF9jbG9zZSAgICAgICAgPSBpcGZzX2Ns b3NlLAo+Pj4gPiA+ICsgICAgLnByaXZfZGF0YV9zaXplICAgPSBzaXplb2YoSVBGU0dhdGV3YXlD b250ZXh0KSwKPj4+ID4gPiArICAgIC5wcml2X2RhdGFfY2xhc3MgID0gJmlwZnNfY29udGV4dF9j bGFzcywKPj4+ID4gPiArfTsKPj4+ID4gPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvcHJvdG9j b2xzLmMgYi9saWJhdmZvcm1hdC9wcm90b2NvbHMuYwo+Pj4gPiA+IGluZGV4IGQwNzU2M2NkMGMu LjZlZTYyYTU5OGEgMTAwNjQ0Cj4+PiA+ID4gLS0tIGEvbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMK Pj4+ID4gPiArKysgYi9saWJhdmZvcm1hdC9wcm90b2NvbHMuYwo+Pj4gPiA+IEBAIC03MSw2ICs3 MSw4IEBAIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJzcnRfcHJvdG9jb2w7Cj4+PiA+ ID4gIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJzc2hfcHJvdG9jb2w7Cj4+PiA+ID4g IGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJzbWJjbGllbnRfcHJvdG9jb2w7Cj4+PiA+ ID4gIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJ6bXFfcHJvdG9jb2w7Cj4+PiA+ID4g K2V4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9pcGZzX3Byb3RvY29sOwo+Pj4gPiA+ICtleHRl cm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfaXBuc19wcm90b2NvbDsKPj4+ID4gPgo+Pj4gPiA+ICAj aW5jbHVkZSAibGliYXZmb3JtYXQvcHJvdG9jb2xfbGlzdC5jIgo+Pj4gPiA+Cj4+PiA+ID4gLS0K Pj4+ID4gPiAyLjM1LjEKPj4+ID4gPgo+Pj4gPiA+Cj4+PiA+IFBpbmcsIGV2ZW4gdGhvdWdoIHRo ZSBtZXNzYWdlIGlzIGp1c3QgaGVyZSBmb3IgbWVyZSBtaW51dGVzLgo+Pj4gPgo+Pj4gPiBBcyBv ZiB0aGUgdmVyeSBkYXkgaSdtIG5vdyBzZW5kaW5nIHVwZGF0ZWQgcGF0Y2hlcyBmb3IgdGhpcyBm b3IKPj4+IGV4YWN0bHkgMgo+Pj4gPiBtb250aHMuIEkgc3RhcnRlZCBvbiBGZWIuIDFzdC4KPj4+ ID4gV2l0aCB0aGUgbGFzdCByb3VuZCBvZiBjaGFuZ2VzIChUaGFueCBBbmRyZWFzISkgSSBmZWVs IHJlYWxseSBjb25maWRlbnQKPj4+ID4gdGhhdCB0aGlzIGlzIG5vdyBhdCB0aGUgdmVyeSBsZWFz dCBnb29kIHF1YWxpdHkgY29kZSByZWFkeSBmb3IgcHJpbWUKPj4+IHRpbWUhCj4+PiA+IElQRlMg c3VwcG9ydCBpcyBub3cgYWxzbyB3b3JraW5nIGJ5IGRlZmF1bHQsIGV2ZW4gd2hlbiB5b3UgZG9u J3QgaGF2ZQo+Pj4gSVBGUwo+Pj4gPiBhdCBhbGwgKGluIGhlcmUgc2luY2UgYSBmZXcgcGF0Y2hl cyBhZ28pLgo+Pj4gPiBZZWFoLCBJIGZlZWwgcmVhbGx5IGdvb2QgYWJvdXQgaXQgbm93IQo+Pj4g Pgo+Pj4gPiBJJ2QgdmVyeSBtdWNoIGFwcHJlY2lhdGUgaXQgaWYgdGhpcyBjb3VsZCBmaW5hbGx5 IGJlIG1lcmdlZC4gSSBwcm9taXNlCj4+PiBJJ20KPj4+ID4gc3RheWluZyBhcm91bmQgdG8gZml4 IGJ1Z3MgaWYgdGhlcmUgYXJlIHN0aWxsIGJ1Z3MgdG8gYmUgZml4ZWQgYW5kIHdpbGwKPj4+ID4g cmVzcG9uZCBzd2lmdGx5IDopCj4+PiA+Cj4+PiA+IEJ1dC4uLiBJJ2QgcmVhbGx5IHJlYWxseSBy ZWFsbHkgbGlrZSB0byBiZSBkb25lIHdpdGggaXQgZm9yIG5vdy4KPj4+ID4gSSBkb24ndCBrbm93 IHdoZW4gZmZtcGVnIDUuMSBpcyBnb2luZyB0byBiZSByZWxlYXNlZCBidXQgaGF2aW5nIElQRlMK Pj4+ID4gc3VwcG9ydCBpbiB0aGVyZSB3b3VsZCBiZSBhYnNvbHV0ZWx5IGF3ZXNvbWUhIEFuZCB3 b3VsZCBoZWxwIG1lCj4+PiBncmVhdGx5IGluCj4+PiA+IGNvbnRpbnVpbmcgdGhlIGRldmVsb3Bt ZW50IHRvIHN1cHBvcnQgSVBGUyBpbiBtcHYsIEtPREkgYW5kIFZMQy4KPj4+Cj4+PiBOb3QgYnVp bGRpbmcgb24gbWluZ3c2NAo+Pj4KPj4+IENDICAgICAgbGliYXZmb3JtYXQvaXBmc2dhdGV3YXku bwo+Pj4gc3JjL2xpYmF2Zm9ybWF0L2lwZnNnYXRld2F5LmM6IEluIGZ1bmN0aW9uIOKAmHBvcHVs YXRlX2lwZnNfZ2F0ZXdheeKAmToKPj4+IHNyYy9saWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jOjk2 OjIwOiBlcnJvcjogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YKPj4+IGZ1bmN0aW9uIOKAmHdpbjMy X3N0YXTigJk7IGRpZCB5b3UgbWVhbiDigJh3c3RhdOKAmT8KPj4+IFstV2Vycm9yPWltcGxpY2l0 LWZ1bmN0aW9uLWRlY2xhcmF0aW9uXQo+Pj4gICAgICAgICAgc3RhdF9yZXQgPSB3aW4zMl9zdGF0 KGlwZnNfZnVsbF9kYXRhX2ZvbGRlciwgJnN0KTsKPj4+ICAgICAgICAgICAgICAgICAgICAgXn5+ fn5+fn5+fgo+Pj4gICAgICAgICAgICAgICAgICAgICB3c3RhdAo+Pj4gY2MxOiBzb21lIHdhcm5p bmdzIGJlaW5nIHRyZWF0ZWQgYXMgZXJyb3JzCj4+PiBzcmMvZmZidWlsZC9jb21tb24ubWFrOjc4 OiByZWNpcGUgZm9yIHRhcmdldCAnbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkubycKPj4+IGZhaWxl ZAo+Pj4gbWFrZTogKioqIFtsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5vXSBFcnJvciAxCj4+Pgo+ Pj4gbWF5YmUgeW91IHJlbW92ZWQgc29tZSAjaW5jbHVkZSB0aGF0IHdhcyBhY3R1YWxseSBuZWVk ZWQgPyAoaWYgdGhpcyBjb2RlCj4+PiBkaWRudAo+Pj4gY2hhbmVnIGJlY2F1c2UgaXQgZGlkIGJ1 aWxkIHByZXZpb3N1bHkpCj4+Pgo+Pgo+PiBVZ2guLi4KPj4KPj4gWW91IGZvdW5kIGEgYnV0IHRo YXQgbmVpdGhlciBJIG5vciBwYXRjaHdvcmsgZGlkbid0IGZpbmQuIE5pY2Ugd29yayBvbgo+PiB5 b3VyIGVuZCA6KQo+PiBOb3cgSSdtIG5vdCBjb21waWxpbmcgb24gbWluZ3cgYnV0IGFwcGFyZW50 bHkgcGF0Y2h3b3JrIGlzbid0IGVpdGhlci4gSXQKPj4gY3VycmVudGx5IGhhcyA4IGJ1aWxkcyBm b3IgdGhpcyBwYXRjaCB0aGF0IGFsbCBwYXNzIGp1c3QgZmluZS4KPj4KPj4gSSdsbCBzZW5kIGEg VjEyIHdpdGhpbiBhIGZldyBob3VycyBvZiB0aGlzIG1haWwgdGhhdCBob3BlZnVsbHkgZml4ZXMg aXQuCj4+IEl0J3MgYSBiaXQgb2YgYSBzaG90IGluIHRoZSBkYXJrIGFzIEkgZG9uJ3QgaGF2ZSB3 aW5kb3dzIG5vdCBtaW5ndyBoZXJlCj4+IHRvIHRlc3Qgc28gSSBob3BlIHlvdSBjb3VsZCBnaXZl IGl0IGEgY29tcGlsZSB0ZXN0IG9uIHlvdXIgZW5kLgo+Pgo+Cj4KPiBPbiBhIHNlY29uZCB0aG91 Z2h0Li4KPiBBbmQgSSdkIGxpa2UgeW91ciBvcGluaW9uIG9uIHRoaXMuCj4KPiBUaGUgc3RhdCBp cyBvbmx5IGJlaW5nIHVzZWQgYXMgYSAiZmlsZSBleGlzdHMiIGNoZWNrLiBUaGUgc3RhdCByZXN1 bHQKPiBpc24ndCBiZWluZyB1c2VkIG90aGVyIHRoYW4gZm9yIGEgbnVsbCBjaGVjay4KPiBBcyBJ IGRvbid0IG5lZWQgdGhlIHN0YXQgY29udGVudCBJIGRvbid0IG5lZWQgdG8gY2FyZSBhYm91dCBP Uwo+IGluY29uc2lzdGVuY2llcyBhdCBhbGwgdGhlcmUuCj4gU28gaW4gb3RoZXIgdGVybXMsIGRv IHlvdSB0aGluayBpdCdzIGZpbmUgdG8ganVzdCB1c2UgdGhlIHN0YXQoKSBjYWxsCj4gKHJlbW92 ZSB0aGUgaWZkZWYgYW5kIGp1c3QgZ28gZm9yIHRoZSBub24gd2luMzIgcHJlZml4ZWQgb25lKT8K PgoKTmV2ZXJtaW5kLgpZZXMsIGkgY2FuIHVzZSBqdXN0IHN0YXQuCkFuZCBpIHNob3VsZCBhZGQg b3Nfc3VwcG9ydC5oIGJhY2sgaW4gYXMgaXQgZG9lcyBjaGFuZ2UgdGhlIHN0YXQgZnVuY3Rpb24K YmVpbmcgY2FsbGVkIG9uIHdpbmRvd3MuICBWMTIgaW5jb21pbmcgYW55IG1pbnV0ZS4KCj4KPgo+ Pgo+Pgo+Pj4gdGh4Cj4+Pgo+Pj4KPj4+IFsuLi5dCj4+Pgo+Pj4gLS0KPj4+IE1pY2hhZWwgICAg IEdudVBHIGZpbmdlcnByaW50OiA5RkYyMTI4QjE0N0VGNjczMEJBREYxMzM2MTFFQzc4NzA0MEIw RkFCCj4+Pgo+Pj4gVGhlIGJyYXZlc3QgYXJlIHN1cmVseSB0aG9zZSB3aG8gaGF2ZSB0aGUgY2xl YXJlc3QgdmlzaW9uCj4+PiBvZiB3aGF0IGlzIGJlZm9yZSB0aGVtLCBnbG9yeSBhbmQgZGFuZ2Vy IGFsaWtlLCBhbmQgeWV0Cj4+PiBub3R3aXRoc3RhbmRpbmcgZ28gb3V0IHRvIG1lZXQgaXQuIC0t IFRodWN5ZGlkZXMKPj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCj4+PiBmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4+PiBmZm1wZWctZGV2ZWxAZmZt cGVnLm9yZwo+Pj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRl dmVsCj4+Pgo+Pj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCj4+ PiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3Jp YmUiLgo+Pj4KPj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRw czovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2Ny aWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1w ZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=