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 25C7644398 for ; Tue, 6 Sep 2022 21:47:18 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9C75768BB47; Wed, 7 Sep 2022 00:47:15 +0300 (EEST) Received: from mail-pl1-f201.google.com (mail-pl1-f201.google.com [209.85.214.201]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BD8D168B8F0 for ; Wed, 7 Sep 2022 00:47:09 +0300 (EEST) Received: by mail-pl1-f201.google.com with SMTP id b9-20020a170902d50900b0016f0342a417so8625072plg.21 for ; Tue, 06 Sep 2022 14:47:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date; bh=Zvv7jvF8c3KsurvE3SA+0s8/dbe4wjFk5lydh39dJQA=; b=bxRLcYd5RlrtFq0/j4Off/R0SqexBJqCC9FnSzSQXvFjn2kZKM5HpP/5h2I8O/GvD/ aUj/8iAeI3OKUkoRfkB738kAETe+AiDI+UzPQNp4Rid4ADn5zhIdiONUfBekPIR7z+R2 YRhDimtHCrs3qoFEIiRNJE2dL6JDaTqHNBOKW4wsMAs6UA7Sl5J2183+hSVn2DsGHv9g Eb/Bz+1DJwf50zT+6QMS0Hj5RrI1KVj5TO1pnbsJSrZF0qmJ9jn3bYLiUAB7FOCrh33I A0pj6rTFhF4GeZGD7RE07o/Z98NVAJRivSRcFq7JgWYofK+JlXbx+B9J7+Ig8L22rXgs /HFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date; bh=Zvv7jvF8c3KsurvE3SA+0s8/dbe4wjFk5lydh39dJQA=; b=Xh1JjzK2ngDagN2Sx2U7GOJZZhRrUhZz4aMZukRa0Wyh0sEAD5lTKl+JNHuvhNUBYy 1QiycaYvxKab1HDiBi4k5PwKxHQhCj5wg8VYLFi8lYBBUBIjMa9kq8autqscSn7IAk6+ b0r75x7Fj7nDDd1hbggvAuiQibGVxsQpEeJ5K4kXM1bcDC2HxWxnPOxV6Kr+2cUoDE0e QA7qHW8ob/OcCMKODNpNbt7bTM8WkpLk1NoY7vCui/4mTs9MKdO3DqLBTmMncdSPT6Ba vAGn+I942wjFeRsEdLeJ/H+1U2ad062dsmJOi2ol75Pvt84pHPMmeIrJf41GuNvlKdnO Pz7Q== X-Gm-Message-State: ACgBeo0rds0/ooG9qVfRsAMu/qbPfoLa1ZminZJ+IRMkJBoyz9nQMBQV eS6rVIO3P0vV1xXa7wiA9rVjOg2+YGviH5phVpS3cYxIjt/1cYtlZvZKNAUMTDCrUFzFi9VNT/g j1Z/Y6ONZGZisBZ4IjArsws5EmqzQE2JvwCHIiviJ7F0fuqeUlKa26hMhuc7q X-Google-Smtp-Source: AA6agR5XrT/x3P40efn6K1R8T6RVhBwWGEH2+Yq30XU1aictgM0Jx2kPORcHOYFlyABD0eBQlHfuRBdUrg== X-Received: from izadi.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:1f26]) (user=izadi job=sendgmr) by 2002:a17:902:694a:b0:16e:e270:1f84 with SMTP id k10-20020a170902694a00b0016ee2701f84mr644613plt.89.1662500827536; Tue, 06 Sep 2022 14:47:07 -0700 (PDT) Date: Tue, 6 Sep 2022 21:47:04 +0000 In-Reply-To: <20220417172658.GN3529341@pb2> Mime-Version: 1.0 References: <20220417172658.GN3529341@pb2> X-Mailer: git-send-email 2.37.2.789.g6183377224-goog Message-ID: <20220906214704.704687-1-izadi@google.com> From: Mohammad Izadi To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH] avformat/matroska: Support HDR10+ metadata in Matroska. 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: Mohammad Izadi 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: VGhlIGZhdGUgdGVzdCBmaWxlIGNhbiBiZSBmb3VuZCBoZXJlOiBodHRwczovL2RyaXZlLmdvb2ds ZS5jb20vZmlsZS9kLzFqR1czZjk0cmdsTGZyNVdHbU1RZTNTRW5wMVlrYk1SeS92aWV3P3VzcD1k cml2ZXNkawpUaGUgdmlkZW8gZmlsZSBuZWVkcyB0byBiZSBjb3BpZWQgdG8gZmF0ZS1zdWl0ZS9t a3YvCi0tLQogbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuYyAgICAgICAgICAgICB8IDI2 OSArKysrKysrKysrKysrKysrKy0tLQogbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuaCAg ICAgICAgICAgICB8ICAzNSArKy0KIGxpYmF2Zm9ybWF0L21hdHJvc2thLmggICAgICAgICAgICAg ICAgICAgICAgfCAgIDUgKwogbGliYXZmb3JtYXQvbWF0cm9za2FkZWMuYyAgICAgICAgICAgICAg ICAgICB8ICAzMCArKy0KIGxpYmF2Zm9ybWF0L21hdHJvc2thZW5jLmMgICAgICAgICAgICAgICAg ICAgfCAgNDUgKysrLQogdGVzdHMvZmF0ZS9tYXRyb3NrYS5tYWsgICAgICAgICAgICAgICAgICAg ICB8ICAgNiArCiB0ZXN0cy9yZWYvZmF0ZS9tYXRyb3NrYS1oZHIxMC1wbHVzLW1ldGFkYXRhIHwg IDc0ICsrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCA0MDcgaW5zZXJ0aW9ucygrKSwgNTcgZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvcmVmL2ZhdGUvbWF0cm9za2EtaGRyMTAt cGx1cy1tZXRhZGF0YQoKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVz LmMgYi9saWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5jCmluZGV4IDM0YTQ0YWFjNjUuLmNl MTU1NjkxOTYgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmMKKysr IGIvbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuYwpAQCAtMTgsNiArMTgsMTIgQEAKIAog I2luY2x1ZGUgImR5bmFtaWNfaGRyMTBfcGx1cy5oIgogI2luY2x1ZGUgImdldF9iaXRzLmgiCisj aW5jbHVkZSAicHV0X2JpdHMuaCIKKworc3RhdGljIGNvbnN0IHVpbnQ4X3QgdXNhX2NvdW50cnlf Y29kZSA9IDB4QjU7CitzdGF0aWMgY29uc3QgdWludDE2X3Qgc21wdGVfcHJvdmlkZXJfY29kZSA9 IDB4MDAzQzsKK3N0YXRpYyBjb25zdCB1aW50MTZfdCBzbXB0ZTIwOTRfNDBfcHJvdmlkZXJfb3Jp ZW50ZWRfY29kZSA9IDB4MDAwMTsKK3N0YXRpYyBjb25zdCB1aW50MTZfdCBzbXB0ZTIwOTRfNDBf YXBwbGljYXRpb25faWRlbnRpZmllciA9IDB4MDQ7CiAKIHN0YXRpYyBjb25zdCBpbnQ2NF90IGx1 bWluYW5jZV9kZW4gPSAxOwogc3RhdGljIGNvbnN0IGludDMyX3QgcGVha19sdW1pbmFuY2VfZGVu ID0gMTU7CkBAIC0yNyw4ICszMyw4IEBAIHN0YXRpYyBjb25zdCBpbnQzMl90IGtuZWVfcG9pbnRf ZGVuID0gNDA5NTsKIHN0YXRpYyBjb25zdCBpbnQzMl90IGJlemllcl9hbmNob3JfZGVuID0gMTAy MzsKIHN0YXRpYyBjb25zdCBpbnQzMl90IHNhdHVyYXRpb25fd2VpZ2h0X2RlbiA9IDg7CiAKLWlu dCBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVzKEFWRHluYW1pY0hEUlBs dXMgKnMsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgc2l6ZSkKK2ludCBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHlu YW1pY19oZHIxMF9wbHVzKEFWRHluYW1pY0hEUlBsdXMqIHMsIGNvbnN0IHVpbnQ4X3QqIGRhdGEs CisJCQkJCSAgICAgaW50IHNpemUpCiB7CiAgICAgR2V0Qml0Q29udGV4dCBnYmMsICpnYiA9ICZn YmM7CiAgICAgaW50IHJldDsKQEAgLTQwLDEwICs0NiwxMiBAQCBpbnQgZmZfcGFyc2VfaXR1X3Rf dDM1X3RvX2R5bmFtaWNfaGRyMTBfcGx1cyhBVkR5bmFtaWNIRFJQbHVzICpzLCBjb25zdCB1aW50 OF90CiAgICAgaWYgKHJldCA8IDApCiAgICAgICAgIHJldHVybiByZXQ7CiAKLSAgICBpZiAoZ2V0 X2JpdHNfbGVmdChnYikgPCAxMCkKKyAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCA4KQogICAg ICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgcy0+YXBwbGljYXRpb25fdmVy c2lvbiA9IGdldF9iaXRzKGdiLCA4KTsKIAotICAgIHMtPmFwcGxpY2F0aW9uX3ZlcnNpb24gPSBn ZXRfYml0cyhnYiwgOCk7CisgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMikKKyAgICAgICAg cmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CiAgICAgcy0+bnVtX3dpbmRvd3MgPSBnZXRfYml0 cyhnYiwgMik7CiAKICAgICBpZiAocy0+bnVtX3dpbmRvd3MgPCAxIHx8IHMtPm51bV93aW5kb3dz ID4gMykgewpAQCAtNTYsMTUgKzY0LDExIEBAIGludCBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHlu YW1pY19oZHIxMF9wbHVzKEFWRHluYW1pY0hEUlBsdXMgKnMsIGNvbnN0IHVpbnQ4X3QKICAgICBm b3IgKGludCB3ID0gMTsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKICAgICAgICAgLy8gVGhl IGNvcm5lcnMgYXJlIHNldCB0byBhYnNvbHV0ZSBjb29yZGluYXRlcyBoZXJlLiBUaGV5IHNob3Vs ZCBiZQogICAgICAgICAvLyBjb252ZXJ0ZWQgdG8gdGhlIHJlbGF0aXZlIGNvb3JkaW5hdGVzIChp biBbMCwgMV0pIGluIHRoZSBkZWNvZGVyLgotICAgICAgICBBVkhEUlBsdXNDb2xvclRyYW5zZm9y bVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsKLSAgICAgICAgcGFyYW1zLT53aW5kb3df dXBwZXJfbGVmdF9jb3JuZXJfeCA9Ci0gICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMo Z2IsIDE2KSwgMX07Ci0gICAgICAgIHBhcmFtcy0+d2luZG93X3VwcGVyX2xlZnRfY29ybmVyX3kg PQotICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxNiksIDF9OwotICAgICAg ICBwYXJhbXMtPndpbmRvd19sb3dlcl9yaWdodF9jb3JuZXJfeCA9Ci0gICAgICAgICAgICAoQVZS YXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDE2KSwgMX07Ci0gICAgICAgIHBhcmFtcy0+d2luZG93X2xv d2VyX3JpZ2h0X2Nvcm5lcl95ID0KLSAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhn YiwgMTYpLCAxfTsKKyAgICAgICAgQVZIRFJQbHVzQ29sb3JUcmFuc2Zvcm1QYXJhbXMqIHBhcmFt cyA9ICZzLT5wYXJhbXNbd107CisgICAgICAgIHBhcmFtcy0+d2luZG93X3VwcGVyX2xlZnRfY29y bmVyX3ggPSAoQVZSYXRpb25hbCkgeyBnZXRfYml0cyhnYiwgMTYpLCAxIH07CisgICAgICAgIHBh cmFtcy0+d2luZG93X3VwcGVyX2xlZnRfY29ybmVyX3kgPSAoQVZSYXRpb25hbCkgeyBnZXRfYml0 cyhnYiwgMTYpLCAxIH07CisgICAgICAgIHBhcmFtcy0+d2luZG93X2xvd2VyX3JpZ2h0X2Nvcm5l cl94ID0gKEFWUmF0aW9uYWwpIHsgZ2V0X2JpdHMoZ2IsIDE2KSwgMSB9OworICAgICAgICBwYXJh bXMtPndpbmRvd19sb3dlcl9yaWdodF9jb3JuZXJfeSA9IChBVlJhdGlvbmFsKSB7IGdldF9iaXRz KGdiLCAxNiksIDEgfTsKIAogICAgICAgICBwYXJhbXMtPmNlbnRlcl9vZl9lbGxpcHNlX3ggPSBn ZXRfYml0cyhnYiwgMTYpOwogICAgICAgICBwYXJhbXMtPmNlbnRlcl9vZl9lbGxpcHNlX3kgPSBn ZXRfYml0cyhnYiwgMTYpOwpAQCAtNzgsOCArODIsNyBAQCBpbnQgZmZfcGFyc2VfaXR1X3RfdDM1 X3RvX2R5bmFtaWNfaGRyMTBfcGx1cyhBVkR5bmFtaWNIRFJQbHVzICpzLCBjb25zdCB1aW50OF90 CiAgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2IpIDwgMjgpCiAgICAgICAgIHJldHVybiBBVkVSUk9S X0lOVkFMSUREQVRBOwogCi0gICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfbWF4aW11bV9s dW1pbmFuY2UgPQotICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHNfbG9uZyhnYiwgMjcpLCBs dW1pbmFuY2VfZGVufTsKKyAgICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9tYXhpbXVtX2x1 bWluYW5jZSA9IChBVlJhdGlvbmFsKSB7IGdldF9iaXRzX2xvbmcoZ2IsIDI3KSwgbHVtaW5hbmNl X2RlbiB9OwogICAgIHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWlu YW5jZV9mbGFnID0gZ2V0X2JpdHMxKGdiKTsKIAogICAgIGlmIChzLT50YXJnZXRlZF9zeXN0ZW1f ZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZykgewpAQCAtOTksMjIgKzEwMiwxOSBA QCBpbnQgZmZfcGFyc2VfaXR1X3RfdDM1X3RvX2R5bmFtaWNfaGRyMTBfcGx1cyhBVkR5bmFtaWNI RFJQbHVzICpzLCBjb25zdCB1aW50OF90CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBy b3dzOyBpKyspIHsKICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY29sczsgaisrKSB7 Ci0gICAgICAgICAgICAgICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtf bHVtaW5hbmNlW2ldW2pdID0KLSAgICAgICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9i aXRzKGdiLCA0KSwgcGVha19sdW1pbmFuY2VfZGVufTsKKyAgICAgICAgICAgICAgICBzLT50YXJn ZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VbaV1bal0gPSAoQVZSYXRp b25hbCkgeyBnZXRfYml0cyhnYiwgNCksIHBlYWtfbHVtaW5hbmNlX2RlbiB9OwogICAgICAgICAg ICAgfQogICAgICAgICB9CiAgICAgfQogICAgIGZvciAoaW50IHcgPSAwOyB3IDwgcy0+bnVtX3dp bmRvd3M7IHcrKykgewotICAgICAgICBBVkhEUlBsdXNDb2xvclRyYW5zZm9ybVBhcmFtcyAqcGFy YW1zID0gJnMtPnBhcmFtc1t3XTsKKyAgICAgICAgQVZIRFJQbHVzQ29sb3JUcmFuc2Zvcm1QYXJh bXMqIHBhcmFtcyA9ICZzLT5wYXJhbXNbd107CiAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdi KSA8ICgzICogMTcgKyAxNyArIDQpKQogICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJ RERBVEE7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspIHsKLSAgICAgICAg ICAgIHBhcmFtcy0+bWF4c2NsW2ldID0KLSAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0 X2JpdHMoZ2IsIDE3KSwgcmdiX2Rlbn07CisgICAgICAgICAgICBwYXJhbXMtPm1heHNjbFtpXSA9 IChBVlJhdGlvbmFsKSB7IGdldF9iaXRzKGdiLCAxNyksIHJnYl9kZW4gfTsKICAgICAgICAgfQot ICAgICAgICBwYXJhbXMtPmF2ZXJhZ2VfbWF4cmdiID0KLSAgICAgICAgICAgIChBVlJhdGlvbmFs KXtnZXRfYml0cyhnYiwgMTcpLCByZ2JfZGVufTsKKyAgICAgICAgcGFyYW1zLT5hdmVyYWdlX21h eHJnYiA9IChBVlJhdGlvbmFsKSB7IGdldF9iaXRzKGdiLCAxNyksIHJnYl9kZW4gfTsKICAgICAg ICAgcGFyYW1zLT5udW1fZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlcyA9IGdldF9iaXRz KGdiLCA0KTsKIAogICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPApAQCAtMTIzLDE0ICsx MjMsMTMgQEAgaW50IGZmX3BhcnNlX2l0dV90X3QzNV90b19keW5hbWljX2hkcjEwX3BsdXMoQVZE eW5hbWljSERSUGx1cyAqcywgY29uc3QgdWludDhfdAogCiAgICAgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgcGFyYW1zLT5udW1fZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlczsgaSsrKSB7 CiAgICAgICAgICAgICBwYXJhbXMtPmRpc3RyaWJ1dGlvbl9tYXhyZ2JbaV0ucGVyY2VudGFnZSA9 IGdldF9iaXRzKGdiLCA3KTsKLSAgICAgICAgICAgIHBhcmFtcy0+ZGlzdHJpYnV0aW9uX21heHJn YltpXS5wZXJjZW50aWxlID0KLSAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMo Z2IsIDE3KSwgcmdiX2Rlbn07CisgICAgICAgICAgICBwYXJhbXMtPmRpc3RyaWJ1dGlvbl9tYXhy Z2JbaV0ucGVyY2VudGlsZSA9IChBVlJhdGlvbmFsKSB7IGdldF9iaXRzKGdiLCAxNyksIHJnYl9k ZW4gfTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDEwKQog ICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CiAKLSAgICAgICAgcGFyYW1z LT5mcmFjdGlvbl9icmlnaHRfcGl4ZWxzID0gKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAxMCks IGZyYWN0aW9uX3BpeGVsX2Rlbn07CisgICAgICAgIHBhcmFtcy0+ZnJhY3Rpb25fYnJpZ2h0X3Bp eGVscyA9IChBVlJhdGlvbmFsKSB7IGdldF9iaXRzKGdiLCAxMCksIGZyYWN0aW9uX3BpeGVsX2Rl biB9OwogICAgIH0KICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxKQogICAgICAgICByZXR1 cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKQEAgLTE1MiwxNCArMTUxLDEzIEBAIGludCBmZl9wYXJz ZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVzKEFWRHluYW1pY0hEUlBsdXMgKnMsIGNv bnN0IHVpbnQ4X3QKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykgewog ICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHsKLSAgICAgICAgICAg ICAgICBzLT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VbaV1bal0gPQot ICAgICAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDQpLCBwZWFrX2x1 bWluYW5jZV9kZW59OworICAgICAgICAgICAgICAgIHMtPm1hc3RlcmluZ19kaXNwbGF5X2FjdHVh bF9wZWFrX2x1bWluYW5jZVtpXVtqXSA9IChBVlJhdGlvbmFsKSB7IGdldF9iaXRzKGdiLCA0KSwg cGVha19sdW1pbmFuY2VfZGVuIH07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAK ICAgICBmb3IgKGludCB3ID0gMDsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKLSAgICAgICAg QVZIRFJQbHVzQ29sb3JUcmFuc2Zvcm1QYXJhbXMgKnBhcmFtcyA9ICZzLT5wYXJhbXNbd107Cisg ICAgICAgIEFWSERSUGx1c0NvbG9yVHJhbnNmb3JtUGFyYW1zKiBwYXJhbXMgPSAmcy0+cGFyYW1z W3ddOwogICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAxKQogICAgICAgICAgICAgcmV0 dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CiAKQEAgLTE2OCwxOCArMTY2LDE1IEBAIGludCBmZl9w YXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVzKEFWRHluYW1pY0hEUlBsdXMgKnMs IGNvbnN0IHVpbnQ4X3QKICAgICAgICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDI4KQog ICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwogCi0gICAgICAgICAg ICBwYXJhbXMtPmtuZWVfcG9pbnRfeCA9Ci0gICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dl dF9iaXRzKGdiLCAxMiksIGtuZWVfcG9pbnRfZGVufTsKLSAgICAgICAgICAgIHBhcmFtcy0+a25l ZV9wb2ludF95ID0KLSAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEy KSwga25lZV9wb2ludF9kZW59OworICAgICAgICAgICAgcGFyYW1zLT5rbmVlX3BvaW50X3ggPSAo QVZSYXRpb25hbCkgeyBnZXRfYml0cyhnYiwgMTIpLCBrbmVlX3BvaW50X2RlbiB9OworICAgICAg ICAgICAgcGFyYW1zLT5rbmVlX3BvaW50X3kgPSAoQVZSYXRpb25hbCkgeyBnZXRfYml0cyhnYiwg MTIpLCBrbmVlX3BvaW50X2RlbiB9OwogICAgICAgICAgICAgcGFyYW1zLT5udW1fYmV6aWVyX2N1 cnZlX2FuY2hvcnMgPSBnZXRfYml0cyhnYiwgNCk7CiAKICAgICAgICAgICAgIGlmIChnZXRfYml0 c19sZWZ0KGdiKSA8IChwYXJhbXMtPm51bV9iZXppZXJfY3VydmVfYW5jaG9ycyAqIDEwKSkKICAg ICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKIAogICAgICAgICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbXMtPm51bV9iZXppZXJfY3VydmVfYW5jaG9yczsgaSsr KSB7Ci0gICAgICAgICAgICAgICAgcGFyYW1zLT5iZXppZXJfY3VydmVfYW5jaG9yc1tpXSA9Ci0g ICAgICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTApLCBiZXppZXJf YW5jaG9yX2Rlbn07CisgICAgICAgICAgICAgICAgcGFyYW1zLT5iZXppZXJfY3VydmVfYW5jaG9y c1tpXSA9IChBVlJhdGlvbmFsKSB7IGdldF9iaXRzKGdiLCAxMCksIGJlemllcl9hbmNob3JfZGVu IH07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMTk2LDMgKzE5MSwyMDkgQEAgaW50 IGZmX3BhcnNlX2l0dV90X3QzNV90b19keW5hbWljX2hkcjEwX3BsdXMoQVZEeW5hbWljSERSUGx1 cyAqcywgY29uc3QgdWludDhfdAogCiAgICAgcmV0dXJuIDA7CiB9CisKK2ludCBmZl9wYXJzZV9m dWxsX2l0dV90X3QzNV90b19keW5hbWljX2hkcjEwX3BsdXMoQVZEeW5hbWljSERSUGx1cyogcywg Y29uc3QgdWludDhfdCogZGF0YSwKKwkJCQkJICAgICBpbnQgc2l6ZSkKK3sKKyAgICB1aW50OF90 IGNvdW50cnlfY29kZTsKKyAgICB1aW50MTZfdCBwcm92aWRlcl9jb2RlOworICAgIHVpbnQxNl90 IHByb3ZpZGVyX29yaWVudGVkX2NvZGU7CisgICAgdWludDhfdCBhcHBsaWNhdGlvbl9pZGVudGlm aWVyOworICAgIEdldEJpdENvbnRleHQgZ2JjLCAqZ2IgPSAmZ2JjOworICAgIGludCByZXQsIG9m ZnNldDsKKworICAgIGlmICghcykKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKwor ICAgIGlmIChzaXplIDwgNykKKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisK KyAgICByZXQgPSBpbml0X2dldF9iaXRzOChnYiwgZGF0YSwgc2l6ZSk7CisgICAgaWYgKHJldCA8 IDApCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICBjb3VudHJ5X2NvZGUgPSBnZXRfYml0cyhn YiwgOCk7CisgICAgcHJvdmlkZXJfY29kZSA9IGdldF9iaXRzKGdiLCAxNik7CisKKyAgICBpZiAo Y291bnRyeV9jb2RlICE9IHVzYV9jb3VudHJ5X2NvZGUgfHwKKyAgICAgICAgcHJvdmlkZXJfY29k ZSAhPSBzbXB0ZV9wcm92aWRlcl9jb2RlKQorICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElE REFUQTsKKworICAgIC8vIEEvMzQxIEFtZW5kbWVudCDigJMgMjA5NC00MAorICAgIHByb3ZpZGVy X29yaWVudGVkX2NvZGUgPSBnZXRfYml0cyhnYiwgMTYpOworICAgIGFwcGxpY2F0aW9uX2lkZW50 aWZpZXIgPSBnZXRfYml0cyhnYiwgOCk7CisgICAgaWYgKHByb3ZpZGVyX29yaWVudGVkX2NvZGUg IT0gc21wdGUyMDk0XzQwX3Byb3ZpZGVyX29yaWVudGVkX2NvZGUgfHwKKyAgICAgICAgYXBwbGlj YXRpb25faWRlbnRpZmllciAhPSBzbXB0ZTIwOTRfNDBfYXBwbGljYXRpb25faWRlbnRpZmllcikK KyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisKKyAgICBvZmZzZXQgPSBnZXRf Yml0c19jb3VudChnYikgLyA4OworCisgICAgcmV0dXJuIGZmX3BhcnNlX2l0dV90X3QzNV90b19k eW5hbWljX2hkcjEwX3BsdXMocywgZ2ItPmJ1ZmZlciArIG9mZnNldCwgc2l6ZSAtIG9mZnNldCk7 Cit9CisKK2ludCBmZl9pdHVfdF90MzVfYnVmZmVyX3NpemUoY29uc3QgQVZEeW5hbWljSERSUGx1 cyogcykKK3sKKyAgICBpbnQgYml0X2NvdW50ID0gMDsKKyAgICBpbnQgdywgc2l6ZTsKKworICAg IGlmICghcykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyA3IGJ5dGVzIGZvciBjb3VudHJ5 IGNvZGUsIHByb3ZpZGVyIGNvZGUsIGFuZCB1c2VyIGlkZW50aWZpZXIuCisgICAgYml0X2NvdW50 ICs9IDU2OworCisgICAgaWYgKHMtPm51bV93aW5kb3dzIDwgMSB8fCBzLT5udW1fd2luZG93cyA+ IDMpCisgICAgICAgIHJldHVybiAwOworICAgIC8vIENvdW50IGJpdHMgZm9yIHdpbmRvdyBwYXJh bXMuCisgICAgYml0X2NvdW50ICs9IDIgKyAoKDE5ICogOCArIDEpICogKHMtPm51bV93aW5kb3dz IC0gMSkpOworCisgICAgYml0X2NvdW50ICs9IDI4OworICAgIGlmIChzLT50YXJnZXRlZF9zeXN0 ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZykgeworICAgICAgICBpbnQgcm93 cywgY29sczsKKyAgICAgICAgcm93cyA9IHMtPm51bV9yb3dzX3RhcmdldGVkX3N5c3RlbV9kaXNw bGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZTsKKyAgICAgICAgY29scyA9IHMtPm51bV9jb2xzX3Rh cmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZTsKKyAgICAgICAgaWYg KCgocm93cyA8IDIpIHx8IChyb3dzID4gMjUpKSB8fCAoKGNvbHMgPCAyKSB8fCAoY29scyA+IDI1 KSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBiaXRfY291bnQgKz0gKDEwICsg cm93cyAqIGNvbHMgKiA0KTsKKyAgICB9CisgICAgZm9yICh3ID0gMDsgdyA8IHMtPm51bV93aW5k b3dzOyB3KyspIHsKKyAgICAgICAgYml0X2NvdW50ICs9ICgzICogMTcgKyAxNyArIDQgKyAxMCkg KyAocy0+cGFyYW1zW3ddLm51bV9kaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGVzICogMjQp OworICAgIH0KKyAgICBiaXRfY291bnQrKzsKKworICAgIGlmIChzLT5tYXN0ZXJpbmdfZGlzcGxh eV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZykgeworICAgICAgICBpbnQgcm93cywgY29sczsK KyAgICAgICAgcm93cyA9IHMtPm51bV9yb3dzX21hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFr X2x1bWluYW5jZTsKKyAgICAgICAgY29scyA9IHMtPm51bV9jb2xzX21hc3RlcmluZ19kaXNwbGF5 X2FjdHVhbF9wZWFrX2x1bWluYW5jZTsKKyAgICAgICAgaWYgKCgocm93cyA8IDIpIHx8IChyb3dz ID4gMjUpKSB8fCAoKGNvbHMgPCAyKSB8fCAoY29scyA+IDI1KSkpCisgICAgICAgICAgICByZXR1 cm4gMDsKKworICAgICAgICBiaXRfY291bnQgKz0gKDEwICsgcm93cyAqIGNvbHMgKiA0KTsKKyAg ICB9CisKKyAgICBmb3IgKHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykgeworICAgICAg ICBiaXRfY291bnQrKzsKKyAgICAgICAgaWYgKHMtPnBhcmFtc1t3XS50b25lX21hcHBpbmdfZmxh ZykKKyAgICAgICAgICAgIGJpdF9jb3VudCArPSAoMjggKyBzLT5wYXJhbXNbd10ubnVtX2Jlemll cl9jdXJ2ZV9hbmNob3JzICogMTApOworCisgICAgICAgIGJpdF9jb3VudCsrOworICAgICAgICBp ZiAocy0+cGFyYW1zW3ddLmNvbG9yX3NhdHVyYXRpb25fbWFwcGluZ19mbGFnKQorICAgICAgICAg ICAgYml0X2NvdW50ICs9IDY7CisgICAgfQorICAgIHNpemUgPSBiaXRfY291bnQgLyA4OworICAg IGlmIChiaXRfY291bnQgJSA4ICE9IDApCisgICAgICAgIHNpemUrKzsKKyAgICByZXR1cm4gc2l6 ZTsKK30KKworaW50IGZmX3dyaXRlX2R5bmFtaWNfaGRyMTBfcGx1c190b19mdWxsX2l0dV90X3Qz NShjb25zdCBBVkR5bmFtaWNIRFJQbHVzKiBzLCB1aW50OF90KiogZGF0YSwgc2l6ZV90KiBzaXpl KQoreworICAgIGludCB3LCBpLCBqOworICAgIFB1dEJpdENvbnRleHQgcGJjLCAqcGIgPSAmcGJj OworCisgICAgaWYgKCFzIHx8ICFzaXplKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwp OworCisgICAgKnNpemUgPSBmZl9pdHVfdF90MzVfYnVmZmVyX3NpemUocyk7CisgICAgaWYgKCpz aXplIDw9IDApCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CisgICAgKmRhdGEgPSBh dl9tYWxsb2N6KCpzaXplKTsKKyAgICBpbml0X3B1dF9iaXRzKHBiLCAqZGF0YSwgKnNpemUpOwor ICAgIGlmIChwdXRfYml0c19sZWZ0KHBiKSA8ICpzaXplKSB7CisgICAgICAgIGF2X2ZyZWVwKGRh dGEpOworICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgIH0KKyAgICBwdXRfYml0 cyhwYiwgOCwgdXNhX2NvdW50cnlfY29kZSk7CisKKyAgICBwdXRfYml0cyhwYiwgMTYsIHNtcHRl X3Byb3ZpZGVyX2NvZGUpOworICAgIHB1dF9iaXRzKHBiLCAxNiwgc21wdGUyMDk0XzQwX3Byb3Zp ZGVyX29yaWVudGVkX2NvZGUpOworICAgIHB1dF9iaXRzKHBiLCA4LCBzbXB0ZTIwOTRfNDBfYXBw bGljYXRpb25faWRlbnRpZmllcik7CisgICAgcHV0X2JpdHMocGIsIDgsIHMtPmFwcGxpY2F0aW9u X3ZlcnNpb24pOworCisgICAgcHV0X2JpdHMocGIsIDIsIHMtPm51bV93aW5kb3dzKTsKKworICAg IGZvciAodyA9IDE7IHcgPCBzLT5udW1fd2luZG93czsgdysrKSB7CisgICAgICAgIHB1dF9iaXRz KHBiLCAxNiwgcy0+cGFyYW1zW3ddLndpbmRvd191cHBlcl9sZWZ0X2Nvcm5lcl94Lm51bSAvIHMt PnBhcmFtc1t3XS53aW5kb3dfdXBwZXJfbGVmdF9jb3JuZXJfeC5kZW4pOworICAgICAgICBwdXRf Yml0cyhwYiwgMTYsIHMtPnBhcmFtc1t3XS53aW5kb3dfdXBwZXJfbGVmdF9jb3JuZXJfeS5udW0g LyBzLT5wYXJhbXNbd10ud2luZG93X3VwcGVyX2xlZnRfY29ybmVyX3kuZGVuKTsKKyAgICAgICAg cHV0X2JpdHMocGIsIDE2LCBzLT5wYXJhbXNbd10ud2luZG93X2xvd2VyX3JpZ2h0X2Nvcm5lcl94 Lm51bSAvIHMtPnBhcmFtc1t3XS53aW5kb3dfbG93ZXJfcmlnaHRfY29ybmVyX3guZGVuKTsKKyAg ICAgICAgcHV0X2JpdHMocGIsIDE2LCBzLT5wYXJhbXNbd10ud2luZG93X2xvd2VyX3JpZ2h0X2Nv cm5lcl95Lm51bSAvIHMtPnBhcmFtc1t3XS53aW5kb3dfbG93ZXJfcmlnaHRfY29ybmVyX3kuZGVu KTsKKyAgICAgICAgcHV0X2JpdHMocGIsIDE2LCBzLT5wYXJhbXNbd10uY2VudGVyX29mX2VsbGlw c2VfeCk7CisgICAgICAgIHB1dF9iaXRzKHBiLCAxNiwgcy0+cGFyYW1zW3ddLmNlbnRlcl9vZl9l bGxpcHNlX3kpOworICAgICAgICBwdXRfYml0cyhwYiwgOCwgcy0+cGFyYW1zW3ddLnJvdGF0aW9u X2FuZ2xlKTsKKyAgICAgICAgcHV0X2JpdHMocGIsIDE2LCBzLT5wYXJhbXNbd10uc2VtaW1ham9y X2F4aXNfaW50ZXJuYWxfZWxsaXBzZSk7CisgICAgICAgIHB1dF9iaXRzKHBiLCAxNiwgcy0+cGFy YW1zW3ddLnNlbWltYWpvcl9heGlzX2V4dGVybmFsX2VsbGlwc2UpOworICAgICAgICBwdXRfYml0 cyhwYiwgMTYsIHMtPnBhcmFtc1t3XS5zZW1pbWlub3JfYXhpc19leHRlcm5hbF9lbGxpcHNlKTsK KyAgICAgICAgcHV0X2JpdHMocGIsIDEsIHMtPnBhcmFtc1t3XS5vdmVybGFwX3Byb2Nlc3Nfb3B0 aW9uKTsKKyAgICB9CisgICAgcHV0X2JpdHMocGIsIDI3LAorICAgICAgICAgICAgIHMtPnRhcmdl dGVkX3N5c3RlbV9kaXNwbGF5X21heGltdW1fbHVtaW5hbmNlLm51bSAqIGx1bWluYW5jZV9kZW4g LyBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9tYXhpbXVtX2x1bWluYW5jZS5kZW4pOworICAg IHB1dF9iaXRzKHBiLCAxLCBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19s dW1pbmFuY2VfZmxhZyk7CisgICAgaWYgKHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVh bF9wZWFrX2x1bWluYW5jZV9mbGFnKSB7CisgICAgICAgIGludCByb3dzLCBjb2xzOworICAgICAg ICByb3dzID0gcy0+bnVtX3Jvd3NfdGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtf bHVtaW5hbmNlOworICAgICAgICBjb2xzID0gcy0+bnVtX2NvbHNfdGFyZ2V0ZWRfc3lzdGVtX2Rp c3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlOworICAgICAgICBwdXRfYml0cyhwYiwgNSwgcm93 cyk7CisgICAgICAgIHB1dF9iaXRzKHBiLCA1LCBjb2xzKTsKKyAgICAgICAgZm9yIChpID0gMDsg aSA8IHJvd3M7IGkrKykgeworICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvbHM7IGorKykg eworICAgICAgICAgICAgICAgIHB1dF9iaXRzKAorICAgICAgICAgICAgICAgICAgICBwYiwgNCwK KyAgICAgICAgICAgICAgICAgICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3Bl YWtfbHVtaW5hbmNlW2ldW2pdLm51bSAqIHBlYWtfbHVtaW5hbmNlX2RlbiAvIHMtPnRhcmdldGVk X3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZVtpXVtqXS5kZW4pOworICAgICAg ICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGZvciAodyA9IDA7IHcgPCBzLT5udW1fd2lu ZG93czsgdysrKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCAzOyBpKyspIHsKKyAgICAgICAg ICAgIHB1dF9iaXRzKHBiLCAxNywKKyAgICAgICAgICAgICAgICAgICAgIHMtPnBhcmFtc1t3XS5t YXhzY2xbaV0ubnVtICogcmdiX2RlbiAvIHMtPnBhcmFtc1t3XS5tYXhzY2xbaV0uZGVuKTsKKyAg ICAgICAgfQorICAgICAgICBwdXRfYml0cyhwYiwgMTcsCisgICAgICAgICAgICAgICAgIHMtPnBh cmFtc1t3XS5hdmVyYWdlX21heHJnYi5udW0gKiByZ2JfZGVuIC8gcy0+cGFyYW1zW3ddLmF2ZXJh Z2VfbWF4cmdiLmRlbik7CisgICAgICAgIHB1dF9iaXRzKHBiLCA0LCBzLT5wYXJhbXNbd10ubnVt X2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGlsZXMpOworCisgICAgICAgIGZvciAoaSA9IDA7 IGkgPCBzLT5wYXJhbXNbd10ubnVtX2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGlsZXM7IGkr KykgeworICAgICAgICAgICAgcHV0X2JpdHMocGIsIDcsIHMtPnBhcmFtc1t3XS5kaXN0cmlidXRp b25fbWF4cmdiW2ldLnBlcmNlbnRhZ2UpOworICAgICAgICAgICAgcHV0X2JpdHMocGIsIDE3LAor ICAgICAgICAgICAgICAgICAgICAgcy0+cGFyYW1zW3ddLmRpc3RyaWJ1dGlvbl9tYXhyZ2JbaV0u cGVyY2VudGlsZS5udW0gKiByZ2JfZGVuIC8gcy0+cGFyYW1zW3ddLmRpc3RyaWJ1dGlvbl9tYXhy Z2JbaV0ucGVyY2VudGlsZS5kZW4pOworICAgICAgICB9CisgICAgICAgIHB1dF9iaXRzKHBiLCAx MCwKKyAgICAgICAgICAgICAgICAgcy0+cGFyYW1zW3ddLmZyYWN0aW9uX2JyaWdodF9waXhlbHMu bnVtICogZnJhY3Rpb25fcGl4ZWxfZGVuIC8gcy0+cGFyYW1zW3ddLmZyYWN0aW9uX2JyaWdodF9w aXhlbHMuZGVuKTsKKyAgICB9CisgICAgcHV0X2JpdHMocGIsIDEsIHMtPm1hc3RlcmluZ19kaXNw bGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnKTsKKyAgICBpZiAocy0+bWFzdGVyaW5nX2Rp c3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlX2ZsYWcpIHsKKyAgICAgICAgaW50IHJvd3MsIGNv bHM7CisgICAgICAgIHJvd3MgPSBzLT5udW1fcm93c19tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxf cGVha19sdW1pbmFuY2U7CisgICAgICAgIGNvbHMgPSBzLT5udW1fY29sc19tYXN0ZXJpbmdfZGlz cGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2U7CisgICAgICAgIHB1dF9iaXRzKHBiLCA1LCByb3dz KTsKKyAgICAgICAgcHV0X2JpdHMocGIsIDUsIGNvbHMpOworICAgICAgICBmb3IgKGkgPSAwOyBp IDwgcm93czsgaSsrKSB7CisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgY29sczsgaisrKSB7 CisgICAgICAgICAgICAgICAgcHV0X2JpdHMoCisgICAgICAgICAgICAgICAgICAgIHBiLCA0LAor ICAgICAgICAgICAgICAgICAgICBzLT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1p bmFuY2VbaV1bal0ubnVtICogcGVha19sdW1pbmFuY2VfZGVuIC8gcy0+bWFzdGVyaW5nX2Rpc3Bs YXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlW2ldW2pdLmRlbik7CisgICAgICAgICAgICB9CisgICAg ICAgIH0KKyAgICB9CisKKyAgICBmb3IgKHcgPSAwOyB3IDwgcy0+bnVtX3dpbmRvd3M7IHcrKykg eworICAgICAgICBwdXRfYml0cyhwYiwgMSwgcy0+cGFyYW1zW3ddLnRvbmVfbWFwcGluZ19mbGFn KTsKKyAgICAgICAgaWYgKHMtPnBhcmFtc1t3XS50b25lX21hcHBpbmdfZmxhZykgeworICAgICAg ICAgICAgcHV0X2JpdHMocGIsIDEyLAorICAgICAgICAgICAgICAgICAgICAgcy0+cGFyYW1zW3dd LmtuZWVfcG9pbnRfeC5udW0gKiBrbmVlX3BvaW50X2RlbiAvIHMtPnBhcmFtc1t3XS5rbmVlX3Bv aW50X3guZGVuKTsKKyAgICAgICAgICAgIHB1dF9iaXRzKHBiLCAxMiwKKyAgICAgICAgICAgICAg ICAgICAgIHMtPnBhcmFtc1t3XS5rbmVlX3BvaW50X3kubnVtICoga25lZV9wb2ludF9kZW4gLyBz LT5wYXJhbXNbd10ua25lZV9wb2ludF95LmRlbik7CisgICAgICAgICAgICBwdXRfYml0cyhwYiwg NCwgcy0+cGFyYW1zW3ddLm51bV9iZXppZXJfY3VydmVfYW5jaG9ycyk7CisgICAgICAgICAgICBm b3IgKGkgPSAwOyBpIDwgcy0+cGFyYW1zW3ddLm51bV9iZXppZXJfY3VydmVfYW5jaG9yczsgaSsr KSB7CisgICAgICAgICAgICAgICAgcHV0X2JpdHMocGIsIDEwLAorICAgICAgICAgICAgICAgICAg ICAgICAgIHMtPnBhcmFtc1t3XS5iZXppZXJfY3VydmVfYW5jaG9yc1tpXS5udW0gKiBiZXppZXJf YW5jaG9yX2RlbiAvIHMtPnBhcmFtc1t3XS5iZXppZXJfY3VydmVfYW5jaG9yc1tpXS5kZW4pOwor ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHB1dF9iaXRzKHBiLCAxLCBzLT5wYXJh bXNbd10uY29sb3Jfc2F0dXJhdGlvbl9tYXBwaW5nX2ZsYWcpOworICAgICAgICBpZiAocy0+cGFy YW1zW3ddLmNvbG9yX3NhdHVyYXRpb25fbWFwcGluZ19mbGFnKQorICAgICAgICAgICAgcHV0X2Jp dHMocGIsIDYsCisgICAgICAgICAgICAgICAgICAgICBzLT5wYXJhbXNbd10uY29sb3Jfc2F0dXJh dGlvbl93ZWlnaHQubnVtICogc2F0dXJhdGlvbl93ZWlnaHRfZGVuIC8gcy0+cGFyYW1zW3ddLmNv bG9yX3NhdHVyYXRpb25fd2VpZ2h0LmRlbik7CisgICAgfQorICAgIGZsdXNoX3B1dF9iaXRzKHBi KTsKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIx MF9wbHVzLmggYi9saWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5oCmluZGV4IGNkN2FjZjA0 MzIuLmRhZmU1NDhkMmQgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVz LmgKKysrIGIvbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuaApAQCAtMjksNyArMjksMzgg QEAKICAqCiAgKiBAcmV0dXJuIDAgaWYgc3VjY2VlZC4gT3RoZXJ3aXNlLCByZXR1cm5zIHRoZSBh cHByb3ByaWF0ZSBBVkVSUk9SLgogICovCi1pbnQgZmZfcGFyc2VfaXR1X3RfdDM1X3RvX2R5bmFt aWNfaGRyMTBfcGx1cyhBVkR5bmFtaWNIRFJQbHVzICpzLCBjb25zdCB1aW50OF90ICpkYXRhLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUpOwor aW50IGZmX3BhcnNlX2l0dV90X3QzNV90b19keW5hbWljX2hkcjEwX3BsdXMoQVZEeW5hbWljSERS UGx1cyogcywgY29uc3QgdWludDhfdCogZGF0YSwKKwkJCQkJICAgICBpbnQgc2l6ZSk7CisKKy8q KgorICogUGFyc2UgdGhlIHVzZXIgZGF0YSByZWdpc3RlcmVkIElUVS1UIFQuMzUgd2l0aCBoZWFk ZXIgdG8gQVZEeW5hbWljSERSUGx1cy4gQXQgZmlyc3QgY2hlY2sKKyAqIHRoZSBoZWFkZXIgaWYg dGhlIHByb3ZpZGVyIGNvZGUgaXMgU01QVEUtMjA5NC00MC4gVGhlbiB3aWxsIHBhcnNlIHRoZSBk YXRhIHRvIEFWRHluYW1pY0hEUlBsdXMuCisgKiBAcGFyYW0gcyBBIHBvaW50ZXIgY29udGFpbmlu ZyB0aGUgZGVjb2RlZCBBVkR5bmFtaWNIRFJQbHVzIHN0cnVjdHVyZS4KKyAqIEBwYXJhbSBkYXRh IFRoZSBieXRlIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJhdyBJVFUtVCBULjM1IGRhdGEgd2l0aCBo ZWFkZXIuCisgKiBAcGFyYW0gc2l6ZSBTaXplIG9mIHRoZSBkYXRhIGFycmF5IGluIGJ5dGVzLgor ICoKKyAqIEByZXR1cm4gMCBpZiBzdWNjZWVkLiBPdGhlcndpc2UsIHJldHVybnMgdGhlIGFwcHJv cHJpYXRlIEFWRVJST1IuCisgKi8KK2ludCBmZl9wYXJzZV9mdWxsX2l0dV90X3QzNV90b19keW5h bWljX2hkcjEwX3BsdXMoQVZEeW5hbWljSERSUGx1cyogcywgY29uc3QgdWludDhfdCogZGF0YSwK KwkJCQkJICAgICBpbnQgc2l6ZSk7CisKKy8qKgorICogR2V0IHRoZSBzaXplIG9mIGJ1ZmZlciBy ZXF1aXJlZCB0byBzYXZlIHRoZSBlbmNvZGVkIGJpdCBzdHJlYW0gb2YKKyAqIEFWRHluYW1pY0hE UlBsdXMgaW4gdGhlIGZvcm0gb2YgdGhlIHVzZXIgZGF0YSByZWdpc3RlcmVkIElUVS1UIFQuMzUu CisgKiBAcGFyYW0gcyBUaGUgQVZEeW5hbWljSERSUGx1cyBzdHJ1Y3R1cmUuCisgKgorICogQHJl dHVybiBUaGUgc2l6ZSBvZiBiaXQgc3RyZWFtIHJlcXVpcmVkIGZvciBlbmNvZGluZy4gMCBpZiB0 aGUgZGF0YSBpcyBpbnZhbGlkLgorICovCitpbnQgZmZfaXR1X3RfdDM1X2J1ZmZlcl9zaXplKGNv bnN0IEFWRHluYW1pY0hEUlBsdXMqIHMpOworCisvKioKKyAqIEVuY29kZSBhbmQgd3JpdGUgQVZE eW5hbWljSERSUGx1cyB0byB0aGUgdXNlciBkYXRhIHJlZ2lzdGVyZWQgSVRVLVQgVC4zIHdpdGgg aGVhZGVyIChjb250YWluaW5nIHRoZSBwcm92aWRlciBjb2RlKS4KKyAqIEBwYXJhbSBzIEEgcG9p bnRlciBjb250YWluaW5nIHRoZSBBVkR5bmFtaWNIRFJQbHVzIHN0cnVjdHVyZS4KKyAqIEBwYXJh bSBkYXRhIFRoZSBieXRlIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJhdyBJVFUtVCBULjM1IGRhdGEg d2l0aCBoZWFkZXIuCisgKiBAcGFyYW0gc2l6ZSBUaGUgc2l6ZSBvZiB0aGUgcmF3IElUVS1UIFQu MzUgZGF0YS4KKyAqCisgKiBAcmV0dXJuIDAgaWYgc3VjY2VlZC4gT3RoZXJ3aXNlLCByZXR1cm5z IHRoZSBhcHByb3ByaWF0ZSBBVkVSUk9SLgorICovCitpbnQgZmZfd3JpdGVfZHluYW1pY19oZHIx MF9wbHVzX3RvX2Z1bGxfaXR1X3RfdDM1KGNvbnN0IEFWRHluYW1pY0hEUlBsdXMqIHMsIHVpbnQ4 X3QqKiBkYXRhLCBzaXplX3QqIHNpemUpOwogCiAjZW5kaWYgLyogQVZDT0RFQ19EWU5BTUlDX0hE UjEwX1BMVVNfSCAqLwpkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvbWF0cm9za2EuaCBiL2xpYmF2 Zm9ybWF0L21hdHJvc2thLmgKaW5kZXggNDUwNzdlZDMzZi4uYzNjZjllZWY1MyAxMDA2NDQKLS0t IGEvbGliYXZmb3JtYXQvbWF0cm9za2EuaAorKysgYi9saWJhdmZvcm1hdC9tYXRyb3NrYS5oCkBA IC0zNTgsNiArMzU4LDExIEBAIHR5cGVkZWYgZW51bSB7CiAgIE1BVFJPU0tBX1ZJREVPX1BST0pF Q1RJT05fVFlQRV9NRVNIICAgICAgICAgICAgICAgPSAzLAogfSBNYXRyb3NrYVZpZGVvUHJvamVj dGlvblR5cGU7CiAKK3R5cGVkZWYgZW51bSB7CisgIE1BVFJPU0tBX0JMT0NLX0FERF9JRF9ERUZB VUxUICAgICAgICAgICAgICAgICAgICAgPSAwLAorICBNQVRST1NLQV9CTE9DS19BRERfSURfRFlO QU1JQ19IRFIxMF9QTFVTICAgICAgICAgID0gNCwKK30gTWF0cm9za2FCbG9ja0FkZElEOworCiAv KgogICogTWF0cm9za2EgQ29kZWMgSURzLCBzdHJpbmdzCiAgKi8KZGlmZiAtLWdpdCBhL2xpYmF2 Zm9ybWF0L21hdHJvc2thZGVjLmMgYi9saWJhdmZvcm1hdC9tYXRyb3NrYWRlYy5jCmluZGV4IDE2 YTNlOTM2MTEuLmJkNWJmMzRiODMgMTAwNjQ0Ci0tLSBhL2xpYmF2Zm9ybWF0L21hdHJvc2thZGVj LmMKKysrIGIvbGliYXZmb3JtYXQvbWF0cm9za2FkZWMuYwpAQCAtNTAsNiArNTAsNyBAQAogI2lu Y2x1ZGUgImxpYmF2dXRpbC9zcGhlcmljYWwuaCIKIAogI2luY2x1ZGUgImxpYmF2Y29kZWMvYnl0 ZXN0cmVhbS5oIgorI2luY2x1ZGUgImxpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmgiCiAj aW5jbHVkZSAibGliYXZjb2RlYy9mbGFjLmgiCiAjaW5jbHVkZSAibGliYXZjb2RlYy9tcGVnNGF1 ZGlvLmgiCiAjaW5jbHVkZSAibGliYXZjb2RlYy9wYWNrZXRfaW50ZXJuYWwuaCIKQEAgLTM2MzYs MTUgKzM2MzcsMjggQEAgc3RhdGljIGludCBtYXRyb3NrYV9wYXJzZV9mcmFtZShNYXRyb3NrYURl bXV4Q29udGV4dCAqbWF0cm9za2EsCiAgICAgcGt0LT5zdHJlYW1faW5kZXggPSBzdC0+aW5kZXg7 CiAKICAgICBpZiAoYWRkaXRpb25hbF9zaXplID4gMCkgewotICAgICAgICB1aW50OF90ICpzaWRl X2RhdGEgPSBhdl9wYWNrZXRfbmV3X3NpZGVfZGF0YShwa3QsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWX1BLVF9EQVRBX01BVFJPU0tBX0JM T0NLQURESVRJT05BTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYWRkaXRpb25hbF9zaXplICsgOCk7Ci0gICAgICAgIGlmICghc2lkZV9kYXRh KSB7Ci0gICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYocGt0KTsKLSAgICAgICAgICAgIHJldHVy biBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgIGlmIChhZGRpdGlvbmFsX2lkID09IE1BVFJPU0tB X0JMT0NLX0FERF9JRF9EWU5BTUlDX0hEUjEwX1BMVVMpIHsKKyAgICAgICAgICAgIEFWRHluYW1p Y0hEUlBsdXMgaGRyMTBfcGx1czsKKyAgICAgICAgICAgIGlmICghZmZfcGFyc2VfZnVsbF9pdHVf dF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVzKCZoZHIxMF9wbHVzLCBhZGRpdGlvbmFsLCBhZGRp dGlvbmFsX3NpemUpKSB7CisgICAgICAgICAgICAgICAgdWludDhfdCAqc2lkZV9kYXRhID0gYXZf cGFja2V0X25ld19zaWRlX2RhdGEocGt0LCBBVl9QS1RfREFUQV9EWU5BTUlDX0hEUjEwX1BMVVMs IHNpemVvZihoZHIxMF9wbHVzKSk7CisgICAgICAgICAgICAgICAgaWYgKCFzaWRlX2RhdGEpIHsK KyAgICAgICAgICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKHBrdCk7CisgICAgICAgICAgICAg ICAgICAgIGF2X2ZyZWUocGt0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1Io RU5PTUVNKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbWVtY3B5KHNpZGVf ZGF0YSwgKHVpbnQ4X3QqKSgmaGRyMTBfcGx1cyksIHNpemVvZihoZHIxMF9wbHVzKSk7CisgICAg ICAgICAgICAgICAgfQorCX0gZWxzZSB7CisJICAgIHVpbnQ4X3QgKnNpZGVfZGF0YSA9IGF2X3Bh Y2tldF9uZXdfc2lkZV9kYXRhKHBrdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEFWX1BLVF9EQVRBX01BVFJPU0tBX0JMT0NLQURESVRJ T05BTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFkZGl0aW9uYWxfc2l6ZSArIDgpOworICAgICAgICAgICAgaWYgKCFzaWRlX2RhdGEp IHsKKyAgICAgICAgICAgICAgICBhdl9wYWNrZXRfdW5yZWYocGt0KTsKKyAgICAgICAgICAgICAg ICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVZf V0I2NChzaWRlX2RhdGEsIGFkZGl0aW9uYWxfaWQpOworICAgICAgICAgICAgbWVtY3B5KHNpZGVf ZGF0YSArIDgsIGFkZGl0aW9uYWwsIGFkZGl0aW9uYWxfc2l6ZSk7CiAgICAgICAgIH0KLSAgICAg ICAgQVZfV0I2NChzaWRlX2RhdGEsIGFkZGl0aW9uYWxfaWQpOwotICAgICAgICBtZW1jcHkoc2lk ZV9kYXRhICsgOCwgYWRkaXRpb25hbCwgYWRkaXRpb25hbF9zaXplKTsKICAgICB9CiAKICAgICBp ZiAoZGlzY2FyZF9wYWRkaW5nKSB7CmRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9tYXRyb3NrYWVu Yy5jIGIvbGliYXZmb3JtYXQvbWF0cm9za2FlbmMuYwppbmRleCBlZDFhZDUwMzlkLi5lZTE2Yjc2 ZDc2IDEwMDY0NAotLS0gYS9saWJhdmZvcm1hdC9tYXRyb3NrYWVuYy5jCisrKyBiL2xpYmF2Zm9y bWF0L21hdHJvc2thZW5jLmMKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJsaWJhdnV0aWwv c3RlcmVvM2QuaCIKIAogI2luY2x1ZGUgImxpYmF2Y29kZWMvYXYxLmgiCisjaW5jbHVkZSAibGli YXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMuaCIKICNpbmNsdWRlICJsaWJhdmNvZGVjL3hpcGgu aCIKICNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWc0YXVkaW8uaCIKIApAQCAtMjQ5MCw3ICsyNDkx LDcgQEAgc3RhdGljIGludCBta3Zfd3JpdGVfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKIAog I2lmIENPTkZJR19NQVRST1NLQV9NVVhFUgogc3RhdGljIGludCBta3ZfcmVmb3JtYXRfaDI2NDUo TWF0cm9za2FNdXhDb250ZXh0ICpta3YsIEFWSU9Db250ZXh0ICpwYiwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IEFWUGFja2V0ICpwa3QsIGludCAqc2l6ZSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBVlBhY2tldCAqcGt0LCBpbnQgKnNpemUpCiB7 CiAgICAgaW50IHJldDsKICAgICBpZiAocGIpIHsKQEAgLTI1OTEsOCArMjU5MiwxMiBAQCBzdGF0 aWMgaW50IG1rdl93cml0ZV9ibG9jayh2b2lkICpsb2djdHgsIE1hdHJvc2thTXV4Q29udGV4dCAq bWt2LAogewogICAgIHVpbnQ4X3QgKnNpZGVfZGF0YTsKICAgICBzaXplX3Qgc2lkZV9kYXRhX3Np emU7Ci0gICAgdWludDY0X3QgYWRkaXRpb25hbF9pZDsKKyAgICB1aW50NjRfdCBhZGRpdGlvbmFs X2lkID0gMDsKKyAgICBpbnQ2NF90IGRpc2NhcmRfcGFkZGluZyA9IDA7CiAgICAgdW5zaWduZWQg dHJhY2tfbnVtYmVyID0gdHJhY2stPnRyYWNrX251bTsKKyAgICBpbnQgaGFzX2NvZGVjX3NwZWNp ZmljX2Jsb2NrbW9yZSA9IDA7CisgICAgdWludDhfdCAqaGRyMTBfcGx1c19pdHVfdF90MzU7Cisg ICAgc2l6ZV90IGhkcjEwX3BsdXNfaXR1X3RfdDM1X3NpemUgPSAwOwogICAgIEVCTUxfV1JJVEVS KDkpOwogCiAgICAgbWt2LT5jdXJfYmxvY2sudHJhY2sgID0gdHJhY2s7CkBAIC0yNjI3LDI0ICsy NjMyLDM4IEBAIHN0YXRpYyBpbnQgbWt2X3dyaXRlX2Jsb2NrKHZvaWQgKmxvZ2N0eCwgTWF0cm9z a2FNdXhDb250ZXh0ICpta3YsCiAgICAgICAgICAgICBlYm1sX3dyaXRlcl9hZGRfc2ludCgmd3Jp dGVyLCBNQVRST1NLQV9JRF9ESVNDQVJEUEFERElORywgZGlzY2FyZF9wYWRkaW5nKTsKICAgICAg ICAgfQogICAgIH0KKyAgICBzaWRlX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YShwa3Qs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZfUEtUX0RBVEFfRFlO QU1JQ19IRFIxMF9QTFVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZzaWRlX2RhdGFfc2l6ZSk7CisgICAgaWYgKHNpZGVfZGF0YSAmJiBzaWRlX2RhdGFfc2l6ZSA+ IDApCisgICAgICAgIGZmX3dyaXRlX2R5bmFtaWNfaGRyMTBfcGx1c190b19mdWxsX2l0dV90X3Qz NSgoQVZEeW5hbWljSERSUGx1cyopc2lkZV9kYXRhLCAmaGRyMTBfcGx1c19pdHVfdF90MzUsICZo ZHIxMF9wbHVzX2l0dV90X3QzNV9zaXplKTsKIAogICAgIHNpZGVfZGF0YSA9IGF2X3BhY2tldF9n ZXRfc2lkZV9kYXRhKHBrdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBBVl9QS1RfREFUQV9NQVRST1NLQV9CTE9DS0FERElUSU9OQUwsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJnNpZGVfZGF0YV9zaXplKTsKLSAgICBpZiAoc2lkZV9k YXRhICYmIHNpZGVfZGF0YV9zaXplID49IDggJiYKLSAgICAgICAgLy8gT25seSB0aGUgQ29kZWMt c3BlY2lmaWMgQmxvY2tNb3JlIChpZCA9PSAxKSBpcyBjdXJyZW50bHkgc3VwcG9ydGVkLgotICAg ICAgICAoYWRkaXRpb25hbF9pZCA9IEFWX1JCNjQoc2lkZV9kYXRhKSkgPT0gMSkgeworICAgIGhh c19jb2RlY19zcGVjaWZpY19ibG9ja21vcmUgPSBzaWRlX2RhdGEgJiYgc2lkZV9kYXRhX3NpemUg Pj0gOCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkaXRpb25hbF9p ZCA9IEFWX1JCNjQoc2lkZV9kYXRhKSkgPT0gMTsKKyAgICAvLyBUaGUgQ29kZWMtc3BlY2lmaWMg QmxvY2tNb3JlIChpZCA9PSAxKSBhbmQgSERSMTArIChpZCA9PSA0KSBhcmUgc3VwcG9ydGVkLgor ICAgIGlmIChoYXNfY29kZWNfc3BlY2lmaWNfYmxvY2ttb3JlIHx8IGhkcjEwX3BsdXNfaXR1X3Rf dDM1X3NpemUgPiAwKSB7CiAgICAgICAgIGVibWxfd3JpdGVyX29wZW5fbWFzdGVyKCZ3cml0ZXIs IE1BVFJPU0tBX0lEX0JMT0NLQURESVRJT05TKTsKLSAgICAgICAgZWJtbF93cml0ZXJfb3Blbl9t YXN0ZXIoJndyaXRlciwgTUFUUk9TS0FfSURfQkxPQ0tNT1JFKTsKLSAgICAgICAgLyogVW50aWwg ZGJjNTBmOGEgb3VyIGRlbXV4ZXIgdXNlZCBhIHdyb25nIGRlZmF1bHQgdmFsdWUKLSAgICAgICAg ICogb2YgQmxvY2tBZGRJRCwgc28gd2Ugd3JpdGUgaXQgdW5jb25kaXRpb25hbGx5LiAqLwotICAg ICAgICBlYm1sX3dyaXRlcl9hZGRfdWludCgmd3JpdGVyLCBNQVRST1NLQV9JRF9CTE9DS0FERElE LCBhZGRpdGlvbmFsX2lkKTsKLSAgICAgICAgZWJtbF93cml0ZXJfYWRkX2JpbiAoJndyaXRlciwg TUFUUk9TS0FfSURfQkxPQ0tBRERJVElPTkFMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaWRlX2RhdGEgKyA4LCBzaWRlX2RhdGFfc2l6ZSAtIDgpOwotICAgICAgICBlYm1sX3dyaXRl cl9jbG9zZV9tYXN0ZXIoJndyaXRlcik7CisJaWYgKGhhc19jb2RlY19zcGVjaWZpY19ibG9ja21v cmUpIHsKKyAgICAgICAgICAgIGVibWxfd3JpdGVyX29wZW5fbWFzdGVyKCZ3cml0ZXIsIE1BVFJP U0tBX0lEX0JMT0NLTU9SRSk7CisgICAgICAgICAgICAvKiBVbnRpbCBkYmM1MGY4YSBvdXIgZGVt dXhlciB1c2VkIGEgd3JvbmcgZGVmYXVsdCB2YWx1ZQorICAgICAgICAgICAgICogb2YgQmxvY2tB ZGRJRCwgc28gd2Ugd3JpdGUgaXQgdW5jb25kaXRpb25hbGx5LiAqLworICAgICAgICAgICAgZWJt bF93cml0ZXJfYWRkX3VpbnQoJndyaXRlciwgTUFUUk9TS0FfSURfQkxPQ0tBRERJRCwgYWRkaXRp b25hbF9pZCk7CisgICAgICAgICAgICBlYm1sX3dyaXRlcl9hZGRfYmluICgmd3JpdGVyLCBNQVRS T1NLQV9JRF9CTE9DS0FERElUSU9OQUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaWRlX2RhdGEgKyA4LCBzaWRlX2RhdGFfc2l6ZSAtIDgpOworICAgICAgICAgICAgZWJtbF93 cml0ZXJfY2xvc2VfbWFzdGVyKCZ3cml0ZXIpOworCX0KKwlpZiAoaGRyMTBfcGx1c19pdHVfdF90 MzVfc2l6ZSA+IDApIHsKKyAgICAgICAgICAgIGVibWxfd3JpdGVyX29wZW5fbWFzdGVyKCZ3cml0 ZXIsIE1BVFJPU0tBX0lEX0JMT0NLTU9SRSk7CisgICAgICAgICAgICBlYm1sX3dyaXRlcl9hZGRf dWludCgmd3JpdGVyLCBNQVRST1NLQV9JRF9CTE9DS0FERElELCBNQVRST1NLQV9CTE9DS19BRERf SURfRFlOQU1JQ19IRFIxMF9QTFVTKTsKKyAgICAgICAgICAgIGVibWxfd3JpdGVyX2FkZF9iaW4g KCZ3cml0ZXIsIE1BVFJPU0tBX0lEX0JMT0NLQURESVRJT05BTCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGhkcjEwX3BsdXNfaXR1X3RfdDM1LCBoZHIxMF9wbHVzX2l0dV90X3Qz NV9zaXplKTsKKyAgICAgICAgICAgIGVibWxfd3JpdGVyX2Nsb3NlX21hc3Rlcigmd3JpdGVyKTsK Kwl9CiAgICAgICAgIGVibWxfd3JpdGVyX2Nsb3NlX21hc3Rlcigmd3JpdGVyKTsKICAgICB9Ci0K ICAgICBpZiAoIWZvcmNlX2Jsb2NrZ3JvdXAgJiYgd3JpdGVyLm5iX2VsZW1lbnRzID09IDIpIHsK ICAgICAgICAgLyogTm90aGluZyBleGNlcHQgdGhlIEJsb2NrR3JvdXAgKyBCbG9jay4gQ2FuIHVz ZSBhIFNpbXBsZUJsb2NrLiAqLwogICAgICAgICB3cml0ZXIuZWxlbWVudHMrKzsgICAgLy8gU2tp cCB0aGUgQmxvY2tHcm91cC4KZGlmZiAtLWdpdCBhL3Rlc3RzL2ZhdGUvbWF0cm9za2EubWFrIGIv dGVzdHMvZmF0ZS9tYXRyb3NrYS5tYWsKaW5kZXggNjNlODFmMTIxYi4uMDY4ZjE3OGQ5YiAxMDA2 NDQKLS0tIGEvdGVzdHMvZmF0ZS9tYXRyb3NrYS5tYWsKKysrIGIvdGVzdHMvZmF0ZS9tYXRyb3Nr YS5tYWsKQEAgLTE0OCw2ICsxNDgsMTIgQEAgRkFURV9NQVRST1NLQV9GRk1QRUdfRkZQUk9CRS0k KGNhbGwgVFJBTlNDT0RFLCBQQ01fUzMyTEUgTVAyLCBNQVRST1NLQSwgICAgICBcCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSRVNBTVBMRV9GSUxURVIg ICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUENNX1MzMkJFX0VOQ09ERVIpICAgICAgICAgICAgXAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICs9IGZhdGUtbWF0cm9za2EtaDI2NC1yZW11eAorCisjIFRoZSBpbnB1dCBm aWxlIG9mIHRoZSBmb2xsb3dpbmcgdGVzdCBjb250YWlucyBIRFIxMCsgbWV0YWRhdGEgYW5kIHNv IHRoaXMKKyMgdGVzdCB0ZXN0cyBjb3JyZWN0IGVuY29kaW5nIGFuZCBkZWNvZGluZyBIRFIxMCsg Zm9yIFZQOS9NS1YuCitGQVRFX01BVFJPU0tBX0ZGUFJPQkUtJChjYWxsIEFMTFlFUywgTUFUUk9T S0FfREVNVVhFUikgKz0gZmF0ZS1tYXRyb3NrYS1oZHIxMC1wbHVzLW1ldGFkYXRhCitmYXRlLW1h dHJvc2thLWhkcjEwLXBsdXMtbWV0YWRhdGE6IENNRCA9IHJ1biBmZnByb2JlJChQUk9HU1NVRikk KEVYRVNVRikgLXNob3dfZnJhbWVzIC1zZWxlY3Rfc3RyZWFtcyB2IC12IDAgJChUQVJHRVRfU0FN UExFUykvbWt2L2hkcjEwX3BsdXNfdnA5X3NhbXBsZS5ta3YKKwogZmF0ZS1tYXRyb3NrYS1oMjY0 LXJlbXV4OiBDTUQgPSB0cmFuc2NvZGUgbXBlZ3RzICQoVEFSR0VUX1NBTVBMRVMpL2gyNjQvaDI2 NF9pbnRyYV9maXJzdC1zbWFsbC50cyBtYXRyb3NrYSAiLW1hcCAwOjAgLW1hcCAwIC1jOnYgY29w eSAtc2FyOjAgMzo0IC1ic2Y6djoxIGgyNjRfbWV0YWRhdGE9YXVkPXJlbW92ZTpkZWxldGVfZmls bGVyPTEgLWRpc3Bvc2l0aW9uOnYgK2hlYXJpbmdfaW1wYWlyZWQgLWFmIGFyZXNhbXBsZSAtYzph OjAgcGNtX3MzMmxlIC1jOmE6MSBwY21fczMyYmUgLWRpc3Bvc2l0aW9uOmE6MCBvcmlnaW5hbCAt bWV0YWRhdGE6czphOjAgdGl0bGU9c3dlZGlzaF9zaWxlbmNlIC1tZXRhZGF0YTpzOmE6MSB0aXRs ZT1ub3J3ZWdpYW5fc2lsZW5jZSAtZGlzcG9zaXRpb246YToxIGR1YiIgIi1tYXAgMDp2IiAiLXNo b3dfZW50cmllcyBzdHJlYW09aW5kZXgsY29kZWNfbmFtZTpzdHJlYW1fdGFncz10aXRsZSxsYW5n dWFnZSIKIAogIyBUZXN0cyB3cml0aW5nIEJsb2NrQWRkaXRpb25hbCBhbmQgQmxvY2tHcm91cHMg d2l0aCBSZWZlcmVuY2VCbG9jayBlbGVtZW50czsKZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZi9mYXRl L21hdHJvc2thLWhkcjEwLXBsdXMtbWV0YWRhdGEgYi90ZXN0cy9yZWYvZmF0ZS9tYXRyb3NrYS1o ZHIxMC1wbHVzLW1ldGFkYXRhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LjBmOWFkMzMxYWQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9yZWYvZmF0ZS9tYXRyb3NrYS1o ZHIxMC1wbHVzLW1ldGFkYXRhCkBAIC0wLDAgKzEsNzQgQEAKK1tGUkFNRV0KK21lZGlhX3R5cGU9 dmlkZW8KK3N0cmVhbV9pbmRleD0wCitrZXlfZnJhbWU9MQorcHRzPTAKK3B0c190aW1lPTAuMDAw MDAwCitwa3RfZHRzPTAKK3BrdF9kdHNfdGltZT0wLjAwMDAwMAorYmVzdF9lZmZvcnRfdGltZXN0 YW1wPTAKK2Jlc3RfZWZmb3J0X3RpbWVzdGFtcF90aW1lPTAuMDAwMDAwCitwa3RfZHVyYXRpb249 NDAKK3BrdF9kdXJhdGlvbl90aW1lPTAuMDQwMDAwCitkdXJhdGlvbj00MAorZHVyYXRpb25fdGlt ZT0wLjA0MDAwMAorcGt0X3Bvcz01NjEKK3BrdF9zaXplPTEzMzUwCit3aWR0aD0xMjgwCitoZWln aHQ9NzIwCitwaXhfZm10PXl1djQyMHAxMGxlCitzYW1wbGVfYXNwZWN0X3JhdGlvPTE6MQorcGlj dF90eXBlPUkKK2NvZGVkX3BpY3R1cmVfbnVtYmVyPTAKK2Rpc3BsYXlfcGljdHVyZV9udW1iZXI9 MAoraW50ZXJsYWNlZF9mcmFtZT0wCit0b3BfZmllbGRfZmlyc3Q9MAorcmVwZWF0X3BpY3Q9MAor Y29sb3JfcmFuZ2U9dHYKK2NvbG9yX3NwYWNlPXVua25vd24KK2NvbG9yX3ByaW1hcmllcz11bmtu b3duCitjb2xvcl90cmFuc2Zlcj11bmtub3duCitjaHJvbWFfbG9jYXRpb249dW5zcGVjaWZpZWQK K1tTSURFX0RBVEFdCitzaWRlX2RhdGFfdHlwZT1IRFIgRHluYW1pYyBNZXRhZGF0YSBTTVBURTIw OTQtNDAgKEhEUjEwKykKK2FwcGxpY2F0aW9uIHZlcnNpb249MQorbnVtX3dpbmRvd3M9MQordGFy Z2V0ZWRfc3lzdGVtX2Rpc3BsYXlfbWF4aW11bV9sdW1pbmFuY2U9NDAwLzEKK21heHNjbD0zMzQw LzEwMDAwMAorbWF4c2NsPTI4NzAvMTAwMDAwCittYXhzY2w9MjcyMC8xMDAwMDAKK2F2ZXJhZ2Vf bWF4cmdiPTUxMC8xMDAwMDAKK251bV9kaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGVzPTkK K2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGFnZT0xCitkaXN0cmlidXRpb25fbWF4cmdiX3Bl cmNlbnRpbGU9MzAvMTAwMDAwCitkaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRhZ2U9NQorZGlz dHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlPTI5NDAvMTAwMDAwCitkaXN0cmlidXRpb25fbWF4 cmdiX3BlcmNlbnRhZ2U9MTAKK2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGlsZT0yNTUvMTAw MDAwCitkaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRhZ2U9MjUKK2Rpc3RyaWJ1dGlvbl9tYXhy Z2JfcGVyY2VudGlsZT03MC8xMDAwMDAKK2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGFnZT01 MAorZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlPTEzNDAvMTAwMDAwCitkaXN0cmlidXRp b25fbWF4cmdiX3BlcmNlbnRhZ2U9NzUKK2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGlsZT0x NjAwLzEwMDAwMAorZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50YWdlPTkwCitkaXN0cmlidXRp b25fbWF4cmdiX3BlcmNlbnRpbGU9MTg1MC8xMDAwMDAKK2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVy Y2VudGFnZT05NQorZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlPTE5NTAvMTAwMDAwCitk aXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRhZ2U9OTkKK2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVy Y2VudGlsZT0yOTQwLzEwMDAwMAorZnJhY3Rpb25fYnJpZ2h0X3BpeGVscz0xLzEwMDAKK2tuZWVf cG9pbnRfeD0wLzQwOTUKK2tuZWVfcG9pbnRfeT0wLzQwOTUKK251bV9iZXppZXJfY3VydmVfYW5j aG9ycz05CitiZXppZXJfY3VydmVfYW5jaG9ycz0xMDIvMTAyMworYmV6aWVyX2N1cnZlX2FuY2hv cnM9MjA1LzEwMjMKK2Jlemllcl9jdXJ2ZV9hbmNob3JzPTMwNy8xMDIzCitiZXppZXJfY3VydmVf YW5jaG9ycz00MTAvMTAyMworYmV6aWVyX2N1cnZlX2FuY2hvcnM9NTEyLzEwMjMKK2Jlemllcl9j dXJ2ZV9hbmNob3JzPTYxNC8xMDIzCitiZXppZXJfY3VydmVfYW5jaG9ycz03MTcvMTAyMworYmV6 aWVyX2N1cnZlX2FuY2hvcnM9ODE5LzEwMjMKK2Jlemllcl9jdXJ2ZV9hbmNob3JzPTkyMi8xMDIz CitbL1NJREVfREFUQV0KK1svRlJBTUVdCi0tIAoyLjM3LjIuNzg5Lmc2MTgzMzc3MjI0LWdvb2cK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1k ZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcu b3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQg bGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRo IHN1YmplY3QgInVuc3Vic2NyaWJlIi4K