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 9C95240957 for ; Sun, 3 Apr 2022 22:39:47 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 596CE68B2D0; Mon, 4 Apr 2022 01:39:39 +0300 (EEST) Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 680A768B226 for ; Mon, 4 Apr 2022 01:39:32 +0300 (EEST) Received: by mail-ed1-f44.google.com with SMTP id g22so9042680edz.2 for ; Sun, 03 Apr 2022 15:39:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Gf1iNDhFyY01A0Pv76hn7cKZFpcfrQrTNCLMQ70Tkfc=; b=HOSajRLhsTHhdpQ853UBKK3KW95KyN6Pms+++i+yHMklTOnSb5LJYm2VfBWYsCxKwr Ols/qN+zBVEAgoqMpBqYU8BfzDNUsZ90rJ6xzzl4vAMUGDKyMmg2GJ11sS+52KIkK0AS 3QRxffXLxcy+7B+65WEx5EeI8aGFDkE7x1whZzGKi3ZW/DwnCA+ziug7tAviawKEaj+7 JMNjSeY6KB170IdOB/Pu4NITIbELcT9I/kZak9Rt5J5p0gxC2AY8DaUsdtBmNhDgAC4V ahonr6i5RaKVfG0DWyo8nRgtJOWISf8Cya69rge87EQQQL3NLBiaEElzuuSAY46Zv3B0 tFtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Gf1iNDhFyY01A0Pv76hn7cKZFpcfrQrTNCLMQ70Tkfc=; b=VShOi7lMFK9OsiHz+6544yistz1HXmZS9JLw+tGXpk3fyquCBjFw1CfM/TC6eANg0D tv6TJ8yjveiy3UB8xKzbCgrj8g7ulMJmwh5zpMIjhLhxCRGsi1fx5tPM4EmXSNIwZt/J 643Tc/1Av74KYfAM3CbJIxZ0P/deupC4AAoZgbY07mqn8PCuyEcbjHNrhUy0UHpLRXY9 EPFewkYKp4lsOv7iXIdGd7lAtJH9G4HtyaOtfDmJ72AioHcabkswOieN5lzu08PcNFtz YCKTLIE/vQf7UQUYQlSkpVzfQ372pvmKsdyELql+hMGHbk1HYRFvv0Fg7sSzE5LabA5C RplQ== X-Gm-Message-State: AOAM531y8g9/mY0XwjlGQqX4nFNKk3oEtLGJK4q7oI/gbO6hfkD4RZAB +dhZM/Zanco25HPk3pnlwKaKNo0UunQ= X-Google-Smtp-Source: ABdhPJxIc1ItQfAID1ChTmrNrOPF3NwlezM/dnKgMRexYni6jt/IW+YoMe6R8kn1G+NfhLK5q2f8SQ== X-Received: by 2002:a05:6402:4305:b0:419:2aeb:2a9b with SMTP id m5-20020a056402430500b004192aeb2a9bmr30451097edc.346.1649025571395; Sun, 03 Apr 2022 15:39:31 -0700 (PDT) Received: from localhost.localdomain (92-110-137-10.cable.dynamic.v4.ziggo.nl. [92.110.137.10]) by smtp.gmail.com with ESMTPSA id gt17-20020a170906f21100b006e6f9ab4830sm1897398ejb.186.2022.04.03.15.39.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 03 Apr 2022 15:39:30 -0700 (PDT) From: Mark Gaiser To: ffmpeg-devel@ffmpeg.org Date: Mon, 4 Apr 2022 00:38:25 +0200 Message-Id: <20220403223825.26764-2-markg85@gmail.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220403223825.26764-1-markg85@gmail.com> References: <20220403223825.26764-1-markg85@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v12 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: Mark Gaiser 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: VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yOgotIGZmcGxheSBpcGZzOi8vPGNpZD4KLSBmZnBs YXkgaXBuczovLzxjaWQ+CgpJUEZTIGRhdGEgY2FuIGJlIHBsYXllZCBmcm9tIHNvIGNhbGxlZCAi aXBmcyBnYXRld2F5cyIuCkEgZ2F0ZXdheSBpcyBlc3NlbnRpYWxseSBhIHdlYnNlcnZlciB0aGF0 IGdpdmVzIGFjY2VzcyB0byB0aGUKZGlzdHJpYnV0ZWQgSVBGUyBuZXR3b3JrLgoKVGhpcyBwcm90 b2NvbCBzdXBwb3J0IChpcGZzIGFuZCBpcG5zKSB0aGVyZWZvcmUgdHJhbnNsYXRlcwppcGZzOi8v IGFuZCBpcG5zOi8vIHRvIGEgaHR0cDovLyB1cmwuIFRoaXMgcmVzdWx0aW5nIHVybCBpcwp0aGVu IGhhbmRsZWQgYnkgdGhlIGh0dHAgcHJvdG9jb2wuIEl0IGNvdWxkIGFsc28gYmUgaHR0cHMKZGVw ZW5kaW5nIG9uIHRoZSBnYXRld2F5IHByb3ZpZGVkLgoKVG8gdXNlIHRoaXMgcHJvdG9jb2wsIGEg Z2F0ZXdheSBtdXN0IGJlIHByb3ZpZGVkLgpJZiB5b3UgZG8gbm90aGluZyBpdCB3aWxsIHRyeSB0 byBmaW5kIGl0IGluIHlvdXIKJEhPTUUvLmlwZnMvZ2F0ZXdheSBmaWxlLiBUaGUgd2F5cyB0byBz ZXQgaXQgbWFudWFsbHkgYXJlOgoxLiBEZWZpbmUgYSAtZ2F0ZXdheSA8dXJsPiB0byB0aGUgZ2F0 ZXdheS4KMi4gRGVmaW5lICRJUEZTX0dBVEVXQVkgd2l0aCB0aGUgZnVsbCBodHRwIGxpbmsgdG8g dGhlIGdhdGV3YXkuCjMuIERlZmluZSAkSVBGU19QQVRIIGFuZCBwb2ludCBpdCB0byB0aGUgSVBG UyBkYXRhIHBhdGguCjQuIEhhdmUgSVBGUyBydW5uaW5nIGluIHlvdXIgbG9jYWwgdXNlciBmb2xk ZXIgKHVuZGVyICRIT01FLy5pcGZzKS4KClNpZ25lZC1vZmYtYnk6IE1hcmsgR2Fpc2VyIDxtYXJr Zzg1QGdtYWlsLmNvbT4KLS0tCiBjb25maWd1cmUgICAgICAgICAgICAgICAgIHwgICAyICsKIGRv Yy9wcm90b2NvbHMudGV4aSAgICAgICAgfCAgMzAgKysrKwogbGliYXZmb3JtYXQvTWFrZWZpbGUg ICAgICB8ICAgMiArCiBsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jIHwgMzI2ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWJhdmZvcm1hdC9wcm90b2NvbHMuYyAgIHwg ICAyICsKIDUgZmlsZXMgY2hhbmdlZCwgMzYyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jCgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIv Y29uZmlndXJlCmluZGV4IGU0ZDM2YWE2MzkuLjU1YWY5MDk1N2EgMTAwNzU1Ci0tLSBhL2NvbmZp Z3VyZQorKysgYi9jb25maWd1cmUKQEAgLTM1NzksNiArMzU3OSw4IEBAIHVkcF9wcm90b2NvbF9z ZWxlY3Q9Im5ldHdvcmsiCiB1ZHBsaXRlX3Byb3RvY29sX3NlbGVjdD0ibmV0d29yayIKIHVuaXhf cHJvdG9jb2xfZGVwcz0ic3lzX3VuX2giCiB1bml4X3Byb3RvY29sX3NlbGVjdD0ibmV0d29yayIK K2lwZnNfcHJvdG9jb2xfc2VsZWN0PSJodHRwc19wcm90b2NvbCIKK2lwbnNfcHJvdG9jb2xfc2Vs ZWN0PSJodHRwc19wcm90b2NvbCIKIAogIyBleHRlcm5hbCBsaWJyYXJ5IHByb3RvY29scwogbGli YW1xcF9wcm90b2NvbF9kZXBzPSJsaWJyYWJiaXRtcSIKZGlmZiAtLWdpdCBhL2RvYy9wcm90b2Nv bHMudGV4aSBiL2RvYy9wcm90b2NvbHMudGV4aQppbmRleCBkMjA3ZGYwYjUyLi43YzljMGE0ODA4 IDEwMDY0NAotLS0gYS9kb2MvcHJvdG9jb2xzLnRleGkKKysrIGIvZG9jL3Byb3RvY29scy50ZXhp CkBAIC0yMDI1LDUgKzIwMjUsMzUgQEAgZGVjb2RpbmcgZXJyb3JzLgogCiBAZW5kIHRhYmxlCiAK K0BzZWN0aW9uIGlwZnMKKworSW50ZXJQbGFuZXRhcnkgRmlsZSBTeXN0ZW0gKElQRlMpIHByb3Rv Y29sIHN1cHBvcnQuIE9uZSBjYW4gYWNjZXNzIGZpbGVzIHN0b3JlZCAKK29uIHRoZSBJUEZTIG5l dHdvcmsgdGhyb3VnaCBzbyBjYWxsZWQgZ2F0ZXdheXMuIFRob3NlIGFyZSBodHRwKHMpIGVuZHBv aW50cy4KK1RoaXMgcHJvdG9jb2wgd3JhcHMgdGhlIElQRlMgbmF0aXZlIHByb3RvY29scyAoaXBm czovLyBhbmQgaXBuczovLykgdG8gYmUgc2VuZCAKK3RvIHN1Y2ggYSBnYXRld2F5LiBVc2VycyBj YW4gKGFuZCBzaG91bGQpIGhvc3QgdGhlaXIgb3duIG5vZGUgd2hpY2ggbWVhbnMgdGhpcyAKK3By b3RvY29sIHdpbGwgdXNlIHlvdXIgbG9jYWwgbWFjaGluZSBnYXRld2F5IHRvIGFjY2VzcyBmaWxl cyBvbiB0aGUgSVBGUyBuZXR3b3JrLgorCitJZiBhIHVzZXIgZG9lc24ndCBoYXZlIGEgbm9kZSBv ZiB0aGVpciBvd24gdGhlbiB0aGUgcHVibGljIGdhdGV3YXkgZHdlYi5saW5rIGlzIAordXNlZCBi eSBkZWZhdWx0LgorCitZb3UgY2FuIHVzZSB0aGlzIHByb3RvY29sIGluIDIgd2F5cy4gVXNpbmcg SVBGUzoKK0BleGFtcGxlCitmZnBsYXkgaXBmczovL1FtYkd0SmcyM3NraHZGbXU5bUppZVBWQnlo Znp1NXJ3bzc0TUVrVkRZQW1GNVQKK0BlbmQgZXhhbXBsZQorCitPciB0aGUgSVBOUyBwcm90b2Nv bCAoSVBOUyBpcyBtdXRhYmxlIElQRlMpOgorQGV4YW1wbGUKK2ZmcGxheSBpcG5zOi8vUW1iR3RK ZzIzc2todkZtdTltSmllUFZCeWhmenU1cndvNzRNRWtWRFlBbUY1VAorQGVuZCBleGFtcGxlCisK K1lvdSBjYW4gYWxzbyBjaGFuZ2UgdGhlIGdhdGV3YXkgdG8gYmUgdXNlZDoKKworQHRhYmxlIEBv cHRpb24KKworQGl0ZW0gZ2F0ZXdheQorRGVmaW5lcyB0aGUgZ2F0ZXdheSB0byB1c2UuIFdoZW4g bm90aGluZyBpcyBwcm92aWRlZCB0aGUgcHJvdG9jb2wgd2lsbCBmaXJzdCB0cnkgCit5b3VyIGxv Y2FsIGdhdGV3YXkuIElmIHRoYXQgZmFpbHMgZHdlYi5saW5rIHdpbGwgYmUgdXNlZC4KKworQGVu ZCB0YWJsZQogCiBAYyBtYW4gZW5kIFBST1RPQ09MUwpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQv TWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQppbmRleCBkNzE4MmQ2YmQ4Li5lMzIzM2Zk N2FjIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9NYWtlZmlsZQorKysgYi9saWJhdmZvcm1hdC9N YWtlZmlsZQpAQCAtNjYwLDYgKzY2MCw4IEBAIE9CSlMtJChDT05GSUdfU1JUUF9QUk9UT0NPTCkg ICAgICAgICAgICAgKz0gc3J0cHByb3RvLm8gc3J0cC5vCiBPQkpTLSQoQ09ORklHX1NVQkZJTEVf UFJPVE9DT0wpICAgICAgICAgICs9IHN1YmZpbGUubwogT0JKUy0kKENPTkZJR19URUVfUFJPVE9D T0wpICAgICAgICAgICAgICArPSB0ZWVwcm90by5vIHRlZV9jb21tb24ubwogT0JKUy0kKENPTkZJ R19UQ1BfUFJPVE9DT0wpICAgICAgICAgICAgICArPSB0Y3AubworT0JKUy0kKENPTkZJR19JUEZT X1BST1RPQ09MKSAgICAgICAgICAgICArPSBpcGZzZ2F0ZXdheS5vCitPQkpTLSQoQ09ORklHX0lQ TlNfUFJPVE9DT0wpICAgICAgICAgICAgICs9IGlwZnNnYXRld2F5Lm8KIFRMUy1PQkpTLSQoQ09O RklHX0dOVVRMUykgICAgICAgICAgICAgICAgKz0gdGxzX2dudXRscy5vCiBUTFMtT0JKUy0kKENP TkZJR19MSUJUTFMpICAgICAgICAgICAgICAgICs9IHRsc19saWJ0bHMubwogVExTLU9CSlMtJChD T05GSUdfTUJFRFRMUykgICAgICAgICAgICAgICArPSB0bHNfbWJlZHRscy5vCmRpZmYgLS1naXQg YS9saWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jIGIvbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5lMDFlYjJmOWEzCi0tLSAvZGV2 L251bGwKKysrIGIvbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYwpAQCAtMCwwICsxLDMyNiBAQAor LyoKKyAqIElQRlMgYW5kIElQTlMgcHJvdG9jb2wgc3VwcG9ydCB0aHJvdWdoIElQRlMgR2F0ZXdh eS4KKyAqIENvcHlyaWdodCAoYykgMjAyMiBNYXJrIEdhaXNlcgorICoKKyAqIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEZGbXBlZy4KKyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9m IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK KyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcg d2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5k YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg MDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5jbHVkZSAibGliYXZ1dGlsL2F2c3RyaW5nLmgiCisj aW5jbHVkZSAibGliYXZ1dGlsL29wdC5oIgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVk ZSAib3Nfc3VwcG9ydC5oIgorI2luY2x1ZGUgInVybC5oIgorCit0eXBlZGVmIHN0cnVjdCBJUEZT R2F0ZXdheUNvbnRleHQgeworICAgIEFWQ2xhc3MgKmNsYXNzOworICAgIFVSTENvbnRleHQgKmlu bmVyOworICAgIC8vIElzIGZpbGxlZCBieSB0aGUgLWdhdGV3YXkgYXJndW1lbnQgYW5kIG5vdCBj aGFuZ2VkIGFmdGVyLgorICAgIGNoYXIgKmdhdGV3YXk7CisgICAgLy8gSWYgdGhlIGFib3ZlIGdh dGV3YXkgaXMgbm9uIG51bGwsIGl0IHdpbGwgYmUgY29waWVkIGludG8gdGhpcyBidWZmZXIuCisg ICAgLy8gRWxzZSB0aGlzIGJ1ZmZlciB3aWxsIGNvbnRhaW4gdGhlIGF1dG8gZGV0ZWN0ZWQgZ2F0 ZXdheS4KKyAgICAvLyBJbiBlaXRoZXIgY2FzZSwgdGhlIGdhdGV3YXkgdG8gdXNlIHdpbGwgYmUg aW4gdGhpcyBidWZmZXIuCisgICAgY2hhciBnYXRld2F5X2J1ZmZlcltQQVRIX01BWF07Cit9IElQ RlNHYXRld2F5Q29udGV4dDsKKworLy8gQSBiZXN0LWVmZm9ydCB3YXkgdG8gZmluZCB0aGUgSVBG UyBnYXRld2F5LgorLy8gT25seSB0aGUgbW9zdCBhcHByb3BpYXRlIGdhdGV3YXkgaXMgc2V0LiBJ dCdzIG5vdCBhY3R1YWxseSByZXF1ZXN0ZWQKKy8vIChodHRwIGNhbGwpIHRvIHByZXZlbnQgYSBw b3RlbnRpYWwgc2xvd2Rvd24gaW4gc3RhcnR1cC4gQSBwb3RlbnRpYWwgdGltZW91dAorLy8gaXMg aGFuZGxlZCBieSB0aGUgSFRUUCBwcm90b2NvbC4KK3N0YXRpYyBpbnQgcG9wdWxhdGVfaXBmc19n YXRld2F5KFVSTENvbnRleHQgKmgpCit7CisgICAgSVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+ cHJpdl9kYXRhOworICAgIGNoYXIgaXBmc19mdWxsX2RhdGFfZm9sZGVyW1BBVEhfTUFYXTsKKyAg ICBjaGFyIGlwZnNfZ2F0ZXdheV9maWxlW1BBVEhfTUFYXTsKKyAgICBzdHJ1Y3Qgc3RhdCBzdDsK KyAgICBpbnQgc3RhdF9yZXQgPSAwOworICAgIGludCByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cisg ICAgRklMRSAqZ2F0ZXdheV9maWxlID0gTlVMTDsKKworICAgIC8vIFRlc3QgJElQRlNfR0FURVdB WS4KKyAgICBpZiAoZ2V0ZW52KCJJUEZTX0dBVEVXQVkiKSAhPSBOVUxMKSB7CisgICAgICAgIGlm IChzbnByaW50ZihjLT5nYXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSwg IiVzIiwKKyAgICAgICAgICAgICAgICAgICAgIGdldGVudigiSVBGU19HQVRFV0FZIikpID49IHNp emVvZihjLT5nYXRld2F5X2J1ZmZlcikpIHsKKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0df V0FSTklORywgIlRoZSBJUEZTX0dBVEVXQVkgZW52aXJvbm1lbnQgdmFyaWFibGUgIgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZWVkcyB0aGUgbWF4aW11bSBsZW5n dGguICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlIGFsbG93IGEg bWF4IG9mICV6dSBjaGFyYWN0ZXJzXG4iLAorICAgICAgICAgICAgICAgICAgIHNpemVvZihjLT5n YXRld2F5X2J1ZmZlcikpOworICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOworICAg ICAgICAgICAgZ290byBlcnI7CisgICAgICAgIH0KKworICAgICAgICByZXQgPSAxOworICAgICAg ICBnb3RvIGVycjsKKyAgICB9IGVsc2UKKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19ERUJVRywg IiRJUEZTX0dBVEVXQVkgaXMgZW1wdHkuXG4iKTsKKworICAgIC8vIFdlIG5lZWQgdG8ga25vdyB0 aGUgSVBGUyBmb2xkZXIgdG8gLSBldmVudHVhbGx5IC0gcmVhZCB0aGUgY29udGVudHMgb2YKKyAg ICAvLyB0aGUgImdhdGV3YXkiIGZpbGUgd2hpY2ggd291bGQgdGVsbCB1cyB0aGUgZ2F0ZXdheSB0 byB1c2UuCisgICAgaWYgKGdldGVudigiSVBGU19QQVRIIikgPT0gTlVMTCkgeworICAgICAgICBh dl9sb2coaCwgQVZfTE9HX0RFQlVHLCAiJElQRlNfUEFUSCBpcyBlbXB0eS5cbiIpOworCisgICAg ICAgIC8vIFRyeSB2aWEgdGhlIGhvbWUgZm9sZGVyLgorICAgICAgICBpZiAoZ2V0ZW52KCJIT01F IikgPT0gTlVMTCkgeworICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiJEhP TUUgYXBwZWFycyB0byBiZSBlbXB0eS5cbiIpOworICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihF SU5WQUwpOworICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgIH0KKworICAgICAgICAvLyBW ZXJpZnkgdGhlIGNvbXBvc2VkIHBhdGggZml0cy4KKyAgICAgICAgaWYgKHNucHJpbnRmKGlwZnNf ZnVsbF9kYXRhX2ZvbGRlciwgc2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlciksCisgICAgICAg ICAgICAgICAgICAgICAiJXMvLmlwZnMvIiwgZ2V0ZW52KCJIT01FIikpID49IHNpemVvZihpcGZz X2Z1bGxfZGF0YV9mb2xkZXIpKSB7CisgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5J TkcsICJUaGUgSVBGUyBkYXRhIHBhdGggZXhjZWVkcyB0aGUgIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAibWF4IHBhdGggbGVuZ3RoICglenUpXG4iLAorICAgICAgICAg ICAgICAgICAgIHNpemVvZihpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpKTsKKyAgICAgICAgICAgIHJl dCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICB9CisK KyAgICAgICAgLy8gU3RhdCB0aGUgZm9sZGVyLgorICAgICAgICAvLyBJdCBzaG91bGQgZXhpc3Qg aW4gYSBkZWZhdWx0IElQRlMgc2V0dXAgd2hlbiBydW4gYXMgbG9jYWwgdXNlci4KKyAgICAgICAg c3RhdF9yZXQgPSBzdGF0KGlwZnNfZnVsbF9kYXRhX2ZvbGRlciwgJnN0KTsKKworICAgICAgICBp ZiAoc3RhdF9yZXQgPCAwKSB7CisgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICJV bmFibGUgdG8gZmluZCBJUEZTIGZvbGRlci4gV2UgdHJpZWQ6XG4iKTsKKyAgICAgICAgICAgIGF2 X2xvZyhoLCBBVl9MT0dfSU5GTywgIi0gJElQRlNfUEFUSCwgd2hpY2ggd2FzIGVtcHR5LlxuIik7 CisgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICItICRIT01FLy5pcGZzIChmdWxs IHVyaTogJXMpIHdoaWNoIGRvZXNuJ3QgZXhpc3QuXG4iLCBpcGZzX2Z1bGxfZGF0YV9mb2xkZXIp OworICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9FTlQpOworICAgICAgICAgICAgZ290byBl cnI7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoc25wcmludGYoaXBmc19m dWxsX2RhdGFfZm9sZGVyLCBzaXplb2YoaXBmc19mdWxsX2RhdGFfZm9sZGVyKSwgIiVzIiwKKyAg ICAgICAgICAgICAgICAgZ2V0ZW52KCJJUEZTX1BBVEgiKSkgPj0gc2l6ZW9mKGlwZnNfZnVsbF9k YXRhX2ZvbGRlcikpIHsKKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRo ZSBJUEZTX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiZXhjZWVkcyB0aGUgbWF4aW11bSBsZW5ndGguICIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlIGFsbG93IGEgbWF4IG9mICV6dSBjaGFy YWN0ZXJzXG4iLAorICAgICAgICAgICAgICAgICAgIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikp OworICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOworICAgICAgICAgICAgZ290byBl cnI7CisgICAgICAgIH0KKworICAgIH0KKworICAgIC8vIENvcHkgdGhlIGZ1bGx5IGNvbXBvc2Vk IGdhdGV3YXkgcGF0aCBpbnRvIGlwZnNfZ2F0ZXdheV9maWxlLgorICAgIGlmIChzbnByaW50Zihp cGZzX2dhdGV3YXlfZmlsZSwgc2l6ZW9mKGlwZnNfZ2F0ZXdheV9maWxlKSwgIiVzZ2F0ZXdheSIs CisgICAgICAgICAgICAgICAgIGlwZnNfZnVsbF9kYXRhX2ZvbGRlcikgPj0gc2l6ZW9mKGlwZnNf Z2F0ZXdheV9maWxlKSkgeworICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUg SVBGUyBnYXRld2F5IGZpbGUgcGF0aCBleGNlZWRzICIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAidGhlIG1heCBwYXRoIGxlbmd0aCAoJXp1KVxuIiwKKyAgICAgICAgICAgICAg IHNpemVvZihpcGZzX2dhdGV3YXlfZmlsZSkpOworICAgICAgICByZXQgPSBBVkVSUk9SKEVOT0VO VCk7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIC8vIEdldCB0aGUgY29udGVudHMg b2YgdGhlIGdhdGV3YXkgZmlsZS4KKyAgICBnYXRld2F5X2ZpbGUgPSBhdl9mb3Blbl91dGY4KGlw ZnNfZ2F0ZXdheV9maWxlLCAiciIpOworICAgIGlmICghZ2F0ZXdheV9maWxlKSB7CisgICAgICAg IGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTIGdhdGV3YXkgZmlsZSAoZnVsbCB1 cmk6ICVzKSBkb2Vzbid0IGV4aXN0LiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIklzIHRoZSBnYXRld2F5IGVuYWJsZWQ/XG4iLAorICAgICAgICAgICAgICAgaXBmc19nYXRl d2F5X2ZpbGUpOworICAgICAgICByZXQgPSBBVkVSUk9SKEVOT0VOVCk7CisgICAgICAgIGdvdG8g ZXJyOworICAgIH0KKworICAgIC8vIFJlYWQgYSBzaW5nbGUgbGluZSAoZmdldHMgc3RvcHMgYXQg bmV3IGxpbmUgbWFyaykuCisgICAgaWYgKCFmZ2V0cyhjLT5nYXRld2F5X2J1ZmZlciwgc2l6ZW9m KGMtPmdhdGV3YXlfYnVmZmVyKSAtIDEsIGdhdGV3YXlfZmlsZSkpIHsKKyAgICAgIGF2X2xvZyho LCBBVl9MT0dfV0FSTklORywgIlVuYWJsZSB0byByZWFkIGZyb20gZmlsZSAoZnVsbCB1cmk6ICVz KS5cbiIsCisgICAgICAgICAgICAgaXBmc19nYXRld2F5X2ZpbGUpOworICAgICAgcmV0ID0gQVZF UlJPUihFTk9FTlQpOworICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgLy8gUmVwbGFjZSBm aXJzdCBvY2N1cmVuY2Ugb2YgZW5kIG9mIGxpbmUgd2l0aCBcMAorICAgIGMtPmdhdGV3YXlfYnVm ZmVyW3N0cmNzcG4oYy0+Z2F0ZXdheV9idWZmZXIsICJcclxuIildID0gMDsKKworICAgIC8vIElm IHN0cmxlbiBmaW5kcyBhbnl0aGluZyBsb25nZXIgdGhlbiAwIGNoYXJhY3RlcnMgdGhlbiB3ZSBo YXZlIGEKKyAgICAvLyBwb3RlbnRpYWwgZ2F0ZXdheSB1cmwuCisgICAgaWYgKCpjLT5nYXRld2F5 X2J1ZmZlciA9PSAnXDAnKSB7CisgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRo ZSBJUEZTIGdhdGV3YXkgZmlsZSAoZnVsbCB1cmk6ICVzKSBhcHBlYXJzIHRvIGJlIGVtcHR5LiAi CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklzIHRoZSBnYXRld2F5IHN0YXJ0 ZWQ/XG4iLAorICAgICAgICAgICAgICAgaXBmc19nYXRld2F5X2ZpbGUpOworICAgICAgICByZXQg PSBBVkVSUk9SKEVJTFNFUSk7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0gZWxzZSB7CisgICAg ICAgIC8vIFdlJ3JlIGRvbmUsIHRoZSBjLT5nYXRld2F5X2J1ZmZlciBoYXMgc29tZXRoaW5nIHRo YXQgbG9va3MgdmFsaWQuCisgICAgICAgIHJldCA9IDE7CisgICAgICAgIGdvdG8gZXJyOworICAg IH0KKworZXJyOgorICAgIGlmIChnYXRld2F5X2ZpbGUpCisgICAgICAgIGZjbG9zZShnYXRld2F5 X2ZpbGUpOworCisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCB0cmFuc2xhdGVfaXBm c190b19odHRwKFVSTENvbnRleHQgKmgsIGNvbnN0IGNoYXIgKnVyaSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsIEFWRGljdGlvbmFyeSAqKm9wdGlvbnMpCit7 CisgICAgY29uc3QgY2hhciAqaXBmc19jaWQ7CisgICAgY2hhciAqZnVsbHVyaSA9IE5VTEw7Cisg ICAgaW50IHJldDsKKyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2RhdGE7CisK KyAgICAvLyBUZXN0IGZvciBpcGZzOi8vLCBpcGZzOiwgaXBuczovLyBhbmQgaXBuczouIFRoaXMg cHJlZml4IGlzIHN0cmlwcGVkIGZyb20KKyAgICAvLyB0aGUgc3RyaW5nIGxlYXZpbmcganVzdCB0 aGUgQ0lEIGluIGlwZnNfY2lkLgorICAgIGludCBpc19pcGZzID0gYXZfc3RyaXN0YXJ0KHVyaSwg ImlwZnM6Ly8iLCAmaXBmc19jaWQpOworICAgIGludCBpc19pcG5zID0gYXZfc3RyaXN0YXJ0KHVy aSwgImlwbnM6Ly8iLCAmaXBmc19jaWQpOworCisgICAgLy8gV2UgbXVzdCBoYXZlIGVpdGhlciBp cG5zIG9yIGlwZnMuCisgICAgaWYgKCFpc19pcGZzICYmICFpc19pcG5zKSB7CisgICAgICAgIHJl dCA9IEFWRVJST1IoRUlOVkFMKTsKKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAi VW5zdXBwb3J0ZWQgdXJsICVzXG4iLCB1cmkpOworICAgICAgICBnb3RvIGVycjsKKyAgICB9CisK KyAgICAvLyBJZiB0aGUgQ0lEIGhhcyBhIGxlbmd0aCBncmVhdGVyIHRoZW4gMCB0aGVuIHdlIGFz c3VtZSB3ZSBoYXZlIGEgcHJvcGVyIHdvcmtpbmcgb25lLgorICAgIC8vIEl0IGNvdWxkIHN0aWxs IGJlIHdyb25nIGJ1dCBpbiB0aGF0IGNhc2UgdGhlIGdhdGV3YXkgc2hvdWxkIHNhdmUgdXMgYW5k CisgICAgLy8gcnV0dXJuIGEgNDAzIGVycm9yLiBUaGUgaHR0cCBwcm90b2NvbCBoYW5kbGVzIHRo aXMuCisgICAgaWYgKHN0cmxlbihpcGZzX2NpZCkgPCAxKSB7CisgICAgICAgIGF2X2xvZyhoLCBB Vl9MT0dfV0FSTklORywgIkEgQ0lEIG11c3QgYmUgcHJvdmlkZWQuXG4iKTsKKyAgICAgICAgcmV0 ID0gQVZFUlJPUihFSUxTRVEpOworICAgICAgICBnb3RvIGVycjsKKyAgICB9CisKKyAgICAvLyBQ b3B1bGF0ZSBjLT5nYXRld2F5X2J1ZmZlciB3aXRoIHdoYXRldmVyIGlzIGluIGMtPmdhdGV3YXkK KyAgICBpZiAoYy0+Z2F0ZXdheSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChzbnByaW50ZihjLT5n YXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSwgIiVzIiwKKyAgICAgICAg ICAgICAgICAgICAgIGMtPmdhdGV3YXkpID49IHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikpIHsK KyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSAtZ2F0ZXdheSBwYXJh bWV0ZXIgaXMgdG9vIGxvbmcuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIldlIGFsbG93IGEgbWF4IG9mICV6dSBjaGFyYWN0ZXJzXG4iLAorICAgICAgICAgICAgICAg ICAgIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikpOworICAgICAgICAgICAgcmV0ID0gQVZFUlJP UihFSU5WQUwpOworICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug eworICAgICAgICAvLyBQb3B1bGF0ZSB0aGUgSVBGUyBnYXRld2F5IGlmIHdlIGhhdmUgYW55Lgor ICAgICAgICAvLyBJZiBub3QsIGluZm9ybSB0aGUgdXNlciBob3cgdG8gcHJvcGVybHkgc2V0IG9u ZS4KKyAgICAgICAgcmV0ID0gcG9wdWxhdGVfaXBmc19nYXRld2F5KGgpOworCisgICAgICAgIGlm IChyZXQgPCAxKSB7CisgICAgICAgICAgICAvLyBXZSBmYWxsYmFjayBvbiBkd2ViLmxpbmsgKG1h bmFnZWQgYnkgUHJvdG9jb2wgTGFicykuCisgICAgICAgICAgICBzbnByaW50ZihjLT5nYXRld2F5 X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSwgImh0dHBzOi8vZHdlYi5saW5rIik7 CisKKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIklQRlMgZG9lcyBub3Qg YXBwZWFyIHRvIGJlIHJ1bm5pbmcuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIllvdeKAmXJlIG5vdyB1c2luZyB0aGUgcHVibGljIGdhdGV3YXkgYXQgZHdlYi5saW5r LlxuIik7CisgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICJJbnN0YWxsaW5nIElQ RlMgbG9jYWxseSBpcyByZWNvbW1lbmRlZCB0byAiCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJpbXByb3ZlIHBlcmZvcm1hbmNlIGFuZCByZWxpYWJpbGl0eSwgIgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIG5vdCBzaGFyZSBhbGwgeW91ciBhY3Rp dml0eSB3aXRoIGEgc2luZ2xlIElQRlMgZ2F0ZXdheS5cbiIKKyAgICAgICAgICAgICAgICAgICAi VGhlcmUgYXJlIG11bHRpcGxlIG9wdGlvbnMgdG8gZGVmaW5lIHRoaXMgZ2F0ZXdheS5cbiIKKyAg ICAgICAgICAgICAgICAgICAiMS4gQ2FsbCBmZm1wZWcgd2l0aCBhIGdhdGV3YXkgcGFyYW0sICIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGhvdXQgYSB0cmFpbGluZyBz bGFzaDogLWdhdGV3YXkgPHVybD4uXG4iCisgICAgICAgICAgICAgICAgICAgIjIuIERlZmluZSBh biAkSVBGU19HQVRFV0FZIGVudmlyb25tZW50IHZhcmlhYmxlIHdpdGggdGhlICIKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgImZ1bGwgSFRUUCBVUkwgdG8gdGhlIGdhdGV3YXkg IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aG91dCB0cmFpbGluZyBm b3J3YXJkIHNsYXNoLlxuIgorICAgICAgICAgICAgICAgICAgICIzLiBEZWZpbmUgYW4gJElQRlNf UEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJhbmQgcG9pbnQgaXQgdG8gdGhlIElQRlMgZGF0YSBwYXRoICIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIi0gdGhpcyBpcyB0eXBpY2FsbHkgfi8uaXBmc1xuIik7 CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUZXN0IGlmIHRoZSBnYXRld2F5IHN0YXJ0cyB3 aXRoIGVpdGhlciBodHRwOi8vIG9yIGh0dHBzOi8vCisgICAgaWYgKGF2X3N0cmlzdGFydChjLT5n YXRld2F5X2J1ZmZlciwgImh0dHA6Ly8iLCBOVUxMKSA9PSAwCisgICAgICAgICYmIGF2X3N0cmlz dGFydChjLT5nYXRld2F5X2J1ZmZlciwgImh0dHBzOi8vIiwgTlVMTCkgPT0gMCkgeworICAgICAg ICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgZ2F0ZXdheSBVUkwgZGlkbid0IHN0YXJ0 IHdpdGggaHR0cDovLyBvciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0 dHBzOi8vIGFuZCBpcyB0aGVyZWZvcmUgaW52YWxpZC5cbiIpOworICAgICAgICByZXQgPSBBVkVS Uk9SKEVJTFNFUSk7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIC8vIENvbmNhdGVu YXRlIHRoZSB1cmwuCisgICAgLy8gVGhpcyBlbmRzIHVwIHdpdGggc29tZXRoaW5nIGxpa2U6IGh0 dHA6Ly9sb2NhbGhvc3Q6ODA4MC9pcGZzL1FtLi4uLi4KKyAgICAvLyBUaGUgZm9ybWF0IG9mICIl cyVzJXMlcyIgaXMgdGhlIGZvbGxvd2luZzoKKyAgICAvLyAxc3QgJXMgPSBUaGUgZ2F0ZXdheS4K KyAgICAvLyAybmQgJXMgPSBJZiB0aGUgZ2F0ZXdheSBkaWRuJ3QgZW5kIGluIGEgc2xhc2gsIGFk ZCBhICIvIi4gT3RoZXJ3aXNlIGl0J3MgYW4gZW1wdHkgc3RyaW5nCisgICAgLy8gM3JkICVzID0g RWl0aGVyIGlwbnMvIG9yIGlwZnMvLgorICAgIC8vIDR0aCAlcyA9IFRoZSBJUEZTIENJRCAoUW0u Li4sIGJhZnkuLi4sIC4uLikuCisgICAgZnVsbHVyaSA9IGF2X2FzcHJpbnRmKCIlcyVzJXMlcyIs CisgICAgICAgICAgICAgICAgICAgICAgICAgIGMtPmdhdGV3YXlfYnVmZmVyLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAoYy0+Z2F0ZXdheV9idWZmZXJbc3RybGVuKGMtPmdhdGV3YXlfYnVm ZmVyKSAtIDFdID09ICcvJykgPyAiIiA6ICIvIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg KGlzX2lwbnMpID8gImlwbnMvIiA6ICJpcGZzLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg IGlwZnNfY2lkKTsKKworICAgIGlmICghZnVsbHVyaSkgeworICAgICAgYXZfbG9nKGgsIEFWX0xP R19FUlJPUiwgIkZhaWxlZCB0byBjb21wb3NlIHRoZSBVUkxcbiIpOworICAgICAgcmV0ID0gQVZF UlJPUihFTk9NRU0pOworICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgLy8gUGFzcyB0aGUg VVJMIGJhY2sgdG8gRkZNcGVnJ3MgcHJvdG9jb2wgaGFuZGxlci4KKyAgICByZXQgPSBmZnVybF9v cGVuX3doaXRlbGlzdCgmYy0+aW5uZXIsIGZ1bGx1cmksIGZsYWdzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZoLT5pbnRlcnJ1cHRfY2FsbGJhY2ssIG9wdGlvbnMsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaC0+cHJvdG9jb2xfd2hpdGVsaXN0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGgtPnByb3RvY29sX2JsYWNrbGlzdCwgaCk7CisgICAgaWYg KHJldCA8IDApIHsKKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVW5hYmxlIHRv IG9wZW4gcmVzb3VyY2U6ICVzXG4iLCBmdWxsdXJpKTsKKyAgICAgICAgZ290byBlcnI7CisgICAg fQorCitlcnI6CisgICAgYXZfZnJlZShmdWxsdXJpKTsKKyAgICByZXR1cm4gcmV0OworfQorCitz dGF0aWMgaW50IGlwZnNfcmVhZChVUkxDb250ZXh0ICpoLCB1bnNpZ25lZCBjaGFyICpidWYsIGlu dCBzaXplKQoreworICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKKyAg ICByZXR1cm4gZmZ1cmxfcmVhZChjLT5pbm5lciwgYnVmLCBzaXplKTsKK30KKworc3RhdGljIGlu dDY0X3QgaXBmc19zZWVrKFVSTENvbnRleHQgKmgsIGludDY0X3QgcG9zLCBpbnQgd2hlbmNlKQor eworICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKKyAgICByZXR1cm4g ZmZ1cmxfc2VlayhjLT5pbm5lciwgcG9zLCB3aGVuY2UpOworfQorCitzdGF0aWMgaW50IGlwZnNf Y2xvc2UoVVJMQ29udGV4dCAqaCkKK3sKKyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5w cml2X2RhdGE7CisgICAgcmV0dXJuIGZmdXJsX2Nsb3NlcCgmYy0+aW5uZXIpOworfQorCisjZGVm aW5lIE9GRlNFVCh4KSBvZmZzZXRvZihJUEZTR2F0ZXdheUNvbnRleHQsIHgpCisKK3N0YXRpYyBj b25zdCBBVk9wdGlvbiBvcHRpb25zW10gPSB7CisgICAgeyJnYXRld2F5IiwgIlRoZSBnYXRld2F5 IHRvIGFzayBmb3IgSVBGUyBkYXRhLiIsIE9GRlNFVChnYXRld2F5KSwgQVZfT1BUX1RZUEVfU1RS SU5HLCB7LnN0ciA9IE5VTEx9LCAwLCAwLCBBVl9PUFRfRkxBR19ERUNPRElOR19QQVJBTX0sCisg ICAge05VTEx9LAorfTsKKworc3RhdGljIGNvbnN0IEFWQ2xhc3MgaXBmc19jb250ZXh0X2NsYXNz ID0geworICAgIC5jbGFzc19uYW1lICAgPSAiSVBGUyIsCisgICAgLml0ZW1fbmFtZSAgICA9IGF2 X2RlZmF1bHRfaXRlbV9uYW1lLAorICAgIC5vcHRpb24gICAgICAgPSBvcHRpb25zLAorICAgIC52 ZXJzaW9uICAgICAgPSBMSUJBVlVUSUxfVkVSU0lPTl9JTlQsCit9OworCitjb25zdCBVUkxQcm90 b2NvbCBmZl9pcGZzX3Byb3RvY29sID0geworICAgIC5uYW1lICAgICAgICAgICAgID0gImlwZnMi LAorICAgIC51cmxfb3BlbjIgICAgICAgID0gdHJhbnNsYXRlX2lwZnNfdG9faHR0cCwKKyAgICAu dXJsX3JlYWQgICAgICAgICA9IGlwZnNfcmVhZCwKKyAgICAudXJsX3NlZWsgICAgICAgICA9IGlw ZnNfc2VlaywKKyAgICAudXJsX2Nsb3NlICAgICAgICA9IGlwZnNfY2xvc2UsCisgICAgLnByaXZf ZGF0YV9zaXplICAgPSBzaXplb2YoSVBGU0dhdGV3YXlDb250ZXh0KSwKKyAgICAucHJpdl9kYXRh X2NsYXNzICA9ICZpcGZzX2NvbnRleHRfY2xhc3MsCit9OworCitjb25zdCBVUkxQcm90b2NvbCBm Zl9pcG5zX3Byb3RvY29sID0geworICAgIC5uYW1lICAgICAgICAgICAgID0gImlwbnMiLAorICAg IC51cmxfb3BlbjIgICAgICAgID0gdHJhbnNsYXRlX2lwZnNfdG9faHR0cCwKKyAgICAudXJsX3Jl YWQgICAgICAgICA9IGlwZnNfcmVhZCwKKyAgICAudXJsX3NlZWsgICAgICAgICA9IGlwZnNfc2Vl aywKKyAgICAudXJsX2Nsb3NlICAgICAgICA9IGlwZnNfY2xvc2UsCisgICAgLnByaXZfZGF0YV9z aXplICAgPSBzaXplb2YoSVBGU0dhdGV3YXlDb250ZXh0KSwKKyAgICAucHJpdl9kYXRhX2NsYXNz ICA9ICZpcGZzX2NvbnRleHRfY2xhc3MsCit9OwpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvcHJv dG9jb2xzLmMgYi9saWJhdmZvcm1hdC9wcm90b2NvbHMuYwppbmRleCBkMDc1NjNjZDBjLi42ZWU2 MmE1OThhIDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9wcm90b2NvbHMuYworKysgYi9saWJhdmZv cm1hdC9wcm90b2NvbHMuYwpAQCAtNzEsNiArNzEsOCBAQCBleHRlcm4gY29uc3QgVVJMUHJvdG9j b2wgZmZfbGlic3J0X3Byb3RvY29sOwogZXh0ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2xpYnNz aF9wcm90b2NvbDsKIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJzbWJjbGllbnRfcHJv dG9jb2w7CiBleHRlcm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfbGliem1xX3Byb3RvY29sOworZXh0 ZXJuIGNvbnN0IFVSTFByb3RvY29sIGZmX2lwZnNfcHJvdG9jb2w7CitleHRlcm4gY29uc3QgVVJM UHJvdG9jb2wgZmZfaXBuc19wcm90b2NvbDsKIAogI2luY2x1ZGUgImxpYmF2Zm9ybWF0L3Byb3Rv Y29sX2xpc3QuYyIKIAotLSAKMi4zNS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBm Zm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZl bAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZl bC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==