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 753AC4AB0F for ; Wed, 12 Jun 2024 13:37:18 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9E57268D8D1; Wed, 12 Jun 2024 16:37:15 +0300 (EEST) Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 99A0968D85C for ; Wed, 12 Jun 2024 16:37:08 +0300 (EEST) Received: by mail-lf1-f54.google.com with SMTP id 2adb3069b0e04-52962423ed8so7969417e87.2 for ; Wed, 12 Jun 2024 06:37:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1718199427; x=1718804227; darn=ffmpeg.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=C64+EtCSB+vAaS0DRpVRuL5pt92Rco1SI/3WUledBcY=; b=MArPOY44LpAT53m1q25diPiIEERMa+UL6I4D4lQF3/eRVY2jM1Pz+RFtNPZytSJI0n qP9ZH1ueZR4sQ5usHUwY1eJiRtkM/diibocVRxIRtThe+0GI28zHUyeFNBvrMU2oYWhh Kw7+UqoE82nTxBDOyIqf/SEugSQYaf6qNWfcpXKbVLfaJzHINCXpg1ZrW6nh9Qvxuufx In2ixw3qMk9B+GK/PezUMu6LWeb3yptnbuBVKo5GSUhxKbRtrEjraWU0cNvxozk46q3B Q3lM5YpgNMo3HpuIeSDfYhRiaWgyHffS6u4VK/DHh18XVKp2IV6vDn0ZaTLKIDyuRZ0P xnww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718199427; x=1718804227; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=C64+EtCSB+vAaS0DRpVRuL5pt92Rco1SI/3WUledBcY=; b=Je4PHgwcVa3wBfvkFZ0t2bu2dqsMUdcS5bHAzczRNE6nqgs5noggGIt1k94zBwm0qx jkqKmn3ELGrDgEASJ54vdLq/QtX1OoSgoMb5Hd7Ps7s4hN8aFNud4b2KGOwXakpvdYtS bkeXENmLAJu/Cc1JC08PmkR0jpQFYXftA1uadt8QnoJmqWKwo0wa/Gb7MgC9onRPh3H/ S0JFIwlznoVOoFAC9GptVRWdoibbdsxYRbfrsoix/zJLDRpPTmBl9kDZj7oLR3CCndXz XyjJFI3ThuYB3IkyKuI5kkBntvy1ZKKfMeCM18TYpwHxv/bHzA48fjS67m5fi/lW1ERb G1Gw== X-Gm-Message-State: AOJu0YyiC/syvQIGbDjmX9O8YyyF06AgvTnH0CqIOVS0p4yGTJy1UUtm ZYttJc1+of6LjIkHrnwZlY93CJmQqAz+X1oW2wCnwHqP2uf0wQmhAcYHHaAvMQYLzRygyFlgBmY OrhBPOaNvCdvTQMsFQTpJT8cz2dlrp7bN X-Google-Smtp-Source: AGHT+IHKpC/icVrF+Zf/rUGJDbG4EkFXVrsYBjXtukb2orGqwdZeFx9OG/D+YGwphJgsHHs+joqC0tiLpczC71EX+ms= X-Received: by 2002:ac2:4850:0:b0:52c:8023:aa9 with SMTP id 2adb3069b0e04-52c9a3dfb4emr1277302e87.36.1718199426808; Wed, 12 Jun 2024 06:37:06 -0700 (PDT) MIME-Version: 1.0 References: <20240605195146.11763-1-chris10317h5@gmail.com> <20240605195146.11763-2-chris10317h5@gmail.com> In-Reply-To: <20240605195146.11763-2-chris10317h5@gmail.com> From: Nuo Mi Date: Wed, 12 Jun 2024 21:36:56 +0800 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v5 1/1] avcodec: add external enc libvvenc for H266/VVC X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: SGkgYWxsLApJZiB0aGVyZSBhcmUgbm8gb2JqZWN0aW9ucywgSSB3aWxsIHB1c2ggaXQgaW4gMyBk YXlzLgoKVGhhbmsgeW91LCAgQ2hyaXN0aWFuCgoKT24gVGh1LCBKdW4gNiwgMjAyNCBhdCAzOjUy 4oCvQU0gQ2hyaXN0aWFuIEJhcnRuaWsgPGNocmlzMTAzMTdoNUBnbWFpbC5jb20+Cndyb3RlOgoK PiBGcm9tOiBUaG9tYXMgU2llZGVsIDx0aG9tYXMuZmZAc3Bpbi1kaWdpdGFsLmNvbT4KPgo+IEFk ZCBleHRlcm5hbCBlbmNvZGVyIFZWZW5DIGZvciBIMjY2L1ZWQyBlbmNvZGluZy4KPiBSZWdpc3Rl ciBuZXcgZW5jb2RlciBsaWJ2dmVuYy4KPiBBZGQgbGlidnZlbmMgdG8gd3JhcCB0aGUgdnZlbmMg aW50ZXJmYWNlLgo+IGxpYnZ2ZW5jIGltcGxlbWVudHMgZW5jb2RlciBvcHRpb246IHByZXNldCxx cCxxcGEscGVyaW9kLAo+IHBhc3Nsb2dmaWxlLHN0YXRzLHZ2ZW5jLXBhcmFtcyxsZXZlbCx0aWVy Lgo+IEVuYWJsZSBlbmNvZGVyIGJ5IGFkZGluZyAtLWVuYWJsZS1saWJ2dmVuYyBpbiBjb25maWd1 cmUgc3RlcC4KPgo+IENvLWF1dGhvcmVkLWJ5OiBDaHJpc3RpYW4gQmFydG5payBjaHJpczEwMzE3 aDVAZ21haWwuY29tCj4gU2lnbmVkLW9mZi1ieTogVGhvbWFzIFNpZWRlbCA8dGhvbWFzLmZmQHNw aW4tZGlnaXRhbC5jb20+Cj4gLS0tCj4gIGNvbmZpZ3VyZSAgICAgICAgICAgICAgICAgfCAgIDQg Kwo+ICBkb2MvZW5jb2RlcnMudGV4aSAgICAgICAgIHwgIDY0ICsrKysrCj4gIGZmdG9vbHMvZmZt cGVnX211eF9pbml0LmMgfCAgIDIgKy0KPiAgbGliYXZjb2RlYy9NYWtlZmlsZSAgICAgICB8ICAg MSArCj4gIGxpYmF2Y29kZWMvYWxsY29kZWNzLmMgICAgfCAgIDEgKwo+ICBsaWJhdmNvZGVjL2xp YnZ2ZW5jLmMgICAgIHwgNDkyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Cj4gIDYgZmlsZXMgY2hhbmdlZCwgNTYzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvbGlidnZlbmMuYwo+Cj4gZGlmZiAtLWdpdCBh L2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQo+IGluZGV4IDZjNWI4YWFiOWEuLjM3ZWNlMjMzNzYgMTAw NzU1Cj4gLS0tIGEvY29uZmlndXJlCj4gKysrIGIvY29uZmlndXJlCj4gQEAgLTI5Myw2ICsyOTMs NyBAQCBFeHRlcm5hbCBsaWJyYXJ5IHN1cHBvcnQ6Cj4gICAgLS1lbmFibGUtbGlidm9yYmlzICAg ICAgIGVuYWJsZSBWb3JiaXMgZW4vZGVjb2RpbmcgdmlhIGxpYnZvcmJpcywKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbmF0aXZlIGltcGxlbWVudGF0aW9uIGV4aXN0cyBbbm9dCj4gICAg LS1lbmFibGUtbGlidnB4ICAgICAgICAgIGVuYWJsZSBWUDggYW5kIFZQOSBkZS9lbmNvZGluZyB2 aWEgbGlidnB4IFtub10KPiArICAtLWVuYWJsZS1saWJ2dmVuYyAgICAgICAgZW5hYmxlIEguMjY2 L1ZWQyBlbmNvZGluZyB2aWEgdnZlbmMgW25vXQo+ICAgIC0tZW5hYmxlLWxpYndlYnAgICAgICAg ICBlbmFibGUgV2ViUCBlbmNvZGluZyB2aWEgbGlid2VicCBbbm9dCj4gICAgLS1lbmFibGUtbGli eDI2NCAgICAgICAgIGVuYWJsZSBILjI2NCBlbmNvZGluZyB2aWEgeDI2NCBbbm9dCj4gICAgLS1l bmFibGUtbGlieDI2NSAgICAgICAgIGVuYWJsZSBIRVZDIGVuY29kaW5nIHZpYSB4MjY1IFtub10K PiBAQCAtMTk2Niw2ICsxOTY3LDcgQEAgRVhURVJOQUxfTElCUkFSWV9MSVNUPSIKPiAgICAgIGxp YnZtYWYKPiAgICAgIGxpYnZvcmJpcwo+ICAgICAgbGlidnB4Cj4gKyAgICBsaWJ2dmVuYwo+ICAg ICAgbGlid2VicAo+ICAgICAgbGlieGV2ZAo+ICAgICAgbGlieGV2ZQo+IEBAIC0zNTYwLDYgKzM1 NjIsNyBAQCBsaWJ2cHhfdnA4X2RlY29kZXJfZGVwcz0ibGlidnB4Igo+ICBsaWJ2cHhfdnA4X2Vu Y29kZXJfZGVwcz0ibGlidnB4Igo+ICBsaWJ2cHhfdnA5X2RlY29kZXJfZGVwcz0ibGlidnB4Igo+ ICBsaWJ2cHhfdnA5X2VuY29kZXJfZGVwcz0ibGlidnB4Igo+ICtsaWJ2dmVuY19lbmNvZGVyX2Rl cHM9ImxpYnZ2ZW5jIgo+ICBsaWJ3ZWJwX2VuY29kZXJfZGVwcz0ibGlid2VicCIKPiAgbGlid2Vi cF9hbmltX2VuY29kZXJfZGVwcz0ibGlid2VicCIKPiAgbGlieDI2Ml9lbmNvZGVyX2RlcHM9Imxp YngyNjIiCj4gQEAgLTcwMzAsNiArNzAzMyw3IEBAIGVuYWJsZWQgbGlidnB4ICAgICAgICAgICAg JiYgewo+ICAgICAgZmkKPiAgfQo+Cj4gK2VuYWJsZWQgbGlidnZlbmMgICAgICAgICAgJiYgcmVx dWlyZV9wa2dfY29uZmlnIGxpYnZ2ZW5jICJsaWJ2dmVuYyA+PQo+IDEuNi4xIiAidnZlbmMvdnZl bmMuaCIgdnZlbmNfZ2V0X3ZlcnNpb24KPiAgZW5hYmxlZCBsaWJ3ZWJwICAgICAgICAgICAmJiB7 Cj4gICAgICBlbmFibGVkIGxpYndlYnBfZW5jb2RlciAgICAgICYmIHJlcXVpcmVfcGtnX2NvbmZp ZyBsaWJ3ZWJwICJsaWJ3ZWJwCj4gPj0gMC4yLjAiIHdlYnAvZW5jb2RlLmggV2ViUEdldEVuY29k ZXJWZXJzaW9uCj4gICAgICBlbmFibGVkIGxpYndlYnBfYW5pbV9lbmNvZGVyICYmIGNoZWNrX3Br Z19jb25maWcgbGlid2VicF9hbmltX2VuY29kZXIKPiAibGlid2VicG11eCA+PSAwLjQuMCIgd2Vi cC9tdXguaCBXZWJQQW5pbUVuY29kZXJPcHRpb25zSW5pdDsgfQo+IGRpZmYgLS1naXQgYS9kb2Mv ZW5jb2RlcnMudGV4aSBiL2RvYy9lbmNvZGVycy50ZXhpCj4gaW5kZXggYzgyZjMxNmY5NC4uNDk2 ODUyZmFlYiAxMDA2NDQKPiAtLS0gYS9kb2MvZW5jb2RlcnMudGV4aQo+ICsrKyBiL2RvYy9lbmNv ZGVycy50ZXhpCj4gQEAgLTIzNzgsNiArMjM3OCw3MCBAQCBJbmRpY2F0ZXMgZnJhbWUgZHVyYXRp b24KPiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgbGlidnB4IHNlZToKPiAgQHVybHtodHRw Oi8vd3d3LndlYm1wcm9qZWN0Lm9yZy99Cj4KPiArQHNlY3Rpb24gbGlidnZlbmMKPiArCj4gK1ZW ZW5DIEguMjY2L1ZWQyBlbmNvZGVyIHdyYXBwZXIuCj4gKwo+ICtUaGlzIGVuY29kZXIgcmVxdWly ZXMgdGhlIHByZXNlbmNlIG9mIHRoZSBsaWJ2dmVuYyBoZWFkZXJzIGFuZCBsaWJyYXJ5Cj4gK2R1 cmluZyBjb25maWd1cmF0aW9uLiBZb3UgbmVlZCB0byBleHBsaWNpdGx5IGNvbmZpZ3VyZSB0aGUg YnVpbGQgd2l0aAo+ICtAb3B0aW9uey0tZW5hYmxlLWxpYnZ2ZW5jfS4KPiArCj4gK1RoZSBWVmVu QyBwcm9qZWN0IHdlYnNpdGUgaXMgYXQKPiArQHVybHtodHRwczovL2dpdGh1Yi5jb20vZnJhdW5o b2ZlcmhoaS92dmVuY30uCj4gKwo+ICtAc3Vic2VjdGlvbiBTdXBwb3J0ZWQgUGl4ZWwgRm9ybWF0 cwo+ICsKPiArVlZlbkMgc3VwcG9ydHMgb25seSAxMC1iaXQgY29sb3Igc3BhY2VzIGFzIGlucHV0 LiBCdXQgdGhlIGludGVybmFsCj4gKGVuY29kZWQpCj4gK2JpdCBkZXB0aCBjYW4gYmUgc2V0IHRv IDgtYml0IG9yIDEwLWJpdCBhdCBydW50aW1lLgo+ICsKPiArQHN1YnNlY3Rpb24gT3B0aW9ucwo+ ICsKPiArQHRhYmxlIEBvcHRpb24KPiArQGl0ZW0gYgo+ICtTZXRzIHRhcmdldCB2aWRlbyBiaXRy YXRlLgo+ICsKPiArQGl0ZW0gZwo+ICtTZXQgdGhlIEdPUCBzaXplLiBDdXJyZW50bHkgc3VwcG9y dCBmb3IgZz0xIChJbnRyYSBvbmx5KSBvciBkZWZhdWx0Lgo+ICsKPiArQGl0ZW0gcHJlc2V0Cj4g K1NldCB0aGUgVlZlbkMgcHJlc2V0Lgo+ICsKPiArQGl0ZW0gbGV2ZWxpZGMKPiArU2V0IGxldmVs IGlkYy4KPiArCj4gK0BpdGVtIHRpZXIKPiArU2V0IHZ2YyB0aWVyLgo+ICsKPiArQGl0ZW0gcXAK PiArU2V0IGNvbnN0YW50IHF1YW50aXphdGlvbiBwYXJhbWV0ZXIuCj4gKwo+ICtAaXRlbSBzdWJv cHQgQHZhcntib29sZWFufQo+ICtTZXQgc3ViamVjdGl2ZSAocGVyY2VwdHVhbGx5IG1vdGl2YXRl ZCkgb3B0aW1pemF0aW9uLiBEZWZhdWx0IGlzIDEgKG9uKS4KPiArCj4gK0BpdGVtIGJpdGRlcHRo OCBAdmFye2Jvb2xlYW59Cj4gK1NldCA4Yml0IGNvZGluZyBtb2RlIGluc3RlYWQgb2YgdXNpbmcg MTBiaXQuIERlZmF1bHQgaXMgMCAob2ZmKS4KPiArCj4gK0BpdGVtIHBlcmlvZAo+ICtzZXQgKGlu dHJhKSByZWZyZXNoIHBlcmlvZCBpbiBzZWNvbmRzLgo+ICsKPiArQGl0ZW0gdnZlbmMtcGFyYW1z Cj4gK1NldCB2dmVuYyBvcHRpb25zIHVzaW5nIGEgbGlzdCBvZiBAdmFye2tleX09QHZhcnt2YWx1 ZX0gY291cGxlcyBzZXBhcmF0ZWQKPiArYnkgIjoiLiBTZWUgQGNvbW1hbmR7dnZlbmNhcHAgLS1m dWxsaGVscH0gb3IgQGNvbW1hbmR7dnZlbmNGRmFwcAo+IC0tZnVsbGhlbHB9IGZvciBhIGxpc3Qg b2Ygb3B0aW9ucy4KPiArCj4gK0ZvciBleGFtcGxlLCB0aGUgb3B0aW9ucyBtaWdodCBiZSBwcm92 aWRlZCBhczoKPiArCj4gK0BleGFtcGxlCj4gK2ludHJhcGVyaW9kPTY0OmRlY29kaW5ncmVmcmVz aHR5cGU9aWRyOnBvYzBpZHI9MTppbnRlcm5hbGJpdGRlcHRoPTgKPiArQGVuZCBleGFtcGxlCj4g Kwo+ICtGb3IgZXhhbXBsZSB0aGUgZW5jb2Rpbmcgb3B0aW9ucyBtaWdodCBiZSBwcm92aWRlZCB3 aXRoCj4gQG9wdGlvbnstdnZlbmMtcGFyYW1zfToKPiArCj4gK0BleGFtcGxlCj4gK2ZmbXBlZyAt aSBpbnB1dCAtYzp2IGxpYnZ2ZW5jIC1iIDFNIC12dmVuYy1wYXJhbXMKPiBpbnRyYXBlcmlvZD02 NDpkZWNvZGluZ3JlZnJlc2h0eXBlPWlkcjpwb2MwaWRyPTE6aW50ZXJuYWxiaXRkZXB0aD04Cj4g b3V0cHV0Lm1wNAo+ICtAZW5kIGV4YW1wbGUKPiArCj4gK0BlbmQgdGFibGUKPiArCj4gIEBzZWN0 aW9uIGxpYndlYnAKPgo+ICBsaWJ3ZWJwIFdlYlAgSW1hZ2UgZW5jb2RlciB3cmFwcGVyCj4gZGlm ZiAtLWdpdCBhL2ZmdG9vbHMvZmZtcGVnX211eF9pbml0LmMgYi9mZnRvb2xzL2ZmbXBlZ19tdXhf aW5pdC5jCj4gaW5kZXggODc5NzI2NTE0NS4uZWYyOTIyODU0YSAxMDA2NDQKPiAtLS0gYS9mZnRv b2xzL2ZmbXBlZ19tdXhfaW5pdC5jCj4gKysrIGIvZmZ0b29scy9mZm1wZWdfbXV4X2luaXQuYwo+ IEBAIC03MzksNyArNzM5LDcgQEAgc3RhdGljIGludCBuZXdfc3RyZWFtX3ZpZGVvKE11eGVyICpt dXgsIGNvbnN0Cj4gT3B0aW9uc0NvbnRleHQgKm8sCj4gICAgICAgICAgICAgICAgICAgICAgIG9z dC0+bG9nZmlsZV9wcmVmaXggPyBvc3QtPmxvZ2ZpbGVfcHJlZml4IDoKPgo+IERFRkFVTFRfUEFT U19MT0dGSUxFTkFNRV9QUkVGSVgsCj4gICAgICAgICAgICAgICAgICAgICAgIG9zdF9pZHgpOwo+ IC0gICAgICAgICAgICBpZiAoIXN0cmNtcChvc3QtPmVuY19jdHgtPmNvZGVjLT5uYW1lLCAibGli eDI2NCIpKSB7Cj4gKyAgICAgICAgICAgIGlmICghc3RyY21wKG9zdC0+ZW5jX2N0eC0+Y29kZWMt Pm5hbWUsICJsaWJ4MjY0IikgfHwKPiAhc3RyY21wKG9zdC0+ZW5jX2N0eC0+Y29kZWMtPm5hbWUs ICJsaWJ2dmVuYyIpKSB7Cj4gICAgICAgICAgICAgICAgICBhdl9kaWN0X3NldCgmb3N0LT5lbmNv ZGVyX29wdHMsICJzdGF0cyIsIGxvZ2ZpbGVuYW1lLAo+IEFWX0RJQ1RfRE9OVF9PVkVSV1JJVEUp Owo+ICAgICAgICAgICAgICB9IGVsc2Ugewo+ICAgICAgICAgICAgICAgICAgaWYgKHZpZGVvX2Vu Yy0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1BBU1MyKSB7Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29k ZWMvTWFrZWZpbGUgYi9saWJhdmNvZGVjL01ha2VmaWxlCj4gaW5kZXggMjQ0M2QyYzZmZC4uNWQ3 MzQ5MDkwZSAxMDA2NDQKPiAtLS0gYS9saWJhdmNvZGVjL01ha2VmaWxlCj4gKysrIGIvbGliYXZj b2RlYy9NYWtlZmlsZQo+IEBAIC0xMTUzLDYgKzExNTMsNyBAQCBPQkpTLSQoQ09ORklHX0xJQlZQ WF9WUDhfREVDT0RFUikgICAgICAgICArPQo+IGxpYnZweGRlYy5vCj4gIE9CSlMtJChDT05GSUdf TElCVlBYX1ZQOF9FTkNPREVSKSAgICAgICAgICs9IGxpYnZweGVuYy5vCj4gIE9CSlMtJChDT05G SUdfTElCVlBYX1ZQOV9ERUNPREVSKSAgICAgICAgICs9IGxpYnZweGRlYy5vCj4gIE9CSlMtJChD T05GSUdfTElCVlBYX1ZQOV9FTkNPREVSKSAgICAgICAgICs9IGxpYnZweGVuYy5vCj4gK09CSlMt JChDT05GSUdfTElCVlZFTkNfRU5DT0RFUikgICAgICAgICAgICs9IGxpYnZ2ZW5jLm8KPiAgT0JK Uy0kKENPTkZJR19MSUJXRUJQX0VOQ09ERVIpICAgICAgICAgICAgKz0gbGlid2VicGVuY19jb21t b24ubwo+IGxpYndlYnBlbmMubwo+ICBPQkpTLSQoQ09ORklHX0xJQldFQlBfQU5JTV9FTkNPREVS KSAgICAgICArPSBsaWJ3ZWJwZW5jX2NvbW1vbi5vCj4gbGlid2VicGVuY19hbmltZW5jb2Rlci5v Cj4gIE9CSlMtJChDT05GSUdfTElCWDI2Ml9FTkNPREVSKSAgICAgICAgICAgICs9IGxpYngyNjQu bwo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FsbGNvZGVjcy5jIGIvbGliYXZjb2RlYy9hbGxj b2RlY3MuYwo+IGluZGV4IGIxMDJhODA2OWUuLjU5ZDM2ZGJkNTYgMTAwNjQ0Cj4gLS0tIGEvbGli YXZjb2RlYy9hbGxjb2RlY3MuYwo+ICsrKyBiL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMKPiBAQCAt ODAwLDYgKzgwMCw3IEBAIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYnZweF92cDhfZW5jb2Rl cjsKPiAgZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfbGlidnB4X3ZwOF9kZWNvZGVyOwo+ICBleHRl cm4gRkZDb2RlYyBmZl9saWJ2cHhfdnA5X2VuY29kZXI7Cj4gIGV4dGVybiBjb25zdCBGRkNvZGVj IGZmX2xpYnZweF92cDlfZGVjb2RlcjsKPiArZXh0ZXJuIGNvbnN0IEZGQ29kZWMgZmZfbGlidnZl bmNfZW5jb2RlcjsKPiAgLyogcHJlZmVycmVkIG92ZXIgbGlid2VicCAqLwo+ICBleHRlcm4gY29u c3QgRkZDb2RlYyBmZl9saWJ3ZWJwX2FuaW1fZW5jb2RlcjsKPiAgZXh0ZXJuIGNvbnN0IEZGQ29k ZWMgZmZfbGlid2VicF9lbmNvZGVyOwo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2xpYnZ2ZW5j LmMgYi9saWJhdmNvZGVjL2xpYnZ2ZW5jLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4 IDAwMDAwMDAwMDAuLjU0NTRiMzk5NWMKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvbGliYXZjb2Rl Yy9saWJ2dmVuYy5jCj4gQEAgLTAsMCArMSw0OTIgQEAKPiArLyoKPiArICogSC4yNjYgZW5jb2Rp bmcgdXNpbmcgdGhlIFZWZW5DIGxpYnJhcnkKPiArICoKPiArICogQ29weXJpZ2h0IChDKSAyMDIy LCBUaG9tYXMgU2llZGVsCj4gKyAqCj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4K PiArICoKPiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGlj ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICoKPiArICog RkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Cj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5z ZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQo+ ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC b3N0b24sIE1BCj4gMDIxMTAtMTMwMSBVU0EKPiArICovCj4gKwo+ICsjaW5jbHVkZSA8dnZlbmMv dnZlbmMuaD4KPiArI2luY2x1ZGUgPHZ2ZW5jL3Z2ZW5jQ2ZnLmg+Cj4gKyNpbmNsdWRlIDx2dmVu Yy92ZXJzaW9uLmg+Cj4gKwo+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2F2c3RyaW5nLmgiCj4gKyNp bmNsdWRlICJsaWJhdnV0aWwvYXZ1dGlsLmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvY29tbW9u LmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvZnJhbWUuaCIKPiArI2luY2x1ZGUgImxpYmF2dXRp bC9pbWd1dGlscy5oIgo+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2xvZy5oIgo+ICsjaW5jbHVkZSAi bGliYXZ1dGlsL21lbS5oIgo+ICsjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRlc2MuaCIKPiArI2lu Y2x1ZGUgImxpYmF2dXRpbC9vcHQuaCIKPiArCj4gKyNpbmNsdWRlICJhdmNvZGVjLmgiCj4gKyNp bmNsdWRlICJjb2RlY19pbnRlcm5hbC5oIgo+ICsjaW5jbHVkZSAiZW5jb2RlLmgiCj4gKyNpbmNs dWRlICJpbnRlcm5hbC5oIgo+ICsjaW5jbHVkZSAicGFja2V0X2ludGVybmFsLmgiCj4gKyNpbmNs dWRlICJwcm9maWxlcy5oIgo+ICsKPiArI2RlZmluZSBWVkVOQ19WRVJTSU9OX0lOVCAgQVZfVkVS U0lPTl9JTlQoVlZFTkNfVkVSU0lPTl9NQUpPUiwgXAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBWVkVOQ19WRVJTSU9OX01JTk9SLCBcCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZWRU5DX1ZFUlNJT05fUEFUQ0gpCj4gKwo+ ICt0eXBlZGVmIHN0cnVjdCBWVmVuQ0NvbnRleHQgewo+ICsgICAgQVZDbGFzcyAgICAgICAgICpj bGFzczsKPiArICAgIHZ2ZW5jRW5jb2RlciAgICAqZW5jb2RlcjsKPiArICAgIHZ2ZW5jQWNjZXNz VW5pdCAqYXU7Cj4gKyAgICBib29sICAgICAgICAgICAgIGVuY29kZV9kb25lOwo+ICsgICAgaW50 ICAgcHJlc2V0Owo+ICsgICAgaW50ICAgcXA7Cj4gKyAgICBpbnQgICBxcGE7Cj4gKyAgICBpbnQg ICBpbnRyYV9yZWZyZXNoX3NlYzsKPiArICAgIGNoYXIgKmxldmVsOwo+ICsgICAgaW50ICAgdGll cjsKPiArICAgIGNoYXIgKnN0YXRzOwo+ICsgICAgQVZEaWN0aW9uYXJ5ICp2dmVuY19vcHRzOwo+ ICt9IFZWZW5DQ29udGV4dDsKPiArCj4gK3N0YXRpYyB2b2lkIHZ2ZW5jX2xvZ19jYWxsYmFjayh2 b2lkICpjdHgsIGludCBsZXZlbCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcmdzKQo+ICt7Cj4gKyAgICB2dmVuY19jb25maWcgcGFy YW1zOwo+ICsgICAgdnZlbmNFbmNvZGVyICplbmNvZGVyID0gY3R4Owo+ICsgICAgaWYgKGVuY29k ZXIpIHsKPiArICAgICAgICB2dmVuY19jb25maWdfZGVmYXVsdCgmcGFyYW1zKTsKPiArICAgICAg ICB2dmVuY19nZXRfY29uZmlnKGVuY29kZXIsICZwYXJhbXMpOwo+ICsgICAgICAgIGlmICgoaW50 KXBhcmFtcy5tX3ZlcmJvc2l0eSA+PSBsZXZlbCkKPiArICAgICAgICAgICAgdmZwcmludGYobGV2 ZWwgPT0gMSA/IHN0ZGVyciA6IHN0ZG91dCwgZm10LCBhcmdzKTsKPiArICAgIH0KPiArfQo+ICsK PiArc3RhdGljIHZvaWQgdnZlbmNfc2V0X3ZlcmJvc2l0b3J5KHZ2ZW5jX2NvbmZpZyAqcGFyYW1z KQo+ICt7Cj4gKyAgICBpbnQgbG9nbGV2ZWwgPSBhdl9sb2dfZ2V0X2xldmVsKCk7Cj4gKyAgICBw YXJhbXMtPm1fdmVyYm9zaXR5ID0gVlZFTkNfU0lMRU5UOwo+ICsgICAgaWYgKGxvZ2xldmVsID49 IEFWX0xPR19ERUJVRykKPiArICAgICAgICBwYXJhbXMtPm1fdmVyYm9zaXR5ID0gVlZFTkNfREVU QUlMUzsKPiArICAgIGVsc2UgaWYgKGxvZ2xldmVsID49IEFWX0xPR19WRVJCT1NFKQo+ICsgICAg ICAgIHBhcmFtcy0+bV92ZXJib3NpdHkgPSBWVkVOQ19OT1RJQ0U7Cj4gKyAgICBlbHNlIGlmIChs b2dsZXZlbCA+PSBBVl9MT0dfSU5GTykKPiArICAgICAgICBwYXJhbXMtPm1fdmVyYm9zaXR5ID0g VlZFTkNfV0FSTklORzsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgdnZlbmNfc2V0X3BpY19mb3Jt YXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCB2dmVuY19jb25maWcKPiAqcGFyYW1zKQo+ICt7Cj4g KyAgICBwYXJhbXMtPm1faW50ZXJuQ2hyb21hRm9ybWF0ID0gVlZFTkNfQ0hST01BXzQyMDsKPiAr ICAgIHBhcmFtcy0+bV9pbnB1dEJpdERlcHRoWzBdICAgPSAxMDsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgdnZlbmNfc2V0X2NvbG9yX2Zvcm1hdChBVkNvZGVjQ29udGV4dCAqYXZjdHgsIHZ2ZW5j X2NvbmZpZwo+ICpwYXJhbXMpCj4gK3sKPiArICAgIGlmIChhdmN0eC0+Y29sb3JfcHJpbWFyaWVz ICE9IEFWQ09MX1BSSV9VTlNQRUNJRklFRCkKPiArICAgICAgICBwYXJhbXMtPm1fY29sb3VyUHJp bWFyaWVzID0gKGludCkgYXZjdHgtPmNvbG9yX3ByaW1hcmllczsKPiArICAgIGlmIChhdmN0eC0+ Y29sb3JzcGFjZSAhPSBBVkNPTF9TUENfVU5TUEVDSUZJRUQpCj4gKyAgICAgICAgcGFyYW1zLT5t X21hdHJpeENvZWZmaWNpZW50cyA9IChpbnQpIGF2Y3R4LT5jb2xvcnNwYWNlOwo+ICsgICAgaWYg KGF2Y3R4LT5jb2xvcl90cmMgIT0gQVZDT0xfVFJDX1VOU1BFQ0lGSUVEKSB7Cj4gKyAgICAgICAg cGFyYW1zLT5tX3RyYW5zZmVyQ2hhcmFjdGVyaXN0aWNzID0gKGludCkgYXZjdHgtPmNvbG9yX3Ry YzsKPiArCj4gKyAgICAgICAgaWYgKGF2Y3R4LT5jb2xvcl90cmMgPT0gQVZDT0xfVFJDX1NNUFRF MjA4NCkKPiArICAgICAgICAgICAgcGFyYW1zLT5tX0hkck1vZGUgPSAoYXZjdHgtPmNvbG9yX3By aW1hcmllcyA9PQo+IEFWQ09MX1BSSV9CVDIwMjApID8KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBWVkVOQ19IRFJfUFFfQlQyMDIwIDogVlZFTkNfSERSX1BROwo+ICsgICAgICAg IGVsc2UgaWYgKGF2Y3R4LT5jb2xvcl90cmMgPT0gQVZDT0xfVFJDX0JUMjAyMF8xMCB8fAo+IGF2 Y3R4LT5jb2xvcl90cmMgPT0gQVZDT0xfVFJDX0FSSUJfU1REX0I2NykKPiArICAgICAgICAgICAg cGFyYW1zLT5tX0hkck1vZGUgPSAoYXZjdHgtPmNvbG9yX3RyYyA9PSBBVkNPTF9UUkNfQlQyMDIw XzEwCj4gfHwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZjdHgtPmNvbG9y X3ByaW1hcmllcyA9PQo+IEFWQ09MX1BSSV9CVDIwMjAgfHwKPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYXZjdHgtPmNvbG9yc3BhY2UgPT0KPiBBVkNPTF9TUENfQlQyMDIwX05D TCB8fAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmN0eC0+Y29sb3JzcGFj ZSA9PQo+IEFWQ09MX1NQQ19CVDIwMjBfQ0wpID8KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBWVkVOQ19IRFJfSExHX0JUMjAyMCA6IFZWRU5DX0hEUl9ITEc7Cj4gKyAgICB9Cj4g Kwo+ICsgICAgaWYgKHBhcmFtcy0+bV9IZHJNb2RlID09IFZWRU5DX0hEUl9PRkYgJiYKPiArICAg ICAgICAoYXZjdHgtPmNvbG9yX3ByaW1hcmllcyAhPSBBVkNPTF9QUklfVU5TUEVDSUZJRUQgfHwK PiBhdmN0eC0+Y29sb3JzcGFjZSAhPSBBVkNPTF9TUENfVU5TUEVDSUZJRUQpKSB7Cj4gKyAgICAg ICAgcGFyYW1zLT5tX3Z1aVBhcmFtZXRlcnNQcmVzZW50ID0gMTsKPiArICAgICAgICBwYXJhbXMt Pm1fY29sb3VyRGVzY3JpcHRpb25QcmVzZW50ID0gdHJ1ZTsKPiArICAgIH0KPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgdnZlbmNfc2V0X2ZyYW1lcmF0ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIHZ2 ZW5jX2NvbmZpZwo+ICpwYXJhbXMpCj4gK3sKPiArICAgIGlmIChhdmN0eC0+ZnJhbWVyYXRlLm51 bSA+IDAgJiYgYXZjdHgtPmZyYW1lcmF0ZS5kZW4gPiAwKSB7Cj4gKyAgICAgICAgcGFyYW1zLT5t X0ZyYW1lUmF0ZSA9IGF2Y3R4LT5mcmFtZXJhdGUubnVtOwo+ICsgICAgICAgIHBhcmFtcy0+bV9G cmFtZVNjYWxlID0gYXZjdHgtPmZyYW1lcmF0ZS5kZW47Cj4gKyAgICB9IGVsc2Ugewo+ICsgICAg ICAgIHBhcmFtcy0+bV9GcmFtZVJhdGUgPSBhdmN0eC0+dGltZV9iYXNlLmRlbjsKPiArICAgICAg ICBwYXJhbXMtPm1fRnJhbWVTY2FsZSA9IGF2Y3R4LT50aW1lX2Jhc2UubnVtOwo+ICsgICAgfQo+ ICsKPiArRkZfRElTQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUwo+ICsKPiArI2lmIEZGX0FQSV9U SUNLU19QRVJfRlJBTUUKPiArICAgIGlmIChhdmN0eC0+dGlja3NfcGVyX2ZyYW1lID09IDEpIHsK PiArI2VuZGlmCj4gKyAgICAgICAgcGFyYW1zLT5tX1RpY2tzUGVyU2Vjb25kID0gLTE7ICAgLyog YXV0byBtb2RlIGZvciB0aWNrcyBwZXIgZnJhbWUKPiA9IDEgKi8KPiArI2lmIEZGX0FQSV9USUNL U19QRVJfRlJBTUUKPiArICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgcGFyYW1zLT5tX1RpY2tzUGVy U2Vjb25kID0KPiArICAgICAgICAgICAgY2VpbCgoYXZjdHgtPnRpbWVfYmFzZS5kZW4gLyAoZG91 YmxlKSBhdmN0eC0+dGltZV9iYXNlLm51bSkgKgo+ICsgICAgICAgICAgICAgICAgIChkb3VibGUp IGF2Y3R4LT50aWNrc19wZXJfZnJhbWUpOwo+ICsgICAgfQo+ICsjZW5kaWYKPiArRkZfRU5BQkxF X0RFUFJFQ0FUSU9OX1dBUk5JTkdTCj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdnZlbmNfcGFyc2Vf dnZlbmNfcGFyYW1zKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgdnZlbmNfY29uZmlnCj4gKnBhcmFt cykKPiArewo+ICsgICAgVlZlbkNDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKPiArICAg IGNvbnN0IEFWRGljdGlvbmFyeUVudHJ5ICplbiA9IE5VTEw7Cj4gKyAgICBpbnQgcGFyc2VfcmV0 Owo+ICsgICAgaW50IHJldCA9IDA7Cj4gKwo+ICsgICAgd2hpbGUgKChlbiA9IGF2X2RpY3RfaXRl cmF0ZShzLT52dmVuY19vcHRzLCBlbikpKSB7Cj4gKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9M T0dfREVCVUcsICJ2dmVuY19zZXRfcGFyYW06ICclczolcydcbiIsIGVuLT5rZXksCj4gKyAgICAg ICAgICAgICAgIGVuLT52YWx1ZSk7Cj4gKyAgICAgICAgcGFyc2VfcmV0ID0gdnZlbmNfc2V0X3Bh cmFtKHBhcmFtcywgZW4tPmtleSwgZW4tPnZhbHVlKTsKPiArICAgICAgICBzd2l0Y2ggKHBhcnNl X3JldCkgewo+ICsgICAgICAgIGNhc2UgVlZFTkNfUEFSQU1fQkFEX05BTUU6Cj4gKyAgICAgICAg ICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiVW5rbm93biB2dmVuYyBvcHRpb246ICVz LlxuIiwKPiBlbi0+a2V5KTsKPiArICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+ ICsgICAgICAgICAgICBicmVhazsKPiArICAgICAgICBjYXNlIFZWRU5DX1BBUkFNX0JBRF9WQUxV RToKPiArICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIHZ2 ZW5jIHZhbHVlIGZvciAlczoKPiAlcy5cbiIsIGVuLT5rZXksIGVuLT52YWx1ZSk7Cj4gKyAgICAg ICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKyAg ICAgICAgZGVmYXVsdDoKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgfQo+ICsKPiAr ICAgICAgICBpZiAoIWF2X3N0cmNhc2VjbXAoZW4tPmtleSwgInJjc3RhdHNmaWxlIikpIHsKPiAr ICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJ2dmVuYy1wYXJhbXMgMnBh c3Mgb3B0aW9uCj4gJ3Jjc3RhdHNmaWxlJyAiCj4gKyAgICAgICAgICAgICAgICAgICAibm90IGF2 YWlsYWJsZS4gVXNlIG9wdGlvbiAncGFzc2xvZ2ZpbGUnXG4iKTsKPiArICAgICAgICAgICAgcmV0 ID0gQVZFUlJPUihFSU5WQUwpOwo+ICsgICAgICAgIH0KPiArICAgICAgICBpZiAoIWF2X3N0cmNh c2VjbXAoZW4tPmtleSwgInBhc3NlcyIpIHx8ICFhdl9zdHJjYXNlY21wKGVuLT5rZXksCj4gInBh c3MiKSkgewo+ICsgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgInZ2ZW5j LXBhcmFtcyAycGFzcyBvcHRpb24gJyVzJyAiCj4gKyAgICAgICAgICAgICAgICAgICAibm90IGF2 YWlsYWJsZS4gVXNlIG9wdGlvbiAncGFzcydcbiIsIGVuLT5rZXkpOwo+ICsgICAgICAgICAgICBy ZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsgICAgcmV0dXJu IHJldDsKPiArfQo+ICsKPiArc3RhdGljIGludCB2dmVuY19zZXRfcmNfbW9kZShBVkNvZGVjQ29u dGV4dCAqYXZjdHgsIHZ2ZW5jX2NvbmZpZyAqcGFyYW1zKQo+ICt7Cj4gKyAgICBwYXJhbXMtPm1f UkNOdW1QYXNzZXMgPSAxOwo+ICsgICAgaWYgKChhdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFH X1BBU1MxIHx8IGF2Y3R4LT5mbGFncyAmCj4gQVZfQ09ERUNfRkxBR19QQVNTMikpIHsKPiArICAg ICAgICBpZiAoIWF2Y3R4LT5iaXRfcmF0ZSkgewo+ICsgICAgICAgICAgICBhdl9sb2coYXZjdHgs IEFWX0xPR19FUlJPUiwgIkEgYml0cmF0ZSBtdXN0IGJlIHNldCB0byB1c2UgdHdvCj4gcGFzcyBt b2RlLlxuIik7Cj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4gKyAgICAg ICAgfQo+ICsgICAgICAgIHBhcmFtcy0+bV9SQ051bVBhc3NlcyA9IDI7Cj4gKyAgICAgICAgaWYg KGF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfUEFTUzEpCj4gKyAgICAgICAgICAgIHBhcmFt cy0+bV9SQ1Bhc3MgPSAxOwo+ICsgICAgICAgIGVsc2UKPiArICAgICAgICAgICAgcGFyYW1zLT5t X1JDUGFzcyA9IDI7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKGF2Y3R4LT5yY19tYXhfcmF0ZSkg ewo+ICsjaWYgVlZFTkNfVkVSU0lPTl9JTlQgPj0gQVZfVkVSU0lPTl9JTlQoMSw4LDApCj4gKyAg ICAgICAgcGFyYW1zLT5tX1JDTWF4Qml0cmF0ZSA9IGF2Y3R4LT5yY19tYXhfcmF0ZTsKPiArI2Vu ZGlmCj4gKwo+ICsjaWYgVlZFTkNfVkVSU0lPTl9JTlQgPCBBVl9WRVJTSU9OX0lOVCgxLDExLDAp Cj4gKyAgICAgICAgLyogcmNfbWF4X3JhdGUgd2l0aG91dCBhIGJpdF9yYXRlIGVuYWJsZXMgY2Fw cGVkIENRRiBtb2RlLgo+ICsgICAgICAgIChRUCArIHN1YmouIG9wdGltaXphdGlvbiArIG1heC4g Yml0cmF0ZSkgKi8KPiArICAgICAgICBpZiAoIWF2Y3R4LT5iaXRfcmF0ZSkgewo+ICsgICAgICAg ICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkNhcHBlZCBDb25zdGFudCBRdWFsaXR5 IEZhY3Rvcgo+IG1vZGUgKGNhcHBlZCBDUUYpICIKPiArICAgICAgICAgICAgICAgICAgICJuZWVk cyBhdCBsZWFzdCB2dmVuYyB2ZXJzaW9uID49IDEuMTEuMCAoY3VycmVudAo+IHZlcnNpb24gJXMp XG4iLCB2dmVuY19nZXRfdmVyc2lvbigpKTsKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1Io RUlOVkFMKTsKPiArICAgICAgICB9Cj4gKyNlbmRpZgo+ICsgICAgfQo+ICsgICAgcmV0dXJuIDA7 Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgdnZlbmNfaW5pdF9leHRyYWRhdGEoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4LCBWVmVuQ0NvbnRleHQgKnMpCj4gK3sKPiArICAgIGludCByZXQ7Cj4gKyAgICBp ZiAoYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19HTE9CQUxfSEVBREVSKSB7Cj4gKyAgICAg ICAgcmV0ID0gdnZlbmNfZ2V0X2hlYWRlcnMocy0+ZW5jb2Rlciwgcy0+YXUpOwo+ICsgICAgICAg IGlmICgwICE9IHJldCkgewo+ICsgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJP UiwgImNhbm5vdCBnZXQgKFNQUyxQUFMpIGhlYWRlcnM6Cj4gJXNcbiIsCj4gKyAgICAgICAgICAg ICAgICAgICB2dmVuY19nZXRfbGFzdF9lcnJvcihzLT5lbmNvZGVyKSk7Cj4gKyAgICAgICAgICAg IHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICBpZiAo cy0+YXUtPnBheWxvYWRVc2VkU2l6ZSA8PSAwKSB7Cj4gKyAgICAgICAgICAgIHJldHVybiBBVkVS Uk9SX0lOVkFMSUREQVRBOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgYXZjdHgtPmV4dHJh ZGF0YV9zaXplID0gcy0+YXUtPnBheWxvYWRVc2VkU2l6ZTsKPiArICAgICAgICBhdmN0eC0+ZXh0 cmFkYXRhID0gYXZfbWFsbG9jeihhdmN0eC0+ZXh0cmFkYXRhX3NpemUgKwo+IEFWX0lOUFVUX0JV RkZFUl9QQURESU5HX1NJWkUpOwo+ICsgICAgICAgIGlmICghYXZjdHgtPmV4dHJhZGF0YSkgewo+ ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+ICsgICAgICAgIH0KPiArCj4g KyAgICAgICAgbWVtY3B5KGF2Y3R4LT5leHRyYWRhdGEsIHMtPmF1LT5wYXlsb2FkLCBhdmN0eC0+ ZXh0cmFkYXRhX3NpemUpOwo+ICsgICAgfQo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBhdl9jb2xkIGludCB2dmVuY19pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKPiArewo+ ICsgICAgaW50IHJldDsKPiArICAgIGludCBmcmFtZXJhdGU7Cj4gKyAgICBWVmVuQ0NvbnRleHQg KnMgPSBhdmN0eC0+cHJpdl9kYXRhOwo+ICsgICAgdnZlbmNfY29uZmlnIHBhcmFtczsKPiArICAg IHZ2ZW5jUHJlc2V0TW9kZSBwcmVzZXQgPSAodnZlbmNQcmVzZXRNb2RlKSBzLT5wcmVzZXQ7Cj4g Kwo+ICsgICAgaWYgKGF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfSU5URVJMQUNFRF9EQ1Qp IHsKPiArICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgImludGVybGFjZWQgbm90 IHN1cHBvcnRlZFxuIik7Cj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPiArICAg IH0KPiArCj4gKyAgICB2dmVuY19jb25maWdfZGVmYXVsdCgmcGFyYW1zKTsKPiArCj4gKyAgICBp ZiAoYXZjdHgtPmZyYW1lcmF0ZS5udW0gPiAwICYmIGF2Y3R4LT5mcmFtZXJhdGUuZGVuID4gMCkK PiArICAgICAgICBmcmFtZXJhdGUgPSBhdmN0eC0+ZnJhbWVyYXRlLm51bSAvIGF2Y3R4LT5mcmFt ZXJhdGUuZGVuOwo+ICsgICAgZWxzZQo+ICsgICAgICAgIGZyYW1lcmF0ZSA9IGF2Y3R4LT50aW1l X2Jhc2UuZGVuIC8gYXZjdHgtPnRpbWVfYmFzZS5udW07Cj4gKwo+ICsgICAgdnZlbmNfaW5pdF9k ZWZhdWx0KCZwYXJhbXMsIGF2Y3R4LT53aWR0aCwgYXZjdHgtPmhlaWdodCwgZnJhbWVyYXRlLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgIGF2Y3R4LT5iaXRfcmF0ZSwgcy0+cXAsIHByZXNldCk7 Cj4gKwo+ICsgICAgdnZlbmNfc2V0X3ZlcmJvc2l0b3J5KCZwYXJhbXMpOwo+ICsKPiArICAgIGlm IChhdmN0eC0+dGhyZWFkX2NvdW50ID4gMCkKPiArICAgICAgICBwYXJhbXMubV9udW1UaHJlYWRz ID0gYXZjdHgtPnRocmVhZF9jb3VudDsKPiArCj4gKyAgICAvKiBHT1Agc2V0dGluZ3MgKElEUi9D UkEpICovCj4gKyAgICBpZiAoYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19DTE9TRURfR09Q KQo+ICsgICAgICAgIHBhcmFtcy5tX0RlY29kaW5nUmVmcmVzaFR5cGUgPSBWVkVOQ19EUlRfSURS Owo+ICsKPiArICAgIGlmIChhdmN0eC0+Z29wX3NpemUgPT0gMSkgewo+ICsgICAgICAgIHBhcmFt cy5tX0dPUFNpemUgPSAxOwo+ICsgICAgICAgIHBhcmFtcy5tX0ludHJhUGVyaW9kID0gMTsKPiAr ICAgIH0gZWxzZQo+ICsgICAgICAgIHBhcmFtcy5tX0ludHJhUGVyaW9kU2VjID0gcy0+aW50cmFf cmVmcmVzaF9zZWM7Cj4gKwo+ICsgICAgcGFyYW1zLm1fQWNjZXNzVW5pdERlbGltaXRlciA9IHRy dWU7Cj4gKyAgICBwYXJhbXMubV91c2VQZXJjZXB0UVBBID0gcy0+cXBhOwo+ICsgICAgcGFyYW1z Lm1fbGV2ZWxUaWVyICAgICA9ICh2dmVuY1RpZXIpIHMtPnRpZXI7Cj4gKwo+ICsgICAgaWYgKGF2 Y3R4LT5sZXZlbCA+IDApCj4gKyAgICAgICAgcGFyYW1zLm1fbGV2ZWwgPSAodnZlbmNMZXZlbClh dmN0eC0+bGV2ZWw7Cj4gKwo+ICsgICAgaWYgKHMtPmxldmVsKSB7Cj4gKyAgICAgICAgaWYgKFZW RU5DX1BBUkFNX0JBRF9WQUxVRSA9PSB2dmVuY19zZXRfcGFyYW0oJnBhcmFtcywgImxldmVsIiwK PiBzLT5sZXZlbCkpIHsKPiArICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1Is ICJJbnZhbGlkIGxldmVsX2lkYzogJXMuXG4iLAo+IHMtPmxldmVsKTsKPiArICAgICAgICAgICAg cmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAg dnZlbmNfc2V0X2ZyYW1lcmF0ZShhdmN0eCwgJnBhcmFtcyk7Cj4gKwo+ICsgICAgdnZlbmNfc2V0 X3BpY19mb3JtYXQoYXZjdHgsICZwYXJhbXMpOwo+ICsKPiArICAgIHZ2ZW5jX3NldF9jb2xvcl9m b3JtYXQoYXZjdHgsICZwYXJhbXMpOwo+ICsKPiArICAgIHJldCA9IHZ2ZW5jX3BhcnNlX3Z2ZW5j X3BhcmFtcyhhdmN0eCwgJnBhcmFtcyk7Cj4gKyAgICBpZiAocmV0ICE9IDApCj4gKyAgICAgICAg cmV0dXJuIHJldDsKPiArCj4gKyAgICByZXQgPSB2dmVuY19zZXRfcmNfbW9kZShhdmN0eCwgJnBh cmFtcyk7Cj4gKyAgICBpZiAocmV0ICE9IDApCj4gKyAgICAgICAgcmV0dXJuIHJldDsKPiArCj4g KyAgICBzLT5lbmNvZGVyID0gdnZlbmNfZW5jb2Rlcl9jcmVhdGUoKTsKPiArICAgIGlmICghcy0+ ZW5jb2Rlcikgewo+ICsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiY2Fubm90 IGNyZWF0ZSBsaWJ2dmVuYyBlbmNvZGVyXG4iKTsKPiArICAgICAgICByZXR1cm4gQVZFUlJPUihF Tk9NRU0pOwo+ICsgICAgfQo+ICsKPiArICAgIHZ2ZW5jX3NldF9tc2dfY2FsbGJhY2soJnBhcmFt cywgcy0+ZW5jb2RlciwgdnZlbmNfbG9nX2NhbGxiYWNrKTsKPiArICAgIHJldCA9IHZ2ZW5jX2Vu Y29kZXJfb3BlbihzLT5lbmNvZGVyLCAmcGFyYW1zKTsKPiArICAgIGlmIChyZXQgIT0gMCkgewo+ ICsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiY2Fubm90IG9wZW4gbGlidnZl bmMgZW5jb2RlcjogJXNcbiIsCj4gKyAgICAgICAgICAgICAgIHZ2ZW5jX2dldF9sYXN0X2Vycm9y KHMtPmVuY29kZXIpKTsKPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9FWFRFUk5BTDsKPiArICAg IH0KPiArCj4gKyAgICB2dmVuY19nZXRfY29uZmlnKHMtPmVuY29kZXIsICZwYXJhbXMpOyAgICAg LyogZ2V0IHRoZSBhZGFwdGVkIGNvbmZpZwo+ICovCj4gKwo+ICsgICAgYXZfbG9nKGF2Y3R4LCBB Vl9MT0dfSU5GTywgImxpYnZ2ZW5jIHZlcnNpb246ICVzXG4iLAo+IHZ2ZW5jX2dldF92ZXJzaW9u KCkpOwo+ICsgICAgaWYgKGF2X2xvZ19nZXRfbGV2ZWwoKSA+PSBBVl9MT0dfVkVSQk9TRSkKPiAr ICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19JTkZPLCAiJXNcbiIsCj4gdnZlbmNfZ2V0X2Nv bmZpZ19hc19zdHJpbmcoJnBhcmFtcywgcGFyYW1zLm1fdmVyYm9zaXR5KSk7Cj4gKwo+ICsgICAg aWYgKHBhcmFtcy5tX1JDTnVtUGFzc2VzID09IDIpIHsKPiArICAgICAgICByZXQgPSB2dmVuY19p bml0X3Bhc3Mocy0+ZW5jb2RlciwgcGFyYW1zLm1fUkNQYXNzIC0gMSwgcy0+c3RhdHMpOwo+ICsg ICAgICAgIGlmIChyZXQgIT0gMCkgewo+ICsgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xP R19FUlJPUiwgImNhbm5vdCBpbml0IHBhc3MgJWQ6ICVzXG4iLAo+IHBhcmFtcy5tX1JDUGFzcywK PiArICAgICAgICAgICAgICAgICAgIHZ2ZW5jX2dldF9sYXN0X2Vycm9yKHMtPmVuY29kZXIpKTsK PiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhURVJOQUw7Cj4gKyAgICAgICAgfQo+ICsg ICAgfQo+ICsKPiArICAgIHMtPmF1ID0gdnZlbmNfYWNjZXNzVW5pdF9hbGxvYygpOwo+ICsgICAg aWYgKCFzLT5hdSkgewo+ICsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0ZBVEFMLCAiY2Fu bm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgQVUKPiBwYXlsb2FkXG4iKTsKPiArICAgICAgICByZXR1 cm4gQVZFUlJPUihFTk9NRU0pOwo+ICsgICAgfQo+ICsgICAgdnZlbmNfYWNjZXNzVW5pdF9hbGxv Y19wYXlsb2FkKHMtPmF1LCBhdmN0eC0+d2lkdGggKiBhdmN0eC0+aGVpZ2h0KTsKPiArICAgIGlm ICghcy0+YXUtPnBheWxvYWQpIHsKPiArICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19GQVRB TCwgImNhbm5vdCBhbGxvY2F0ZSBwYXlsb2FkIG1lbW9yeSBvZgo+IHNpemUgJWRcbiIsCj4gKyAg ICAgICAgICAgICAgIGF2Y3R4LT53aWR0aCAqIGF2Y3R4LT5oZWlnaHQpOwo+ICsgICAgICAgIHJl dHVybiBBVkVSUk9SKEVOT01FTSk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0ID0gdnZlbmNfaW5p dF9leHRyYWRhdGEoYXZjdHgsIHMpOwo+ICsgICAgaWYgKHJldCAhPSAwKQo+ICsgICAgICAgIHJl dHVybiByZXQ7Cj4gKwo+ICsgICAgcy0+ZW5jb2RlX2RvbmUgPSBmYWxzZTsKPiArICAgIHJldHVy biAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYXZfY29sZCBpbnQgdnZlbmNfY2xvc2UoQVZDb2RlY0Nv bnRleHQgKmF2Y3R4KQo+ICt7Cj4gKyAgICBWVmVuQ0NvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9k YXRhOwo+ICsKPiArICAgIGlmIChzLT5hdSkKPiArICAgICAgICB2dmVuY19hY2Nlc3NVbml0X2Zy ZWUocy0+YXUsIHRydWUpOwo+ICsKPiArICAgIGlmIChzLT5lbmNvZGVyKSB7Cj4gKyAgICAgICAg dnZlbmNfcHJpbnRfc3VtbWFyeShzLT5lbmNvZGVyKTsKPiArCj4gKyAgICAgICAgaWYgKDAgIT0g dnZlbmNfZW5jb2Rlcl9jbG9zZShzLT5lbmNvZGVyKSkKPiArICAgICAgICAgICAgcmV0dXJuIEFW RVJST1JfRVhURVJOQUw7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4g K3N0YXRpYyBhdl9jb2xkIGludCB2dmVuY19mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFW UGFja2V0ICpwa3QsCj4gY29uc3QgQVZGcmFtZSAqZnJhbWUsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgKmdvdF9wYWNrZXQpCj4gK3sKPiArICAgIFZWZW5DQ29udGV4dCAq cyA9IGF2Y3R4LT5wcml2X2RhdGE7Cj4gKyAgICB2dmVuY1lVVkJ1ZmZlciAqcHl1dmJ1ZjsKPiAr ICAgIHZ2ZW5jWVVWQnVmZmVyIHl1dmJ1ZjsKPiArICAgIGludCBwaWN0X3R5cGU7Cj4gKyAgICBp bnQgcmV0Owo+ICsKPiArICAgIHB5dXZidWYgPSBOVUxMOwo+ICsgICAgaWYgKGZyYW1lKSB7Cj4g KyAgICAgICAgdnZlbmNfWVVWQnVmZmVyX2RlZmF1bHQoJnl1dmJ1Zik7Cj4gKyAgICAgICAgeXV2 YnVmLnBsYW5lc1swXS5wdHIgPSAoaW50MTZfdCAqKSBmcmFtZS0+ZGF0YVswXTsKPiArICAgICAg ICB5dXZidWYucGxhbmVzWzFdLnB0ciA9IChpbnQxNl90ICopIGZyYW1lLT5kYXRhWzFdOwo+ICsg ICAgICAgIHl1dmJ1Zi5wbGFuZXNbMl0ucHRyID0gKGludDE2X3QgKikgZnJhbWUtPmRhdGFbMl07 Cj4gKwo+ICsgICAgICAgIHl1dmJ1Zi5wbGFuZXNbMF0ud2lkdGggID0gZnJhbWUtPndpZHRoOwo+ ICsgICAgICAgIHl1dmJ1Zi5wbGFuZXNbMF0uaGVpZ2h0ID0gZnJhbWUtPmhlaWdodDsKPiArICAg ICAgICB5dXZidWYucGxhbmVzWzBdLnN0cmlkZSA9IGZyYW1lLT5saW5lc2l6ZVswXSA+PiAxOyAv KiBzdHJpZGUgaXMKPiB1c2VkIGluIDE2Yml0IHNhbXBsZXMgaW4gdnZlbmMgKi8KPiArCj4gKyAg ICAgICAgeXV2YnVmLnBsYW5lc1sxXS53aWR0aCAgPSBmcmFtZS0+d2lkdGggPj4gMTsKPiArICAg ICAgICB5dXZidWYucGxhbmVzWzFdLmhlaWdodCA9IGZyYW1lLT5oZWlnaHQgPj4gMTsKPiArICAg ICAgICB5dXZidWYucGxhbmVzWzFdLnN0cmlkZSA9IGZyYW1lLT5saW5lc2l6ZVsxXSA+PiAxOwo+ ICsKPiArICAgICAgICB5dXZidWYucGxhbmVzWzJdLndpZHRoICA9IGZyYW1lLT53aWR0aCA+PiAx Owo+ICsgICAgICAgIHl1dmJ1Zi5wbGFuZXNbMl0uaGVpZ2h0ID0gZnJhbWUtPmhlaWdodCA+PiAx Owo+ICsgICAgICAgIHl1dmJ1Zi5wbGFuZXNbMl0uc3RyaWRlID0gZnJhbWUtPmxpbmVzaXplWzJd ID4+IDE7Cj4gKwo+ICsgICAgICAgIHl1dmJ1Zi5jdHMgPSBmcmFtZS0+cHRzOwo+ICsgICAgICAg IHl1dmJ1Zi5jdHNWYWxpZCA9IHRydWU7Cj4gKyAgICAgICAgcHl1dmJ1ZiA9ICZ5dXZidWY7Cj4g KyAgICB9Cj4gKwo+ICsgICAgaWYgKCFzLT5lbmNvZGVfZG9uZSkgewo+ICsgICAgICAgIGlmICh2 dmVuY19lbmNvZGUocy0+ZW5jb2RlciwgcHl1dmJ1Ziwgcy0+YXUsICZzLT5lbmNvZGVfZG9uZSkg IT0KPiAwKQo+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9FWFRFUk5BTDsKPiArICAgIH0g ZWxzZQo+ICsgICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgIGlmIChzLT5hdS0+cGF5bG9hZFVz ZWRTaXplID4gMCkgewo+ICsgICAgICAgIHJldCA9IGZmX2dldF9lbmNvZGVfYnVmZmVyKGF2Y3R4 LCBwa3QsIHMtPmF1LT5wYXlsb2FkVXNlZFNpemUsIDApOwo+ICsgICAgICAgIGlmIChyZXQgPCAw KQo+ICsgICAgICAgICAgICByZXR1cm4gcmV0Owo+ICsKPiArICAgICAgICBtZW1jcHkocGt0LT5k YXRhLCBzLT5hdS0+cGF5bG9hZCwgcy0+YXUtPnBheWxvYWRVc2VkU2l6ZSk7Cj4gKwo+ICsgICAg ICAgIGlmIChzLT5hdS0+Y3RzVmFsaWQpCj4gKyAgICAgICAgICAgIHBrdC0+cHRzID0gcy0+YXUt PmN0czsKPiArICAgICAgICBpZiAocy0+YXUtPmR0c1ZhbGlkKQo+ICsgICAgICAgICAgICBwa3Qt PmR0cyA9IHMtPmF1LT5kdHM7Cj4gKyAgICAgICAgcGt0LT5mbGFncyB8PSBBVl9QS1RfRkxBR19L RVkgKiBzLT5hdS0+cmFwOwo+ICsKPiArICAgICAgICAqZ290X3BhY2tldCA9IDE7Cj4gKyAgICAg ICAgcmV0dXJuIDA7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBjb25zdCBlbnVtIEFWUGl4ZWxGb3JtYXQgcGl4X2ZtdHNfdnZlbmNbXSA9IHsKPiArICAg IEFWX1BJWF9GTVRfWVVWNDIwUDEwLAo+ICsgICAgQVZfUElYX0ZNVF9OT05FCj4gK307Cj4gKwo+ ICsjZGVmaW5lIE9GRlNFVCh4KSBvZmZzZXRvZihWVmVuQ0NvbnRleHQsIHgpCj4gKyNkZWZpbmUg VkUgQVZfT1BUX0ZMQUdfVklERU9fUEFSQU0gfCBBVl9PUFRfRkxBR19FTkNPRElOR19QQVJBTQo+ ICtzdGF0aWMgY29uc3QgQVZPcHRpb24gb3B0aW9uc1tdID0gewo+ICsgICAgeyAicHJlc2V0Iiwg ICAgICAgInNldCBlbmNvZGluZyBwcmVzZXQiLCBPRkZTRVQocHJlc2V0KSwKPiBBVl9PUFRfVFlQ RV9JTlQsIHsuaTY0ID0gMn0sIDAsIDQsIFZFLCAicHJlc2V0In0sCj4gKyAgICB7ICJmYXN0ZXIi LCAgICAgICAiMCIsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IFZWRU5DX0ZBU1RFUn0s Cj4gSU5UX01JTiwgSU5UX01BWCwgVkUsICJwcmVzZXQiIH0sCj4gKyAgICB7ICJmYXN0IiwgICAg ICAgICAiMSIsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IFZWRU5DX0ZBU1R9LAo+ICBJ TlRfTUlOLCBJTlRfTUFYLCBWRSwgInByZXNldCIgfSwKPiArICAgIHsgIm1lZGl1bSIsICAgICAg ICIyIiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gVlZFTkNfTUVESVVNfSwKPiBJTlRf TUlOLCBJTlRfTUFYLCBWRSwgInByZXNldCIgfSwKPiArICAgIHsgInNsb3ciLCAgICAgICAgICIz IiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gVlZFTkNfU0xPV30sCj4gIElOVF9NSU4s IElOVF9NQVgsIFZFLCAicHJlc2V0IiB9LAo+ICsgICAgeyAic2xvd2VyIiwgICAgICAgIjQiLCAw LCBBVl9PUFRfVFlQRV9DT05TVCwgey5pNjQgPSBWVkVOQ19TTE9XRVJ9LAo+IElOVF9NSU4sIElO VF9NQVgsIFZFLCAicHJlc2V0IiB9LAo+ICsgICAgeyAicXAiLCAgICAgICAgICAgInNldCBxdWFu dGl6YXRpb24iLCAgICAgICAgICBPRkZTRVQocXApLAo+IEFWX09QVF9UWVBFX0lOVCwgIHsuaTY0 ID0gMzJ9LCAtMSwgNjMsIFZFIH0sCj4gKyAgICB7ICJxcGEiLCAgICAgICAgICAic2V0IHN1Ympl Y3RpdmUgKHBlcmNlcHR1YWxseSBtb3RpdmF0ZWQpCj4gb3B0aW1pemF0aW9uIiwgT0ZGU0VUKHFw YSksIEFWX09QVF9UWVBFX0JPT0wsIHsuaTY0ID0gMX0sICAwLCAxLCBWRX0sCj4gKyAgICB7ICJw YXNzbG9nZmlsZSIsICAiRmlsZW5hbWUgZm9yIDIgcGFzcyBzdGF0cyIsIE9GRlNFVChzdGF0cyks Cj4gQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0ciA9IE5VTEx9LCAwLCAwLCBWRX0sCj4gKyAgICB7 ICJzdGF0cyIsICAgICAgICAiRmlsZW5hbWUgZm9yIDIgcGFzcyBzdGF0cyIsIE9GRlNFVChzdGF0 cyksCj4gQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0ciA9IE5VTEx9LCAwLCAwLCBWRX0sCj4gKyAg ICB7ICJwZXJpb2QiLCAgICAgICAic2V0IChpbnRyYSkgcmVmcmVzaCBwZXJpb2QgaW4gc2Vjb25k cyIsCj4gT0ZGU0VUKGludHJhX3JlZnJlc2hfc2VjKSwgQVZfT1BUX1RZUEVfSU5ULCAgey5pNjQg PSAxfSwgIDEsIElOVF9NQVgsIFZFIH0sCj4gKyAgICB7ICJ2dmVuYy1wYXJhbXMiLCAic2V0IHRo ZSB2dmVuYyBjb25maWd1cmF0aW9uIHVzaW5nIGEgOi1zZXBhcmF0ZWQKPiBsaXN0IG9mIGtleT12 YWx1ZSBwYXJhbWV0ZXJzIiwgT0ZGU0VUKHZ2ZW5jX29wdHMpLCBBVl9PUFRfVFlQRV9ESUNULCB7 IDAgfSwKPiAwLCAwLCBWRSB9LAo+ICsgICAgeyAibGV2ZWwiLCAgICAgICAgIlNwZWNpZnkgbGV2 ZWwgKGFzIGRlZmluZWQgYnkgQW5uZXggQSkiLAo+IE9GRlNFVChsZXZlbCksIEFWX09QVF9UWVBF X1NUUklORywgey5zdHIgPSBOVUxMfSwgMCwgMCwgVkV9LAo+ICsgICAgeyAidGllciIsICAgICAg ICAgInNldCB2dmMgdGllciIsIE9GRlNFVCh0aWVyKSwgQVZfT1BUX1RZUEVfSU5ULAo+IHsuaTY0 ID0gMH0sICAwLCAxLCBWRSwgInRpZXIifSwKPiArICAgIHsgIm1haW4iLCAgICAgICAgICJtYWlu IiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gMH0sIElOVF9NSU4sCj4gSU5UX01BWCwg VkUsICJ0aWVyIn0sCj4gKyAgICB7ICJoaWdoIiwgICAgICAgICAiaGlnaCIsIDAsIEFWX09QVF9U WVBFX0NPTlNULCB7Lmk2NCA9IDF9LCBJTlRfTUlOLAo+IElOVF9NQVgsIFZFLCAidGllciJ9LAo+ ICsgICAge05VTEx9Cj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3QgQVZDbGFzcyBjbGFzcyA9IHsK PiArICAgIC5jbGFzc19uYW1lID0gImxpYnZ2ZW5jIiwKPiArICAgIC5pdGVtX25hbWUgID0gYXZf ZGVmYXVsdF9pdGVtX25hbWUsCj4gKyAgICAub3B0aW9uICAgICA9IG9wdGlvbnMsCj4gKyAgICAu dmVyc2lvbiAgICA9IExJQkFWVVRJTF9WRVJTSU9OX0lOVCwKPiArfTsKPiArCj4gK3N0YXRpYyBj b25zdCBGRkNvZGVjRGVmYXVsdCB2dmVuY19kZWZhdWx0c1tdID0gewo+ICsgICAgeyAiYiIsICIw IiB9LAo+ICsgICAgeyAiZyIsICItMSIgfSwKPiArICAgIHsgTlVMTCB9LAo+ICt9Owo+ICsKPiAr Y29uc3QgRkZDb2RlYyBmZl9saWJ2dmVuY19lbmNvZGVyID0gewo+ICsgICAgLnAubmFtZSAgICAg ICAgID0gImxpYnZ2ZW5jIiwKPiArICAgIENPREVDX0xPTkdfTkFNRSgibGlidnZlbmMgSC4yNjYg LyBWVkMiKSwKPiArICAgIC5wLnR5cGUgICAgICAgICA9IEFWTUVESUFfVFlQRV9WSURFTywKPiAr ICAgIC5wLmlkICAgICAgICAgICA9IEFWX0NPREVDX0lEX1ZWQywKPiArICAgIC5wLmNhcGFiaWxp dGllcyA9IEFWX0NPREVDX0NBUF9EUjEgfCBBVl9DT0RFQ19DQVBfREVMQVkgfAo+ICsgICAgICAg ICAgICAgICAgICAgICAgQVZfQ09ERUNfQ0FQX09USEVSX1RIUkVBRFMsCj4gKyAgICAucC5wcm9m aWxlcyAgICAgPSBOVUxMX0lGX0NPTkZJR19TTUFMTChmZl92dmNfcHJvZmlsZXMpLAo+ICsgICAg LnAucHJpdl9jbGFzcyAgID0gJmNsYXNzLAo+ICsgICAgLnAud3JhcHBlcl9uYW1lID0gImxpYnZ2 ZW5jIiwKPiArICAgIC5wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihWVmVuQ0NvbnRleHQpLAo+ICsg ICAgLnAucGl4X2ZtdHMgICAgID0gcGl4X2ZtdHNfdnZlbmMsCj4gKyAgICAuaW5pdCAgICAgICAg ICAgPSB2dmVuY19pbml0LAo+ICsgICAgRkZfQ09ERUNfRU5DT0RFX0NCKHZ2ZW5jX2ZyYW1lKSwK PiArICAgIC5jbG9zZSAgICAgICAgICA9IHZ2ZW5jX2Nsb3NlLAo+ICsgICAgLmRlZmF1bHRzICAg ICAgID0gdnZlbmNfZGVmYXVsdHMsCj4gKyAgICAuY2Fwc19pbnRlcm5hbCAgPSBGRl9DT0RFQ19D QVBfSU5JVF9DTEVBTlVQIHwKPiBGRl9DT0RFQ19DQVBfQVVUT19USFJFQURTCj4gK307Cj4gLS0K PiAyLjM0LjEKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdAo+IGZmbXBlZy1kZXZlbEBmZm1wZWcub3Jn Cj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCj4KPiBU byB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKPiBmZm1wZWctZGV2ZWwt cmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo+Cl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWls aW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxt YW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92 ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3Qg InVuc3Vic2NyaWJlIi4K