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 2E2E04224F for ; Thu, 31 Mar 2022 16:02:46 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 320F668B1A1; Thu, 31 Mar 2022 19:02:43 +0300 (EEST) Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B95A6680BBE for ; Thu, 31 Mar 2022 19:02:36 +0300 (EEST) Received: by mail-wm1-f54.google.com with SMTP id n63-20020a1c2742000000b0038d0c31db6eso2369813wmn.1 for ; Thu, 31 Mar 2022 09:02:36 -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=mfSH3AyC8biR0uPFzusEqTvztgxxyUJOlW2gVoSpMFg=; b=j5p/lxEHb4sARHVYxqNCIU8teej7oZ7SBVwvXSm6+4SixI2SSVSTWabofJUCVgVk/A ADGucgZ5Ot7I7nHFRArf7+bIQQdP2KEPyul1GQHTtIXLClfCSAnI6M7nGbfAU/LGxCGX RirlzDBvVQ4eQnEQUOBuQ4yS3HsV7RR5/p1D8mUgMO57w+cNo2YvDbHWYLgAnV11eGOs HNpOSldTu/hn1pofgiSxvQjUab6MgNFaQJC7RUHXcSFRqceL8fWwjpYF+d7oKGa/e8J8 0vdOQkZ3hEqNguRlinbDFd+E8+Y+UbzGa1MpTrAOARjONCaoaJsSdI/VKZaTHyXpWsvA JRLA== 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=mfSH3AyC8biR0uPFzusEqTvztgxxyUJOlW2gVoSpMFg=; b=qDa3gl3Mwbv0FmdNjuXjCrJnbPZJRaMAlkGNvn7hebmzawRRgV3eE8p6cWcRO76o20 G+GhmQozQMvhzSTZu0GPG6d58xcfA4QbunIDgykIXOmIlB8wl6Z8Q55as7S78KI7wSD4 kZaHWZD5rGccIe8GgENUFI0hHwrWF1sP134iE0b3SsnKo614H9TTButYkXQkydTbQReh WMC8qvBfonbM9xca+GrRavFvMff0vCtmREerDoF14Z4kE6IXPKlLSVb0oh3noWW4D4oj 0IDT7V7vEr42mxOWQ+2Hj2tqGLaq4ZCTxpi1OK16T8XsAGhTF6BER2w+Bi9i3Y/Oij+H vQlQ== X-Gm-Message-State: AOAM532Q1TDxCbo+NHb1ffp3kN0rQIGfJ6K9KPLaij3hbxW++hQAs4rf sUlTn+GjRHvaZknVgD5iOjyOaxCLnLg/jY6Pf8HzU890g0Q= X-Google-Smtp-Source: ABdhPJwW+g+fGeumcniRLMBSStS92ZVX5D0lltD8MVbRbjKSYkc8HBv0lyfkL5LZFrZv6i9WVe6RfKORWlrdP4cLgm4= X-Received: by 2002:a05:600c:4401:b0:38c:8df8:9797 with SMTP id u1-20020a05600c440100b0038c8df89797mr5241232wmn.13.1648742555074; Thu, 31 Mar 2022 09:02:35 -0700 (PDT) MIME-Version: 1.0 References: <20220330114039.69510-1-markg85@gmail.com> <20220330114039.69510-2-markg85@gmail.com> In-Reply-To: From: Mark Gaiser Date: Thu, 31 Mar 2022 18:01:27 +0200 Message-ID: To: Andreas Rheinhardt , =?UTF-8?Q?Tomas_H=C3=A4rdin?= X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v10 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: 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: T24gV2VkLCBNYXIgMzAsIDIwMjIgYXQgNToxNiBQTSBNYXJrIEdhaXNlciA8bWFya2c4NUBnbWFp bC5jb20+IHdyb3RlOgoKPgo+Cj4gT24gV2VkLCBNYXIgMzAsIDIwMjIgYXQgMzo1NyBQTSBBbmRy ZWFzIFJoZWluaGFyZHQgPAo+IGFuZHJlYXMucmhlaW5oYXJkdEBvdXRsb29rLmNvbT4gd3JvdGU6 Cj4KPj4gTWFyayBHYWlzZXI6Cj4+ID4gT24gV2VkLCBNYXIgMzAsIDIwMjIgYXQgMjoyMSBQTSBB bmRyZWFzIFJoZWluaGFyZHQgPAo+PiA+IGFuZHJlYXMucmhlaW5oYXJkdEBvdXRsb29rLmNvbT4g d3JvdGU6Cj4+ID4KPj4gPj4gTWFyayBHYWlzZXI6Cj4+ID4+PiBUaGlzIHBhdGNoIGFkZHMgc3Vw cG9ydCBmb3I6Cj4+ID4+PiAtIGZmcGxheSBpcGZzOi8vPGNpZD4KPj4gPj4+IC0gZmZwbGF5IGlw bnM6Ly88Y2lkPgo+PiA+Pj4KPj4gPj4+IElQRlMgZGF0YSBjYW4gYmUgcGxheWVkIGZyb20gc28g Y2FsbGVkICJpcGZzIGdhdGV3YXlzIi4KPj4gPj4+IEEgZ2F0ZXdheSBpcyBlc3NlbnRpYWxseSBh IHdlYnNlcnZlciB0aGF0IGdpdmVzIGFjY2VzcyB0byB0aGUKPj4gPj4+IGRpc3RyaWJ1dGVkIElQ RlMgbmV0d29yay4KPj4gPj4+Cj4+ID4+PiBUaGlzIHByb3RvY29sIHN1cHBvcnQgKGlwZnMgYW5k IGlwbnMpIHRoZXJlZm9yZSB0cmFuc2xhdGVzCj4+ID4+PiBpcGZzOi8vIGFuZCBpcG5zOi8vIHRv IGEgaHR0cDovLyB1cmwuIFRoaXMgcmVzdWx0aW5nIHVybCBpcwo+PiA+Pj4gdGhlbiBoYW5kbGVk IGJ5IHRoZSBodHRwIHByb3RvY29sLiBJdCBjb3VsZCBhbHNvIGJlIGh0dHBzCj4+ID4+PiBkZXBl bmRpbmcgb24gdGhlIGdhdGV3YXkgcHJvdmlkZWQuCj4+ID4+Pgo+PiA+Pj4gVG8gdXNlIHRoaXMg cHJvdG9jb2wsIGEgZ2F0ZXdheSBtdXN0IGJlIHByb3ZpZGVkLgo+PiA+Pj4gSWYgeW91IGRvIG5v dGhpbmcgaXQgd2lsbCB0cnkgdG8gZmluZCBpdCBpbiB5b3VyCj4+ID4+PiAkSE9NRS8uaXBmcy9n YXRld2F5IGZpbGUuIFRoZSB3YXlzIHRvIHNldCBpdCBtYW51YWxseSBhcmU6Cj4+ID4+PiAxLiBE ZWZpbmUgYSAtZ2F0ZXdheSA8dXJsPiB0byB0aGUgZ2F0ZXdheS4KPj4gPj4+IDIuIERlZmluZSAk SVBGU19HQVRFV0FZIHdpdGggdGhlIGZ1bGwgaHR0cCBsaW5rIHRvIHRoZSBnYXRld2F5Lgo+PiA+ Pj4gMy4gRGVmaW5lICRJUEZTX1BBVEggYW5kIHBvaW50IGl0IHRvIHRoZSBJUEZTIGRhdGEgcGF0 aC4KPj4gPj4+IDQuIEhhdmUgSVBGUyBydW5uaW5nIGluIHlvdXIgbG9jYWwgdXNlciBmb2xkZXIg KHVuZGVyICRIT01FLy5pcGZzKS4KPj4gPj4+Cj4+ID4+PiBTaWduZWQtb2ZmLWJ5OiBNYXJrIEdh aXNlciA8bWFya2c4NUBnbWFpbC5jb20+Cj4+ID4+PiAtLS0KPj4gPj4+ICBjb25maWd1cmUgICAg ICAgICAgICAgICAgIHwgICAyICsKPj4gPj4+ICBkb2MvcHJvdG9jb2xzLnRleGkgICAgICAgIHwg IDMwICsrKysKPj4gPj4+ICBsaWJhdmZvcm1hdC9NYWtlZmlsZSAgICAgIHwgICAyICsKPj4gPj4+ ICBsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jIHwgMzA5Cj4+ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4+ID4+PiAgbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMgICB8ICAg MiArCj4+ID4+PiAgNSBmaWxlcyBjaGFuZ2VkLCAzNDUgaW5zZXJ0aW9ucygrKQo+PiA+Pj4gIGNy ZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jCj4+ID4+Pgo+PiA+Pj4g ZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQo+PiA+Pj4gaW5kZXggZTRkMzZhYTYz OS4uNTVhZjkwOTU3YSAxMDA3NTUKPj4gPj4+IC0tLSBhL2NvbmZpZ3VyZQo+PiA+Pj4gKysrIGIv Y29uZmlndXJlCj4+ID4+PiBAQCAtMzU3OSw2ICszNTc5LDggQEAgdWRwX3Byb3RvY29sX3NlbGVj dD0ibmV0d29yayIKPj4gPj4+ICB1ZHBsaXRlX3Byb3RvY29sX3NlbGVjdD0ibmV0d29yayIKPj4g Pj4+ICB1bml4X3Byb3RvY29sX2RlcHM9InN5c191bl9oIgo+PiA+Pj4gIHVuaXhfcHJvdG9jb2xf c2VsZWN0PSJuZXR3b3JrIgo+PiA+Pj4gK2lwZnNfcHJvdG9jb2xfc2VsZWN0PSJodHRwc19wcm90 b2NvbCIKPj4gPj4+ICtpcG5zX3Byb3RvY29sX3NlbGVjdD0iaHR0cHNfcHJvdG9jb2wiCj4+ID4+ Pgo+PiA+Pj4gICMgZXh0ZXJuYWwgbGlicmFyeSBwcm90b2NvbHMKPj4gPj4+ICBsaWJhbXFwX3By b3RvY29sX2RlcHM9ImxpYnJhYmJpdG1xIgo+PiA+Pj4gZGlmZiAtLWdpdCBhL2RvYy9wcm90b2Nv bHMudGV4aSBiL2RvYy9wcm90b2NvbHMudGV4aQo+PiA+Pj4gaW5kZXggZDIwN2RmMGI1Mi4uN2M5 YzBhNDgwOCAxMDA2NDQKPj4gPj4+IC0tLSBhL2RvYy9wcm90b2NvbHMudGV4aQo+PiA+Pj4gKysr IGIvZG9jL3Byb3RvY29scy50ZXhpCj4+ID4+PiBAQCAtMjAyNSw1ICsyMDI1LDM1IEBAIGRlY29k aW5nIGVycm9ycy4KPj4gPj4+Cj4+ID4+PiAgQGVuZCB0YWJsZQo+PiA+Pj4KPj4gPj4+ICtAc2Vj dGlvbiBpcGZzCj4+ID4+PiArCj4+ID4+PiArSW50ZXJQbGFuZXRhcnkgRmlsZSBTeXN0ZW0gKElQ RlMpIHByb3RvY29sIHN1cHBvcnQuIE9uZSBjYW4gYWNjZXNzCj4+ID4+IGZpbGVzIHN0b3JlZAo+ PiA+Pj4gK29uIHRoZSBJUEZTIG5ldHdvcmsgdGhyb3VnaCBzbyBjYWxsZWQgZ2F0ZXdheXMuIFRo b3NlIGFyZSBodHRwKHMpCj4+ID4+IGVuZHBvaW50cy4KPj4gPj4+ICtUaGlzIHByb3RvY29sIHdy YXBzIHRoZSBJUEZTIG5hdGl2ZSBwcm90b2NvbHMgKGlwZnM6Ly8gYW5kIGlwbnM6Ly8pCj4+IHRv Cj4+ID4+IGJlIHNlbmQKPj4gPj4+ICt0byBzdWNoIGEgZ2F0ZXdheS4gVXNlcnMgY2FuIChhbmQg c2hvdWxkKSBob3N0IHRoZWlyIG93biBub2RlIHdoaWNoCj4+ID4+IG1lYW5zIHRoaXMKPj4gPj4+ ICtwcm90b2NvbCB3aWxsIHVzZSB5b3VyIGxvY2FsIG1hY2hpbmUgZ2F0ZXdheSB0byBhY2Nlc3Mg ZmlsZXMgb24gdGhlCj4+ID4+IElQRlMgbmV0d29yay4KPj4gPj4+ICsKPj4gPj4+ICtJZiBhIHVz ZXIgZG9lc24ndCBoYXZlIGEgbm9kZSBvZiB0aGVpciBvd24gdGhlbiB0aGUgcHVibGljIGdhdGV3 YXkKPj4gPj4gZHdlYi5saW5rIGlzCj4+ID4+PiArdXNlZCBieSBkZWZhdWx0Lgo+PiA+Pj4gKwo+ PiA+Pj4gK1lvdSBjYW4gdXNlIHRoaXMgcHJvdG9jb2wgaW4gMiB3YXlzLiBVc2luZyBJUEZTOgo+ PiA+Pj4gK0BleGFtcGxlCj4+ID4+PiArZmZwbGF5IGlwZnM6Ly9RbWJHdEpnMjNza2h2Rm11OW1K aWVQVkJ5aGZ6dTVyd283NE1Fa1ZEWUFtRjVUCj4+ID4+PiArQGVuZCBleGFtcGxlCj4+ID4+PiAr Cj4+ID4+PiArT3IgdGhlIElQTlMgcHJvdG9jb2wgKElQTlMgaXMgbXV0YWJsZSBJUEZTKToKPj4g Pj4+ICtAZXhhbXBsZQo+PiA+Pj4gK2ZmcGxheSBpcG5zOi8vUW1iR3RKZzIzc2todkZtdTltSmll UFZCeWhmenU1cndvNzRNRWtWRFlBbUY1VAo+PiA+Pj4gK0BlbmQgZXhhbXBsZQo+PiA+Pj4gKwo+ PiA+Pj4gK1lvdSBjYW4gYWxzbyBjaGFuZ2UgdGhlIGdhdGV3YXkgdG8gYmUgdXNlZDoKPj4gPj4+ ICsKPj4gPj4+ICtAdGFibGUgQG9wdGlvbgo+PiA+Pj4gKwo+PiA+Pj4gK0BpdGVtIGdhdGV3YXkK Pj4gPj4+ICtEZWZpbmVzIHRoZSBnYXRld2F5IHRvIHVzZS4gV2hlbiBub3RoaW5nIGlzIHByb3Zp ZGVkIHRoZSBwcm90b2NvbAo+PiB3aWxsCj4+ID4+IGZpcnN0IHRyeQo+PiA+Pj4gK3lvdXIgbG9j YWwgZ2F0ZXdheS4gSWYgdGhhdCBmYWlscyBkd2ViLmxpbmsgd2lsbCBiZSB1c2VkLgo+PiA+Pj4g Kwo+PiA+Pj4gK0BlbmQgdGFibGUKPj4gPj4+Cj4+ID4+PiAgQGMgbWFuIGVuZCBQUk9UT0NPTFMK Pj4gPj4+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9NYWtlZmlsZSBiL2xpYmF2Zm9ybWF0L01h a2VmaWxlCj4+ID4+PiBpbmRleCBkNzE4MmQ2YmQ4Li5lMzIzM2ZkN2FjIDEwMDY0NAo+PiA+Pj4g LS0tIGEvbGliYXZmb3JtYXQvTWFrZWZpbGUKPj4gPj4+ICsrKyBiL2xpYmF2Zm9ybWF0L01ha2Vm aWxlCj4+ID4+PiBAQCAtNjYwLDYgKzY2MCw4IEBAIE9CSlMtJChDT05GSUdfU1JUUF9QUk9UT0NP TCkgICAgICAgICAgICAgKz0KPj4gPj4gc3J0cHByb3RvLm8gc3J0cC5vCj4+ID4+PiAgT0JKUy0k KENPTkZJR19TVUJGSUxFX1BST1RPQ09MKSAgICAgICAgICArPSBzdWJmaWxlLm8KPj4gPj4+ICBP QkpTLSQoQ09ORklHX1RFRV9QUk9UT0NPTCkgICAgICAgICAgICAgICs9IHRlZXByb3RvLm8gdGVl X2NvbW1vbi5vCj4+ID4+PiAgT0JKUy0kKENPTkZJR19UQ1BfUFJPVE9DT0wpICAgICAgICAgICAg ICArPSB0Y3Aubwo+PiA+Pj4gK09CSlMtJChDT05GSUdfSVBGU19QUk9UT0NPTCkgICAgICAgICAg ICAgKz0gaXBmc2dhdGV3YXkubwo+PiA+Pj4gK09CSlMtJChDT05GSUdfSVBOU19QUk9UT0NPTCkg ICAgICAgICAgICAgKz0gaXBmc2dhdGV3YXkubwo+PiA+Pj4gIFRMUy1PQkpTLSQoQ09ORklHX0dO VVRMUykgICAgICAgICAgICAgICAgKz0gdGxzX2dudXRscy5vCj4+ID4+PiAgVExTLU9CSlMtJChD T05GSUdfTElCVExTKSAgICAgICAgICAgICAgICArPSB0bHNfbGlidGxzLm8KPj4gPj4+ICBUTFMt T0JKUy0kKENPTkZJR19NQkVEVExTKSAgICAgICAgICAgICAgICs9IHRsc19tYmVkdGxzLm8KPj4g Pj4+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jIGIvbGliYXZmb3JtYXQv aXBmc2dhdGV3YXkuYwo+PiA+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gPj4+IGluZGV4IDAw MDAwMDAwMDAuLjFhMDM5NTg5YzAKPj4gPj4+IC0tLSAvZGV2L251bGwKPj4gPj4+ICsrKyBiL2xp YmF2Zm9ybWF0L2lwZnNnYXRld2F5LmMKPj4gPj4+IEBAIC0wLDAgKzEsMzA5IEBACj4+ID4+PiAr LyoKPj4gPj4+ICsgKiBJUEZTIGFuZCBJUE5TIHByb3RvY29sIHN1cHBvcnQgdGhyb3VnaCBJUEZT IEdhdGV3YXkuCj4+ID4+PiArICogQ29weXJpZ2h0IChjKSAyMDIyIE1hcmsgR2Fpc2VyCj4+ID4+ PiArICoKPj4gPj4+ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4+ID4+PiArICoK Pj4gPj4+ICsgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yCj4+ID4+PiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IExlc3NlciBHZW5lcmFsIFB1YmxpYwo+PiA+Pj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+PiA+Pj4gKyAqIHZlcnNpb24g Mi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u Lgo+PiA+Pj4gKyAqCj4+ID4+PiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCj4+ID4+PiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPj4gPj4+ICsgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVQo+PiA+Pj4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCj4+ID4+PiArICoKPj4gPj4+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4+ID4+PiArICogTGljZW5zZSBh bG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+PiA+ Pj4gKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is IEJvc3RvbiwgTUEKPj4gPj4gMDIxMTAtMTMwMSBVU0EKPj4gPj4+ICsgKi8KPj4gPj4+ICsKPj4g Pj4+ICsjaW5jbHVkZSAiYXZmb3JtYXQuaCIKPj4gPj4+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2F2 YXNzZXJ0LmgiCj4+ID4+Cj4+ID4+IFVudXNlZC4KPj4gPj4KPj4gPj4+ICsjaW5jbHVkZSAibGli YXZ1dGlsL2F2c3RyaW5nLmgiCj4+ID4+PiArI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRlcm5hbC5o Igo+PiA+Pj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCj4+ID4+PiArI2luY2x1ZGUgImxp YmF2dXRpbC90cmVlLmgiCj4+ID4+Cj4+ID4+ID8KPj4gPj4KPj4gPgo+PiA+IFRoaXMgd2hvbGUg aW5jbHVkZSBwYXJ0IGNhbiBiZSBjbGVhbmVkIHVwIG11Y2ggbW9yZS4KPj4gPiBKdXN0IGhhdmlu ZyB0aGVzZToKPj4gPiAjaW5jbHVkZSAibGliYXZ1dGlsL2F2c3RyaW5nLmgiCj4+ID4gI2luY2x1 ZGUgImxpYmF2dXRpbC9vcHQuaCIKPj4gPiAjaW5jbHVkZSAidXJsLmgiCj4+ID4gI2luY2x1ZGUg PHN5cy9zdGF0Lmg+Cj4+ID4KPj4gPiBpcyBlbm91Z2guCj4+ID4KPj4gPgo+PiA+Pj4gKyNpbmNs dWRlIDxmY250bC5oPgo+PiA+Pj4gKyNpZiBIQVZFX0lPX0gKPj4gPj4+ICsjaW5jbHVkZSA8aW8u aD4KPj4gPj4+ICsjZW5kaWYKPj4gPj4+ICsjaWYgSEFWRV9VTklTVERfSAo+PiA+Pj4gKyNpbmNs dWRlIDx1bmlzdGQuaD4KPj4gPj4+ICsjZW5kaWYKPj4gPj4+ICsjaW5jbHVkZSAib3Nfc3VwcG9y dC5oIgo+PiA+Pj4gKyNpbmNsdWRlICJ1cmwuaCIKPj4gPj4+ICsjaW5jbHVkZSA8c3RkbGliLmg+ Cj4+ID4+PiArI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cj4+ID4+PiArCj4+ID4+PiArdHlwZWRlZiBz dHJ1Y3QgSVBGU0dhdGV3YXlDb250ZXh0IHsKPj4gPj4+ICsgICAgQVZDbGFzcyAqY2xhc3M7Cj4+ ID4+PiArICAgIFVSTENvbnRleHQgKmlubmVyOwo+PiA+Pj4gKyAgICAvLyBJcyBmaWxsZWQgYnkg dGhlIC1nYXRld2F5IGFyZ3VtZW50IGFuZCBub3QgY2hhbmdlZCBhZnRlci4KPj4gPj4+ICsgICAg Y2hhciAqZ2F0ZXdheTsKPj4gPj4+ICsgICAgLy8gSWYgdGhlIGFib3ZlIGdhdGV3YXkgaXMgbm9u IG51bGwsIGl0IHdpbGwgYmUgY29waWVkIGludG8gdGhpcwo+PiA+PiBidWZmZXIuCj4+ID4+PiAr ICAgIC8vIEVsc2UgdGhpcyBidWZmZXIgd2lsbCBjb250YWluIHRoZSBhdXRvIGRldGVjdGVkIGdh dGV3YXkuCj4+ID4+PiArICAgIC8vIEluIGVpdGhlciBjYXNlLCB0aGUgZ2F0ZXdheSB0byB1c2Ug d2lsbCBiZSBpbiB0aGlzIGJ1ZmZlci4KPj4gPj4+ICsgICAgY2hhciBnYXRld2F5X2J1ZmZlcltQ QVRIX01BWF07Cj4+ID4+PiArfSBJUEZTR2F0ZXdheUNvbnRleHQ7Cj4+ID4+PiArCj4+ID4+PiAr Ly8gQSBiZXN0LWVmZm9ydCB3YXkgdG8gZmluZCB0aGUgSVBGUyBnYXRld2F5Lgo+PiA+Pj4gKy8v IE9ubHkgdGhlIG1vc3QgYXBwcm9waWF0ZSBnYXRld2F5IGlzIHNldC4gSXQncyBub3QgYWN0dWFs bHkKPj4gcmVxdWVzdGVkCj4+ID4+PiArLy8gKGh0dHAgY2FsbCkgdG8gcHJldmVudCBhIHBvdGVu dGlhbCBzbG93ZG93biBpbiBzdGFydHVwLiBBCj4+IHBvdGVudGlhbAo+PiA+PiB0aW1lb3V0Cj4+ ID4+PiArLy8gaXMgaGFuZGxlZCBieSB0aGUgSFRUUCBwcm90b2NvbC4KPj4gPj4+ICtzdGF0aWMg aW50IHBvcHVsYXRlX2lwZnNfZ2F0ZXdheShVUkxDb250ZXh0ICpoKQo+PiA+Pj4gK3sKPj4gPj4+ ICsgICAgSVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+cHJpdl9kYXRhOwo+PiA+Pj4gKyAgICBj aGFyIGlwZnNfZnVsbF9kYXRhX2ZvbGRlcltQQVRIX01BWF07Cj4+ID4+PiArICAgIGNoYXIgaXBm c19nYXRld2F5X2ZpbGVbUEFUSF9NQVhdOwo+PiA+Pj4gKyAgICBzdHJ1Y3Qgc3RhdCBzdDsKPj4g Pj4+ICsgICAgaW50IHN0YXRfcmV0ID0gMDsKPj4gPj4+ICsgICAgaW50IHJldCA9IEFWRVJST1Io RUlOVkFMKTsKPj4gPj4+ICsgICAgRklMRSAqZ2F0ZXdheV9maWxlID0gTlVMTDsKPj4gPj4+ICsK Pj4gPj4+ICsgICAgLy8gVGVzdCAkSVBGU19HQVRFV0FZLgo+PiA+Pj4gKyAgICBpZiAoZ2V0ZW52 KCJJUEZTX0dBVEVXQVkiKSAhPSBOVUxMKSB7Cj4+ID4+PiArICAgICAgICBpZiAoc25wcmludGYo Yy0+Z2F0ZXdheV9idWZmZXIsIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlciksCj4+ICIlcyIsCj4+ ID4+PiArICAgICAgICAgICAgICAgICAgICAgZ2V0ZW52KCJJUEZTX0dBVEVXQVkiKSkgPj0KPj4g Pj4gc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSkgewo+PiA+Pj4gKyAgICAgICAgICAgIGF2X2xv ZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTX0dBVEVXQVkgZW52aXJvbm1lbnQKPj4gPj4g dmFyaWFibGUgZXhjZWVkcyB0aGUgbWF4aW11bSBsZW5ndGguIFdlIGFsbG93IGEgbWF4IG9mICV6 dQo+PiBjaGFyYWN0ZXJzXG4iLAo+PiA+PiBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpKTsKPj4g Pj4+ICsgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4+ID4+PiArICAgICAgICAg ICAgZ290byBlcnI7Cj4+ID4+PiArICAgICAgICB9Cj4+ID4+PiArCj4+ID4+PiArICAgICAgICBy ZXQgPSAxOwo+PiA+Pj4gKyAgICAgICAgZ290byBlcnI7Cj4+ID4+PiArICAgIH0gZWxzZQo+PiA+ Pj4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19ERUJVRywgIiRJUEZTX0dBVEVXQVkgaXMgZW1w dHkuXG4iKTsKPj4gPj4+ICsKPj4gPj4+ICsgICAgLy8gV2UgbmVlZCB0byBrbm93IHRoZSBJUEZT IGZvbGRlciB0byAtIGV2ZW50dWFsbHkgLSByZWFkIHRoZQo+PiA+PiBjb250ZW50cyBvZgo+PiA+ Pj4gKyAgICAvLyB0aGUgImdhdGV3YXkiIGZpbGUgd2hpY2ggd291bGQgdGVsbCB1cyB0aGUgZ2F0 ZXdheSB0byB1c2UuCj4+ID4+PiArICAgIGlmIChnZXRlbnYoIklQRlNfUEFUSCIpID09IE5VTEwp IHsKPj4gPj4+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfREVCVUcsICIkSVBGU19QQVRIIGlz IGVtcHR5LlxuIik7Cj4+ID4+PiArCj4+ID4+PiArICAgICAgICAvLyBUcnkgdmlhIHRoZSBob21l IGZvbGRlci4KPj4gPj4+ICsgICAgICAgIGlmIChnZXRlbnYoIkhPTUUiKSA9PSBOVUxMKSB7Cj4+ ID4+PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiJEhPTUUgYXBwZWFy cyB0byBiZQo+PiBlbXB0eS5cbiIpOwo+PiA+Pj4gKyAgICAgICAgICAgIHJldCA9IEFWRVJST1Io RUlOVkFMKTsKPj4gPj4+ICsgICAgICAgICAgICBnb3RvIGVycjsKPj4gPj4+ICsgICAgICAgIH0K Pj4gPj4+ICsKPj4gPj4+ICsgICAgICAgIC8vIFZlcmlmeSB0aGUgY29tcG9zZWQgcGF0aCBmaXRz Lgo+PiA+Pj4gKyAgICAgICAgaWYgKHNucHJpbnRmKGlwZnNfZnVsbF9kYXRhX2ZvbGRlciwKPj4g Pj4gc2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlciksCj4+ID4+PiArICAgICAgICAgICAgICAg ICAgICAgIiVzLy5pcGZzLyIsIGdldGVudigiSE9NRSIpKSA+PQo+PiA+PiBzaXplb2YoaXBmc19m dWxsX2RhdGFfZm9sZGVyKSkgewo+PiA+Pj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0df V0FSTklORywgIlRoZSBJUEZTIGRhdGEgcGF0aCBleGNlZWRzIHRoZQo+PiA+PiBtYXggcGF0aCBs ZW5ndGggKCV6dSlcbiIsIHNpemVvZihpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpKTsKPj4gPj4+ICsg ICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4+ID4+PiArICAgICAgICAgICAgZ290 byBlcnI7Cj4+ID4+PiArICAgICAgICB9Cj4+ID4+PiArCj4+ID4+PiArICAgICAgICAvLyBTdGF0 IHRoZSBmb2xkZXIuCj4+ID4+PiArICAgICAgICAvLyBJdCBzaG91bGQgZXhpc3QgaW4gYSBkZWZh dWx0IElQRlMgc2V0dXAgd2hlbiBydW4gYXMgbG9jYWwKPj4gPj4gdXNlci4KPj4gPj4+ICsjaWZu ZGVmIF9XSU4zMgo+PiA+Pj4gKyAgICAgICAgc3RhdF9yZXQgPSBzdGF0KGlwZnNfZnVsbF9kYXRh X2ZvbGRlciwgJnN0KTsKPj4gPj4+ICsjZWxzZQo+PiA+Pj4gKyAgICAgICAgc3RhdF9yZXQgPSB3 aW4zMl9zdGF0KGlwZnNfZnVsbF9kYXRhX2ZvbGRlciwgJnN0KTsKPj4gPj4+ICsjZW5kaWYKPj4g Pj4+ICsgICAgICAgIGlmIChzdGF0X3JldCA8IDApIHsKPj4gPj4+ICsgICAgICAgICAgICBhdl9s b2coaCwgQVZfTE9HX0lORk8sICJVbmFibGUgdG8gZmluZCBJUEZTIGZvbGRlci4gV2UKPj4gPj4g dHJpZWQ6XG4iKTsKPj4gPj4+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICIt ICRJUEZTX1BBVEgsIHdoaWNoIHdhcwo+PiBlbXB0eS5cbiIpOwo+PiA+Pj4gKyAgICAgICAgICAg IGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIi0gJEhPTUUvLmlwZnMgKGZ1bGwgdXJpOiAlcykKPj4g d2hpY2gKPj4gPj4gZG9lc24ndCBleGlzdC5cbiIsIGlwZnNfZnVsbF9kYXRhX2ZvbGRlcik7Cj4+ ID4+PiArICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9FTlQpOwo+PiA+Pj4gKyAgICAgICAg ICAgIGdvdG8gZXJyOwo+PiA+Pj4gKyAgICAgICAgfQo+PiA+Pj4gKyAgICB9IGVsc2Ugewo+PiA+ Pj4gKyAgICAgICAgaWYgKHNucHJpbnRmKGlwZnNfZnVsbF9kYXRhX2ZvbGRlciwKPj4gPj4gc2l6 ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlciksICIlcyIsCj4+ID4+PiArICAgICAgICAgICAgICAg ICBnZXRlbnYoIklQRlNfUEFUSCIpKSA+PQo+PiBzaXplb2YoaXBmc19mdWxsX2RhdGFfZm9sZGVy KSkKPj4gPj4gewo+PiA+Pj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywg IlRoZSBJUEZTX1BBVEggZW52aXJvbm1lbnQKPj4gPj4gdmFyaWFibGUgZXhjZWVkcyB0aGUgbWF4 aW11bSBsZW5ndGguIFdlIGFsbG93IGEgbWF4IG9mICV6dQo+PiBjaGFyYWN0ZXJzXG4iLAo+PiA+ PiBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpKTsKPj4gPj4+ICsgICAgICAgICAgICByZXQgPSBB VkVSUk9SKEVJTlZBTCk7Cj4+ID4+PiArICAgICAgICAgICAgZ290byBlcnI7Cj4+ID4+PiArICAg ICAgICB9Cj4+ID4+PiArCj4+ID4+PiArICAgIH0KPj4gPj4+ICsKPj4gPj4+ICsgICAgLy8gQ29w eSB0aGUgZnVsbHkgY29tcG9zZWQgZ2F0ZXdheSBwYXRoIGludG8gaXBmc19nYXRld2F5X2ZpbGUu Cj4+ID4+PiArICAgIGlmIChzbnByaW50ZihpcGZzX2dhdGV3YXlfZmlsZSwgc2l6ZW9mKGlwZnNf Z2F0ZXdheV9maWxlKSwKPj4gPj4gIiVzZ2F0ZXdheSIsCj4+ID4+PiArICAgICAgICAgICAgICAg ICBpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpID49Cj4+IHNpemVvZihpcGZzX2dhdGV3YXlfZmlsZSkp IHsKPj4gPj4+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTIGdh dGV3YXkgZmlsZSBwYXRoIGV4Y2VlZHMKPj4gPj4gdGhlIG1heCBwYXRoIGxlbmd0aCAoJXp1KVxu Iiwgc2l6ZW9mKGlwZnNfZ2F0ZXdheV9maWxlKSk7Cj4+ID4+PiArICAgICAgICByZXQgPSBBVkVS Uk9SKEVOT0VOVCk7Cj4+ID4+PiArICAgICAgICBnb3RvIGVycjsKPj4gPj4+ICsgICAgfQo+PiA+ Pj4gKwo+PiA+Pj4gKyAgICAvLyBHZXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBnYXRld2F5IGZpbGUu Cj4+ID4+PiArICAgIGdhdGV3YXlfZmlsZSA9IGF2X2ZvcGVuX3V0ZjgoaXBmc19nYXRld2F5X2Zp bGUsICJyIik7Cj4+ID4+PiArICAgIGlmICghZ2F0ZXdheV9maWxlKSB7Cj4+ID4+PiArICAgICAg ICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgSVBGUyBnYXRld2F5IGZpbGUgKGZ1bGwg dXJpOgo+PiAlcykKPj4gPj4gZG9lc24ndCBleGlzdC4gSXMgdGhlIGdhdGV3YXkgZW5hYmxlZD9c biIsIGlwZnNfZ2F0ZXdheV9maWxlKTsKPj4gPj4+ICsgICAgICAgIHJldCA9IEFWRVJST1IoRU5P RU5UKTsKPj4gPj4+ICsgICAgICAgIGdvdG8gZXJyOwo+PiA+Pj4gKyAgICB9Cj4+ID4+PiArCj4+ ID4+PiArICAgIC8vIFJlYWQgYSBzaW5nbGUgbGluZSAoZmdldHMgc3RvcHMgYXQgbmV3IGxpbmUg bWFyaykuCj4+ID4+PiArICAgIGZnZXRzKGMtPmdhdGV3YXlfYnVmZmVyLCBzaXplb2YoYy0+Z2F0 ZXdheV9idWZmZXIpIC0gMSwKPj4gPj4gZ2F0ZXdheV9maWxlKTsKPj4gPj4+ICsKPj4gPj4+ICsg ICAgLy8gUmVwbGFjZSB0aGUgbGFzdCBjaGFyIHdpdGggXDAKPj4gPj4+ICsgICAgYy0+Z2F0ZXdh eV9idWZmZXJbc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSAtIDFdID0gMDsKPj4gPj4+ICsKPj4g Pj4+ICsgICAgLy8gUmVwbGFjZSBmaXJzdCBvY2N1cmVuY2Ugb2YgZW5kIG9mIGxpbmUgd2l0aCBc MAo+PiA+Pj4gKyAgICBjLT5nYXRld2F5X2J1ZmZlcltzdHJjc3BuKGMtPmdhdGV3YXlfYnVmZmVy LCAiXHIiKV0gPSAwOwo+PiA+Pj4gKyAgICBjLT5nYXRld2F5X2J1ZmZlcltzdHJjc3BuKGMtPmdh dGV3YXlfYnVmZmVyLCAiXG4iKV0gPSAwOwo+PiA+Pgo+PiA+PiBJZiB0aGUgYnVmZmVyIGNvbnRh aW5zIGJvdGggXHIgYW5kIFxuIGFuZCB0aGUgZmlyc3QgXG4gcHJlY2VkZXMgdGhlCj4+ID4+IGZp cnN0IFxyLCB0aGVuIHRoZSBhYm92ZSB6ZXJvZXMgYm90aCB0aGUgZmlyc3QgXHIgYW5kIHRoZSBm aXJzdCBcbi4gSWYKPj4gPj4gaXQgaXMgZW5vdWdoIHRvIG9ubHkgemVybyB0aGUgZmlyc3QgbmV3 bGluZSwgdGhlbiB0aGlzIGNhbiBiZQo+PiBzaW1wbGlmaWVkCj4+ID4+IHRvICJjLT5nYXRld2F5 X2J1ZmZlcltzdHJjc3BuKGMtPmdhdGV3YXlfYnVmZmVyLCAiXHJcbiIpXSA9IDA7Ii4KPj4gPj4K Pj4gPgo+PiA+IEl0IHVzZWQgdG8gYmUgaW4geW91ciBzdWdnZXN0ZWQgc2ltcGxpZmllZCBhcHBy b2FjaC4KPj4gPiBJdCB3YXMgdGhlbiBzdWdnZXN0ZWQgdG8gc3BsaXQgaXQgYmVjYXVzZSBvZiBu ZXcgbGluZSBkaWZmZXJlbmNlcwo+PiA+IG9uIGRpZmZlcmVudCBwbGF0Zm9ybXMuIFRoaXMgd2Fz IHN1cHBvc2VkIHRvIGNhdGNoICJldmVyeXRoaW5nIi4KPj4gPgo+PiA+IEkgcHJlZmVyIHRvIGtl ZXAgdGhpcyBhcy1pcyBub3cuCj4+ID4KPj4KPj4gSXMgaXQgaW50ZW5kZWQgdG8gdXNlIHdoYXQg aXMgYmV0d2VlbiB0aGUgZmlyc3QgXG4gYW5kIHRoZSBmaXJzdCBccgo+PiBsYXRlcm9uIGFsdGhv dWdoIHRoaXMgZGF0YSB3aWxsIGJlIGFmdGVyIHRoZSAnXDAnIGFmdGVyIHRoaXM/IFRoYXQgd291 bGQKPj4gYmUgdmVyeSB3ZWlyZC4KPj4KPgo+IFlvdSBoYXZlIHRvIGVsYWJvcmF0ZSBvbiB0aGF0 IGFzIHRoYXQgc291bmRzIHJlYWxseSB3cm9uZyB0byBtZS4KPgo+IElmIEknbSBjb3JyZWN0IGEg ZmlsZSBkb2Vzbid0IHN0YXJ0IHdpdGggZWl0aGVyIFxyIG9yIFxuLiBVbmxlc3MgeW91IGhhdmUK PiBpbnRlbnRpb25hbCBsaW5lIGJyZWFrcy4KPiBJdCBlbmRzIHdpdGggdGhvc2UsIG5vdCBzdGFy dHMuIEknbSBqdXN0IGdvaW5nIHRvIGlnbm9yZSBcciBmb3Igbm93IGZvcgo+IGJyZXZpdHkuCj4K PiBTbyBpZiB5b3UgaGF2ZToKPiBcbjx5b3VyIGdhdGV3YXk+XG4KPgo+IFdvdWxkIGJlIHRyYW5z bGF0ZWQgdG86Cj4gXDA8eW91ciBnYXRld2F5PlxuCj4KPiBUaGVuIGluZGVlZCB5b3Ugd29uJ3Qg Z2V0IGEgZ2F0ZXdheSBiZWNhdXNlIGl0J3MgaW50ZW5kZWQgdGhhdCB5b3VyIGZpcnN0Cj4gbGlu ZSBpcyB0aGF0IGdhdGV3YXkuCj4KPiBJdCBtdXN0IGJlIGluIHRoaXMgZm9ybWF0Ogo+IDx5b3Vy IGdhdGV3YXk+XG4KPgo+IG9yIHdpdGhvdXQgYSBuZXdsaW5lCj4gPHlvdXIgZ2F0ZXdheT4KPgo+ IFRoZXJlIGlzIG5vIGJsYW5rIGxpbmUgdHJpbW1pbmcgdG8gZml4IHVzZXIgc2NyZXd1cHMuCj4g VXNlcnMgYXJlIG5vdCBpbnRlbmRlZCB0byB0b3VjaCB0aGF0IGZpbGUgYW55aG93LiBJdCdzIGF1 dG8tZ2VuZXJhdGVkIGJ5Cj4gSVBGUyBhbmQgcmVtb3ZlZCBvbmNlIGl0IHNodXRzIGRvd24uCj4K Pgo+PiA+Cj4+ID4+PiArCj4+ID4+PiArICAgIC8vIElmIHN0cmxlbiBmaW5kcyBhbnl0aGluZyBs b25nZXIgdGhlbiAwIGNoYXJhY3RlcnMgdGhlbiB3ZQo+PiBoYXZlIGEKPj4gPj4+ICsgICAgLy8g cG90ZW50aWFsIGdhdGV3YXkgdXJsLgo+PiA+Pj4gKyAgICBpZiAoc3RybGVuKGMtPmdhdGV3YXlf YnVmZmVyKSA8IDEpIHsKPj4gPj4KPj4gPj4gaWYgKCpjLT5nYXRld2F5X2J1ZmZlciA9PSAnXDAn KQo+PiA+Pgo+PiA+Cj4+ID4gSXMgdGhhdCBhIHN0eWxlIGRpZmZlcmVuY2Ugb3IgYW4gYWN0dWFs IGJlaGF2aW9yIGRpZmZlcmVuY2U/Cj4+ID4KPj4KPj4gVGhlIGZvcm1lciB3b3VsZCBjYWxsIHN0 cmxlbiB0byBjaGVjayB3aGV0aGVyIGEgc3RyaW5nIGlzIGVtcHR5ICh1bmxlc3MKPj4gdGhlIGNv bXBpbGVyIG9wdGltaXplcyBpdCBhd2F5KS4gTm8gYWN0dWFsIGJlaGF2aW91ciBkaWZmZXJlbmNl IGV4aXN0cy4KPj4gQnV0IGl0IGlzIG5ldmVydGhlbGVzcyBtb3JlIHRoYW4gYSBzdHlsZSBkaWZm ZXJlbmNlLgo+Pgo+Cj4gRml4ZWQgbG9jYWxseS4KPgo+Pgo+PiA+Cj4+ID4+Cj4+ID4+PiArICAg ICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgSVBGUyBnYXRld2F5IGZpbGUgKGZ1 bGwgdXJpOgo+PiAlcykKPj4gPj4gYXBwZWFycyB0byBiZSBlbXB0eS4gSXMgdGhlIGdhdGV3YXkg c3RhcnRlZD9cbiIsIGlwZnNfZ2F0ZXdheV9maWxlKTsKPj4gPj4+ICsgICAgICAgIHJldCA9IEFW RVJST1IoRUlMU0VRKTsKPj4gPj4+ICsgICAgICAgIGdvdG8gZXJyOwo+PiA+Pj4gKyAgICB9IGVs c2Ugewo+PiA+Pj4gKyAgICAgICAgLy8gV2UncmUgZG9uZSwgdGhlIGMtPmdhdGV3YXlfYnVmZmVy IGhhcyBzb21ldGhpbmcgdGhhdCBsb29rcwo+PiA+PiB2YWxpZC4KPj4gPj4+ICsgICAgICAgIHJl dCA9IDE7Cj4+ID4+PiArICAgICAgICBnb3RvIGVycjsKPj4gPj4+ICsgICAgfQo+PiA+Pj4gKwo+ PiA+Pj4gK2VycjoKPj4gPj4+ICsgICAgaWYgKGdhdGV3YXlfZmlsZSkKPj4gPj4+ICsgICAgICAg IGZjbG9zZShnYXRld2F5X2ZpbGUpOwo+PiA+Pj4gKwo+PiA+Pj4gKyAgICByZXR1cm4gcmV0Owo+ PiA+Pj4gK30KPj4gPj4+ICsKPj4gPj4+ICtzdGF0aWMgaW50IHRyYW5zbGF0ZV9pcGZzX3RvX2h0 dHAoVVJMQ29udGV4dCAqaCwgY29uc3QgY2hhciAqdXJpLAo+PiA+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsIEFWRGljdGlvbmFyeSAqKm9wdGlvbnMpCj4+ ID4+PiArewo+PiA+Pj4gKyAgICBjb25zdCBjaGFyICppcGZzX2NpZDsKPj4gPj4+ICsgICAgY2hh ciAqZnVsbHVyaSA9IE5VTEw7Cj4+ID4+PiArICAgIGludCByZXQ7Cj4+ID4+PiArICAgIElQRlNH YXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKPj4gPj4+ICsKPj4gPj4+ICsgICAgLy8g VGVzdCBmb3IgaXBmczovLywgaXBmczosIGlwbnM6Ly8gYW5kIGlwbnM6LiBUaGlzIHByZWZpeCBp cwo+PiA+PiBzdHJpcHBlZCBmcm9tCj4+ID4+PiArICAgIC8vIHRoZSBzdHJpbmcgbGVhdmluZyBq dXN0IHRoZSBDSUQgaW4gaXBmc19jaWQuCj4+ID4+PiArICAgIGludCBpc19pcGZzID0gYXZfc3Ry aXN0YXJ0KHVyaSwgImlwZnM6Ly8iLCAmaXBmc19jaWQpOwo+PiA+Pj4gKyAgICBpbnQgaXNfaXBu cyA9IGF2X3N0cmlzdGFydCh1cmksICJpcG5zOi8vIiwgJmlwZnNfY2lkKTsKPj4gPj4+ICsKPj4g Pj4+ICsgICAgLy8gV2UgbXVzdCBoYXZlIGVpdGhlciBpcG5zIG9yIGlwZnMuCj4+ID4+PiArICAg IGlmICghaXNfaXBmcyAmJiAhaXNfaXBucykgewo+PiA+Pj4gKyAgICAgICAgcmV0ID0gQVZFUlJP UihFSU5WQUwpOwo+PiA+Pj4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVW5z dXBwb3J0ZWQgdXJsICVzXG4iLCB1cmkpOwo+PiA+Pj4gKyAgICAgICAgZ290byBlcnI7Cj4+ID4+ PiArICAgIH0KPj4gPj4+ICsKPj4gPj4+ICsgICAgLy8gSWYgdGhlIENJRCBoYXMgYSBsZW5ndGgg Z3JlYXRlciB0aGVuIDAgdGhlbiB3ZSBhc3N1bWUgd2UgaGF2ZQo+PiBhCj4+ID4+IHByb3BlciB3 b3JraW5nIG9uZS4KPj4gPj4+ICsgICAgLy8gSXQgY291bGQgc3RpbGwgYmUgd3JvbmcgYnV0IGlu IHRoYXQgY2FzZSB0aGUgZ2F0ZXdheSBzaG91bGQKPj4gc2F2ZQo+PiA+PiB1cyBhbmQKPj4gPj4+ ICsgICAgLy8gcnV0dXJuIGEgNDAzIGVycm9yLiBUaGUgaHR0cCBwcm90b2NvbCBoYW5kbGVzIHRo aXMuCj4+ID4+PiArICAgIGlmIChzdHJsZW4oaXBmc19jaWQpIDwgMSkgewo+PiA+Pj4gKyAgICAg ICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiQSBDSUQgbXVzdCBiZSBwcm92aWRlZC5cbiIp Owo+PiA+Pj4gKyAgICAgICAgcmV0ID0gQVZFUlJPUihFSUxTRVEpOwo+PiA+Pj4gKyAgICAgICAg Z290byBlcnI7Cj4+ID4+PiArICAgIH0KPj4gPj4+ICsKPj4gPj4+ICsgICAgLy8gUG9wdWxhdGUg Yy0+Z2F0ZXdheV9idWZmZXIgd2l0aCB3aGF0ZXZlciBpcyBpbiBjLT5nYXRld2F5Cj4+ID4+PiAr ICAgIGlmIChjLT5nYXRld2F5ICE9IE5VTEwpIHsKPj4gPj4+ICsgICAgICAgIGlmIChzbnByaW50 ZihjLT5nYXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSwKPj4gIiVzIiwK Pj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBjLT5nYXRld2F5KSA+PSBzaXplb2YoYy0+Z2F0 ZXdheV9idWZmZXIpKSB7Cj4+ID4+PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJO SU5HLCAiVGhlIC1nYXRld2F5IHBhcmFtZXRlciBpcyB0b28KPj4gPj4gbG9uZy4gV2UgYWxsb3cg YSBtYXggb2YgJXp1IGNoYXJhY3RlcnNcbiIsIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikpOwo+ PiA+Pgo+PiA+PiBXZSB0eXBpY2FsbHkgdXNlIFNJWkVfU1BFQ0lGSUVSIGluc3RlYWQgb2YgeiBm b3IgY29tcGF0aWJpbGl0eSB3aXRoCj4+ID4+IGFuY2llbnQgdmVyc2lvbnMgb2YgTVNWQy4KPj4g Pj4gKEkgZG9uJ3Qga25vdyB3aGV0aGVyIHRoZXJlIGlzIGFueSBzdXBwb3J0ZWQgdmVyc2lvbiBv ZiBNU1ZDIHRoYXQKPj4gPj4gZG9lc24ndCBzdXBwb3J0IHo7IEkgZG9uJ3QgdXNlIE1TVkMgbXlz ZWxmLikKPj4gPj4KPj4gPgo+PiA+IEhlcmUgdG9vIEkgd2FzIGV4cGxpY2l0bHkgc3VnZ2VzdGVk IHRvIHVzZSAlenUgKHdoZW4gSSB3YXMgdXNpbmcgLSBJCj4+IHRoaW5rCj4+ID4gLSAlbHUgYmVm b3JlKS4KPj4gPiBTbyBJIGFzc3VtZSB0aGF0IHRoZSBhbmNpZW50IE1TVkMgdmVyc2lvbiB5b3Un cmUgcmVmZXJyaW5nIHRvIGlzCj4+IHByb2JhYmx5Cj4+ID4gbm90IHN1cHBvcnRlZCBhbnltb3Jl IGZyb20gYW4gZmZtcGVnIGNvbXBpbGVyIHJlcXVpcmVtZW50IHBvaW50IG9mIHZpZXc/Cj4+ID4K Pj4gPiBTaG91bGQgaSBub3cgY2hhbmdlIGFsbCAiJXp1IiB0byAiJSJTSVpFX1NQRUNJRklFUiAo dGhpcyBkb2VzIG5vdCBtYWtlCj4+IGl0Cj4+ID4gbmVhdGVyIG5vciBzaG9ydGVyIHdpdGggdGhl IDgwIGNoYXIgbGluZSBsaW1pdCkuCj4+ID4gSXMgdGhpcyBjaGFuZ2UgcmVxdWlyZWQ/Cj4+Cj4+ IEFzIHNhaWQ6IEl0IGlzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggYW5jaWVudCB2ZXJzaW9ucyBv ZiBNU1ZDLiBCdXQgSQo+PiBkb24ndCBrbm93IHdoZXRoZXIgYW55IG9mIHRoZSBhY3R1YWxseSBz dXBwb3J0ZWQgdmVyc2lvbnMgb2YgTVNWQyBzdGlsbAo+PiBuZWVkIGl0Lgo+Pgo+PiA+Cj4+ID4g SWYgaXQgaXMsIHdoYXQgX2V4YWN0bHlfIGRvIGkgbmVlZCB0byBjaGFuZ2UgaXQgaW4/IEkgc2Vl IGEKPj4gPiBjb3VwbGUgZGlmZmVyZW50IFNJWkVfU1BFQ0lGSUVSIHByZWZpeGVzLiBJIGhhdmUg bm8gY2x1ZSB3aGF0IHRvIHVzZQo+PiBoZXJlLgo+Pgo+PiBUaGVyZSBpcyBvbmx5IG9uZSBTSVpF X1NQRUNJRklFUiwgbmFtZWx5IFNJWkVfU1BFQ0lGSUVSOyB0aGUKPj4gUFRSRElGRl9TUEVDSUZJ RVIgKG9yIHdoYXRldmVyIHlvdSBzZWUpIGlzIG9idmlvdXNseSBub3QgdGhlIHRoaW5nIHRvCj4+ IHVzZSBmb3Igc2l6ZV90Lgo+Pgo+PiBJIHNlZSBzb21lOgo+ICUiU0laRV9TUEVDSUZJRVIiCj4K PiBCdXQgYWxzbyBsaWtlIHRoaXM6Cj4gJTgiU0laRV9TUEVDSUZJRVIKPiAlNSJTSVpFX1NQRUNJ RklFUgo+Cj4gSSdtIGFzc3VtaW5nIHRoZXkgYXJlIGZvciBjbGlwcGluZz8KPgo+IEkgcmVhbGx5 IGRvbid0IGxpa2UgaGF2aW5nIHRvIGNoYW5nZSBpdCB0byB0aGlzIGFzIGl0Ogo+IC0gVWdsaWZp ZXMgdGhlIGNvZGUgKGFuZCBpIGRvdWJ0IGlmIGl0J3MgZXZlbiBuZWVkZWQpCj4gLSBEaXJlY3Rs eSBjb250cmFkaWN0cyBlYXJsaWVyIGZlZWRiYWNrCj4gLSBBbmQgZHVlIHRvIHRoZSBhYm92ZSBn aXZlcyBtZSBhIGZlZWxpbmcgb2Ygd2FzdGluZyB0aW1lCj4gLSBGaW5lIHRvIGNoYW5nZSBpdCBi dXQgSSBob3BlIHRoZXJlIGlzbid0IGFub3RoZXIgcGVyc29uIHBvcHBpbmcgdXAgd2l0aAo+IGEg cXVlc3Rpb24gdG8gY2hhbmdlIGl0IHlldCBhZ2Fpbi4uLi4KPgo+Cj4+ID4KPj4gPgo+PiA+Pj4g KyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPj4gPj4+ICsgICAgICAgICAgICBn b3RvIGVycjsKPj4gPj4+ICsgICAgICAgIH0KPj4gPj4+ICsgICAgfSBlbHNlIHsKPj4gPj4+ICsg ICAgICAgIC8vIFBvcHVsYXRlIHRoZSBJUEZTIGdhdGV3YXkgaWYgd2UgaGF2ZSBhbnkuCj4+ID4+ PiArICAgICAgICAvLyBJZiBub3QsIGluZm9ybSB0aGUgdXNlciBob3cgdG8gcHJvcGVybHkgc2V0 IG9uZS4KPj4gPj4+ICsgICAgICAgIHJldCA9IHBvcHVsYXRlX2lwZnNfZ2F0ZXdheShoKTsKPj4g Pj4+ICsKPj4gPj4+ICsgICAgICAgIGlmIChyZXQgPCAxKSB7Cj4+ID4+PiArICAgICAgICAgICAg Ly8gV2UgZmFsbGJhY2sgb24gZHdlYi5saW5rIChtYW5hZ2VkIGJ5IFByb3RvY29sIExhYnMpLgo+ PiA+Pj4gKyAgICAgICAgICAgIHNucHJpbnRmKGMtPmdhdGV3YXlfYnVmZmVyLCBzaXplb2YoYy0+ Z2F0ZXdheV9idWZmZXIpLCAiCj4+ID4+IGh0dHBzOi8vZHdlYi5saW5rIik7Cj4+ID4+PiArCj4+ ID4+PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiSVBGUyBkb2VzIG5v dCBhcHBlYXIgdG8gYmUKPj4gPj4gcnVubmluZy4gWW914oCZcmUgbm93IHVzaW5nIHRoZSBwdWJs aWMgZ2F0ZXdheSBhdCBkd2ViLmxpbmsuXG4iKTsKPj4gPj4+ICsgICAgICAgICAgICBhdl9sb2co aCwgQVZfTE9HX0lORk8sICJJbnN0YWxsaW5nIElQRlMgbG9jYWxseSBpcwo+PiA+PiByZWNvbW1l bmRlZCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIGFuZCByZWxpYWJpbGl0eSwgYW5kIG5vdCBzaGFy ZSBhbGwKPj4geW91cgo+PiA+PiBhY3Rpdml0eSB3aXRoIGEgc2luZ2xlIElQRlMgZ2F0ZXdheS5c biIpOwo+PiA+Pj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIlRoZXJlIGFy ZSBtdWx0aXBsZSBvcHRpb25zIHRvCj4+ID4+IGRlZmluZSB0aGlzIGdhdGV3YXkuXG4iKTsKPj4g Pj4+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICIxLiBDYWxsIGZmbXBlZyB3 aXRoIGEgZ2F0ZXdheQo+PiA+PiBwYXJhbSwgd2l0aG91dCBhIHRyYWlsaW5nIHNsYXNoOiAtZ2F0 ZXdheSA8dXJsPi5cbiIpOwo+PiA+Pj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5G TywgIjIuIERlZmluZSBhbiAkSVBGU19HQVRFV0FZCj4+ID4+IGVudmlyb25tZW50IHZhcmlhYmxl IHdpdGggdGhlIGZ1bGwgSFRUUCBVUkwgdG8gdGhlIGdhdGV3YXkgd2l0aG91dAo+PiB0cmFpbGlu Zwo+PiA+PiBmb3J3YXJkIHNsYXNoLlxuIik7Cj4+ID4+PiArICAgICAgICAgICAgYXZfbG9nKGgs IEFWX0xPR19JTkZPLCAiMy4gRGVmaW5lIGFuICRJUEZTX1BBVEgKPj4gZW52aXJvbm1lbnQKPj4g Pj4gdmFyaWFibGUgYW5kIHBvaW50IGl0IHRvIHRoZSBJUEZTIGRhdGEgcGF0aCAtIHRoaXMgaXMg dHlwaWNhbGx5Cj4+IH4vLmlwZnNcbiIpOwo+PiA+Pgo+PiA+PiBBbGwgdGhvc2UgQVZfTE9HX0lO Rk8gY2FuIGJlIGNvbWJpbmVkIHdoaWNoIGhhcyB0aGUgYWR2YW50YWdlIHRoYXQgdGhlCj4+ID4+ IGxvZ3MgY2FuJ3QgYmUgdGVhcmVkIGFwYXJ0ICh3aGljaCB0aGV5IGNhbiBub3cgaWYgc29tZXRo aW5nIGVsc2UgbG9ncwo+PiBhdAo+PiA+PiB0aGUgc2FtZSB0aW1lKTsgZnVydGhlcm1vcmUsIHRo aXMgd291bGQgYWxzbyBkZWNyZWFzZSBjb2Rlc2l6ZS4KPj4gPj4KPj4gPgo+PiA+IERvIHlvdSBo YXZlIGFuIGV4YW1wbGUgb2Ygd2hlcmUgdGhhdCdzIGhhcHBlbmluZz8KPj4gPgo+Pgo+PiBJdCBj YW4gaGFwcGVuIGFueSB0aW1lIHlvdSBoYXZlIG11bHRpcGxlIHRocmVhZHMgdXNpbmcgYXZfbG9n IGF0IHRoZQo+PiBzYW1lIHRpbWUuIEdpdmVuIHRoYXQgeW91ciBzdGF0ZW1lbnRzIGFyZSBzdXBw b3NlZCB0byBiZSBmdWxsIGxpbmVzLCBpdAo+PiBpcyBub3QgdGhhdCBiYWQgaWYgaXQgaGFwcGVu cyBoZXJlLCBidXQgaXQgaXMgbmV2ZXJ0aGVsZXNzIHN1Ym9wdGltYWwuCj4+Cj4KPiBJIG1lYW50 IGEgbXVsdGktbGluZSBhdl9sb2cgZXhhbXBsZSA7KSBCdXQgeWVhaCwgSSBnZXQgaG93IHRocmVh ZGluZyBjb3VsZAo+IHNjcmV3IHRoaXMgdXAuCj4KPj4KPj4gPj4KPj4gPj4+ICsgICAgICAgIH0K Pj4gPj4+ICsgICAgfQo+PiA+Pj4gKwo+PiA+Pj4gKyAgICAvLyBUZXN0IGlmIHRoZSBnYXRld2F5 IHN0YXJ0cyB3aXRoIGVpdGhlciBodHRwOi8vIG9yIGh0dHBzOi8vCj4+ID4+PiArICAgIGlmIChh dl9zdHJpc3RhcnQoYy0+Z2F0ZXdheV9idWZmZXIsICJodHRwOi8vIiwgTlVMTCkgPT0gMAo+PiA+ Pj4gKyAgICAgICAgJiYgYXZfc3RyaXN0YXJ0KGMtPmdhdGV3YXlfYnVmZmVyLCAiaHR0cHM6Ly8i LCBOVUxMKSA9PSAwKSB7Cj4+ID4+PiArICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcs ICJUaGUgZ2F0ZXdheSBVUkwgZGlkbid0IHN0YXJ0IHdpdGgKPj4gPj4gaHR0cDovLyBvciBodHRw czovLyBhbmQgaXMgdGhlcmVmb3JlIGludmFsaWQuXG4iKTsKPj4gPj4+ICsgICAgICAgIHJldCA9 IEFWRVJST1IoRUlMU0VRKTsKPj4gPj4+ICsgICAgICAgIGdvdG8gZXJyOwo+PiA+Pj4gKyAgICB9 Cj4+ID4+PiArCj4+ID4+PiArICAgIC8vIENvbmNhdGVuYXRlIHRoZSB1cmwuCj4+ID4+PiArICAg IC8vIFRoaXMgZW5kcyB1cCB3aXRoIHNvbWV0aGluZyBsaWtlOgo+PiA+PiBodHRwOi8vbG9jYWxo b3N0OjgwODAvaXBmcy9RbS4uLi4uCj4+ID4+PiArICAgIC8vIFRoZSBmb3JtYXQgb2YgIiVzJXMl cyVzIiBpcyB0aGUgZm9sbG93aW5nOgo+PiA+Pj4gKyAgICAvLyAxc3QgJXMgPSBUaGUgZ2F0ZXdh eS4KPj4gPj4+ICsgICAgLy8gMm5kICVzID0gSWYgdGhlIGdhdGV3YXkgZGlkbid0IGVuZCBpbiBh IHNsYXNoLCBhZGQgYSAiLyIuCj4+ID4+IE90aGVyd2lzZSBpdCdzIGFuIGVtcHR5IHN0cmluZwo+ PiA+Pj4gKyAgICAvLyAzcmQgJXMgPSBFaXRoZXIgaXBucy8gb3IgaXBmcy8uCj4+ID4+PiArICAg IC8vIDR0aCAlcyA9IFRoZSBJUEZTIENJRCAoUW0uLi4sIGJhZnkuLi4sIC4uLikuCj4+ID4+PiAr ICAgIGZ1bGx1cmkgPSBhdl9hc3ByaW50ZigiJXMlcyVzJXMiLAo+PiA+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgYy0+Z2F0ZXdheV9idWZmZXIsCj4+ID4+PiArCj4+IChjLT5nYXRld2F5 X2J1ZmZlcltzdHJsZW4oYy0+Z2F0ZXdheV9idWZmZXIpCj4+ID4+IC0gMV0gPT0gJy8nKSA/ICIi IDogIi8iLAo+PiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzX2lwbnMpID8gImlw bnMvIiA6ICJpcGZzLyIsCj4+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICBpcGZzX2Np ZCk7Cj4+ID4+Cj4+ID4+IE1pc3NpbmcgYWxsb2NhdGlvbiBjaGVjay4KPj4gPj4KPj4gPgo+PiA+ IEFoCj4+ID4gRml4ZWQgaXQgbG9jYWxseS4KPj4gPgo+PiA+Cj4+ID4+Cj4+ID4+PiArCj4+ID4+ PiArICAgIC8vIFBhc3MgdGhlIFVSTCBiYWNrIHRvIEZGTXBlZydzIHByb3RvY29sIGhhbmRsZXIu Cj4+ID4+PiArICAgIGlmICgocmV0ID0gZmZ1cmxfb3Blbl93aGl0ZWxpc3QoJmMtPmlubmVyLCBm dWxsdXJpLCBmbGFncywKPj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmaC0+aW50ZXJydXB0X2NhbGxiYWNrLCBvcHRpb25zLAo+PiA+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGgtPnByb3RvY29sX3doaXRlbGlzdCwKPj4gPj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLT5wcm90b2NvbF9ibGFja2xpc3QsIGgp KQo+PiA+Pj4gKyAgICAgICAgPCAwKSB7Cj4+ID4+Cj4+ID4+IFdlaXJkIGZvcm1hdHRpbmc7IHdo eSBkb24ndCB5b3UganVzdCB1c2UKPj4gPj4gcmV0ID0gZmZ1cmxfb3Blbl93aGl0ZWxpc3QoLi4u KTsKPj4gPj4gaWYgKHJldCA8IDApIHsKPj4gPj4KPj4gPgo+PiA+IEZpeGVkLgo+PiA+Cj4+ID4K Pj4gPj4KPj4gPj4+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlVuYWJsZSB0 byBvcGVuIHJlc291cmNlOiAlc1xuIiwKPj4gPj4gZnVsbHVyaSk7Cj4+ID4+PiArICAgICAgICBn b3RvIGVycjsKPj4gPj4+ICsgICAgfQo+PiA+Pj4gKwo+PiA+Pj4gK2VycjoKPj4gPj4+ICsgICAg YXZfZnJlZShmdWxsdXJpKTsKPj4gPj4+ICsgICAgcmV0dXJuIHJldDsKPj4gPj4+ICt9Cj4+ID4+ PiArCj4+ID4+PiArc3RhdGljIGludCBpcGZzX3JlYWQoVVJMQ29udGV4dCAqaCwgdW5zaWduZWQg Y2hhciAqYnVmLCBpbnQgc2l6ZSkKPj4gPj4+ICt7Cj4+ID4+PiArICAgIElQRlNHYXRld2F5Q29u dGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKPj4gPj4+ICsgICAgcmV0dXJuIGZmdXJsX3JlYWQoYy0+ aW5uZXIsIGJ1Ziwgc2l6ZSk7Cj4+ID4+PiArfQo+PiA+Pj4gKwo+PiA+Pj4gK3N0YXRpYyBpbnQ2 NF90IGlwZnNfc2VlayhVUkxDb250ZXh0ICpoLCBpbnQ2NF90IHBvcywgaW50IHdoZW5jZSkKPj4g Pj4+ICt7Cj4+ID4+PiArICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsK Pj4gPj4+ICsgICAgcmV0dXJuIGZmdXJsX3NlZWsoYy0+aW5uZXIsIHBvcywgd2hlbmNlKTsKPj4g Pj4+ICt9Cj4+ID4+PiArCj4+ID4+PiArc3RhdGljIGludCBpcGZzX2Nsb3NlKFVSTENvbnRleHQg KmgpCj4+ID4+PiArewo+PiA+Pj4gKyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2 X2RhdGE7Cj4+ID4+PiArICAgIHJldHVybiBmZnVybF9jbG9zZXAoJmMtPmlubmVyKTsKPj4gPj4+ ICt9Cj4+ID4+PiArCj4+ID4+PiArI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2YoSVBGU0dhdGV3 YXlDb250ZXh0LCB4KQo+PiA+Pj4gKwo+PiA+Pj4gK3N0YXRpYyBjb25zdCBBVk9wdGlvbiBvcHRp b25zW10gPSB7Cj4+ID4+PiArICAgIHsiZ2F0ZXdheSIsICJUaGUgZ2F0ZXdheSB0byBhc2sgZm9y IElQRlMgZGF0YS4iLCBPRkZTRVQoZ2F0ZXdheSksCj4+ID4+IEFWX09QVF9UWVBFX1NUUklORywg ey5zdHIgPSBOVUxMfSwgMCwgMCwgQVZfT1BUX0ZMQUdfREVDT0RJTkdfUEFSQU19LAo+PiA+Pj4g KyAgICB7TlVMTH0sCj4+ID4+PiArfTsKPj4gPj4+ICsKPj4gPj4+ICtzdGF0aWMgY29uc3QgQVZD bGFzcyBpcGZzX2NvbnRleHRfY2xhc3MgPSB7Cj4+ID4+PiArICAgIC5jbGFzc19uYW1lICAgPSAi SVBGUyIsCj4+ID4+PiArICAgIC5pdGVtX25hbWUgICAgPSBhdl9kZWZhdWx0X2l0ZW1fbmFtZSwK Pj4gPj4+ICsgICAgLm9wdGlvbiAgICAgICA9IG9wdGlvbnMsCj4+ID4+PiArICAgIC52ZXJzaW9u ICAgICAgPSBMSUJBVlVUSUxfVkVSU0lPTl9JTlQsCj4+ID4+PiArfTsKPj4gPj4+ICsKPj4gPj4+ ICtjb25zdCBVUkxQcm90b2NvbCBmZl9pcGZzX3Byb3RvY29sID0gewo+PiA+Pj4gKyAgICAubmFt ZSAgICAgICAgICAgICA9ICJpcGZzIiwKPj4gPj4+ICsgICAgLnVybF9vcGVuMiAgICAgICAgPSB0 cmFuc2xhdGVfaXBmc190b19odHRwLAo+PiA+Pj4gKyAgICAudXJsX3JlYWQgICAgICAgICA9IGlw ZnNfcmVhZCwKPj4gPj4+ICsgICAgLnVybF9zZWVrICAgICAgICAgPSBpcGZzX3NlZWssCj4+ID4+ PiArICAgIC51cmxfY2xvc2UgICAgICAgID0gaXBmc19jbG9zZSwKPj4gPj4+ICsgICAgLnByaXZf ZGF0YV9zaXplICAgPSBzaXplb2YoSVBGU0dhdGV3YXlDb250ZXh0KSwKPj4gPj4+ICsgICAgLnBy aXZfZGF0YV9jbGFzcyAgPSAmaXBmc19jb250ZXh0X2NsYXNzLAo+PiA+Pj4gK307Cj4+ID4+PiAr Cj4+ID4+PiArY29uc3QgVVJMUHJvdG9jb2wgZmZfaXBuc19wcm90b2NvbCA9IHsKPj4gPj4+ICsg ICAgLm5hbWUgICAgICAgICAgICAgPSAiaXBucyIsCj4+ID4+PiArICAgIC51cmxfb3BlbjIgICAg ICAgID0gdHJhbnNsYXRlX2lwZnNfdG9faHR0cCwKPj4gPj4+ICsgICAgLnVybF9yZWFkICAgICAg ICAgPSBpcGZzX3JlYWQsCj4+ID4+PiArICAgIC51cmxfc2VlayAgICAgICAgID0gaXBmc19zZWVr LAo+PiA+Pj4gKyAgICAudXJsX2Nsb3NlICAgICAgICA9IGlwZnNfY2xvc2UsCj4+ID4+PiArICAg IC5wcml2X2RhdGFfc2l6ZSAgID0gc2l6ZW9mKElQRlNHYXRld2F5Q29udGV4dCksCj4+ID4+PiAr ICAgIC5wcml2X2RhdGFfY2xhc3MgID0gJmlwZnNfY29udGV4dF9jbGFzcywKPj4gPj4+ICt9Owo+ PiA+Pj4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L3Byb3RvY29scy5jIGIvbGliYXZmb3JtYXQv cHJvdG9jb2xzLmMKPj4gPj4+IGluZGV4IGQwNzU2M2NkMGMuLjZlZTYyYTU5OGEgMTAwNjQ0Cj4+ ID4+PiAtLS0gYS9saWJhdmZvcm1hdC9wcm90b2NvbHMuYwo+PiA+Pj4gKysrIGIvbGliYXZmb3Jt YXQvcHJvdG9jb2xzLmMKPj4gPj4+IEBAIC03MSw2ICs3MSw4IEBAIGV4dGVybiBjb25zdCBVUkxQ cm90b2NvbCBmZl9saWJzcnRfcHJvdG9jb2w7Cj4+ID4+PiAgZXh0ZXJuIGNvbnN0IFVSTFByb3Rv Y29sIGZmX2xpYnNzaF9wcm90b2NvbDsKPj4gPj4+ICBleHRlcm4gY29uc3QgVVJMUHJvdG9jb2wg ZmZfbGlic21iY2xpZW50X3Byb3RvY29sOwo+PiA+Pj4gIGV4dGVybiBjb25zdCBVUkxQcm90b2Nv bCBmZl9saWJ6bXFfcHJvdG9jb2w7Cj4+ID4+PiArZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZm X2lwZnNfcHJvdG9jb2w7Cj4+ID4+PiArZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2lwbnNf cHJvdG9jb2w7Cj4+ID4+Pgo+PiA+Pj4gICNpbmNsdWRlICJsaWJhdmZvcm1hdC9wcm90b2NvbF9s aXN0LmMiCj4+ID4+Pgo+PiA+Pgo+PiA+Pgo+PiA+IFRoYW5rIHlvdSB2ZXJ5IG11Y2ggZm9yIHlv dXIgcmV2aWV3IQo+PiA+IFBsZWFzZSBkbyBoaXQgbWUgYmFjayB3aXRoIGEgcmVwbHkgb24gdGhl IHF1ZXN0aW9ucyBJIGhhdmUgc3RpbGwgb3Blbi4KPj4gPgo+PiA+IEknbSBob25lc3RseSBxdWl0 ZSBkb25lIHdpdGggcGF0Y2hpbmcgdGhpcyBvdmVyIGFuZCBvdmVyIGFnYWluIChpdCdzCj4+IG9w ZW4KPj4gPiBmb3IgbW9udGhzIG5vdykgc28gSSdkIGxpa2UgdG8gcHV0IHRoZSBwYWNlIGluIHRo ZXNlIGZpeGVzIGFuZCBzZW5kIGFuCj4+ID4gdXBkYXRlZCB2ZXJzaW9uIHRvZGF5Lgo+PiA+Cj4+ Cj4+ClBpbmcgQW5kcmVhcywgaSdtIHdhaXRpbmcgZm9yIHlvdXIgcmVzcG9uc2Ugb24gdGhlIHF1 ZXN0aW9ucyBhYm92ZSBiZWZvcmUgaQpzZW5kIGFuIHVwZGF0ZWQgcGF0Y2guCkFsc28gcGluZyBm b3IgVG9tYXMgd2l0aCByZWdhcmRzIHRvIHRoZSBzYW1lIHF1ZXN0aW9ucyAoJXp1IHZzClNJWkVf U1BFQ0lGSUVSIGFuZCB0aGUgbWVyZ2luZyBvZiBcclxuIHdoaWNoIGkgaGFkIHNwbGl0IGJhc2Vk IG9uIHlvdXIKZmVlZGJhY2spCgpMZXQncyBrZWVwIHRoZSBwYWNlIDopCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxp c3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlz dGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3Ig ZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vi c2NyaWJlIi4K