Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wD17j-002WTc-1t for pgsql-hackers@arkaria.postgresql.org; Wed, 15 Apr 2026 14:21:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wD17e-00HLNI-30 for pgsql-hackers@arkaria.postgresql.org; Wed, 15 Apr 2026 14:21:43 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wD12n-00GTMM-2Q for pgsql-hackers@lists.postgresql.org; Wed, 15 Apr 2026 14:16:42 +0000 Received: from mail-lf1-x133.google.com ([2a00:1450:4864:20::133]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wCxgv-00000001CEc-28N4 for pgsql-hackers@lists.postgresql.org; Wed, 15 Apr 2026 10:41:55 +0000 Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-5a40d02b58bso114207e87.3 for ; Wed, 15 Apr 2026 03:41:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776249711; cv=none; d=google.com; s=arc-20240605; b=ZHhXH4/LfPz69viHX0v8b8XaYgYjNFGygVKDa0pYgD0QhMMDO/LiH3parp7tliQIyQ yEAxjupe+xWYUBeDX1Ys/+W0oubhekUiwn/CBk4Xz6l5HKTbrpToaESXbqyMMhO8fa3r ZuJyGsDbnGCeP91yl8JAXfPmlQI2Z5dTMB0EN/VFOY3PTvcW+asqlWjPbrOt6+YOjOSz WcO++8vJ24snAQtWGQAWH7QqYtt077POi3H9CPnlwE75ST8xRJYi/j34HF4vxLKk+5p6 2WtCXRIo5oM8/un4UbFF/heYZ06lFUOdpuHBr6NqeVX9FWUPDVro5TBoOZJs3vMfXy0D CG2Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=WJpt4fLenOu5dfyLfqfq+qx/OAzM5TYX9/Fim3yta9E=; fh=v8PoCmJ3Y42oZCXu8DBEWaXsRcPnr6av15GALlMUVF4=; b=ASQH1UpxB6DL3ZASIrjnXTB3Qf4X0OlUmu0kAZE+n5f3K2vsN6h7y70NoSjz35m1bW DtC5aY5Qc2SviwHiIPe5IBJ60heGm7CPx/Yjz9mfZ+/GTikRSyplq7PHWxVZ1DA96zrU Sq4DFK1n4NqWHlbkZAarIqkuYHCxwYiwae5YI9/GwY76a1CJgWZuABNGWDwHhU/huTGr 3PYYWmYie9iIGkUXNKsrfFT/B6Ye8AbmchXN2y1XRsRbiL6yWpDuCrhPxpQvW87eCQxn 17rSZ70Dqz+tGipNVYKUsorxEHcqsmbKSTk4aVCLZ8WwlKY1J+pyfpT6RVP0bLfF596t EeJw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776249711; x=1776854511; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=WJpt4fLenOu5dfyLfqfq+qx/OAzM5TYX9/Fim3yta9E=; b=N2sn0lhLx5tao+sdMxngrJNgVV62oKeCd2tgkATggFcphiLOeU6xs3AQput3G67ul7 UDf2ne3sT7JofuYIqzJH3GS4HRp624gKyUIzBLL9nL9W29L7fVBJe8b1dp2jTsoGRi99 vdO/wvn5ihnqZ/Y0SPMOc+RLMudQscGDPs9sAhLKro1ZxO7AXsAzP/F4+0WKaqNuP7I6 +lCwAOA1/FGCCqmxo7fb+gZkzTJg8O3fYvvE+tMYXmXkn7WhUpkL0eW/Fma6ZSDtt5/1 9cO1052NGsEfMEC+hAkrn8vWUVK8xFrCxC6iiaXSsPYY122KY9BbOjcAIowxOOf8OmE1 IpdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776249711; x=1776854511; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=WJpt4fLenOu5dfyLfqfq+qx/OAzM5TYX9/Fim3yta9E=; b=SLLh5/OxBR9eLfHZyeU9Ek55bWlH0C+59VUQ9iNuSyds0flZZleJppOMRBHu+flrpg yHxz++oAHoBqzeYIA63pH4AY2c9TG/FtyVrw46kfHxA/E06CTZZ8j4cpjqXJ4BerN/0U u1PuQyUDbnp11Nvnuc49qR4WprvpnCZpI1WVSum43NEEIxyyZQU55xRJJHJUDFMDcv3n 8hAkZbCVils0EMGmzbP3iiZQFqiPP82nKckaXA0K0YIUaYySjv3ffCE8ZVvOpHAzqTf/ tRGcfmUfoNaC2JhRSUHmmgSAcVfXw+UOOX41RikJl+o85hjUxAldyPIHkfHn1C4X7x7V fH2w== X-Forwarded-Encrypted: i=1; AFNElJ8EJLuft4YUEJb/ggAL4MrCpcDR1y9PUXsbgLiJchvfDo1CT2bt1t/TvD/C1j3J/aSU1s9oRazcShGqxxT3@lists.postgresql.org X-Gm-Message-State: AOJu0YxQ04z1zNnvomDDJwQQpcbDcLsXZlC8ftyettpbUyMQel/5FrF+ SPZ7O3EVS06SfIDMnzaajCs/nUx9mAWZ///eMGsxpgPu/PU5/ValO86hc3mXyt/XlrO21ZAWS51 9vumpmUqVm7e3TBm9oWNQqzLezKDXIqM= X-Gm-Gg: AeBDieucX0wvUDe9tGyqRTbKINDZHLRbpuDdzeFt8oSmZ9EcvWeFQphElAL9ApgG+m5 EergUXmkQNDIUt8XIQMVyjlKgR8jhbcRBEYHZBF45z7OGLnh9acdJVXyTm66VQWB6XVMkWy6afE OmceC83SycC7IVK/KR4/T09wpweH7ST1HfqtRQ+jdqbhfQm9756ItrOgY5RBVFUEoghHnt2HQQr nbd7Q05mg3rGVM9L9M7PxKuR873LwvHP4F3PVtePgoVXzp+TAO0yJmV1dlNu+3OKPJxhz2Fn2C6 Zr34WBOP5zkZBmrCLjOcy1HRCSxkeOg= X-Received: by 2002:a05:6512:692:b0:5a3:d3ac:505e with SMTP id 2adb3069b0e04-5a3efb62ae8mr6820865e87.44.1776249711041; Wed, 15 Apr 2026 03:41:51 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Ajin Cherian Date: Wed, 15 Apr 2026 20:41:37 +1000 X-Gm-Features: AQROBzCaiS0e6VhG2aR2acplkIauSqriqb2Qtne3rlYzYzDDiI0v3DoGaeeGPAU Message-ID: Subject: Re: [PATCH] Support automatic sequence replication To: "Zhijie Hou (Fujitsu)" Cc: "Hayato Kuroda (Fujitsu)" , shveta malik , Amit Kapila , Ashutosh Sharma , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000000f5c91064f7d5d36" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000f5c91064f7d5d36 Content-Type: text/plain; charset="UTF-8" Rebasing patch to keep cfbot happy. regards, Ajin Cherian Fujitsu Australia --0000000000000f5c91064f7d5d36 Content-Type: application/octet-stream; name="v12-0001-Support-automatic-sequence-replication.patch" Content-Disposition: attachment; filename="v12-0001-Support-automatic-sequence-replication.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnzx7ayc0 RnJvbSAxYzgzMjA1NGI0YzhiYjIyODY3ODQ2NjdlZWRlYjI1YzNkMTgxMjNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBXZWQsIDE1IEFwciAyMDI2IDIwOjIyOjQzICsxMDAwClN1YmplY3Q6IFtQQVRDSCB2MTIgMS8z XSBTdXBwb3J0IGF1dG9tYXRpYyBzZXF1ZW5jZSByZXBsaWNhdGlvbi4KCkN1cnJlbnRseSwgc2Vx dWVuY2UgdmFsdWVzIGFyZSBzeW5jaHJvbml6ZWQgZnJvbSBwdWJsaXNoZXIgdG8gc3Vic2NyaWJl ciBvbmx5CndoZW4gdGhlIHVzZXIgbWFudWFsbHkgcnVucyBBTFRFUiBTVUJTQ1JJUFRJT04gLi4u IFJFRlJFU0ggUFVCTElDQVRJT04gKHdoaWNoCmFmZmVjdHMgb25seSBuZXdseSBzdWJzY3JpYmVk IHNlcXVlbmNlcykgb3IgUkVGUkVTSCBTRVFVRU5DRVMuIFRoZSBzZXF1ZW5jZSBzeW5jCndvcmtl ciBleGl0cyBpbW1lZGlhdGVseSBhZnRlciBjb21wbGV0aW5nIGVhY2ggc3luY2hyb25pemF0aW9u IHJvdW5kLgoKVGhlIHByaW1hcnkgdXNlIGNhc2UgZm9yIHNlcXVlbmNlIHJlcGxpY2F0aW9uIGlz IGR1cmluZyB1cGdyYWRlcywgd2hlcmUgaXQncwpyZWNvbW1lbmRlZCB0aGF0IHVzZXJzIGVuc3Vy ZSBzZXF1ZW5jZXMgYXJlIGluIHN5bmMgYnkgcnVubmluZyBSRUZSRVNIIFNFUVVFTkNFUwpiZWZv cmUgZmluaXNoaW5nIHRoZSB1cGdyYWRlLiBIb3dldmVyLCB0aGlzIGNvbW1hbmQgY2FuIGJlIHNs b3cgd2hlbgpzeW5jaHJvbml6aW5nIGEgbGFyZ2UgbnVtYmVyIG9mIHNlcXVlbmNlcywgcG90ZW50 aWFsbHkgaW5jcmVhc2luZyBkb3dudGltZS4KClRvIGFkZHJlc3MgdGhpcywgdGhpcyBjb21taXQg bWFrZXMgdGhlIHNlcXVlbmNlIHN5bmMgd29ya2VyIGxvbmctbGl2ZWQsCmNvbnRpbnVvdXNseSBt b25pdG9yaW5nIHNlcXVlbmNlcyBhbmQgcmVzeW5jaHJvbml6aW5nIHRoZW0gd2hlbiBkcmlmdCBp cwpkZXRlY3RlZC4gVGhlIHdvcmtlciB1c2VzIGFuIGFkYXB0aXZlIHNsZWVwIGludGVydmFsOiBp dCBzdGFydHMgYXQgMiBzZWNvbmRzLApkb3VibGVzIHVwIHRvIGEgbWF4aW11bSBvZiAzMCBzZWNv bmRzIHdoZW4gbm8gZHJpZnQgaXMgb2JzZXJ2ZWQsIGFuZCByZXNldHMgdG8KdGhlIG1pbmltdW0g aW50ZXJ2YWwgb25jZSBkcmlmdCBpcyBmb3VuZC4KCldpdGggdGhpcyBjaGFuZ2UsIG1vc3Qgc2Vx dWVuY2VzIGFyZSBzaWxlbnRseSBzeW5jaHJvbml6ZWQgaW4gdGhlIGJhY2tncm91bmQsCmVsaW1p bmF0aW5nIHRoZSBuZWVkIHRvIHJ1biBSRUZSRVNIIFNFUVVFTkNFUyBmb3IgdGhlIG1ham9yaXR5 IG9mIGNhc2VzLgoKSG93ZXZlciwgZnJlcXVlbnRseSB1cGRhdGVkIHNlcXVlbmNlcyBtYXkgc3Rp bGwgbGFnIGJlaGluZCwgcmVxdWlyaW5nIGEgZmluYWwKUkVGUkVTSCBTRVFVRU5DRVMgYmVmb3Jl IHVwZ3JhZGUgY29tcGxldGlvbi4gVXNlcnMgY2FuIG1vbml0b3IgcHJvZ3Jlc3MgYnkKY2hlY2tp bmcgd2hldGhlciBzZXF1ZW5jZSBzdGF0ZXMgdHJhbnNpdGlvbiBmcm9tIElOSVQgdG8gUkVBRFkg aW4KcGdfc3Vic2NyaXB0aW9uX3JlbC4KClRoZSBSRUZSRVNIIFNFUVVFTkNFUyBjb21tYW5kIGlz IHJldGFpbmVkIGZvciB0aGlzIGZpbmFsIHN5bmNocm9uaXphdGlvbiBzdGVwLAp0aG91Z2ggaXQg Y3VycmVudGx5IHVwZGF0ZXMgYWxsIHNlcXVlbmNlIHN0YXRlcyB0byBJTklULCB3aGljaCBoYXMg cm9vbSBmb3IKaW1wcm92ZW1lbnQuIEEgZnV0dXJlIHBhdGNoIHdpbGwgZW5oYW5jZSB0aGlzIGNv bW1hbmQgdG8gc3luY2hyb25pemUgc2VxdWVuY2VzCmRpcmVjdGx5IHdpdGhvdXQgbGF1bmNoaW5n IGEgd29ya2VyLCByZWR1Y2luZyBjYXRhbG9nIG92ZXJoZWFkLgotLS0KIGRvYy9zcmMvc2dtbC9s b2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICB8ICAzOSArLQogZG9jL3NyYy9zZ21sL3Jl Zi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbCAgICAgIHwgICA1IC0KIHNyYy9iYWNrZW5kL2NvbW1h bmRzL3NlcXVlbmNlLmMgICAgICAgICAgICAgICB8ICA0MSArKwogLi4uL3JlcGxpY2F0aW9uL2xv Z2ljYWwvc2VxdWVuY2VzeW5jLmMgICAgICAgIHwgNDI0ICsrKysrKysrKysrKystLS0tLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zeW5jdXRpbHMuYyAgIHwgIDQ2ICstCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAgMTEgKwogLi4uL3V0 aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0ICAgICAgIHwgICAxICsKIHNyYy9pbmNs dWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS9jb21tYW5kcy9zZXF1ZW5jZS5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgIHwgICAyICstCiBzcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMjZfc3RhdHMucGwgICAgICAgICAgfCAgIDIgKwogc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDM2X3NlcXVlbmNlcy5wbCAgICAgIHwgIDgxICstLS0KIDEyIGZpbGVzIGNoYW5n ZWQsIDQzNyBpbnNlcnRpb25zKCspLCAyMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2Fs LXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggMjNiMjY4MjczYjkuLjQzMGQyNTgxNjk5IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTE3OTEsOCArMTc5MSw5IEBAIFB1Ymxp Y2F0aW9uczoKIAogICA8cGFyYT4KICAgIEEgPGZpcnN0dGVybT5zZXF1ZW5jZSBzeW5jaHJvbml6 YXRpb24gd29ya2VyPC9maXJzdHRlcm0+IHdpbGwgYmUgc3RhcnRlZAotICAgYWZ0ZXIgZXhlY3V0 aW5nIGFueSBvZiB0aGUgYWJvdmUgc3Vic2NyaWJlciBjb21tYW5kcywgYW5kIHdpbGwgZXhpdCBv bmNlIHRoZQotICAgc2VxdWVuY2VzIGFyZSBzeW5jaHJvbml6ZWQuCisgICBhZnRlciBleGVjdXRp bmcgYW55IG9mIHRoZSBhYm92ZSBzdWJzY3JpYmVyIGNvbW1hbmRzLiBUaGUgd29ya2VyIHdpbGwK KyAgIHJlbWFpbiBydW5uaW5nIGZvciB0aGUgbGlmZSBvZiB0aGUgc3Vic2NyaXB0aW9uLCBwZXJp b2RpY2FsbHkKKyAgIHN5bmNocm9uaXppbmcgYWxsIHB1Ymxpc2hlZCBzZXF1ZW5jZXMuCiAgIDwv cGFyYT4KICAgPHBhcmE+CiAgICBUaGUgYWJpbGl0eSB0byBsYXVuY2ggYSBzZXF1ZW5jZSBzeW5j aHJvbml6YXRpb24gd29ya2VyIGlzIGxpbWl0ZWQgYnkgdGhlCkBAIC0xODIxLDE4ICsxODIyLDI2 IEBAIFB1YmxpY2F0aW9uczoKICAgPHNlY3QyIGlkPSJzZXF1ZW5jZXMtb3V0LW9mLXN5bmMiPgog ICAgPHRpdGxlPlJlZnJlc2hpbmcgT3V0LW9mLVN5bmMgU2VxdWVuY2VzPC90aXRsZT4KICAgIDxw YXJhPgotICAgIFN1YnNjcmliZXIgc2VxdWVuY2UgdmFsdWVzIHdpbGwgYmVjb21lIG91dCBvZiBz eW5jIGFzIHRoZSBwdWJsaXNoZXIKLSAgICBhZHZhbmNlcyB0aGVtLgorICAgIFN1YnNjcmliZXIg c2VxdWVuY2UgdmFsdWVzIGNhbiBiZWNvbWUgb3V0IG9mIHN5bmMgYXMgdGhlIHB1Ymxpc2hlciBh ZHZhbmNlcworICAgIHRoZW0gYW5kIHRoZSBzZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24gd29ya2Vy IGhhcyBub3QgeWV0IGNhdWdodCB1cC4KICAgIDwvcGFyYT4KICAgIDxwYXJhPgogICAgIFRvIGRl dGVjdCB0aGlzLCBjb21wYXJlIHRoZQogICAgIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctc3Vi c2NyaXB0aW9uLXJlbCI+cGdfc3Vic2NyaXB0aW9uX3JlbDwvbGluaz4uPHN0cnVjdGZpZWxkPnNy c3VibHNuPC9zdHJ1Y3RmaWVsZD4KICAgICBvbiB0aGUgc3Vic2NyaWJlciB3aXRoIHRoZSA8c3Ry dWN0ZmllbGQ+cGFnZV9sc248L3N0cnVjdGZpZWxkPiBvYnRhaW5lZAogICAgIGZyb20gdGhlIDxs aW5rIGxpbmtlbmQ9ImZ1bmMtcGctZ2V0LXNlcXVlbmNlLWRhdGEiPjxmdW5jdGlvbj5wZ19nZXRf c2VxdWVuY2VfZGF0YTwvZnVuY3Rpb24+PC9saW5rPgotICAgIGZ1bmN0aW9uIGZvciB0aGUgc2Vx dWVuY2Ugb24gdGhlIHB1Ymxpc2hlci4gVGhlbiBydW4KKyAgICBmdW5jdGlvbiBmb3IgdGhlIHNl cXVlbmNlIG9uIHRoZSBwdWJsaXNoZXIuIElmIGRyaWZ0IGlzIGRldGVjdGVkLCB0aGUgdXNlcgor ICAgIGNhbiB3YWl0IGZvciB0aGUgc2VxdWVuY2Ugc3luY2hyb25pemF0aW9uIHdvcmtlciB0byBj YXRjaCB1cCAoYnkKKyAgICBwZXJpb2RpY2FsbHkgY2hlY2tpbmcgd2hldGhlciB0aGUgTFNOcyBt YXRjaCkuCisgICA8L3BhcmE+CisgICA8cGFyYT4KKyAgICBOb3RlIHRoYXQgdGhlIHNlcXVlbmNl IHN5bmNocm9uaXphdGlvbiB3b3JrZXIgdXBkYXRlcworICAgIDxsaW5rIGxpbmtlbmQ9ImNhdGFs b2ctcGctc3Vic2NyaXB0aW9uLXJlbCI+cGdfc3Vic2NyaXB0aW9uX3JlbDwvbGluaz4uPHN0cnVj dGZpZWxkPnNyc3VibHNuPC9zdHJ1Y3RmaWVsZD4KKyAgICBwZXJpb2RpY2FsbHkuIFRvIHJlZHVj ZSB0aGUgZGVsYXkgYW5kIGZvcmNlIGFuIGltbWVkaWF0ZSB1cGRhdGUsIGV4ZWN1dGUgdGhlCiAg ICAgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uLXBhcmFtcy1yZWZyZXNoLXNl cXVlbmNlcyI+Ci0gICAgPGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFNF UVVFTkNFUzwvY29tbWFuZD48L2xpbms+IHRvCi0gICAgcmUtc3luY2hyb25pemUgaWYgbmVjZXNz YXJ5LgorICAgIDxjb21tYW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBTRVFVRU5D RVM8L2NvbW1hbmQ+PC9saW5rPiBjb21tYW5kLAorICAgIHdoaWNoIHVwZGF0ZXMgdGhlIHBhZ2Ug TFNOIGltbWVkaWF0ZWx5IGFmdGVyIHN5bmNocm9uaXppbmcgdGhlIHNlcXVlbmNlCisgICAgdmFs dWUuCiAgICA8L3BhcmE+CiAgICA8d2FybmluZz4KICAgICA8cGFyYT4KQEAgLTIzMzksMTUgKzIz NDgsMTMgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9u IG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKIAogICAgPGxpc3RpdGVtPgogICAgIDxw YXJhPgotICAgICBJbmNyZW1lbnRhbCBzZXF1ZW5jZSBjaGFuZ2VzIGFyZSBub3QgcmVwbGljYXRl ZC4gIEFsdGhvdWdoIHRoZSBkYXRhIGluCi0gICAgIHNlcmlhbCBvciBpZGVudGl0eSBjb2x1bW5z IGJhY2tlZCBieSBzZXF1ZW5jZXMgd2lsbCBiZSByZXBsaWNhdGVkIGFzIHBhcnQKLSAgICAgb2Yg dGhlIHRhYmxlLCB0aGUgc2VxdWVuY2VzIHRoZW1zZWx2ZXMgZG8gbm90IHJlcGxpY2F0ZSBvbmdv aW5nIGNoYW5nZXMuCi0gICAgIE9uIHRoZSBzdWJzY3JpYmVyLCBhIHNlcXVlbmNlIHdpbGwgcmV0 YWluIHRoZSBsYXN0IHZhbHVlIGl0IHN5bmNocm9uaXplZAotICAgICBmcm9tIHRoZSBwdWJsaXNo ZXIuIElmIHRoZSBzdWJzY3JpYmVyIGlzIHVzZWQgYXMgYSByZWFkLW9ubHkgZGF0YWJhc2UsCi0g ICAgIHRoZW4gdGhpcyBzaG91bGQgdHlwaWNhbGx5IG5vdCBiZSBhIHByb2JsZW0uICBJZiwgaG93 ZXZlciwgc29tZSBraW5kIG9mCi0gICAgIHN3aXRjaG92ZXIgb3IgZmFpbG92ZXIgdG8gdGhlIHN1 YnNjcmliZXIgZGF0YWJhc2UgaXMgaW50ZW5kZWQsIHRoZW4gdGhlCi0gICAgIHNlcXVlbmNlcyB3 b3VsZCBuZWVkIHRvIGJlIHVwZGF0ZWQgdG8gdGhlIGxhdGVzdCB2YWx1ZXMsIGVpdGhlciBieQot ICAgICBleGVjdXRpbmcgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uLXBhcmFt cy1yZWZyZXNoLXNlcXVlbmNlcyI+CisgICAgIEluY3JlbWVudGFsIHNlcXVlbmNlIGNoYW5nZXMg YXJlIGNvbnRpbnVvdXNseSByZXBsaWNhdGVkLiBJZiwgaG93ZXZlciwKKyAgICAgc29tZSBraW5k IG9mIHN3aXRjaG92ZXIgb3IgZmFpbG92ZXIgdG8gdGhlIHN1YnNjcmliZXIgZGF0YWJhc2UgaXMK KyAgICAgaW50ZW5kZWQsIHRoZW4gdGhlIHNlcXVlbmNlcyByZXBsaWNhdGlvbiBjb3VsZCBiZSBs YWdnaW5nIGJlaGluZCBhbmQKKyAgICAgdGhlIHNlcXVlbmNlcyBvbiB0aGUgc3Vic2NyaWJlciBz aG91bGQgYmUgY29tcGFyZWQgd2l0aCB0aGF0IG9mIHRoZQorICAgICBwdWJsaXNoZXIgdG8gbWFr ZSBzdXJlIHRoYXQgdGhleSBhcmUgdXAgdG8gZGF0ZSwgaWYgbm90IHRoZXkKKyAgICAgbmVlZCB0 byBiZSB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgdmFsdWVzLCBlaXRoZXIgYnkgZXhlY3V0aW5nCisg ICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbi1wYXJhbXMtcmVmcmVzaC1z ZXF1ZW5jZXMiPgogICAgICA8Y29tbWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0gg U0VRVUVOQ0VTPC9jb21tYW5kPjwvbGluaz4KICAgICAgb3IgYnkgY29weWluZyB0aGUgY3VycmVu dCBkYXRhIGZyb20gdGhlIHB1Ymxpc2hlciAocGVyaGFwcyB1c2luZwogICAgICA8Y29tbWFuZD5w Z19kdW1wPC9jb21tYW5kPikgb3IgYnkgZGV0ZXJtaW5pbmcgYSBzdWZmaWNpZW50bHkgaGlnaCB2 YWx1ZQpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggZjIxNWZi MGU1YTIuLmVlOTZlNDgyM2EzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1 YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9u LnNnbWwKQEAgLTIwMiwxMSArMjAyLDYgQEAgQUxURVIgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDwKICAgICAg ICAgICBQcmV2aW91c2x5IHN1YnNjcmliZWQgdGFibGVzIGFyZSBub3QgY29waWVkLCBldmVuIGlm IGEgdGFibGUncyByb3cKICAgICAgICAgICBmaWx0ZXIgPGxpdGVyYWw+V0hFUkU8L2xpdGVyYWw+ IGNsYXVzZSBoYXMgc2luY2UgYmVlbiBtb2RpZmllZC4KICAgICAgICAgIDwvcGFyYT4KLSAgICAg ICAgIDxwYXJhPgotICAgICAgICAgIFByZXZpb3VzbHkgc3Vic2NyaWJlZCBzZXF1ZW5jZXMgYXJl IG5vdCByZS1zeW5jaHJvbml6ZWQuIFRvIGRvIHRoYXQsCi0gICAgICAgICAgdXNlIDxsaW5rIGxp bmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbi1wYXJhbXMtcmVmcmVzaC1zZXF1ZW5jZXMiPgot ICAgICAgICAgIDxjb21tYW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBTRVFVRU5D RVM8L2NvbW1hbmQ+PC9saW5rPi4KLSAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgog ICAgICAgICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJzZXF1ZW5jZS1kZWZpbml0aW9uLW1pc21hdGNo ZXMiLz4gZm9yIHJlY29tbWVuZGF0aW9ucyBvbiBob3cKICAgICAgICAgICB0byBoYW5kbGUgYW55 IHdhcm5pbmdzIGFib3V0IHNlcXVlbmNlIGRlZmluaXRpb24gZGlmZmVyZW5jZXMgYmV0d2Vlbgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3NlcXVlbmNlLmMKaW5kZXggNTUxNjY3NjUwYmEuLjlhOWZhNmUyNWU2IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3NlcXVlbmNlLmMKQEAgLTkyOSw2ICs5MjksNDcgQEAgbGFzdHZhbChQR19GVU5D VElPTl9BUkdTKQogCVBHX1JFVFVSTl9JTlQ2NChyZXN1bHQpOwogfQogCisvKgorICogUmVhZCB0 aGUgY3VycmVudCBzZXF1ZW5jZSB2YWx1ZXMgKGxhc3RfdmFsdWUgYW5kIGlzX2NhbGxlZCkKKyAq CisgKiBUaGlzIGlzIGEgcmVhZC1vbmx5IG9wZXJhdGlvbiB1c2VkIGJ5IGxvZ2ljYWwgcmVwbGlj YXRpb24gc2VxdWVuY2UKKyAqIHN5bmNocm9uaXphdGlvbiB0byBkZXRlY3QgZHJpZnQuIFRoZSBj YWxsZXIgbXVzdCBob2xkIGEgbG9jayBvbiB0aGUgc2VxdWVuY2UuCisgKgorICogUmV0dXJuIGZh bHNlIGlmIHRoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSBzdWZmaWNpZW50IHByaXZpbGVnZXMgdG8g YWNjZXNzIHRoZQorICogc2VxdWVuY2UsIHRydWUgb3RoZXJ3aXNlLgorICovCitib29sCitHZXRT ZXF1ZW5jZShSZWxhdGlvbiBzZXFyZWwsIGludDY0ICpsYXN0X3ZhbHVlLCBib29sICppc19jYWxs ZWQpCit7CisJQnVmZmVyCQlidWY7CisJSGVhcFR1cGxlRGF0YSBzZXF0dXBsZTsKKwlGb3JtX3Bn X3NlcXVlbmNlX2RhdGEgc2VxOworCU9pZAkJCXJlbGlkID0gUmVsYXRpb25HZXRSZWxpZChzZXFy ZWwpOworCisJLyogQ29uZmlybSB0aGF0IHRoZSByZWxhdGlvbiBpcyBhIHNlcXVlbmNlIGFuZCBp cyBsb2NrZWQgKi8KKwlBc3NlcnQoc2VxcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9T RVFVRU5DRSk7CisJQXNzZXJ0KENoZWNrUmVsYXRpb25Mb2NrZWRCeU1lKHNlcXJlbCwgQWNjZXNz U2hhcmVMb2NrLCB0cnVlKSk7CisKKwlpZiAocGdfY2xhc3NfYWNsY2hlY2socmVsaWQsIEdldFVz ZXJJZCgpLCBBQ0xfU0VMRUNUKSAhPSBBQ0xDSEVDS19PSykKKwl7CisJCSpsYXN0X3ZhbHVlID0g MDsKKwkJKmlzX2NhbGxlZCA9IGZhbHNlOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyogUmVh ZCB0aGUgc2VxdWVuY2UgdHVwbGUgKi8KKwlzZXEgPSByZWFkX3NlcV90dXBsZShzZXFyZWwsICZi dWYsICZzZXF0dXBsZSk7CisKKwkvKiBFeHRyYWN0IHRoZSB2YWx1ZXMgKi8KKwkqbGFzdF92YWx1 ZSA9IHNlcS0+bGFzdF92YWx1ZTsKKwkqaXNfY2FsbGVkID0gc2VxLT5pc19jYWxsZWQ7CisKKwkv KiBSZWxlYXNlIGJ1ZmZlciAqLworCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmKTsKKworCXJldHVy biB0cnVlOworfQorCiAvKgogICogTWFpbiBpbnRlcm5hbCBwcm9jZWR1cmUgdGhhdCBoYW5kbGVz IDIgJiAzIGFyZyBmb3JtcyBvZiBTRVRWQUwuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMKaW5kZXggZWM3ZTc2YWJmOTMuLjIyZTMyZGJiYTU3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3NlcXVlbmNlc3lu Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMK QEAgLTE5LDI1ICsxOSwzMiBAQAogICogQ1JFQVRFIFNVQlNDUklQVElPTgogICogQUxURVIgU1VC U0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OCiAgKgotICogRXhlY3V0aW5nIHRoZSBm b2xsb3dpbmcgY29tbWFuZCByZXNldHMgYWxsIHNlcXVlbmNlcyBpbiB0aGUgc3Vic2NyaXB0aW9u IHRvCi0gKiBzdGF0ZSBJTklULCB0cmlnZ2VyaW5nIHJlLXN5bmNocm9uaXphdGlvbjoKLSAqIEFM VEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBTRVFVRU5DRVMKLSAqCi0gKiBUaGUgYXBwbHkg d29ya2VyIHBlcmlvZGljYWxseSBzY2FucyBwZ19zdWJzY3JpcHRpb25fcmVsIGZvciBzZXF1ZW5j ZXMgaW4KLSAqIElOSVQgc3RhdGUuIFdoZW4gc3VjaCBzZXF1ZW5jZXMgYXJlIGZvdW5kLCBpdCBz cGF3bnMgYSBzZXF1ZW5jZXN5bmMgd29ya2VyCi0gKiB0byBoYW5kbGUgc3luY2hyb25pemF0aW9u LgotICoKLSAqIEEgc2luZ2xlIHNlcXVlbmNlc3luYyB3b3JrZXIgaXMgcmVzcG9uc2libGUgZm9y IHN5bmNocm9uaXppbmcgYWxsIHNlcXVlbmNlcy4KLSAqIEl0IGJlZ2lucyBieSByZXRyaWV2aW5n IHRoZSBsaXN0IG9mIHNlcXVlbmNlcyB0aGF0IGFyZSBmbGFnZ2VkIGZvcgotICogc3luY2hyb25p emF0aW9uLCBpLmUuLCB0aG9zZSBpbiB0aGUgSU5JVCBzdGF0ZS4gVGhlc2Ugc2VxdWVuY2VzIGFy ZSB0aGVuCi0gKiBwcm9jZXNzZWQgaW4gYmF0Y2hlcywgYWxsb3dpbmcgbXVsdGlwbGUgZW50cmll cyB0byBiZSBzeW5jaHJvbml6ZWQgd2l0aGluIGEKLSAqIHNpbmdsZSB0cmFuc2FjdGlvbi4gVGhl IHdvcmtlciBmZXRjaGVzIHRoZSBjdXJyZW50IHNlcXVlbmNlIHZhbHVlcyBhbmQgcGFnZQotICog TFNOcyBmcm9tIHRoZSByZW1vdGUgcHVibGlzaGVyLCB1cGRhdGVzIHRoZSBjb3JyZXNwb25kaW5n IHNlcXVlbmNlcyBvbiB0aGUKLSAqIGxvY2FsIHN1YnNjcmliZXIsIGFuZCBmaW5hbGx5IG1hcmtz IGVhY2ggc2VxdWVuY2UgYXMgUkVBRFkgdXBvbiBzdWNjZXNzZnVsCisgKiBUaGUgYXBwbHkgd29y a2VyIHBlcmlvZGljYWxseSBzY2FucyBwZ19zdWJzY3JpcHRpb25fcmVsIGZvciBzZXF1ZW5jZXMu CisgKiBXaGVuIHNlcXVlbmNlcyBhcmUgZm91bmQsIGl0IHNwYXducyBhIHNlcXVlbmNlc3luYyB3 b3JrZXIgdG8gaGFuZGxlCiAgKiBzeW5jaHJvbml6YXRpb24uCiAgKgorICogQSBzaW5nbGUgc2Vx dWVuY2VzeW5jIHdvcmtlciBpcyByZXNwb25zaWJsZSBmb3Igc3luY2hyb25pemluZyBhbGwgc2Vx dWVuY2VzCisgKiBmb3IgYSBzdWJzY3JpcHRpb24uIEl0IGJlZ2lucyBieSByZXRyaWV2aW5nIHRo ZSBsaXN0IG9mIHNlcXVlbmNlcy4gVGhlc2UKKyAqIHNlcXVlbmNlcyBhcmUgdGhlbiBwcm9jZXNz ZWQgaW4gYmF0Y2hlcywgYWxsb3dpbmcgbXVsdGlwbGUgZW50cmllcyB0byBiZQorICogc3luY2hy b25pemVkIHdpdGhpbiBhIHNpbmdsZSB0cmFuc2FjdGlvbi4gVGhlIHdvcmtlciBmZXRjaGVzIHRo ZSBjdXJyZW50CisgKiBzZXF1ZW5jZSB2YWx1ZXMgYW5kIHBhZ2UgTFNOcyBmcm9tIHRoZSByZW1v dGUgcHVibGlzaGVyIGFuZCB1cGRhdGVzIHRoZQorICogY29ycmVzcG9uZGluZyBzZXF1ZW5jZXMg b24gdGhlIGxvY2FsIHN1YnNjcmliZXIuIFNlcXVlbmNlcyBpbiB0aGUgSU5JVAorICogc3RhdGUg YXJlIHVuY29uZGl0aW9uYWxseSB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgdmFsdWVzIGZyb20gdGhl IHB1Ymxpc2hlcgorICogYW5kIHRoZW4gbW92ZWQgdG8gdGhlIFJFQURZIHN0YXRlLiBGb3Igc2Vx dWVuY2VzIGFscmVhZHkgaW4gdGhlIFJFQURZCisgKiBzdGF0ZSwgdGhlIHdvcmtlciBjaGVja3Mg Zm9yIGRyaWZ0IGFuZCB1cGRhdGVzIHRoZW0gb25seSB3aGVuIG5lZWRlZC4KKyAqCiAgKiBTZXF1 ZW5jZSBzdGF0ZSB0cmFuc2l0aW9ucyBmb2xsb3cgdGhpcyBwYXR0ZXJuOgotICogICBJTklUIC0+ IFJFQURZCisKKyAqICAgICAgIChzeW5jaHJvbml6ZSkKKyAqICBJTklUIC0tLS0tLS0tLS0tLS0t PiBSRUFEWSAtPi0rCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBeICAgICAgfCAoY2hlY2st ZHJpZnQvc3luY2hyb25pemUpCisgKiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgfAor ICogICAgICAgICAgICAgICAgICAgICAgICAgKy0tPC0tLSsKKyAqCisgKiBCZXR3ZWVuIGN5Y2xl cywgdGhlIHdvcmtlciBzbGVlcHMgZm9yIFNFUVNZTkNfTUlOX1NMRUVQX01TLiBJZiBubyBkcmlm dCBpcworICogb2JzZXJ2ZWQgaW4gYW55IHNlcXVlbmNlLCB0aGUgc2xlZXAgaW50ZXJ2YWwgZG91 YmxlcyBhZnRlciBlYWNoIHdha2UgY3ljbGUKKyAqIHVwIHRvIFNFUVNZTkNfTUFYX1NMRUVQX01T LiBXaGVuIGRyaWZ0IGlzIGRldGVjdGVkLCB0aGUgaW50ZXJ2YWwgcmVzZXRzIHRvCisgKiB0aGUg bWluaW11bSB0byBlbnN1cmUgdGltZWx5IHVwZGF0ZXMuCiAgKgogICogVG8gYXZvaWQgY3JlYXRp bmcgdG9vIG1hbnkgdHJhbnNhY3Rpb25zLCB1cCB0byBNQVhfU0VRVUVOQ0VTX1NZTkNfUEVSX0JB VENICiAgKiBzZXF1ZW5jZXMgYXJlIHN5bmNocm9uaXplZCBwZXIgdHJhbnNhY3Rpb24uIFRoZSBs b2NrcyBvbiB0aGUgc2VxdWVuY2UKQEAgLTYwLDYgKzY3LDcgQEAKICNpbmNsdWRlICJwb3N0bWFz dGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIK ICNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJzdG9y YWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJ1dGls cy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgpAQCAtNzEsMzEgKzc5LDQyIEBA CiAjaW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIK ICNpbmNsdWRlICJ1dGlscy91c2VyY29udGV4dC5oIgorI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZl bnQuaCIKIAogI2RlZmluZSBSRU1PVEVfU0VRX0NPTF9DT1VOVCAxMAogCiB0eXBlZGVmIGVudW0g Q29weVNlcVJlc3VsdAogewogCUNPUFlTRVFfU1VDQ0VTUywKKwlDT1BZU0VRX0FMTE9XRUQsCiAJ Q09QWVNFUV9NSVNNQVRDSCwKIAlDT1BZU0VRX0lOU1VGRklDSUVOVF9QRVJNLAotCUNPUFlTRVFf U0tJUFBFRAorCUNPUFlTRVFfU0tJUFBFRCwKKwlDT1BZU0VRX05PX0RSSUZULAogfSBDb3B5U2Vx UmVzdWx0OwogCi1zdGF0aWMgTGlzdCAqc2VxaW5mb3MgPSBOSUw7CisvKiBTbGVlcCBpbnRlcnZh bHMgZm9yIHN5bmMgKi8KKyNkZWZpbmUgU0VRU1lOQ19NSU5fU0xFRVBfTVMgMjAwMAkvKiAyIHNl Y29uZHMgKi8KKyNkZWZpbmUgU0VRU1lOQ19NQVhfU0xFRVBfTVMgMzAwMDAJLyogMzAgc2Vjb25k cyAqLworCitzdGF0aWMgTWVtb3J5Q29udGV4dCBTZXF1ZW5jZVN5bmNDb250ZXh0ID0gTlVMTDsK IAogLyoKLSAqIEFwcGx5IHdvcmtlciBkZXRlcm1pbmVzIGlmIHNlcXVlbmNlIHN5bmNocm9uaXph dGlvbiBpcyBuZWVkZWQuCisgKiBBcHBseSB3b3JrZXIgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgc2Vx dWVuY2Ugc3luYyB3b3JrZXIgaXMgbmVlZGVkLgogICoKICAqIFN0YXJ0IGEgc2VxdWVuY2VzeW5j IHdvcmtlciBpZiBvbmUgaXMgbm90IGFscmVhZHkgcnVubmluZy4gVGhlIGFjdGl2ZQogICogc2Vx dWVuY2VzeW5jIHdvcmtlciB3aWxsIGhhbmRsZSBhbGwgcGVuZGluZyBzZXF1ZW5jZSBzeW5jaHJv bml6YXRpb24uIElmIGFueQogICogc2VxdWVuY2VzIHJlbWFpbiB1bnN5bmNocm9uaXplZCBhZnRl ciBpdCBleGl0cywgYSBuZXcgd29ya2VyIGNhbiBiZSBzdGFydGVkCiAgKiBpbiB0aGUgbmV4dCBp dGVyYXRpb24uCisgKgorICogVGhlIHBvaW50ZXIgdG8gdGhlIHNlcXVlbmNlc3luYyB3b3JrZXIg aXMgY2FjaGVkIHRvIGF2b2lkIHNjYW5uaW5nIHRoZQorICogd29ya2VycyBhcnJheSBlYWNoIHRp bWUgdmlhIGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoKS4KICAqLwogdm9pZAotUHJvY2Vzc1NlcXVl bmNlc0ZvclN5bmModm9pZCkKK01heWJlTGF1bmNoU2VxdWVuY2VTeW5jV29ya2VyKHZvaWQpCiB7 Ci0JTG9naWNhbFJlcFdvcmtlciAqc2VxdWVuY2VzeW5jX3dvcmtlcjsKKwlzdGF0aWMgTG9naWNh bFJlcFdvcmtlciAqc2VxdWVuY2VzeW5jX3dvcmtlciA9IE5VTEw7CisKIAlpbnQJCQluc3luY3dv cmtlcnM7CiAJYm9vbAkJaGFzX3BlbmRpbmdfc2VxdWVuY2VzOwogCWJvb2wJCXN0YXJ0ZWRfdHg7 CkBAIC0xMTMsNiArMTMyLDE5IEBAIFByb2Nlc3NTZXF1ZW5jZXNGb3JTeW5jKHZvaWQpCiAKIAlM V0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCisJLyoKKwkg KiBRdWljayBleGl0IGlmIHRoZSBzZXF1ZW5jZSBzeW5jIHdvcmtlciBmb3IgdGhlIGN1cnJlbnQg c3Vic2NyaXB0aW9uIGlzCisJICogYWxyZWFkeSBhbGl2ZS4KKwkgKi8KKwlpZiAoc2VxdWVuY2Vz eW5jX3dvcmtlciAmJgorCQlzZXF1ZW5jZXN5bmNfd29ya2VyLT5wcm9jICYmCisJCWlzU2VxdWVu Y2VTeW5jV29ya2VyKHNlcXVlbmNlc3luY193b3JrZXIpICYmCisJCXNlcXVlbmNlc3luY193b3Jr ZXItPnN1YmlkID09IE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpCisJeworCQlMV0xvY2tSZWxl YXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKwkJcmV0dXJuOworCX0KKwogCS8qIENoZWNrIGlm IHRoZXJlIGlzIGEgc2VxdWVuY2VzeW5jIHdvcmtlciBhbHJlYWR5IHJ1bm5pbmc/ICovCiAJc2Vx dWVuY2VzeW5jX3dvcmtlciA9IGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoV09SS0VSVFlQRV9TRVFV RU5DRVNZTkMsCiAJCQkJCQkJCQkJCQkgTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwKQEAgLTE0 NSw3ICsxNzcsNyBAQCBQcm9jZXNzU2VxdWVuY2VzRm9yU3luYyh2b2lkKQogICogZm9yIHRoZSBn aXZlbiBsaXN0IG9mIHNlcXVlbmNlIGluZGV4ZXMuCiAgKi8KIHN0YXRpYyB2b2lkCi1nZXRfc2Vx dWVuY2VzX3N0cmluZyhMaXN0ICpzZXFpbmRleGVzLCBTdHJpbmdJbmZvIGJ1ZikKK2dldF9zZXF1 ZW5jZXNfc3RyaW5nKExpc3QgKnNlcWluZGV4ZXMsIExpc3QgKnNlcWluZm9zLCBTdHJpbmdJbmZv IGJ1ZikKIHsKIAlyZXNldFN0cmluZ0luZm8oYnVmKTsKIAlmb3JlYWNoX2ludChzZXFpZHgsIHNl cWluZGV4ZXMpCkBAIC0xNzIsNyArMjA0LDcgQEAgZ2V0X3NlcXVlbmNlc19zdHJpbmcoTGlzdCAq c2VxaW5kZXhlcywgU3RyaW5nSW5mbyBidWYpCiAgKi8KIHN0YXRpYyB2b2lkCiByZXBvcnRfc2Vx dWVuY2VfZXJyb3JzKExpc3QgKm1pc21hdGNoZWRfc2Vxc19pZHgsIExpc3QgKmluc3VmZnBlcm1f c2Vxc19pZHgsCi0JCQkJCSAgIExpc3QgKm1pc3Npbmdfc2Vxc19pZHgpCisJCQkJCSAgIExpc3Qg Km1pc3Npbmdfc2Vxc19pZHgsIExpc3QgKnNlcWluZm9zKQogewogCVN0cmluZ0luZm9EYXRhIHNl cXN0cjsKIApAQCAtMTg0LDcgKzIxNiw3IEBAIHJlcG9ydF9zZXF1ZW5jZV9lcnJvcnMoTGlzdCAq bWlzbWF0Y2hlZF9zZXFzX2lkeCwgTGlzdCAqaW5zdWZmcGVybV9zZXFzX2lkeCwKIAogCWlmICht aXNtYXRjaGVkX3NlcXNfaWR4KQogCXsKLQkJZ2V0X3NlcXVlbmNlc19zdHJpbmcobWlzbWF0Y2hl ZF9zZXFzX2lkeCwgJnNlcXN0cik7CisJCWdldF9zZXF1ZW5jZXNfc3RyaW5nKG1pc21hdGNoZWRf c2Vxc19pZHgsIHNlcWluZm9zLCAmc2Vxc3RyKTsKIAkJZXJlcG9ydChXQVJOSU5HLAogCQkJCWVy cmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQkJZXJy bXNnX3BsdXJhbCgibWlzbWF0Y2hlZCBvciByZW5hbWVkIHNlcXVlbmNlIG9uIHN1YnNjcmliZXIg KCVzKSIsCkBAIC0xOTUsNyArMjI3LDcgQEAgcmVwb3J0X3NlcXVlbmNlX2Vycm9ycyhMaXN0ICpt aXNtYXRjaGVkX3NlcXNfaWR4LCBMaXN0ICppbnN1ZmZwZXJtX3NlcXNfaWR4LAogCiAJaWYgKGlu c3VmZnBlcm1fc2Vxc19pZHgpCiAJewotCQlnZXRfc2VxdWVuY2VzX3N0cmluZyhpbnN1ZmZwZXJt X3NlcXNfaWR4LCAmc2Vxc3RyKTsKKwkJZ2V0X3NlcXVlbmNlc19zdHJpbmcoaW5zdWZmcGVybV9z ZXFzX2lkeCwgc2VxaW5mb3MsICZzZXFzdHIpOwogCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJZXJy Y29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQllcnJt c2dfcGx1cmFsKCJpbnN1ZmZpY2llbnQgcHJpdmlsZWdlcyBvbiBzZXF1ZW5jZSAoJXMpIiwKQEAg LTIwNiw3ICsyMzgsNyBAQCByZXBvcnRfc2VxdWVuY2VfZXJyb3JzKExpc3QgKm1pc21hdGNoZWRf c2Vxc19pZHgsIExpc3QgKmluc3VmZnBlcm1fc2Vxc19pZHgsCiAKIAlpZiAobWlzc2luZ19zZXFz X2lkeCkKIAl7Ci0JCWdldF9zZXF1ZW5jZXNfc3RyaW5nKG1pc3Npbmdfc2Vxc19pZHgsICZzZXFz dHIpOworCQlnZXRfc2VxdWVuY2VzX3N0cmluZyhtaXNzaW5nX3NlcXNfaWR4LCBzZXFpbmZvcywg JnNlcXN0cik7CiAJCWVyZXBvcnQoV0FSTklORywKIAkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNU X05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCWVycm1zZ19wbHVyYWwoIm1pc3Npbmcg c2VxdWVuY2Ugb24gcHVibGlzaGVyICglcykiLApAQCAtMjMwLDcgKzI2Miw4IEBAIHJlcG9ydF9z ZXF1ZW5jZV9lcnJvcnMoTGlzdCAqbWlzbWF0Y2hlZF9zZXFzX2lkeCwgTGlzdCAqaW5zdWZmcGVy bV9zZXFzX2lkeCwKICAqLwogc3RhdGljIENvcHlTZXFSZXN1bHQKIGdldF9hbmRfdmFsaWRhdGVf c2VxX2luZm8oVHVwbGVUYWJsZVNsb3QgKnNsb3QsIFJlbGF0aW9uICpzZXF1ZW5jZV9yZWwsCi0J CQkJCQkgIExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKipzZXFpbmZvLCBpbnQgKnNlcWlkeCkKKwkJ CQkJCSAgTG9naWNhbFJlcFNlcXVlbmNlSW5mbyAqKnNlcWluZm8sIGludCAqc2VxaWR4LAorCQkJ CQkJICBMaXN0ICpzZXFpbmZvcykKIHsKIAlib29sCQlpc251bGw7CiAJaW50CQkJY29sID0gMDsK QEAgLTI0MSw3ICsyNzQsNyBAQCBnZXRfYW5kX3ZhbGlkYXRlX3NlcV9pbmZvKFR1cGxlVGFibGVT bG90ICpzbG90LCBSZWxhdGlvbiAqc2VxdWVuY2VfcmVsLAogCWludDY0CQlyZW1vdGVfbWluOwog CWludDY0CQlyZW1vdGVfbWF4OwogCWJvb2wJCXJlbW90ZV9jeWNsZTsKLQlDb3B5U2VxUmVzdWx0 IHJlc3VsdCA9IENPUFlTRVFfU1VDQ0VTUzsKKwlDb3B5U2VxUmVzdWx0IHJlc3VsdCA9IENPUFlT RVFfQUxMT1dFRDsKIAlIZWFwVHVwbGUJdHVwOwogCUZvcm1fcGdfc2VxdWVuY2UgbG9jYWxfc2Vx OwogCUxvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm9fbG9jYWw7CkBAIC0zMjYsMzIgKzM1 OSw3NyBAQCBnZXRfYW5kX3ZhbGlkYXRlX3NlcV9pbmZvKFR1cGxlVGFibGVTbG90ICpzbG90LCBS ZWxhdGlvbiAqc2VxdWVuY2VfcmVsLAogfQogCiAvKgotICogQXBwbHkgcmVtb3RlIHNlcXVlbmNl IHN0YXRlIHRvIGxvY2FsIHNlcXVlbmNlIGFuZCBtYXJrIGl0IGFzCi0gKiBzeW5jaHJvbml6ZWQg KFJFQURZKS4KKyAqIENoZWNrIHdoZXRoZXIgdGhlIHVzZXIgaGFzIHJlcXVpcmVkIHByaXZpbGVn ZXMgb24gdGhlIHNlcXVlbmNlIGFuZAorICogd2hldGhlciB0aGUgc2VxdWVuY2UgaGFzIGRyaWZ0 ZWQuCiAgKi8KIHN0YXRpYyBDb3B5U2VxUmVzdWx0Ci1jb3B5X3NlcXVlbmNlKExvZ2ljYWxSZXBT ZXF1ZW5jZUluZm8gKnNlcWluZm8sIE9pZCBzZXFvd25lcikKK2NoZWNrX3NlcV9wcml2aWxlZ2Vz X2FuZF9kcmlmdChMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICpzZXFpbmZvLAorCQkJCQkJCSAgIFJl bGF0aW9uIHNlcXVlbmNlX3JlbCkKIHsKLQlVc2VyQ29udGV4dCB1Y3h0OwogCUFjbFJlc3VsdAlh Y2xyZXN1bHQ7CisJT2lkCQkJc2Vxb2lkID0gc2VxaW5mby0+bG9jYWxyZWxpZDsKKworCS8qIFBl cmZvcm0gZHJpZnQgY2hlY2sgaWYgaXQncyBub3QgdGhlIGluaXRpYWwgc3luYyAqLworCWlmIChz ZXFpbmZvLT5yZWxzdGF0ZSA9PSBTVUJSRUxfU1RBVEVfUkVBRFkpCisJeworCQlpbnQ2NAkJbG9j YWxfbGFzdF92YWx1ZTsKKwkJYm9vbAkJbG9jYWxfaXNfY2FsbGVkOworCisJCS8qCisJCSAqIFNr aXAgc3luY2hyb25pemF0aW9uIGlmIHRoZSBjdXJyZW50IHVzZXIgZG9lcyBub3QgaGF2ZSBzdWZm aWNpZW50CisJCSAqIHByaXZpbGVnZXMgdG8gcmVhZCB0aGUgc2VxdWVuY2UgZGF0YS4KKwkJICov CisJCWlmICghR2V0U2VxdWVuY2Uoc2VxdWVuY2VfcmVsLCAmbG9jYWxfbGFzdF92YWx1ZSwgJmxv Y2FsX2lzX2NhbGxlZCkpCisJCQlyZXR1cm4gQ09QWVNFUV9JTlNVRkZJQ0lFTlRfUEVSTTsKKwor CQkvKgorCQkgKiBTa2lwIHN5bmNocm9uaXphdGlvbiBpZiB0aGUgc2VxdWVuY2UgaGFzIG5vdCBk cmlmdGVkIGZyb20gdGhlCisJCSAqIHB1Ymxpc2hlcidzIHZhbHVlLgorCQkgKi8KKwkJaWYgKGxv Y2FsX2xhc3RfdmFsdWUgPT0gc2VxaW5mby0+bGFzdF92YWx1ZSAmJgorCQkJbG9jYWxfaXNfY2Fs bGVkID09IHNlcWluZm8tPmlzX2NhbGxlZCkKKwkJCXJldHVybiBDT1BZU0VRX05PX0RSSUZUOwor CX0KKworCS8qIFZlcmlmeSB0aGF0IHRoZSBjdXJyZW50IHVzZXIgY2FuIHVwZGF0ZSB0aGUgc2Vx dWVuY2UgKi8KKwlhY2xyZXN1bHQgPSBwZ19jbGFzc19hY2xjaGVjayhzZXFvaWQsIEdldFVzZXJJ ZCgpLCBBQ0xfVVBEQVRFKTsKKworCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCXJl dHVybiBDT1BZU0VRX0lOU1VGRklDSUVOVF9QRVJNOworCisJcmV0dXJuIENPUFlTRVFfQUxMT1dF RDsKK30KKworLyoKKyAqIEFwcGx5IHJlbW90ZSBzZXF1ZW5jZSBzdGF0ZSB0byBsb2NhbCBzZXF1 ZW5jZS4gRm9yIHNlcXVlbmNlcyBpbiBJTklUIHN0YXRlLAorICogYWx3YXlzIHN5bmNocm9uaXpl IGFuZCB0aGVuIG1vdmUgdGhlbSB0byBSRUFEWSBzdGF0ZSB1cG9uIGNvbXBsZXRpb24uIEZvcgor ICogc2VxdWVuY2VzIGFscmVhZHkgaW4gUkVBRFkgc3RhdGUsIHN5bmNocm9uaXplIG9ubHkgaWYg ZHJpZnQgaXMgZGV0ZWN0ZWQuCisgKi8KK3N0YXRpYyBDb3B5U2VxUmVzdWx0Citjb3B5X3NlcXVl bmNlKExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm8sIFJlbGF0aW9uIHNlcXVlbmNlX3Jl bCwKKwkJCSAgYm9vbCB1cGRhdGVfbHNuKQoreworCVVzZXJDb250ZXh0IHVjeHQ7CiAJYm9vbAkJ cnVuX2FzX293bmVyID0gTXlTdWJzY3JpcHRpb24tPnJ1bmFzb3duZXI7CiAJT2lkCQkJc2Vxb2lk ID0gc2VxaW5mby0+bG9jYWxyZWxpZDsKKwlDb3B5U2VxUmVzdWx0IHJlc3VsdDsKKwlib29sCQlu ZWVkX2xzbl91cGRhdGUgPSBmYWxzZTsKIAogCS8qCiAJICogSWYgdGhlIHVzZXIgZGlkIG5vdCBv cHQgdG8gcnVuIGFzIHRoZSBvd25lciBvZiB0aGUgc3Vic2NyaXB0aW9uCiAJICogKCdydW5fYXNf b3duZXInKSwgdGhlbiBjb3B5IHRoZSBzZXF1ZW5jZSBhcyB0aGUgb3duZXIgb2YgdGhlIHNlcXVl bmNlLgogCSAqLwogCWlmICghcnVuX2FzX293bmVyKQotCQlTd2l0Y2hUb1VudHJ1c3RlZFVzZXIo c2Vxb3duZXIsICZ1Y3h0KTsKKwkJU3dpdGNoVG9VbnRydXN0ZWRVc2VyKHNlcXVlbmNlX3JlbC0+ cmRfcmVsLT5yZWxvd25lciwgJnVjeHQpOwogCi0JYWNscmVzdWx0ID0gcGdfY2xhc3NfYWNsY2hl Y2soc2Vxb2lkLCBHZXRVc2VySWQoKSwgQUNMX1VQREFURSk7CisJcmVzdWx0ID0gY2hlY2tfc2Vx X3ByaXZpbGVnZXNfYW5kX2RyaWZ0KHNlcWluZm8sIHNlcXVlbmNlX3JlbCk7CiAKLQlpZiAoYWNs cmVzdWx0ICE9IEFDTENIRUNLX09LKQorCWlmIChyZXN1bHQgIT0gQ09QWVNFUV9BTExPV0VEKQog CXsKIAkJaWYgKCFydW5fYXNfb3duZXIpCiAJCQlSZXN0b3JlVXNlckNvbnRleHQoJnVjeHQpOwog Ci0JCXJldHVybiBDT1BZU0VRX0lOU1VGRklDSUVOVF9QRVJNOworCQlyZXR1cm4gcmVzdWx0Owog CX0KIAogCS8qCkBAIC0zNjgsMjYgKzQ0Niw1NCBAQCBjb3B5X3NlcXVlbmNlKExvZ2ljYWxSZXBT ZXF1ZW5jZUluZm8gKnNlcWluZm8sIE9pZCBzZXFvd25lcikKIAkJUmVzdG9yZVVzZXJDb250ZXh0 KCZ1Y3h0KTsKIAogCS8qCi0JICogUmVjb3JkIHRoZSByZW1vdGUgc2VxdWVuY2UncyBMU04gaW4g cGdfc3Vic2NyaXB0aW9uX3JlbCBhbmQgbWFyayB0aGUKLQkgKiBzZXF1ZW5jZSBhcyBSRUFEWS4K KwkgKiBJZiBMU04gdXBkYXRlcyBhcmUgcmVxdWVzdGVkLCBjaGVjayB3aGV0aGVyIHRoZSByZW1v dGUgTFNOIGRpZmZlcnMgZnJvbQorCSAqIHRoZSBsb2NhbGx5IHN0b3JlZCB2YWx1ZS4KIAkgKi8K LQlVcGRhdGVTdWJzY3JpcHRpb25SZWxTdGF0ZShNeVN1YnNjcmlwdGlvbi0+b2lkLCBzZXFvaWQs IFNVQlJFTF9TVEFURV9SRUFEWSwKLQkJCQkJCQkgICBzZXFpbmZvLT5wYWdlX2xzbiwgZmFsc2Up OworCWlmICh1cGRhdGVfbHNuKQorCXsKKwkJWExvZ1JlY1B0cglsb2NhbF9wYWdlX2xzbjsKKwor CQkvKiBHZXQgdGhlIGxvY2FsIHBhZ2UgTFNOIGZvciBjb21wYXJpc29uIHdpdGggdGhlIHJlbW90 ZSB2YWx1ZSAqLworCQkodm9pZCkgR2V0U3Vic2NyaXB0aW9uUmVsU3RhdGUoTXlTdWJzY3JpcHRp b24tPm9pZCwKKwkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsaWQoc2VxdWVuY2VfcmVsKSwKKwkJ CQkJCQkJCSAgICZsb2NhbF9wYWdlX2xzbik7CisKKwkJbmVlZF9sc25fdXBkYXRlID0gKGxvY2Fs X3BhZ2VfbHNuICE9IHNlcWluZm8tPnBhZ2VfbHNuKTsKKwl9CisKKwkvKgorCSAqIFVwZGF0ZSB0 aGUgY2F0YWxvZyBpZiBlaXRoZXIgdGhlIHNlcXVlbmNlIGlzIGluIElOSVQgc3RhdGUgYW5kIG5l ZWRzIHRvCisJICogdHJhbnNpdGlvbiB0byBSRUFEWSwgb3IgdGhlIExTTiBoYXMgY2hhbmdlZCBh bmQgdGhpcyBpcyBhbiBMU04gdXBkYXRlCisJICogY3ljbGUgKHVwZGF0ZV9sc24gaXMgdHJ1ZSku CisJICovCisJaWYgKHNlcWluZm8tPnJlbHN0YXRlID09IFNVQlJFTF9TVEFURV9JTklUIHx8IG5l ZWRfbHNuX3VwZGF0ZSkKKwkJVXBkYXRlU3Vic2NyaXB0aW9uUmVsU3RhdGUoTXlTdWJzY3JpcHRp b24tPm9pZCwgc2Vxb2lkLCBTVUJSRUxfU1RBVEVfUkVBRFksCisJCQkJCQkJCSAgIHNlcWluZm8t PnBhZ2VfbHNuLCBmYWxzZSk7CiAKIAlyZXR1cm4gQ09QWVNFUV9TVUNDRVNTOwogfQogCiAvKgog ICogQ29weSBleGlzdGluZyBkYXRhIG9mIHNlcXVlbmNlcyBmcm9tIHRoZSBwdWJsaXNoZXIuCisg KgorICogU2VxdWVuY2VzIGluIElOSVQgc3RhdGUgYXJlIGFsd2F5cyBzeW5jaHJvbml6ZWQuIFNl cXVlbmNlcyBpbiBSRUFEWSBzdGF0ZSBhcmUKKyAqIHN5bmNocm9uaXplZCBvbmx5IHdoZW4gZHJp ZnQgaXMgZGV0ZWN0ZWQuCisgKgorICogV2hlbiAndXBkYXRlX2xzbicgaXMgdHJ1ZSwgdXBkYXRl IHRoZSBwYWdlIExTTiBpbiBwZ19zdWJzY3JpcHRpb25fcmVsIGZvciBhbnkKKyAqIHN5bmNocm9u aXplZCBzZXF1ZW5jZXMgd2hvc2UgTFNOIGhhcyBjaGFuZ2VkLiBXaGVuIGZhbHNlLCB0aGUgTFNO IGlzIHVwZGF0ZWQKKyAqIG9ubHkgZm9yIHNlcXVlbmNlcyB0cmFuc2l0aW9uaW5nIGZyb20gSU5J VCB0byBSRUFEWSBzdGF0ZS4KKyAqCisgKiBSZXR1cm5zIHRydWUvZmFsc2UgaWYgYW55IHNlcXVl bmNlcyB3ZXJlIGFjdHVhbGx5IGNvcGllZC4KICAqLwotc3RhdGljIHZvaWQKLWNvcHlfc2VxdWVu Y2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubikKK3N0YXRpYyBib29sCitjb3B5X3NlcXVlbmNlcyhX YWxSZWNlaXZlckNvbm4gKmNvbm4sIExpc3QgKnNlcWluZm9zLCBib29sIHVwZGF0ZV9sc24pCiB7 CiAJaW50CQkJY3VyX2JhdGNoX2Jhc2VfaW5kZXggPSAwOwogCWludAkJCW5fc2VxaW5mb3MgPSBs aXN0X2xlbmd0aChzZXFpbmZvcyk7CiAJTGlzdAkgICAqbWlzbWF0Y2hlZF9zZXFzX2lkeCA9IE5J TDsKIAlMaXN0CSAgICptaXNzaW5nX3NlcXNfaWR4ID0gTklMOwogCUxpc3QJICAgKmluc3VmZnBl cm1fc2Vxc19pZHggPSBOSUw7CisJYm9vbCAgICAgICAgc2VxdWVuY2VfY29waWVkID0gZmFsc2U7 CiAJU3RyaW5nSW5mb0RhdGEgc2Vxc3RyOwogCVN0cmluZ0luZm9EYXRhIGNtZDsKIAlNZW1vcnlD b250ZXh0IG9sZGN0eDsKQEAgLTM5NywxMCArNTAzLDYgQEAgY29weV9zZXF1ZW5jZXMoV2FsUmVj ZWl2ZXJDb25uICpjb25uKQogCiAjZGVmaW5lIE1BWF9TRVFVRU5DRVNfU1lOQ19QRVJfQkFUQ0gg MTAwCiAKLQllbG9nKERFQlVHMSwKLQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHNlcXVlbmNlIHN5 bmNocm9uaXphdGlvbiBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiAtIHRvdGFsIHVuc3luY2hyb25p emVkOiAlZCIsCi0JCSBNeVN1YnNjcmlwdGlvbi0+bmFtZSwgbl9zZXFpbmZvcyk7Ci0KIAl3aGls ZSAoY3VyX2JhdGNoX2Jhc2VfaW5kZXggPCBuX3NlcWluZm9zKQogCXsKIAkJT2lkCQkJc2VxUm93 W1JFTU9URV9TRVFfQ09MX0NPVU5UXSA9IHtJTlQ4T0lELCBJTlQ4T0lELApAQCAtNDEwLDYgKzUx Miw3IEBAIGNvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubikKIAkJaW50CQkJYmF0 Y2hfbWlzbWF0Y2hlZF9jb3VudCA9IDA7CiAJCWludAkJCWJhdGNoX3NraXBwZWRfY291bnQgPSAw OwogCQlpbnQJCQliYXRjaF9pbnN1ZmZwZXJtX2NvdW50ID0gMDsKKwkJaW50CQkJYmF0Y2hfbm9f ZHJpZnQgPSAwOwogCQlpbnQJCQliYXRjaF9taXNzaW5nX2NvdW50OwogCQlSZWxhdGlvbglzZXF1 ZW5jZV9yZWwgPSBOVUxMOwogCkBAIC01MDUsMjggKzYwOCwyOCBAQCBjb3B5X3NlcXVlbmNlcyhX YWxSZWNlaXZlckNvbm4gKmNvbm4pCiAJCQl9CiAKIAkJCXN5bmNfc3RhdHVzID0gZ2V0X2FuZF92 YWxpZGF0ZV9zZXFfaW5mbyhzbG90LCAmc2VxdWVuY2VfcmVsLAotCQkJCQkJCQkJCQkJCSZzZXFp bmZvLCAmc2VxaWR4KTsKLQkJCWlmIChzeW5jX3N0YXR1cyA9PSBDT1BZU0VRX1NVQ0NFU1MpCi0J CQkJc3luY19zdGF0dXMgPSBjb3B5X3NlcXVlbmNlKHNlcWluZm8sCi0JCQkJCQkJCQkJCXNlcXVl bmNlX3JlbC0+cmRfcmVsLT5yZWxvd25lcik7CisJCQkJCQkJCQkJCQkJJnNlcWluZm8sICZzZXFp ZHgsIHNlcWluZm9zKTsKKworCQkJaWYgKHN5bmNfc3RhdHVzID09IENPUFlTRVFfQUxMT1dFRCkK KwkJCQlzeW5jX3N0YXR1cyA9IGNvcHlfc2VxdWVuY2Uoc2VxaW5mbywgc2VxdWVuY2VfcmVsLCB1 cGRhdGVfbHNuKTsKIAogCQkJc3dpdGNoIChzeW5jX3N0YXR1cykKIAkJCXsKIAkJCQljYXNlIENP UFlTRVFfU1VDQ0VTUzoKIAkJCQkJZWxvZyhERUJVRzEsCi0JCQkJCQkgImxvZ2ljYWwgcmVwbGlj YXRpb24gc3luY2hyb25pemF0aW9uIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiLCBzZXF1ZW5jZSBc IiVzLiVzXCIgaGFzIGZpbmlzaGVkIiwKLQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+bmFtZSwgc2Vx aW5mby0+bnNwbmFtZSwKLQkJCQkJCSBzZXFpbmZvLT5zZXFuYW1lKTsKKwkJCQkJCSAibG9naWNh bCByZXBsaWNhdGlvbiBzeW5jaHJvbml6YXRpb24gaGFzIHVwZGF0ZWQgc2VxdWVuY2UgXCIlcy4l c1wiIGluIHN1YnNjcmlwdGlvbiBcIiVzXCIiLAorCQkJCQkJIHNlcWluZm8tPm5zcG5hbWUsIHNl cWluZm8tPnNlcW5hbWUsIE15U3Vic2NyaXB0aW9uLT5uYW1lKTsKIAkJCQkJYmF0Y2hfc3VjY2Vl ZGVkX2NvdW50Kys7CisJCQkJCXNlcXVlbmNlX2NvcGllZCA9IHRydWU7CiAJCQkJCWJyZWFrOwog CQkJCWNhc2UgQ09QWVNFUV9NSVNNQVRDSDoKIAogCQkJCQkvKgotCQkJCQkgKiBSZW1lbWJlciBt aXNtYXRjaGVkIHNlcXVlbmNlcyBpbiBhIGxvbmctbGl2ZWQgbWVtb3J5Ci0JCQkJCSAqIGNvbnRl eHQgc2luY2UgdGhlc2Ugd2lsbCBiZSB1c2VkIGFmdGVyIHRoZSB0cmFuc2FjdGlvbgotCQkJCQkg KiBpcyBjb21taXR0ZWQuCisJCQkJCSAqIFJlbWVtYmVyIG1pc21hdGNoZWQgc2VxdWVuY2VzIGlu IFNlcXVlbmNlU3luY0NvbnRleHQKKwkJCQkJICogc2luY2UgdGhlc2Ugd2lsbCBiZSB1c2VkIGFm dGVyIHRoZSB0cmFuc2FjdGlvbiBpcworCQkJCQkgKiBjb21taXR0ZWQuCiAJCQkJCSAqLwotCQkJ CQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKwkJCQkJb2xk Y3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFNlcXVlbmNlU3luY0NvbnRleHQpOwogCQkJCQlt aXNtYXRjaGVkX3NlcXNfaWR4ID0gbGFwcGVuZF9pbnQobWlzbWF0Y2hlZF9zZXFzX2lkeCwKIAkJ CQkJCQkJCQkJCQkgIHNlcWlkeCk7CiAJCQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgp OwpAQCAtNTM1LDExICs2MzgsMTEgQEAgY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpj b25uKQogCQkJCWNhc2UgQ09QWVNFUV9JTlNVRkZJQ0lFTlRfUEVSTToKIAogCQkJCQkvKgotCQkJ CQkgKiBSZW1lbWJlciBzZXF1ZW5jZXMgd2l0aCBpbnN1ZmZpY2llbnQgcHJpdmlsZWdlcyBpbiBh Ci0JCQkJCSAqIGxvbmctbGl2ZWQgbWVtb3J5IGNvbnRleHQgc2luY2UgdGhlc2Ugd2lsbCBiZSB1 c2VkCi0JCQkJCSAqIGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCisJCQkJCSAq IFJlbWVtYmVyIHNlcXVlbmNlcyB3aXRoIGluc3VmZmljaWVudCBwcml2aWxlZ2VzIGluCisJCQkJ CSAqIFNlcXVlbmNlU3luY0NvbnRleHQgc2luY2UgdGhlc2Ugd2lsbCBiZSB1c2VkIGFmdGVyIHRo ZQorCQkJCQkgKiB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCiAJCQkJCSAqLwotCQkJCQlvbGRj dHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKwkJCQkJb2xkY3R4ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKFNlcXVlbmNlU3luY0NvbnRleHQpOwogCQkJCQlpbnN1ZmZw ZXJtX3NlcXNfaWR4ID0gbGFwcGVuZF9pbnQoaW5zdWZmcGVybV9zZXFzX2lkeCwKIAkJCQkJCQkJ CQkJCQkgIHNlcWlkeCk7CiAJCQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwpAQCAt NTYyLDYgKzY2NSwxMyBAQCBjb3B5X3NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4pCiAJ CQkJCQliYXRjaF9za2lwcGVkX2NvdW50Kys7CiAJCQkJCX0KIAkJCQkJYnJlYWs7CisJCQkJY2Fz ZSBDT1BZU0VRX05PX0RSSUZUOgorCQkJCQkvKiBOb3RoaW5nIHRvIGRvICovCisJCQkJCWJhdGNo X25vX2RyaWZ0Kys7CisJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6CisJCQkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgc2VxdWVuY2UgcmVwbGljYXRpb24gcmVzdWx0OiAlZCIsIChpbnQpIHN5 bmNfc3RhdHVzKTsKKwogCQkJfQogCiAJCQlpZiAoc2VxdWVuY2VfcmVsKQpAQCAtNTc2LDE0ICs2 ODYsMTUgQEAgY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uKQogCQliYXRjaF9t aXNzaW5nX2NvdW50ID0gYmF0Y2hfc2l6ZSAtIChiYXRjaF9zdWNjZWVkZWRfY291bnQgKwogCQkJ CQkJCQkJCQliYXRjaF9taXNtYXRjaGVkX2NvdW50ICsKIAkJCQkJCQkJCQkJYmF0Y2hfaW5zdWZm cGVybV9jb3VudCArCi0JCQkJCQkJCQkJCWJhdGNoX3NraXBwZWRfY291bnQpOworCQkJCQkJCQkJ CQliYXRjaF9za2lwcGVkX2NvdW50ICsKKwkJCQkJCQkJCQkJYmF0Y2hfbm9fZHJpZnQpOwogCiAJ CWVsb2coREVCVUcxLAotCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHNlcXVlbmNlIHN5bmNocm9u aXphdGlvbiBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiAtIGJhdGNoICMlZCA9ICVkIGF0dGVtcHRl ZCwgJWQgc3VjY2VlZGVkLCAlZCBtaXNtYXRjaGVkLCAlZCBpbnN1ZmZpY2llbnQgcGVybWlzc2lv biwgJWQgbWlzc2luZyBmcm9tIHB1Ymxpc2hlciwgJWQgc2tpcHBlZCIsCisJCQkgImxvZ2ljYWwg cmVwbGljYXRpb24gc2VxdWVuY2Ugc3luY2hyb25pemF0aW9uIGZvciBzdWJzY3JpcHRpb24gXCIl c1wiIC0gYmF0Y2ggIyVkID0gJWQgYXR0ZW1wdGVkLCAlZCBzdWNjZWVkZWQsICVkIG1pc21hdGNo ZWQsICVkIGluc3VmZmljaWVudCBwZXJtaXNzaW9uLCAlZCBtaXNzaW5nIGZyb20gcHVibGlzaGVy LCAlZCBza2lwcGVkLCAlZCBubyBkcmlmdCIsCiAJCQkgTXlTdWJzY3JpcHRpb24tPm5hbWUsCiAJ CQkgKGN1cl9iYXRjaF9iYXNlX2luZGV4IC8gTUFYX1NFUVVFTkNFU19TWU5DX1BFUl9CQVRDSCkg KyAxLAogCQkJIGJhdGNoX3NpemUsIGJhdGNoX3N1Y2NlZWRlZF9jb3VudCwgYmF0Y2hfbWlzbWF0 Y2hlZF9jb3VudCwKLQkJCSBiYXRjaF9pbnN1ZmZwZXJtX2NvdW50LCBiYXRjaF9taXNzaW5nX2Nv dW50LCBiYXRjaF9za2lwcGVkX2NvdW50KTsKKwkJCSBiYXRjaF9pbnN1ZmZwZXJtX2NvdW50LCBi YXRjaF9taXNzaW5nX2NvdW50LCBiYXRjaF9za2lwcGVkX2NvdW50LCBiYXRjaF9ub19kcmlmdCk7 CiAKIAkJLyogQ29tbWl0IHRoaXMgYmF0Y2gsIGFuZCBwcmVwYXJlIGZvciBuZXh0IGJhdGNoICov CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAtNjExLDQ3ICs3MjIsNTAgQEAgY29w eV9zZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uKQogCiAJLyogUmVwb3J0IG1pc21hdGNo ZXMsIHBlcm1pc3Npb24gaXNzdWVzLCBvciBtaXNzaW5nIHNlcXVlbmNlcyAqLwogCXJlcG9ydF9z ZXF1ZW5jZV9lcnJvcnMobWlzbWF0Y2hlZF9zZXFzX2lkeCwgaW5zdWZmcGVybV9zZXFzX2lkeCwK LQkJCQkJCSAgIG1pc3Npbmdfc2Vxc19pZHgpOworCQkJCQkJICAgbWlzc2luZ19zZXFzX2lkeCwg c2VxaW5mb3MpOworCisJcmV0dXJuIHNlcXVlbmNlX2NvcGllZDsKIH0KIAogLyoKICAqIElkZW50 aWZpZXMgc2VxdWVuY2VzIHRoYXQgcmVxdWlyZSBzeW5jaHJvbml6YXRpb24gYW5kIGluaXRpYXRl cyB0aGUKICAqIHN5bmNocm9uaXphdGlvbiBwcm9jZXNzLgorICoKKyAqIFJldHVybnMgdHJ1ZSBp ZiBzZXF1ZW5jZXMgaGF2ZSBiZWVuIHVwZGF0ZWQuCiAgKi8KLXN0YXRpYyB2b2lkCi1Mb2dpY2Fs UmVwU3luY1NlcXVlbmNlcyh2b2lkKQorc3RhdGljIGJvb2wKK0xvZ2ljYWxSZXBTeW5jU2VxdWVu Y2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwgYm9vbCB1cGRhdGVfbHNuKQogewotCWNoYXIJICAg KmVycjsKLQlib29sCQltdXN0X3VzZV9wYXNzd29yZDsKIAlSZWxhdGlvbglyZWw7CiAJSGVhcFR1 cGxlCXR1cDsKLQlTY2FuS2V5RGF0YSBza2V5WzJdOworCVNjYW5LZXlEYXRhIHNrZXlbMV07CiAJ U3lzU2NhbkRlc2Mgc2NhbjsKIAlPaWQJCQlzdWJpZCA9IE15TG9naWNhbFJlcFdvcmtlci0+c3Vi aWQ7Ci0JU3RyaW5nSW5mb0RhdGEgYXBwX25hbWU7CisJYm9vbAkJc2VxdWVuY2VfY29waWVkID0g ZmFsc2U7CisJTGlzdAkgICAqc2VxaW5mb3MgPSBOSUw7CisJTWVtb3J5Q29udGV4dCBvbGRjdHg7 CisKKwlBc3NlcnQoU2VxdWVuY2VTeW5jQ29udGV4dCk7CiAKIAlTdGFydFRyYW5zYWN0aW9uQ29t bWFuZCgpOwogCiAJcmVsID0gdGFibGVfb3BlbihTdWJzY3JpcHRpb25SZWxSZWxhdGlvbklkLCBB Y2Nlc3NTaGFyZUxvY2spOwogCisJLyogU2NhbiBmb3IgYWxsIHNlcXVlbmNlcyBiZWxvbmdpbmcg dG8gdGhpcyBzdWJzY3JpcHRpb24gKi8KIAlTY2FuS2V5SW5pdCgmc2tleVswXSwKIAkJCQlBbnVt X3BnX3N1YnNjcmlwdGlvbl9yZWxfc3JzdWJpZCwKIAkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIs IEZfT0lERVEsCiAJCQkJT2JqZWN0SWRHZXREYXR1bShzdWJpZCkpOwogCi0JU2NhbktleUluaXQo JnNrZXlbMV0sCi0JCQkJQW51bV9wZ19zdWJzY3JpcHRpb25fcmVsX3Nyc3Vic3RhdGUsCi0JCQkJ QlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX0NIQVJFUSwKLQkJCQlDaGFyR2V0RGF0dW0oU1VCUkVM X1NUQVRFX0lOSVQpKTsKLQogCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocmVsLCBJbnZhbGlk T2lkLCBmYWxzZSwKLQkJCQkJCQkgIE5VTEwsIDIsIHNrZXkpOworCQkJCQkJCSAgTlVMTCwgMSwg c2tleSk7CisKIAl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXAgPSBzeXN0YWJsZV9nZXRuZXh0 KHNjYW4pKSkKIAl7CiAJCUZvcm1fcGdfc3Vic2NyaXB0aW9uX3JlbCBzdWJyZWw7CiAJCUxvZ2lj YWxSZXBTZXF1ZW5jZUluZm8gKnNlcTsKIAkJUmVsYXRpb24Jc2VxdWVuY2VfcmVsOwotCQlNZW1v cnlDb250ZXh0IG9sZGN0eDsKKwkJY2hhcgkJcmVsc3RhdGU7CiAKIAkJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKIApAQCAtNjcwLDE4ICs3ODQsMjEgQEAgTG9naWNhbFJlcFN5bmNTZXF1ZW5jZXMo dm9pZCkKIAkJCWNvbnRpbnVlOwogCQl9CiAKKwkJcmVsc3RhdGUgPSBzdWJyZWwtPnNyc3Vic3Rh dGU7CisKKwkJQXNzZXJ0KHJlbHN0YXRlID09IFNVQlJFTF9TVEFURV9JTklUIHx8IHJlbHN0YXRl ID09IFNVQlJFTF9TVEFURV9SRUFEWSk7CisKIAkJLyoKIAkJICogV29ya2VyIG5lZWRzIHRvIHBy b2Nlc3Mgc2VxdWVuY2VzIGFjcm9zcyB0cmFuc2FjdGlvbiBib3VuZGFyeSwgc28KLQkJICogYWxs b2NhdGUgdGhlbSB1bmRlciBsb25nLWxpdmVkIGNvbnRleHQuCisJCSAqIGFsbG9jYXRlIHRoZW0g dW5kZXIgU2VxdWVuY2VTeW5jQ29udGV4dC4KIAkJICovCi0JCW9sZGN0eCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwotCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhTZXF1ZW5jZVN5bmNDb250ZXh0KTsKIAkJc2VxID0gcGFsbG9jMF9vYmplY3QoTG9naWNh bFJlcFNlcXVlbmNlSW5mbyk7CiAJCXNlcS0+bG9jYWxyZWxpZCA9IHN1YnJlbC0+c3JyZWxpZDsK IAkJc2VxLT5uc3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNl KHNlcXVlbmNlX3JlbCkpOwogCQlzZXEtPnNlcW5hbWUgPSBwc3RyZHVwKFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHNlcXVlbmNlX3JlbCkpOworCQlzZXEtPnJlbHN0YXRlID0gcmVsc3RhdGU7CiAJ CXNlcWluZm9zID0gbGFwcGVuZChzZXFpbmZvcywgc2VxKTsKLQogCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3R4KTsKIAogCQl0YWJsZV9jbG9zZShzZXF1ZW5jZV9yZWwsIE5vTG9jayk7CkBA IC02OTcsMzYgKzgxNCwxNiBAQCBMb2dpY2FsUmVwU3luY1NlcXVlbmNlcyh2b2lkKQogCSAqIEV4 aXQgZWFybHkgaWYgbm8gY2F0YWxvZyBlbnRyaWVzIGZvdW5kLCBsaWtlbHkgZHVlIHRvIGNvbmN1 cnJlbnQgZHJvcHMuCiAJICovCiAJaWYgKCFzZXFpbmZvcykKLQkJcmV0dXJuOwotCi0JLyogSXMg dGhlIHVzZSBvZiBhIHBhc3N3b3JkIG1hbmRhdG9yeT8gKi8KLQltdXN0X3VzZV9wYXNzd29yZCA9 IE15U3Vic2NyaXB0aW9uLT5wYXNzd29yZHJlcXVpcmVkICYmCi0JCSFNeVN1YnNjcmlwdGlvbi0+ b3duZXJzdXBlcnVzZXI7CisJCXJldHVybiBmYWxzZTsKIAotCWluaXRTdHJpbmdJbmZvKCZhcHBf bmFtZSk7Ci0JYXBwZW5kU3RyaW5nSW5mbygmYXBwX25hbWUsICJwZ18ldV9zZXF1ZW5jZV9zeW5j XyIgVUlOVDY0X0ZPUk1BVCwKLQkJCQkJIE15U3Vic2NyaXB0aW9uLT5vaWQsIEdldFN5c3RlbUlk ZW50aWZpZXIoKSk7CisJLyogUHJvY2VzcyBzZXF1ZW5jZXMgKi8KKwlzZXF1ZW5jZV9jb3BpZWQg PSBjb3B5X3NlcXVlbmNlcyhjb25uLCBzZXFpbmZvcywgdXBkYXRlX2xzbik7CiAKLQkvKgotCSAq IEVzdGFibGlzaCB0aGUgY29ubmVjdGlvbiB0byB0aGUgcHVibGlzaGVyIGZvciBzZXF1ZW5jZSBz eW5jaHJvbml6YXRpb24uCi0JICovCi0JTG9nUmVwV29ya2VyV2FsUmN2Q29ubiA9Ci0JCXdhbHJj dl9jb25uZWN0KE15U3Vic2NyaXB0aW9uLT5jb25uaW5mbywgdHJ1ZSwgdHJ1ZSwKLQkJCQkJICAg bXVzdF91c2VfcGFzc3dvcmQsCi0JCQkJCSAgIGFwcF9uYW1lLmRhdGEsICZlcnIpOwotCWlmIChM b2dSZXBXb3JrZXJXYWxSY3ZDb25uID09IE5VTEwpCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJZXJy Y29kZShFUlJDT0RFX0NPTk5FQ1RJT05fRkFJTFVSRSksCi0JCQkJZXJybXNnKCJzZXF1ZW5jZXN5 bmMgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGNvdWxkIG5vdCBjb25uZWN0IHRvIHRo ZSBwdWJsaXNoZXI6ICVzIiwKLQkJCQkJICAgTXlTdWJzY3JpcHRpb24tPm5hbWUsIGVycikpOwot Ci0JcGZyZWUoYXBwX25hbWUuZGF0YSk7Ci0KLQljb3B5X3NlcXVlbmNlcyhMb2dSZXBXb3JrZXJX YWxSY3ZDb25uKTsKKwlyZXR1cm4gc2VxdWVuY2VfY29waWVkOwogfQogCiAvKgotICogRXhlY3V0 ZSB0aGUgaW5pdGlhbCBzeW5jIHdpdGggZXJyb3IgaGFuZGxpbmcuIERpc2FibGUgdGhlIHN1YnNj cmlwdGlvbiwKKyAqIEV4ZWN1dGUgdGhlIHNlcXVlbmNlIHN5bmMgd2l0aCBlcnJvciBoYW5kbGlu Zy4gRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uLAogICogaWYgcmVxdWlyZWQuCiAgKgogICogTm90 ZSB0aGF0IHdlIGRvbid0IGhhbmRsZSBGQVRBTCBlcnJvcnMgd2hpY2ggYXJlIHByb2JhYmx5IGJl Y2F1c2Ugb2Ygc3lzdGVtCkBAIC03MzksOCArODM2LDExNyBAQCBzdGFydF9zZXF1ZW5jZV9zeW5j KHZvaWQpCiAKIAlQR19UUlkoKTsKIAl7Ci0JCS8qIENhbGwgaW5pdGlhbCBzeW5jLiAqLwotCQlM b2dpY2FsUmVwU3luY1NlcXVlbmNlcygpOworCQljaGFyCSAgICplcnI7CisJCWJvb2wJCW11c3Rf dXNlX3Bhc3N3b3JkOworCQlTdHJpbmdJbmZvRGF0YSBhcHBfbmFtZTsKKwkJbG9uZwkJc2xlZXBf bXMgPSBTRVFTWU5DX01JTl9TTEVFUF9NUzsKKwkJVGltZXN0YW1wVHogbmV4dF9sc25fdXBkYXRl ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCisJCS8qIElzIHRoZSB1c2Ugb2YgYSBwYXNzd29y ZCBtYW5kYXRvcnk/ICovCisJCW11c3RfdXNlX3Bhc3N3b3JkID0gTXlTdWJzY3JpcHRpb24tPnBh c3N3b3JkcmVxdWlyZWQgJiYKKwkJCSFNeVN1YnNjcmlwdGlvbi0+b3duZXJzdXBlcnVzZXI7CisK KwkJaW5pdFN0cmluZ0luZm8oJmFwcF9uYW1lKTsKKwkJYXBwZW5kU3RyaW5nSW5mbygmYXBwX25h bWUsICJwZ18ldV9zZXF1ZW5jZV9zeW5jXyIgVUlOVDY0X0ZPUk1BVCwKKwkJCQkJCSBNeVN1YnNj cmlwdGlvbi0+b2lkLCBHZXRTeXN0ZW1JZGVudGlmaWVyKCkpOworCisJCS8qCisJCSAqIEVzdGFi bGlzaCB0aGUgY29ubmVjdGlvbiB0byB0aGUgcHVibGlzaGVyIGZvciBzZXF1ZW5jZQorCQkgKiBz eW5jaHJvbml6YXRpb24uCisJCSAqLworCQlMb2dSZXBXb3JrZXJXYWxSY3ZDb25uID0KKwkJCXdh bHJjdl9jb25uZWN0KE15U3Vic2NyaXB0aW9uLT5jb25uaW5mbywgdHJ1ZSwgdHJ1ZSwKKwkJCQkJ CSAgIG11c3RfdXNlX3Bhc3N3b3JkLAorCQkJCQkJICAgYXBwX25hbWUuZGF0YSwgJmVycik7CisJ CWlmIChMb2dSZXBXb3JrZXJXYWxSY3ZDb25uID09IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQllcnJjb2RlKEVSUkNPREVfQ09OTkVDVElPTl9GQUlMVVJFKSwKKwkJCQkJZXJybXNnKCJz ZXF1ZW5jZXN5bmMgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGNvdWxkIG5vdCBjb25u ZWN0IHRvIHRoZSBwdWJsaXNoZXI6ICVzIiwKKwkJCQkJCSAgIE15U3Vic2NyaXB0aW9uLT5uYW1l LCBlcnIpKTsKKworCQlwZnJlZShhcHBfbmFtZS5kYXRhKTsKKworCQkvKgorCQkgKiBJbml0IHRo ZSBTZXF1ZW5jZVN5bmNDb250ZXh0IHdoaWNoIHdlIGNsZWFuIHVwIGFmdGVyIGVhY2ggc2VxdWVu Y2UKKwkJICogc3luY2hyb25pemF0aW9uLgorCQkgKi8KKwkJU2VxdWVuY2VTeW5jQ29udGV4dCA9 IEFsbG9jU2V0Q29udGV4dENyZWF0ZShBcHBseUNvbnRleHQsCisJCQkJCQkJCQkJCQkJIlNlcXVl bmNlU3luY0NvbnRleHQiLAorCQkJCQkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOwor CisJCWZvciAoOzspCisJCXsKKwkJCWJvb2wJCXNlcXVlbmNlX2NvcGllZCA9IGZhbHNlOworCQkJ TWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCQlib29sCQl1cGRhdGVfbHNuOworCQkJVGltZXN0YW1w VHogbm93ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCisJCQlDSEVDS19GT1JfSU5URVJSVVBU UygpOworCisJCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJCXsKKwkJCQlDb25maWdSZWxv YWRQZW5kaW5nID0gZmFsc2U7CisJCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJ CQl9CisKKwkJCS8qIFByb2Nlc3MgYW55IGludmFsaWRhdGlvbiBtZXNzYWdlcyB0aGF0IG1pZ2h0 IGhhdmUgYWNjdW11bGF0ZWQgKi8KKwkJCUFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCk7CisJ CQltYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKCk7CisKKwkJCS8qCisJCQkgKiBXZSBhdm9pZCB1 cGRhdGluZyBwZ19zdWJzY3JpcHRpb25fcmVsJ3MgcGFnZSBMU04gaW4gZXZlcnkgY3ljbGUKKwkJ CSAqIHRvIHByZXZlbnQgZXhjZXNzaXZlIGNhdGFsb2cgaW52YWxpZGF0aW9ucywgd2hpY2ggd291 bGQgc2xvdworCQkJICogdGhlIGFwcGx5IHdvcmtlciB0aGF0IHJlbGllcyBvbiB0aGlzIGNhY2hl IChzZWUKKwkJCSAqIEZldGNoUmVsYXRpb25TdGF0ZXMpLiBJbnN0ZWFkLCB1cGRhdGVzIG9jY3Vy IGV2ZXJ5IDMwIHNlY29uZHMuCisJCQkgKi8KKwkJCXVwZGF0ZV9sc24gPSAobm93ID49IG5leHRf bHNuX3VwZGF0ZSk7CisKKwkJCS8qCisJCQkgKiBQZXJmb3JtIHNlcXVlbmNlIHN5bmNocm9uaXph dGlvbiB1bmRlciBTZXF1ZW5jZVN5bmNDb250ZXh0IGFuZAorCQkJICogcmVzZXQgaXQgZWFjaCBj eWNsZSB0byBhdm9pZCBtYW51YWwgbWVtb3J5IG1hbmFnZW1lbnQuCisJCQkgKi8KKwkJCW9sZGN0 eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTZXF1ZW5jZVN5bmNDb250ZXh0KTsKKworCQkJLyoK KwkJCSAqIFN5bmNocm9uaXplIGFsbCBzZXF1ZW5jZXMgKGJvdGggUkVBRFkgYW5kIElOSVQgc3Rh dGVzKS4KKwkJCSAqLworCQkJc2VxdWVuY2VfY29waWVkID0gTG9naWNhbFJlcFN5bmNTZXF1ZW5j ZXMoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwKKwkJCQkJCQkJCQkJCQkgIHVwZGF0ZV9sc24pOwor CisJCQlNZW1vcnlDb250ZXh0UmVzZXQoU2VxdWVuY2VTeW5jQ29udGV4dCk7CisJCQlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKworCQkJLyoKKwkJCSAqIEFkanVzdCBzbGVlcCBpbnRl cnZhbCBiYXNlZCBvbiBzeW5jIGFjdGl2aXR5LiBJZiBzZXF1ZW5jZXMgd2VyZQorCQkJICogY29w aWVkLCByZXNldCB0byB0aGUgbWluaW11bSBpbnRlcnZhbCB0byBwb2xsIG1vcmUgZnJlcXVlbnRs eS4KKwkJCSAqIE90aGVyd2lzZSwgZXhwb25lbnRpYWxseSBiYWNrIG9mZiB1cCB0byB0aGUgbWF4 aW11bSBpbnRlcnZhbC4KKwkJCSAqLworCQkJaWYgKHNlcXVlbmNlX2NvcGllZCkKKwkJCQlzbGVl cF9tcyA9IFNFUVNZTkNfTUlOX1NMRUVQX01TOworCQkJZWxzZQorCQkJCXNsZWVwX21zID0gTWlu KHNsZWVwX21zICogMiwgU0VRU1lOQ19NQVhfU0xFRVBfTVMpOworCisJCQkvKiBSZWZyZXNoIHRp bWVzdGFtcCBhZnRlciBwb3RlbnRpYWxseSB0aW1lLWNvbnN1bWluZyBzeW5jIHdvcmsgKi8KKwkJ CW5vdyA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKworCQkJLyoKKwkJCSAqIFNjaGVkdWxlIHRo ZSBuZXh0IExTTiB1cGRhdGUuIElmIHdlIGp1c3QgcGVyZm9ybWVkIGFuIHVwZGF0ZSwKKwkJCSAq IHNldCB0aGUgbmV4dCB1cGRhdGUgdGltZSB0byAzMCBzZWNvbmRzIGZyb20gbm93LiBPdGhlcndp c2UsCisJCQkgKiBlbnN1cmUgdGhlIHNsZWVwIGludGVydmFsIGRvZXNuJ3QgZXhjZWVkIHRoZSB0 aW1lIHJlbWFpbmluZworCQkJICogdW50aWwgdGhlIG5leHQgdXBkYXRlLgorCQkJICovCisJCQlp ZiAodXBkYXRlX2xzbikKKwkJCQluZXh0X2xzbl91cGRhdGUgPSBUaW1lc3RhbXBUelBsdXNNaWxs aXNlY29uZHMobm93LCBTRVFTWU5DX01BWF9TTEVFUF9NUyk7CisJCQllbHNlCisJCQkJc2xlZXBf bXMgPSBNaW4oc2xlZXBfbXMsIFRpbWVzdGFtcERpZmZlcmVuY2VNaWxsaXNlY29uZHMobm93LCBu ZXh0X2xzbl91cGRhdGUpKTsKKworCQkJLyogU2xlZXAgZm9yIHRoZSBjb25maWd1cmVkIGludGVy dmFsICovCisJCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCisJCQkJCQkJIFdMX0xBVENIX1NF VCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSBzbGVlcF9tcywK KwkJCQkJCQkgV0FJVF9FVkVOVF9MT0dJQ0FMX1NFUVNZTkNfTUFJTik7CisJCQlSZXNldExhdGNo KE15TGF0Y2gpOworCQl9CiAJfQogCVBHX0NBVENIKCk7CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zeW5jdXRpbHMuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvc3luY3V0aWxzLmMKaW5kZXggZWY2MWNhMDQzN2QuLjNhMGRjODY2OWY5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3N5bmN1dGlscy5j CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc3luY3V0aWxzLmMKQEAgLTE3 Miw3ICsxNzIsNyBAQCBQcm9jZXNzU3luY2luZ1JlbGF0aW9ucyhYTG9nUmVjUHRyIGN1cnJlbnRf bHNuKQogCiAJCWNhc2UgV09SS0VSVFlQRV9BUFBMWToKIAkJCVByb2Nlc3NTeW5jaW5nVGFibGVz Rm9yQXBwbHkoY3VycmVudF9sc24pOwotCQkJUHJvY2Vzc1NlcXVlbmNlc0ZvclN5bmMoKTsKKwkJ CU1heWJlTGF1bmNoU2VxdWVuY2VTeW5jV29ya2VyKCk7CiAJCQlicmVhazsKIAogCQljYXNlIFdP UktFUlRZUEVfU0VRVUVOQ0VTWU5DOgpAQCAtMTkxLDEzICsxOTEsMTMgQEAgUHJvY2Vzc1N5bmNp bmdSZWxhdGlvbnMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKICAqCiAgKiBUaGUgcGdfc3Vic2Ny aXB0aW9uX3JlbCBjYXRhbG9nIGlzIHNoYXJlZCBieSB0YWJsZXMgYW5kIHNlcXVlbmNlcy4gQ2hh bmdlcwogICogdG8gZWl0aGVyIHNlcXVlbmNlcyBvciB0YWJsZXMgY2FuIGFmZmVjdCB0aGUgdmFs aWRpdHkgb2YgcmVsYXRpb24gc3RhdGVzLCBzbwotICogd2UgaWRlbnRpZnkgbm9uLVJFQURZIHRh YmxlcyBhbmQgbm9uLVJFQURZIHNlcXVlbmNlcyB0b2dldGhlciB0byBlbnN1cmUKKyAqIHdlIGlk ZW50aWZ5IG5vbi1SRUFEWSB0YWJsZXMgYW5kIHNlcXVlbmNlcyAoaW4gYW55IHN0YXRlKSB0b2dl dGhlciB0byBlbnN1cmUKICAqIGNvbnNpc3RlbmN5LgogICoKICAqIGhhc19wZW5kaW5nX3N1YnRh YmxlczogdHJ1ZSBpZiB0aGUgc3Vic2NyaXB0aW9uIGhhcyBvbmUgb3IgbW9yZSB0YWJsZXMgdGhh dAogICogYXJlIG5vdCBpbiBSRUFEWSBzdGF0ZSwgb3RoZXJ3aXNlIGZhbHNlLgogICogaGFzX3Bl bmRpbmdfc3Vic2VxdWVuY2VzOiB0cnVlIGlmIHRoZSBzdWJzY3JpcHRpb24gaGFzIG9uZSBvciBt b3JlIHNlcXVlbmNlcwotICogdGhhdCBhcmUgbm90IGluIFJFQURZIHN0YXRlLCBvdGhlcndpc2Ug ZmFsc2UuCisgKiAoaW4gYW55IHN0YXRlKSwgb3RoZXJ3aXNlIGZhbHNlLgogICovCiB2b2lkCiBG ZXRjaFJlbGF0aW9uU3RhdGVzKGJvb2wgKmhhc19wZW5kaW5nX3N1YnRhYmxlcywKQEAgLTIwNSwy MyArMjA1LDIyIEBAIEZldGNoUmVsYXRpb25TdGF0ZXMoYm9vbCAqaGFzX3BlbmRpbmdfc3VidGFi bGVzLAogCQkJCQlib29sICpzdGFydGVkX3R4KQogewogCS8qCi0JICogaGFzX3N1YnRhYmxlcyBh bmQgaGFzX3N1YnNlcXVlbmNlc19ub25fcmVhZHkgYXJlIGRlY2xhcmVkIGFzIHN0YXRpYywKLQkg KiBzaW5jZSB0aGUgc2FtZSB2YWx1ZSBjYW4gYmUgdXNlZCB1bnRpbCB0aGUgc3lzdGVtIHRhYmxl IGlzIGludmFsaWRhdGVkLgorCSAqIGhhc19zdWJ0YWJsZXMgYW5kIGhhc19zdWJzZXF1ZW5jZXMg YXJlIGRlY2xhcmVkIGFzIHN0YXRpYywgc2luY2UgdGhlCisJICogc2FtZSB2YWx1ZSBjYW4gYmUg dXNlZCB1bnRpbCB0aGUgc3lzdGVtIHRhYmxlIGlzIGludmFsaWRhdGVkLgogCSAqLwogCXN0YXRp YyBib29sIGhhc19zdWJ0YWJsZXMgPSBmYWxzZTsKLQlzdGF0aWMgYm9vbCBoYXNfc3Vic2VxdWVu Y2VzX25vbl9yZWFkeSA9IGZhbHNlOworCXN0YXRpYyBib29sIGhhc19zdWJzZXF1ZW5jZXMgPSBm YWxzZTsKIAogCSpzdGFydGVkX3R4ID0gZmFsc2U7Ci0KIAlpZiAocmVsYXRpb25fc3RhdGVzX3Zh bGlkaXR5ICE9IFNZTkNfUkVMQVRJT05TX1NUQVRFX1ZBTElEKQogCXsKIAkJTWVtb3J5Q29udGV4 dCBvbGRjdHg7CiAJCUxpc3QJICAgKnJzdGF0ZXM7CisJCUxpc3QJICAgKnNlcV9zdGF0ZXM7CiAJ CVN1YnNjcmlwdGlvblJlbFN0YXRlICpyc3RhdGU7CiAKIAkJcmVsYXRpb25fc3RhdGVzX3ZhbGlk aXR5ID0gU1lOQ19SRUxBVElPTlNfU1RBVEVfUkVCVUlMRF9TVEFSVEVEOwotCQloYXNfc3Vic2Vx dWVuY2VzX25vbl9yZWFkeSA9IGZhbHNlOwotCisJCWhhc19zdWJzZXF1ZW5jZXMgPSBmYWxzZTsK IAkJLyogQ2xlYW4gdGhlIG9sZCBsaXN0cy4gKi8KIAkJbGlzdF9mcmVlX2RlZXAodGFibGVfc3Rh dGVzX25vdF9yZWFkeSk7CiAJCXRhYmxlX3N0YXRlc19ub3RfcmVhZHkgPSBOSUw7CkBAIC0yMzEs MjcgKzIzMCwyOCBAQCBGZXRjaFJlbGF0aW9uU3RhdGVzKGJvb2wgKmhhc19wZW5kaW5nX3N1YnRh YmxlcywKIAkJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJCQkqc3RhcnRlZF90eCA9IHRy dWU7CiAJCX0KLQotCQkvKiBGZXRjaCB0YWJsZXMgYW5kIHNlcXVlbmNlcyB0aGF0IGFyZSBpbiBu b24tUkVBRFkgc3RhdGUuICovCi0JCXJzdGF0ZXMgPSBHZXRTdWJzY3JpcHRpb25SZWxhdGlvbnMo TXlTdWJzY3JpcHRpb24tPm9pZCwgdHJ1ZSwgdHJ1ZSwKKwkJLyogRmV0Y2ggdGFibGVzIHRoYXQg YXJlIGluIG5vbi1SRUFEWSBzdGF0ZS4gKi8KKwkJcnN0YXRlcyA9IEdldFN1YnNjcmlwdGlvblJl bGF0aW9ucyhNeVN1YnNjcmlwdGlvbi0+b2lkLCB0cnVlLCBmYWxzZSwKIAkJCQkJCQkJCQkgICB0 cnVlKTsKLQorCQkvKiBGZXRjaCBhbGwgc2VxdWVuY2VzIChyZWdhcmRsZXNzIG9mIHN0YXRlKS4g Ki8KKwkJc2VxX3N0YXRlcyA9IEdldFN1YnNjcmlwdGlvblJlbGF0aW9ucyhNeVN1YnNjcmlwdGlv bi0+b2lkLCBmYWxzZSwgdHJ1ZSwKKwkJCQkJCQkJCQkJICBmYWxzZSk7CiAJCS8qIEFsbG9jYXRl IHRoZSB0cmFja2luZyBpbmZvIGluIGEgcGVybWFuZW50IG1lbW9yeSBjb250ZXh0LiAqLwogCQlv bGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQ2FjaGVNZW1vcnlDb250ZXh0KTsKIAkJZm9y ZWFjaF9wdHIoU3Vic2NyaXB0aW9uUmVsU3RhdGUsIHN1YnJlbCwgcnN0YXRlcykKIAkJewotCQkJ aWYgKGdldF9yZWxfcmVsa2luZChzdWJyZWwtPnJlbGlkKSA9PSBSRUxLSU5EX1NFUVVFTkNFKQot CQkJCWhhc19zdWJzZXF1ZW5jZXNfbm9uX3JlYWR5ID0gdHJ1ZTsKLQkJCWVsc2UKLQkJCXsKLQkJ CQlyc3RhdGUgPSBwYWxsb2Nfb2JqZWN0KFN1YnNjcmlwdGlvblJlbFN0YXRlKTsKLQkJCQltZW1j cHkocnN0YXRlLCBzdWJyZWwsIHNpemVvZihTdWJzY3JpcHRpb25SZWxTdGF0ZSkpOwotCQkJCXRh YmxlX3N0YXRlc19ub3RfcmVhZHkgPSBsYXBwZW5kKHRhYmxlX3N0YXRlc19ub3RfcmVhZHksCi0J CQkJCQkJCQkJCQkgcnN0YXRlKTsKLQkJCX0KKwkJCXJzdGF0ZSA9IHBhbGxvY19vYmplY3QoU3Vi c2NyaXB0aW9uUmVsU3RhdGUpOworCQkJbWVtY3B5KHJzdGF0ZSwgc3VicmVsLCBzaXplb2YoU3Vi c2NyaXB0aW9uUmVsU3RhdGUpKTsKKwkJCXRhYmxlX3N0YXRlc19ub3RfcmVhZHkgPSBsYXBwZW5k KHRhYmxlX3N0YXRlc19ub3RfcmVhZHksCisJCQkJCQkJCQkJCSByc3RhdGUpOwogCQl9CisKKwkJ LyogQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzZXF1ZW5jZXMuICovCisJCWhhc19zdWJzZXF1ZW5j ZXMgPSAoc2VxX3N0YXRlcyAhPSBOSUwpOwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4 KTsKIAorCQlsaXN0X2ZyZWVfZGVlcChzZXFfc3RhdGVzKTsKKwogCQkvKgogCQkgKiBEb2VzIHRo ZSBzdWJzY3JpcHRpb24gaGF2ZSB0YWJsZXM/CiAJCSAqCkBAIC0yNzcsNSArMjc3LDUgQEAgRmV0 Y2hSZWxhdGlvblN0YXRlcyhib29sICpoYXNfcGVuZGluZ19zdWJ0YWJsZXMsCiAJCSpoYXNfcGVu ZGluZ19zdWJ0YWJsZXMgPSBoYXNfc3VidGFibGVzOwogCiAJaWYgKGhhc19wZW5kaW5nX3N1YnNl cXVlbmNlcykKLQkJKmhhc19wZW5kaW5nX3N1YnNlcXVlbmNlcyA9IGhhc19zdWJzZXF1ZW5jZXNf bm9uX3JlYWR5OworCQkqaGFzX3BlbmRpbmdfc3Vic2VxdWVuY2VzID0gaGFzX3N1YnNlcXVlbmNl czsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2Vy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGIzODE3 MGYwZmJlLi41MTBmN2MyNDg1YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jCkBAIC01MTAzLDYgKzUxMDMsOSBAQCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZv aWQpCiAJICogd29ya2VyIHdvbid0IHJlc3RhcnQgaWYgdGhlIHN0cmVhbWluZyBvcHRpb24ncyB2 YWx1ZSBpcyBjaGFuZ2VkIGZyb20KIAkgKiAncGFyYWxsZWwnIHRvIGFueSBvdGhlciB2YWx1ZSBv ciB0aGUgc2VydmVyIGRlY2lkZXMgbm90IHRvIHN0cmVhbSB0aGUKIAkgKiBpbi1wcm9ncmVzcyB0 cmFuc2FjdGlvbi4KKwkgKgorCSAqIE5vdGU6IHNvbWUgcGFyYW1ldGVycyBtYXkgbm90IGJlIHJl bGV2YW50IHRvIHRoZSBzZXF1ZW5jZSBzeW5jIHdvcmtlciwKKwkgKiBidXQgZXhpdCBhbnl3YXku CiAJICovCiAJaWYgKHN0cmNtcChuZXdzdWItPmNvbm5pbmZvLCBNeVN1YnNjcmlwdGlvbi0+Y29u bmluZm8pICE9IDAgfHwKIAkJc3RyY21wKG5ld3N1Yi0+bmFtZSwgTXlTdWJzY3JpcHRpb24tPm5h bWUpICE9IDAgfHwKQEAgLTUxMTgsNiArNTEyMSwxMCBAQCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0 aW9uKHZvaWQpCiAJCQllcmVwb3J0KExPRywKIAkJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNh dGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBz dG9wIGJlY2F1c2Ugb2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwKIAkJCQkJCQlNeVN1YnNjcmlwdGlv bi0+bmFtZSkpKTsKKwkJZWxzZSBpZiAoYW1fc2VxdWVuY2VzeW5jX3dvcmtlcigpKQorCQkJZXJl cG9ydChMT0csCisJCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gc2VxdWVuY2Ugc3lu Y2hyb25pemF0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AgYmVj YXVzZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiLAorCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1l KSkpOwogCQllbHNlCiAJCQllcmVwb3J0KExPRywKIAkJCQkJKGVycm1zZygibG9naWNhbCByZXBs aWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCByZXN0YXJ0IGJlY2F1 c2Ugb2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwKQEAgLTUxMzYsNiArNTE0MywxMCBAQCBtYXliZV9y ZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiAJCQllcmVwb3J0KExPRywKIAkJCQkJZXJybXNnKCJs b2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9u IFwiJXNcIiB3aWxsIHN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIG93bmVyJ3Mgc3VwZXJ1 c2VyIHByaXZpbGVnZXMgaGF2ZSBiZWVuIHJldm9rZWQiLAogCQkJCQkJICAgTXlTdWJzY3JpcHRp b24tPm5hbWUpKTsKKwkJZWxzZSBpZiAoYW1fc2VxdWVuY2VzeW5jX3dvcmtlcigpKQorCQkJZXJl cG9ydChMT0csCisJCQkJCWVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBzZXF1ZW5jZSBzeW5j aHJvbml6YXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCBiZWNh dXNlIHRoZSBzdWJzY3JpcHRpb24gb3duZXIncyBzdXBlcnVzZXIgcHJpdmlsZWdlcyBoYXZlIGJl ZW4gcmV2b2tlZCIsCisJCQkJCQkgICBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpOwogCQllbHNlCiAJ CQllcmVwb3J0KExPRywKIAkJCQkJZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBm b3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHJlc3RhcnQgYmVjYXVzZSB0aGUgc3Vic2NyaXB0 aW9uIG93bmVyJ3Mgc3VwZXJ1c2VyIHByaXZpbGVnZXMgaGF2ZSBiZWVuIHJldm9rZWQiLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQg Yi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVzLnR4dAppbmRleCA1 NjA2NTlmOTU2OC4uYzQzZGIwYzYxOTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0CkBAIC02MSw2ICs2MSw3IEBAIElPX1dPUktFUl9NQUlO CSJXYWl0aW5nIGluIG1haW4gbG9vcCBvZiBJTyBXb3JrZXIgcHJvY2Vzcy4iCiBMT0dJQ0FMX0FQ UExZX01BSU4JIldhaXRpbmcgaW4gbWFpbiBsb29wIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gYXBw bHkgcHJvY2Vzcy4iCiBMT0dJQ0FMX0xBVU5DSEVSX01BSU4JIldhaXRpbmcgaW4gbWFpbiBsb29w IG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gbGF1bmNoZXIgcHJvY2Vzcy4iCiBMT0dJQ0FMX1BBUkFM TEVMX0FQUExZX01BSU4JIldhaXRpbmcgaW4gbWFpbiBsb29wIG9mIGxvZ2ljYWwgcmVwbGljYXRp b24gcGFyYWxsZWwgYXBwbHkgcHJvY2Vzcy4iCitMT0dJQ0FMX1NFUVNZTkNfTUFJTgkiV2FpdGlu ZyBpbiBtYWluIGxvb3Agb2YgbG9naWNhbCByZXBsaWNhdGlvbiBzZXF1ZW5jZSBzeW5jIHByb2Nl c3MuIgogUkVDT1ZFUllfV0FMX1NUUkVBTQkiV2FpdGluZyBpbiBtYWluIGxvb3Agb2Ygc3RhcnR1 cCBwcm9jZXNzIGZvciBXQUwgdG8gYXJyaXZlLCBkdXJpbmcgc3RyZWFtaW5nIHJlY292ZXJ5LiIK IFJFUExJQ0FUSU9OX1NMT1RTWU5DX01BSU4JIldhaXRpbmcgaW4gbWFpbiBsb29wIG9mIHNsb3Qg c3luY2hyb25pemF0aW9uLiIKIFJFUExJQ0FUSU9OX1NMT1RTWU5DX1NIVVRET1dOCSJXYWl0aW5n IGZvciBzbG90IHN5bmMgd29ya2VyIHRvIHNodXQgZG93bi4iCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfc3Vic2NyaXB0aW9uX3JlbC5oCmluZGV4IDUwMjY0MGQzMDE4Li44NjU3NGI2OTE2OSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgKKysrIGIv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgKQEAgLTk2LDYgKzk2LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFNlcXVlbmNlSW5mbwogCWNoYXIJICAgKnNlcW5h bWU7CiAJY2hhcgkgICAqbnNwbmFtZTsKIAlPaWQJCQlsb2NhbHJlbGlkOworCWNoYXIJCXJlbHN0 YXRlOwogCiAJLyogU2VxdWVuY2UgaW5mb3JtYXRpb24gcmV0cmlldmVkIGZyb20gdGhlIHB1Ymxp c2hlciBub2RlICovCiAJWExvZ1JlY1B0cglwYWdlX2xzbjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5o CmluZGV4IDJjM2M0YTNmMDc0Li5mZDRmNjliZGQxYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvc2VxdWVuY2UuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5o CkBAIC00Nyw2ICs0Nyw3IEBAIGV4dGVybiBPYmplY3RBZGRyZXNzIEFsdGVyU2VxdWVuY2UoUGFy c2VTdGF0ZSAqcHN0YXRlLCBBbHRlclNlcVN0bXQgKnN0bXQpOwogZXh0ZXJuIHZvaWQgU2VxdWVu Y2VDaGFuZ2VQZXJzaXN0ZW5jZShPaWQgcmVsaWQsIGNoYXIgbmV3cmVscGVyc2lzdGVuY2UpOwog ZXh0ZXJuIHZvaWQgRGVsZXRlU2VxdWVuY2VUdXBsZShPaWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQg UmVzZXRTZXF1ZW5jZShPaWQgc2VxX3JlbGlkKTsKK2V4dGVybiBib29sIEdldFNlcXVlbmNlKFJl bGF0aW9uIHNlcXJlbCwgaW50NjQgKmxhc3RfdmFsdWUsIGJvb2wgKmlzX2NhbGxlZCk7CiBleHRl cm4gdm9pZCBTZXRTZXF1ZW5jZShPaWQgcmVsaWQsIGludDY0IG5leHQsIGJvb2wgaXNjYWxsZWQp OwogZXh0ZXJuIHZvaWQgUmVzZXRTZXF1ZW5jZUNhY2hlcyh2b2lkKTsKIApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCA3NDViN2Q5ZTk2OS4uNGM3YjZmNDYz NGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5o CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0yODUs NyArMjg1LDcgQEAgZXh0ZXJuIHZvaWQgVXBkYXRlVHdvUGhhc2VTdGF0ZShPaWQgc3Vib2lkLCBj aGFyIG5ld19zdGF0ZSk7CiAKIGV4dGVybiB2b2lkIFByb2Nlc3NTeW5jaW5nVGFibGVzRm9yU3lu YyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKTsKIGV4dGVybiB2b2lkIFByb2Nlc3NTeW5jaW5nVGFi bGVzRm9yQXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbik7Ci1leHRlcm4gdm9pZCBQcm9jZXNz U2VxdWVuY2VzRm9yU3luYyh2b2lkKTsKK2V4dGVybiB2b2lkIE1heWJlTGF1bmNoU2VxdWVuY2VT eW5jV29ya2VyKHZvaWQpOwogCiBwZ19ub3JldHVybiBleHRlcm4gdm9pZCBGaW5pc2hTeW5jV29y a2VyKHZvaWQpOwogZXh0ZXJuIHZvaWQgSW52YWxpZGF0ZVN5bmNpbmdSZWxTdGF0ZXMoRGF0dW0g YXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVpZCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAyNl9zdGF0cy5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyNl9z dGF0cy5wbAppbmRleCA1ZDQ1NzA2MGEwMi4uMmZlMjA5ZjQ2MWYgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAyNl9zdGF0cy5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMjZfc3RhdHMucGwKQEAgLTE2LDYgKzE2LDggQEAgJG5vZGVfcHVibGlzaGVyLT5zdGFy dDsKICMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZS4KIG15ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKICRub2RlX3N1YnNjcmli ZXItPmluaXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywKKwkibWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDEwIik7CiAkbm9kZV9zdWJz Y3JpYmVyLT5zdGFydDsKIAogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MzZfc2VxdWVuY2VzLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM2X3NlcXVlbmNlcy5w bAppbmRleCA0NzE3ODBhMzU4NS4uYWYxOTA3MTNiMmIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAzNl9zZXF1ZW5jZXMucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDM2X3NlcXVlbmNlcy5wbApAQCAtNzUsMTggKzc1LDE0IEBAIGlzKCRyZXN1bHQsICcxMDB8 dCcsCiAKICMjIyMjIyMjIyMKICMjIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBQVUJM SUNBVElPTiBzaG91bGQgY2F1c2Ugc3luYyBvZiBuZXcKLSMgc2VxdWVuY2VzIG9mIHRoZSBwdWJs aXNoZXIsIGJ1dCBjaGFuZ2VzIHRvIGV4aXN0aW5nIHNlcXVlbmNlcyBzaG91bGQKLSMgbm90IGJl IHN5bmNlZC4KKyMgc2VxdWVuY2VzIG9mIHRoZSBwdWJsaXNoZXIuCiAjIyMjIyMjIyMjCiAKLSMg Q3JlYXRlIGEgbmV3IHNlcXVlbmNlICdyZWdyZXNzX3MyJywgYW5kIHVwZGF0ZSBleGlzdGluZyBz ZXF1ZW5jZSAncmVncmVzc19zMScKKyMgQ3JlYXRlIGEgbmV3IHNlcXVlbmNlICdyZWdyZXNzX3My JwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgcXEoCiAJQ1JFQVRF IFNFUVVFTkNFIHJlZ3Jlc3NfczI7CiAJSU5TRVJUIElOVE8gcmVncmVzc19zZXFfdGVzdCBTRUxF Q1QgbmV4dHZhbCgncmVncmVzc19zMicpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKLQot CS0tIEV4aXN0aW5nIHNlcXVlbmNlCi0JSU5TRVJUIElOVE8gcmVncmVzc19zZXFfdGVzdCBTRUxF Q1QgbmV4dHZhbCgncmVncmVzc19zMScpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKICkp OwogCiAjIERvIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTgpAQCAt OTcsMTkgKzkzLDYgQEAgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKICRu b2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHN5bmNlZF9xdWVy eSkKICAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBz eW5jaHJvbml6ZSBkYXRhIjsKIAotJHJlc3VsdCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAotCSdwb3N0Z3JlcycsIHFxKAotCVNFTEVDVCBsYXN0X3ZhbHVlLCBpc19jYWxsZWQgRlJPTSBy ZWdyZXNzX3MxOwotKSk7Ci1pcygkcmVzdWx0LCAnMjAwfHQnLCAnQ2hlY2sgc2VxdWVuY2UgdmFs dWUgaW4gdGhlIHB1Ymxpc2hlcicpOwotCi0jIENoZWNrIC0gZXhpc3Rpbmcgc2VxdWVuY2UgKCdy ZWdyZXNzX3MxJykgaXMgbm90IHN5bmNlZAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKLQlTRUxFQ1QgbGFzdF92YWx1ZSwgaXNfY2FsbGVk IEZST00gcmVncmVzc19zMTsKLSkpOwotaXMoJHJlc3VsdCwgJzEwMHx0JywgJ1JFRlJFU0ggUFVC TElDQVRJT04gd2lsbCBub3Qgc3luYyBleGlzdGluZyBzZXF1ZW5jZScpOwotCiAjIENoZWNrIC0g bmV3bHkgcHVibGlzaGVkIHNlcXVlbmNlICgncmVncmVzc19zMicpIGlzIHN5bmNlZAogJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcSgKQEAgLTEx OSwxNiArMTAyLDEzIEBAIGlzKCRyZXN1bHQsICcxMDB8dCcsCiAJJ1JFRlJFU0ggUFVCTElDQVRJ T04gd2lsbCBzeW5jIG5ld2x5IHB1Ymxpc2hlZCBzZXF1ZW5jZScpOwogCiAjIyMjIyMjIyMjCi0j IFRlc3Q6IFJFRlJFU0ggU0VRVUVOQ0VTIGFuZCBSRUZSRVNIIFBVQkxJQ0FUSU9OIChjb3B5X2Rh dGEgPSBmYWxzZSkKLSMKLSMgMS4gQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFNFUVVF TkNFUyBzaG91bGQgcmUtc3luY2hyb25pemUgYWxsCi0jICAgIGV4aXN0aW5nIHNlcXVlbmNlcywg YnV0IG5vdCBzeW5jaHJvbml6ZSBuZXdseSBhZGRlZCBvbmVzLgotIyAyLiBBTFRFUiBTVUJTQ1JJ UFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT04gd2l0aCAoY29weV9kYXRhID0gZmFsc2UpIHNo b3VsZAotIyAgICBhbHNvIG5vdCB1cGRhdGUgc2VxdWVuY2UgdmFsdWVzIGZvciBuZXdseSBhZGRl ZCBzZXF1ZW5jZXMuCisjIFRlc3Q6CisjIDEuIEF1dG9tYXRpYyB1cGRhdGUgb2YgZXhpc3Rpbmcg c2VxdWVuY2UgdmFsdWVzCisjIDIuIE5ld2x5IGFkZGVkIHNlcXVlbmNlcyBhcmUgbm90IGF1dG9t YXRpY2FsbHkgdXBkYXRlZC4KICMjIyMjIyMjIyMKIAotIyBDcmVhdGUgYSBuZXcgc2VxdWVuY2Ug J3JlZ3Jlc3NfczMnLCBhbmQgdXBkYXRlIHRoZSBleGlzdGluZyBzZXF1ZW5jZQotIyAncmVncmVz c19zMicuCisjIENyZWF0ZSBhIG5ldyBzZXF1ZW5jZSAncmVncmVzc19zMycsIGFuZCB1cGRhdGUg dGhlIGV4aXN0aW5nIHNlcXVlbmNlcworIyAncmVncmVzc19zMicgYW5kICdyZWdyZXNzX3MxJy4K ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxKAogCUNSRUFURSBT RVFVRU5DRSByZWdyZXNzX3MzOwpAQCAtMTM2LDUzICsxMTYsMjggQEAgJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCiAKIAktLSBFeGlzdGluZyBzZXF1ZW5jZQogCUlOU0VSVCBJTlRPIHJlZ3Jl c3Nfc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3JlZ3Jlc3NfczInKSBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLDEwMCk7CisJSU5TRVJUIElOVE8gcmVncmVzc19zZXFfdGVzdCBTRUxFQ1QgbmV4dHZh bCgncmVncmVzc19zMScpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAwKTsKICkpOwogCi0jIDEu IERvIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBTRVFVRU5DRVMKLSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCi0JQUxURVIgU1VC U0NSSVBUSU9OIHJlZ3Jlc3Nfc2VxX3N1YiBSRUZSRVNIIFNFUVVFTkNFUzsKLSkpOwotJG5vZGVf c3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCAkc3luY2VkX3F1ZXJ5KQot ICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRvIHN5bmNo cm9uaXplIGRhdGEiOwotCiAjIENoZWNrIC0gZXhpc3Rpbmcgc2VxdWVuY2VzICgncmVncmVzc19z MScgYW5kICdyZWdyZXNzX3MyJykgYXJlIHN5bmNlZAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKLQlTRUxFQ1QgbGFzdF92YWx1ZSwgaXNf Y2FsbGVkIEZST00gcmVncmVzc19zMTsKLSkpOwotaXMoJHJlc3VsdCwgJzIwMHx0JywgJ1JFRlJF U0ggU0VRVUVOQ0VTIHdpbGwgc3luYyBleGlzdGluZyBzZXF1ZW5jZXMnKTsKLSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCi0JU0VMRUNUIGxh c3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHJlZ3Jlc3NfczI7Ci0pKTsKLWlzKCRyZXN1bHQsICcy MDB8dCcsICdSRUZSRVNIIFNFUVVFTkNFUyB3aWxsIHN5bmMgZXhpc3Rpbmcgc2VxdWVuY2VzJyk7 CiAKLSMgQ2hlY2sgLSBuZXdseSBwdWJsaXNoZWQgc2VxdWVuY2UgKCdyZWdyZXNzX3MzJykgaXMg bm90IHN5bmNlZAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxcSgKLQlTRUxFQ1QgbGFzdF92YWx1ZSwgaXNfY2FsbGVkIEZST00gcmVncmVzc19z MzsKLSkpOwotaXMoJHJlc3VsdCwgJzF8ZicsCi0JJ1JFRlJFU0ggU0VRVUVOQ0VTIHdpbGwgbm90 IHN5bmMgbmV3bHkgcHVibGlzaGVkIHNlcXVlbmNlJyk7CisjIFBvbGwgdW50aWwgcmVncmVzc19z MSByZWZsZWN0cyB0aGUgdXBkYXRlZCBzZXF1ZW5jZSB2YWx1ZQorJG5vZGVfc3Vic2NyaWJlci0+ cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorICAgIHFxKFNFTEVDVCBsYXN0X3ZhbHVlID0g MjAwIEFORCBpc19jYWxsZWQgPSAndCcgRlJPTSByZWdyZXNzX3MxOykpCisgIG9yIGRpZSAiVGlt ZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHJlZ3Jlc3NfczEgc2VxdWVuY2UgdG8gc3luYyI7CiAK LSMgMi4gRG8gQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OIHdpdGgg Y29weV9kYXRhIGFzIGZhbHNlCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KAotCSdwb3N0Z3JlcycsIHFxKAotCUFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3NlcV9zdWIg UkVGUkVTSCBQVUJMSUNBVElPTiBXSVRIIChjb3B5X2RhdGEgPSBmYWxzZSk7Ci0pKTsKLSRub2Rl X3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHN5bmNlZF9xdWVyeSkK LSAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBzeW5j aHJvbml6ZSBkYXRhIjsKKyMgUG9sbCB1bnRpbCByZWdyZXNzX3MyIHJlZmxlY3RzIHRoZSB1cGRh dGVkIHNlcXVlbmNlIHZhbHVlCiskbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdw b3N0Z3JlcycsCisgICAgcXEoU0VMRUNUIGxhc3RfdmFsdWUgPSAyMDAgQU5EIGlzX2NhbGxlZCA9 ICd0JyBGUk9NIHJlZ3Jlc3NfczI7KSkKKyAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGlu ZyBmb3IgcmVncmVzc19zMiBzZXF1ZW5jZSB0byBzeW5jIjsKIAotIyBDaGVjayAtIG5ld2x5IHB1 Ymxpc2hlZCBzZXF1ZW5jZSAoJ3JlZ3Jlc3NfczMnKSBpcyBub3Qgc3luY2VkIHdpdGggY29weV9k YXRhCi0jIGFzIGZhbHNlLgorIyBDaGVjayAtIG5ld2x5IHB1Ymxpc2hlZCBzZXF1ZW5jZSAoJ3Jl Z3Jlc3NfczMnKSBpcyBub3Qgc3luY2VkCiAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxKAogCVNFTEVDVCBsYXN0X3ZhbHVlLCBpc19jYWxsZWQg RlJPTSByZWdyZXNzX3MzOwogKSk7CiBpcygkcmVzdWx0LCAnMXxmJywKLQknUkVGUkVTSCBQVUJM SUNBVElPTiB3aWxsIG5vdCBzeW5jIG5ld2x5IHB1Ymxpc2hlZCBzZXF1ZW5jZSB3aXRoIGNvcHlf ZGF0YSBhcyBmYWxzZScKLSk7CisJJ05ld2x5IHB1Ymxpc2hlZCBzZXF1ZW5jZXMgYXJlIG5vdCBz eW5jZWQgYXV0b21hdGljYWxseScpOwogCiAjIyMjIyMjIyMjCiAjIEFMVEVSIFNVQlNDUklQVElP TiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTiBzaG91bGQgcmVwb3J0IGFuIGVycm9yIHdoZW46Ci0t IAoyLjQ3LjMKCg== --0000000000000f5c91064f7d5d36 Content-Type: application/octet-stream; name="v12-0002-Cache-sequence-information-in-the-sequence-sync-.patch" Content-Disposition: attachment; filename="v12-0002-Cache-sequence-information-in-the-sequence-sync-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnzx7ayi1 RnJvbSA5MTRiNzM0MTc1ZjY1YWQyMWI0NGQ2MjA2MjdmNWFlNDdjNDdkOTM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBXZWQsIDE1IEFwciAyMDI2IDIwOjIzOjU1ICsxMDAwClN1YmplY3Q6IFtQQVRDSCB2MTIgMi8z XSBDYWNoZSBzZXF1ZW5jZSBpbmZvcm1hdGlvbiBpbiB0aGUgc2VxdWVuY2Ugc3luYwogd29ya2Vy LgoKUHJldmlvdXNseSwgdGhlIHNlcXVlbmNlIHN5bmMgd29ya2VyIHdvdWxkIGZldGNoIHNlcXVl bmNlIG1ldGFkYXRhIGZyb20KdGhlIGNhdGFsb2cgZWFjaCB0aW1lIGl0IG5lZWRlZCB0byBzeW5j aHJvbml6ZSBzZXF1ZW5jZXMuIFRoaXMgY291bGQgYmUKaW5lZmZpY2llbnQgd2hlbiBtYW55IHNl cXVlbmNlcyBhcmUgaW52b2x2ZWQsIGFzIHRoZSB3b3JrZXIgd291bGQgbmVlZAp0byByZXBlYXRl ZGx5IG9wZW4gYW5kIHNjYW4gcGdfc3Vic2NyaXB0aW9uX3JlbC4KClRvIGltcHJvdmUgdGhpcywg aW50cm9kdWNlIGEgY2FjaGUgZm9yIHNlcXVlbmNlIGluZm9ybWF0aW9uIGluIHRoZSBzZXF1ZW5j ZSBzeW5jCndvcmtlci4gVGhlIGNhY2hlIGlzIHBvcHVsYXRlZCBvbiBmaXJzdCB1c2UgYW5kIGtl cHQgYWNyb3NzIHN5bmNocm9uaXphdGlvbgpjeWNsZXMuIEl0IGlzIGludmFsaWRhdGVkIHdoZW4g cGdfc3Vic2NyaXB0aW9uX3JlbCBpcyBtb2RpZmllZCwgZW5zdXJpbmcgdGhhdApjaGFuZ2VzIHRv IHN1YnNjcmlwdGlvbiByZWxhdGlvbnMgYXJlIHJlZmxlY3RlZCBwcm9tcHRseS4KLS0tCiAuLi4v cmVwbGljYXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYyAgICAgICAgfCA5MyArKysrKysrKysr KysrLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNjYgaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zZXF1ZW5j ZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMK aW5kZXggMjJlMzJkYmJhNTcuLjM1MmZkMGU3NDJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3NlcXVlbmNlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMKQEAgLTk5LDYgKzk5LDE5IEBAIHR5cGVkZWYg ZW51bSBDb3B5U2VxUmVzdWx0CiAKIHN0YXRpYyBNZW1vcnlDb250ZXh0IFNlcXVlbmNlU3luY0Nv bnRleHQgPSBOVUxMOwogCisvKgorICogQ2FjaGVkIGxpc3Qgb2Ygc2VxdWVuY2UgaW5mb3JtYXRp b24gKExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8pIGZvciB0aGUgY3VycmVudAorICogc3Vic2NyaXB0 aW9uLiBUaGUgY2FjaGUgaXMgaW52YWxpZGF0ZWQgd2hlbiBwZ19zdWJzY3JpcHRpb25fcmVsIGlz IG1vZGlmaWVkLgorICoKKyAqIE5vdGU6IFRvIGF2b2lkIHRoZSBjb3N0IG9mIHNlYXJjaGluZyBm b3IgYSBzcGVjaWZpYyBzZXF1ZW5jZSBvbiByZWxjYWNoZQorICogaW52YWxpZGF0aW9uLCB3ZSBk byBub3QgaW52YWxpZGF0ZSB0aGUgY2FjaGUgaW1tZWRpYXRlbHkgd2hlbiBhIHNlcXVlbmNlIGlz CisgKiBhbHRlcmVkIChlLmcuLCByZW5hbWVkIG9yIG1vdmVkIHRvIGFub3RoZXIgbmFtZXNwYWNl KS4gSW5zdGVhZCwgd2UgdmFsaWRhdGUKKyAqIHRoZSBzZXF1ZW5jZSBuYW1lIGFuZCBuYW1lc3Bh Y2Ugd2hlbiBuZXh0IGF0dGVtcHRpbmcgdG8gc3luYyBpdCwgYXQgd2hpY2gKKyAqIHBvaW50IHdl IHZlcmlmeSB0aGUgbG9jYWwgc2VxdWVuY2Ugc3RhdGUuCisgKi8KK3N0YXRpYyBMaXN0ICpzZXF1 ZW5jZV9pbmZvcyA9IE5JTDsKK3N0YXRpYyBib29sIHNlcXVlbmNlX2luZm9zX3ZhbGlkID0gZmFs c2U7CisKIC8qCiAgKiBBcHBseSB3b3JrZXIgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgc2VxdWVuY2Ug c3luYyB3b3JrZXIgaXMgbmVlZGVkLgogICoKQEAgLTUwMyw2ICs1MTYsOSBAQCBjb3B5X3NlcXVl bmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sIExpc3QgKnNlcWluZm9zLCBib29sIHVwZGF0ZV9s c24pCiAKICNkZWZpbmUgTUFYX1NFUVVFTkNFU19TWU5DX1BFUl9CQVRDSCAxMDAKIAorCWlmIChz ZXFpbmZvcyA9PSBOSUwpCisJCXJldHVybiBmYWxzZTsKKwogCXdoaWxlIChjdXJfYmF0Y2hfYmFz ZV9pbmRleCA8IG5fc2VxaW5mb3MpCiAJewogCQlPaWQJCQlzZXFSb3dbUkVNT1RFX1NFUV9DT0xf Q09VTlRdID0ge0lOVDhPSUQsIElOVDhPSUQsCkBAIC03MjgsMjQgKzc0NCw0NCBAQCBjb3B5X3Nl cXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sIExpc3QgKnNlcWluZm9zLCBib29sIHVwZGF0 ZV9sc24pCiB9CiAKIC8qCi0gKiBJZGVudGlmaWVzIHNlcXVlbmNlcyB0aGF0IHJlcXVpcmUgc3lu Y2hyb25pemF0aW9uIGFuZCBpbml0aWF0ZXMgdGhlCi0gKiBzeW5jaHJvbml6YXRpb24gcHJvY2Vz cy4KKyAqIENhbGxiYWNrIGZyb20gc3lzY2FjaGUgaW52YWxpZGF0aW9uLgorICovCitzdGF0aWMg dm9pZAoraW52YWxpZGF0ZV9zeW5jaW5nX3NlcXVlbmNlX2luZm9zKERhdHVtIGFyZywgU3lzQ2Fj aGVJZGVudGlmaWVyIGNhY2hlaWQsCisJCQkJCQkJCSAgdWludDMyIGhhc2h2YWx1ZSkKK3sKKwlz ZXF1ZW5jZV9pbmZvc192YWxpZCA9IGZhbHNlOworfQorCisvKgorICogR2V0IHRoZSBsaXN0IG9m IHNlcXVlbmNlIGluZm9ybWF0aW9uIGZvciB0aGUgY3VycmVudCBzdWJzY3JpcHRpb24uCiAgKgot ICogUmV0dXJucyB0cnVlIGlmIHNlcXVlbmNlcyBoYXZlIGJlZW4gdXBkYXRlZC4KKyAqIFJldHVy biBjYWNoZWQgc2VxdWVuY2Ugc3RhdGVzIGlmIHZhbGlkOyBvdGhlcndpc2UgZmV0Y2hlcyB0aGVt IGZyb20gdGhlCisgKiBjYXRhbG9nLCBjYWNoZXMgdGhlIHJlc3VsdCwgYW5kIHJldHVybiBpdC4K ICAqLwotc3RhdGljIGJvb2wKLUxvZ2ljYWxSZXBTeW5jU2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29u biAqY29ubiwgYm9vbCB1cGRhdGVfbHNuKQorc3RhdGljIExpc3QgKgorZmV0Y2hfc2VxdWVuY2Vf aW5mb3Modm9pZCkKIHsKIAlSZWxhdGlvbglyZWw7CiAJSGVhcFR1cGxlCXR1cDsKIAlTY2FuS2V5 RGF0YSBza2V5WzFdOwogCVN5c1NjYW5EZXNjIHNjYW47CiAJT2lkCQkJc3ViaWQgPSBNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkOwotCWJvb2wJCXNlcXVlbmNlX2NvcGllZCA9IGZhbHNlOwotCUxp c3QJICAgKnNlcWluZm9zID0gTklMOwotCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCUxpc3QJICAg KnRtcF9zZXFpbmZvcyA9IE5JTDsKIAotCUFzc2VydChTZXF1ZW5jZVN5bmNDb250ZXh0KTsKKwlp ZiAoc2VxdWVuY2VfaW5mb3NfdmFsaWQpCisJCXJldHVybiBzZXF1ZW5jZV9pbmZvczsKKworCS8q IEZyZWUgdGhlIGV4aXN0aW5nIGludmFsaWQgY2FjaGUgZW50cmllcyAqLworCWZvcmVhY2hfcHRy KExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8sIHNlcWluZm8sIHNlcXVlbmNlX2luZm9zKQorCXsKKwkJ cGZyZWUoc2VxaW5mby0+bnNwbmFtZSk7CisJCXBmcmVlKHNlcWluZm8tPnNlcW5hbWUpOworCQlw ZnJlZShzZXFpbmZvKTsKKwl9CisKKwlsaXN0X2ZyZWUoc2VxdWVuY2VfaW5mb3MpOworCXNlcXVl bmNlX2luZm9zID0gTklMOwogCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIApAQCAtNzY2 LDYgKzgwMiw3IEBAIExvZ2ljYWxSZXBTeW5jU2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29u biwgYm9vbCB1cGRhdGVfbHNuKQogCQlMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICpzZXE7CiAJCVJl bGF0aW9uCXNlcXVlbmNlX3JlbDsKIAkJY2hhcgkJcmVsc3RhdGU7CisJCU1lbW9yeUNvbnRleHQg b2xkY3R4OwogCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKQEAgLTc4OCwxNyArODI1LDE0 IEBAIExvZ2ljYWxSZXBTeW5jU2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwgYm9vbCB1 cGRhdGVfbHNuKQogCiAJCUFzc2VydChyZWxzdGF0ZSA9PSBTVUJSRUxfU1RBVEVfSU5JVCB8fCBy ZWxzdGF0ZSA9PSBTVUJSRUxfU1RBVEVfUkVBRFkpOwogCi0JCS8qCi0JCSAqIFdvcmtlciBuZWVk cyB0byBwcm9jZXNzIHNlcXVlbmNlcyBhY3Jvc3MgdHJhbnNhY3Rpb24gYm91bmRhcnksIHNvCi0J CSAqIGFsbG9jYXRlIHRoZW0gdW5kZXIgU2VxdWVuY2VTeW5jQ29udGV4dC4KLQkJICovCi0JCW9s ZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTZXF1ZW5jZVN5bmNDb250ZXh0KTsKKwkJLyog Q2FjaGUgdGhlIGluZm9ybWF0aW9uIGluIGEgcGVybWFuZW50IG1lbW9yeSBjb250ZXh0ICovCisJ CW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhDYWNoZU1lbW9yeUNvbnRleHQpOwogCQlz ZXEgPSBwYWxsb2MwX29iamVjdChMb2dpY2FsUmVwU2VxdWVuY2VJbmZvKTsKIAkJc2VxLT5sb2Nh bHJlbGlkID0gc3VicmVsLT5zcnJlbGlkOwogCQlzZXEtPm5zcG5hbWUgPSBnZXRfbmFtZXNwYWNl X25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2Uoc2VxdWVuY2VfcmVsKSk7CiAJCXNlcS0+c2VxbmFt ZSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUoc2VxdWVuY2VfcmVsKSk7CiAJCXNl cS0+cmVsc3RhdGUgPSByZWxzdGF0ZTsKLQkJc2VxaW5mb3MgPSBsYXBwZW5kKHNlcWluZm9zLCBz ZXEpOworCQl0bXBfc2VxaW5mb3MgPSBsYXBwZW5kKHRtcF9zZXFpbmZvcywgc2VxKTsKIAkJTWVt b3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiAKIAkJdGFibGVfY2xvc2Uoc2VxdWVuY2VfcmVs LCBOb0xvY2spOwpAQCAtODA4LDE4ICs4NDIsMTIgQEAgTG9naWNhbFJlcFN5bmNTZXF1ZW5jZXMo V2FsUmVjZWl2ZXJDb25uICpjb25uLCBib29sIHVwZGF0ZV9sc24pCiAJc3lzdGFibGVfZW5kc2Nh bihzY2FuKTsKIAl0YWJsZV9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CiAKLQlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlzZXF1ZW5jZV9pbmZvcyA9IHRtcF9zZXFpbmZvczsKKwlz ZXF1ZW5jZV9pbmZvc192YWxpZCA9IHRydWU7CiAKLQkvKgotCSAqIEV4aXQgZWFybHkgaWYgbm8g Y2F0YWxvZyBlbnRyaWVzIGZvdW5kLCBsaWtlbHkgZHVlIHRvIGNvbmN1cnJlbnQgZHJvcHMuCi0J ICovCi0JaWYgKCFzZXFpbmZvcykKLQkJcmV0dXJuIGZhbHNlOwotCi0JLyogUHJvY2VzcyBzZXF1 ZW5jZXMgKi8KLQlzZXF1ZW5jZV9jb3BpZWQgPSBjb3B5X3NlcXVlbmNlcyhjb25uLCBzZXFpbmZv cywgdXBkYXRlX2xzbik7CisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQlyZXR1cm4g c2VxdWVuY2VfY29waWVkOworCXJldHVybiBzZXF1ZW5jZV9pbmZvczsKIH0KIAogLyoKQEAgLTgz NCw2ICs4NjIsMTQgQEAgc3RhcnRfc2VxdWVuY2Vfc3luYyh2b2lkKQogewogCUFzc2VydChhbV9z ZXF1ZW5jZXN5bmNfd29ya2VyKCkpOwogCisJLyoKKwkgKiBTZXR1cCBjYWxsYmFjayBmb3Igc3lz Y2FjaGUgc28gdGhhdCB3ZSBrbm93IHdoZW4gc29tZXRoaW5nIGNoYW5nZXMgaW4KKwkgKiB0aGUg c3Vic2NyaXB0aW9uIHJlbGF0aW9uIHN0YXRlLgorCSAqLworCUNhY2hlUmVnaXN0ZXJTeXNjYWNo ZUNhbGxiYWNrKFNVQlNDUklQVElPTlJFTE1BUCwKKwkJCQkJCQkJICBpbnZhbGlkYXRlX3N5bmNp bmdfc2VxdWVuY2VfaW5mb3MsCisJCQkJCQkJCSAgKERhdHVtKSAwKTsKKwogCVBHX1RSWSgpOwog CXsKIAkJY2hhcgkgICAqZXJyOwpAQCAtODc5LDYgKzkxNSw3IEBAIHN0YXJ0X3NlcXVlbmNlX3N5 bmModm9pZCkKIAkJCWJvb2wJCXNlcXVlbmNlX2NvcGllZCA9IGZhbHNlOwogCQkJTWVtb3J5Q29u dGV4dCBvbGRjdHg7CiAJCQlib29sCQl1cGRhdGVfbHNuOworCQkJTGlzdAkgICAqc2VxaW5mb3M7 CiAJCQlUaW1lc3RhbXBUeiBub3cgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiAKIAkJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CkBAIC05MTAsOCArOTQ3LDEwIEBAIHN0YXJ0X3NlcXVlbmNlX3N5 bmModm9pZCkKIAkJCS8qCiAJCQkgKiBTeW5jaHJvbml6ZSBhbGwgc2VxdWVuY2VzIChib3RoIFJF QURZIGFuZCBJTklUIHN0YXRlcykuCiAJCQkgKi8KLQkJCXNlcXVlbmNlX2NvcGllZCA9IExvZ2lj YWxSZXBTeW5jU2VxdWVuY2VzKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4sCi0JCQkJCQkJCQkJCQkJ ICB1cGRhdGVfbHNuKTsKKwkJCXNlcWluZm9zID0gZmV0Y2hfc2VxdWVuY2VfaW5mb3MoKTsKKwor CQkJc2VxdWVuY2VfY29waWVkID0gY29weV9zZXF1ZW5jZXMoTG9nUmVwV29ya2VyV2FsUmN2Q29u biwgc2VxaW5mb3MsCisJCQkJCQkJCQkJCSB1cGRhdGVfbHNuKTsKIAogCQkJTWVtb3J5Q29udGV4 dFJlc2V0KFNlcXVlbmNlU3luY0NvbnRleHQpOwogCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGN0eCk7Ci0tIAoyLjQ3LjMKCg== --0000000000000f5c91064f7d5d36 Content-Type: application/octet-stream; name="v12-0003-Synchronize-sequences-directly-in-REFRESH-SEQUEN.patch" Content-Disposition: attachment; filename="v12-0003-Synchronize-sequences-directly-in-REFRESH-SEQUEN.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnzx7ayo2 RnJvbSBmMWIzMTRlMjM0MWMzNTExNWVlYmNjNDA3MDYwZDgwNjMzYzk1NjY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBXZWQsIDE1IEFwciAyMDI2IDIwOjI2OjAxICsxMDAwClN1YmplY3Q6IFtQQVRDSCB2MTIgMy8z XSBTeW5jaHJvbml6ZSBzZXF1ZW5jZXMgZGlyZWN0bHkgaW4gUkVGUkVTSCBTRVFVRU5DRVMKIGNv bW1hbmQuCgpUaGUgQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFNFUVVFTkNFUyBjb21t YW5kIGN1cnJlbnRseSBzZXRzIGFsbApzZXF1ZW5jZSBzdGF0ZXMgaW4gcGdfc3Vic2NyaXB0aW9u X3JlbCB0byBJTklUIGFuZCByZWxpZXMgb24gdGhlIHNlcXVlbmNlIHN5bmMKd29ya2VyIHRvIHBl cmZvcm0gdGhlIGFjdHVhbCBzeW5jaHJvbml6YXRpb24gYW5kIHVwZGF0ZSBzdGF0ZXMgdG8gUkVB RFkuCgpXaXRoIHRoZSByZWNlbnQgY2hhbmdlIG1ha2luZyB0aGUgc2VxdWVuY2Ugc3luYyB3b3Jr ZXIgbG9uZy1saXZlZCwgbW9zdApzZXF1ZW5jZXMgYXJlIG5vdyBzeW5jaHJvbml6ZWQgaW4gdGhl IGJhY2tncm91bmQsIHJlZHVjaW5nIHRoZSBuZWVkIGZvcgpSRUZSRVNIIFNFUVVFTkNFUy4gSG93 ZXZlciwgdGhlIGNvbW1hbmQgcmVtYWlucyBuZWNlc3NhcnkgZm9yIHNlcXVlbmNlcyB0aGF0Cmhh dmVuJ3QgYmVlbiBzeW5jaHJvbml6ZWQuCgpUaGlzIGNvbW1pdCBlbmhhbmNlcyBSRUZSRVNIIFNF UVVFTkNFUyB0byBzeW5jaHJvbml6ZSBzZXF1ZW5jZXMgZGlyZWN0bHkgd2l0aGluCnRoZSBjb21t YW5kIGl0c2VsZiwgZWxpbWluYXRpbmcgdGhlIG92ZXJoZWFkIG9mIGxhdW5jaGluZyBhIHdvcmtl ciBhbmQgdXBkYXRpbmcKY2F0YWxvZyBlbnRyaWVzIHVubmVjZXNzYXJpbHkuCi0tLQogZG9jL3Ny Yy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICAgIHwgICA1ICstCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAgMjcgKystLQogLi4uL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMgICAgICAgIHwgMTQ4ICsrKysrKysrKysr KystLS0tLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oICAgICAgIHwg ICA1ICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNl9zZXF1ZW5jZXMucGwgICAgICB8ICA0 OSArKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMTc2IGluc2VydGlvbnMoKyksIDU4IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDQzMGQyNTgxNjk5 Li45OTc0NmM0MTBjYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRp b24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0x NzkxLDggKzE3OTEsOSBAQCBQdWJsaWNhdGlvbnM6CiAKICAgPHBhcmE+CiAgICBBIDxmaXJzdHRl cm0+c2VxdWVuY2Ugc3luY2hyb25pemF0aW9uIHdvcmtlcjwvZmlyc3R0ZXJtPiB3aWxsIGJlIHN0 YXJ0ZWQKLSAgIGFmdGVyIGV4ZWN1dGluZyBhbnkgb2YgdGhlIGFib3ZlIHN1YnNjcmliZXIgY29t bWFuZHMuIFRoZSB3b3JrZXIgd2lsbAotICAgcmVtYWluIHJ1bm5pbmcgZm9yIHRoZSBsaWZlIG9m IHRoZSBzdWJzY3JpcHRpb24sIHBlcmlvZGljYWxseQorICAgYWZ0ZXIgZXhlY3V0aW5nIDxjb21t YW5kPkNSRUFURSBTVUJTQ1JJUFRJT048L2NvbW1hbmQ+IG9yCisgICA8Y29tbWFuZD5BTFRFUiBT VUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT048L2NvbW1hbmQ+IGNvbW1hbmQuIFRo ZQorICAgd29ya2VyIHdpbGwgcmVtYWluIHJ1bm5pbmcgZm9yIHRoZSBsaWZlIG9mIHRoZSBzdWJz Y3JpcHRpb24sIHBlcmlvZGljYWxseQogICAgc3luY2hyb25pemluZyBhbGwgcHVibGlzaGVkIHNl cXVlbmNlcy4KICAgPC9wYXJhPgogICA8cGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlw dGlvbmNtZHMuYwppbmRleCAzYTMwZDhkZGIxZi4uOTFiM2QwNWFhZjggMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTEyODgsMjUgKzEyODgsMjAgQEAgQWx0ZXJT dWJzY3JpcHRpb25fcmVmcmVzaF9zZXEoU3Vic2NyaXB0aW9uICpzdWIpCiAKIAlQR19UUlkoKTsK IAl7Ci0JCUxpc3QJICAgKnN1YnJlbF9zdGF0ZXM7Ci0KIAkJY2hlY2tfcHVibGljYXRpb25zX29y aWdpbl9zZXF1ZW5jZXMod3Jjb25uLCBzdWItPnB1YmxpY2F0aW9ucywgdHJ1ZSwKIAkJCQkJCQkJ CQkJc3ViLT5vcmlnaW4sIE5VTEwsIDAsIHN1Yi0+bmFtZSk7CiAKLQkJLyogR2V0IGxvY2FsIHNl cXVlbmNlIGxpc3QuICovCi0JCXN1YnJlbF9zdGF0ZXMgPSBHZXRTdWJzY3JpcHRpb25SZWxhdGlv bnMoc3ViLT5vaWQsIGZhbHNlLCB0cnVlLCBmYWxzZSk7Ci0JCWZvcmVhY2hfcHRyKFN1YnNjcmlw dGlvblJlbFN0YXRlLCBzdWJyZWwsIHN1YnJlbF9zdGF0ZXMpCi0JCXsKLQkJCU9pZAkJCXJlbGlk ID0gc3VicmVsLT5yZWxpZDsKLQotCQkJVXBkYXRlU3Vic2NyaXB0aW9uUmVsU3RhdGUoc3ViLT5v aWQsIHJlbGlkLCBTVUJSRUxfU1RBVEVfSU5JVCwKLQkJCQkJCQkJCSAgIEludmFsaWRYTG9nUmVj UHRyLCBmYWxzZSk7Ci0JCQllcmVwb3J0KERFQlVHMSwKLQkJCQkJZXJybXNnX2ludGVybmFsKCJz ZXF1ZW5jZSBcIiVzLiVzXCIgb2Ygc3Vic2NyaXB0aW9uIFwiJXNcIiBzZXQgdG8gSU5JVCBzdGF0 ZSIsCi0JCQkJCQkJCQlnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3JlbF9uYW1lc3BhY2UocmVsaWQp KSwKLQkJCQkJCQkJCWdldF9yZWxfbmFtZShyZWxpZCksCi0JCQkJCQkJCQlzdWItPm5hbWUpKTsK LQkJfQorCQkvKgorCQkgKiBTdG9wIHRoZSBzZXF1ZW5jZXN5bmMgd29ya2VyIHRvIHByZXZlbnQg Y29uY3VycmVudCB1cGRhdGVzLiBUaGlzCisJCSAqIGF2b2lkcyBhIHJhY2UgY29uZGl0aW9uIHdo ZXJlIHRoZSBzZXF1ZW5jZSB2YWx1ZSBjb3VsZCBiZSB1cGRhdGVkCisJCSAqIGJ5IHRoaXMgY29t bWFuZCBhbmQgdGhlbiBpbW1lZGlhdGVseSBtb3ZlZCBiYWNrd2FyZCBieSBhCisJCSAqIGNvbmN1 cnJlbnRseSBydW5uaW5nIHdvcmtlci4gU3RvcHBpbmcgdGhlIHdvcmtlciBpcyBzYWZlIGV2ZW4g aWYgaXQKKwkJICogYXR0ZW1wdHMgdG8gcmVzdGFydCwgYXMgaXQgd2lsbCB3YWl0IG9uIHRoZSBz dWJzY3JpcHRpb24gbG9jaworCQkgKiBhbHJlYWR5IGhlbGQgYnkgdGhpcyBBTFRFUiBTVUJTQ1JJ UFRJT04gY29tbWFuZC4KKwkJICovCisJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoV09SS0VSVFlQ RV9TRVFVRU5DRVNZTkMsIHN1Yi0+b2lkLCBJbnZhbGlkT2lkKTsKKworCQlBbHRlclN1YlN5bmNT ZXF1ZW5jZXMod3Jjb25uLCBzdWItPm9pZCwgc3ViLT5uYW1lLCBzdWItPnJ1bmFzb3duZXIpOwog CX0KIAlQR19GSU5BTExZKCk7CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvc2VxdWVuY2VzeW5jLmMKaW5kZXggMzUyZmQwZTc0MmIuLmUxZmM1NTZkZDUxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3NlcXVlbmNlc3luYy5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMKQEAgLTIxNyw3 ICsyMTcsNyBAQCBnZXRfc2VxdWVuY2VzX3N0cmluZyhMaXN0ICpzZXFpbmRleGVzLCBMaXN0ICpz ZXFpbmZvcywgU3RyaW5nSW5mbyBidWYpCiAgKi8KIHN0YXRpYyB2b2lkCiByZXBvcnRfc2VxdWVu Y2VfZXJyb3JzKExpc3QgKm1pc21hdGNoZWRfc2Vxc19pZHgsIExpc3QgKmluc3VmZnBlcm1fc2Vx c19pZHgsCi0JCQkJCSAgIExpc3QgKm1pc3Npbmdfc2Vxc19pZHgsIExpc3QgKnNlcWluZm9zKQor CQkJCQkgICBMaXN0ICptaXNzaW5nX3NlcXNfaWR4LCBMaXN0ICpzZXFpbmZvcywgY2hhciAqc3Vi bmFtZSkKIHsKIAlTdHJpbmdJbmZvRGF0YSBzZXFzdHI7CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBy ZXBvcnRfc2VxdWVuY2VfZXJyb3JzKExpc3QgKm1pc21hdGNoZWRfc2Vxc19pZHgsIExpc3QgKmlu c3VmZnBlcm1fc2Vxc19pZHgsCiAJZXJlcG9ydChFUlJPUiwKIAkJCWVycmNvZGUoRVJSQ09ERV9P QkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCiAJCQllcnJtc2coImxvZ2ljYWwgcmVw bGljYXRpb24gc2VxdWVuY2Ugc3luY2hyb25pemF0aW9uIGZhaWxlZCBmb3Igc3Vic2NyaXB0aW9u IFwiJXNcIiIsCi0JCQkJICAgTXlTdWJzY3JpcHRpb24tPm5hbWUpKTsKKwkJCQkgICBzdWJuYW1l KSk7CiB9CiAKIC8qCkBAIC00MjAsMTAgKzQyMCw5IEBAIGNoZWNrX3NlcV9wcml2aWxlZ2VzX2Fu ZF9kcmlmdChMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICpzZXFpbmZvLAogICovCiBzdGF0aWMgQ29w eVNlcVJlc3VsdAogY29weV9zZXF1ZW5jZShMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICpzZXFpbmZv LCBSZWxhdGlvbiBzZXF1ZW5jZV9yZWwsCi0JCQkgIGJvb2wgdXBkYXRlX2xzbikKKwkJCSAgT2lk IHN1YmlkLCBib29sIHJ1bl9hc19vd25lciwgYm9vbCB1cGRhdGVfbHNuKQogewogCVVzZXJDb250 ZXh0IHVjeHQ7Ci0JYm9vbAkJcnVuX2FzX293bmVyID0gTXlTdWJzY3JpcHRpb24tPnJ1bmFzb3du ZXI7CiAJT2lkCQkJc2Vxb2lkID0gc2VxaW5mby0+bG9jYWxyZWxpZDsKIAlDb3B5U2VxUmVzdWx0 IHJlc3VsdDsKIAlib29sCQluZWVkX2xzbl91cGRhdGUgPSBmYWxzZTsKQEAgLTQ2Nyw4ICs0NjYs NyBAQCBjb3B5X3NlcXVlbmNlKExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm8sIFJlbGF0 aW9uIHNlcXVlbmNlX3JlbCwKIAkJWExvZ1JlY1B0cglsb2NhbF9wYWdlX2xzbjsKIAogCQkvKiBH ZXQgdGhlIGxvY2FsIHBhZ2UgTFNOIGZvciBjb21wYXJpc29uIHdpdGggdGhlIHJlbW90ZSB2YWx1 ZSAqLwotCQkodm9pZCkgR2V0U3Vic2NyaXB0aW9uUmVsU3RhdGUoTXlTdWJzY3JpcHRpb24tPm9p ZCwKLQkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsaWQoc2VxdWVuY2VfcmVsKSwKKwkJKHZvaWQp IEdldFN1YnNjcmlwdGlvblJlbFN0YXRlKHN1YmlkLCBSZWxhdGlvbkdldFJlbGlkKHNlcXVlbmNl X3JlbCksCiAJCQkJCQkJCQkgICAmbG9jYWxfcGFnZV9sc24pOwogCiAJCW5lZWRfbHNuX3VwZGF0 ZSA9IChsb2NhbF9wYWdlX2xzbiAhPSBzZXFpbmZvLT5wYWdlX2xzbik7CkBAIC00ODAsNyArNDc4 LDcgQEAgY29weV9zZXF1ZW5jZShMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICpzZXFpbmZvLCBSZWxh dGlvbiBzZXF1ZW5jZV9yZWwsCiAJICogY3ljbGUgKHVwZGF0ZV9sc24gaXMgdHJ1ZSkuCiAJICov CiAJaWYgKHNlcWluZm8tPnJlbHN0YXRlID09IFNVQlJFTF9TVEFURV9JTklUIHx8IG5lZWRfbHNu X3VwZGF0ZSkKLQkJVXBkYXRlU3Vic2NyaXB0aW9uUmVsU3RhdGUoTXlTdWJzY3JpcHRpb24tPm9p ZCwgc2Vxb2lkLCBTVUJSRUxfU1RBVEVfUkVBRFksCisJCVVwZGF0ZVN1YnNjcmlwdGlvblJlbFN0 YXRlKHN1YmlkLCBzZXFvaWQsIFNVQlJFTF9TVEFURV9SRUFEWSwKIAkJCQkJCQkJICAgc2VxaW5m by0+cGFnZV9sc24sIGZhbHNlKTsKIAogCXJldHVybiBDT1BZU0VRX1NVQ0NFU1M7CkBAIC00OTks NyArNDk3LDggQEAgY29weV9zZXF1ZW5jZShMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICpzZXFpbmZv LCBSZWxhdGlvbiBzZXF1ZW5jZV9yZWwsCiAgKiBSZXR1cm5zIHRydWUvZmFsc2UgaWYgYW55IHNl cXVlbmNlcyB3ZXJlIGFjdHVhbGx5IGNvcGllZC4KICAqLwogc3RhdGljIGJvb2wKLWNvcHlfc2Vx dWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwgTGlzdCAqc2VxaW5mb3MsIGJvb2wgdXBkYXRl X2xzbikKK2NvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwgTGlzdCAqc2VxaW5m b3MsIE9pZCBzdWJpZCwgY2hhciAqc3VibmFtZSwKKwkJCSAgIGJvb2wgcnVuYXNvd25lciwgYm9v bCB1cGRhdGVfbHNuKQogewogCWludAkJCWN1cl9iYXRjaF9iYXNlX2luZGV4ID0gMDsKIAlpbnQJ CQluX3NlcWluZm9zID0gbGlzdF9sZW5ndGgoc2VxaW5mb3MpOwpAQCAtNTMxLDExICs1MzAsMTYg QEAgY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBMaXN0ICpzZXFpbmZvcywg Ym9vbCB1cGRhdGVfbHNuKQogCQlpbnQJCQliYXRjaF9ub19kcmlmdCA9IDA7CiAJCWludAkJCWJh dGNoX21pc3NpbmdfY291bnQ7CiAJCVJlbGF0aW9uCXNlcXVlbmNlX3JlbCA9IE5VTEw7CisJCWJv b2wJCXN0YXJ0ZWRfdHggPSBmYWxzZTsKIAogCQlXYWxSY3ZFeGVjUmVzdWx0ICpyZXM7CiAJCVR1 cGxlVGFibGVTbG90ICpzbG90OwogCi0JCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCWlm ICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCisJCXsKKwkJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5k KCk7CisJCQlzdGFydGVkX3R4ID0gdHJ1ZTsKKwkJfQogCiAJCWZvciAoaW50IGlkeCA9IGN1cl9i YXRjaF9iYXNlX2luZGV4OyBpZHggPCBuX3NlcWluZm9zOyBpZHgrKykKIAkJewpAQCAtNjI3LDE0 ICs2MzEsMTUgQEAgY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBMaXN0ICpz ZXFpbmZvcywgYm9vbCB1cGRhdGVfbHNuKQogCQkJCQkJCQkJCQkJCSZzZXFpbmZvLCAmc2VxaWR4 LCBzZXFpbmZvcyk7CiAKIAkJCWlmIChzeW5jX3N0YXR1cyA9PSBDT1BZU0VRX0FMTE9XRUQpCi0J CQkJc3luY19zdGF0dXMgPSBjb3B5X3NlcXVlbmNlKHNlcWluZm8sIHNlcXVlbmNlX3JlbCwgdXBk YXRlX2xzbik7CisJCQkJc3luY19zdGF0dXMgPSBjb3B5X3NlcXVlbmNlKHNlcWluZm8sIHNlcXVl bmNlX3JlbCwgc3ViaWQsCisJCQkJCQkJCQkJCXJ1bmFzb3duZXIsIHVwZGF0ZV9sc24pOwogCiAJ CQlzd2l0Y2ggKHN5bmNfc3RhdHVzKQogCQkJewogCQkJCWNhc2UgQ09QWVNFUV9TVUNDRVNTOgog CQkJCQllbG9nKERFQlVHMSwKIAkJCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiBzeW5jaHJvbml6 YXRpb24gaGFzIHVwZGF0ZWQgc2VxdWVuY2UgXCIlcy4lc1wiIGluIHN1YnNjcmlwdGlvbiBcIiVz XCIiLAotCQkJCQkJIHNlcWluZm8tPm5zcG5hbWUsIHNlcWluZm8tPnNlcW5hbWUsIE15U3Vic2Ny aXB0aW9uLT5uYW1lKTsKKwkJCQkJCSBzZXFpbmZvLT5uc3BuYW1lLCBzZXFpbmZvLT5zZXFuYW1l LCBzdWJuYW1lKTsKIAkJCQkJYmF0Y2hfc3VjY2VlZGVkX2NvdW50Kys7CiAJCQkJCXNlcXVlbmNl X2NvcGllZCA9IHRydWU7CiAJCQkJCWJyZWFrOwpAQCAtNzA3LDEzICs3MTIsMTcgQEAgY29weV9z ZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBMaXN0ICpzZXFpbmZvcywgYm9vbCB1cGRh dGVfbHNuKQogCiAJCWVsb2coREVCVUcxLAogCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHNlcXVl bmNlIHN5bmNocm9uaXphdGlvbiBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiAtIGJhdGNoICMlZCA9 ICVkIGF0dGVtcHRlZCwgJWQgc3VjY2VlZGVkLCAlZCBtaXNtYXRjaGVkLCAlZCBpbnN1ZmZpY2ll bnQgcGVybWlzc2lvbiwgJWQgbWlzc2luZyBmcm9tIHB1Ymxpc2hlciwgJWQgc2tpcHBlZCwgJWQg bm8gZHJpZnQiLAotCQkJIE15U3Vic2NyaXB0aW9uLT5uYW1lLAorCQkJIHN1Ym5hbWUsCiAJCQkg KGN1cl9iYXRjaF9iYXNlX2luZGV4IC8gTUFYX1NFUVVFTkNFU19TWU5DX1BFUl9CQVRDSCkgKyAx LAogCQkJIGJhdGNoX3NpemUsIGJhdGNoX3N1Y2NlZWRlZF9jb3VudCwgYmF0Y2hfbWlzbWF0Y2hl ZF9jb3VudCwKIAkJCSBiYXRjaF9pbnN1ZmZwZXJtX2NvdW50LCBiYXRjaF9taXNzaW5nX2NvdW50 LCBiYXRjaF9za2lwcGVkX2NvdW50LCBiYXRjaF9ub19kcmlmdCk7CiAKLQkJLyogQ29tbWl0IHRo aXMgYmF0Y2gsIGFuZCBwcmVwYXJlIGZvciBuZXh0IGJhdGNoICovCi0JCUNvbW1pdFRyYW5zYWN0 aW9uQ29tbWFuZCgpOworCQkvKgorCQkgKiBDb21taXQgdGhpcyBiYXRjaCBpZiBzdGFydGVkIGEg dHJhbnNhY3Rpb24sIGFuZCBwcmVwYXJlIGZvciBuZXh0CisJCSAqIGJhdGNoLgorCQkgKi8KKwkJ aWYgKHN0YXJ0ZWRfdHgpCisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAogCQlpZiAo YmF0Y2hfbWlzc2luZ19jb3VudCkKIAkJewpAQCAtNzM4LDcgKzc0Nyw3IEBAIGNvcHlfc2VxdWVu Y2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwgTGlzdCAqc2VxaW5mb3MsIGJvb2wgdXBkYXRlX2xz bikKIAogCS8qIFJlcG9ydCBtaXNtYXRjaGVzLCBwZXJtaXNzaW9uIGlzc3Vlcywgb3IgbWlzc2lu ZyBzZXF1ZW5jZXMgKi8KIAlyZXBvcnRfc2VxdWVuY2VfZXJyb3JzKG1pc21hdGNoZWRfc2Vxc19p ZHgsIGluc3VmZnBlcm1fc2Vxc19pZHgsCi0JCQkJCQkgICBtaXNzaW5nX3NlcXNfaWR4LCBzZXFp bmZvcyk7CisJCQkJCQkgICBtaXNzaW5nX3NlcXNfaWR4LCBzZXFpbmZvcywgc3VibmFtZSk7CiAK IAlyZXR1cm4gc2VxdWVuY2VfY29waWVkOwogfQpAQCAtNzU0LDM3ICs3NjMsMjggQEAgaW52YWxp ZGF0ZV9zeW5jaW5nX3NlcXVlbmNlX2luZm9zKERhdHVtIGFyZywgU3lzQ2FjaGVJZGVudGlmaWVy IGNhY2hlaWQsCiB9CiAKIC8qCi0gKiBHZXQgdGhlIGxpc3Qgb2Ygc2VxdWVuY2UgaW5mb3JtYXRp b24gZm9yIHRoZSBjdXJyZW50IHN1YnNjcmlwdGlvbi4KKyAqIEdldCB0aGUgbGlzdCBvZiBzZXF1 ZW5jZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGdpdmVuIHN1YnNjcmlwdGlvbiBmcm9tCisgKiBjYXRh bG9nLgogICoKLSAqIFJldHVybiBjYWNoZWQgc2VxdWVuY2Ugc3RhdGVzIGlmIHZhbGlkOyBvdGhl cndpc2UgZmV0Y2hlcyB0aGVtIGZyb20gdGhlCi0gKiBjYXRhbG9nLCBjYWNoZXMgdGhlIHJlc3Vs dCwgYW5kIHJldHVybiBpdC4KKyAqIEFsbCBlbnRyaWVzIGluIHRoZSByZXR1cm5lZCBsaXN0IGFy ZSBhbGxvY2F0ZWQgaW4gdGhlIHNwZWNpZmllZCBtZW1vcnkKKyAqIGNvbnRleHQuCiAgKi8KIHN0 YXRpYyBMaXN0ICoKLWZldGNoX3NlcXVlbmNlX2luZm9zKHZvaWQpCitmZXRjaF9zZXF1ZW5jZXNf ZnJvbV9jYXRhbG9nKE9pZCBzdWJpZCwgTWVtb3J5Q29udGV4dCBjdHgpCiB7CiAJUmVsYXRpb24J cmVsOwogCUhlYXBUdXBsZQl0dXA7CiAJU2NhbktleURhdGEgc2tleVsxXTsKIAlTeXNTY2FuRGVz YyBzY2FuOwotCU9pZAkJCXN1YmlkID0gTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZDsKLQlMaXN0 CSAgICp0bXBfc2VxaW5mb3MgPSBOSUw7CisJTGlzdAkgICAqc2VxaW5mb3MgPSBOSUw7CisJYm9v bAkJc3RhcnRlZF90eCA9IGZhbHNlOwogCi0JaWYgKHNlcXVlbmNlX2luZm9zX3ZhbGlkKQotCQly ZXR1cm4gc2VxdWVuY2VfaW5mb3M7Ci0KLQkvKiBGcmVlIHRoZSBleGlzdGluZyBpbnZhbGlkIGNh Y2hlIGVudHJpZXMgKi8KLQlmb3JlYWNoX3B0cihMb2dpY2FsUmVwU2VxdWVuY2VJbmZvLCBzZXFp bmZvLCBzZXF1ZW5jZV9pbmZvcykKKwlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQogCXsKLQkJ cGZyZWUoc2VxaW5mby0+bnNwbmFtZSk7Ci0JCXBmcmVlKHNlcWluZm8tPnNlcW5hbWUpOwotCQlw ZnJlZShzZXFpbmZvKTsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJc3RhcnRlZF90 eCA9IHRydWU7CiAJfQogCi0JbGlzdF9mcmVlKHNlcXVlbmNlX2luZm9zKTsKLQlzZXF1ZW5jZV9p bmZvcyA9IE5JTDsKLQotCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0KIAlyZWwgPSB0YWJs ZV9vcGVuKFN1YnNjcmlwdGlvblJlbFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAKIAkv KiBTY2FuIGZvciBhbGwgc2VxdWVuY2VzIGJlbG9uZ2luZyB0byB0aGlzIHN1YnNjcmlwdGlvbiAq LwpAQCAtODI1LDE0ICs4MjUsMTQgQEAgZmV0Y2hfc2VxdWVuY2VfaW5mb3Modm9pZCkKIAogCQlB c3NlcnQocmVsc3RhdGUgPT0gU1VCUkVMX1NUQVRFX0lOSVQgfHwgcmVsc3RhdGUgPT0gU1VCUkVM X1NUQVRFX1JFQURZKTsKIAotCQkvKiBDYWNoZSB0aGUgaW5mb3JtYXRpb24gaW4gYSBwZXJtYW5l bnQgbWVtb3J5IGNvbnRleHQgKi8KLQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKENh Y2hlTWVtb3J5Q29udGV4dCk7CisJCS8qIENhY2hlIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgZ2l2 ZW4gbWVtb3J5IGNvbnRleHQgKi8KKwkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGN0 eCk7CiAJCXNlcSA9IHBhbGxvYzBfb2JqZWN0KExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8pOwogCQlz ZXEtPmxvY2FscmVsaWQgPSBzdWJyZWwtPnNycmVsaWQ7CiAJCXNlcS0+bnNwbmFtZSA9IGdldF9u YW1lc3BhY2VfbmFtZShSZWxhdGlvbkdldE5hbWVzcGFjZShzZXF1ZW5jZV9yZWwpKTsKIAkJc2Vx LT5zZXFuYW1lID0gcHN0cmR1cChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShzZXF1ZW5jZV9yZWwp KTsKIAkJc2VxLT5yZWxzdGF0ZSA9IHJlbHN0YXRlOwotCQl0bXBfc2VxaW5mb3MgPSBsYXBwZW5k KHRtcF9zZXFpbmZvcywgc2VxKTsKKwkJc2VxaW5mb3MgPSBsYXBwZW5kKHNlcWluZm9zLCBzZXEp OwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIAogCQl0YWJsZV9jbG9zZShzZXF1 ZW5jZV9yZWwsIE5vTG9jayk7CkBAIC04NDIsMTAgKzg0MiwzOCBAQCBmZXRjaF9zZXF1ZW5jZV9p bmZvcyh2b2lkKQogCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CiAJdGFibGVfY2xvc2UocmVsLCBB Y2Nlc3NTaGFyZUxvY2spOwogCi0Jc2VxdWVuY2VfaW5mb3MgPSB0bXBfc2VxaW5mb3M7Ci0Jc2Vx dWVuY2VfaW5mb3NfdmFsaWQgPSB0cnVlOworCWlmIChzdGFydGVkX3R4KQorCQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKIAotCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCXJldHVy biBzZXFpbmZvczsKK30KKworLyoKKyAqIEdldCB0aGUgbGlzdCBvZiBzZXF1ZW5jZSBpbmZvcm1h dGlvbiBmb3IgdGhlIGN1cnJlbnQgc3Vic2NyaXB0aW9uLgorICoKKyAqIFJldHVybiBjYWNoZWQg c2VxdWVuY2Ugc3RhdGVzIGlmIHZhbGlkOyBvdGhlcndpc2UgZmV0Y2hlcyB0aGVtIGZyb20gdGhl CisgKiBjYXRhbG9nLCBjYWNoZXMgdGhlIHJlc3VsdCwgYW5kIHJldHVybiBpdC4KKyAqLworc3Rh dGljIExpc3QgKgorZmV0Y2hfc2VxdWVuY2VfaW5mb3Modm9pZCkKK3sKKwlpZiAoc2VxdWVuY2Vf aW5mb3NfdmFsaWQpCisJCXJldHVybiBzZXF1ZW5jZV9pbmZvczsKKworCS8qIEZyZWUgdGhlIGV4 aXN0aW5nIGludmFsaWQgY2FjaGUgZW50cmllcyAqLworCWZvcmVhY2hfcHRyKExvZ2ljYWxSZXBT ZXF1ZW5jZUluZm8sIHNlcWluZm8sIHNlcXVlbmNlX2luZm9zKQorCXsKKwkJcGZyZWUoc2VxaW5m by0+bnNwbmFtZSk7CisJCXBmcmVlKHNlcWluZm8tPnNlcW5hbWUpOworCQlwZnJlZShzZXFpbmZv KTsKKwl9CisKKwlsaXN0X2ZyZWUoc2VxdWVuY2VfaW5mb3MpOworCXNlcXVlbmNlX2luZm9zID0g TklMOworCisJc2VxdWVuY2VfaW5mb3MgPSBmZXRjaF9zZXF1ZW5jZXNfZnJvbV9jYXRhbG9nKE15 U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJCQkgIENhY2hlTWVtb3J5Q29udGV4dCk7CisJ c2VxdWVuY2VfaW5mb3NfdmFsaWQgPSB0cnVlOwogCiAJcmV0dXJuIHNlcXVlbmNlX2luZm9zOwog fQpAQCAtOTUwLDYgKzk3OCw5IEBAIHN0YXJ0X3NlcXVlbmNlX3N5bmModm9pZCkKIAkJCXNlcWlu Zm9zID0gZmV0Y2hfc2VxdWVuY2VfaW5mb3MoKTsKIAogCQkJc2VxdWVuY2VfY29waWVkID0gY29w eV9zZXF1ZW5jZXMoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwgc2VxaW5mb3MsCisJCQkJCQkJCQkJ CSBNeVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJCQkgTXlTdWJzY3JpcHRpb24tPm5hbWUs CisJCQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+cnVuYXNvd25lciwKIAkJCQkJCQkJCQkJIHVw ZGF0ZV9sc24pOwogCiAJCQlNZW1vcnlDb250ZXh0UmVzZXQoU2VxdWVuY2VTeW5jQ29udGV4dCk7 CkBAIC0xMDE5LDMgKzEwNTAsNDAgQEAgU2VxdWVuY2VTeW5jV29ya2VyTWFpbihEYXR1bSBtYWlu X2FyZykKIAogCUZpbmlzaFN5bmNXb3JrZXIoKTsKIH0KKworLyoKKyAqIFdyYXBwZXIgZm9yIExv Z2ljYWxSZXBTeW5jU2VxdWVuY2VzIHRvIHN5bmNocm9uaXplIGFsbCBzZXF1ZW5jZXMgb2YgYQor ICogc3Vic2NyaXB0aW9uIGZyb20gb3V0c2lkZSB0aGUgc2VxdWVuY2VzeW5jIHdvcmtlci4KKyAq Lwordm9pZAorQWx0ZXJTdWJTeW5jU2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwgT2lk IHN1YmlkLCBjaGFyICpzdWJuYW1lLAorCQkJCQkgIGJvb2wgcnVuYXNvd25lcikKK3sKKwlMaXN0 ICpzZXFpbmZvczsKKworCUFzc2VydCghU2VxdWVuY2VTeW5jQ29udGV4dCk7CisKKwkvKgorCSAq IEZldGNoIHNlcXVlbmNlcyBkaXJlY3RseSBmcm9tIHRoZSBjYXRhbG9nIHJhdGhlciB0aGFuIHVz aW5nIHRoZQorCSAqIHNlcXVlbmNlIGNhY2hlLCB3aGljaCBpcyBtYWludGFpbmVkIG9ubHkgZm9y IHRoZSBzZXF1ZW5jZSBzeW5jCisJICogd29ya2VyLgorCSAqLworCXNlcWluZm9zID0gZmV0Y2hf c2VxdWVuY2VzX2Zyb21fY2F0YWxvZyhzdWJpZCwgQ3VycmVudE1lbW9yeUNvbnRleHQpOworCisJ UEdfVFJZKCk7CisJeworCQkvKgorCQkgKiBVc2UgdGhlIGN1cnJlbnQgbWVtb3J5IGNvbnRleHQg Zm9yIHN5bmNocm9uaXphdGlvbi4gU2luY2UgdGhpcyBzaG91bGQKKwkJICogYmUgc2hvcnQtbGl2 ZWQgY29tbWFuZCBjb250ZXh0IHRoYXQgd2lsbCBiZSBjbGVhbmVkIHVwIGF1dG9tYXRpY2FsbHks CisJCSAqIHdlIGNhbiBzaW1wbHkgYXNzaWduIGl0IGFzIHRoZSBzeW5jaHJvbml6YXRpb24gY29u dGV4dC4KKwkJICovCisJCVNlcXVlbmNlU3luY0NvbnRleHQgPSBDdXJyZW50TWVtb3J5Q29udGV4 dDsKKworCQkodm9pZCkgY29weV9zZXF1ZW5jZXMoY29ubiwgc2VxaW5mb3MsIHN1YmlkLCBzdWJu YW1lLCBydW5hc293bmVyLCB0cnVlKTsKKwl9CisJUEdfRklOQUxMWSgpOworCXsKKwkJU2VxdWVu Y2VTeW5jQ29udGV4dCA9IE5VTEw7CisJfQorCVBHX0VORF9UUlkoKTsKK30KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAppbmRleCA3ZDc0OGEyOGRhOC4uNzNhZmQ3ODUzZDAg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAorKysg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKQEAgLTE0LDYgKzE0LDgg QEAKIAogI2luY2x1ZGUgPHNpZ25hbC5oPgogCisjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVj ZWl2ZXIuaCIKKwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJh bGxlbEFwcGx5TWVzc2FnZVBlbmRpbmc7CiAKIGV4dGVybiB2b2lkIEFwcGx5V29ya2VyTWFpbihE YXR1bSBtYWluX2FyZyk7CkBAIC0zMSw0ICszMyw3IEBAIGV4dGVybiB2b2lkIExvZ2ljYWxSZXBX b3JrZXJzV2FrZXVwQXRDb21taXQoT2lkIHN1YmlkKTsKIAogZXh0ZXJuIHZvaWQgQXRFT1hhY3Rf TG9naWNhbFJlcFdvcmtlcnMoYm9vbCBpc0NvbW1pdCk7CiAKK2V4dGVybiB2b2lkIEFsdGVyU3Vi U3luY1NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sIE9pZCBzdWJpZCwKKwkJCQkJCQkJ ICBjaGFyICpzdWJuYW1lLCBib29sIHJ1bmFzb3duZXIpOworCiAjZW5kaWYJCQkJCQkJLyogTE9H SUNBTFdPUktFUl9IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzZf c2VxdWVuY2VzLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM2X3NlcXVlbmNlcy5wbApp bmRleCBhZjE5MDcxM2IyYi4uOGQyNWFjNDBjZTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAzNl9zZXF1ZW5jZXMucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDM2X3NlcXVlbmNlcy5wbApAQCAtMTc2LDQgKzE3Niw1MyBAQCAkbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2coCiAJcXIvV0FSTklORzogKCBbQS1aMC05XSs6KT8gbWlzc2luZyBzZXF1ZW5j ZSBvbiBwdWJsaXNoZXIgXCgicHVibGljLnJlZ3Jlc3NfczQiXCkvLAogCSRsb2dfb2Zmc2V0KTsK IAorIyMjIyMjIyMjIworIyBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggU0VRVUVOQ0VT IHN5bmNocm9uaXplcyBzZXF1ZW5jZXMgb25saW5lLAorIyBlbGltaW5hdGluZyB0aGUgbmVlZCB0 byBsYXVuY2ggYSBzZXF1ZW5jZXN5bmMgd29ya2VyLgorIyMjIyMjIyMjIworCisjIFJlZHVjZSBt YXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzIHRvIGRpc2FsbG93IHNlcXVlbmNlIHdvcmtl ciBmcm9tIHJ1bm5pbmcKKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3Fs LmNvbmYnLAorCXFxKG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSAwKSk7Ciskbm9k ZV9zdWJzY3JpYmVyLT5yZXN0YXJ0OworCisjIFZlcmlmeSB0aGVyZSBpcyBubyBsb2dpY2FsIHJl cGxpY2F0aW9uIGFwcGx5IHdvcmtlciBydW5uaW5nCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3N0 YXRfYWN0aXZpdHkgV0hFUkUgYmFja2VuZF90eXBlID0gJ2xvZ2ljYWwgcmVwbGljYXRpb24gYXBw bHkgd29ya2VyJyIpOworCitpcygkcmVzdWx0LCAnMCcsICdubyBsb2dpY2FsIHJlcGxpY2F0aW9u IHdvcmtlciBpcyBydW5uaW5nJyk7CisKKyMgSW5jcmVtZW50IHNlcXVlbmNlIG9uIHB1Ymxpc2hl cgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxcShTRUxFQ1QgbmV4 dHZhbCgncmVncmVzc19zMScpOykpOworCisjIFRoZSBjb21tYW5kIHNob3VsZCBmYWlsIGR1ZSB0 byBtaXNzaW5nIHNlcXVlbmNlICgncmVncmVzc19zNCcpCitteSAoJGNtZHJldCwgJHN0ZG91dCwg JHN0ZGVycikgPSAkbm9kZV9zdWJzY3JpYmVyLT5wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3NlcV9zdWIgUkVGUkVTSCBTRVFVRU5DRVM7Iik7CisKK2xpa2Uo CisJJHN0ZGVyciwKKwlxci9XQVJOSU5HOiAgbWlzc2luZyBzZXF1ZW5jZSBvbiBwdWJsaXNoZXIg XCgicHVibGljLnJlZ3Jlc3NfczQiXCkvLAorCSJvdXRwdXQgdGhlIHdhbnJpbmcgZm9yIHRoZSBt aXNzaW5nIHNlcXVlbmNlIHJlZ3Jlc3NfczQiKTsKKworbGlrZSgKKwkkc3RkZXJyLAorCXFyL0VS Uk9SOiAgbG9naWNhbCByZXBsaWNhdGlvbiBzZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24gZmFpbGVk IGZvciBzdWJzY3JpcHRpb24gXCJyZWdyZXNzX3NlcV9zdWJcIi8sCisJInRoZSBjb21tYW5kIGZh aWxlZCBkdWUgdG8gdGhlIG1pc3Npbmcgc2VxdWVuY2UgcmVncmVzc19zNCIpOworCisjIFJlZnJl c2ggdGhlIHB1YmxpY2F0aW9uIHRvIHJlbW92ZSB0aGUgbWlzc2luZyBzZXF1ZW5jZQorJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiBy ZWdyZXNzX3NlcV9zdWIgUkVGUkVTSCBQVUJMSUNBVElPTjsiKTsKKworIyBTeW5jIHRoZSBzZXF1 ZW5jZSByZWdyZXNzX3MxCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nfc2VxX3N1YiBSRUZSRVNIIFNFUVVFTkNFUzsi KTsKKworIyBHZXQgdGhlIGN1cnJlbnQgc2VxdWVuY2UgdmFsdWUgb24gc3Vic2NyaWJlcgorJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCXFxKFNFTEVD VCBsYXN0X3ZhbHVlIEZST00gcmVncmVzc19zMTspKTsKKworaXMoJHJlc3VsdCwgJzIwMScsICdz ZXF1ZW5jZSByZWdyZXNzX3MxIGlzIHN5bmNlZCBub3cnKTsKKwogZG9uZV90ZXN0aW5nKCk7Ci0t IAoyLjQ3LjMKCg== --0000000000000f5c91064f7d5d36--