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.94.2) (envelope-from ) id 1v76oH-00Ey4Y-12 for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Oct 2025 06:41:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1v76oE-00AKas-PO for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Oct 2025 06:40:59 +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.94.2) (envelope-from ) id 1v76oE-00AKaf-8h for pgsql-hackers@lists.postgresql.org; Fri, 10 Oct 2025 06:40:59 +0000 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v76oC-001N7p-0k for pgsql-hackers@postgresql.org; Fri, 10 Oct 2025 06:40:58 +0000 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-3324523dfb2so1738387a91.0 for ; Thu, 09 Oct 2025 23:40:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760078454; x=1760683254; darn=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=xmTX+JRQOQCRvj5bpO/NkEt86foa2HsQR3AZfVpvow8=; b=KRsmX5bkxi+pnz9kVXkEQourjoVa8KIcnm6Jl9DWYOnMILDOmuHXOquJ9TLDiRhdP+ WfTzbOxHL2rz0cFoIg4TG+DDAJHgjrnGoB5IcaCZg3Y90Dk3EKvwGt5q30ycyb9LhCDV uwcml7PlQBfik2RpsK8IC+G1nxvcyinUneKhCQfe6EVzQsplxe6jlpw7oM37hYuHX6OF 1z/ZTwNIKAslHvsbV1JLQX3mdCCehbZIjXvNoAnpTO29hZfel1jZkx8ri0pPYHaxzAmk 08UsP8tnDr9vZpRZ4nvap08csMWLVhGzQo76wvVRqw2COoWpo+Cxy+N0Qaf+5T5Wv4MG d2Hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760078454; x=1760683254; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=xmTX+JRQOQCRvj5bpO/NkEt86foa2HsQR3AZfVpvow8=; b=rmTJFZ3s+jIXuQ1pRDKdRh1Hx9GWIjNw631NnyAbD/aXJMB2OX4ev6w7rBr8RV4u4w gNruNNg1dVmmL4ezDQLzCBvzQbCy0EC0JD2+wJj5Qii+CkKD1NJVZr9hIoYYjjSJRTAv rD0+Tv2elXfib3tcts0FlUahCNvpn8HRfiJZ8dKWky0RPmGAnitWInFuKKwwJAIeNyuF +8Ywv2rVycF7i8CBRCLpHn7N9HjIecuXIz3+9WpqgtUmNMFrF3h2xtc//QnFglHjghxM FBmwz2V0iILTeKy0jlf2WUdztCmT0/tuOwTk/OfV3dCDVD1oxdmHY3eBvtUO8ZVR0JmJ ke4w== X-Gm-Message-State: AOJu0Yx85D31hw9hbwgvO8gx4Z6D+nE/qWUf5p5V5HoxkAj4PUV5o7Ik /nGObTadwROYeA53smzYdwUg2s9g33shjymC3Bhm65HL3SHondCt6jIhZ+FRbsajolWetHWBK9Y GcuaQP0yV7wu92XpHcdqCOvLpMK2ZmDyXm0Cz X-Gm-Gg: ASbGncvzhU4yMJnQ+NPMwy6P5m8SO+gLT4/5o5ZZrOxLWo9JE9J9oOekv/43f9AjmJ+ Stbl4XdI3K0QbCnwTWWGcFmL4U/GBHAwSCxf7fH+33q+sh/fEJf8vlJLWahYmn/I52r6diEfffn IJaQs+RaB5tnxsbWj8lzD5+jSd5EeLfwg1PXAzo2pcTffjMClKXFeoV/77nQJqSN3yB2iOELstF QVN/zM2h6iLFFWiscLRyTpofsA= X-Google-Smtp-Source: AGHT+IGkK/sXi4UqEfICT3QPnveZk9hFzpNhVcK0D579T/gto4qJQyR554Dtj0O79mb5+MH4LKc8AdOkH3zbY8DA3Ic= X-Received: by 2002:a17:90b:17cb:b0:32e:9a24:2dd9 with SMTP id 98e67ed59e1d1-33b51124ffdmr13697899a91.1.1760078453976; Thu, 09 Oct 2025 23:40:53 -0700 (PDT) MIME-Version: 1.0 References: <68f3771f-91f5-4cb7-b1de-74d9abbf0b96@vondra.me> In-Reply-To: <68f3771f-91f5-4cb7-b1de-74d9abbf0b96@vondra.me> From: Amit Langote Date: Fri, 10 Oct 2025 15:40:37 +0900 X-Gm-Features: AS18NWDwLicEQ1QKvf_Hh46Bp_m182Kvz_MEZ2oJhbDPTsdPVIXl0ksIIUQqV_s Message-ID: Subject: Re: Batching in executor To: Tomas Vondra Cc: PostgreSQL-development Content-Type: multipart/mixed; boundary="00000000000006d2b20640c83360" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000006d2b20640c83360 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Mon, Sep 29, 2025 at 8:01=E2=80=AFPM Tomas Vondra wrot= e: > I also tried running TPC-H. I don't have useful numbers yet, but I ran > into a segfault - see the attached backtrace. It only happens with the > batching, and only on Q22 for some reason. I initially thought it's a > bug in clang, because I saw it with clang-22 built from git, and not > with clang-14 or gcc. But since then I reproduced it with clang-19 (on > debian 13). Still could be a clang bug, of course. I've seen ~20 of > those segfaults so far, and the backtraces look exactly the same. I can reproduce the Q22 segfault with clang-17 on macOS and the attached patch 0009 fixes it. The issue I observed is that two EEOPs both called the same helper, and that helper re-peeked ExecExprEvalOp(op) to choose its path; in this particular build the two EEOP cases in ExecInterpExpr() compiled to identical code so their dispatch labels had the same address (reverse_dispatch_table logging in ExecInitInterpreter() showed the duplicate), and because ExecEvalStepOp() maps by label address the reverse lookup could yield the other EEOP -- I saw ExprInit select ROWLOOP EEOP while the ExprExec-time helper observed DIRECT EEOP and ran code for it, which then crashed. In 0009 (the fix), I split the helper into two functions, one per EEOP, so the helper does not re-derive the opcode; with that change I cannot reproduce the crash on macOS clang-17. --=20 Thanks, Amit Langote --00000000000006d2b20640c83360 Content-Type: application/octet-stream; name="v3-0006-WIP-Add-EEOP_AGG_PLAIN_TRANS_BATCH_ROWLOOP.patch" Content-Disposition: attachment; filename="v3-0006-WIP-Add-EEOP_AGG_PLAIN_TRANS_BATCH_ROWLOOP.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgkh6mbc3 RnJvbSAyMGE5OWY5MDhlNmRjOTQ5OWJhOTI3YjEzMjE5MThjZmYzMDZhY2E3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgMiBTZXAgMjAyNSAyMzo0NjozNCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjMg Ni85XSBXSVA6IEFkZCBFRU9QX0FHR19QTEFJTl9UUkFOU19CQVRDSF9ST1dMT09QCgpJbnRyb2R1 Y2UgYSBiYXRjaCBFRU9QIHRoYXQgcnVucyBwbGFpbiBhZ2dyZWdhdGUgdHJhbnNpdGlvbnMgYnkK bG9vcGluZyBvdmVyIHJvd3Mgb2YgYSBUdXBsZUJhdGNoLiBUaGlzIGtlZXBzIHRyYW5zaXRpb24g bG9naWMgaW4KdGhlIGludGVycHJldGVyIHdoaWxlIGFtb3J0aXppbmcgcGVyLXJvdyBjb3N0cy4K CkdhdGUgd2l0aCBBZ2dUcmFuc0NhblVzZUJhdGNoKCk6IHBsYWluLCBub24taGFzaGVkLCBzaW5n bGUtc2V0CmFnZ3JlZ2F0ZXMgd2l0aCBubyBESVNUSU5DVC9PUkRFUi9GSUxURVIsIGFuZCBzaW1w bGUgVmFyIGFyZ3MuCgpFeHRlbmQgRXhlY0J1aWxkQWdnVHJhbnMoKSB0byBwcmVwYXJlIGJhdGNo IGZldGNoL2J1aWxkIHN0ZXBzIGFuZAp0byByZXR1cm4gd2hldGhlciBhIGJhdGNoIHBhdGggaXMg dXNlZC4KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jICAgICAgIHwgMjI4ICsr KysrKysrKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwcklu dGVycC5jIHwgMTAzICsrKysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5j ICAgICAgICB8ICAxNyArLQogc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgICB8 ICAgNiArCiBzcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMgIHwgICAxICsKIHNy Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNCYXRjaC5oICAgICAgfCAgIDYgKwogc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY0V4cHIuaCAgICAgICB8ICAxNCArKwogc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY3V0b3IuaCAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUFnZy5o ICAgICAgICB8ICAgMiArCiA5IGZpbGVzIGNoYW5nZWQsIDM2MyBpbnNlcnRpb25zKCspLCAxNyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwppbmRleCBmMTU2OTg3OWI1Mi4uYWY1 ZWQ4YjYzNjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpAQCAtOTUsNyArOTUsOSBAQCBzdGF0 aWMgdm9pZCBFeGVjQnVpbGRBZ2dUcmFuc0NhbGwoRXhwclN0YXRlICpzdGF0ZSwgQWdnU3RhdGUg KmFnZ3N0YXRlLAogCQkJCQkJCQkgIEV4cHJFdmFsU3RlcCAqc2NyYXRjaCwKIAkJCQkJCQkJICBG dW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgQWdnU3RhdGVQZXJUcmFucyBwZXJ0cmFucywKIAkJCQkJ CQkJICBpbnQgdHJhbnNubywgaW50IHNldG5vLCBpbnQgc2V0b2ZmLCBib29sIGlzaGFzaCwKLQkJ CQkJCQkJICBib29sIG51bGxjaGVjayk7CisJCQkJCQkJCSAgYm9vbCBudWxsY2hlY2ssIGJvb2wg YmF0Y2gsCisJCQkJCQkJCSAgQmF0Y2hWZWN0b3IgKmJ2KTsKKwogc3RhdGljIHZvaWQgRXhlY0lu aXRKc29uRXhwcihKc29uRXhwciAqanNleHByLCBFeHByU3RhdGUgKnN0YXRlLAogCQkJCQkJCSBE YXR1bSAqcmVzdiwgYm9vbCAqcmVzbnVsbCwKIAkJCQkJCQkgRXhwckV2YWxTdGVwICpzY3JhdGNo KTsKQEAgLTEwNCw2ICsxMDYsMTAgQEAgc3RhdGljIHZvaWQgRXhlY0luaXRKc29uQ29lcmNpb24o RXhwclN0YXRlICpzdGF0ZSwgSnNvblJldHVybmluZyAqcmV0dXJuaW5nLAogCQkJCQkJCQkgYm9v bCBleGlzdHNfY29lcmNlLAogCQkJCQkJCQkgRGF0dW0gKnJlc3YsIGJvb2wgKnJlc251bGwpOwog CitzdGF0aWMgQmF0Y2hWZWN0b3IgKkJhdGNoVmVjdG9yQ3JlYXRlKEJpdG1hcHNldCAqYXR0bm9z LCBBdHRyTnVtYmVyIGxhc3RfdmFyKTsKK3N0YXRpYyBib29sIEV4cHJMaXN0QWxsU2ltcGxlVmFy cyhjb25zdCBMaXN0ICphcmdzLCBCaXRtYXBzZXQgKiphbGxhdHRub3MpOworc3RhdGljIEJhdGNo VmVjdG9yU2xpY2UgKkJhdGNoVmVjdG9yU2xpY2VGcm9tRXhwckFyZ3MoY29uc3QgTGlzdCAqYXJn cywKKwkJCQkJCQkJCQkJCQkgIGNvbnN0IEJhdGNoVmVjdG9yICpidik7CiAKIC8qCiAgKiBFeGVj SW5pdEV4cHI6IHByZXBhcmUgYW4gZXhwcmVzc2lvbiB0cmVlIGZvciBleGVjdXRpb24KQEAgLTM2 NTksNiArMzY2NSwzMyBAQCBFeGVjSW5pdENvZXJjZVRvRG9tYWluKEV4cHJFdmFsU3RlcCAqc2Ny YXRjaCwgQ29lcmNlVG9Eb21haW4gKmN0ZXN0LAogCX0KIH0KIAorLyogcGxhaW4gYWdnLCBzaW5n bGUgc2V0LCBub3QgaGFzaGVkLCBubyBESVNUSU5DVC9PUkRFUi9GSUxURVIgKi8KK3N0YXRpYyBp bmxpbmUgYm9vbAorQWdnVHJhbnNDYW5Vc2VCYXRjaChBZ2dTdGF0ZSAqYXMsIEFnZ1N0YXRlUGVy VHJhbnMgcHQpCit7CisJQWdnICphZ2dub2RlID0gKEFnZyAqKSBhcy0+c3MucHMucGxhbjsKKwor CWlmICghQWdnQ2FuVXNlUGxhaW5CYXRjaChhcykpCisJCXJldHVybiBmYWxzZTsKKwlpZiAoYXMt PmFnZ3N0cmF0ZWd5ID09IEFHR19IQVNIRUQpCisJCXJldHVybiBmYWxzZTsKKwlpZiAoYWdnbm9k ZS0+Z3JvdXBpbmdTZXRzICE9IE5JTCkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChhcy0+cGhhc2Ug PT0gTlVMTCB8fCBhcy0+cGhhc2UtPm51bXNldHMgPiAwKQorCQlyZXR1cm4gZmFsc2U7CisKKwkv KiBwZXItYWdncmVnYXRlIGNvbXBsaWNhdGlvbnMgKi8KKwlpZiAocHQtPmFnZ3NvcnRyZXF1aXJl ZCkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChwdC0+YWdncmVmICYmCisJCShwdC0+YWdncmVmLT5h Z2dkaXN0aW5jdCAhPSBOSUwgfHwKKwkJIHB0LT5hZ2dyZWYtPmFnZ29yZGVyICE9IE5JTCB8fAor CQkgcHQtPmFnZ3JlZi0+YWdnZmlsdGVyICE9IE5VTEwpKQorCQlyZXR1cm4gZmFsc2U7CisKKwly ZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIEJ1aWxkIHRyYW5zaXRpb24vY29tYmluZSBmdW5jdGlv biBpbnZvY2F0aW9ucyBmb3IgYWxsIGFnZ3JlZ2F0ZSB0cmFuc2l0aW9uCiAgKiAvIGNvbWJpbmF0 aW9uIGZ1bmN0aW9uIGludm9jYXRpb25zIGluIGEgZ3JvdXBpbmcgc2V0cyBwaGFzZS4gVGhpcyBo YXMgdG8KQEAgLTM2NzUsMTMgKzM3MDgsMTcgQEAgRXhlY0luaXRDb2VyY2VUb0RvbWFpbihFeHBy RXZhbFN0ZXAgKnNjcmF0Y2gsIENvZXJjZVRvRG9tYWluICpjdGVzdCwKICAqLwogRXhwclN0YXRl ICoKIEV4ZWNCdWlsZEFnZ1RyYW5zKEFnZ1N0YXRlICphZ2dzdGF0ZSwgQWdnU3RhdGVQZXJQaGFz ZSBwaGFzZSwKLQkJCQkgIGJvb2wgZG9Tb3J0LCBib29sIGRvSGFzaCwgYm9vbCBudWxsY2hlY2sp CisJCQkJICBib29sIGRvU29ydCwgYm9vbCBkb0hhc2gsIGJvb2wgbnVsbGNoZWNrLAorCQkJCSAg Ym9vbCAqYmF0Y2hfdHJhbnMpCiB7CiAJRXhwclN0YXRlICAqc3RhdGUgPSBtYWtlTm9kZShFeHBy U3RhdGUpOwogCVBsYW5TdGF0ZSAgKnBhcmVudCA9ICZhZ2dzdGF0ZS0+c3MucHM7CiAJRXhwckV2 YWxTdGVwIHNjcmF0Y2ggPSB7MH07CiAJYm9vbAkJaXNDb21iaW5lID0gRE9fQUdHU1BMSVRfQ09N QklORShhZ2dzdGF0ZS0+YWdnc3BsaXQpOwogCUV4cHJTZXR1cEluZm8gZGVmb3JtID0gezAsIDAs IDAsIDAsIDAsIE5JTH07CisJYm9vbAkJYmF0Y2ggPSBBZ2dDYW5Vc2VQbGFpbkJhdGNoKGFnZ3N0 YXRlKTsKKwlCaXRtYXBzZXQgICphbGxhdHRub3MgPSBOVUxMOworCUJhdGNoVmVjdG9yICpidiA9 IE5VTEw7CiAKIAlzdGF0ZS0+ZXhwciA9IChFeHByICopIGFnZ3N0YXRlOwogCXN0YXRlLT5wYXJl bnQgPSBwYXJlbnQ7CkBAIC0zNzA3LDggKzM3NDQsMzYgQEAgRXhlY0J1aWxkQWdnVHJhbnMoQWdn U3RhdGUgKmFnZ3N0YXRlLCBBZ2dTdGF0ZVBlclBoYXNlIHBoYXNlLAogCQkJCQkJICAmZGVmb3Jt KTsKIAkJZXhwcl9zZXR1cF93YWxrZXIoKE5vZGUgKikgcGVydHJhbnMtPmFnZ3JlZi0+YWdnZmls dGVyLAogCQkJCQkJICAmZGVmb3JtKTsKKworCQlpZiAoIUFnZ1RyYW5zQ2FuVXNlQmF0Y2goYWdn c3RhdGUsIHBlcnRyYW5zKSB8fAorCQkJIUV4cHJMaXN0QWxsU2ltcGxlVmFycyhwZXJ0cmFucy0+ YWdncmVmLT5hcmdzLCAmYWxsYXR0bm9zKSkKKwkJCWJhdGNoID0gZmFsc2U7CiAJfQotCUV4ZWNQ dXNoRXhwclNldHVwU3RlcHMoc3RhdGUsICZkZWZvcm0pOworCisJaWYgKGJhdGNoKQorCXsKKwkJ aWYgKGRlZm9ybS5sYXN0X291dGVyID4gMCkKKwkJeworCQkJQXNzZXJ0KCFibXNfaXNfZW1wdHko YWxsYXR0bm9zKSk7CisJCQlidiAgPSBCYXRjaFZlY3RvckNyZWF0ZShhbGxhdHRub3MsIGRlZm9y bS5sYXN0X291dGVyKTsKKworCQkJLyoKKwkJCSAqIERlZm9ybSBhbGwgdHVwbGVzIHVwdG8gbGFz dF9vdXRlciBpbiBiYXRjaAorCQkJICovCisJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfT1VURVJf RkVUQ0hTT01FX0JBVENIOworCQkJc2NyYXRjaC5kLmZldGNoX2JhdGNoLmxhc3RfdmFyID0gZGVm b3JtLmxhc3Rfb3V0ZXI7CisJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CisK KwkJCS8qCisJCQkgKiBQdXQgYWxsIGFyZyBWYXJzIGludG8gdmVjdG9ycyBvbmNlIHBlciBiYXRj aCBzbGljZQorCQkJICovCisJCQlzY3JhdGNoLm9wY29kZSA9IEVFT1BfQlVJTERfT1VURVJfQkFU Q0hfVkVDVE9SOworCQkJc2NyYXRjaC5kLmJhdGNoX3ZlY3Rvci5idiA9IGJ2OworCQkJRXhwckV2 YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOworCQl9CisJfQorCWVsc2UKKwkJRXhlY1B1c2hF eHByU2V0dXBTdGVwcyhzdGF0ZSwgJmRlZm9ybSk7CiAKIAkvKgogCSAqIEVtaXQgaW5zdHJ1Y3Rp b25zIGZvciBlYWNoIHRyYW5zaXRpb24gdmFsdWUgLyBncm91cGluZyBzZXQgY29tYmluYXRpb24u CkBAIC0zNzQ2LDcgKzM4MTEsNyBAQCBFeGVjQnVpbGRBZ2dUcmFucyhBZ2dTdGF0ZSAqYWdnc3Rh dGUsIEFnZ1N0YXRlUGVyUGhhc2UgcGhhc2UsCiAJCSAqIEV2YWx1YXRlIGFyZ3VtZW50cyB0byBh Z2dyZWdhdGUvY29tYmluZSBmdW5jdGlvbi4KIAkJICovCiAJCWFyZ25vID0gMDsKLQkJaWYgKGlz Q29tYmluZSkKKwkJaWYgKGlzQ29tYmluZSAmJiAhYmF0Y2gpCiAJCXsKIAkJCS8qCiAJCQkgKiBD b21iaW5pbmcgdHdvIGFnZ3JlZ2F0ZSB0cmFuc2l0aW9uIHZhbHVlcy4gSW5zdGVhZCBvZiBkaXJl Y3RseQpAQCAtMzgxNiw3ICszODgxLDcgQEAgRXhlY0J1aWxkQWdnVHJhbnMoQWdnU3RhdGUgKmFn Z3N0YXRlLCBBZ2dTdGF0ZVBlclBoYXNlIHBoYXNlLAogCiAJCQlBc3NlcnQocGVydHJhbnMtPm51 bUlucHV0cyA9PSBhcmdubyk7CiAJCX0KLQkJZWxzZSBpZiAoIXBlcnRyYW5zLT5hZ2dzb3J0cmVx dWlyZWQpCisJCWVsc2UgaWYgKCFwZXJ0cmFucy0+YWdnc29ydHJlcXVpcmVkICYmICFiYXRjaCkK IAkJewogCQkJTGlzdENlbGwgICAqYXJnOwogCkBAIC0zODQ5LDcgKzM5MTQsNyBAQCBFeGVjQnVp bGRBZ2dUcmFucyhBZ2dTdGF0ZSAqYWdnc3RhdGUsIEFnZ1N0YXRlUGVyUGhhc2UgcGhhc2UsCiAJ CQl9CiAJCQlBc3NlcnQocGVydHJhbnMtPm51bVRyYW5zSW5wdXRzID09IGFyZ25vKTsKIAkJfQot CQllbHNlIGlmIChwZXJ0cmFucy0+bnVtSW5wdXRzID09IDEpCisJCWVsc2UgaWYgKHBlcnRyYW5z LT5udW1JbnB1dHMgPT0gMSAmJiAhYmF0Y2gpCiAJCXsKIAkJCS8qCiAJCQkgKiBOb24tcHJlc29y dGVkIERJU1RJTkNUIGFuZC9vciBPUkRFUiBCWSBjYXNlLCB3aXRoIGEgc2luZ2xlCkBAIC0zODY4 LDcgKzM5MzMsNyBAQCBFeGVjQnVpbGRBZ2dUcmFucyhBZ2dTdGF0ZSAqYWdnc3RhdGUsIEFnZ1N0 YXRlUGVyUGhhc2UgcGhhc2UsCiAKIAkJCUFzc2VydChwZXJ0cmFucy0+bnVtSW5wdXRzID09IGFy Z25vKTsKIAkJfQotCQllbHNlCisJCWVsc2UgaWYgKCFiYXRjaCkKIAkJewogCQkJLyoKIAkJCSAq IE5vbi1wcmVzb3J0ZWQgRElTVElOQ1QgYW5kL29yIE9SREVSIEJZIGNhc2UsIHdpdGggbXVsdGlw bGUKQEAgLTM4OTYsNyArMzk2MSw3IEBAIEV4ZWNCdWlsZEFnZ1RyYW5zKEFnZ1N0YXRlICphZ2dz dGF0ZSwgQWdnU3RhdGVQZXJQaGFzZSBwaGFzZSwKIAkJICoganVzdCBrZWVwIHRoZSBwcmlvciB0 cmFuc1ZhbHVlLiBUaGlzIGlzIHRydWUgZm9yIGJvdGggcGxhaW4gYW5kCiAJCSAqIHNvcnRlZC9k aXN0aW5jdCBhZ2dyZWdhdGVzLgogCQkgKi8KLQkJaWYgKHRyYW5zX2ZjaW5mby0+ZmxpbmZvLT5m bl9zdHJpY3QgJiYgcGVydHJhbnMtPm51bVRyYW5zSW5wdXRzID4gMCkKKwkJaWYgKHRyYW5zX2Zj aW5mby0+ZmxpbmZvLT5mbl9zdHJpY3QgJiYgcGVydHJhbnMtPm51bVRyYW5zSW5wdXRzID4gMCAm JiAhYmF0Y2gpCiAJCXsKIAkJCWlmIChzdHJpY3RudWxscykKIAkJCQlzY3JhdGNoLm9wY29kZSA9 IEVFT1BfQUdHX1NUUklDVF9JTlBVVF9DSEVDS19OVUxMUzsKQEAgLTM5MTQsNyArMzk3OSw3IEBA IEV4ZWNCdWlsZEFnZ1RyYW5zKEFnZ1N0YXRlICphZ2dzdGF0ZSwgQWdnU3RhdGVQZXJQaGFzZSBw aGFzZSwKIAkJfQogCiAJCS8qIEhhbmRsZSBESVNUSU5DVCBhZ2dyZWdhdGVzIHdoaWNoIGhhdmUg cHJlLXNvcnRlZCBpbnB1dCAqLwotCQlpZiAocGVydHJhbnMtPm51bURpc3RpbmN0Q29scyA+IDAg JiYgIXBlcnRyYW5zLT5hZ2dzb3J0cmVxdWlyZWQpCisJCWlmIChwZXJ0cmFucy0+bnVtRGlzdGlu Y3RDb2xzID4gMCAmJiAhcGVydHJhbnMtPmFnZ3NvcnRyZXF1aXJlZCAmJiAhYmF0Y2gpCiAJCXsK IAkJCWlmIChwZXJ0cmFucy0+bnVtRGlzdGluY3RDb2xzID4gMSkKIAkJCQlzY3JhdGNoLm9wY29k ZSA9IEVFT1BfQUdHX1BSRVNPUlRFRF9ESVNUSU5DVF9NVUxUSTsKQEAgLTM5NDIsNyArNDAwNyw3 IEBAIEV4ZWNCdWlsZEFnZ1RyYW5zKEFnZ1N0YXRlICphZ2dzdGF0ZSwgQWdnU3RhdGVQZXJQaGFz ZSBwaGFzZSwKIAkJCXsKIAkJCQlFeGVjQnVpbGRBZ2dUcmFuc0NhbGwoc3RhdGUsIGFnZ3N0YXRl LCAmc2NyYXRjaCwgdHJhbnNfZmNpbmZvLAogCQkJCQkJCQkJICBwZXJ0cmFucywgdHJhbnNubywg c2V0bm8sIHNldG9mZiwgZmFsc2UsCi0JCQkJCQkJCQkgIG51bGxjaGVjayk7CisJCQkJCQkJCQkg IG51bGxjaGVjaywgYmF0Y2gsIGJ2KTsKIAkJCQlzZXRvZmYrKzsKIAkJCX0KIAkJfQpAQCAtMzk2 Miw3ICs0MDI3LDcgQEAgRXhlY0J1aWxkQWdnVHJhbnMoQWdnU3RhdGUgKmFnZ3N0YXRlLCBBZ2dT dGF0ZVBlclBoYXNlIHBoYXNlLAogCQkJewogCQkJCUV4ZWNCdWlsZEFnZ1RyYW5zQ2FsbChzdGF0 ZSwgYWdnc3RhdGUsICZzY3JhdGNoLCB0cmFuc19mY2luZm8sCiAJCQkJCQkJCQkgIHBlcnRyYW5z LCB0cmFuc25vLCBzZXRubywgc2V0b2ZmLCB0cnVlLAotCQkJCQkJCQkJICBudWxsY2hlY2spOwor CQkJCQkJCQkJICBudWxsY2hlY2ssIGZhbHNlLCBOVUxMKTsKIAkJCQlzZXRvZmYrKzsKIAkJCX0K IAkJfQpAQCAtNDAwNyw2ICs0MDcyLDkgQEAgRXhlY0J1aWxkQWdnVHJhbnMoQWdnU3RhdGUgKmFn Z3N0YXRlLCBBZ2dTdGF0ZVBlclBoYXNlIHBoYXNlLAogCiAJRXhlY1JlYWR5RXhwcihzdGF0ZSk7 CiAKKwlpZiAoYmF0Y2hfdHJhbnMpCisJCSpiYXRjaF90cmFucyA9IGJhdGNoOworCiAJcmV0dXJu IHN0YXRlOwogfQogCkBAIC00MDIwLDEwICs0MDg4LDExIEBAIEV4ZWNCdWlsZEFnZ1RyYW5zQ2Fs bChFeHByU3RhdGUgKnN0YXRlLCBBZ2dTdGF0ZSAqYWdnc3RhdGUsCiAJCQkJCSAgRXhwckV2YWxT dGVwICpzY3JhdGNoLAogCQkJCQkgIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBBZ2dTdGF0ZVBl clRyYW5zIHBlcnRyYW5zLAogCQkJCQkgIGludCB0cmFuc25vLCBpbnQgc2V0bm8sIGludCBzZXRv ZmYsIGJvb2wgaXNoYXNoLAotCQkJCQkgIGJvb2wgbnVsbGNoZWNrKQorCQkJCQkgIGJvb2wgbnVs bGNoZWNrLCBib29sIGJhdGNoLCBCYXRjaFZlY3RvciAqYnYpCiB7CiAJRXhwckNvbnRleHQgKmFn Z2NvbnRleHQ7CiAJaW50CQkJYWRqdXN0X2p1bXBudWxsID0gLTE7CisJQmF0Y2hWZWN0b3JTbGlj ZSAqYnZzID0gTlVMTDsKIAogCWlmIChpc2hhc2gpCiAJCWFnZ2NvbnRleHQgPSBhZ2dzdGF0ZS0+ aGFzaGNvbnRleHQ7CkBAIC00MDc3LDcgKzQxNDYsMTMgQEAgRXhlY0J1aWxkQWdnVHJhbnNDYWxs KEV4cHJTdGF0ZSAqc3RhdGUsIEFnZ1N0YXRlICphZ2dzdGF0ZSwKIAkgKi8KIAlpZiAoIXBlcnRy YW5zLT5hZ2dzb3J0cmVxdWlyZWQpCiAJewotCQlpZiAocGVydHJhbnMtPnRyYW5zdHlwZUJ5VmFs KQorCQlpZiAoYmF0Y2gpCisJCXsKKwkJCWlmIChidikKKwkJCQlidnMgPSBCYXRjaFZlY3RvclNs aWNlRnJvbUV4cHJBcmdzKHBlcnRyYW5zLT5hZ2dyZWYtPmFyZ3MsIGJ2KTsKKwkJCXNjcmF0Y2gt Pm9wY29kZSA9IEVFT1BfQUdHX1BMQUlOX1RSQU5TX0JBVENIX1JPV0xPT1A7CisJCX0KKwkJZWxz ZSBpZiAocGVydHJhbnMtPnRyYW5zdHlwZUJ5VmFsKQogCQl7CiAJCQlpZiAoZmNpbmZvLT5mbGlu Zm8tPmZuX3N0cmljdCAmJgogCQkJCXBlcnRyYW5zLT5pbml0VmFsdWVJc051bGwpCkBAIC00MTA4 LDYgKzQxODMsNyBAQCBFeGVjQnVpbGRBZ2dUcmFuc0NhbGwoRXhwclN0YXRlICpzdGF0ZSwgQWdn U3RhdGUgKmFnZ3N0YXRlLAogCXNjcmF0Y2gtPmQuYWdnX3RyYW5zLnNldG9mZiA9IHNldG9mZjsK IAlzY3JhdGNoLT5kLmFnZ190cmFucy50cmFuc25vID0gdHJhbnNubzsKIAlzY3JhdGNoLT5kLmFn Z190cmFucy5hZ2djb250ZXh0ID0gYWdnY29udGV4dDsKKwlzY3JhdGNoLT5kLmFnZ190cmFucy5i dnMgPSBidnM7CiAJRXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgc2NyYXRjaCk7CiAKIAkvKiBmaXgg dXAganVtcG51bGwgKi8KQEAgLTUwNzAsMyArNTE0NiwxMjkgQEAgRXhlY0luaXRKc29uQ29lcmNp b24oRXhwclN0YXRlICpzdGF0ZSwgSnNvblJldHVybmluZyAqcmV0dXJuaW5nLAogCQlEb21haW5I YXNDb25zdHJhaW50cyhyZXR1cm5pbmctPnR5cGlkKTsKIAlFeHByRXZhbFB1c2hTdGVwKHN0YXRl LCAmc2NyYXRjaCk7CiB9CisKKy8qIElzIGV4cHIgYSBWYXIgbm9kZSBmb3IgYSBub24tc3lzdGVt IGF0dHJpYnV0ZT8gKi8KK3N0YXRpYyBib29sCitleHByX2lzX3NpbXBsZV92YXIoRXhwciAqZXhw ciwgQXR0ck51bWJlciAqb3V0X2F0dG5vKQoreworCWlmIChleHByID09IE5VTEwpCisJCXJldHVy biBmYWxzZTsKKworCWlmIChJc0EoZXhwciwgVGFyZ2V0RW50cnkpKQorCQlyZXR1cm4gZXhwcl9p c19zaW1wbGVfdmFyKChFeHByICopICgoVGFyZ2V0RW50cnkgKikgZXhwciktPmV4cHIsCisJCQkJ CQkJCSAgb3V0X2F0dG5vKTsKKwlpZiAoSXNBKGV4cHIsIFJlbGFiZWxUeXBlKSkKKwkJcmV0dXJu IGV4cHJfaXNfc2ltcGxlX3ZhcigoRXhwciAqKSAoKFJlbGFiZWxUeXBlICopIGV4cHIpLT5hcmcs CisJCQkJCQkJCSAgb3V0X2F0dG5vKTsKKworCWlmIChJc0EoZXhwciwgVmFyKSAmJiAoKFZhciAq KSBleHByKS0+dmFyYXR0bm8gPiAwKQorCXsKKwkJKm91dF9hdHRubyA9ICgoVmFyICopIGV4cHIp LT52YXJhdHRubzsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCisv KiBBcmUgYWxsIGlucHV0cyBwbGFpbiBWYXJzIChvcHRpb25hbGx5IGFsbG93IFJlbGFiZWxUeXBl LT5WYXIpPyBDb2xsZWN0IGF0dG5vcy4gKi8KK3N0YXRpYyBib29sCitFeHByTGlzdEFsbFNpbXBs ZVZhcnMoY29uc3QgTGlzdCAqYXJncywgQml0bWFwc2V0ICoqYWxsYXR0bm9zKQoreworCUxpc3RD ZWxsICpsYzsKKworCWZvcmVhY2gobGMsIGFyZ3MpCisJeworCQlUYXJnZXRFbnRyeSAqdGxlID0g bGZpcnN0X25vZGUoVGFyZ2V0RW50cnksIGxjKTsKKwkJRXhwciAqYXJnID0gdGxlLT5leHByOwor CQlBdHRyTnVtYmVyIGF0dG5vOworCisJCWlmICghZXhwcl9pc19zaW1wbGVfdmFyKGFyZywgJmF0 dG5vKSkKKwkJCXJldHVybiBmYWxzZTsKKworCQlpZiAoIUlzQShhcmcsIFZhcikpCisJCQlyZXR1 cm4gZmFsc2U7CisKKwkJQXNzZXJ0KGF0dG5vID4gMCk7CisJCSphbGxhdHRub3MgPSBibXNfYWRk X21lbWJlcigqYWxsYXR0bm9zLCBhdHRubyk7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKKy8q IC0tLS0tLS0tLS0gQmF0Y2hWZWN0b3Igc3R1ZmYgLS0tLS0tLS0tLS0tLSAqLworCitzdGF0aWMg QmF0Y2hWZWN0b3IgKgorQmF0Y2hWZWN0b3JDcmVhdGUoQml0bWFwc2V0ICphdHRub3MsIEF0dHJO dW1iZXIgbGFzdF92YXIpCit7CisJaW50IG1heHJvd3MgPSBFWEVDX0JBVENIX1JPV1M7CisJQmF0 Y2hWZWN0b3IgKmJ2OworCUF0dHJOdW1iZXIJYXR0bm87CisJaW50CQkJaTsKKworCWJ2ID0gcGFs bG9jKHNpemVvZihCYXRjaFZlY3RvcikpOworCWJ2LT5uY29scyA9IGJtc19udW1fbWVtYmVycyhh dHRub3MpOworCWJ2LT5tYXhyb3dzID0gbWF4cm93czsKKwlidi0+bGFzdF92YXIgPSBsYXN0X3Zh cjsKKwlidi0+YXR0bm9zID0gcGFsbG9jKHNpemVvZihBdHRyTnVtYmVyKSAqIGJ2LT5uY29scyk7 CisJYXR0bm8gPSAtMTsKKwlpID0gMDsKKwl3aGlsZSAoKGF0dG5vID0gYm1zX25leHRfbWVtYmVy KGF0dG5vcywgYXR0bm8pKSA+IDApCisJCWJ2LT5hdHRub3NbaSsrXSA9IGF0dG5vOworCWJ2LT5j b2xzID0gcGFsbG9jKHNpemVvZihEYXR1bSAqKSAqIGJ2LT5uY29scyk7CisJYnYtPm51bGxzID0g cGFsbG9jKHNpemVvZihib29sICAqKSAqIGJ2LT5uY29scyk7CisKKwlmb3IgKGkgPTA7IGkgPCBi di0+bmNvbHM7IGkrKykKKwl7CisJCWJ2LT5jb2xzW2ldICA9IHBhbGxvYyhzaXplb2YoRGF0dW0p ICogbWF4cm93cyk7CisJCWJ2LT5udWxsc1tpXSA9IHBhbGxvYyhzaXplb2YoYm9vbCkgICogbWF4 cm93cyk7CisJfQorCisJYnYtPm5yb3dzID0gMDsKKwlidi0+aGFzbnVsbCA9IGZhbHNlOworCisJ cmV0dXJuIGJ2OworfQorCitzdGF0aWMgaW50MTYKK0JhdGNoVmVjdG9yRmluZEF0dENvbG5vKGNv bnN0IEJhdGNoVmVjdG9yICpidiwgQXR0ck51bWJlciBhdHRubykKK3sKKwlmb3IgKGludCBpID0g MDsgaSA8IGJ2LT5uY29sczsgaSsrKQorCQlpZiAoYnYtPmF0dG5vc1tpXSA9PSBhdHRubykKKwkJ CXJldHVybiBpOworCisJcmV0dXJuIC0xOworfQorCisvKgorICogQmF0Y2hWZWN0b3JTbGljZUZy b21FeHByQXJncworICoJCUJ1aWxkIGEgQmF0Y2hWZWN0b3JTbGljZSBmb3IgYSBMaXN0IG9mIGFy Z3MuCisgKgorICogRm9yIFZhciBhcmdzIChwb3NzaWJseSB1bmRlciBSZWxhYmVsVHlwZSksIHN0 b3JlIHRoZSBjb2wgaW5kZXguCisgKiBGb3Igbm9uLVZhciBhcmdzLCBzdG9yZSAtMS4gQ2FsbGVy IGNhbiBoYW5kbGUgQ29uc3RzLCBldGMuCisgKi8KK3N0YXRpYyBCYXRjaFZlY3RvclNsaWNlICoK K0JhdGNoVmVjdG9yU2xpY2VGcm9tRXhwckFyZ3MoY29uc3QgTGlzdCAqYXJncywgY29uc3QgQmF0 Y2hWZWN0b3IgKmJ2KQoreworCUJhdGNoVmVjdG9yU2xpY2UgKmJ2cyA9IHBhbGxvYyhzaXplb2Yo QmF0Y2hWZWN0b3JTbGljZSkpOworCWludCBuYXJncyA9IGxpc3RfbGVuZ3RoKGFyZ3MpOworCWlu dCBpID0gMDsKKwlMaXN0Q2VsbCAqbGM7CisKKwlBc3NlcnQoYnYpOworCWJ2cy0+YnYgPSBidjsK KwlidnMtPm5hcmdzID0gbmFyZ3M7CisJYnZzLT5hcmdvZmZzID0gKGludDE2ICopIHBhbGxvYyhz aXplb2YoaW50MTYpICogbmFyZ3MpOworCisJZm9yZWFjaCAobGMsIGFyZ3MpCisJeworCQlFeHBy ICphcmcgPSAoRXhwciAqKSBsZmlyc3QobGMpOworCQlBdHRyTnVtYmVyIGF0dG5vOworCisJCWlm IChleHByX2lzX3NpbXBsZV92YXIoYXJnLCAmYXR0bm8pKQorCQkJYnZzLT5hcmdvZmZzW2krK10g PSBCYXRjaFZlY3RvckZpbmRBdHRDb2xubyhidiwgYXR0bm8pOworCQllbHNlCisJCQlidnMtPmFy Z29mZnNbaSsrXSA9IC0xOyAvKiBub24tVmFyICovCisJfQorCisJcmV0dXJuIGJ2czsKK30KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCmluZGV4IDY4NjI5YWQ3OTkxLi4zMTc2Njc5 YjM0NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCkBAIC02MDYsNiArNjA2 LDcgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250 ZXh0LCBib29sICppc251bGwpCiAJCSYmQ0FTRV9FRU9QX0JVSUxEX0lOTkVSX0JBVENIX1ZFQ1RP UiwKIAkJJiZDQVNFX0VFT1BfQlVJTERfT1VURVJfQkFUQ0hfVkVDVE9SLAogCQkmJkNBU0VfRUVP UF9CVUlMRF9TQ0FOX0JBVENIX1ZFQ1RPUiwKKwkJJiZDQVNFX0VFT1BfQUdHX1BMQUlOX1RSQU5T X0JBVENIX1JPV0xPT1AsCiAJCSYmQ0FTRV9FRU9QX0xBU1QKIAl9OwogCkBAIC0yMzM2LDYgKzIz MzcsMTQgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVj b250ZXh0LCBib29sICppc251bGwpCiAJCQlFRU9fTkVYVCgpOwogCQl9CiAKKwkJRUVPX0NBU0Uo RUVPUF9BR0dfUExBSU5fVFJBTlNfQkFUQ0hfUk9XTE9PUCkKKwkJeworCQkJLyogdG9vIGNvbXBs ZXggZm9yIGFuIGlubGluZSBpbXBsZW1lbnRhdGlvbiAqLworCQkJRXhlY0FnZ1BsYWluVHJhbnNC YXRjaChzdGF0ZSwgb3AsIGVjb250ZXh0KTsKKworCQkJRUVPX05FWFQoKTsKKwkJfQorCiAJCUVF T19DQVNFKEVFT1BfTEFTVCkKIAkJewogCQkJLyogdW5yZWFjaGFibGUgKi8KQEAgLTYwMzksMyAr NjA0OCw5NyBAQCBFeGVjQnVpbGRCYXRjaFZlY3RvcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZh bFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQsCiAJfQogCWJ2LT5ucm93cyA9IGk7CiB9 CisKK3ZvaWQKK0V4ZWNBZ2dQbGFpblRyYW5zQmF0Y2goRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2 YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0KQoreworCUFnZ1N0YXRlICAgKmFnZ3N0 YXRlID0gY2FzdE5vZGUoQWdnU3RhdGUsIHN0YXRlLT5wYXJlbnQpOworCUFnZ1N0YXRlUGVyVHJh bnMJcGVydHJhbnMgPSBvcC0+ZC5hZ2dfdHJhbnMucGVydHJhbnM7CisJQWdnU3RhdGVQZXJHcm91 cCBwZXJncm91cCA9CisJCSZhZ2dzdGF0ZS0+YWxsX3Blcmdyb3Vwc1tvcC0+ZC5hZ2dfdHJhbnMu c2V0b2ZmXVtvcC0+ZC5hZ2dfdHJhbnMudHJhbnNub107CisJQmF0Y2hWZWN0b3JTbGljZSAgKmJ2 cyA9IG9wLT5kLmFnZ190cmFucy5idnM7CisJRnVuY3Rpb25DYWxsSW5mbwlmY2luZm8gPSBwZXJ0 cmFucy0+dHJhbnNmbl9mY2luZm87CisJRm1nckluZm8JCSAgICpmaW5mbyA9IGZjaW5mby0+Zmxp bmZvOworCURhdHVtCQluZXdWYWw7CisJVHVwbGVCYXRjaCAqYmF0Y2ggPSBlY29udGV4dC0+b3V0 ZXJfYmF0Y2g7CisJaW50CQkJYmF0Y2hfbnJvd3MgPSBidnMgPyBidnMtPmJ2LT5ucm93cyA6IGJh dGNoLT5udmFsaWQ7CisJaW50CQkJc3RhcnRfcm93ID0gMDsKKworCWlmIChmaW5mby0+Zm5fc3Ry aWN0KQorCXsKKwkJaWYgKHBlcmdyb3VwLT5ub1RyYW5zVmFsdWUgJiYgYnZzKQorCQl7CisJCQlj b25zdCBCYXRjaFZlY3RvciAqYnYgPSBidnMtPmJ2OworCQkJYm9vbAlmb3VuZCA9IGZhbHNlOwor CisJCQlBc3NlcnQoYnYpOworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBiYXRjaF9ucm93czsgaSsr KQorCQkJeworCQkJCWZvciAoaW50IGogPSAwOyBqIDwgYnZzLT5uYXJnczsgaisrKQorCQkJCXsK KwkJCQkJaWYgKCFidi0+bnVsbHNbYnZzLT5hcmdvZmZzW2pdXVtpXSkKKwkJCQkJeworCQkJCQkJ ZmNpbmZvLT5hcmdzWzFdLnZhbHVlID0gYnYtPmNvbHNbYnZzLT5hcmdvZmZzW2pdXVtpXTsKKwkJ CQkJCWZjaW5mby0+YXJnc1sxXS5pc251bGwgPSBmYWxzZTsKKwkJCQkJCWlmIChqID09IGJ2cy0+ bmFyZ3MgLSAxKQorCQkJCQkJeworCQkJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJCQlicmVhazsK KwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCQlpZiAoZm91bmQpCisJCQkJCWJyZWFrOworCQkJ fQorCQkJLyogSWYgdHJhbnNWYWx1ZSBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLCBkbyBz byBub3cuICovCisJCQlFeGVjQWdnSW5pdEdyb3VwKGFnZ3N0YXRlLCBwZXJ0cmFucywgcGVyZ3Jv dXAsCisJCQkJCQkJIG9wLT5kLmFnZ190cmFucy5hZ2djb250ZXh0KTsKKwkJCXN0YXJ0X3JvdyA9 IDE7CisJCX0KKwkJZWxzZSBpZiAocGVyZ3JvdXAtPnRyYW5zVmFsdWVJc051bGwpCisJCQlyZXR1 cm47CisJfQorCisJc3dpdGNoIChFeGVjRXZhbFN0ZXBPcChzdGF0ZSwgb3ApKQorCXsKKwkJY2Fz ZSBFRU9QX0FHR19QTEFJTl9UUkFOU19CQVRDSF9ST1dMT09QOgorCQkJLyogTG9vcCByb3dzLCBj YWxsIHRoZSBvcmlnaW5hbCB0cmFuc2ZuIHBlciBlbGVtZW50IHVzaW5nIHZlY3RvciBjb2xzLiAq LworCQkJZm9yIChpbnQgaSA9IHN0YXJ0X3JvdzsgaSA8IGJhdGNoX25yb3dzOyBpKyspCisJCQl7 CisJCQkJYm9vbCBoYXNudWxsID0gZmFsc2U7CisKKwkJCQkvKiBTZXQgdXAgZmNpbmZvIGFyZ3Mg MS4ubSBmcm9tIGNvbHVtbiB2ZWN0b3JzIGF0IHJvdyBpLiAqLworCQkJCWlmIChidnMpCisJCQkJ eworCQkJCQljb25zdCBCYXRjaFZlY3RvciAqYnYgPSBidnMtPmJ2OworCisJCQkJCWZvciAoaW50 IGogPSAwOyBqIDwgYnZzLT5uYXJnczsgaisrKQorCQkJCQl7CisJCQkJCQlpbnQxNglhcmdvZmYg PSBidnMtPmFyZ29mZnNbal07CisKKwkJCQkJCWZjaW5mby0+YXJnc1tqKzFdLnZhbHVlID0gYnYt PmNvbHNbYXJnb2ZmXVtpXTsKKwkJCQkJCWZjaW5mby0+YXJnc1tqKzFdLmlzbnVsbCA9IGJ2LT5u dWxsc1thcmdvZmZdW2ldOworCQkJCQkJaWYgKCFoYXNudWxsICYmIGJ2LT5udWxsc1thcmdvZmZd W2ldKQorCQkJCQkJCWhhc251bGwgPSB0cnVlOworCQkJCQl9CisJCQkJfQorCQkJCS8qIGZjaW5m by0+YXJnc1swXSBpcyB0aGUgZXhpc3RpbmcgdHJhbnNpdGlvbiBzdGF0ZSAqLworCQkJCWlmIChm aW5mby0+Zm5fc3RyaWN0ICYmIGhhc251bGwpCisJCQkJCWNvbnRpbnVlOworCQkJCWZjaW5mby0+ YXJnc1swXS52YWx1ZSA9IHBlcmdyb3VwLT50cmFuc1ZhbHVlOworCQkJCWZjaW5mby0+YXJnc1sw XS5pc251bGwgPSBwZXJncm91cC0+dHJhbnNWYWx1ZUlzTnVsbDsKKwkJCQluZXdWYWwgPSBGdW5j dGlvbkNhbGxJbnZva2UoZmNpbmZvKTsKKwkJCQlpZiAoIXBlcnRyYW5zLT50cmFuc3R5cGVCeVZh bCAmJgorCQkJCQlEYXR1bUdldFBvaW50ZXIobmV3VmFsKSAhPSBEYXR1bUdldFBvaW50ZXIocGVy Z3JvdXAtPnRyYW5zVmFsdWUpKQorCQkJCQluZXdWYWwgPSBFeGVjQWdnQ29weVRyYW5zVmFsdWUo YWdnc3RhdGUsIHBlcnRyYW5zLAorCQkJCQkJCQkJCQkJICAgbmV3VmFsLCBmY2luZm8tPmlzbnVs bCwKKwkJCQkJCQkJCQkJCSAgIHBlcmdyb3VwLT50cmFuc1ZhbHVlLAorCQkJCQkJCQkJCQkJICAg cGVyZ3JvdXAtPnRyYW5zVmFsdWVJc051bGwpOworCQkJCXBlcmdyb3VwLT50cmFuc1ZhbHVlID0g bmV3VmFsOworCQkJCXBlcmdyb3VwLT50cmFuc1ZhbHVlSXNOdWxsID0gZmNpbmZvLT5pc251bGw7 CisJCQl9CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIEV4 cHJFdmFsT3AgaW4gRXhlY0FnZ1BsYWluVHJhbnNCYXRjaCgpIik7CisJfQorfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUFnZy5jCmluZGV4IDNhY2U2MzYzNTA5Li42NjJkOGJlZjQzYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVBZ2cuYwpAQCAtODI1LDYgKzgyNSwxNiBAQCBhZHZhbmNlX2FnZ3JlZ2F0ZXNfYmF0Y2goQWdn U3RhdGUgKmFnZ3N0YXRlLCBUdXBsZUJhdGNoICpiKQogewogCUV4cHJDb250ZXh0ICp0bXBjb250 ZXh0ID0gYWdnc3RhdGUtPnRtcGNvbnRleHQ7CiAJRXhwclN0YXRlICpldmFsdHJhbnMgPSBhZ2dz dGF0ZS0+cGhhc2UtPmV2YWx0cmFuczsKKwlib29sCQliYXRjaF90cmFucyA9IGFnZ3N0YXRlLT5w aGFzZS0+YmF0Y2hfdHJhbnM7CisKKwlpZiAoYmF0Y2hfdHJhbnMpCisJeworCQl0bXBjb250ZXh0 LT5lY3h0X291dGVydHVwbGUgPSBUdXBsZUJhdGNoR2V0U2xvdChiLCAwKTsKKwkJdG1wY29udGV4 dC0+b3V0ZXJfYmF0Y2ggPSBiOworCQlFeGVjRXZhbEV4cHJOb1JldHVyblN3aXRjaENvbnRleHQo ZXZhbHRyYW5zLCB0bXBjb250ZXh0KTsKKwkJVHVwbGVCYXRjaENvbnN1bWVBbGwoYik7CisJCXJl dHVybjsKKwl9CiAKIAl3aGlsZSAoVHVwbGVCYXRjaEhhc01vcmUoYikpCiAJewpAQCAtMTgwMCw3 ICsxODEwLDggQEAgaGFzaGFnZ19yZWNvbXBpbGVfZXhwcmVzc2lvbnMoQWdnU3RhdGUgKmFnZ3N0 YXRlLCBib29sIG1pbnNsb3QsIGJvb2wgbnVsbGNoZWNrKQogCiAJCXBoYXNlLT5ldmFsdHJhbnNf Y2FjaGVbaV1bal0gPSBFeGVjQnVpbGRBZ2dUcmFucyhhZ2dzdGF0ZSwgcGhhc2UsCiAJCQkJCQkJ CQkJCQkJCSBkb3NvcnQsIGRvaGFzaCwKLQkJCQkJCQkJCQkJCQkJIG51bGxjaGVjayk7CisJCQkJ CQkJCQkJCQkJCSBudWxsY2hlY2ssCisJCQkJCQkJCQkJCQkJCSBOVUxMKTsKIAogCQkvKiBjaGFu Z2UgYmFjayAqLwogCQlhZ2dzdGF0ZS0+c3MucHMub3V0ZXJvcHMgPSBvdXRlcm9wczsKQEAgLTMz NjcsNyArMzM3OCw3IEBAIGhhc2hhZ2dfcmVzZXRfc3BpbGxfc3RhdGUoQWdnU3RhdGUgKmFnZ3N0 YXRlKQogCX0KIH0KIAotc3RhdGljIGJvb2wKK2Jvb2wKIEFnZ0NhblVzZVBsYWluQmF0Y2goQWdn U3RhdGUgKmFnZ3N0YXRlKQogewogCWNvbnN0IEFnZyAqYWdnbm9kZSA9IChjb25zdCBBZ2cgKikg YWdnc3RhdGUtPnNzLnBzLnBsYW47CkBAIC00MjMzLDcgKzQyNDQsNyBAQCBFeGVjSW5pdEFnZyhB Z2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJQXNzZXJ0KGZhbHNlKTsK IAogCQlwaGFzZS0+ZXZhbHRyYW5zID0gRXhlY0J1aWxkQWdnVHJhbnMoYWdnc3RhdGUsIHBoYXNl LCBkb3NvcnQsIGRvaGFzaCwKLQkJCQkJCQkJCQkJIGZhbHNlKTsKKwkJCQkJCQkJCQkJIGZhbHNl LCAmcGhhc2UtPmJhdGNoX3RyYW5zKTsKIAogCQkvKiBjYWNoZSBjb21waWxlZCBleHByZXNzaW9u IGZvciBvdXRlciBzbG90IHdpdGhvdXQgTlVMTCBjaGVjayAqLwogCQlwaGFzZS0+ZXZhbHRyYW5z X2NhY2hlWzBdWzBdID0gcGhhc2UtPmV2YWx0cmFuczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9l eHByLmMKaW5kZXggODQ4ZjBiNTJkNmYuLmVmYjNlZTYzOWZjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9s bHZtaml0X2V4cHIuYwpAQCAtMzAyNiw2ICszMDI2LDEyIEBAIGxsdm1fY29tcGlsZV9leHByKEV4 cHJTdGF0ZSAqc3RhdGUpCiAJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsK IAkJCQlicmVhazsKIAorCQkJY2FzZSBFRU9QX0FHR19QTEFJTl9UUkFOU19CQVRDSF9ST1dMT09Q OgorCQkJCWJ1aWxkX0V2YWxYRnVuYyhiLCBtb2QsICJFeGVjQWdnUGxhaW5UcmFuc0JhdGNoIiwK KwkJCQkJCQkJdl9zdGF0ZSwgb3AsIHZfZWNvbnRleHQpOworCQkJCUxMVk1CdWlsZEJyKGIsIG9w YmxvY2tzW29wbm8gKyAxXSk7CisJCQkJYnJlYWs7CisKIAkJCWNhc2UgRUVPUF9MQVNUOgogCQkJ CUFzc2VydChmYWxzZSk7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQv bGx2bS9sbHZtaml0X3R5cGVzLmMgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVz LmMKaW5kZXggNmJiNTI3YzNmNmYuLjFiNWUwNmY2MGNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2 bWppdF90eXBlcy5jCkBAIC0xODYsNCArMTg2LDUgQEAgdm9pZAkgICAqcmVmZXJlbmNlZF9mdW5j dGlvbnNbXSA9CiAJRXhlY0J1aWxkSW5uZXJCYXRjaFZlY3RvciwKIAlFeGVjQnVpbGRPdXRlckJh dGNoVmVjdG9yLAogCUV4ZWNCdWlsZFNjYW5CYXRjaFZlY3RvciwKKwlFeGVjQWdnUGxhaW5UcmFu c0JhdGNoLAogfTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNCYXRjaC5o IGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0JhdGNoLmgKaW5kZXggNmYxYTM4ZDE0YmQuLmI1 MDk2MWZjMGM5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjQmF0Y2guaAor KysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjQmF0Y2guaApAQCAtOTksNCArOTksMTAgQEAg VHVwbGVCYXRjaE1hdGVyaWFsaXplQWxsKFR1cGxlQmF0Y2ggKmIpCiAJVHVwbGVCYXRjaFVzZUlu cHV0KGIsIGItPm50dXBsZXMpOwogfQogCitzdGF0aWMgaW5saW5lIHZvaWQKK1R1cGxlQmF0Y2hD b25zdW1lQWxsKFR1cGxlQmF0Y2ggKmIpCit7CisJYi0+bmV4dCA9IGItPm52YWxpZDsKK30KKwog I2VuZGlmCS8qIEVYRUNCQVRDSF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjRXhwci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAppbmRleCA5OWM4 NmJhYzcwMi4uMWQzM2UwODRiNjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWNFeHByLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaApAQCAtMzAyLDYg KzMwMiw5IEBAIHR5cGVkZWYgZW51bSBFeHByRXZhbE9wCiAJRUVPUF9CVUlMRF9PVVRFUl9CQVRD SF9WRUNUT1IsCiAJRUVPUF9CVUlMRF9TQ0FOX0JBVENIX1ZFQ1RPUiwKIAorCS8qIEJhdGNoZWQg YWdncmVnYXRlIHRyYW5zIGV2YWx1YXRpb24gKi8KKwlFRU9QX0FHR19QTEFJTl9UUkFOU19CQVRD SF9ST1dMT09QLAkvKiBwZXItcm93IGZtZ3IgY2FsbHMgKi8KKwogCS8qIG5vbi1leGlzdGVudCBv cGVyYXRpb24sIHVzZWQgZS5nLiB0byBjaGVjayBhcnJheSBsZW5ndGhzICovCiAJRUVPUF9MQVNU CiB9IEV4cHJFdmFsT3A7CkBAIC03NTAsNiArNzUzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwckV2 YWxTdGVwCiAKIAkJLyogZm9yIEVFT1BfQUdHX1BMQUlOX1RSQU5TX1tJTklUX11bU1RSSUNUX117 QllWQUwsQllSRUZ9ICovCiAJCS8qIGZvciBFRU9QX0FHR19PUkRFUkVEX1RSQU5TX3tEQVRVTSxU VVBMRX0gKi8KKwkJLyogZm9yIEVFT1BfQUdHX1BMQUlOX1RSQU5TX3tCQVRDSCxCQVRDSF9ST1dM T09QfSovCiAJCXN0cnVjdAogCQl7CiAJCQlBZ2dTdGF0ZVBlclRyYW5zIHBlcnRyYW5zOwpAQCAt NzU3LDYgKzc2MSw3IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJFdmFsU3RlcAogCQkJaW50CQkJc2V0 bm87CiAJCQlpbnQJCQl0cmFuc25vOwogCQkJaW50CQkJc2V0b2ZmOworCQkJc3RydWN0IEJhdGNo VmVjdG9yU2xpY2UgKmJ2czsKIAkJfQkJCWFnZ190cmFuczsKIAogCQkvKiBmb3IgRUVPUF9JU19K U09OICovCkBAIC05NTYsOCArOTYxLDE3IEBAIHR5cGVkZWYgc3RydWN0IEJhdGNoVmVjdG9yCiAJ aW50CQlucm93czsJCQkvKiAjcm93cyBsb2FkZWQgaW50byBjb2xzL251bGxzICovCiB9IEJhdGNo VmVjdG9yOwogCisvKiBBIHNsaWNlIG9mIEJhdGNoVmVjdG9yIHRoYXQgbWFwcyBjYWxsZXIgYXJn cyB0byBCYXRjaFZlY3RvciBjb2x1bW5zLiAqLwordHlwZWRlZiBzdHJ1Y3QgQmF0Y2hWZWN0b3JT bGljZQoreworCWNvbnN0IEJhdGNoVmVjdG9yICpidjsKKwlpbnQJCQluYXJnczsJCS8qIG51bWJl ciBvZiBhcmdzIGNvdmVyZWQgKi8KKwlpbnQxNgkgICAqYXJnb2ZmczsJLyogbGVuZ3RoIG5hcmdz LCAtMSBmb3Igbm9uLVZhciBlbnRyaWVzICovCit9IEJhdGNoVmVjdG9yU2xpY2U7CisKIGV4dGVy biB2b2lkIEV4ZWNCdWlsZElubmVyQmF0Y2hWZWN0b3IoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2 YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0KTsKIGV4dGVybiB2b2lkIEV4ZWNCdWls ZE91dGVyQmF0Y2hWZWN0b3IoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhw ckNvbnRleHQgKmVjb250ZXh0KTsKIGV4dGVybiB2b2lkIEV4ZWNCdWlsZFNjYW5CYXRjaFZlY3Rv cihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRl eHQpOwogCitleHRlcm4gdm9pZCBFeGVjQWdnUGxhaW5UcmFuc0JhdGNoKEV4cHJTdGF0ZSAqc3Rh dGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCk7CiAjZW5kaWYJCQkJ CQkJLyogRVhFQ19FWFBSX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4IGNmNWIwYzdl MDVjLi41YmE5YTUyMzk3MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0 b3IuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCkBAIC0zMzYsNyArMzM2 LDggQEAgZXh0ZXJuIEV4cHJTdGF0ZSAqRXhlY0luaXRRdWFsKExpc3QgKnF1YWwsIFBsYW5TdGF0 ZSAqcGFyZW50KTsKIGV4dGVybiBFeHByU3RhdGUgKkV4ZWNJbml0Q2hlY2soTGlzdCAqcXVhbCwg UGxhblN0YXRlICpwYXJlbnQpOwogZXh0ZXJuIExpc3QgKkV4ZWNJbml0RXhwckxpc3QoTGlzdCAq bm9kZXMsIFBsYW5TdGF0ZSAqcGFyZW50KTsKIGV4dGVybiBFeHByU3RhdGUgKkV4ZWNCdWlsZEFn Z1RyYW5zKEFnZ1N0YXRlICphZ2dzdGF0ZSwgc3RydWN0IEFnZ1N0YXRlUGVyUGhhc2VEYXRhICpw aGFzZSwKLQkJCQkJCQkJCWJvb2wgZG9Tb3J0LCBib29sIGRvSGFzaCwgYm9vbCBudWxsY2hlY2sp OworCQkJCQkJCQkJYm9vbCBkb1NvcnQsIGJvb2wgZG9IYXNoLCBib29sIG51bGxjaGVjaywKKwkJ CQkJCQkJCWJvb2wgKmJhdGNoX3RyYW5zKTsKIGV4dGVybiBFeHByU3RhdGUgKkV4ZWNCdWlsZEhh c2gzMkZyb21BdHRycyhUdXBsZURlc2MgZGVzYywKIAkJCQkJCQkJCQkgICBjb25zdCBUdXBsZVRh YmxlU2xvdE9wcyAqb3BzLAogCQkJCQkJCQkJCSAgIEZtZ3JJbmZvICpoYXNoZnVuY3Rpb25zLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUFnZy5oIGIvc3JjL2luY2x1ZGUv ZXhlY3V0b3Ivbm9kZUFnZy5oCmluZGV4IDZjNDg5MWJiYWViLi41YzVlYmZjNzNmMiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUFnZy5oCisrKyBiL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL25vZGVBZ2cuaApAQCAtMjg5LDYgKzI4OSw3IEBAIHR5cGVkZWYgc3RydWN0IEFnZ1N0 YXRlUGVyUGhhc2VEYXRhCiAJU29ydAkgICAqc29ydG5vZGU7CQkvKiBTb3J0IG5vZGUgZm9yIGlu cHV0IG9yZGVyaW5nIGZvciBwaGFzZSAqLwogCiAJRXhwclN0YXRlICAqZXZhbHRyYW5zOwkJLyog ZXZhbHVhdGlvbiBvZiB0cmFuc2l0aW9uIGZ1bmN0aW9ucyAgKi8KKwlib29sCQliYXRjaF90cmFu czsJLyogdHJ1ZSBpZiBldmFsdHJhbnMgY29udGFpbnMgYmF0Y2ggRUVPUHMgKi8KIAogCS8qLS0t LS0tLS0tLQogCSAqIENhY2hlZCB2YXJpYW50cyBvZiB0aGUgY29tcGlsZWQgZXhwcmVzc2lvbi4K QEAgLTMzOCw0ICszMzksNSBAQCBleHRlcm4gdm9pZCBFeGVjQWdnSW5pdGlhbGl6ZURTTShBZ2dT dGF0ZSAqbm9kZSwgUGFyYWxsZWxDb250ZXh0ICpwY3h0KTsKIGV4dGVybiB2b2lkIEV4ZWNBZ2dJ bml0aWFsaXplV29ya2VyKEFnZ1N0YXRlICpub2RlLCBQYXJhbGxlbFdvcmtlckNvbnRleHQgKnB3 Y3h0KTsKIGV4dGVybiB2b2lkIEV4ZWNBZ2dSZXRyaWV2ZUluc3RydW1lbnRhdGlvbihBZ2dTdGF0 ZSAqbm9kZSk7CiAKK2V4dGVybiBib29sIEFnZ0NhblVzZVBsYWluQmF0Y2goQWdnU3RhdGUgKmFn Z3N0YXRlKTsKICNlbmRpZgkJCQkJCQkvKiBOT0RFQUdHX0ggKi8KLS0gCjIuNDcuMwoK --00000000000006d2b20640c83360 Content-Type: application/octet-stream; name="v3-0007-WIP-Add-EEOP_AGG_PLAIN_TRANS_BATCH_DIRECT.patch" Content-Disposition: attachment; filename="v3-0007-WIP-Add-EEOP_AGG_PLAIN_TRANS_BATCH_DIRECT.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgkh6mbb2 RnJvbSA5ZWVhNzFkYjNjN2JiMTM3ZTY3NmFkMGEyN2Y2MjU2ZDljNjk3MWYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgOSBTZXAgMjAyNSAyMTo0MzoyOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjMg Ny85XSBXSVA6IEFkZCBFRU9QX0FHR19QTEFJTl9UUkFOU19CQVRDSF9ESVJFQ1QKClRoZSBuZXcg RUVPUCBydW5zIGEgcGxhaW4gYWdncmVnYXRlIHRyYW5zaXRpb24gb3ZlciBhIFR1cGxlQmF0Y2gg d2l0aAphIHNpbmdsZSBmbWdyIGNhbGwuIEJhdGNoIHZlY3RvcnMgYXJlIHBhc3NlZCB0byB0aGUg dHJhbnNmbiB2aWEKQWdnQnVsa0FyZ3Mgc3RvcmVkIGluIGZjaW5mby0+ZmxpbmZvLT5mbl9leHRy YSwgYXZvaWRpbmcgcGVyLXJvdyBmbWdyCm92ZXJoZWFkLgoKR2F0ZSBzZWxlY3Rpb24gd2l0aCBB Z2dUcmFuc2ZuU3VwcG9ydHNCdWxrKCksIGFuIGFsbG93bGlzdCBvZgpidWlsdC1pbiB0cmFuc2Zu cyB1cGRhdGVkIHRvIGFjY2VwdCBBZ2dCdWxrQXJncy4gIFNvbWUgaW50ZWdlcgp0cmFuc2ZucyBh cmUgdGF1Z2h0IHRvIHJlYWQgQWdnQnVsa0FyZ3Mgd2hlbiBwcmVzZW50LCBlbHNlIGZhbGwKYmFj ay4gUm93bG9vcCBiYXRjaGluZyByZW1haW5zIGF2YWlsYWJsZTsgdW5zdXBwb3J0ZWQgYWdncmVn YXRlcyBrZWVwCnRoZSByb3cgcGF0aC4KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhw ci5jICAgICAgIHwgMjggKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNFeHBySW50ZXJwLmMgfCA0MyArKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUFnZy5jICAgICAgICB8ICAxIC0KIHNyYy9iYWNrZW5kL2ppdC9sbHZt L2xsdm1qaXRfZXhwci5jICAgfCAgMSArCiBzcmMvYmFja2VuZC91dGlscy9hZHQvaW50LmMgICAg ICAgICAgIHwgMzIgKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2lu dDguYyAgICAgICAgICB8IDQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tl bmQvdXRpbHMvYWR0L251bWVyaWMuYyAgICAgICB8IDE3ICsrKysrKysrKysrCiBzcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjRXhwci5oICAgICAgIHwgIDEgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY3V0b3IuaCAgICAgICB8IDIwICsrKysrKysrKysrKwogOSBmaWxlcyBjaGFuZ2VkLCAxODUg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwppbmRl eCBhZjVlZDhiNjM2OC4uMjdhNTc4MGY1NTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNFeHByLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpAQCAt NDcsNiArNDcsNyBAQAogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2Fy cmF5LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdy b2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2pzb25mdW5jcy5oIgogI2luY2x1ZGUgInV0aWxzL2pz b25wYXRoLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCkBAIC0zNjkyLDYgKzM2OTMs MjggQEAgQWdnVHJhbnNDYW5Vc2VCYXRjaChBZ2dTdGF0ZSAqYXMsIEFnZ1N0YXRlUGVyVHJhbnMg cHQpCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8qIFJldHVybiB0cnVlIGlmIHRoaXMgdHJhbnNmbiBP SUQgaXMga25vd24gdG8gYWNjZXB0IEFnZ0J1bGtBcmdzLiAqLworc3RhdGljIGJvb2wKK0FnZ1Ry YW5zZm5TdXBwb3J0c0J1bGsoT2lkIGZuX29pZCkKK3sKKwkvKiBQaGFzZSAxOiBoYXJkLWNvZGVk IGFsbG93bGlzdCBvZiBidWlsdC1pbnMgeW91IHVwZGF0ZWQuICovCisJc3RhdGljIGNvbnN0IE9p ZCBva1tdID0KKwl7CisJCUZfSU5UOElOQ19BTlksCQkvKiBDT1VOVCgqKSB0cmFuc2ZuICovCisJ CUZfSU5UOElOQywJCQkvKiBDT1VOVChhcmcpIHRyYW5zZm4gKi8KKwkJRl9JTlQ0X1NVTSwJCQkv KiBTVU0oaW50KSB0cmFuc2ZuICovCisJCUZfSU5UNFNNQUxMRVIsCQkvKiBNSU4oaW50KSB0cmFu c2ZuICovCisJCUZfSU5UNExBUkdFUiwJCS8qIE1BWChpbnQpIHRyYW5zZm4gKi8KKwkJLyogYWRk IG90aGVycyB5b3UgbWFrZSBidWxrLWF3YXJlICovCisJCUludmFsaWRPaWQKKwl9OworCisJZm9y IChpbnQgaSA9IDA7IE9pZElzVmFsaWQob2tbaV0pOyBpKyspCisJCWlmIChva1tpXSA9PSBmbl9v aWQpCisJCQlyZXR1cm4gdHJ1ZTsKKwlyZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAgKiBCdWlsZCB0 cmFuc2l0aW9uL2NvbWJpbmUgZnVuY3Rpb24gaW52b2NhdGlvbnMgZm9yIGFsbCBhZ2dyZWdhdGUg dHJhbnNpdGlvbgogICogLyBjb21iaW5hdGlvbiBmdW5jdGlvbiBpbnZvY2F0aW9ucyBpbiBhIGdy b3VwaW5nIHNldHMgcGhhc2UuIFRoaXMgaGFzIHRvCkBAIC00MTUwLDcgKzQxNzMsMTAgQEAgRXhl Y0J1aWxkQWdnVHJhbnNDYWxsKEV4cHJTdGF0ZSAqc3RhdGUsIEFnZ1N0YXRlICphZ2dzdGF0ZSwK IAkJewogCQkJaWYgKGJ2KQogCQkJCWJ2cyA9IEJhdGNoVmVjdG9yU2xpY2VGcm9tRXhwckFyZ3Mo cGVydHJhbnMtPmFnZ3JlZi0+YXJncywgYnYpOwotCQkJc2NyYXRjaC0+b3Bjb2RlID0gRUVPUF9B R0dfUExBSU5fVFJBTlNfQkFUQ0hfUk9XTE9PUDsKKwkJCWlmICghQWdnVHJhbnNmblN1cHBvcnRz QnVsayhwZXJ0cmFucy0+dHJhbnNmbl9vaWQpKQorCQkJCXNjcmF0Y2gtPm9wY29kZSA9IEVFT1Bf QUdHX1BMQUlOX1RSQU5TX0JBVENIX1JPV0xPT1A7CisJCQllbHNlCisJCQkJc2NyYXRjaC0+b3Bj b2RlID0gRUVPUF9BR0dfUExBSU5fVFJBTlNfQkFUQ0hfRElSRUNUOwogCQl9CiAJCWVsc2UgaWYg KHBlcnRyYW5zLT50cmFuc3R5cGVCeVZhbCkKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBy SW50ZXJwLmMKaW5kZXggMzE3NjY3OWIzNDYuLjQxYWQ5YjQ4MzhkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNFeHBySW50ZXJwLmMKQEAgLTYwNyw2ICs2MDcsNyBAQCBFeGVjSW50ZXJwRXhwcihF eHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJ JiZDQVNFX0VFT1BfQlVJTERfT1VURVJfQkFUQ0hfVkVDVE9SLAogCQkmJkNBU0VfRUVPUF9CVUlM RF9TQ0FOX0JBVENIX1ZFQ1RPUiwKIAkJJiZDQVNFX0VFT1BfQUdHX1BMQUlOX1RSQU5TX0JBVENI X1JPV0xPT1AsCisJCSYmQ0FTRV9FRU9QX0FHR19QTEFJTl9UUkFOU19CQVRDSF9ESVJFQ1QsCiAJ CSYmQ0FTRV9FRU9QX0xBU1QKIAl9OwogCkBAIC0yMzQ1LDYgKzIzNDYsMTQgQEAgRXhlY0ludGVy cEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251 bGwpCiAJCQlFRU9fTkVYVCgpOwogCQl9CiAKKwkJRUVPX0NBU0UoRUVPUF9BR0dfUExBSU5fVFJB TlNfQkFUQ0hfRElSRUNUKQorCQl7CisJCQkvKiB0b28gY29tcGxleCBmb3IgYW4gaW5saW5lIGlt cGxlbWVudGF0aW9uICovCisJCQlFeGVjQWdnUGxhaW5UcmFuc0JhdGNoKHN0YXRlLCBvcCwgZWNv bnRleHQpOworCisJCQlFRU9fTkVYVCgpOworCQl9CisKIAkJRUVPX0NBU0UoRUVPUF9MQVNUKQog CQl7CiAJCQkvKiB1bnJlYWNoYWJsZSAqLwpAQCAtNjEzOCw2ICs2MTQ3LDQwIEBAIEV4ZWNBZ2dQ bGFpblRyYW5zQmF0Y2goRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNv bnRleHQgKmVjb250ZXh0CiAJCQkJcGVyZ3JvdXAtPnRyYW5zVmFsdWVJc051bGwgPSBmY2luZm8t PmlzbnVsbDsKIAkJCX0KIAkJCWJyZWFrOworCisJCWNhc2UgRUVPUF9BR0dfUExBSU5fVFJBTlNf QkFUQ0hfRElSRUNUOgorCQkJeworCQkJCXZvaWQgKnNhdmUgPSBmY2luZm8tPmZsaW5mby0+Zm5f ZXh0cmE7CisJCQkJQWdnQnVsa0FyZ3MgYmEgPSB7YmF0Y2hfbnJvd3MsIHN0YXJ0X3Jvd307CisK KwkJCQlpZiAoYnZzKQorCQkJCXsKKwkJCQkJY29uc3QgQmF0Y2hWZWN0b3IgKmJ2ID0gYnZzLT5i djsKKworCQkJCQlBc3NlcnQoYnYpOworCQkJCQliYS5uYXJncyA9IGJ2cy0+bmFyZ3M7CisJCQkJ CWJhLmFyZ29mZnMgPSBidnMtPmFyZ29mZnM7CisJCQkJCWJhLmFyZ3MgPSBidi0+Y29sczsKKwkJ CQkJYmEuaXNudWxsID0gYnYtPm51bGxzOworCQkJCQliYS5oYXNudWxsID0gYnYtPmhhc251bGw7 CisJCQkJfQorCQkJCWZjaW5mby0+ZmxpbmZvLT5mbl9leHRyYSA9ICZiYTsKKwkJCQlmY2luZm8t PmFyZ3NbMF0udmFsdWUgPSBwZXJncm91cC0+dHJhbnNWYWx1ZTsKKwkJCQlmY2luZm8tPmFyZ3Nb MF0uaXNudWxsID0gcGVyZ3JvdXAtPnRyYW5zVmFsdWVJc051bGw7CisJCQkJZmNpbmZvLT5pc251 bGwgPSBmYWxzZTsJCS8qIGp1c3QgaW4gY2FzZSB0cmFuc2ZuIGRvZXNuJ3Qgc2V0IGl0ICovCisJ CQkJbmV3VmFsID0gRnVuY3Rpb25DYWxsSW52b2tlKGZjaW5mbyk7ICAgLyogb25lIGNhbGwgZm9y IHRoZSBlbnRpcmUgc2xpY2UgKi8KKwkJCQlpZiAoIXBlcnRyYW5zLT50cmFuc3R5cGVCeVZhbCAm JgorCQkJCQlEYXR1bUdldFBvaW50ZXIobmV3VmFsKSAhPSBEYXR1bUdldFBvaW50ZXIocGVyZ3Jv dXAtPnRyYW5zVmFsdWUpKQorCQkJCQluZXdWYWwgPSBFeGVjQWdnQ29weVRyYW5zVmFsdWUoYWdn c3RhdGUsIHBlcnRyYW5zLAorCQkJCQkJCQkJCQkJICAgbmV3VmFsLCBmY2luZm8tPmlzbnVsbCwK KwkJCQkJCQkJCQkJCSAgIHBlcmdyb3VwLT50cmFuc1ZhbHVlLAorCQkJCQkJCQkJCQkJICAgcGVy Z3JvdXAtPnRyYW5zVmFsdWVJc051bGwpOworCQkJCXBlcmdyb3VwLT50cmFuc1ZhbHVlID0gbmV3 VmFsOworCQkJCXBlcmdyb3VwLT50cmFuc1ZhbHVlSXNOdWxsID0gZmNpbmZvLT5pc251bGw7CisJ CQkJZmNpbmZvLT5mbGluZm8tPmZuX2V4dHJhID0gc2F2ZTsKKwkJCX0KKwkJCWJyZWFrOworCiAJ CWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBFeHByRXZhbE9wIGluIEV4ZWNBZ2dQ bGFpblRyYW5zQmF0Y2goKSIpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwppbmRleCA2NjJkOGJl ZjQzYi4uYTIyODZlZjVlNTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVB Z2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKQEAgLTI2ODcsNyArMjY4 Nyw2IEBAIGFnZ19yZXRyaWV2ZV9kaXJlY3RfYmF0Y2goQWdnU3RhdGUgKmFnZ3N0YXRlKQogCiAJ aW5pdGlhbGl6ZV9hZ2dyZWdhdGVzKGFnZ3N0YXRlLCBhZ2dzdGF0ZS0+cGVyZ3JvdXBzLAogCQkJ CQkJICBNYXgoYWdnc3RhdGUtPnBoYXNlLT5udW1zZXRzLCAxKSk7Ci0KIAlpZiAoYWdnc3RhdGUt PmdycF9maXJzdFR1cGxlKQogCXsKIAkJRXhlY0ZvcmNlU3RvcmVIZWFwVHVwbGUoYWdnc3RhdGUt PmdycF9maXJzdFR1cGxlLCBmaXJzdFNsb3QsIHRydWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0 X2V4cHIuYwppbmRleCBlZmIzZWU2MzlmYy4uNDUzNDYxMjRiZDcgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZt L2xsdm1qaXRfZXhwci5jCkBAIC0zMDI2LDYgKzMwMjYsNyBAQCBsbHZtX2NvbXBpbGVfZXhwcihF eHByU3RhdGUgKnN0YXRlKQogCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW29wbm8gKyAxXSk7 CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgRUVPUF9BR0dfUExBSU5fVFJBTlNfQkFUQ0hfRElSRUNU OgogCQkJY2FzZSBFRU9QX0FHR19QTEFJTl9UUkFOU19CQVRDSF9ST1dMT09QOgogCQkJCWJ1aWxk X0V2YWxYRnVuYyhiLCBtb2QsICJFeGVjQWdnUGxhaW5UcmFuc0JhdGNoIiwKIAkJCQkJCQkJdl9z dGF0ZSwgb3AsIHZfZWNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L2ludC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2ludC5jCmluZGV4IGI1NzgxOTg5YTY0Li5l YjE3ODBiNTU5MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2ludC5jCisrKyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9pbnQuYwpAQCAtMTM2MywxOCArMTM2Myw1MCBAQCBpbnQy c21hbGxlcihQR19GVU5DVElPTl9BUkdTKQogRGF0dW0KIGludDRsYXJnZXIoUEdfRlVOQ1RJT05f QVJHUykKIHsKKwlBZ2dCdWxrQXJncyAqYmEgPSBBZ2dHZXRCdWxrQXJncyhmY2luZm8pOwogCWlu dDMyCQlhcmcxID0gUEdfR0VUQVJHX0lOVDMyKDApOwogCWludDMyCQlhcmcyID0gUEdfR0VUQVJH X0lOVDMyKDEpOwogCisJaWYgKHVubGlrZWx5KGJhKSkKKwl7CisJCWludDMyIHJlc3VsdCA9IGFy ZzE7CisKKwkJZm9yIChpbnQgaSA9IGJhLT5zdGFydF9yb3c7IGkgPCBiYS0+bnJvd3M7IGkrKykK KwkJeworCQkJaWYgKCFiYS0+aXNudWxsW2JhLT5hcmdvZmZzWzBdXVtpXSkKKwkJCXsKKwkJCQlh cmcyID0gKGludDMyKSBiYS0+YXJnc1tiYS0+YXJnb2Zmc1swXV1baV07CisJCQkJaWYgKGFyZzIg PiByZXN1bHQpCisJCQkJCXJlc3VsdCA9IGFyZzI7CisJCQl9CisJCX0KKwkJUEdfUkVUVVJOX0lO VDMyKHJlc3VsdCk7CisJfQogCVBHX1JFVFVSTl9JTlQzMigoYXJnMSA+IGFyZzIpID8gYXJnMSA6 IGFyZzIpOwogfQogCiBEYXR1bQogaW50NHNtYWxsZXIoUEdfRlVOQ1RJT05fQVJHUykKIHsKKwlB Z2dCdWxrQXJncyAqYmEgPSBBZ2dHZXRCdWxrQXJncyhmY2luZm8pOwogCWludDMyCQlhcmcxID0g UEdfR0VUQVJHX0lOVDMyKDApOwogCWludDMyCQlhcmcyID0gUEdfR0VUQVJHX0lOVDMyKDEpOwog CisJaWYgKHVubGlrZWx5KGJhKSkKKwl7CisJCWludDMyIHJlc3VsdCA9IGFyZzE7CisKKwkJZm9y IChpbnQgaSA9IGJhLT5zdGFydF9yb3c7IGkgPCBiYS0+bnJvd3M7IGkrKykKKwkJeworCQkJaWYg KCFiYS0+aXNudWxsW2JhLT5hcmdvZmZzWzBdXVtpXSkKKwkJCXsKKwkJCQlhcmcyID0gYmEtPmFy Z3NbYmEtPmFyZ29mZnNbMF1dW2ldOworCQkJCWlmIChhcmcyIDwgcmVzdWx0KQorCQkJCQlyZXN1 bHQgPSBhcmcyOworCQkJfQorCQl9CisJCVBHX1JFVFVSTl9JTlQzMihyZXN1bHQpOworCX0KIAlQ R19SRVRVUk5fSU5UMzIoKGFyZzEgPCBhcmcyKSA/IGFyZzEgOiBhcmcyKTsKIH0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2ludDguYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9pbnQ4LmMKaW5kZXggYmRlYTQ5MDIwMmEuLmJiYWJmNGUwNzg1IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9hZHQvaW50OC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9pbnQ4 LmMKQEAgLTQ2MSwxMCArNDYxLDI4IEBAIGludDh1cChQR19GVU5DVElPTl9BUkdTKQogRGF0dW0K IGludDhwbChQR19GVU5DVElPTl9BUkdTKQogeworCUFnZ0J1bGtBcmdzICpiYSA9IEFnZ0dldEJ1 bGtBcmdzKGZjaW5mbyk7CiAJaW50NjQJCWFyZzEgPSBQR19HRVRBUkdfSU5UNjQoMCk7CiAJaW50 NjQJCWFyZzIgPSBQR19HRVRBUkdfSU5UNjQoMSk7CiAJaW50NjQJCXJlc3VsdDsKIAorCWlmICh1 bmxpa2VseShiYSkpCisJeworCQlyZXN1bHQgPSBhcmcxOworCQlmb3IgKGludCBpID0gYmEtPnN0 YXJ0X3JvdzsgaSA8IGJhLT5ucm93czsgaSsrKQorCQl7CisJCQlpZiAoIWJhLT5pc251bGxbYmEt PmFyZ29mZnNbMF1dW2ldKQorCQkJeworCQkJCWFyZzIgPSBiYS0+YXJnc1tiYS0+YXJnb2Zmc1sw XV1baV07CisJCQkJaWYgKHVubGlrZWx5KHBnX2FkZF9zNjRfb3ZlcmZsb3coYXJnMSwgYXJnMiwg JnJlc3VsdCkpKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVf TlVNRVJJQ19WQUxVRV9PVVRfT0ZfUkFOR0UpLAorCQkJCQkJCSBlcnJtc2coImJpZ2ludCBvdXQg b2YgcmFuZ2UiKSkpOworCQkJCWFyZzEgPSByZXN1bHQ7CisJCQl9CisJCX0KKwkJUEdfUkVUVVJO X0lOVDY0KHJlc3VsdCk7CisJfQogCWlmICh1bmxpa2VseShwZ19hZGRfczY0X292ZXJmbG93KGFy ZzEsIGFyZzIsICZyZXN1bHQpKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJD T0RFX05VTUVSSUNfVkFMVUVfT1VUX09GX1JBTkdFKSwKQEAgLTcxOCw5ICs3MzYsMzUgQEAgaW50 OGxjbShQR19GVU5DVElPTl9BUkdTKQogRGF0dW0KIGludDhpbmMoUEdfRlVOQ1RJT05fQVJHUykK IHsKKwlBZ2dCdWxrQXJncyAqYmEgPSBBZ2dHZXRCdWxrQXJncyhmY2luZm8pOwogCWludDY0CQlh cmcgPSBQR19HRVRBUkdfSU5UNjQoMCk7CiAJaW50NjQJCXJlc3VsdDsKIAorCWlmICh1bmxpa2Vs eShiYSkpCisJeworCQlyZXN1bHQgPSBhcmc7CisJCWlmICghYmEtPmhhc251bGwgfHwgYmEtPm5h cmdzID09IDApCisJCXsKKwkJCWlmICh1bmxpa2VseShwZ19hZGRfczY0X292ZXJmbG93KGFyZywg YmEtPm5yb3dzLCAmcmVzdWx0KSkpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9OVU1FUklDX1ZBTFVFX09VVF9PRl9SQU5HRSksCisJCQkJCQkJIGVycm1zZygi YmlnaW50IG91dCBvZiByYW5nZSIpKSk7CisJCQlQR19SRVRVUk5fSU5UNjQocmVzdWx0KTsKKwkJ fQorCQlmb3IgKGludCBpID0gYmEtPnN0YXJ0X3JvdzsgaSA8IGJhLT5ucm93czsgaSsrKQorCQl7 CisJCQlpZiAoIWJhLT5pc251bGxbYmEtPmFyZ29mZnNbMF1dW2ldKQorCQkJeworCQkJCWlmICh1 bmxpa2VseShwZ19hZGRfczY0X292ZXJmbG93KGFyZywgMSwgJnJlc3VsdCkpKQorCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfTlVNRVJJQ19WQUxVRV9PVVRfT0Zf UkFOR0UpLAorCQkJCQkJCSBlcnJtc2coImJpZ2ludCBvdXQgb2YgcmFuZ2UiKSkpOworCQkJCWFy ZyA9IHJlc3VsdDsKKwkJCX0KKwkJfQorCQlQR19SRVRVUk5fSU5UNjQocmVzdWx0KTsKKwl9CisK IAlpZiAodW5saWtlbHkocGdfYWRkX3M2NF9vdmVyZmxvdyhhcmcsIDEsICZyZXN1bHQpKSkKIAkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX05VTUVSSUNfVkFMVUVfT1VUX09G X1JBTkdFKSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9udW1lcmljLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5jCmluZGV4IDI1MDEwMDdkOTgxLi45MDdjNGZk ZGJhMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L251bWVyaWMuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvbnVtZXJpYy5jCkBAIC02MzEwLDYgKzYzMTAsMjMgQEAgaW50 NF9zdW0oUEdfRlVOQ1RJT05fQVJHUykKIHsKIAlpbnQ2NAkJb2xkc3VtOwogCWludDY0CQluZXd2 YWw7CisJQWdnQnVsa0FyZ3MgKmJhID0gQWdnR2V0QnVsa0FyZ3MoZmNpbmZvKTsKKworCWlmICh1 bmxpa2VseShiYSkpCisJeworCQlpbnQ2NAlyZXN1bHQgPSAoIVBHX0FSR0lTTlVMTCgwKSA/IFBH X0dFVEFSR19JTlQ2NCgwKSA6IDApOworCisJCWZvciAoaW50IGkgPSBiYS0+c3RhcnRfcm93OyBp IDwgYmEtPm5yb3dzOyBpKyspCisJCXsKKwkJCWlmICghYmEtPmlzbnVsbFtiYS0+YXJnb2Zmc1sw XV1baV0pCisJCQl7CisJCQkJaW50MzIJYXJnMiA9IGJhLT5hcmdzW2JhLT5hcmdvZmZzWzBdXVtp XTsKKworCQkJCXJlc3VsdCA9IHJlc3VsdCArIGFyZzI7CisJCQl9CisJCX0KKwkJUEdfUkVUVVJO X0lOVDY0KHJlc3VsdCk7CisJfQogCiAJaWYgKFBHX0FSR0lTTlVMTCgwKSkKIAl7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY0V4cHIuaAppbmRleCAxZDMzZTA4NGI2OS4uZjI0NzgyZWNmNTggMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0 b3IvZXhlY0V4cHIuaApAQCAtMzA0LDYgKzMwNCw3IEBAIHR5cGVkZWYgZW51bSBFeHByRXZhbE9w CiAKIAkvKiBCYXRjaGVkIGFnZ3JlZ2F0ZSB0cmFucyBldmFsdWF0aW9uICovCiAJRUVPUF9BR0df UExBSU5fVFJBTlNfQkFUQ0hfUk9XTE9PUCwJLyogcGVyLXJvdyBmbWdyIGNhbGxzICovCisJRUVP UF9BR0dfUExBSU5fVFJBTlNfQkFUQ0hfRElSRUNULAkvKiBjYWxsIHRyYW5zZm4gb25jZSB3aXRo IEFnZ0J1bGtBcmdzICovCiAKIAkvKiBub24tZXhpc3RlbnQgb3BlcmF0aW9uLCB1c2VkIGUuZy4g dG8gY2hlY2sgYXJyYXkgbGVuZ3RocyAqLwogCUVFT1BfTEFTVApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9y LmgKaW5kZXggNWJhOWE1MjM5NzAuLmM3MmJkNzU1Yjc5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9y LmgKQEAgLTU2MSw2ICs1NjEsMjYgQEAgRXhlY1F1YWxBbmRSZXNldChFeHByU3RhdGUgKnN0YXRl LCBFeHByQ29udGV4dCAqZWNvbnRleHQpCiB9CiAjZW5kaWYKIAorI2lmbmRlZiBGUk9OVEVORAor LyogUGVyLWNhbGwgYnVsayBhcmd1bWVudCB2ZWN0b3JzIGZvciBiYXRjaGVkIGFnZ3JlZ2F0ZSB0 cmFucyBmdW5jdGlvbnMuICovCit0eXBlZGVmIHN0cnVjdCBBZ2dCdWxrQXJncworeworCWludAkJ bnJvd3M7CQkvKiBudW1iZXIgb2Ygcm93cyBpbiB0aGlzIGJhdGNoICovCisJaW50CQlzdGFydF9y b3c7CisJaW50MTYgICphcmdvZmZzOworCWludAkJbmFyZ3M7CQkvKiBudW1iZXIgb2YgYXJndW1l bnQgdmVjdG9ycyAqLworCURhdHVtICAqKmFyZ3M7CQkvKiBhcmdzW2pdW2ldID0gai10aCBhcmcg YXQgcm93IGkgKi8KKwlib29sICAgKippc251bGw7CS8qIGlzbnVsbFtqXVtpXSAqLworCWJvb2wJ aGFzbnVsbDsJLyogaXMgYW55IGRhdHVtIGluIGFyZ3MgTlVMTD8gKi8KK30gQWdnQnVsa0FyZ3M7 CisKK3N0YXRpYyBpbmxpbmUgQWdnQnVsa0FyZ3MgKgorQWdnR2V0QnVsa0FyZ3MoRnVuY3Rpb25D YWxsSW5mbyBmY2luZm8pCit7CisJcmV0dXJuIChBZ2dCdWxrQXJncyAqKSAoZmNpbmZvLT5mbGlu Zm8gPyBmY2luZm8tPmZsaW5mby0+Zm5fZXh0cmEgOiBOVUxMKTsKK30KKyNlbmRpZgorCiBleHRl cm4gYm9vbCBFeGVjQ2hlY2soRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0 KTsKIAogLyoKLS0gCjIuNDcuMwoK --00000000000006d2b20640c83360 Content-Type: application/octet-stream; name="v3-0008-WIP-Add-ExecQualBatch-and-EEOPs-for-batched-quals.patch" Content-Disposition: attachment; filename="v3-0008-WIP-Add-ExecQualBatch-and-EEOPs-for-batched-quals.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgkh6mba1 RnJvbSBlZWM2MWU5MDFjNTRlYzIxNDlmNjBjMGZmOGEwYjFiM2U2M2Y3YTBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IE1vbiwgMjIgU2VwIDIwMjUgMTY6MTk6MjYgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz IDgvOV0gV0lQOiBBZGQgRXhlY1F1YWxCYXRjaCgpIGFuZCBFRU9QcyBmb3IgYmF0Y2hlZCBxdWFs cwoKSW50cm9kdWNlIEV4ZWNJbml0UXVhbEJhdGNoKCkvRXhlY1F1YWxCYXRjaCgpIHRvIGV2YWx1 YXRlIHNjYW4gcXVhbHMKb3ZlciBhIFR1cGxlQmF0Y2guIFRoZSBiYXRjaGVkIHF1YWwgaW50ZXJw cmV0ZXIgcHJvZHVjZXMgYSBib29sZWFuCm1hc2sgYWxpZ25lZCB3aXRoIHRoZSBiYXRjaCwgbWFy a2luZyB3aGljaCByb3dzIHNhdGlzZnkgdGhlIHF1YWwuClRoZSBzY2FuIG5vZGUgbGF0ZXIgdXNl cyB0aGlzIG1hc2sgdG8gY29weSBvbmx5IHBhc3Npbmcgcm93cyBpbnRvCml0cyBvdXRwdXQgc2xv dHMuIElmIGJhdGNoaW5nIGlzIG5vdCBwb3NzaWJsZSwgZmFsbCBiYWNrIHRvIHRoZQpleGlzdGlu ZyBwZXItdHVwbGUgZW5naW5lLgoKQWRkIEVFT1BfUVVBTF9CQVRDSF9JTklUTUFTSyBhbmQgRUVP UF9RVUFMX0JBVENIX1RFUk0sIGFuZCB3aXJlIHRoZW0KYWZ0ZXIgRUVPUF9TQ0FOX0ZFVENIU09N RV9CQVRDSCBhbmQgRUVPUF9CVUlMRF9TQ0FOX0JBVENIX1ZFQ1RPUi4KQmF0Y2hpbmcgaXMgbGlt aXRlZCB0byBxdWFscyB0aGF0IGFyZSBhIHRvcC1sZXZlbCBBTkQgb2Ygc2ltcGxlCmNsYXVzZXM6 IGVpdGhlciBOdWxsVGVzdCh2YXIpIG9yIHN0cmljdCBiaW5hcnkgT3BFeHByIHdpdGggdmFyL2Nv bnN0Cm9yIHZhci92YXIgYXJndW1lbnRzLiBBIHdhbGtlciB2YWxpZGF0ZXMgdGhlIHRyZWUsIGNv bGxlY3RzIHRoZQpyZWZlcmVuY2VkIGF0dG5vcywgYW5kIGJ1aWxkcyBhIEJhdGNoVmVjdG9yOyB0 ZXJtcyBhcmUgY29tcGlsZWQgZnJvbQp0aGUgbGVhdmVzIGFuZCBldmFsdWF0ZWQgdG8gdXBkYXRl IHRoZSBtYXNrLgoKRXhwclN0YXRlIGdhaW5zIGJhdGNoX3ByaXZhdGUgdG8gaG9sZCBCYXRjaFF1 YWxSdW50aW1lIChtYXNrLCB3b3JkcykKd2hpY2ggYXJlIHVzZWQgYnkgdGhlIHBhcmVudCBub2Rl IHRvIHBvcHVsYXRlIG91dHB1dCBzbG90cyBpbgpUdXBsZUJhdGNoLgotLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAgICAgfCAzMjQgKysrKysrKysrKysrKysrKysrKysrKysr KysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgfCAxOTggKysrKysrKysr KysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICB8ICAgMiArCiBz cmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYyAgIHwgIDExICsKIHNyYy9iYWNrZW5k L2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYyAgfCAgIDIgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY0V4cHIuaCAgICAgICB8ICA2MCArKysrKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1Nj YW4uaCAgICAgICB8ICAzNSArLS0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAg ICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICB8ICAgNCAr CiA5IGZpbGVzIGNoYW5nZWQsIDYyNiBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY0V4cHIuYwppbmRleCAyN2E1NzgwZjU1Ny4uNjNkZjU2MGQ1ZjEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY0V4cHIuYwpAQCAtMTExLDYgKzExMSwxOSBAQCBzdGF0aWMgQmF0Y2hWZWN0 b3IgKkJhdGNoVmVjdG9yQ3JlYXRlKEJpdG1hcHNldCAqYXR0bm9zLCBBdHRyTnVtYmVyIGxhc3Rf dmFyKTsKIHN0YXRpYyBib29sIEV4cHJMaXN0QWxsU2ltcGxlVmFycyhjb25zdCBMaXN0ICphcmdz LCBCaXRtYXBzZXQgKiphbGxhdHRub3MpOwogc3RhdGljIEJhdGNoVmVjdG9yU2xpY2UgKkJhdGNo VmVjdG9yU2xpY2VGcm9tRXhwckFyZ3MoY29uc3QgTGlzdCAqYXJncywKIAkJCQkJCQkJCQkJCQkg IGNvbnN0IEJhdGNoVmVjdG9yICpidik7CitzdGF0aWMgaW50MTYgQmF0Y2hWZWN0b3JGaW5kQXR0 Q29sbm8oY29uc3QgQmF0Y2hWZWN0b3IgKmJ2LCBBdHRyTnVtYmVyIGF0dG5vKTsKK3N0YXRpYyBp bnQxNiBCYXRjaFZlY3Rvck9mZnNldEZvclZhckV4cHIoRXhwciAqZXhwciwgY29uc3QgQmF0Y2hW ZWN0b3IgKmJ2KTsKKworLyogcHJpdmF0ZSBjb250ZXh0IGZvciB0aGUgd2Fsa2VyICovCit0eXBl ZGVmIHN0cnVjdCBRdWFsQmF0Y2hDb250ZXh0Cit7CisJTGlzdCAgICAgICpsZWF2ZXM7ICAgICAg LyogTGlzdDxOb2RlKj4gb2YgYWNjZXB0ZWQgbGVhdmVzICovCisJQml0bWFwc2V0ICphdHRub3M7 ICAgICAgLyogVmFycyByZWZlcmVuY2VkIGJ5IGFjY2VwdGVkIGxlYXZlcyAqLworCWJvb2wJCW9r OwkJCS8qIHN0YXlzIHRydWUgaWYgYmF0Y2hhYmxlICovCisJQXR0ck51bWJlcglsYXN0X3NjYW47 CS8qIGxhc3QgbmVlZGVkIGF0dHJpYnV0ZSBpbiBzY2FuIHNsb3QgKi8KK30gUXVhbEJhdGNoQ29u dGV4dDsKKworc3RhdGljIGJvb2wgcXVhbF9iYXRjaGFibGVfd2Fsa2VyKE5vZGUgKm5vZGUsIHZv aWQgKmNvbnRleHQpOwogCiAvKgogICogRXhlY0luaXRFeHByOiBwcmVwYXJlIGFuIGV4cHJlc3Np b24gdHJlZSBmb3IgZXhlY3V0aW9uCkBAIC01MjIxLDYgKzUyMzQsMjA5IEBAIEV4cHJMaXN0QWxs U2ltcGxlVmFycyhjb25zdCBMaXN0ICphcmdzLCBCaXRtYXBzZXQgKiphbGxhdHRub3MpCiAJcmV0 dXJuIHRydWU7CiB9CiAKKy8qIGhlbHBlcjogZXh0cmFjdCBWYXIgKGFsbG93aW5nIFJlbGFiZWxU eXBlLT5WYXIpOyByZXR1cm5zIE5VTEwgaWYgbm90ICovCitzdGF0aWMgVmFyICoKK3N0cmlwX3Rv X3ZhcihOb2RlICpuKQoreworCWlmIChuID09IE5VTEwpCisJCXJldHVybiBOVUxMOworCWlmIChJ c0EobiwgUmVsYWJlbFR5cGUpKQorCQluID0gKE5vZGUgKikgKChSZWxhYmVsVHlwZSAqKSBuKS0+ YXJnOworCWlmICghSXNBKG4sIFZhcikpCisJCXJldHVybiBOVUxMOworCWlmICgoKFZhciAqKSBu KS0+dmFyYXR0bm8gPCAwKQorCQlyZXR1cm4gTlVMTDsKKwlyZXR1cm4gKFZhciAqKSBuOworfQor CisvKiBtYWluIHdhbGtlcjsgcmV0dXJuIHRydWUgdG8gYWJvcnQgdHJhdmVyc2FsIGVhcmx5LCBm YWxzZSB0byBjb250aW51ZSAqLworc3RhdGljIGJvb2wKK3F1YWxfYmF0Y2hhYmxlX3dhbGtlcihO b2RlICpub2RlLCB2b2lkICpjb250ZXh0KQoreworCVF1YWxCYXRjaENvbnRleHQgKmN4dCA9IChR dWFsQmF0Y2hDb250ZXh0ICopIGNvbnRleHQ7CisKKwlpZiAobm9kZSA9PSBOVUxMIHx8ICFjeHQt Pm9rKQorCQlyZXR1cm4gZmFsc2U7CisKKwlzd2l0Y2ggKG5vZGVUYWcobm9kZSkpCisJeworCQlj YXNlIFRfTGlzdDoKKwkJCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIHF1YWxf YmF0Y2hhYmxlX3dhbGtlciwgY3h0KTsKKworCQljYXNlIFRfQm9vbEV4cHI6CisJCXsKKwkJCUJv b2xFeHByICpiID0gKEJvb2xFeHByICopIG5vZGU7CisKKwkJCS8qIE9ubHkgQU5EIHRyZWVzIGFy ZSBhbGxvd2VkICovCisJCQlpZiAoYi0+Ym9vbG9wICE9IEFORF9FWFBSKQorCQkJeworCQkJCWN4 dC0+b2sgPSBmYWxzZTsKKwkJCQlyZXR1cm4gdHJ1ZTsgLyogYWJvcnQgKi8KKwkJCX0KKwkJCS8q IFJlY3Vyc2Ugbm9ybWFsbHkgb3ZlciBjaGlsZHJlbiAqLworCQkJcmV0dXJuIGV4cHJlc3Npb25f dHJlZV93YWxrZXIobm9kZSwgcXVhbF9iYXRjaGFibGVfd2Fsa2VyLCBjeHQpOworCQl9CisKKwkJ Y2FzZSBUX051bGxUZXN0OgorCQl7CisJCQlOdWxsVGVzdCAqbnQgPSAoTnVsbFRlc3QgKikgbm9k ZTsKKwkJCVZhcgkJICp2ICA9IHN0cmlwX3RvX3ZhcigoTm9kZSAqKSBudC0+YXJnKTsKKworCQkJ aWYgKHYgPT0gTlVMTCkKKwkJCXsKKwkJCQljeHQtPm9rID0gZmFsc2U7CisJCQkJcmV0dXJuIHRy dWU7CisJCQl9CisKKwkJCWN4dC0+YXR0bm9zID0gYm1zX2FkZF9tZW1iZXIoY3h0LT5hdHRub3Ms IHYtPnZhcmF0dG5vKTsKKwkJCWlmICh2LT52YXJhdHRubyA+IGN4dC0+bGFzdF9zY2FuKQorCQkJ CWN4dC0+bGFzdF9zY2FuID0gdi0+dmFyYXR0bm87CisJCQljeHQtPmxlYXZlcyA9IGxhcHBlbmQo Y3h0LT5sZWF2ZXMsIG5vZGUpOworCisJCQkvKiBEbyBOT1QgcmVjdXJzZSBpbnRvIGxlYWYgKi8K KwkJCXJldHVybiBmYWxzZTsKKwkJfQorCisJCWNhc2UgVF9PcEV4cHI6CisJCXsKKwkJCU9wRXhw ciAqb3AgPSAoT3BFeHByICopIG5vZGU7CisJCQlMaXN0ICAgKmFyZ3MgPSBvcC0+YXJnczsKKwkJ CU5vZGUgICAqbCwgKnI7CisJCQlWYXIgICAgKmx2LAorCQkJCSAgICpydiA9IE5VTEw7CisKKwkJ CS8qIGJpbmFyeSBvbmx5ICovCisJCQlpZiAobGlzdF9sZW5ndGgoYXJncykgIT0gMikKKwkJCXsK KwkJCQljeHQtPm9rID0gZmFsc2U7CisJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQkvKiBzdHJp Y3Qgb3BlcmF0b3Igb25seSAoTlVMTCAtPiBmYWxzZSBzZW1hbnRpY3MpICovCisJCQlpZiAoIWZ1 bmNfc3RyaWN0KG9wLT5vcGZ1bmNpZCkpCisJCQl7CisJCQkJY3h0LT5vayA9IGZhbHNlOworCQkJ CXJldHVybiB0cnVlOworCQkJfQorCisJCQlsID0gbGluaXRpYWwoYXJncyk7CisJCQlyID0gbHNl Y29uZChhcmdzKTsKKwkJCWx2ID0gc3RyaXBfdG9fdmFyKGwpOworCQkJaWYgKGx2ID09IE5VTEwp CisJCQl7CisJCQkJY3h0LT5vayA9IGZhbHNlOworCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJ Y3h0LT5hdHRub3MgPSBibXNfYWRkX21lbWJlcihjeHQtPmF0dG5vcywgbHYtPnZhcmF0dG5vKTsK KwkJCWlmIChsdi0+dmFyYXR0bm8gPiBjeHQtPmxhc3Rfc2NhbikKKwkJCQljeHQtPmxhc3Rfc2Nh biA9IGx2LT52YXJhdHRubzsKKworCQkJaWYgKElzQShyLCBDb25zdCkpCisJCQl7CisJCQkJLyog b2s7IG5vIGF0dG5vIHRvIGFkZCAqLworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCXJ2ID0gc3Ry aXBfdG9fdmFyKHIpOworCQkJCWlmIChydiA9PSBOVUxMKQorCQkJCXsKKwkJCQkJY3h0LT5vayA9 IGZhbHNlOworCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQl9CisJCQkJY3h0LT5hdHRub3MgPSBibXNf YWRkX21lbWJlcihjeHQtPmF0dG5vcywgcnYtPnZhcmF0dG5vKTsKKwkJCQlpZiAocnYtPnZhcmF0 dG5vID4gY3h0LT5sYXN0X3NjYW4pCisJCQkJCWN4dC0+bGFzdF9zY2FuID0gcnYtPnZhcmF0dG5v OworCQkJfQorCisJCQljeHQtPmxlYXZlcyA9IGxhcHBlbmQoY3h0LT5sZWF2ZXMsIG5vZGUpOwor CisJCQkvKiBMZWFmIGhhbmRsZWQ7IGRvIE5PVCByZWN1cnNlIGludG8gYXJncyAqLworCQkJcmV0 dXJuIGZhbHNlOworCQl9CisKKwkJLyogV2hpdGVsaXN0IGVuZHMgaGVyZTsgYW55dGhpbmcgZWxz ZSBpbiB0aGUgdHJlZSByZWplY3RzICovCisJCWRlZmF1bHQ6CisJCQljeHQtPm9rID0gZmFsc2U7 CisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyogYnVpbGQgYSBCYXRjaFF1 YWxUZXJtIGZyb20gYSB2YWxpZGF0ZWQgbGVhZiAqLworc3RhdGljIEJhdGNoUXVhbFRlcm0gKgor YnVpbGRfdGVybV9mcm9tX2xlYWYoTm9kZSAqbiwgQmF0Y2hWZWN0b3IgKmJ2KQoreworCUJhdGNo UXVhbFRlcm0gKnRlcm07CisJQmF0Y2hRdWFsVGVybUtpbmQga2luZDsKKwlib29sCQlzdHJpY3Q7 CisJaW50MTYJCWxfb2ZmOworCWludDE2CQlyX29mZjsKKwlEYXR1bQkJcl9jb25zdCA9IChEYXR1 bSkgMDsKKwlib29sCQlyX2lzbnVsbCA9IGZhbHNlOworCUZtZ3JJbmZvICAgKmZpbmZvID0gTlVM TDsKKwlPaWQJCQljb2xsYXRpb247CisKKwlpZiAoSXNBKG4sIE51bGxUZXN0KSkKKwl7CisJCU51 bGxUZXN0ICpudCA9IChOdWxsVGVzdCAqKSBuOworCisJCWtpbmQgPSBudC0+bnVsbHRlc3R0eXBl ID09IElTX05VTEwgPyBCUVRLX0lTX05VTEwgOiBCUVRLX0lTX05PVF9OVUxMOworCQlsX29mZiA9 IEJhdGNoVmVjdG9yT2Zmc2V0Rm9yVmFyRXhwcihudC0+YXJnLCBidik7CisJCXJfb2ZmID0gLTE7 CisJCXN0cmljdCA9IGZhbHNlOworCQljb2xsYXRpb24gPSBJbnZhbGlkT2lkOworCisJCWlmIChs X29mZiA8IDApCisJCQlyZXR1cm4gTlVMTDsKKwl9CisJZWxzZSBpZiAoSXNBKG4sIE9wRXhwcikp CisJeworCQlPcEV4cHIgKm9wID0gKE9wRXhwciAqKSBuOworCQlFeHByICAgKmwgID0gbGluaXRp YWwob3AtPmFyZ3MpOworCQlFeHByICAgKnIgID0gbHNlY29uZChvcC0+YXJncyk7CisKKwkJbF9v ZmYgPSBCYXRjaFZlY3Rvck9mZnNldEZvclZhckV4cHIobCwgYnYpOworCQlpZiAobF9vZmYgPCAw KQorCQkJcmV0dXJuIE5VTEw7CisKKwkJcl9vZmYgPSBCYXRjaFZlY3Rvck9mZnNldEZvclZhckV4 cHIociwgYnYpOworCQlpZiAoSXNBKHIsIENvbnN0KSkKKwkJeworCQkJQ29uc3QgKmMgPSAoQ29u c3QgKikgcjsKKworCQkJa2luZCA9IEJRVEtfVkFSX0NPTlNUOworCQkJcl9jb25zdCA9IGMtPmNv bnN0dmFsdWU7CisJCQlyX2lzbnVsbCA9IGMtPmNvbnN0aXNudWxsOworCQkJcl9vZmYgPSAtMTsK KwkJfQorCQllbHNlCisJCXsKKwkJCWlmIChyX29mZiA8IDApCisJCQkJcmV0dXJuIE5VTEw7CisJ CQlraW5kID0gQlFUS19WQVJfVkFSOworCQl9CisKKwkJc3RyaWN0ID0gZnVuY19zdHJpY3Qob3At Pm9wZnVuY2lkKTsKKwkJY29sbGF0aW9uID0gZXhwcklucHV0Q29sbGF0aW9uKChOb2RlICopIG9w KTsKKwkJZmluZm8gPSBwYWxsb2Moc2l6ZW9mKEZtZ3JJbmZvKSk7CisJCWZtZ3JfaW5mbyhvcC0+ b3BmdW5jaWQsIGZpbmZvKTsKKwl9CisJZWxzZQorCQlyZXR1cm4gTlVMTDsKKworCXRlcm0gPSBw YWxsb2Moc2l6ZW9mKEJhdGNoUXVhbFRlcm0pKTsKKwl0ZXJtLT5raW5kID0ga2luZDsKKwl0ZXJt LT5zdHJpY3QgPSBzdHJpY3Q7CisJdGVybS0+bF9vZmYgPSBsX29mZjsKKwl0ZXJtLT5yX29mZiA9 IHJfb2ZmOworCXRlcm0tPnJfY29uc3QgPSByX2NvbnN0OworCXRlcm0tPnJfaXNudWxsID0gcl9p c251bGw7CisJdGVybS0+ZmluZm8gPSBmaW5mbzsKKwl0ZXJtLT5jb2xsYXRpb24gPSBjb2xsYXRp b247CisKKwlyZXR1cm4gdGVybTsKK30KKwogLyogLS0tLS0tLS0tLSBCYXRjaFZlY3RvciBzdHVm ZiAtLS0tLS0tLS0tLS0tICovCiAKIHN0YXRpYyBCYXRjaFZlY3RvciAqCkBAIC01Mjk4LDMgKzU1 MTQsMTExIEBAIEJhdGNoVmVjdG9yU2xpY2VGcm9tRXhwckFyZ3MoY29uc3QgTGlzdCAqYXJncywg Y29uc3QgQmF0Y2hWZWN0b3IgKmJ2KQogCiAJcmV0dXJuIGJ2czsKIH0KKworLyoKKyAqIEJhdGNo VmVjdG9yT2Zmc2V0Rm9yVmFyRXhwcgorICogICBNYXAgYSBWYXIgKG9yIFJlbGFiZWxUeXBlLT5W YXIpIHRvIGl0cyBCYXRjaFZlY3RvciBjb2x1bW4gaW5kZXguCisgKiAgIFJldHVybnMgLTEgaWYg dGhlIFZhcuKAmXMgYXR0bm8gaXMgbm90IHByZXNlbnQuCisgKi8KK3N0YXRpYyBpbnQxNgorQmF0 Y2hWZWN0b3JPZmZzZXRGb3JWYXJFeHByKEV4cHIgKmV4cHIsIGNvbnN0IEJhdGNoVmVjdG9yICpi dikKK3sKKwlBdHRyTnVtYmVyIGF0dG5vOworCisJaWYgKCFleHByX2lzX3NpbXBsZV92YXIoZXhw ciwgJmF0dG5vKSkKKwkJcmV0dXJuIC0xOworCisJcmV0dXJuIChpbnQxNikgQmF0Y2hWZWN0b3JG aW5kQXR0Q29sbm8oYnYsIGF0dG5vKTsKK30KKworLyoKKyAqIEV4ZWNJbml0UXVhbEJhdGNoCisg KglCdWlsZCBhIGJhdGNoZWQtcXVhbCBFRU9QIHByb2dyYW0gKEFORC1vbmx5KS4KKyAqCUNhbGxl ciBzaG91bGQgYWxzbyBrZWVwIHNjYWxhciBwcy0+cXVhbCBmb3IgcnVudGltZSBmYWxsYmFjay4K KyAqLworRXhwclN0YXRlICoKK0V4ZWNJbml0UXVhbEJhdGNoKFBsYW5TdGF0ZSAqcHMpCit7CisJ Tm9kZQkgICAqcXVhbCA9IChOb2RlICopIHBzLT5wbGFuLT5xdWFsOworCVF1YWxCYXRjaENvbnRl eHQgY3h0ID0ge05JTCwgTlVMTCwgdHJ1ZSwgMH07CisJQmF0Y2hRdWFsUnVudGltZSAqcnQ7CisJ RXhwclN0YXRlICAqc3RhdGU7CisJQmF0Y2hWZWN0b3IgKmJ2OworCXVpbnQ2NAkgICAqbWFzazsK KwlpbnQJCQltYXNrX3dvcmRzOworCUxpc3RDZWxsICAgKmxjOworCUV4cHJFdmFsU3RlcCBzY3Jh dGNoID0gezB9OworCisJaWYgKHF1YWwgPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiB2 YWxpZGF0ZSArIGNvbGxlY3QgbGVhdmVzL2F0dG5vcyB3aXRoIHdhbGtlciAqLworCSh2b2lkKSBx dWFsX2JhdGNoYWJsZV93YWxrZXIocXVhbCwgJmN4dCk7CisJaWYgKCFjeHQub2sgfHwgY3h0Lmxl YXZlcyA9PSBOSUwgfHwgYm1zX2lzX2VtcHR5KGN4dC5hdHRub3MpKQorCQlyZXR1cm4gTlVMTDsK KworCWJ2ID0gQmF0Y2hWZWN0b3JDcmVhdGUoY3h0LmF0dG5vcywgY3h0Lmxhc3Rfc2Nhbik7CisK KwltYXNrX3dvcmRzID0gKGJ2LT5tYXhyb3dzICsgNjMpID4+IDY7CisJbWFzayA9ICh1aW50NjQg KikgcGFsbG9jMChzaXplb2YodWludDY0KSAqIG1hc2tfd29yZHMpOworCisJLyogUnVudGltZSBj YXJyaWVyIChsaWZldGltZSA9PSBleHByc3RhdGUpICovCisJcnQgPSBwYWxsb2MwKHNpemVvZihC YXRjaFF1YWxSdW50aW1lKSk7CisJcnQtPm1hc2sgPSBtYXNrOworCXJ0LT5tYXNrX3dvcmRzID0g bWFza193b3JkczsKKworCS8qIGRlZGljYXRlZCBFeHByU3RhdGUgZm9yIGJhdGNoZWQgcHJvZ3Jh bSAqLworCisJc3RhdGUgPSBtYWtlTm9kZShFeHByU3RhdGUpOworCXN0YXRlLT5leHByID0gKEV4 cHIgKikgcXVhbDsKKwlzdGF0ZS0+cGFyZW50ID0gcHM7CisJc3RhdGUtPmV4dF9wYXJhbXMgPSBO VUxMOworCisJLyogbWFyayBleHByZXNzaW9uIGFzIHRvIGJlIHVzZWQgd2l0aCBFeGVjUXVhbCgp ICovCisJc3RhdGUtPmZsYWdzID0gRUVPX0ZMQUdfSVNfUVVBTDsKKworCS8qIE9ubHkgdmFsaWQg YXMgYmF0Y2ggcXVhbCBpZiB0aGlzIGlzIHNldC4gKi8KKwlzdGF0ZS0+YmF0Y2hfcHJpdmF0ZSA9 ICh2b2lkICopIHJ0OworCisJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX1NDQU5fRkVUQ0hTT01FX0JB VENIOworCXNjcmF0Y2guZC5mZXRjaF9iYXRjaC5sYXN0X3ZhciA9IGN4dC5sYXN0X3NjYW47CisJ RXhwckV2YWxQdXNoU3RlcChzdGF0ZSwgJnNjcmF0Y2gpOworCisJc2NyYXRjaC5vcGNvZGUgPSBF RU9QX0JVSUxEX1NDQU5fQkFUQ0hfVkVDVE9SOworCXNjcmF0Y2guZC5iYXRjaF92ZWN0b3IuYnYg PSBidjsKKwlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CisKKwlzY3JhdGNoLm9w Y29kZSA9IEVFT1BfUVVBTF9CQVRDSF9JTklUTUFTSzsKKwlzY3JhdGNoLmQucXVhbGJhdGNoX2lu aXQuYnYgPSBidjsKKwlzY3JhdGNoLmQucXVhbGJhdGNoX2luaXQubWFzayA9IG1hc2s7CisJc2Ny YXRjaC5kLnF1YWxiYXRjaF9pbml0Lm1hc2tfd29yZHMgPSBtYXNrX3dvcmRzOworCUV4cHJFdmFs UHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKKworCS8qIFRFUk0gcGVyIGxlYWYgKi8KKwlmb3Jl YWNoKGxjLCBjeHQubGVhdmVzKQorCXsKKwkJQmF0Y2hRdWFsVGVybSAqdGVybSA9IGJ1aWxkX3Rl cm1fZnJvbV9sZWFmKChOb2RlICopIGxmaXJzdChsYyksIGJ2KTsKKworCQlpZiAodGVybSA9PSBO VUxMKQorCQkJcmV0dXJuIE5VTEw7CisKKwkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX1FVQUxfQkFU Q0hfVEVSTTsKKwkJc2NyYXRjaC5kLnF1YWxiYXRjaF90ZXJtLmJ2ID0gYnY7CisJCXNjcmF0Y2gu ZC5xdWFsYmF0Y2hfdGVybS5tYXNrID0gbWFzazsKKwkJc2NyYXRjaC5kLnF1YWxiYXRjaF90ZXJt Lm1hc2tfd29yZHMgPSBtYXNrX3dvcmRzOworCQlzY3JhdGNoLmQucXVhbGJhdGNoX3Rlcm0udGVy bSA9IHRlcm07CQkvKiBieSB2YWx1ZSAqLworCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2Ny YXRjaCk7CisJfQorCisJLyoKKwkgKiBBdCB0aGUgZW5kLCB3ZSBkb24ndCBuZWVkIHRvIGRvIGFu eXRoaW5nIG1vcmUuICBUaGUgbGFzdCBxdWFsIGV4cHIgbXVzdAorCSAqIGhhdmUgeWllbGRlZCBU UlVFLCBhbmQgc2luY2UgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gdGhlIGRlc2lyZWQgb3V0cHV0 CisJICogbG9jYXRpb24sIHdlJ3JlIGRvbmUuCisJICovCisJc2NyYXRjaC5vcGNvZGUgPSBFRU9Q X0RPTkVfTk9fUkVUVVJOOworCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKKwor CUV4ZWNSZWFkeUV4cHIoc3RhdGUpOworCisJcmV0dXJuIHN0YXRlOworfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNFeHBySW50ZXJwLmMKaW5kZXggNDFhZDliNDgzOGQuLmMyYjc2YTVlNWRiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKQEAgLTYwOCw2ICs2MDgsOCBAQCBFeGVj SW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wg KmlzbnVsbCkKIAkJJiZDQVNFX0VFT1BfQlVJTERfU0NBTl9CQVRDSF9WRUNUT1IsCiAJCSYmQ0FT RV9FRU9QX0FHR19QTEFJTl9UUkFOU19CQVRDSF9ST1dMT09QLAogCQkmJkNBU0VfRUVPUF9BR0df UExBSU5fVFJBTlNfQkFUQ0hfRElSRUNULAorCQkmJkNBU0VfRUVPUF9RVUFMX0JBVENIX0lOSVRN QVNLLAorCQkmJkNBU0VfRUVPUF9RVUFMX0JBVENIX1RFUk0sCiAJCSYmQ0FTRV9FRU9QX0xBU1QK IAl9OwogCkBAIC0yMzUwLDcgKzIzNTIsMTkgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpz dGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCXsKIAkJCS8qIHRv byBjb21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVtZW50YXRpb24gKi8KIAkJCUV4ZWNBZ2dQbGFp blRyYW5zQmF0Y2goc3RhdGUsIG9wLCBlY29udGV4dCk7CisJCQlFRU9fTkVYVCgpOworCQl9CisK KworCQlFRU9fQ0FTRShFRU9QX1FVQUxfQkFUQ0hfSU5JVE1BU0spCisJCXsKKwkJCUV4ZWNRdWFs QmF0Y2hJbml0TWFzayhzdGF0ZSwgb3AsIGVjb250ZXh0KTsKKwkJCUVFT19ORVhUKCk7CisJCX0K IAorCQlFRU9fQ0FTRShFRU9QX1FVQUxfQkFUQ0hfVEVSTSkKKwkJeworCQkJRXhlY1F1YWxCYXRj aFRlcm0oc3RhdGUsIG9wLCBlY29udGV4dCk7CiAJCQlFRU9fTkVYVCgpOwogCQl9CiAKQEAgLTYx ODUsMyArNjE5OSwxODcgQEAgRXhlY0FnZ1BsYWluVHJhbnNCYXRjaChFeHByU3RhdGUgKnN0YXRl LCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQKIAkJCWVsb2coRVJST1Is ICJpbnZhbGlkIEV4cHJFdmFsT3AgaW4gRXhlY0FnZ1BsYWluVHJhbnNCYXRjaCgpIik7CiAJfQog fQorCisvKiBzZXQgbWFzayBiaXRzIFswLi5udmFsaWRfYml0cykgdG8gMTsgY2xlYXIgcGFkZGlu ZyBpbiB0aGUgbGFzdCB3b3JkICovCitzdGF0aWMgaW5saW5lIHZvaWQKK21hc2tfaW5pdF9hbGxf b25lcyh1aW50NjQgKmEsIGludCBud29yZHMsIGludCBudmFsaWRfYml0cykKK3sKKwlmb3IgKGlu dCBpID0gMDsgaSA8IG53b3JkczsgaSsrKQorCQlhW2ldID0gflVJTlQ2NENPTlNUKDApOworCisJ aWYgKChudmFsaWRfYml0cyAmIDYzKSAhPSAwKQorCXsKKwkJaW50IHJlbSA9IG52YWxpZF9iaXRz ICYgNjM7CisKKwkJYVtud29yZHMgLSAxXSAmPSAoflVJTlQ2NENPTlNUKDApKSA+PiAoNjQgLSBy ZW0pOworCX0KK30KKworc3RhdGljIGlubGluZSB2b2lkCittYXNrX2NsZWFyX2JpdCh1aW50NjQg KmEsIGludCBpKQoreworCWFbaSA+PiA2XSAmPSB+KFVJTlQ2NENPTlNUKDEpIDw8IChpICYgNjMp KTsKK30KKwordm9pZAorRXhlY1F1YWxCYXRjaEluaXRNYXNrKEV4cHJTdGF0ZSAqc3RhdGUsIEV4 cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCkKK3sKKwlCYXRjaFZlY3RvciAq YnYgPSBvcC0+ZC5xdWFsYmF0Y2hfaW5pdC5idjsKKwl1aW50NjQgICAgICAqbWFzayA9IG9wLT5k LnF1YWxiYXRjaF9pbml0Lm1hc2s7CisJaW50ICAgICAgICAgIG53b3JkcyA9IG9wLT5kLnF1YWxi YXRjaF9pbml0Lm1hc2tfd29yZHM7CisJaW50ICAgICAgICAgIG4gPSBidi0+bnJvd3M7CisKKwkv KiBpbml0aWFsaXplIHRvIGFsbC1wYXNzIGZvciBjdXJyZW50IGJhdGNoIHNpemUgKi8KKwltYXNr X2luaXRfYWxsX29uZXMobWFzaywgbndvcmRzLCBuKTsKK30KKwordm9pZAorRXhlY1F1YWxCYXRj aFRlcm0oRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVj b250ZXh0KQoreworCUJhdGNoVmVjdG9yICAgICpidiAgID0gb3AtPmQucXVhbGJhdGNoX3Rlcm0u YnY7CisJdWludDY0ICAgICAgICAgKm1hc2sgPSBvcC0+ZC5xdWFsYmF0Y2hfdGVybS5tYXNrOwor CUJhdGNoUXVhbFRlcm0gICp0ICAgID0gb3AtPmQucXVhbGJhdGNoX3Rlcm0udGVybTsKKwlpbnQg ICAgICAgICAgICAgbiAgICA9IGJ2LT5ucm93czsKKworCXN3aXRjaCAodC0+a2luZCkKKwl7CisJ CWNhc2UgQlFUS19JU19OVUxMOgorCQl7CisJCQkvKiBrZWVwIGJpdCBzZXQgb25seSBpZiB2YWx1 ZSBJUyBOVUxMOyBjbGVhciBvdGhlcndpc2UgKi8KKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgbjsg aSsrKQorCQkJeworCQkJCWlmICghYnYtPm51bGxzW3QtPmxfb2ZmXVtpXSkKKwkJCQkJbWFza19j bGVhcl9iaXQobWFzaywgaSk7CisJCQl9CisJCQlicmVhazsKKwkJfQorCisJCWNhc2UgQlFUS19J U19OT1RfTlVMTDoKKwkJeworCQkJLyoga2VlcCBiaXQgc2V0IG9ubHkgaWYgdmFsdWUgSVMgTk9U IE5VTEw7IGNsZWFyIGlmIE5VTEwgKi8KKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQor CQkJeworCQkJCWlmIChidi0+bnVsbHNbdC0+bF9vZmZdW2ldKQorCQkJCQltYXNrX2NsZWFyX2Jp dChtYXNrLCBpKTsKKwkJCX0KKwkJCWJyZWFrOworCQl9CisKKwkJY2FzZSBCUVRLX1ZBUl9DT05T VDoKKwkJeworCQkJY29uc3QgYm9vbCAgcl9pc251bGwgPSB0LT5yX2lzbnVsbDsKKwkJCWNvbnN0 IERhdHVtIHJfY29uc3QgID0gdC0+cl9jb25zdDsKKwkJCWNvbnN0IGJvb2wgIHN0cmljdCAgID0g dC0+c3RyaWN0OworCQkJY29uc3QgT2lkICAgY29sbCAgICAgPSB0LT5jb2xsYXRpb247CisJCQlG bWdySW5mbyAgICpmaW5mbyAgICA9IHQtPmZpbmZvOworCQkJaW50ICAgICAgICAgbG9mZiAgICAg PSB0LT5sX29mZjsKKworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisJCQl7CisJCQkJ Ym9vbCBsbiA9IGJ2LT5udWxsc1tsb2ZmXVtpXTsKKwkJCQlib29sIHBhc3M7CisKKwkJCQkvKiBX SEVSRSB0cmVhdHMgTlVMTCBhcyBmYWxzZTsgc3RyaWN0IG9wcyBzaG9ydC1jaXJjdWl0ICovCisJ CQkJaWYgKHN0cmljdCAmJiAobG4gfHwgcl9pc251bGwpKQorCQkJCQlwYXNzID0gZmFsc2U7CisJ CQkJZWxzZQorCQkJCXsKKwkJCQkJRGF0dW0gbHYgPSBidi0+Y29sc1tsb2ZmXVtpXTsKKworCQkJ CQlwYXNzID0gRGF0dW1HZXRCb29sKEZ1bmN0aW9uQ2FsbDJDb2xsKGZpbmZvLCBjb2xsLCBsdiwg cl9jb25zdCkpOworCQkJCX0KKworCQkJCWlmICghcGFzcykKKwkJCQkJbWFza19jbGVhcl9iaXQo bWFzaywgaSk7CisJCQl9CisJCQlicmVhazsKKwkJfQorCisJCWNhc2UgQlFUS19WQVJfVkFSOgor CQl7CisJCQljb25zdCBib29sICBzdHJpY3QgPSB0LT5zdHJpY3Q7CisJCQljb25zdCBPaWQgICBj b2xsICAgPSB0LT5jb2xsYXRpb247CisJCQlGbWdySW5mbyAgICpmaW5mbyAgPSB0LT5maW5mbzsK KwkJCWludCAgICAgICAgIGxvZmYgICA9IHQtPmxfb2ZmOworCQkJaW50ICAgICAgICAgcm9mZiAg ID0gdC0+cl9vZmY7CisKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQorCQkJeworCQkJ CWJvb2wgIGxuID0gYnYtPm51bGxzW2xvZmZdW2ldOworCQkJCWJvb2wgIHJuID0gYnYtPm51bGxz W3JvZmZdW2ldOworCQkJCWJvb2wgIHBhc3M7CisKKwkJCQlpZiAoc3RyaWN0ICYmIChsbiB8fCBy bikpCisJCQkJCXBhc3MgPSBmYWxzZTsKKwkJCQllbHNlCisJCQkJeworCQkJCQlEYXR1bSBsdiA9 IGJ2LT5jb2xzW2xvZmZdW2ldOworCQkJCQlEYXR1bSBydiA9IGJ2LT5jb2xzW3JvZmZdW2ldOwor CisJCQkJCXBhc3MgPSBEYXR1bUdldEJvb2woRnVuY3Rpb25DYWxsMkNvbGwoZmluZm8sIGNvbGws IGx2LCBydikpOworCQkJCX0KKworCQkJCWlmICghcGFzcykKKwkJCQkJbWFza19jbGVhcl9iaXQo bWFzaywgaSk7CisJCQl9CisJCQlicmVhazsKKwkJfQorCisJCWRlZmF1bHQ6CisJCQkvKiBzaG91 bGQgbm90IGhhcHBlbjsgbGVhdmUgbWFzayB1bmNoYW5nZWQgKi8KKwkJCWJyZWFrOworCX0KK30K Kworc3RhdGljIGlubGluZSBib29sCittYXNrX2lzX2VtcHR5KGNvbnN0IHVpbnQ2NCAqbWFzaywg aW50IG53b3JkcykKK3sKKwlmb3IgKGludCBpID0gMDsgaSA8IG53b3JkczsgaSsrKQorCXsKKwkJ aWYgKG1hc2tbaV0gIT0gMCkKKwkJCXJldHVybiBmYWxzZTsKKwl9CisJcmV0dXJuIHRydWU7Cit9 CisKKy8qCisgKiBFeGVjUXVhbEJhdGNoCisgKgkJRXZhbHVhdGUgYSBjb21waWxlZCBxdWFsIChF RU9QX1FVQUwpIGZvciBhIGJhdGNoIG9mIHJvd3MuCisgKgorICogUmV0dXJucyB0aGUgbnVtYmVy IG9mIHRydWUgcm93cyAob3B0aW9uYWwgY29udmVuaWVuY2UgZm9yIGNhbGxlcnMpLgorICovCitp bnQKK0V4ZWNRdWFsQmF0Y2goRXhwclN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0 LCBUdXBsZUJhdGNoICpiKQoreworCWludAkJaTsKKwl1aW50NjQgKm1hc2s7CisJaW50CQlrZXB0 ID0gMDsKKwlCYXRjaFF1YWxSdW50aW1lICpydCA9IEV4ZWNHZXRCYXRjaFF1YWxSdW50aW1lKHN0 YXRlKTs7CisKKwkvKiB2ZXJpZnkgdGhhdCBleHByZXNzaW9uIHdhcyBjb21waWxlZCB1c2luZyBF eGVjSW5pdFF1YWwgKi8KKwlBc3NlcnQoc3RhdGUtPmZsYWdzICYgRUVPX0ZMQUdfSVNfUVVBTCk7 CisJQXNzZXJ0KHJ0ICYmIHJ0LT5tYXNrICYmIHJ0LT5tYXNrX3dvcmRzKTsKKworCS8qIHJ1biB0 aGUgYmF0Y2hlZCBFRU9QIHByb2dyYW0gb25jZSAqLworCWVjb250ZXh0LT5zY2FuX2JhdGNoID0g YjsKKwlFeGVjRXZhbEV4cHJOb1JldHVybihzdGF0ZSwgZWNvbnRleHQpOworCisJbWFzayA9IHJ0 LT5tYXNrOworCWlmIChtYXNrX2lzX2VtcHR5KG1hc2ssIHJ0LT5tYXNrX3dvcmRzKSkKKwkJcmV0 dXJuIDA7CisKKwkvKiBBZGQgc3Vydml2b3JzIGludG8gb3V0c2xvdHMgKi8KKwlUdXBsZUJhdGNo UmV3aW5kKGIpOworCWkgPSAwOworCXdoaWxlIChUdXBsZUJhdGNoSGFzTW9yZShiKSkKKwl7CisJ CVR1cGxlVGFibGVTbG90ICpzbG90ID0gVHVwbGVCYXRjaEdldE5leHRTbG90KGIpOworCisJCS8q IG1hc2sgYml0IHNldCA9PiByb3cgc3Vydml2ZXMgKi8KKwkJaWYgKG1hc2tbaSA+PiA2XSAmIChV SU5UNjRDT05TVCgxKSA8PCAoaSAmIDYzKSkpCisJCQlUdXBsZUJhdGNoU3RvcmVJbk91dChiLCBr ZXB0KyssIHNsb3QpOworCQlpKys7CisJfQorCisJcmV0dXJuIGtlcHQ7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVNlcXNjYW4uYwppbmRleCBhNGNmMWU1MWFmMC4uZTVjYTYxOTczMWYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwpAQCAtNDAxLDYgKzQwMSw4IEBAIFNlcVNjYW5Jbml0QmF0 Y2hpbmcoU2VxU2NhblN0YXRlICpzY2Fuc3RhdGUsIGludCBlZmxhZ3MpCiAJCQlzY2Fuc3RhdGUt PnNzLnBzLkV4ZWNQcm9jTm9kZSA9IEV4ZWNTZXFTY2FuQmF0Y2hTbG90V2l0aFF1YWxQcm9qZWN0 OwogCQl9CiAJfQorCisJc2NhbnN0YXRlLT5zcy5wcy5xdWFsX2JhdGNoID0gRXhlY0luaXRRdWFs QmF0Y2goKFBsYW5TdGF0ZSAqKSBzY2Fuc3RhdGUpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYyBiL3NyYy9iYWNrZW5kL2pp dC9sbHZtL2xsdm1qaXRfZXhwci5jCmluZGV4IDQ1MzQ2MTI0YmQ3Li5iOTdkNWZhZWJkZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKKysrIGIvc3JjL2Jh Y2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKQEAgLTMwMzMsNiArMzAzMywxNyBAQCBsbHZt X2NvbXBpbGVfZXhwcihFeHByU3RhdGUgKnN0YXRlKQogCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxv Y2tzW29wbm8gKyAxXSk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgRUVPUF9RVUFMX0JBVENIX0lO SVRNQVNLOgorCQkJCWJ1aWxkX0V2YWxYRnVuYyhiLCBtb2QsICJFeGVjUXVhbEJhdGNoSW5pdE1h c2siLAorCQkJCQkJCQl2X3N0YXRlLCBvcCwgdl9lY29udGV4dCk7CisJCQkJTExWTUJ1aWxkQnIo Yiwgb3BibG9ja3Nbb3BubyArIDFdKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRUVPUF9RVUFMX0JB VENIX1RFUk06CisJCQkJYnVpbGRfRXZhbFhGdW5jKGIsIG1vZCwgIkV4ZWNRdWFsQmF0Y2hUZXJt IiwKKwkJCQkJCQkJdl9zdGF0ZSwgb3AsIHZfZWNvbnRleHQpOworCQkJCUxMVk1CdWlsZEJyKGIs IG9wYmxvY2tzW29wbm8gKyAxXSk7CisJCQkJYnJlYWs7CisKIAkJCWNhc2UgRUVPUF9MQVNUOgog CQkJCUFzc2VydChmYWxzZSk7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9q aXQvbGx2bS9sbHZtaml0X3R5cGVzLmMgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5 cGVzLmMKaW5kZXggMWI1ZTA2ZjYwY2MuLmY0Zjc1NmU3Y2I1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMKKysrIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0v bGx2bWppdF90eXBlcy5jCkBAIC0xODcsNCArMTg3LDYgQEAgdm9pZAkgICAqcmVmZXJlbmNlZF9m dW5jdGlvbnNbXSA9CiAJRXhlY0J1aWxkT3V0ZXJCYXRjaFZlY3RvciwKIAlFeGVjQnVpbGRTY2Fu QmF0Y2hWZWN0b3IsCiAJRXhlY0FnZ1BsYWluVHJhbnNCYXRjaCwKKwlFeGVjUXVhbEJhdGNoSW5p dE1hc2ssCisJRXhlY1F1YWxCYXRjaFRlcm0sCiB9OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY0V4cHIuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKaW5k ZXggZjI0NzgyZWNmNTguLmY1MDkzNmFjYWFhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjRXhwci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKQEAg LTMwNiw2ICszMDYsMTAgQEAgdHlwZWRlZiBlbnVtIEV4cHJFdmFsT3AKIAlFRU9QX0FHR19QTEFJ Tl9UUkFOU19CQVRDSF9ST1dMT09QLAkvKiBwZXItcm93IGZtZ3IgY2FsbHMgKi8KIAlFRU9QX0FH R19QTEFJTl9UUkFOU19CQVRDSF9ESVJFQ1QsCS8qIGNhbGwgdHJhbnNmbiBvbmNlIHdpdGggQWdn QnVsa0FyZ3MgKi8KIAorCS8qIEJhdGNoZWQgcXVhbCBldmFsdWF0aW9uICovCisJRUVPUF9RVUFM X0JBVENIX0lOSVRNQVNLLAorCUVFT1BfUVVBTF9CQVRDSF9URVJNLAorCiAJLyogbm9uLWV4aXN0 ZW50IG9wZXJhdGlvbiwgdXNlZCBlLmcuIHRvIGNoZWNrIGFycmF5IGxlbmd0aHMgKi8KIAlFRU9Q X0xBU1QKIH0gRXhwckV2YWxPcDsKQEAgLTc5Niw2ICs4MDAsMjEgQEAgdHlwZWRlZiBzdHJ1Y3Qg RXhwckV2YWxTdGVwCiAJCXsKIAkJCXN0cnVjdCBCYXRjaFZlY3RvciAqYnY7CiAJCX0JCQliYXRj aF92ZWN0b3I7CisKKwkJc3RydWN0CisJCXsKKwkJCXN0cnVjdCBCYXRjaFZlY3RvciAqYnY7IC8q IGZpbGxlZCBlYXJsaWVyIGJ5IEJVSUxEX0JBVENIX1ZFQ1RPUiAqLworCQkJdWludDY0CQkJICAg Km1hc2s7ICAgICAgICAvKiBzaGFyZWQgbWFzayBidWZmZXIgZm9yIHRoaXMgcHJvZ3JhbSAqLwor CQkJaW50CQkJCQltYXNrX3dvcmRzOyAgLyogY2VpbChlc19tYXhfYmF0Y2gvNjQpICovCisJCX0J CQlxdWFsYmF0Y2hfaW5pdDsgICAgICAgICAgICAgICAgICAgIC8qIEVFT1BfUVVBTF9CQVRDSF9J TklUTUFTSyAqLworCisJCXN0cnVjdAorCQl7CisJCQlzdHJ1Y3QgQmF0Y2hWZWN0b3IgKmJ2OyAv KiBzYW1lIGJ2IGFzIGluaXQgKi8KKwkJCXVpbnQ2NAkJCSAgICptYXNrOyAgICAgICAgLyogc2Ft ZSBtYXNrIGJ1ZmZlciAqLworCQkJaW50CQkJCQltYXNrX3dvcmRzOyAgLyogc2FtZSB3b3JkIGNv dW50ICovCisJCQlzdHJ1Y3QgQmF0Y2hRdWFsVGVybSAqdGVybTsgICAgICAvKiBjb21waWxlZCBs ZWFmICovCisJCX0JCQlxdWFsYmF0Y2hfdGVybTsgICAgICAgICAgICAgICAgICAgIC8qIEVFT1Bf UVVBTF9CQVRDSF9URVJNICovCiAJfQkJCWQ7CiB9IEV4cHJFdmFsU3RlcDsKIApAQCAtOTc1LDQg Kzk5NCw0NSBAQCBleHRlcm4gdm9pZCBFeGVjQnVpbGRPdXRlckJhdGNoVmVjdG9yKEV4cHJTdGF0 ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDbwogZXh0ZXJuIHZvaWQgRXhlY0J1aWxk U2NhbkJhdGNoVmVjdG9yKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJD b250ZXh0ICplY29udGV4dCk7CiAKIGV4dGVybiB2b2lkIEV4ZWNBZ2dQbGFpblRyYW5zQmF0Y2go RXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0 KTsKKworLyogU2VlIEV4ZWNRdWFsQmF0Y2hUZXJtKCkuICovCit0eXBlZGVmIGVudW0gQmF0Y2hR dWFsVGVybUtpbmQKK3sKKwlCUVRLX1ZBUl9DT05TVCwKKwlCUVRLX1ZBUl9WQVIsCisJQlFUS19J U19OVUxMLAorCUJRVEtfSVNfTk9UX05VTEwsCit9IEJhdGNoUXVhbFRlcm1LaW5kOworCit0eXBl ZGVmIHN0cnVjdCBCYXRjaFF1YWxUZXJtCit7CisJQmF0Y2hRdWFsVGVybUtpbmQga2luZDsKKwli b29sCQlzdHJpY3Q7CQkvKiBmb2xsb3cgc3RyaWN0IE5VTEwgc2VtYW50aWNzIGlmIHRydWUgKi8K KwlpbnQxNgkJbF9vZmY7CQkvKiBsZWZ0IFZBUiBjb2x1bW4gKGluZGV4IGludG8gQmF0Y2hWZWN0 b3IpICovCisJaW50MTYJCXJfb2ZmOwkJLyogcmlnaHQgVkFSIGNvbHVtbiwgb3IgLTEgaWYgQ29u c3QgKi8KKwlEYXR1bQkJcl9jb25zdDsJLyogZm9yIFZBUl9DT05TVCAqLworCWJvb2wJCXJfaXNu dWxsOwkvKiBmb3IgVkFSX0NPTlNUICovCisJRm1nckluZm8gICAqZmluZm87CQkvKiBmbWdyIGZv ciBnZW5lcmljIGJpbmFyeSBvcHMgKi8KKwlPaWQJCQljb2xsYXRpb247CS8qIG9wIGNvbGxhdGlv biAqLworfSBCYXRjaFF1YWxUZXJtOworCisvKgorICogUnVudGltZSB2aWV3IGZvciBiYXRjaGVk IHF1YWwgcHJvZ3JhbXMuCisgKiBPd25lZCBieSB0aGUgRXhwclN0YXRlOyBsaWZldGltZSA9PSBF eHByU3RhdGUuCisgKi8KK3R5cGVkZWYgc3RydWN0IEJhdGNoUXVhbFJ1bnRpbWUKK3sKKwl1aW50 NjQgKm1hc2s7CisJaW50CQltYXNrX3dvcmRzOworfSBCYXRjaFF1YWxSdW50aW1lOworCitzdGF0 aWMgaW5saW5lIEJhdGNoUXVhbFJ1bnRpbWUgKgorRXhlY0dldEJhdGNoUXVhbFJ1bnRpbWUoRXhw clN0YXRlICpiYXRjaF9xdWFsKQoreworCXJldHVybiAoQmF0Y2hRdWFsUnVudGltZSAqKSBiYXRj aF9xdWFsLT5iYXRjaF9wcml2YXRlOworfQorCitleHRlcm4gdm9pZCBFeGVjUXVhbEJhdGNoSW5p dE1hc2soRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVj b250ZXh0KTsKK2V4dGVybiB2b2lkIEV4ZWNRdWFsQmF0Y2hUZXJtKEV4cHJTdGF0ZSAqc3RhdGUs IEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCk7CisKICNlbmRpZgkJCQkJ CQkvKiBFWEVDX0VYUFJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y1NjYW4uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNTY2FuLmgKaW5kZXggZmI0YjU3YTgz MWMuLjU2OGE3YTMzYjdkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjU2Nh bi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNTY2FuLmgKQEAgLTMwNCw3ICszMDQs OCBAQCBFeGVjU2NhbkV4dGVuZGVkQmF0Y2goU2NhblN0YXRlICpub2RlLAogewogCUV4cHJDb250 ZXh0ICplY29udGV4dCA9IG5vZGUtPnBzLnBzX0V4cHJDb250ZXh0OwogCVR1cGxlQmF0Y2ggKmIg PSBub2RlLT5wcy5wc19CYXRjaDsKLQlpbnQJCQlxdWFsaWZpZWQ7CisJRXhwclN0YXRlICAqcXVh bF9iYXRjaCA9IG5vZGUtPnBzLnF1YWxfYmF0Y2g7CisJaW50CQkJcXVhbGlmaWVkID0gMDsKIAog CS8qIEJhdGNoIHBhdGggZG9lcyBub3Qgc3VwcG9ydCBFUFEgKi8KIAlBc3NlcnQobm9kZS0+cHMu c3RhdGUtPmVzX2VwcV9hY3RpdmUgPT0gTlVMTCk7CkBAIC0zMjAsMjMgKzMyMSwzMSBAQCBFeGVj U2NhbkV4dGVuZGVkQmF0Y2goU2NhblN0YXRlICpub2RlLAogCiAJCWlmIChxdWFsICE9IE5VTEwp CiAJCXsKLQkJCXF1YWxpZmllZCA9IDA7Ci0JCQl3aGlsZSAoVHVwbGVCYXRjaEhhc01vcmUoYikp CisJCQlSZXNldEV4cHJDb250ZXh0KGVjb250ZXh0KTsKKwkJCWlmIChxdWFsX2JhdGNoKQogCQkJ ewotCQkJCVR1cGxlVGFibGVTbG90ICppbiA9IFR1cGxlQmF0Y2hHZXROZXh0U2xvdChiKTsKLQot CQkJCUFzc2VydChpbik7Ci0JCQkJUmVzZXRFeHByQ29udGV4dChlY29udGV4dCk7Ci0JCQkJZWNv bnRleHQtPmVjeHRfc2NhbnR1cGxlID0gaW47CisJCQkJcXVhbGlmaWVkID0gRXhlY1F1YWxCYXRj aChxdWFsX2JhdGNoLCBlY29udGV4dCwgYik7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJaW50 CQlpID0gMDsKIAotCQkJCWlmIChFeGVjUXVhbChxdWFsLCBlY29udGV4dCkpCisJCQkJd2hpbGUg KFR1cGxlQmF0Y2hIYXNNb3JlKGIpKQogCQkJCXsKLQkJCQkJVHVwbGVCYXRjaFN0b3JlSW5PdXQo YiwgcXVhbGlmaWVkLCBpbik7Ci0JCQkJCXF1YWxpZmllZCsrOworCQkJCQlUdXBsZVRhYmxlU2xv dCAqc2xvdCA9IFR1cGxlQmF0Y2hHZXROZXh0U2xvdChiKTsKKworCQkJCQlBc3NlcnQoc2xvdCk7 CisJCQkJCWVjb250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IHNsb3Q7CisJCQkJCWlmIChFeGVjUXVh bChxdWFsLCBlY29udGV4dCkpCisJCQkJCXsKKwkJCQkJCVR1cGxlQmF0Y2hTdG9yZUluT3V0KGIs IHF1YWxpZmllZCwgc2xvdCk7CisJCQkJCQlxdWFsaWZpZWQrKzsKKwkJCQkJfQorCQkJCQlpKys7 CiAJCQkJfQotCQkJCWVsc2UKLQkJCQkJSW5zdHJDb3VudEZpbHRlcmVkMShub2RlLCAxKTsKIAkJ CX0KKwkJCUluc3RyQ291bnRGaWx0ZXJlZDEobm9kZSwgYi0+bnZhbGlkIC0gcXVhbGlmaWVkKTsK KwkJCS8qIFVwZGF0ZSBjb3VudCBhbmQgc3RhcnQgdXNpbmcgYi0+b3V0c2xvdHMuICovCiAJCQlU dXBsZUJhdGNoVXNlT3V0cHV0KGIsIHF1YWxpZmllZCk7CiAJCX0KIAkJZWxzZQpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWN1dG9yLmgKaW5kZXggYzcyYmQ3NTViNzkuLmRkMGYyYzc0YWU1IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWN1dG9yLmgKQEAgLTMzMyw2ICszMzMsNyBAQCBFeGVjUHJvY05vZGVCYXRjaChQbGFuU3Rh dGUgKm5vZGUpCiBleHRlcm4gRXhwclN0YXRlICpFeGVjSW5pdEV4cHIoRXhwciAqbm9kZSwgUGxh blN0YXRlICpwYXJlbnQpOwogZXh0ZXJuIEV4cHJTdGF0ZSAqRXhlY0luaXRFeHByV2l0aFBhcmFt cyhFeHByICpub2RlLCBQYXJhbUxpc3RJbmZvIGV4dF9wYXJhbXMpOwogZXh0ZXJuIEV4cHJTdGF0 ZSAqRXhlY0luaXRRdWFsKExpc3QgKnF1YWwsIFBsYW5TdGF0ZSAqcGFyZW50KTsKK2V4dGVybiBF eHByU3RhdGUgKkV4ZWNJbml0UXVhbEJhdGNoKFBsYW5TdGF0ZSAqcHMpOwogZXh0ZXJuIEV4cHJT dGF0ZSAqRXhlY0luaXRDaGVjayhMaXN0ICpxdWFsLCBQbGFuU3RhdGUgKnBhcmVudCk7CiBleHRl cm4gTGlzdCAqRXhlY0luaXRFeHByTGlzdChMaXN0ICpub2RlcywgUGxhblN0YXRlICpwYXJlbnQp OwogZXh0ZXJuIEV4cHJTdGF0ZSAqRXhlY0J1aWxkQWdnVHJhbnMoQWdnU3RhdGUgKmFnZ3N0YXRl LCBzdHJ1Y3QgQWdnU3RhdGVQZXJQaGFzZURhdGEgKnBoYXNlLApAQCAtNTgxLDYgKzU4Miw4IEBA IEFnZ0dldEJ1bGtBcmdzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvKQogfQogI2VuZGlmCiAKK2V4 dGVybiBpbnQgRXhlY1F1YWxCYXRjaChFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAqZWNv bnRleHQsIFR1cGxlQmF0Y2ggKmIpOworCiBleHRlcm4gYm9vbCBFeGVjQ2hlY2soRXhwclN0YXRl ICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0KTsKIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK aW5kZXggZmRmZThiNGRkYWYuLjc4YzVhYmJiMjNhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAt MTQ2LDYgKzE0Niw5IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJTdGF0ZQogCSAqIEV4ZWNJbml0RXhw clJlYygpLgogCSAqLwogCUVycm9yU2F2ZUNvbnRleHQgKmVzY29udGV4dDsKKworCS8qIGJhdGNo ZWQtcHJvZ3JhbSBydW50aW1lIChlLmcuLCBCYXRjaFF1YWxSdW50aW1lKSAqLworCXZvaWQJICpi YXRjaF9wcml2YXRlOwogfSBFeHByU3RhdGU7CiAKIApAQCAtMTE5Niw2ICsxMTk5LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgUGxhblN0YXRlCiAJICogc3ViUGxhbiBsaXN0LCB3aGljaCBkb2VzIG5vdCBl eGlzdCBpbiB0aGUgcGxhbiB0cmVlKS4KIAkgKi8KIAlFeHByU3RhdGUgICpxdWFsOwkJCS8qIGJv b2xlYW4gcXVhbCBjb25kaXRpb24gKi8KKwlFeHByU3RhdGUgICpxdWFsX2JhdGNoOwkJLyogYm9v bGVhbiBxdWFsIGNvbmRpdGlvbiBldmFsdWF0ZWQgb24gYmF0Y2hlcyAqLwogCVBsYW5TdGF0ZSAg KmxlZnR0cmVlOwkJLyogaW5wdXQgcGxhbiB0cmVlKHMpICovCiAJUGxhblN0YXRlICAqcmlnaHR0 cmVlOwogCi0tIAoyLjQ3LjMKCg== --00000000000006d2b20640c83360 Content-Type: application/octet-stream; name="v3-0009-Blind-guess-at-fixing-segfault-on-running-tpch-q2.patch" Content-Disposition: attachment; filename="v3-0009-Blind-guess-at-fixing-segfault-on-running-tpch-q2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgkh6mb50 RnJvbSA5MmVmMzY0YThmNjUwMDIyYTEzOWJjMzJhMmU1MTg4MDRhNDE3NjdhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgOCBPY3QgMjAyNSAwODowNjo1OSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjMg OS85XSBCbGluZCBndWVzcyBhdCBmaXhpbmcgc2VnZmF1bHQgb24gcnVubmluZyB0cGNoIHEyMgoK LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jIHwgMjI1ICsrKysrKysr KysrKysrLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYyAg IHwgICA3ICstCiBzcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMgIHwgICAzICst CiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oICAgICAgIHwgICAzICstCiA0IGZpbGVz IGNoYW5nZWQsIDEzNiBpbnNlcnRpb25zKCspLCAxMDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKaW5kZXggYzJiNzZhNWU1ZGIuLmFlZTM3Y2Y1MGQ1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKQEAgLTIzNDMsNyArMjM0Myw3IEBA IEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwg Ym9vbCAqaXNudWxsKQogCQlFRU9fQ0FTRShFRU9QX0FHR19QTEFJTl9UUkFOU19CQVRDSF9ST1dM T09QKQogCQl7CiAJCQkvKiB0b28gY29tcGxleCBmb3IgYW4gaW5saW5lIGltcGxlbWVudGF0aW9u ICovCi0JCQlFeGVjQWdnUGxhaW5UcmFuc0JhdGNoKHN0YXRlLCBvcCwgZWNvbnRleHQpOworCQkJ RXhlY0FnZ1BsYWluVHJhbnNCYXRjaFJvd2xvb3Aoc3RhdGUsIG9wLCBlY29udGV4dCk7CiAKIAkJ CUVFT19ORVhUKCk7CiAJCX0KQEAgLTIzNTEsNyArMjM1MSw4IEBAIEV4ZWNJbnRlcnBFeHByKEV4 cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQlF RU9fQ0FTRShFRU9QX0FHR19QTEFJTl9UUkFOU19CQVRDSF9ESVJFQ1QpCiAJCXsKIAkJCS8qIHRv byBjb21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVtZW50YXRpb24gKi8KLQkJCUV4ZWNBZ2dQbGFp blRyYW5zQmF0Y2goc3RhdGUsIG9wLCBlY29udGV4dCk7CisJCQlFeGVjQWdnUGxhaW5UcmFuc0Jh dGNoRGlyZWN0KHN0YXRlLCBvcCwgZWNvbnRleHQpOworCiAJCQlFRU9fTkVYVCgpOwogCQl9CiAK QEAgLTYwNzIsMTMxICs2MDczLDE1NyBAQCBFeGVjQnVpbGRCYXRjaFZlY3RvcihFeHByU3RhdGUg KnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQsCiAJYnYtPm5y b3dzID0gaTsKIH0KIAotdm9pZAotRXhlY0FnZ1BsYWluVHJhbnNCYXRjaChFeHByU3RhdGUgKnN0 YXRlLCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQpCitzdGF0aWMgYm9v bAorRXhlY0FnZ1BsYWluVHJhbnNCYXRjaEluaXRUcmFucyhFeHByU3RhdGUgKnN0YXRlLCBFeHBy RXZhbFN0ZXAgKm9wLAorCQkJCQkJCQlUdXBsZUJhdGNoICpiKQogewogCUFnZ1N0YXRlICAgKmFn Z3N0YXRlID0gY2FzdE5vZGUoQWdnU3RhdGUsIHN0YXRlLT5wYXJlbnQpOwogCUFnZ1N0YXRlUGVy VHJhbnMJcGVydHJhbnMgPSBvcC0+ZC5hZ2dfdHJhbnMucGVydHJhbnM7CiAJQWdnU3RhdGVQZXJH cm91cCBwZXJncm91cCA9CiAJCSZhZ2dzdGF0ZS0+YWxsX3Blcmdyb3Vwc1tvcC0+ZC5hZ2dfdHJh bnMuc2V0b2ZmXVtvcC0+ZC5hZ2dfdHJhbnMudHJhbnNub107CiAJQmF0Y2hWZWN0b3JTbGljZSAg KmJ2cyA9IG9wLT5kLmFnZ190cmFucy5idnM7CisJY29uc3QgQmF0Y2hWZWN0b3IgKmJ2ID0gYnZz LT5idjsKKwlpbnQJCWJhdGNoX25yb3dzID0gYnZzID8gYnZzLT5idi0+bnJvd3MgOiBiLT5udmFs aWQ7CisJYm9vbAlmb3VuZCA9IGZhbHNlOwogCUZ1bmN0aW9uQ2FsbEluZm8JZmNpbmZvID0gcGVy dHJhbnMtPnRyYW5zZm5fZmNpbmZvOwogCUZtZ3JJbmZvCQkgICAqZmluZm8gPSBmY2luZm8tPmZs aW5mbzsKLQlEYXR1bQkJbmV3VmFsOwotCVR1cGxlQmF0Y2ggKmJhdGNoID0gZWNvbnRleHQtPm91 dGVyX2JhdGNoOwotCWludAkJCWJhdGNoX25yb3dzID0gYnZzID8gYnZzLT5idi0+bnJvd3MgOiBi YXRjaC0+bnZhbGlkOwotCWludAkJCXN0YXJ0X3JvdyA9IDA7CiAKLQlpZiAoZmluZm8tPmZuX3N0 cmljdCkKKwlpZiAoIWZpbmZvLT5mbl9zdHJpY3QgfHwgYnZzID09IE5VTEwpCisJCXJldHVybiBm YWxzZTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgYmF0Y2hfbnJvd3M7IGkrKykKIAl7Ci0JCWlm IChwZXJncm91cC0+bm9UcmFuc1ZhbHVlICYmIGJ2cykKKwkJZm9yIChpbnQgaiA9IDA7IGogPCBi dnMtPm5hcmdzOyBqKyspCiAJCXsKLQkJCWNvbnN0IEJhdGNoVmVjdG9yICpidiA9IGJ2cy0+YnY7 Ci0JCQlib29sCWZvdW5kID0gZmFsc2U7Ci0KLQkJCUFzc2VydChidik7Ci0JCQlmb3IgKGludCBp ID0gMDsgaSA8IGJhdGNoX25yb3dzOyBpKyspCisJCQlpZiAoIWJ2LT5udWxsc1tidnMtPmFyZ29m ZnNbal1dW2ldKQogCQkJewotCQkJCWZvciAoaW50IGogPSAwOyBqIDwgYnZzLT5uYXJnczsgaisr KQorCQkJCWZjaW5mby0+YXJnc1sxXS52YWx1ZSA9IGJ2LT5jb2xzW2J2cy0+YXJnb2Zmc1tqXV1b aV07CisJCQkJZmNpbmZvLT5hcmdzWzFdLmlzbnVsbCA9IGZhbHNlOworCQkJCWlmIChqID09IGJ2 cy0+bmFyZ3MgLSAxKQogCQkJCXsKLQkJCQkJaWYgKCFidi0+bnVsbHNbYnZzLT5hcmdvZmZzW2pd XVtpXSkKLQkJCQkJewotCQkJCQkJZmNpbmZvLT5hcmdzWzFdLnZhbHVlID0gYnYtPmNvbHNbYnZz LT5hcmdvZmZzW2pdXVtpXTsKLQkJCQkJCWZjaW5mby0+YXJnc1sxXS5pc251bGwgPSBmYWxzZTsK LQkJCQkJCWlmIChqID09IGJ2cy0+bmFyZ3MgLSAxKQotCQkJCQkJewotCQkJCQkJCWZvdW5kID0g dHJ1ZTsKLQkJCQkJCQlicmVhazsKLQkJCQkJCX0KLQkJCQkJfQotCQkJCX0KLQkJCQlpZiAoZm91 bmQpCisJCQkJCWZvdW5kID0gdHJ1ZTsKIAkJCQkJYnJlYWs7CisJCQkJfQogCQkJfQotCQkJLyog SWYgdHJhbnNWYWx1ZSBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLCBkbyBzbyBub3cuICov Ci0JCQlFeGVjQWdnSW5pdEdyb3VwKGFnZ3N0YXRlLCBwZXJ0cmFucywgcGVyZ3JvdXAsCi0JCQkJ CQkJIG9wLT5kLmFnZ190cmFucy5hZ2djb250ZXh0KTsKLQkJCXN0YXJ0X3JvdyA9IDE7CiAJCX0K LQkJZWxzZSBpZiAocGVyZ3JvdXAtPnRyYW5zVmFsdWVJc051bGwpCisJCWlmIChmb3VuZCkKKwkJ CWJyZWFrOworCX0KKwkvKiBJZiB0cmFuc1ZhbHVlIGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6 ZWQsIGRvIHNvIG5vdy4gKi8KKwlFeGVjQWdnSW5pdEdyb3VwKGFnZ3N0YXRlLCBwZXJ0cmFucywg cGVyZ3JvdXAsCisJCQkJCSBvcC0+ZC5hZ2dfdHJhbnMuYWdnY29udGV4dCk7CisJcmV0dXJuIHRy dWU7Cit9CisKK3ZvaWQKK0V4ZWNBZ2dQbGFpblRyYW5zQmF0Y2hEaXJlY3QoRXhwclN0YXRlICpz dGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0KQoreworCUFnZ1N0 YXRlICAgKmFnZ3N0YXRlID0gY2FzdE5vZGUoQWdnU3RhdGUsIHN0YXRlLT5wYXJlbnQpOworCUFn Z1N0YXRlUGVyVHJhbnMJcGVydHJhbnMgPSBvcC0+ZC5hZ2dfdHJhbnMucGVydHJhbnM7CisJQWdn U3RhdGVQZXJHcm91cCBwZXJncm91cCA9CisJCSZhZ2dzdGF0ZS0+YWxsX3Blcmdyb3Vwc1tvcC0+ ZC5hZ2dfdHJhbnMuc2V0b2ZmXVtvcC0+ZC5hZ2dfdHJhbnMudHJhbnNub107CisJQmF0Y2hWZWN0 b3JTbGljZSAgKmJ2cyA9IG9wLT5kLmFnZ190cmFucy5idnM7CisJRnVuY3Rpb25DYWxsSW5mbwlm Y2luZm8gPSBwZXJ0cmFucy0+dHJhbnNmbl9mY2luZm87CisJRGF0dW0JCW5ld1ZhbDsKKwlUdXBs ZUJhdGNoICpiID0gZWNvbnRleHQtPm91dGVyX2JhdGNoOworCWludAkJCWJhdGNoX25yb3dzID0g YnZzID8gYnZzLT5idi0+bnJvd3MgOiBiLT5udmFsaWQ7CisJaW50CQkJc3RhcnRfcm93ID0gMDsK Kwl2b2lkCSAgICpzYXZlID0gZmNpbmZvLT5mbGluZm8tPmZuX2V4dHJhOworCUFnZ0J1bGtBcmdz IGJhID0ge2JhdGNoX25yb3dzLCBzdGFydF9yb3d9OworCisJaWYgKHBlcmdyb3VwLT5ub1RyYW5z VmFsdWUpCisJeworCQlpZiAoRXhlY0FnZ1BsYWluVHJhbnNCYXRjaEluaXRUcmFucyhzdGF0ZSwg b3AsIGIpKQorCQkJc3RhcnRfcm93ID0gMTsKKwkJZWxzZSBpZiAocGVyZ3JvdXAtPnRyYW5zVmFs dWVJc051bGwgJiYgZmNpbmZvLT5mbGluZm8tPmZuX3N0cmljdCkKIAkJCXJldHVybjsKIAl9CiAK LQlzd2l0Y2ggKEV4ZWNFdmFsU3RlcE9wKHN0YXRlLCBvcCkpCisJaWYgKGJ2cykKIAl7Ci0JCWNh c2UgRUVPUF9BR0dfUExBSU5fVFJBTlNfQkFUQ0hfUk9XTE9PUDoKLQkJCS8qIExvb3Agcm93cywg Y2FsbCB0aGUgb3JpZ2luYWwgdHJhbnNmbiBwZXIgZWxlbWVudCB1c2luZyB2ZWN0b3IgY29scy4g Ki8KLQkJCWZvciAoaW50IGkgPSBzdGFydF9yb3c7IGkgPCBiYXRjaF9ucm93czsgaSsrKQotCQkJ ewotCQkJCWJvb2wgaGFzbnVsbCA9IGZhbHNlOworCQljb25zdCBCYXRjaFZlY3RvciAqYnYgPSBi dnMtPmJ2OworCisJCUFzc2VydChidik7CisJCWJhLm5hcmdzID0gYnZzLT5uYXJnczsKKwkJYmEu YXJnb2ZmcyA9IGJ2cy0+YXJnb2ZmczsKKwkJYmEuYXJncyA9IGJ2LT5jb2xzOworCQliYS5pc251 bGwgPSBidi0+bnVsbHM7CisJCWJhLmhhc251bGwgPSBidi0+aGFzbnVsbDsKKwl9CisJZmNpbmZv LT5mbGluZm8tPmZuX2V4dHJhID0gJmJhOworCWZjaW5mby0+YXJnc1swXS52YWx1ZSA9IHBlcmdy b3VwLT50cmFuc1ZhbHVlOworCWZjaW5mby0+YXJnc1swXS5pc251bGwgPSBwZXJncm91cC0+dHJh bnNWYWx1ZUlzTnVsbDsKKwlmY2luZm8tPmlzbnVsbCA9IGZhbHNlOwkJLyoganVzdCBpbiBjYXNl IHRyYW5zZm4gZG9lc24ndCBzZXQgaXQgKi8KKwluZXdWYWwgPSBGdW5jdGlvbkNhbGxJbnZva2Uo ZmNpbmZvKTsgICAvKiBvbmUgY2FsbCBmb3IgdGhlIGVudGlyZSBzbGljZSAqLworCWlmICghcGVy dHJhbnMtPnRyYW5zdHlwZUJ5VmFsICYmCisJCURhdHVtR2V0UG9pbnRlcihuZXdWYWwpICE9IERh dHVtR2V0UG9pbnRlcihwZXJncm91cC0+dHJhbnNWYWx1ZSkpCisJCW5ld1ZhbCA9IEV4ZWNBZ2dD b3B5VHJhbnNWYWx1ZShhZ2dzdGF0ZSwgcGVydHJhbnMsCisJCQkJCQkJCQkgICBuZXdWYWwsIGZj aW5mby0+aXNudWxsLAorCQkJCQkJCQkJICAgcGVyZ3JvdXAtPnRyYW5zVmFsdWUsCisJCQkJCQkJ CQkgICBwZXJncm91cC0+dHJhbnNWYWx1ZUlzTnVsbCk7CisJcGVyZ3JvdXAtPnRyYW5zVmFsdWUg PSBuZXdWYWw7CisJcGVyZ3JvdXAtPnRyYW5zVmFsdWVJc051bGwgPSBmY2luZm8tPmlzbnVsbDsK KwlmY2luZm8tPmZsaW5mby0+Zm5fZXh0cmEgPSBzYXZlOworfQogCi0JCQkJLyogU2V0IHVwIGZj aW5mbyBhcmdzIDEuLm0gZnJvbSBjb2x1bW4gdmVjdG9ycyBhdCByb3cgaS4gKi8KLQkJCQlpZiAo YnZzKQotCQkJCXsKLQkJCQkJY29uc3QgQmF0Y2hWZWN0b3IgKmJ2ID0gYnZzLT5idjsKK3ZvaWQK K0V4ZWNBZ2dQbGFpblRyYW5zQmF0Y2hSb3dsb29wKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFs U3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCkKK3sKKwlBZ2dTdGF0ZSAgICphZ2dzdGF0 ZSA9IGNhc3ROb2RlKEFnZ1N0YXRlLCBzdGF0ZS0+cGFyZW50KTsKKwlBZ2dTdGF0ZVBlclRyYW5z CXBlcnRyYW5zID0gb3AtPmQuYWdnX3RyYW5zLnBlcnRyYW5zOworCUFnZ1N0YXRlUGVyR3JvdXAg cGVyZ3JvdXAgPQorCQkmYWdnc3RhdGUtPmFsbF9wZXJncm91cHNbb3AtPmQuYWdnX3RyYW5zLnNl dG9mZl1bb3AtPmQuYWdnX3RyYW5zLnRyYW5zbm9dOworCUJhdGNoVmVjdG9yU2xpY2UgICpidnMg PSBvcC0+ZC5hZ2dfdHJhbnMuYnZzOworCUZ1bmN0aW9uQ2FsbEluZm8JZmNpbmZvID0gcGVydHJh bnMtPnRyYW5zZm5fZmNpbmZvOworCUZtZ3JJbmZvCQkgICAqZmluZm8gPSBmY2luZm8tPmZsaW5m bzsKKwlEYXR1bQkJbmV3VmFsOworCVR1cGxlQmF0Y2ggKmIgPSBlY29udGV4dC0+b3V0ZXJfYmF0 Y2g7CisJaW50CQkJYmF0Y2hfbnJvd3MgPSBidnMgPyBidnMtPmJ2LT5ucm93cyA6IGItPm52YWxp ZDsKKwlpbnQJCQlzdGFydF9yb3cgPSAwOwogCi0JCQkJCWZvciAoaW50IGogPSAwOyBqIDwgYnZz LT5uYXJnczsgaisrKQotCQkJCQl7Ci0JCQkJCQlpbnQxNglhcmdvZmYgPSBidnMtPmFyZ29mZnNb al07CisJaWYgKHBlcmdyb3VwLT5ub1RyYW5zVmFsdWUpCisJeworCQlpZiAoRXhlY0FnZ1BsYWlu VHJhbnNCYXRjaEluaXRUcmFucyhzdGF0ZSwgb3AsIGIpKQorCQkJc3RhcnRfcm93ID0gMTsKKwkJ ZWxzZSBpZiAocGVyZ3JvdXAtPnRyYW5zVmFsdWVJc051bGwgJiYgZmNpbmZvLT5mbGluZm8tPmZu X3N0cmljdCkKKwkJCXJldHVybjsKKwl9CiAKLQkJCQkJCWZjaW5mby0+YXJnc1tqKzFdLnZhbHVl ID0gYnYtPmNvbHNbYXJnb2ZmXVtpXTsKLQkJCQkJCWZjaW5mby0+YXJnc1tqKzFdLmlzbnVsbCA9 IGJ2LT5udWxsc1thcmdvZmZdW2ldOwotCQkJCQkJaWYgKCFoYXNudWxsICYmIGJ2LT5udWxsc1th cmdvZmZdW2ldKQotCQkJCQkJCWhhc251bGwgPSB0cnVlOwotCQkJCQl9Ci0JCQkJfQotCQkJCS8q IGZjaW5mby0+YXJnc1swXSBpcyB0aGUgZXhpc3RpbmcgdHJhbnNpdGlvbiBzdGF0ZSAqLwotCQkJ CWlmIChmaW5mby0+Zm5fc3RyaWN0ICYmIGhhc251bGwpCi0JCQkJCWNvbnRpbnVlOwotCQkJCWZj aW5mby0+YXJnc1swXS52YWx1ZSA9IHBlcmdyb3VwLT50cmFuc1ZhbHVlOwotCQkJCWZjaW5mby0+ YXJnc1swXS5pc251bGwgPSBwZXJncm91cC0+dHJhbnNWYWx1ZUlzTnVsbDsKLQkJCQluZXdWYWwg PSBGdW5jdGlvbkNhbGxJbnZva2UoZmNpbmZvKTsKLQkJCQlpZiAoIXBlcnRyYW5zLT50cmFuc3R5 cGVCeVZhbCAmJgotCQkJCQlEYXR1bUdldFBvaW50ZXIobmV3VmFsKSAhPSBEYXR1bUdldFBvaW50 ZXIocGVyZ3JvdXAtPnRyYW5zVmFsdWUpKQotCQkJCQluZXdWYWwgPSBFeGVjQWdnQ29weVRyYW5z VmFsdWUoYWdnc3RhdGUsIHBlcnRyYW5zLAotCQkJCQkJCQkJCQkJICAgbmV3VmFsLCBmY2luZm8t PmlzbnVsbCwKLQkJCQkJCQkJCQkJCSAgIHBlcmdyb3VwLT50cmFuc1ZhbHVlLAotCQkJCQkJCQkJ CQkJICAgcGVyZ3JvdXAtPnRyYW5zVmFsdWVJc051bGwpOwotCQkJCXBlcmdyb3VwLT50cmFuc1Zh bHVlID0gbmV3VmFsOwotCQkJCXBlcmdyb3VwLT50cmFuc1ZhbHVlSXNOdWxsID0gZmNpbmZvLT5p c251bGw7Ci0JCQl9Ci0JCQlicmVhazsKKwkvKiBMb29wIHJvd3MsIGNhbGwgdGhlIG9yaWdpbmFs IHRyYW5zZm4gcGVyIGVsZW1lbnQgdXNpbmcgdmVjdG9yIGNvbHMuICovCisJZm9yIChpbnQgaSA9 IHN0YXJ0X3JvdzsgaSA8IGJhdGNoX25yb3dzOyBpKyspCisJeworCQlib29sIGhhc251bGwgPSBm YWxzZTsKIAotCQljYXNlIEVFT1BfQUdHX1BMQUlOX1RSQU5TX0JBVENIX0RJUkVDVDoKKwkJLyog U2V0IHVwIGZjaW5mbyBhcmdzIDEuLm0gZnJvbSBjb2x1bW4gdmVjdG9ycyBhdCByb3cgaS4gKi8K KwkJaWYgKGJ2cykKKwkJeworCQkJY29uc3QgQmF0Y2hWZWN0b3IgKmJ2ID0gYnZzLT5idjsKKwor CQkJZm9yIChpbnQgaiA9IDA7IGogPCBidnMtPm5hcmdzOyBqKyspCiAJCQl7Ci0JCQkJdm9pZCAq c2F2ZSA9IGZjaW5mby0+ZmxpbmZvLT5mbl9leHRyYTsKLQkJCQlBZ2dCdWxrQXJncyBiYSA9IHti YXRjaF9ucm93cywgc3RhcnRfcm93fTsKKwkJCQlpbnQxNglhcmdvZmYgPSBidnMtPmFyZ29mZnNb al07CiAKLQkJCQlpZiAoYnZzKQotCQkJCXsKLQkJCQkJY29uc3QgQmF0Y2hWZWN0b3IgKmJ2ID0g YnZzLT5idjsKLQotCQkJCQlBc3NlcnQoYnYpOwotCQkJCQliYS5uYXJncyA9IGJ2cy0+bmFyZ3M7 Ci0JCQkJCWJhLmFyZ29mZnMgPSBidnMtPmFyZ29mZnM7Ci0JCQkJCWJhLmFyZ3MgPSBidi0+Y29s czsKLQkJCQkJYmEuaXNudWxsID0gYnYtPm51bGxzOwotCQkJCQliYS5oYXNudWxsID0gYnYtPmhh c251bGw7Ci0JCQkJfQotCQkJCWZjaW5mby0+ZmxpbmZvLT5mbl9leHRyYSA9ICZiYTsKLQkJCQlm Y2luZm8tPmFyZ3NbMF0udmFsdWUgPSBwZXJncm91cC0+dHJhbnNWYWx1ZTsKLQkJCQlmY2luZm8t PmFyZ3NbMF0uaXNudWxsID0gcGVyZ3JvdXAtPnRyYW5zVmFsdWVJc051bGw7Ci0JCQkJZmNpbmZv LT5pc251bGwgPSBmYWxzZTsJCS8qIGp1c3QgaW4gY2FzZSB0cmFuc2ZuIGRvZXNuJ3Qgc2V0IGl0 ICovCi0JCQkJbmV3VmFsID0gRnVuY3Rpb25DYWxsSW52b2tlKGZjaW5mbyk7ICAgLyogb25lIGNh bGwgZm9yIHRoZSBlbnRpcmUgc2xpY2UgKi8KLQkJCQlpZiAoIXBlcnRyYW5zLT50cmFuc3R5cGVC eVZhbCAmJgotCQkJCQlEYXR1bUdldFBvaW50ZXIobmV3VmFsKSAhPSBEYXR1bUdldFBvaW50ZXIo cGVyZ3JvdXAtPnRyYW5zVmFsdWUpKQotCQkJCQluZXdWYWwgPSBFeGVjQWdnQ29weVRyYW5zVmFs dWUoYWdnc3RhdGUsIHBlcnRyYW5zLAotCQkJCQkJCQkJCQkJICAgbmV3VmFsLCBmY2luZm8tPmlz bnVsbCwKLQkJCQkJCQkJCQkJCSAgIHBlcmdyb3VwLT50cmFuc1ZhbHVlLAotCQkJCQkJCQkJCQkJ ICAgcGVyZ3JvdXAtPnRyYW5zVmFsdWVJc051bGwpOwotCQkJCXBlcmdyb3VwLT50cmFuc1ZhbHVl ID0gbmV3VmFsOwotCQkJCXBlcmdyb3VwLT50cmFuc1ZhbHVlSXNOdWxsID0gZmNpbmZvLT5pc251 bGw7Ci0JCQkJZmNpbmZvLT5mbGluZm8tPmZuX2V4dHJhID0gc2F2ZTsKKwkJCQlmY2luZm8tPmFy Z3NbaisxXS52YWx1ZSA9IGJ2LT5jb2xzW2FyZ29mZl1baV07CisJCQkJZmNpbmZvLT5hcmdzW2or MV0uaXNudWxsID0gYnYtPm51bGxzW2FyZ29mZl1baV07CisJCQkJaWYgKCFoYXNudWxsICYmIGJ2 LT5udWxsc1thcmdvZmZdW2ldKQorCQkJCQloYXNudWxsID0gdHJ1ZTsKIAkJCX0KLQkJCWJyZWFr OworCQl9CiAKLQkJZGVmYXVsdDoKLQkJCWVsb2coRVJST1IsICJpbnZhbGlkIEV4cHJFdmFsT3Ag aW4gRXhlY0FnZ1BsYWluVHJhbnNCYXRjaCgpIik7CisJCWlmIChmaW5mby0+Zm5fc3RyaWN0ICYm IGhhc251bGwpCisJCQljb250aW51ZTsKKwkJLyogZmNpbmZvLT5hcmdzWzBdIGlzIHRoZSBleGlz dGluZyB0cmFuc2l0aW9uIHN0YXRlICovCisJCWZjaW5mby0+YXJnc1swXS52YWx1ZSA9IHBlcmdy b3VwLT50cmFuc1ZhbHVlOworCQlmY2luZm8tPmFyZ3NbMF0uaXNudWxsID0gcGVyZ3JvdXAtPnRy YW5zVmFsdWVJc051bGw7CisJCW5ld1ZhbCA9IEZ1bmN0aW9uQ2FsbEludm9rZShmY2luZm8pOwor CQlpZiAoIXBlcnRyYW5zLT50cmFuc3R5cGVCeVZhbCAmJgorCQkJRGF0dW1HZXRQb2ludGVyKG5l d1ZhbCkgIT0gRGF0dW1HZXRQb2ludGVyKHBlcmdyb3VwLT50cmFuc1ZhbHVlKSkKKwkJCW5ld1Zh bCA9IEV4ZWNBZ2dDb3B5VHJhbnNWYWx1ZShhZ2dzdGF0ZSwgcGVydHJhbnMsCisJCQkJCQkJCQkJ ICAgbmV3VmFsLCBmY2luZm8tPmlzbnVsbCwKKwkJCQkJCQkJCQkgICBwZXJncm91cC0+dHJhbnNW YWx1ZSwKKwkJCQkJCQkJCQkgICBwZXJncm91cC0+dHJhbnNWYWx1ZUlzTnVsbCk7CisJCXBlcmdy b3VwLT50cmFuc1ZhbHVlID0gbmV3VmFsOworCQlwZXJncm91cC0+dHJhbnNWYWx1ZUlzTnVsbCA9 IGZjaW5mby0+aXNudWxsOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xs dm0vbGx2bWppdF9leHByLmMgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwpp bmRleCBiOTdkNWZhZWJkZS4uMmQxYzgyNTlkMWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2pp dC9sbHZtL2xsdm1qaXRfZXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRf ZXhwci5jCkBAIC0zMDI3LDggKzMwMjcsMTMgQEAgbGx2bV9jb21waWxlX2V4cHIoRXhwclN0YXRl ICpzdGF0ZSkKIAkJCQlicmVhazsKIAogCQkJY2FzZSBFRU9QX0FHR19QTEFJTl9UUkFOU19CQVRD SF9ESVJFQ1Q6CisJCQkJYnVpbGRfRXZhbFhGdW5jKGIsIG1vZCwgIkV4ZWNBZ2dQbGFpblRyYW5z QmF0Y2hEaXJlY3QiLAorCQkJCQkJCQl2X3N0YXRlLCBvcCwgdl9lY29udGV4dCk7CisJCQkJTExW TUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBF RU9QX0FHR19QTEFJTl9UUkFOU19CQVRDSF9ST1dMT09QOgotCQkJCWJ1aWxkX0V2YWxYRnVuYyhi LCBtb2QsICJFeGVjQWdnUGxhaW5UcmFuc0JhdGNoIiwKKwkJCQlidWlsZF9FdmFsWEZ1bmMoYiwg bW9kLCAiRXhlY0FnZ1BsYWluVHJhbnNCYXRjaFJvd2xvb3AiLAogCQkJCQkJCQl2X3N0YXRlLCBv cCwgdl9lY29udGV4dCk7CiAJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsK IAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlw ZXMuYyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYwppbmRleCBmNGY3NTZl N2NiNS4uMmNmM2E2MGJlNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1q aXRfdHlwZXMuYworKysgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMKQEAg LTE4Niw3ICsxODYsOCBAQCB2b2lkCSAgICpyZWZlcmVuY2VkX2Z1bmN0aW9uc1tdID0KIAlFeGVj QnVpbGRJbm5lckJhdGNoVmVjdG9yLAogCUV4ZWNCdWlsZE91dGVyQmF0Y2hWZWN0b3IsCiAJRXhl Y0J1aWxkU2NhbkJhdGNoVmVjdG9yLAotCUV4ZWNBZ2dQbGFpblRyYW5zQmF0Y2gsCisJRXhlY0Fn Z1BsYWluVHJhbnNCYXRjaERpcmVjdCwKKwlFeGVjQWdnUGxhaW5UcmFuc0JhdGNoUm93bG9vcCwK IAlFeGVjUXVhbEJhdGNoSW5pdE1hc2ssCiAJRXhlY1F1YWxCYXRjaFRlcm0sCiB9OwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWNFeHByLmgKaW5kZXggZjUwOTM2YWNhYWEuLmEzMzE0ZmZkMGM5IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWNFeHByLmgKQEAgLTk5Myw3ICs5OTMsOCBAQCBleHRlcm4gdm9pZCBFeGVjQnVpbGRJ bm5lckJhdGNoVmVjdG9yKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJD bwogZXh0ZXJuIHZvaWQgRXhlY0J1aWxkT3V0ZXJCYXRjaFZlY3RvcihFeHByU3RhdGUgKnN0YXRl LCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4dCAqZWNvbnRleHQpOwogZXh0ZXJuIHZvaWQg RXhlY0J1aWxkU2NhbkJhdGNoVmVjdG9yKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAq b3AsIEV4cHJDb250ZXh0ICplY29udGV4dCk7CiAKLWV4dGVybiB2b2lkIEV4ZWNBZ2dQbGFpblRy YW5zQmF0Y2goRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQg KmVjb250ZXh0KTsKK2V4dGVybiB2b2lkIEV4ZWNBZ2dQbGFpblRyYW5zQmF0Y2hEaXJlY3QoRXhw clN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0KTsK K2V4dGVybiB2b2lkIEV4ZWNBZ2dQbGFpblRyYW5zQmF0Y2hSb3dsb29wKEV4cHJTdGF0ZSAqc3Rh dGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCk7CiAKIC8qIFNlZSBF eGVjUXVhbEJhdGNoVGVybSgpLiAqLwogdHlwZWRlZiBlbnVtIEJhdGNoUXVhbFRlcm1LaW5kCi0t IAoyLjQ3LjMKCg== --00000000000006d2b20640c83360 Content-Type: application/octet-stream; name="v3-0005-WIP-Add-EEOPs-and-helpers-for-TupleBatch-processi.patch" Content-Disposition: attachment; filename="v3-0005-WIP-Add-EEOPs-and-helpers-for-TupleBatch-processi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgkh6mbd4 RnJvbSBmMzIzOWVkNmMwZjE5NmJlNWI0OTVhNTg2ZTZiMzkwNDY1ZDAzMjZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IE1vbiwgMjIgU2VwIDIwMjUgMTc6MDE6MjkgKzA5MDAKU3ViamVjdDogW1BBVENIIHYz IDUvOV0gV0lQOiBBZGQgRUVPUHMgYW5kIGhlbHBlcnMgZm9yIFR1cGxlQmF0Y2ggcHJvY2Vzc2lu ZwoKSW50cm9kdWNlIG5ldyBFRU9QIGNhc2VzIHRvIGZldGNoIGF0dHJpYnV0ZXMgaW50byBUdXBs ZUJhdGNoCnZlY3RvcnM6Ci0gRUVPUF97SU5ORVIsT1VURVIsU0NBTn1fRkVUQ0hTT01FX0JBVENI Ci0gRUVPUF9CVUlMRF97SU5ORVIsT1VURVIsU0NBTn1fQkFUQ0hfVkVDVE9SCgpBZGQgRXhlY0J1 aWxke0lubmVyLE91dGVyLFNjYW59QmF0Y2hWZWN0b3IoKSBoZWxwZXJzIHRvIHBvcHVsYXRlCmNv bHVtbiB2ZWN0b3JzICh2YWx1ZXMsIG51bGxzLCBucm93cywgaGFzbnVsbCkgZnJvbSBhIFR1cGxl QmF0Y2guCkV4dGVuZCBFeHByQ29udGV4dCB3aXRoIGlubmVyX2JhdGNoLCBvdXRlcl9iYXRjaCwg YW5kIHNjYW5fYmF0Y2gKZmllbGRzIHNvIGV4cHJlc3Npb24gcHJvZ3JhbXMgY2FuIGFjY2VzcyBh Y3RpdmUgYmF0Y2hlcyBkaXJlY3RseS4KCkFkZCBzbG90X2dldHNvbWVhdHRyc19iYXRjaCgpIHRv IHByZWZldGNoIGF0dHJpYnV0ZXMgYWNyb3NzIGFsbApzbG90cyBpbiBhIFR1cGxlQmF0Y2gsIHNp bWlsYXIgdG8gc2xvdF9nZXRzb21lYXR0cnMoKSBmb3Igb25lIHNsb3QuCi0tLQogc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyB8IDEyNyArKysrKysrKysrKysrKysrKysrKysr KysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jICAgICB8ICAzMiArKysrKysr CiBzcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYyAgIHwgIDg2ICsrKysrKysrKysr KysrKysrCiBzcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMgIHwgICA0ICsKIHNy Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmggICAgICAgfCAgNDUgKysrKysrKystCiBzcmMv aW5jbHVkZS9leGVjdXRvci90dXB0YWJsZS5oICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oICAgICAgICAgfCAgMjQgKysrLS0KIDcgZmlsZXMgY2hhbmdlZCwgMzEw IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhw ckludGVycC5jCmluZGV4IDBlMWE3NDk3NmY3Li42ODYyOWFkNzk5MSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjRXhwckludGVycC5jCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiYWNjZXNz L2hlYXB0b2FzdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNv bW1hbmRzL3NlcXVlbmNlLmgiCisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY0JhdGNoLmgiCiAjaW5j bHVkZSAiZXhlY3V0b3IvZXhlY0V4cHIuaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlU3VicGxh bi5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTE4OCw2ICsxODksMTEgQEAgc3RhdGljIHBn X2F0dHJpYnV0ZV9hbHdheXNfaW5saW5lIHZvaWQgRXhlY0FnZ1BsYWluVHJhbnNCeVJlZihBZ2dT dGF0ZSAqYWdnc3RhdGUKIAkJCQkJCQkJCQkJCQkJCSAgaW50IHNldG5vKTsKIHN0YXRpYyBjaGFy ICpFeGVjR2V0SnNvblZhbHVlSXRlbVN0cmluZyhKc29uYlZhbHVlICppdGVtLCBib29sICpyZXNu dWxsKTsKIAorc3RhdGljIHBnX2F0dHJpYnV0ZV9hbHdheXNfaW5saW5lIHZvaWQgRXhlY0J1aWxk QmF0Y2hWZWN0b3IoRXhwclN0YXRlICpzdGF0ZSwKKwkJCQkJCQkJCQkJCQkJCUV4cHJFdmFsU3Rl cCAqb3AsCisJCQkJCQkJCQkJCQkJCQlFeHByQ29udGV4dCAqZWNvbnRleHQsCisJCQkJCQkJCQkJ CQkJCQlUdXBsZUJhdGNoICpiKTsKKwogLyoKICAqIFNjYWxhckFycmF5T3BFeHBySGFzaEVudHJ5 CiAgKiAJCUhhc2ggdGFibGUgZW50cnkgdHlwZSB1c2VkIGR1cmluZyBFRU9QX0hBU0hFRF9TQ0FM QVJBUlJBWU9QCkBAIC00NDYsNyArNDUyLDYgQEAgRXhlY1JlYWR5SW50ZXJwcmV0ZWRFeHByKEV4 cHJTdGF0ZSAqc3RhdGUpCiAJc3RhdGUtPmV2YWxmdW5jX3ByaXZhdGUgPSBFeGVjSW50ZXJwRXhw cjsKIH0KIAotCiAvKgogICogRXZhbHVhdGUgZXhwcmVzc2lvbiBpZGVudGlmaWVkIGJ5ICJzdGF0 ZSIgaW4gdGhlIGV4ZWN1dGlvbiBjb250ZXh0CiAgKiBnaXZlbiBieSAiZWNvbnRleHQiLiAgKmlz bnVsbCBpcyBzZXQgdG8gdGhlIGlzLW51bGwgZmxhZyBmb3IgdGhlIHJlc3VsdCwKQEAgLTQ2Niw2 ICs0NzEsOSBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4dCAq ZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAlUdXBsZVRhYmxlU2xvdCAqc2NhbnNsb3Q7CiAJVHVw bGVUYWJsZVNsb3QgKm9sZHNsb3Q7CiAJVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3Q7CisJVHVwbGVC YXRjaCAqaW5uZXJiYXRjaDsKKwlUdXBsZUJhdGNoICpvdXRlcmJhdGNoOworCVR1cGxlQmF0Y2gg KnNjYW5iYXRjaDsKIAogCS8qCiAJICogVGhpcyBhcnJheSBoYXMgdG8gYmUgaW4gdGhlIHNhbWUg b3JkZXIgYXMgZW51bSBFeHByRXZhbE9wLgpAQCAtNDc5LDYgKzQ4Nyw5IEBAIEV4ZWNJbnRlcnBF eHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxs KQogCQkmJkNBU0VfRUVPUF9TQ0FOX0ZFVENIU09NRSwKIAkJJiZDQVNFX0VFT1BfT0xEX0ZFVENI U09NRSwKIAkJJiZDQVNFX0VFT1BfTkVXX0ZFVENIU09NRSwKKwkJJiZDQVNFX0VFT1BfSU5ORVJf RkVUQ0hTT01FX0JBVENILAorCQkmJkNBU0VfRUVPUF9PVVRFUl9GRVRDSFNPTUVfQkFUQ0gsCisJ CSYmQ0FTRV9FRU9QX1NDQU5fRkVUQ0hTT01FX0JBVENILAogCQkmJkNBU0VfRUVPUF9JTk5FUl9W QVIsCiAJCSYmQ0FTRV9FRU9QX09VVEVSX1ZBUiwKIAkJJiZDQVNFX0VFT1BfU0NBTl9WQVIsCkBA IC01OTIsNiArNjAzLDkgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckNv bnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCSYmQ0FTRV9FRU9QX0FHR19QUkVTT1JU RURfRElTVElOQ1RfTVVMVEksCiAJCSYmQ0FTRV9FRU9QX0FHR19PUkRFUkVEX1RSQU5TX0RBVFVN LAogCQkmJkNBU0VfRUVPUF9BR0dfT1JERVJFRF9UUkFOU19UVVBMRSwKKwkJJiZDQVNFX0VFT1Bf QlVJTERfSU5ORVJfQkFUQ0hfVkVDVE9SLAorCQkmJkNBU0VfRUVPUF9CVUlMRF9PVVRFUl9CQVRD SF9WRUNUT1IsCisJCSYmQ0FTRV9FRU9QX0JVSUxEX1NDQU5fQkFUQ0hfVkVDVE9SLAogCQkmJkNB U0VfRUVPUF9MQVNUCiAJfTsKIApAQCAtNjEyLDYgKzYyNiw5IEBAIEV4ZWNJbnRlcnBFeHByKEV4 cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCXNj YW5zbG90ID0gZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlOwogCW9sZHNsb3QgPSBlY29udGV4dC0+ ZWN4dF9vbGR0dXBsZTsKIAluZXdzbG90ID0gZWNvbnRleHQtPmVjeHRfbmV3dHVwbGU7CisJaW5u ZXJiYXRjaCA9IGVjb250ZXh0LT5pbm5lcl9iYXRjaDsKKwlvdXRlcmJhdGNoID0gZWNvbnRleHQt Pm91dGVyX2JhdGNoOworCXNjYW5iYXRjaCA9IGVjb250ZXh0LT5zY2FuX2JhdGNoOwogCiAjaWYg ZGVmaW5lZChFRU9fVVNFX0NPTVBVVEVEX0dPVE8pCiAJRUVPX0RJU1BBVENIKCk7CkBAIC02NTgs NiArNjc1LDM2IEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJTdGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0 ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkJRUVPX05FWFQoKTsKIAkJfQogCisJCUVFT19D QVNFKEVFT1BfSU5ORVJfRkVUQ0hTT01FX0JBVENIKQorCQl7CisJCQlDaGVja09wU2xvdENvbXBh dGliaWxpdHkob3AsIGlubmVyc2xvdCk7CisKKwkJCUFzc2VydChpbm5lcmJhdGNoKTsKKwkJCXNs b3RfZ2V0c29tZWF0dHJzX2JhdGNoKGlubmVyYmF0Y2gsIG9wLT5kLmZldGNoX2JhdGNoLmxhc3Rf dmFyKTsKKworCQkJRUVPX05FWFQoKTsKKwkJfQorCisJCUVFT19DQVNFKEVFT1BfT1VURVJfRkVU Q0hTT01FX0JBVENIKQorCQl7CisJCQlDaGVja09wU2xvdENvbXBhdGliaWxpdHkob3AsIG91dGVy c2xvdCk7CisKKwkJCUFzc2VydChvdXRlcmJhdGNoKTsKKwkJCXNsb3RfZ2V0c29tZWF0dHJzX2Jh dGNoKG91dGVyYmF0Y2gsIG9wLT5kLmZldGNoX2JhdGNoLmxhc3RfdmFyKTsKKworCQkJRUVPX05F WFQoKTsKKwkJfQorCisJCUVFT19DQVNFKEVFT1BfU0NBTl9GRVRDSFNPTUVfQkFUQ0gpCisJCXsK KwkJCUNoZWNrT3BTbG90Q29tcGF0aWJpbGl0eShvcCwgc2NhbnNsb3QpOworCisJCQlBc3NlcnQo c2NhbmJhdGNoKTsKKwkJCXNsb3RfZ2V0c29tZWF0dHJzX2JhdGNoKHNjYW5iYXRjaCwgb3AtPmQu ZmV0Y2hfYmF0Y2gubGFzdF92YXIpOworCisJCQlFRU9fTkVYVCgpOworCQl9CisKIAkJRUVPX0NB U0UoRUVPUF9PTERfRkVUQ0hTT01FKQogCQl7CiAJCQlDaGVja09wU2xvdENvbXBhdGliaWxpdHko b3AsIG9sZHNsb3QpOwpAQCAtMjI2NSw2ICsyMzEyLDMwIEBAIEV4ZWNJbnRlcnBFeHByKEV4cHJT dGF0ZSAqc3RhdGUsIEV4cHJDb250ZXh0ICplY29udGV4dCwgYm9vbCAqaXNudWxsKQogCQkJRUVP X05FWFQoKTsKIAkJfQogCisJCUVFT19DQVNFKEVFT1BfQlVJTERfSU5ORVJfQkFUQ0hfVkVDVE9S KQorCQl7CisJCQkvKiB0b28gY29tcGxleCBmb3IgYW4gaW5saW5lIGltcGxlbWVudGF0aW9uICov CisJCQlFeGVjQnVpbGRJbm5lckJhdGNoVmVjdG9yKHN0YXRlLCBvcCwgZWNvbnRleHQpOworCisJ CQlFRU9fTkVYVCgpOworCQl9CisKKwkJRUVPX0NBU0UoRUVPUF9CVUlMRF9PVVRFUl9CQVRDSF9W RUNUT1IpCisJCXsKKwkJCS8qIHRvbyBjb21wbGV4IGZvciBhbiBpbmxpbmUgaW1wbGVtZW50YXRp b24gKi8KKwkJCUV4ZWNCdWlsZE91dGVyQmF0Y2hWZWN0b3Ioc3RhdGUsIG9wLCBlY29udGV4dCk7 CisKKwkJCUVFT19ORVhUKCk7CisJCX0KKworCQlFRU9fQ0FTRShFRU9QX0JVSUxEX1NDQU5fQkFU Q0hfVkVDVE9SKQorCQl7CisJCQkvKiB0b28gY29tcGxleCBmb3IgYW4gaW5saW5lIGltcGxlbWVu dGF0aW9uICovCisJCQlFeGVjQnVpbGRTY2FuQmF0Y2hWZWN0b3Ioc3RhdGUsIG9wLCBlY29udGV4 dCk7CisKKwkJCUVFT19ORVhUKCk7CisJCX0KKwogCQlFRU9fQ0FTRShFRU9QX0xBU1QpCiAJCXsK IAkJCS8qIHVucmVhY2hhYmxlICovCkBAIC01OTE0LDMgKzU5ODUsNTcgQEAgRXhlY0FnZ1BsYWlu VHJhbnNCeVJlZihBZ2dTdGF0ZSAqYWdnc3RhdGUsIEFnZ1N0YXRlUGVyVHJhbnMgcGVydHJhbnMs CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ29udGV4dCk7CiB9CisKK3ZvaWQKK0V4ZWNC dWlsZElubmVyQmF0Y2hWZWN0b3IoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwg RXhwckNvbnRleHQgKmVjb250ZXh0KQoreworCUFzc2VydChlY29udGV4dC0+aW5uZXJfYmF0Y2gp OworCUV4ZWNCdWlsZEJhdGNoVmVjdG9yKHN0YXRlLCBvcCwgZWNvbnRleHQsIGVjb250ZXh0LT5p bm5lcl9iYXRjaCk7Cit9CisKK3ZvaWQKK0V4ZWNCdWlsZE91dGVyQmF0Y2hWZWN0b3IoRXhwclN0 YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0KQorewor CUFzc2VydChlY29udGV4dC0+b3V0ZXJfYmF0Y2gpOworCUV4ZWNCdWlsZEJhdGNoVmVjdG9yKHN0 YXRlLCBvcCwgZWNvbnRleHQsIGVjb250ZXh0LT5vdXRlcl9iYXRjaCk7Cit9CisKK3ZvaWQKK0V4 ZWNCdWlsZFNjYW5CYXRjaFZlY3RvcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9w LCBFeHByQ29udGV4dCAqZWNvbnRleHQpCit7CisJQXNzZXJ0KGVjb250ZXh0LT5zY2FuX2JhdGNo KTsKKwlFeGVjQnVpbGRCYXRjaFZlY3RvcihzdGF0ZSwgb3AsIGVjb250ZXh0LCBlY29udGV4dC0+ c2Nhbl9iYXRjaCk7Cit9CisKK3N0YXRpYyBwZ19hdHRyaWJ1dGVfYWx3YXlzX2lubGluZSB2b2lk CitFeGVjQnVpbGRCYXRjaFZlY3RvcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9w LCBFeHByQ29udGV4dCAqZWNvbnRleHQsCisJCQkJCSBUdXBsZUJhdGNoICpiKQoreworCXN0cnVj dCBCYXRjaFZlY3RvciAqYnYgPSBvcC0+ZC5iYXRjaF92ZWN0b3IuYnY7CisJaW50CQlpID0gMDsK KworCWlmIChidi0+bmNvbHMgPT0gMCkKKwkJcmV0dXJuOworCisJLyogRmV0Y2ggZWFjaCByZXF1 ZXN0ZWQgYXR0cmlidXRlIGludG8gY29sdW1uIHZlY3RvcnMuICovCisJVHVwbGVCYXRjaFJld2lu ZChiKTsKKwl3aGlsZSAoVHVwbGVCYXRjaEhhc01vcmUoYikpCisJeworCQlUdXBsZVRhYmxlU2xv dCAqc2xvdCA9IFR1cGxlQmF0Y2hHZXROZXh0U2xvdChiKTsKKworCQlmb3IgKGludCBqID0gMDsg aiA8IGJ2LT5uY29sczsgaisrKQorCQl7CisJCQlBdHRyTnVtYmVyIGF0dG5vID0gYnYtPmF0dG5v c1tqXTsKKwkJCURhdHVtICAqY29scyAgPSBidi0+Y29sc1tqXTsKKwkJCWJvb2wgICAqbnVsbHMg ID0gYnYtPm51bGxzW2pdOworCisJCQlBc3NlcnQoYXR0bm8gPD0gc2xvdC0+dHRzX252YWxpZCk7 CisJCQljb2xzW2ldID0gc2xvdC0+dHRzX3ZhbHVlc1thdHRubyAtIDFdOworCQkJbnVsbHNbaV0g PSBzbG90LT50dHNfaXNudWxsW2F0dG5vIC0gMV07CisJCQlpZiAoIWJ2LT5oYXNudWxsICYmIG51 bGxzW2ldKQorCQkJCWJ2LT5oYXNudWxsID0gdHJ1ZTsKKwkJfQorCQlpKys7CisJfQorCWJ2LT5u cm93cyA9IGk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVz LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVzLmMKaW5kZXggOGUwMmQ2ODgyNGYu Ljg2ZDVkZWE4ZjhiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVHVwbGVz LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1R1cGxlcy5jCkBAIC0yMTExLDYgKzIx MTEsMzggQEAgc2xvdF9nZXRzb21lYXR0cnNfaW50KFR1cGxlVGFibGVTbG90ICpzbG90LCBpbnQg YXR0bnVtKQogCX0KIH0KIAordm9pZAorc2xvdF9nZXRzb21lYXR0cnNfYmF0Y2goc3RydWN0IFR1 cGxlQmF0Y2ggKmIsIGludCBhdHRudW0pCit7CisJd2hpbGUgKFR1cGxlQmF0Y2hIYXNNb3JlKGIp KQorCXsKKwkJVHVwbGVUYWJsZVNsb3QgKnNsb3QgPSBUdXBsZUJhdGNoR2V0TmV4dFNsb3QoYik7 CisKKwkJLyogQ2hlY2sgZm9yIGNhbGxlciBlcnJvcnMgKi8KKwkJQXNzZXJ0KGF0dG51bSA+IDAp OworCisJCWlmICh1bmxpa2VseShhdHRudW0gPiBzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yLT5u YXR0cykpCisJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBhdHRyaWJ1dGUgbnVtYmVyICVkIiwgYXR0 bnVtKTsKKworCQkvKiBYWFggLSB0aGVyZSBzaG91bGQgcGVyaGFwcyBhbHNvIGJlIGEgYmF0Y2gt bGV2ZWwgYXR0X252YWxpZCAqLworCQlpZiAoYXR0bnVtIDwgc2xvdC0+dHRzX252YWxpZCkKKwkJ CWNvbnRpbnVlOworCisJCS8qIEZldGNoIGFzIG1hbnkgYXR0cmlidXRlcyBhcyBwb3NzaWJsZSBm cm9tIHRoZSB1bmRlcmx5aW5nIHR1cGxlLiAqLworCQlzbG90LT50dHNfb3BzLT5nZXRzb21lYXR0 cnMoc2xvdCwgYXR0bnVtKTsKKworCQkvKgorCQkgKiBJZiB0aGUgdW5kZXJseWluZyB0dXBsZSBk b2Vzbid0IGhhdmUgZW5vdWdoIGF0dHJpYnV0ZXMsIHR1cGxlCisJCSAqIGRlc2NyaXB0b3IgbXVz dCBoYXZlIHRoZSBtaXNzaW5nIGF0dHJpYnV0ZXMuCisJCSAqLworCQlpZiAodW5saWtlbHkoc2xv dC0+dHRzX252YWxpZCA8IGF0dG51bSkpCisJCXsKKwkJCXNsb3RfZ2V0bWlzc2luZ2F0dHJzKHNs b3QsIHNsb3QtPnR0c19udmFsaWQsIGF0dG51bSk7CisJCQlzbG90LT50dHNfbnZhbGlkID0gYXR0 bnVtOworCQl9CisJfQorfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY1R5cGVGcm9tVEwKICAqCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYyBiL3NyYy9iYWNr ZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jCmluZGV4IDcxMmIzNWRmN2U1Li44NDhmMGI1MmQ2 ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKKysrIGIv c3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKQEAgLTEwOSw2ICsxMDksMTEgQEAg bGx2bV9jb21waWxlX2V4cHIoRXhwclN0YXRlICpzdGF0ZSkKIAlMTFZNVmFsdWVSZWYgdl9uZXdz bG90OwogCUxMVk1WYWx1ZVJlZiB2X3Jlc3VsdHNsb3Q7CiAKKwkvKiBiYXRjaGVzICovCisJTExW TVZhbHVlUmVmIHZfaW5uZXJiYXRjaDsKKwlMTFZNVmFsdWVSZWYgdl9vdXRlcmJhdGNoOworCUxM Vk1WYWx1ZVJlZiB2X3NjYW5iYXRjaDsKKwogCS8qIG51bGxzL3ZhbHVlcyBvZiBzbG90cyAqLwog CUxMVk1WYWx1ZVJlZiB2X2lubmVydmFsdWVzOwogCUxMVk1WYWx1ZVJlZiB2X2lubmVybnVsbHM7 CkBAIC0yMjEsNiArMjI2LDIxIEBAIGxsdm1fY29tcGlsZV9leHByKEV4cHJTdGF0ZSAqc3RhdGUp CiAJCQkJCQkJCQkgdl9zdGF0ZSwKIAkJCQkJCQkJCSBGSUVMRE5PX0VYUFJTVEFURV9SRVNVTFRT TE9ULAogCQkJCQkJCQkJICJ2X3Jlc3VsdHNsb3QiKTsKKwl2X2lubmVyYmF0Y2ggPSBsX2xvYWRf c3RydWN0X2dlcChiLAorCQkJCQkJCQkJIFN0cnVjdEV4cHJDb250ZXh0LAorCQkJCQkJCQkJIHZf ZWNvbnRleHQsCisJCQkJCQkJCQkgRklFTEROT19FWFBSQ09OVEVYVF9PVVRFUkJBVENILAorCQkJ CQkJCQkJICJ2X2lubmVyYmF0Y2giKTsKKwl2X291dGVyYmF0Y2ggPSBsX2xvYWRfc3RydWN0X2dl cChiLAorCQkJCQkJCQkJIFN0cnVjdEV4cHJDb250ZXh0LAorCQkJCQkJCQkJIHZfZWNvbnRleHQs CisJCQkJCQkJCQkgRklFTEROT19FWFBSQ09OVEVYVF9PVVRFUkJBVENILAorCQkJCQkJCQkJICJ2 X291dGVyYmF0Y2giKTsKKwl2X3NjYW5iYXRjaCA9IGxfbG9hZF9zdHJ1Y3RfZ2VwKGIsCisJCQkJ CQkJCQlTdHJ1Y3RFeHByQ29udGV4dCwKKwkJCQkJCQkJCXZfZWNvbnRleHQsCisJCQkJCQkJCQlG SUVMRE5PX0VYUFJDT05URVhUX1NDQU5CQVRDSCwKKwkJCQkJCQkJCSJ2X3NjYW5iYXRjaCIpOwog CiAJLyogYnVpbGQgZ2xvYmFsIHZhbHVlcy9pc251bGwgcG9pbnRlcnMgKi8KIAl2X3NjYW52YWx1 ZXMgPSBsX2xvYWRfc3RydWN0X2dlcChiLApAQCAtNDM5LDYgKzQ1OSw1NCBAQCBsbHZtX2NvbXBp bGVfZXhwcihFeHByU3RhdGUgKnN0YXRlKQogCQkJCQlicmVhazsKIAkJCQl9CiAKKwkJCWNhc2Ug RUVPUF9JTk5FUl9GRVRDSFNPTUVfQkFUQ0g6CisJCQkJeworCQkJCQlMTFZNVmFsdWVSZWYgcGFy YW1zWzJdOworCisJCQkJCXBhcmFtc1swXSA9IHZfaW5uZXJiYXRjaDsKKwkJCQkJcGFyYW1zWzFd ID0gbF9pbnQzMl9jb25zdChsYywgb3AtPmQuZmV0Y2hfYmF0Y2gubGFzdF92YXIpOworCisJCQkJ CQlsX2NhbGwoYiwKKwkJCQkJCQkgICBsbHZtX3BnX3Zhcl9mdW5jX3R5cGUoInNsb3RfZ2V0c29t ZWF0dHJzX2JhdGNoIiksCisJCQkJCQkJICAgbGx2bV9wZ19mdW5jKG1vZCwgInNsb3RfZ2V0c29t ZWF0dHJzX2JhdGNoIiksCisJCQkJCQkJICAgcGFyYW1zLCBsZW5ndGhvZihwYXJhbXMpLCAiIik7 CisKKwkJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKKwkJCQkJYnJlYWs7 CisJCQkJfQorCisJCQljYXNlIEVFT1BfT1VURVJfRkVUQ0hTT01FX0JBVENIOgorCQkJCXsKKwkJ CQkJTExWTVZhbHVlUmVmIHBhcmFtc1syXTsKKworCQkJCQlwYXJhbXNbMF0gPSB2X291dGVyYmF0 Y2g7CisJCQkJCXBhcmFtc1sxXSA9IGxfaW50MzJfY29uc3QobGMsIG9wLT5kLmZldGNoX2JhdGNo Lmxhc3RfdmFyKTsKKworCQkJCQkJbF9jYWxsKGIsCisJCQkJCQkJICAgbGx2bV9wZ192YXJfZnVu Y190eXBlKCJzbG90X2dldHNvbWVhdHRyc19iYXRjaCIpLAorCQkJCQkJCSAgIGxsdm1fcGdfZnVu Yyhtb2QsICJzbG90X2dldHNvbWVhdHRyc19iYXRjaCIpLAorCQkJCQkJCSAgIHBhcmFtcywgbGVu Z3Rob2YocGFyYW1zKSwgIiIpOworCisJCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW29wbm8g KyAxXSk7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJY2FzZSBFRU9QX1NDQU5fRkVUQ0hTT01F X0JBVENIOgorCQkJCXsKKwkJCQkJTExWTVZhbHVlUmVmIHBhcmFtc1syXTsKKworCQkJCQlwYXJh bXNbMF0gPSB2X3NjYW5iYXRjaDsKKwkJCQkJcGFyYW1zWzFdID0gbF9pbnQzMl9jb25zdChsYywg b3AtPmQuZmV0Y2hfYmF0Y2gubGFzdF92YXIpOworCisJCQkJCQlsX2NhbGwoYiwKKwkJCQkJCQkg ICBsbHZtX3BnX3Zhcl9mdW5jX3R5cGUoInNsb3RfZ2V0c29tZWF0dHJzX2JhdGNoIiksCisJCQkJ CQkJICAgbGx2bV9wZ19mdW5jKG1vZCwgInNsb3RfZ2V0c29tZWF0dHJzX2JhdGNoIiksCisJCQkJ CQkJICAgcGFyYW1zLCBsZW5ndGhvZihwYXJhbXMpLCAiIik7CisKKwkJCQkJTExWTUJ1aWxkQnIo Yiwgb3BibG9ja3Nbb3BubyArIDFdKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCiAJCQljYXNlIEVF T1BfSU5ORVJfVkFSOgogCQkJY2FzZSBFRU9QX09VVEVSX1ZBUjoKIAkJCWNhc2UgRUVPUF9TQ0FO X1ZBUjoKQEAgLTI5NDAsNiArMzAwOCwyNCBAQCBsbHZtX2NvbXBpbGVfZXhwcihFeHByU3RhdGUg KnN0YXRlKQogCQkJCUxMVk1CdWlsZEJyKGIsIG9wYmxvY2tzW29wbm8gKyAxXSk7CiAJCQkJYnJl YWs7CiAKKwkJCWNhc2UgRUVPUF9CVUlMRF9JTk5FUl9CQVRDSF9WRUNUT1I6CisJCQkJYnVpbGRf RXZhbFhGdW5jKGIsIG1vZCwgIkV4ZWNCdWlsZElubmVyQmF0Y2hWZWN0b3IiLAorCQkJCQkJCQl2 X3N0YXRlLCBvcCwgdl9lY29udGV4dCk7CisJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3Bu byArIDFdKTsKKwkJCQlicmVhazsKKworCQkJY2FzZSBFRU9QX0JVSUxEX09VVEVSX0JBVENIX1ZF Q1RPUjoKKwkJCQlidWlsZF9FdmFsWEZ1bmMoYiwgbW9kLCAiRXhlY0J1aWxkT3V0ZXJCYXRjaFZl Y3RvciIsCisJCQkJCQkJCXZfc3RhdGUsIG9wLCB2X2Vjb250ZXh0KTsKKwkJCQlMTFZNQnVpbGRC cihiLCBvcGJsb2Nrc1tvcG5vICsgMV0pOworCQkJCWJyZWFrOworCisJCQljYXNlIEVFT1BfQlVJ TERfU0NBTl9CQVRDSF9WRUNUT1I6CisJCQkJYnVpbGRfRXZhbFhGdW5jKGIsIG1vZCwgIkV4ZWNC dWlsZFNjYW5CYXRjaFZlY3RvciIsCisJCQkJCQkJCXZfc3RhdGUsIG9wLCB2X2Vjb250ZXh0KTsK KwkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tvcG5vICsgMV0pOworCQkJCWJyZWFrOworCiAJ CQljYXNlIEVFT1BfTEFTVDoKIAkJCQlBc3NlcnQoZmFsc2UpOwogCQkJCWJyZWFrOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jIGIvc3JjL2JhY2tlbmQv aml0L2xsdm0vbGx2bWppdF90eXBlcy5jCmluZGV4IDE2N2NkNTU0YjljLi42YmI1MjdjM2Y2ZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYwpAQCAtMTc5LDcgKzE3OSwxMSBAQCB2 b2lkCSAgICpyZWZlcmVuY2VkX2Z1bmN0aW9uc1tdID0KIAlNYWtlRXhwYW5kZWRPYmplY3RSZWFk T25seUludGVybmFsLAogCXNsb3RfZ2V0bWlzc2luZ2F0dHJzLAogCXNsb3RfZ2V0c29tZWF0dHJz X2ludCwKKwlzbG90X2dldHNvbWVhdHRyc19iYXRjaCwKIAlzdHJsZW4sCiAJdmFyc2l6ZV9hbnks CiAJRXhlY0ludGVycEV4cHJTdGlsbFZhbGlkLAorCUV4ZWNCdWlsZElubmVyQmF0Y2hWZWN0b3Is CisJRXhlY0J1aWxkT3V0ZXJCYXRjaFZlY3RvciwKKwlFeGVjQnVpbGRTY2FuQmF0Y2hWZWN0b3Is CiB9OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaCBiL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKaW5kZXggNzUzNjYyMDM3MDYuLjk5Yzg2YmFjNzAy IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCisrKyBiL3NyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKQEAgLTc4LDYgKzc4LDExIEBAIHR5cGVkZWYgZW51 bSBFeHByRXZhbE9wCiAJRUVPUF9PTERfRkVUQ0hTT01FLAogCUVFT1BfTkVXX0ZFVENIU09NRSwK IAorCS8qIGFwcGx5IHNsb3RfZ2V0c29tZWF0dHJzX2JhdGNoKCkgdG8gY29ycmVzcG9uZGluZyBi YXRjaCAqLworCUVFT1BfSU5ORVJfRkVUQ0hTT01FX0JBVENILAorCUVFT1BfT1VURVJfRkVUQ0hT T01FX0JBVENILAorCUVFT1BfU0NBTl9GRVRDSFNPTUVfQkFUQ0gsCisKIAkvKiBjb21wdXRlIG5v bi1zeXN0ZW0gVmFyIHZhbHVlICovCiAJRUVPUF9JTk5FUl9WQVIsCiAJRUVPUF9PVVRFUl9WQVIs CkBAIC0yOTIsMTEgKzI5NywxNSBAQCB0eXBlZGVmIGVudW0gRXhwckV2YWxPcAogCUVFT1BfQUdH X09SREVSRURfVFJBTlNfREFUVU0sCiAJRUVPUF9BR0dfT1JERVJFRF9UUkFOU19UVVBMRSwKIAor CS8qIEV4cHJDb250ZXh0LipfYmF0Y2ggLT4gQmF0Y2hWZWN0b3IgKi8KKwlFRU9QX0JVSUxEX0lO TkVSX0JBVENIX1ZFQ1RPUiwKKwlFRU9QX0JVSUxEX09VVEVSX0JBVENIX1ZFQ1RPUiwKKwlFRU9Q X0JVSUxEX1NDQU5fQkFUQ0hfVkVDVE9SLAorCiAJLyogbm9uLWV4aXN0ZW50IG9wZXJhdGlvbiwg dXNlZCBlLmcuIHRvIGNoZWNrIGFycmF5IGxlbmd0aHMgKi8KIAlFRU9QX0xBU1QKIH0gRXhwckV2 YWxPcDsKIAotCiB0eXBlZGVmIHN0cnVjdCBFeHByRXZhbFN0ZXAKIHsKIAkvKgpAQCAtMzMxLDYg KzM0MCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBFeHByRXZhbFN0ZXAKIAkJCWNvbnN0IFR1cGxlVGFi bGVTbG90T3BzICpraW5kOwogCQl9CQkJZmV0Y2g7CiAKKwkJc3RydWN0CisJCXsKKwkJCS8qIGF0 dHJpYnV0ZSBudW1iZXIgdXAgdG8gd2hpY2ggdG8gZmV0Y2ggKGluY2x1c2l2ZSkgKi8KKwkJCWlu dAkJCWxhc3RfdmFyOworCQl9CQkJZmV0Y2hfYmF0Y2g7CisKIAkJLyogZm9yIEVFT1BfSU5ORVIv T1VURVIvU0NBTi9PTEQvTkVXX1tTWVNdVkFSICovCiAJCXN0cnVjdAogCQl7CkBAIC03NjksNiAr Nzg0LDEyIEBAIHR5cGVkZWYgc3RydWN0IEV4cHJFdmFsU3RlcAogCQkJdm9pZAkgICAqanNvbl9j b2VyY2lvbl9jYWNoZTsKIAkJCUVycm9yU2F2ZUNvbnRleHQgKmVzY29udGV4dDsKIAkJfQkJCWpz b25leHByX2NvZXJjaW9uOworCisJCS8qIGZvciBiYXRjaCB2ZWN0b3IgY29uc3RydWN0aW9uICov CisJCXN0cnVjdAorCQl7CisJCQlzdHJ1Y3QgQmF0Y2hWZWN0b3IgKmJ2OworCQl9CQkJYmF0Y2hf dmVjdG9yOwogCX0JCQlkOwogfSBFeHByRXZhbFN0ZXA7CiAKQEAgLTkxNyw0ICs5MzgsMjYgQEAg ZXh0ZXJuIHZvaWQgRXhlY0V2YWxBZ2dPcmRlcmVkVHJhbnNEYXR1bShFeHByU3RhdGUgKnN0YXRl LCBFeHByRXZhbFN0ZXAgKm9wLAogZXh0ZXJuIHZvaWQgRXhlY0V2YWxBZ2dPcmRlcmVkVHJhbnNU dXBsZShFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCQkJCQkJCSBFeHBy Q29udGV4dCAqZWNvbnRleHQpOwogCisvKiAtLS0tLS0tLS0tIEJhdGNoVmVjdG9yIHN0dWZmIC0t LS0tLS0tLS0tLS0gKi8KKworLyogVmVjdG9yIGZldGNoIHNwZWMgZm9yIGEgbGlzdCBvZiBzaW1w bGUgVmFycy4gKi8KK3R5cGVkZWYgc3RydWN0IEJhdGNoVmVjdG9yCit7CisJLyogaW1tdXRhYmxl IGFmdGVyIEJhdGNoVmVjdG9yQ3JlYXRlICovCisJQXR0ck51bWJlciAqYXR0bm9zOwkJLyogW25j b2xzXSAqLworCWludAkJCW5jb2xzOworCWludAkJCW1heHJvd3M7CisJaW50CQkJbGFzdF92YXI7 CisKKwkvKiBwZXIgYmF0Y2ggc3RhdGUgKi8KKwlEYXR1bSAqKmNvbHM7CQkJLyogW25jb2xzXVtt YXhiYXRjaF0gKi8KKwlib29sICAqKm51bGxzOwkJCS8qIFtuY29sc11bbWF4YmF0Y2hdICovCisJ Ym9vbAloYXNudWxsOwkJLyogaXMgYW55IGRhdHVtIGluIGNvbHMgTlVMTD8gKi8KKwlpbnQJCW5y b3dzOwkJCS8qICNyb3dzIGxvYWRlZCBpbnRvIGNvbHMvbnVsbHMgKi8KK30gQmF0Y2hWZWN0b3I7 CisKK2V4dGVybiB2b2lkIEV4ZWNCdWlsZElubmVyQmF0Y2hWZWN0b3IoRXhwclN0YXRlICpzdGF0 ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0KTsKK2V4dGVybiB2b2lk IEV4ZWNCdWlsZE91dGVyQmF0Y2hWZWN0b3IoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVw ICpvcCwgRXhwckNvbnRleHQgKmVjb250ZXh0KTsKK2V4dGVybiB2b2lkIEV4ZWNCdWlsZFNjYW5C YXRjaFZlY3RvcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLCBFeHByQ29udGV4 dCAqZWNvbnRleHQpOworCiAjZW5kaWYJCQkJCQkJLyogRVhFQ19FWFBSX0ggKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL3R1cHRhYmxlLmggYi9zcmMvaW5jbHVkZS9leGVjdXRv ci90dXB0YWJsZS5oCmluZGV4IDQzZjFkOTk5YjkxLi44MjM2OWZhNmU4ZSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvZXhlY3V0b3IvdHVwdGFibGUuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRv ci90dXB0YWJsZS5oCkBAIC0zNDYsNiArMzQ2LDggQEAgZXh0ZXJuIERhdHVtIEV4ZWNGZXRjaFNs b3RIZWFwVHVwbGVEYXR1bShUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CiBleHRlcm4gdm9pZCBzbG90 X2dldG1pc3NpbmdhdHRycyhUdXBsZVRhYmxlU2xvdCAqc2xvdCwgaW50IHN0YXJ0QXR0TnVtLAog CQkJCQkJCQkgaW50IGxhc3RBdHROdW0pOwogZXh0ZXJuIHZvaWQgc2xvdF9nZXRzb21lYXR0cnNf aW50KFR1cGxlVGFibGVTbG90ICpzbG90LCBpbnQgYXR0bnVtKTsKK3N0cnVjdCBUdXBsZUJhdGNo OworZXh0ZXJuIHZvaWQgc2xvdF9nZXRzb21lYXR0cnNfYmF0Y2goc3RydWN0IFR1cGxlQmF0Y2gg KmIsIGludCBhdHRudW0pOwogCiAKICNpZm5kZWYgRlJPTlRFTkQKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK aW5kZXggOWI4MWI4NDIxNjEuLmZkZmU4YjRkZGFmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAt Mjc3LDYgKzI3NywxNCBAQCB0eXBlZGVmIHN0cnVjdCBFeHByQ29udGV4dAogI2RlZmluZSBGSUVM RE5PX0VYUFJDT05URVhUX09VVEVSVFVQTEUgMwogCVR1cGxlVGFibGVTbG90ICplY3h0X291dGVy dHVwbGU7CiAKKwkvKiBGb3IgYmF0Y2hlZCBldmFsdWF0aW9uIHVzaW5nIGJhdGNoLWF3YXJlIEVF T1BzICovCisjZGVmaW5lIEZJRUxETk9fRVhQUkNPTlRFWFRfSU5ORVJCQVRDSCA0CisJVHVwbGVC YXRjaAkgICAqaW5uZXJfYmF0Y2g7CisjZGVmaW5lIEZJRUxETk9fRVhQUkNPTlRFWFRfT1VURVJC QVRDSCA1CisJVHVwbGVCYXRjaAkgICAqb3V0ZXJfYmF0Y2g7CisjZGVmaW5lIEZJRUxETk9fRVhQ UkNPTlRFWFRfU0NBTkJBVENIIDYKKwlUdXBsZUJhdGNoCSAgICpzY2FuX2JhdGNoOworCiAJLyog TWVtb3J5IGNvbnRleHRzIGZvciBleHByZXNzaW9uIGV2YWx1YXRpb24gLS0tIHNlZSBub3RlcyBh Ym92ZSAqLwogCU1lbW9yeUNvbnRleHQgZWN4dF9wZXJfcXVlcnlfbWVtb3J5OwogCU1lbW9yeUNv bnRleHQgZWN4dF9wZXJfdHVwbGVfbWVtb3J5OwpAQCAtMjg5LDI3ICsyOTcsMjcgQEAgdHlwZWRl ZiBzdHJ1Y3QgRXhwckNvbnRleHQKIAkgKiBWYWx1ZXMgdG8gc3Vic3RpdHV0ZSBmb3IgQWdncmVm IG5vZGVzIGluIHRoZSBleHByZXNzaW9ucyBvZiBhbiBBZ2cKIAkgKiBub2RlLCBvciBmb3IgV2lu ZG93RnVuYyBub2RlcyB3aXRoaW4gYSBXaW5kb3dBZ2cgbm9kZS4KIAkgKi8KLSNkZWZpbmUgRklF TEROT19FWFBSQ09OVEVYVF9BR0dWQUxVRVMgOAorI2RlZmluZSBGSUVMRE5PX0VYUFJDT05URVhU X0FHR1ZBTFVFUyAxMQogCURhdHVtCSAgICplY3h0X2FnZ3ZhbHVlczsgLyogcHJlY29tcHV0ZWQg dmFsdWVzIGZvciBhZ2dzL3dpbmRvd2Z1bmNzICovCi0jZGVmaW5lIEZJRUxETk9fRVhQUkNPTlRF WFRfQUdHTlVMTFMgOQorI2RlZmluZSBGSUVMRE5PX0VYUFJDT05URVhUX0FHR05VTExTIDEyCiAJ Ym9vbAkgICAqZWN4dF9hZ2dudWxsczsJLyogbnVsbCBmbGFncyBmb3IgYWdncy93aW5kb3dmdW5j cyAqLwogCiAJLyogVmFsdWUgdG8gc3Vic3RpdHV0ZSBmb3IgQ2FzZVRlc3RFeHByIG5vZGVzIGlu IGV4cHJlc3Npb24gKi8KLSNkZWZpbmUgRklFTEROT19FWFBSQ09OVEVYVF9DQVNFREFUVU0gMTAK KyNkZWZpbmUgRklFTEROT19FWFBSQ09OVEVYVF9DQVNFREFUVU0gMTMKIAlEYXR1bQkJY2FzZVZh bHVlX2RhdHVtOwotI2RlZmluZSBGSUVMRE5PX0VYUFJDT05URVhUX0NBU0VOVUxMIDExCisjZGVm aW5lIEZJRUxETk9fRVhQUkNPTlRFWFRfQ0FTRU5VTEwgMTQKIAlib29sCQljYXNlVmFsdWVfaXNO dWxsOwogCiAJLyogVmFsdWUgdG8gc3Vic3RpdHV0ZSBmb3IgQ29lcmNlVG9Eb21haW5WYWx1ZSBu b2RlcyBpbiBleHByZXNzaW9uICovCi0jZGVmaW5lIEZJRUxETk9fRVhQUkNPTlRFWFRfRE9NQUlO REFUVU0gMTIKKyNkZWZpbmUgRklFTEROT19FWFBSQ09OVEVYVF9ET01BSU5EQVRVTSAxNQogCURh dHVtCQlkb21haW5WYWx1ZV9kYXR1bTsKLSNkZWZpbmUgRklFTEROT19FWFBSQ09OVEVYVF9ET01B SU5OVUxMIDEzCisjZGVmaW5lIEZJRUxETk9fRVhQUkNPTlRFWFRfRE9NQUlOTlVMTCAxNgogCWJv b2wJCWRvbWFpblZhbHVlX2lzTnVsbDsKIAogCS8qIFR1cGxlcyB0aGF0IE9MRC9ORVcgVmFyIG5v ZGVzIGluIFJFVFVSTklORyBtYXkgcmVmZXIgdG8gKi8KLSNkZWZpbmUgRklFTEROT19FWFBSQ09O VEVYVF9PTERUVVBMRSAxNAorI2RlZmluZSBGSUVMRE5PX0VYUFJDT05URVhUX09MRFRVUExFIDE3 CiAJVHVwbGVUYWJsZVNsb3QgKmVjeHRfb2xkdHVwbGU7Ci0jZGVmaW5lIEZJRUxETk9fRVhQUkNP TlRFWFRfTkVXVFVQTEUgMTUKKyNkZWZpbmUgRklFTEROT19FWFBSQ09OVEVYVF9ORVdUVVBMRSAx OAogCVR1cGxlVGFibGVTbG90ICplY3h0X25ld3R1cGxlOwogCiAJLyogTGluayB0byBjb250YWlu aW5nIEVTdGF0ZSAoTlVMTCBpZiBhIHN0YW5kYWxvbmUgRXhwckNvbnRleHQpICovCi0tIAoyLjQ3 LjMKCg== --00000000000006d2b20640c83360 Content-Type: application/octet-stream; name="v3-0001-Add-batch-table-AM-API-and-heapam-implementation.patch" Content-Disposition: attachment; filename="v3-0001-Add-batch-table-AM-API-and-heapam-implementation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgkh6mbg8 RnJvbSA1MTE5MmM1MjI3NTAwNTY0OWRmODhiNWUzYTc1MzYwOTQyZGMwZmNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IE1vbiwgMSBTZXAgMjAyNSAyMTo1NjoxNyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjMg MS85XSBBZGQgYmF0Y2ggdGFibGUgQU0gQVBJIGFuZCBoZWFwYW0gaW1wbGVtZW50YXRpb24KCklu dHJvZHVjZSBuZXcgdGFibGUgQU0gY2FsbGJhY2tzIHRvIGZldGNoIG11bHRpcGxlIHR1cGxlcyBw ZXIgY2FsbC4KVGhpcyByZWR1Y2VzIHBlci10dXBsZSBjYWxsIG92ZXJoZWFkIGJ5IGxldHRpbmcg ZXhlY3V0b3Igbm9kZXMgd29yawppbiBiYXRjaGVzLgoKRGVmaW5lIGEgSGVhcEJhdGNoIHN0cnVj dHVyZSBhbmQgc3VwcG9ydGluZyBjb2RlIGluIHRhYmxlYW0uaC4KQmF0Y2hlcyBhcmUgbGltaXRl ZCB0byB0dXBsZXMgZnJvbSBhIHNpbmdsZSBwYWdlIGFuZCBhdCBtb3N0CkVYRUNfQkFUQ0hfUk9X UyAoY3VycmVudGx5IDY0KSBlbnRyaWVzLgoKUHJvdmlkZSBpbml0aWFsIGhlYXBhbSBzdXBwb3J0 IHdpdGggaGVhcGdldHR1cF9wYWdlbW9kZV9iYXRjaCgpLgpObyBleGVjdXRvciBub2RlIGlzIHN3 aXRjaGVkIG92ZXIgeWV0OyBhIGxhdGVyIGNvbW1pdCB3aWxsIGFkYXB0ClNlcVNjYW4gdG8gdXNl IHRoaXMgQVBJLiBPdGhlciBub2RlcyBtYXkgYWRvcHQgaXQgaW4gdGhlIGZ1dHVyZS4KCkFsc28g YWRkIHBnc3RhdF9jb3VudF9oZWFwX2dldG5leHRfYmF0Y2goKSB0byByZWNvcmQgYmF0Y2hlZCBm ZXRjaGVzCmluIHBnc3RhdC4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAg ICAgICAgIHwgMjEyICsrKysrKysrKysrKysrKysrKysrKystCiBzcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jIHwgICA0ICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aCAgICAgICAgICAgICAgfCAgMjEgKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAg ICAgICAgICAgIHwgIDU4ICsrKysrKysKIHNyYy9pbmNsdWRlL3Bnc3RhdC5oICAgICAgICAgICAg ICAgICAgICAgfCAgIDUgKwogNSBmaWxlcyBjaGFuZ2VkLCAyOTkgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggNTY4Njk2MzMzYzIuLjhi OWE4MDQ0OWMxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMTAwOCw3ICsxMDA4LDcg QEAgaGVhcGdldHR1cF9wYWdlbW9kZShIZWFwU2NhbkRlc2Mgc2NhbiwKIAkJCQkJaW50IG5rZXlz LAogCQkJCQlTY2FuS2V5IGtleSkKIHsKLQlIZWFwVHVwbGUJdHVwbGUgPSAmKHNjYW4tPnJzX2N0 dXApOworCUhlYXBUdXBsZSB0dXBsZSA9ICZzY2FuLT5yc19jdHVwOwogCVBhZ2UJCXBhZ2U7CiAJ dWludDMyCQlsaW5laW5kZXg7CiAJdWludDMyCQlsaW5lc2xlZnQ7CkBAIC0xMDg5LDYgKzEwODks MTIxIEBAIGNvbnRpbnVlX3BhZ2U6CiAJc2Nhbi0+cnNfaW5pdGVkID0gZmFsc2U7CiB9CiAKKy8q CisgKiBoZWFwZ2V0dHVwX3BhZ2Vtb2RlX2JhdGNoCisgKgkJQ29sbGVjdCB1cCB0byAnbWF4aXRl bXMnIHZpc2libGUgdHVwbGVzIGZyb20gYSBzaW5nbGUgcGFnZSBpbiBwYWdlIG1vZGUuCisgKgor ICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgKmJhdGNoKiBvZiB0dXBsZXMgZnJvbSBvbmUgaGVh cCBwYWdlLiBJZiB0aGUKKyAqIGN1cnJlbnQgcGFnZSAoYXMgdHJhY2tlZCBieSB0aGUgc2NhbiBk ZXNjKSBoYXMgbm8gbW9yZSB0dXBsZXMgbGVmdCwKKyAqIGl0IHdpbGwgYWR2YW5jZSB0byB0aGUg bmV4dCBwYWdlIGFuZCBwcmVwYXJlIGl0ICh2aWEgaGVhcF9wcmVwYXJlX3BhZ2VzY2FuKS4KKyAq IEl0IHdpbGwgbm90IGNyb3NzIGEgcGFnZSBib3VuZGFyeSB3aGlsZSBmaWxsaW5nIHRoZSBiYXRj aC4KKyAqCisgKiBSZXR1cm4gdmFsdWU6CisgKgkJbnVtYmVyIG9mIHR1cGxlcyB3cml0dGVuIGlu dG8gJ3RkYXRhJyAoMCBhdCBlbmQtb2Ytc2NhbikuCisgKgorICogU2lkZSBlZmZlY3RzOgorICoJ LSBFbnN1cmVzIHJzX2NidWYgcGlucyB0aGUgcGFnZSBmcm9tIHdoaWNoIHR1cGxlcyB3ZXJlIHBy b2R1Y2VkLgorICoJLSBTZXRzIHJzX2NibG9jaywgcnNfY2luZGV4LCByc19udHVwbGVzIGNvbnNp c3RlbnRseSAoc2FtZSBhcworICoJICBoZWFwZ2V0dHVwX3BhZ2Vtb2Rl4oCZcyBpbm5lci1sb29w IGVmZmVjdHMpLgorICoJLSBEb2VzICpub3QqIGNoYW5nZSBidWZmZXIgcGluIGNvdW50cyBleGNl cHQgdGhyb3VnaCBub3JtYWwgcGFnZQorICoJICB0cmFuc2l0aW9ucyBwZXJmb3JtZWQgYnkgaGVh cF9mZXRjaF9uZXh0X2J1ZmZlcigpLgorICovCitzdGF0aWMgaW50CitoZWFwZ2V0dHVwX3BhZ2Vt b2RlX2JhdGNoKEhlYXBTY2FuRGVzYyBzY2FuLAorCQkJCQkJICBTY2FuRGlyZWN0aW9uIGRpciwK KwkJCQkJCSAgaW50IG5rZXlzLCBTY2FuS2V5IGtleSwKKwkJCQkJCSAgSGVhcFR1cGxlRGF0YSAq dGRhdGEsCisJCQkJCQkgIGludCBtYXhpdGVtcykKK3sKKwlQYWdlCQlwYWdlOworCXVpbnQzMgkJ bGluZWluZGV4OworCXVpbnQzMgkJbGluZXNsZWZ0OworCWludAkJCW5vdXQgPSAwOworCisJQXNz ZXJ0KFNjYW5EaXJlY3Rpb25Jc0ZvcndhcmQoZGlyKSk7CisJQXNzZXJ0KHNjYW4tPnJzX2Jhc2Uu cnNfZmxhZ3MgJiBTT19BTExPV19QQUdFTU9ERSk7CisJQXNzZXJ0KG1heGl0ZW1zID4gMCk7CisK KwkvKgorCSAqIElmIHdlIGhhdmUgbm8gY3VycmVudCBwYWdlIChvciB0aGUgY3VycmVudCBwYWdl IGlzIGV4aGF1c3RlZCksCisJICogYWR2YW5jZSB0byB0aGUgbmV4dCBwYWdlIHRoYXQgaGFzIGFu eSB2aXNpYmxlIHR1cGxlcyBhbmQgcHJlcGFyZSBpdC4KKwkgKiBUaGlzIG1pcnJvcnMgdGhlIG91 dGVyIGxvb3Agb2YgaGVhcGdldHR1cF9wYWdlbW9kZSgpLCBidXQgd2Ugc3RvcAorCSAqIGFzIHNv b24gYXMgd2UgaGF2ZSBhIHByZXBhcmVkIHBhZ2U7IHdlIG5ldmVyIHByb2R1Y2UgZnJvbSB0d28g cGFnZXMuCisJICovCisJZm9yICg7OykKKwl7CisJCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4tPnJz X2NidWYpKQorCQl7CisJCQkvKiBBcmUgdGhlcmUgbW9yZSB2aXNpYmxlIHR1cGxlcyBsZWZ0IG9u IHRoaXMgcGFnZT8gKi8KKwkJCWxpbmVpbmRleCA9IHNjYW4tPnJzX2NpbmRleCArIGRpcjsKKwkJ CWlmIChTY2FuRGlyZWN0aW9uSXNGb3J3YXJkKGRpcikpCisJCQkJbGluZXNsZWZ0ID0gKGxpbmVp bmRleCA8PSAodWludDMyKSBzY2FuLT5yc19udHVwbGVzKSA/CisJCQkJCShzY2FuLT5yc19udHVw bGVzIC0gbGluZWluZGV4KSA6IDA7CisJCQllbHNlCisJCQkJbGluZXNsZWZ0ID0gc2Nhbi0+cnNf Y2luZGV4OworCQkJaWYgKGxpbmVzbGVmdCA+IDApCisJCQkJYnJlYWs7CS8qIGNvbnRpbnVlIG9u IHRoaXMgcGFnZSAqLworCQl9CisKKwkJLyogTW92ZSB0byBuZXh0IHBhZ2UgYW5kIHByZXBhcmUg aXRzIHZpc2libGUgdHVwbGUgbGlzdC4gKi8KKwkJaGVhcF9mZXRjaF9uZXh0X2J1ZmZlcihzY2Fu LCBkaXIpOworCisJCWlmICghQnVmZmVySXNWYWxpZChzY2FuLT5yc19jYnVmKSkKKwkJeworCQkJ LyogZW5kIG9mIHNjYW47IGtlZXAgcnNfY2J1ZiBpbnZhbGlkIGxpa2UgaGVhcGdldHR1cF9wYWdl bW9kZSAqLworCQkJc2Nhbi0+cnNfY2Jsb2NrID0gSW52YWxpZEJsb2NrTnVtYmVyOworCQkJc2Nh bi0+cnNfcHJlZmV0Y2hfYmxvY2sgPSBJbnZhbGlkQmxvY2tOdW1iZXI7CisJCQlzY2FuLT5yc19p bml0ZWQgPSBmYWxzZTsKKwkJCXJldHVybiAwOworCQl9CisKKwkJQXNzZXJ0KEJ1ZmZlckdldEJs b2NrTnVtYmVyKHNjYW4tPnJzX2NidWYpID09IHNjYW4tPnJzX2NibG9jayk7CisJCWhlYXBfcHJl cGFyZV9wYWdlc2NhbigoVGFibGVTY2FuRGVzYykgc2Nhbik7CisKKwkJLyogQWZ0ZXIgcHJlcGFy ZSwgZWl0aGVyIHJzX250dXBsZXMgPiAwIG9yIHdlJ2xsIGxvb3AgYWdhaW4uICovCisJCWlmIChz Y2FuLT5yc19udHVwbGVzID4gMCkKKwkJeworCQkJbGluZWluZGV4ID0gU2NhbkRpcmVjdGlvbklz Rm9yd2FyZChkaXIpID8gMCA6IHNjYW4tPnJzX250dXBsZXMgLSAxOworCQkJbGluZXNsZWZ0ID0g c2Nhbi0+cnNfbnR1cGxlcyAtIChTY2FuRGlyZWN0aW9uSXNGb3J3YXJkKGRpcikgPyAwIDogMCk7 CisJCQlicmVhazsKKwkJfQorCQkvKiBlbHNlOiBwYWdlIGhhZCBubyB2aXNpYmxlIHR1cGxlczsg Y29udGludWUgdG8gbmV4dCBwYWdlICovCisJfQorCisJLyogRnJvbSBoZXJlIG9uLCB3ZSBtdXN0 IG9ubHkgcmVhZCB0dXBsZXMgZnJvbSB0aGlzIHNpbmdsZSBwYWdlLiAqLworCXBhZ2UgPSBCdWZm ZXJHZXRQYWdlKHNjYW4tPnJzX2NidWYpOworCisJLyoKKwkgKiBXYWxrIHJzX3Zpc3R1cGxlc1td IGZyb20gJ2xpbmVpbmRleCcsIGNvcHlpbmcgaGVhZGVycyBpbnRvIHRkYXRhW10KKwkgKiB1bnRp bCBlaXRoZXIgdGhlIHBhZ2UgaXMgZXhoYXVzdGVkIG9yIHRoZSBiYXRjaCBjYXBhY2l0eSBpcyBy ZWFjaGVkLgorCSAqLworCWZvciAoOyBsaW5lc2xlZnQgPiAwICYmIG5vdXQgPCBtYXhpdGVtczsg bGluZXNsZWZ0LS0sIGxpbmVpbmRleCArPSBkaXIpCisJeworCQlPZmZzZXROdW1iZXIJbGluZW9m ZjsKKwkJSXRlbUlkCQkJbHBwOworCQlIZWFwVHVwbGVEYXRhICpkc3QgPSAmdGRhdGFbbm91dF07 CisKKwkJQXNzZXJ0KGxpbmVpbmRleCA8PSAodWludDMyKSBzY2FuLT5yc19udHVwbGVzKTsKKwkJ bGluZW9mZiA9IHNjYW4tPnJzX3Zpc3R1cGxlc1tsaW5laW5kZXhdOworCQlscHAgPSBQYWdlR2V0 SXRlbUlkKHBhZ2UsIGxpbmVvZmYpOworCQlBc3NlcnQoSXRlbUlkSXNOb3JtYWwobHBwKSk7CisK KwkJZHN0LT50X2RhdGEgPSAoSGVhcFR1cGxlSGVhZGVyKSBQYWdlR2V0SXRlbShwYWdlLCBscHAp OworCQlkc3QtPnRfbGVuICA9IEl0ZW1JZEdldExlbmd0aChscHApOworCQlkc3QtPnRfdGFibGVP aWQgPSBSZWxhdGlvbkdldFJlbGlkKHNjYW4tPnJzX2Jhc2UucnNfcmQpOworCQlJdGVtUG9pbnRl clNldCgmKGRzdC0+dF9zZWxmKSwgc2Nhbi0+cnNfY2Jsb2NrLCBsaW5lb2ZmKTsKKworCQlpZiAo a2V5ICE9IE5VTEwgJiYKKwkJCSFIZWFwS2V5VGVzdChkc3QsIFJlbGF0aW9uR2V0RGVzY3Ioc2Nh bi0+cnNfYmFzZS5yc19yZCksCisJCQkJCQkgbmtleXMsIGtleSkpCisJCQljb250aW51ZTsKKwor CQlzY2FuLT5yc19jaW5kZXggPSBsaW5laW5kZXg7CisJCW5vdXQrKzsKKwl9CisKKwlyZXR1cm4g bm91dDsKK30KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCQkJCSBoZWFwIGFjY2VzcyBtZXRob2QgaW50ZXJm YWNlCkBAIC0xMTM2LDYgKzEyNTEsOCBAQCBoZWFwX2JlZ2luc2NhbihSZWxhdGlvbiByZWxhdGlv biwgU25hcHNob3Qgc25hcHNob3QsCiAJc2Nhbi0+cnNfYmFzZS5yc19wYXJhbGxlbCA9IHBhcmFs bGVsX3NjYW47CiAJc2Nhbi0+cnNfc3RyYXRlZ3kgPSBOVUxMOwkvKiBzZXQgaW4gaW5pdHNjYW4g Ki8KIAlzY2FuLT5yc19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKKwlzY2FuLT5yc19iYXRjaF9jdHVw ID0gTlVMTDsKKwlzY2FuLT5yc19iYXRjaF9jYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAogCS8qCiAJ ICogRGlzYWJsZSBwYWdlLWF0LWEtdGltZSBtb2RlIGlmIGl0J3Mgbm90IGEgTVZDQy1zYWZlIHNu YXBzaG90LgpAQCAtMTMxNSw2ICsxNDMyLDggQEAgaGVhcF9lbmRzY2FuKFRhYmxlU2NhbkRlc2Mg c3NjYW4pCiAJICovCiAJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfY2J1ZikpCiAJCVJlbGVh c2VCdWZmZXIoc2Nhbi0+cnNfY2J1Zik7CisJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfYmF0 Y2hfY2J1ZikpCisJCVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfYmF0Y2hfY2J1Zik7CiAKIAkvKgog CSAqIE11c3QgZnJlZSB0aGUgcmVhZCBzdHJlYW0gYmVmb3JlIGZyZWVpbmcgdGhlIEJ1ZmZlckFj Y2Vzc1N0cmF0ZWd5LgpAQCAtMTQyMSw2ICsxNTQwLDk3IEBAIGhlYXBfZ2V0bmV4dHNsb3QoVGFi bGVTY2FuRGVzYyBzc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sIFR1cGxlVGFibGVTbG90 ICpzCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8qLS0tLS0tLS0tLSBCYXRjaGluZyBzdXBwb3J0IC0t LS0tLS0tLS0tKi8KKworLyoKKyAqIGhlYXBfc2Nhbl9iZWdpbl9iYXRjaAorICoKKyAqIEFsbG9j YXRlIGEgSGVhcEJhdGNoIHdpdGggc3BhY2UgZm9yICdtYXhpdGVtcycgdHVwbGUgaGVhZGVycy4g Tm8gcGluIGlzCisgKiB0YWtlbiBoZXJlLiBNZW1vcnkgaXMgYWxsb2NhdGVkIHVuZGVyIHRoZSBz Y2FuJ3MgbWVtb3J5IGNvbnRleHQuCisgKi8KK3ZvaWQgKgoraGVhcF9iZWdpbl9iYXRjaChUYWJs ZVNjYW5EZXNjIHNzY2FuLCBpbnQgbWF4aXRlbXMpCit7CisJSGVhcEJhdGNoICAqaGI7CisJT2lk CQkJcmVsaWQ7CisKKwlBc3NlcnQobWF4aXRlbXMgPiAwKTsKKworCWhiID0gcGFsbG9jKHNpemVv ZihIZWFwQmF0Y2gpKTsKKwloYi0+dHVwZGF0YSA9IHBhbGxvYyhzaXplb2YoSGVhcFR1cGxlRGF0 YSkgKiBtYXhpdGVtcyk7CisJaGItPm1heGl0ZW1zID0gbWF4aXRlbXM7CisJaGItPm5pdGVtcyA9 IDA7CisJaGItPmJ1ZiA9IEludmFsaWRCdWZmZXI7CisKKwkvKiBJbml0aWFsaXplIHN0YXRpYyBm aWVsZHMgb2YgSGVhcFR1cGxlRGF0YS4gUm93IGJvZGllcyByZW1haW4gb24gcGFnZS4gKi8KKwly ZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQoc3NjYW4tPnJzX3JkKTsKKwlmb3IgKGludCBpID0gMDsg aSA8IG1heGl0ZW1zOyBpKyspCisJCWhiLT50dXBkYXRhW2ldLnRfdGFibGVPaWQgPSByZWxpZDsK KworCXJldHVybiBoYjsKK30KKworLyoKKyAqIGhlYXBfc2Nhbl9lbmRfYmF0Y2gKKyAqCisgKiBS ZWxlYXNlIGFueSBvdXRzdGFuZGluZyBwaW4gYW5kIGZyZWUgdGhlIGJhdGNoIGFsbG9jYXRpb25z LiBDYWxsZXIgd2lsbAorICogbm90IHVzZSAnYW1fYmF0Y2gnIGFmdGVyIHRoaXMgcG9pbnQuCisg Ki8KK3ZvaWQKK2hlYXBfZW5kX2JhdGNoKFRhYmxlU2NhbkRlc2Mgc3NjYW4sIHZvaWQgKmFtX2Jh dGNoKQoreworCUhlYXBCYXRjaCAqaGIgPSAoSGVhcEJhdGNoICopIGFtX2JhdGNoOworCisJaWYg KEJ1ZmZlcklzVmFsaWQoaGItPmJ1ZikpCisJCVJlbGVhc2VCdWZmZXIoaGItPmJ1Zik7CisKKwlw ZnJlZShoYi0+dHVwZGF0YSk7CisJcGZyZWUoaGIpOworfQorCitpbnQKK2hlYXBfZ2V0bmV4dGJh dGNoKFRhYmxlU2NhbkRlc2Mgc3NjYW4sIHZvaWQgKmFtX2JhdGNoLCBTY2FuRGlyZWN0aW9uIGRp cikKK3sKKwlIZWFwU2NhbkRlc2Mgc2NhbiA9IChIZWFwU2NhbkRlc2MpIHNzY2FuOworCUhlYXBC YXRjaCAgKmhiID0gKEhlYXBCYXRjaCAqKSBhbV9iYXRjaDsKKwlCdWZmZXIJCWN1cmJ1ZjsKKwlp bnQJCQluOworCisJQXNzZXJ0KFNjYW5EaXJlY3Rpb25Jc0ZvcndhcmQoZGlyKSk7CisJQXNzZXJ0 KHNzY2FuLT5yc19mbGFncyAmIFNPX0FMTE9XX1BBR0VNT0RFKTsKKwlBc3NlcnQoaGItPm1heGl0 ZW1zID4gMCk7CisKKwkvKiBEcm9wIHByaW9yIGJhdGNoIHBpbiwgaWYgYW55LiAqLworCWlmIChC dWZmZXJJc1ZhbGlkKGhiLT5idWYpKQorCXsKKwkJUmVsZWFzZUJ1ZmZlcihoYi0+YnVmKTsKKwkJ aGItPmJ1ZiA9IEludmFsaWRCdWZmZXI7CisJfQorCisJaGItPm5pdGVtcyA9IDA7CisKKwkvKiBP bmUgY2FsbCBwZXIgYmF0Y2gsIG5ldmVyIGNyb3NzZXMgYSBwYWdlLiAqLworCW4gPSBoZWFwZ2V0 dHVwX3BhZ2Vtb2RlX2JhdGNoKHNjYW4sIGRpciwKKwkJCQkJCQkJICBzc2Nhbi0+cnNfbmtleXMs IHNzY2FuLT5yc19rZXksCisJCQkJCQkJCSAgaGItPnR1cGRhdGEsIGhiLT5tYXhpdGVtcyk7CisK KwlpZiAobiA9PSAwKQorCQlyZXR1cm4gMDsJLyogZW5kIG9mIHNjYW4gKi8KKworCS8qIEhvbGQg YSBzaGFyZWQgcGluIGZvciB0aGUgYmF0Y2ggbGlmZXRpbWUgc28gdF9kYXRhIHN0YXlzIHZhbGlk LiAqLworCWN1cmJ1ZiA9IHNjYW4tPnJzX2NidWY7CisJSW5jckJ1ZmZlclJlZkNvdW50KGN1cmJ1 Zik7CisJaGItPmJ1ZiA9IGN1cmJ1ZjsKKworCS8qIFBlci10dXBsZSBzdGF0cyAoY2FuIGJlIGNv bGxhcHNlZCBpbnRvIGEgZnV0dXJlIF9tdWx0aSgpIGNhbGwpLiAqLworCXBnc3RhdF9jb3VudF9o ZWFwX2dldG5leHRfYmF0Y2goc3NjYW4tPnJzX3JkLCBuKTsKKworCWhiLT5uaXRlbXMgPSBuOwor CXJldHVybiBuOworfQorCisvKi0tLS0tIEVuZCBvZiBiYXRjaGluZyBzdXBwb3J0IC0tLS0tKi8K Kwogdm9pZAogaGVhcF9zZXRfdGlkcmFuZ2UoVGFibGVTY2FuRGVzYyBzc2NhbiwgSXRlbVBvaW50 ZXIgbWludGlkLAogCQkJCSAgSXRlbVBvaW50ZXIgbWF4dGlkKQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV9oYW5kbGVyLmMKaW5kZXggYmNiYWM4NDRiYjYuLmVjNGVlY2NmMTljIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTI2MjMsNiArMjYyMywx MCBAQCBzdGF0aWMgY29uc3QgVGFibGVBbVJvdXRpbmUgaGVhcGFtX21ldGhvZHMgPSB7CiAJLnNj YW5fcmVzY2FuID0gaGVhcF9yZXNjYW4sCiAJLnNjYW5fZ2V0bmV4dHNsb3QgPSBoZWFwX2dldG5l eHRzbG90LAogCisJLnNjYW5fYmVnaW5fYmF0Y2ggPSBoZWFwX2JlZ2luX2JhdGNoLAorCS5zY2Fu X2dldG5leHRiYXRjaCA9IGhlYXBfZ2V0bmV4dGJhdGNoLAorCS5zY2FuX2VuZF9iYXRjaCA9IGhl YXBfZW5kX2JhdGNoLAorCiAJLnNjYW5fc2V0X3RpZHJhbmdlID0gaGVhcF9zZXRfdGlkcmFuZ2Us CiAJLnNjYW5fZ2V0bmV4dHNsb3RfdGlkcmFuZ2UgPSBoZWFwX2dldG5leHRzbG90X3RpZHJhbmdl LAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggZTYwZDM0ZGFkMjUuLjAyZjc3OTNmYmEwIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oCkBAIC03NCw2ICs3NCw5IEBAIHR5cGVkZWYgc3RydWN0IEhlYXBTY2FuRGVzY0Rh dGEKIAogCUhlYXBUdXBsZURhdGEgcnNfY3R1cDsJCS8qIGN1cnJlbnQgdHVwbGUgaW4gc2Nhbiwg aWYgYW55ICovCiAKKwlIZWFwVHVwbGVEYXRhICpyc19iYXRjaF9jdHVwOwkvKiBOVUxMIHdoZW4g bm90IHVzaW5nIGJhdGNoZWQgbW9kZSAqLworCUJ1ZmZlcglyc19iYXRjaF9jYnVmOwkJLyogYnVm ZmVyIGZlZWRpbmcgdGhlIGJhdGNoICovCisKIAkvKiBGb3Igc2NhbnMgdGhhdCBzdHJlYW0gcmVh ZHMgKi8KIAlSZWFkU3RyZWFtICpyc19yZWFkX3N0cmVhbTsKIApAQCAtMTAxLDYgKzEwNCwxOSBA QCB0eXBlZGVmIHN0cnVjdCBIZWFwU2NhbkRlc2NEYXRhCiB9IEhlYXBTY2FuRGVzY0RhdGE7CiB0 eXBlZGVmIHN0cnVjdCBIZWFwU2NhbkRlc2NEYXRhICpIZWFwU2NhbkRlc2M7CiAKKy8qCisgKiBI ZWFwQmF0Y2ggLS0gc3RhdGVsZXNzIHBlci1iYXRjaCBidWZmZXIuIEEgYmF0Y2ggcGlucyBvbmUg cGFnZSBhbmQKKyAqIGV4cG9zZXMgdXAgdG8gbWF4aXRlbXMgSGVhcFR1cGxlRGF0YSBoZWFkZXJz IHdob3NlIHRfZGF0YSBwb2ludCBpbnRvIHRoYXQKKyAqIHBhZ2UuCisgKi8KK3R5cGVkZWYgc3Ry dWN0IEhlYXBCYXRjaAoreworCUhlYXBUdXBsZURhdGEgICp0dXBkYXRhOwkvKiBsZW4gPSBtYXhp dGVtczsgaGVhZGVycyBvbmx5ICovCisJaW50CQkJCW5pdGVtczsJCS8qIHR1cGxlcyBwcm9kdWNl ZCBpbiBsYXN0IGdldG5leHRiYXRjaCgpICovCisJaW50CQkJCW1heGl0ZW1zOwkvKiBmaXhlZCBj YXBhY2l0eSBzZXQgYXQgYmVnaW5fYmF0Y2goKSAqLworCUJ1ZmZlcgkJCWJ1ZjsJCS8qIHNpbmds ZSBwaW5uZWQgYnVmZmVyIGZvciB0aGlzIGJhdGNoICovCit9IEhlYXBCYXRjaDsKKwogdHlwZWRl ZiBzdHJ1Y3QgQml0bWFwSGVhcFNjYW5EZXNjRGF0YQogewogCUhlYXBTY2FuRGVzY0RhdGEgcnNf aGVhcF9iYXNlOwpAQCAtMjk0LDYgKzMxMCwxMSBAQCBleHRlcm4gdm9pZCBoZWFwX2VuZHNjYW4o VGFibGVTY2FuRGVzYyBzc2Nhbik7CiBleHRlcm4gSGVhcFR1cGxlIGhlYXBfZ2V0bmV4dChUYWJs ZVNjYW5EZXNjIHNzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbik7CiBleHRlcm4gYm9vbCBo ZWFwX2dldG5leHRzbG90KFRhYmxlU2NhbkRlc2Mgc3NjYW4sCiAJCQkJCQkJIFNjYW5EaXJlY3Rp b24gZGlyZWN0aW9uLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CisKK2V4dGVybiB2b2lkICpoZWFw X2JlZ2luX2JhdGNoKFRhYmxlU2NhbkRlc2Mgc3NjYW4sIGludCBtYXhpdGVtcyk7CitleHRlcm4g dm9pZCBoZWFwX2VuZF9iYXRjaChUYWJsZVNjYW5EZXNjIHNzY2FuLCB2b2lkICphbV9iYXRjaCk7 CitleHRlcm4gaW50IGhlYXBfZ2V0bmV4dGJhdGNoKFRhYmxlU2NhbkRlc2Mgc3NjYW4sIHZvaWQg KmFtX2JhdGNoLCBTY2FuRGlyZWN0aW9uIGRpcik7CisKIGV4dGVybiB2b2lkIGhlYXBfc2V0X3Rp ZHJhbmdlKFRhYmxlU2NhbkRlc2Mgc3NjYW4sIEl0ZW1Qb2ludGVyIG1pbnRpZCwKIAkJCQkJCQkg IEl0ZW1Qb2ludGVyIG1heHRpZCk7CiBleHRlcm4gYm9vbCBoZWFwX2dldG5leHRzbG90X3RpZHJh bmdlKFRhYmxlU2NhbkRlc2Mgc3NjYW4sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv dGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBlMTZiZjAyNTY5 Mi4uOTUzMjA3ZWFjNTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMzUxLDYgKzM1MSwxNiBAQCB0 eXBlZGVmIHN0cnVjdCBUYWJsZUFtUm91dGluZQogCQkJCQkJCQkJIFNjYW5EaXJlY3Rpb24gZGly ZWN0aW9uLAogCQkJCQkJCQkJIFR1cGxlVGFibGVTbG90ICpzbG90KTsKIAorCS8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorCSAqIEJhdGNoZWQgc2NhbiBzdXBwb3J0CisJICogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJ ICovCisKKwl2b2lkCSAgICooKnNjYW5fYmVnaW5fYmF0Y2gpKFRhYmxlU2NhbkRlc2Mgc3NjYW4s IGludCBtYXhpdGVtcyk7CisJaW50CQkJKCpzY2FuX2dldG5leHRiYXRjaCkoVGFibGVTY2FuRGVz YyBzc2Nhbiwgdm9pZCAqYW1fYmF0Y2gsCisJCQkJCQkJCQkgU2NhbkRpcmVjdGlvbiBkaXIpOwor CXZvaWQJCSgqc2Nhbl9lbmRfYmF0Y2gpKFRhYmxlU2NhbkRlc2Mgc3NjYW4sIHZvaWQgKmFtX2Jh dGNoKTsKKwogCS8qLS0tLS0tLS0tLS0KIAkgKiBPcHRpb25hbCBmdW5jdGlvbnMgdG8gcHJvdmlk ZSBzY2FubmluZyBmb3IgcmFuZ2VzIG9mIEl0ZW1Qb2ludGVycy4KIAkgKiBJbXBsZW1lbnRhdGlv bnMgbXVzdCBlaXRoZXIgcHJvdmlkZSBib3RoIG9mIHRoZXNlIGZ1bmN0aW9ucywgb3IgbmVpdGhl cgpAQCAtMTAzNiw2ICsxMDQ2LDU0IEBAIHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3QoVGFibGVTY2Fu RGVzYyBzc2NhbiwgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sIFR1cGxlVGFibGVTCiAJcmV0dXJu IHNzY2FuLT5yc19yZC0+cmRfdGFibGVhbS0+c2Nhbl9nZXRuZXh0c2xvdChzc2NhbiwgZGlyZWN0 aW9uLCBzbG90KTsKIH0KIAorLyoKKyAqIHRhYmxlX3NjYW5fYmVnaW5fYmF0Y2gKKyAqCQlBbGxv Y2F0ZSBBTS1vd25lZCBiYXRjaCBwYXlsb2FkIHdpdGggY2FwYWNpdHkgJ21heGl0ZW1zJy4KKyAq Lworc3RhdGljIGlubGluZSB2b2lkICoKK3RhYmxlX3NjYW5fYmVnaW5fYmF0Y2goVGFibGVTY2Fu RGVzYyBzc2NhbiwgaW50IG1heGl0ZW1zKQoreworCWNvbnN0IFRhYmxlQW1Sb3V0aW5lICp0YW0g PSBzc2Nhbi0+cnNfcmQtPnJkX3RhYmxlYW07CisKKwlBc3NlcnQodGFtLT5zY2FuX2JlZ2luX2Jh dGNoICE9IE5VTEwpOworCisJcmV0dXJuIHRhbS0+c2Nhbl9iZWdpbl9iYXRjaChzc2NhbiwgbWF4 aXRlbXMpOworfQorCisvKgorICogdGFibGVfc2Nhbl9nZXRuZXh0YmF0Y2gKKyAqCQlGaWxsIG5l eHQgYmF0Y2ggZnJvbSB0aGUgQU0uIFJldHVybnMgbnVtYmVyIG9mIHR1cGxlcywgMCA9PiBFT1Mu CisgKgkJQmF0Y2hlcyBhcmUgc2luZ2xlLXBhZ2UgaW4gdjEuIERpcmVjdGlvbiBpcyBmb3J3YXJk IG9ubHkgaW4gdjEuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50Cit0YWJsZV9zY2FuX2dldG5leHRi YXRjaChUYWJsZVNjYW5EZXNjIHNzY2FuLCB2b2lkICphbV9iYXRjaCwgU2NhbkRpcmVjdGlvbiBk aXIpCit7CisJY29uc3QgVGFibGVBbVJvdXRpbmUgKnRhbSA9IHNzY2FuLT5yc19yZC0+cmRfdGFi bGVhbTsKKworCS8qIE9ubHkgZm9yd2FyZCBzY2FucyBhcmUgc3VwcG9ydGVkIGluIHRoZSBiYXRj aGVkIG1vZGUuICovCisJQXNzZXJ0KGRpciA9PSBGb3J3YXJkU2NhbkRpcmVjdGlvbik7CisJQXNz ZXJ0KHRhbS0+c2Nhbl9nZXRuZXh0YmF0Y2ggIT0gTlVMTCk7CisKKwlyZXR1cm4gdGFtLT5zY2Fu X2dldG5leHRiYXRjaChzc2NhbiwgYW1fYmF0Y2gsIGRpcik7Cit9CisKKy8qCisgKiB0YWJsZV9z Y2FuX2VuZF9iYXRjaAorICoJCVJlbGVhc2UgQU0tb3duZWQgcmVzb3VyY2VzIGZvciB0aGUgYmF0 Y2ggcGF5bG9hZC4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCit0YWJsZV9zY2FuX2VuZF9iYXRj aChUYWJsZVNjYW5EZXNjIHNzY2FuLCB2b2lkICphbV9iYXRjaCkKK3sKKwljb25zdCBUYWJsZUFt Um91dGluZSAqdGFtID0gc3NjYW4tPnJzX3JkLT5yZF90YWJsZWFtOworCisJaWYgKGFtX2JhdGNo ID09IE5VTEwpCisJCXJldHVybjsKKworCUFzc2VydCh0YW0tPnNjYW5fZW5kX2JhdGNoICE9IE5V TEwpOworCisJdGFtLT5zY2FuX2VuZF9iYXRjaChzc2NhbiwgYW1fYmF0Y2gpOworfQorCiAvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBUSUQgUmFuZ2Ugc2Nhbm5pbmcgcmVsYXRlZCBmdW5jdGlv bnMuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wZ3N0 YXQuaCBiL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCmluZGV4IGJjODA3N2NiYWU2Li4yNDlmMzU4M2Y5 MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdzdGF0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdz dGF0LmgKQEAgLTY5MSw2ICs2OTEsMTEgQEAgZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9hbmFs eXplKFJlbGF0aW9uIHJlbCwKIAkJaWYgKHBnc3RhdF9zaG91bGRfY291bnRfcmVsYXRpb24ocmVs KSkJCQkJCQlcCiAJCQkocmVsKS0+cGdzdGF0X2luZm8tPmNvdW50cy50dXBsZXNfcmV0dXJuZWQr KzsJCQlcCiAJfSB3aGlsZSAoMCkKKyNkZWZpbmUgcGdzdGF0X2NvdW50X2hlYXBfZ2V0bmV4dF9i YXRjaChyZWwsIG4pCQkJCQkJXAorCWRvIHsJCQkJCQkJCQkJCQkJCQlcCisJCWlmIChwZ3N0YXRf c2hvdWxkX2NvdW50X3JlbGF0aW9uKHJlbCkpCQkJCQkJXAorCQkJKHJlbCktPnBnc3RhdF9pbmZv LT5jb3VudHMudHVwbGVzX3JldHVybmVkICs9IG47CQlcCisJfSB3aGlsZSAoMCkKICNkZWZpbmUg cGdzdGF0X2NvdW50X2hlYXBfZmV0Y2gocmVsKQkJCQkJCQkJXAogCWRvIHsJCQkJCQkJCQkJCQkJ CQlcCiAJCWlmIChwZ3N0YXRfc2hvdWxkX2NvdW50X3JlbGF0aW9uKHJlbCkpCQkJCQkJXAotLSAK Mi40Ny4zCgo= --00000000000006d2b20640c83360 Content-Type: application/octet-stream; name="v3-0004-WIP-Add-agg_retrieve_direct_batch-for-plain-aggre.patch" Content-Disposition: attachment; filename="v3-0004-WIP-Add-agg_retrieve_direct_batch-for-plain-aggre.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgkh6mbe5 RnJvbSA4NzcyOGRkMjJhNTZjMzVkM2I3ZWUxMWU3MWUxNWE4ZDQxOTNhZmQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgNCBTZXAgMjAyNSAyMjo1NToyNSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjMg NC85XSBXSVA6IEFkZCBhZ2dfcmV0cmlldmVfZGlyZWN0X2JhdGNoKCkgZm9yIHBsYWluCiBhZ2dy ZWdhdGVzCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNl dD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpUZWFjaCBBZ2cgdG8gY29u c3VtZSBjaGlsZCB0dXBsZXMgaW4gYmF0Y2hlcyBmb3IgQUdHX1BMQUlOLiBBIG5ldwphZ2dfcmV0 cmlldmVfZGlyZWN0X2JhdGNoKCkgcHVsbHMgVHVwbGVCYXRjaCBmcm9tIHRoZSBjaGlsZCB2aWEK RXhlY1Byb2NOb2RlQmF0Y2goKSwgbWF0ZXJpYWxpemVzIGFzIG5lZWRlZCwgYW5kIGFkdmFuY2Vz IHBlci1hZ2cKdHJhbnNpdGlvbiBzdGF0ZSBvdmVyIHRoZSBiYXRjaC4gQSBmaXJzdCB0dXBsZSBp cyBjb3BpZWQgdG8gbWF0Y2gKdGhlIGRpcmVjdCBwYXRo4oCZcyBiZWhhdmlvciBiZWZvcmUgYmF0 Y2ggcHJvY2Vzc2luZy4KCkFkZCBBZ2dDYW5Vc2VQbGFpbkJhdGNoKCkgYW5kIHNlbGVjdCByZXRy aWV2ZV9wbGFpbiBhdCBpbml0OgpiYXRjaCBwYXRoIHdoZW4gbm8gZ3JvdXBpbmcgc2V0cywgc3Ry YXRlZ3kgaXMgQUdHX1BMQUlOLCBhbmQgdGhlCmNoaWxkIGV4cG9zZXMgRXhlY1Byb2NOb2RlQmF0 Y2goKTsgb3RoZXJ3aXNlIGtlZXAgdGhlIHJvdyBwYXRoLgoKUGxhbiBzaGFwZSBhbmQgRVhQTEFJ TiByZW1haW4gdW5jaGFuZ2VkLiBTZW1hbnRpY3MgYXJlIGlkZW50aWNhbAp0byB0aGUgbm9uLWJh dGNoIGRpcmVjdCBwYXRoOyB0aGlzIG9ubHkgcmVkdWNlcyBwZXItdHVwbGUgb3ZlcmhlYWQuCi0t LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jIHwgMTIzICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggIHwgICA1ICsr CiAyIGZpbGVzIGNoYW5nZWQsIDEyOCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5j CmluZGV4IGE0ZjNkMzBmMzA3Li4zYWNlNjM2MzUwOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUFnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYwpA QCAtODIwLDYgKzgyMCwyMCBAQCBhZHZhbmNlX2FnZ3JlZ2F0ZXMoQWdnU3RhdGUgKmFnZ3N0YXRl KQogCQkJCQkJCQkJICBhZ2dzdGF0ZS0+dG1wY29udGV4dCk7CiB9CiAKK3N0YXRpYyB2b2lkCith ZHZhbmNlX2FnZ3JlZ2F0ZXNfYmF0Y2goQWdnU3RhdGUgKmFnZ3N0YXRlLCBUdXBsZUJhdGNoICpi KQoreworCUV4cHJDb250ZXh0ICp0bXBjb250ZXh0ID0gYWdnc3RhdGUtPnRtcGNvbnRleHQ7CisJ RXhwclN0YXRlICpldmFsdHJhbnMgPSBhZ2dzdGF0ZS0+cGhhc2UtPmV2YWx0cmFuczsKKworCXdo aWxlIChUdXBsZUJhdGNoSGFzTW9yZShiKSkKKwl7CisJCXRtcGNvbnRleHQtPmVjeHRfb3V0ZXJ0 dXBsZSA9IFR1cGxlQmF0Y2hHZXROZXh0U2xvdChiKTsKKwkJRXhlY0V2YWxFeHByTm9SZXR1cm5T d2l0Y2hDb250ZXh0KGV2YWx0cmFucywgdG1wY29udGV4dCk7CisJCVJlc2V0RXhwckNvbnRleHQo dG1wY29udGV4dCk7CisJfQorfQorCiAvKgogICogUnVuIHRoZSB0cmFuc2l0aW9uIGZ1bmN0aW9u IGZvciBhIERJU1RJTkNUIG9yIE9SREVSIEJZIGFnZ3JlZ2F0ZQogICogd2l0aCBvbmx5IG9uZSBp bnB1dC4gIFRoaXMgaXMgY2FsbGVkIGFmdGVyIHdlIGhhdmUgY29tcGxldGVkCkBAIC0yMjYwLDYg KzIyNzQsOSBAQCBFeGVjQWdnKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkJCXJlc3VsdCA9IGFnZ19y ZXRyaWV2ZV9oYXNoX3RhYmxlKG5vZGUpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBBR0dfUExBSU46 CisJCQkJLyogaW5pdC10aW1lIGNob2ljZSAqLworCQkJCXJlc3VsdCA9IG5vZGUtPnJldHJpZXZl X3BsYWluKG5vZGUpOworCQkJCWJyZWFrOwogCQkJY2FzZSBBR0dfU09SVEVEOgogCQkJCXJlc3Vs dCA9IGFnZ19yZXRyaWV2ZV9kaXJlY3Qobm9kZSk7CiAJCQkJYnJlYWs7CkBAIC0yNjE4LDYgKzI2 MzUsOTEgQEAgYWdnX3JldHJpZXZlX2RpcmVjdChBZ2dTdGF0ZSAqYWdnc3RhdGUpCiAJcmV0dXJu IE5VTEw7CiB9CiAKK3N0YXRpYyBUdXBsZVRhYmxlU2xvdCAqCithZ2dfcmV0cmlldmVfZGlyZWN0 X2JhdGNoKEFnZ1N0YXRlICphZ2dzdGF0ZSkKK3sKKwlQbGFuU3RhdGUgKmNoaWxkID0gb3V0ZXJQ bGFuU3RhdGUoYWdnc3RhdGUpOworCUV4cHJDb250ZXh0ICplY29udGV4dCA9IGFnZ3N0YXRlLT5z cy5wcy5wc19FeHByQ29udGV4dDsKKwlFeHByQ29udGV4dCAqdG1wY29udGV4dCA9IGFnZ3N0YXRl LT50bXBjb250ZXh0OworCWNvbnN0IGJvb2wgaGFzR3JvdXBpbmdTZXRzID0gYWdnc3RhdGUtPnBo YXNlLT5udW1zZXRzID4gMDsKKwlUdXBsZVRhYmxlU2xvdCAqZmlyc3RTbG90ID0gYWdnc3RhdGUt PnNzLnNzX1NjYW5UdXBsZVNsb3Q7CisJVHVwbGVCYXRjaCAqYiA9IE5VTEw7CisKKwlBc3NlcnQo Y2hpbGQtPkV4ZWNQcm9jTm9kZUJhdGNoKTsKKworCS8qIG1pbWljIHRoZSBmaXJzdC10dXBsZSBj b3B5IGZyb20gYWdnX3JldHJpZXZlX2RpcmVjdCgpICovCisJZm9yICg7OykKKwl7CisJCWIgPSBF eGVjUHJvY05vZGVCYXRjaChjaGlsZCk7CisJCWlmIChiID09IE5VTEwpCisJCXsKKwkJCWlmICho YXNHcm91cGluZ1NldHMpCisJCQl7CisJCQkJYWdnc3RhdGUtPmlucHV0X2RvbmUgPSB0cnVlOwor CQkJCWJyZWFrOworCQkJfQorCQkJYWdnc3RhdGUtPmFnZ19kb25lID0gdHJ1ZTsKKwkJCWJyZWFr OworCQl9CisJCWlmIChiLT5udmFsaWQgPT0gMCkKKwkJCWNvbnRpbnVlOworCisJCVR1cGxlQmF0 Y2hNYXRlcmlhbGl6ZUFsbChiKTsKKwkJYWdnc3RhdGUtPmdycF9maXJzdFR1cGxlID0gRXhlY0Nv cHlTbG90SGVhcFR1cGxlKFR1cGxlQmF0Y2hHZXRTbG90KGIsIDApKTsKKwkJYnJlYWs7CisJfQor CisJLyogaW5pdGlhbGl6ZV9hZ2dyZWdhdGVzIGV0Yy4gYXMgaW4gdGhlIGRpcmVjdCBwYXRoICov CisJUmVTY2FuRXhwckNvbnRleHQoZWNvbnRleHQpOworCWZvciAoaW50IGkgPSAwOyBpIDwgTWF4 KGFnZ3N0YXRlLT5waGFzZS0+bnVtc2V0cywgMSk7IGkrKykKKwkJUmVTY2FuRXhwckNvbnRleHQo YWdnc3RhdGUtPmFnZ2NvbnRleHRzW2ldKTsKKworCWluaXRpYWxpemVfYWdncmVnYXRlcyhhZ2dz dGF0ZSwgYWdnc3RhdGUtPnBlcmdyb3VwcywKKwkJCQkJCSAgTWF4KGFnZ3N0YXRlLT5waGFzZS0+ bnVtc2V0cywgMSkpOworCisJaWYgKGFnZ3N0YXRlLT5ncnBfZmlyc3RUdXBsZSkKKwl7CisJCUV4 ZWNGb3JjZVN0b3JlSGVhcFR1cGxlKGFnZ3N0YXRlLT5ncnBfZmlyc3RUdXBsZSwgZmlyc3RTbG90 LCB0cnVlKTsKKwkJYWdnc3RhdGUtPmdycF9maXJzdFR1cGxlID0gTlVMTDsKKwkJdG1wY29udGV4 dC0+ZWN4dF9vdXRlcnR1cGxlID0gZmlyc3RTbG90OworCisJCWFkdmFuY2VfYWdncmVnYXRlc19i YXRjaChhZ2dzdGF0ZSwgYik7CisJCVJlc2V0RXhwckNvbnRleHQodG1wY29udGV4dCk7CisJfQor CisJLyogY29uc3VtZSByZW1haW5pbmcgcm93cyBpbiBjdXJyZW50IGFuZCBzdWJzZXF1ZW50IGJh dGNoZXMgKi8KKwlpZiAoYikKKwl7CisJCWlmIChUdXBsZUJhdGNoSGFzTW9yZShiKSkKKwkJCWFk dmFuY2VfYWdncmVnYXRlc19iYXRjaChhZ2dzdGF0ZSwgYik7CisJCWZvciAoOzspCisJCXsKKwkJ CWIgPSBFeGVjUHJvY05vZGVCYXRjaChjaGlsZCk7CisJCQlpZiAoYiA9PSBOVUxMKQorCQkJewor CQkJCWlmIChoYXNHcm91cGluZ1NldHMpCisJCQkJCWFnZ3N0YXRlLT5pbnB1dF9kb25lID0gdHJ1 ZTsKKwkJCQllbHNlCisJCQkJCWFnZ3N0YXRlLT5hZ2dfZG9uZSA9IHRydWU7CisJCQkJYnJlYWs7 CisJCQl9CisJCQlpZiAoYi0+bnZhbGlkID09IDApCisJCQkJY29udGludWU7CisKKwkJCVR1cGxl QmF0Y2hNYXRlcmlhbGl6ZUFsbChiKTsKKwkJCWFkdmFuY2VfYWdncmVnYXRlc19iYXRjaChhZ2dz dGF0ZSwgYik7CisJCX0KKwl9CisKKwkvKiBmaW5hbGl6ZSBhbmQgcHJvamVjdCBsaWtlIHRoZSBk aXJlY3QgcGF0aCAqLworCWVjb250ZXh0LT5lY3h0X291dGVydHVwbGUgPSBmaXJzdFNsb3Q7CisJ cHJlcGFyZV9wcm9qZWN0aW9uX3Nsb3QoYWdnc3RhdGUsIGVjb250ZXh0LT5lY3h0X291dGVydHVw bGUsIDApOworCXNlbGVjdF9jdXJyZW50X3NldChhZ2dzdGF0ZSwgMCwgZmFsc2UpOworCWZpbmFs aXplX2FnZ3JlZ2F0ZXMoYWdnc3RhdGUsIGFnZ3N0YXRlLT5wZXJhZ2csIGFnZ3N0YXRlLT5wZXJn cm91cHNbMF0pOworCisJcmV0dXJuIHByb2plY3RfYWdncmVnYXRlcyhhZ2dzdGF0ZSk7Cit9CisK IC8qCiAgKiBFeGVjQWdnIGZvciBoYXNoZWQgY2FzZTogcmVhZCBpbnB1dCBhbmQgYnVpbGQgaGFz aCB0YWJsZQogICovCkBAIC0zMjY1LDYgKzMzNjcsMjIgQEAgaGFzaGFnZ19yZXNldF9zcGlsbF9z dGF0ZShBZ2dTdGF0ZSAqYWdnc3RhdGUpCiAJfQogfQogCitzdGF0aWMgYm9vbAorQWdnQ2FuVXNl UGxhaW5CYXRjaChBZ2dTdGF0ZSAqYWdnc3RhdGUpCit7CisJY29uc3QgQWdnICphZ2dub2RlID0g KGNvbnN0IEFnZyAqKSBhZ2dzdGF0ZS0+c3MucHMucGxhbjsKKworCUFzc2VydChvdXRlclBsYW5T dGF0ZShhZ2dzdGF0ZSkpOworCisJLyogZ3JvdXBpbmcgc2V0cyBwcmVzZW50IC0+IGJhaWwgKi8K KwlpZiAoYWdnbm9kZS0+Z3JvdXBpbmdTZXRzICE9IE5JTCkKKwkJcmV0dXJuIGZhbHNlOworCisJ aWYgKGFnZ3N0YXRlLT5waGFzZS0+YWdnc3RyYXRlZ3kgIT0gQUdHX1BMQUlOKQorCQlyZXR1cm4g ZmFsc2U7CisKKwlyZXR1cm4gb3V0ZXJQbGFuU3RhdGUoYWdnc3RhdGUpLT5FeGVjUHJvY05vZGVC YXRjaDsKK30KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0KICAqIEV4ZWNJbml0QWdnCkBAIC00MDYw LDYgKzQxNzgsMTEgQEAgRXhlY0luaXRBZ2coQWdnICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAkJCQkoZXJyY29kZShFUlJDT0RFX0dST1VQSU5HX0VSUk9SKSwKIAkJCQkgZXJy bXNnKCJhZ2dyZWdhdGUgZnVuY3Rpb24gY2FsbHMgY2Fubm90IGJlIG5lc3RlZCIpKSk7CiAKKwlp ZiAoQWdnQ2FuVXNlUGxhaW5CYXRjaChhZ2dzdGF0ZSkpCisJCWFnZ3N0YXRlLT5yZXRyaWV2ZV9w bGFpbiA9IGFnZ19yZXRyaWV2ZV9kaXJlY3RfYmF0Y2g7CisJZWxzZQorCQlhZ2dzdGF0ZS0+cmV0 cmlldmVfcGxhaW4gPSBhZ2dfcmV0cmlldmVfZGlyZWN0OworCiAJLyoKIAkgKiBCdWlsZCBleHBy ZXNzaW9ucyBkb2luZyBhbGwgdGhlIHRyYW5zaXRpb24gd29yayBhdCBvbmNlLiBXZSBidWlsZCBh CiAJICogZGlmZmVyZW50IG9uZSBmb3IgZWFjaCBwaGFzZSwgYXMgdGhlIG51bWJlciBvZiB0cmFu c2l0aW9uIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGExMDQ1OTFhYzIwLi45Yjgx Yjg0MjE2MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTI1MzUsNiArMjUzNSw5IEBAIHR5cGVk ZWYgc3RydWN0IEFnZ1N0YXRlUGVyR3JvdXBEYXRhICpBZ2dTdGF0ZVBlckdyb3VwOwogdHlwZWRl ZiBzdHJ1Y3QgQWdnU3RhdGVQZXJQaGFzZURhdGEgKkFnZ1N0YXRlUGVyUGhhc2U7CiB0eXBlZGVm IHN0cnVjdCBBZ2dTdGF0ZVBlckhhc2hEYXRhICpBZ2dTdGF0ZVBlckhhc2g7CiAKK3N0cnVjdCBB Z2dTdGF0ZTsKK3R5cGVkZWYgVHVwbGVUYWJsZVNsb3QgKigqQWdnUmV0cmlldmVQbGFpbkZuKShz dHJ1Y3QgQWdnU3RhdGUgKik7CisKIHR5cGVkZWYgc3RydWN0IEFnZ1N0YXRlCiB7CiAJU2NhblN0 YXRlCXNzOwkJCQkvKiBpdHMgZmlyc3QgZmllbGQgaXMgTm9kZVRhZyAqLwpAQCAtMjYxMCw2ICsy NjEzLDggQEAgdHlwZWRlZiBzdHJ1Y3QgQWdnU3RhdGUKIAlBZ2dTdGF0ZVBlckdyb3VwICphbGxf cGVyZ3JvdXBzOwkvKiBhcnJheSBvZiBmaXJzdCAtPnBlcmdyb3VwcywgdGhhbgogCQkJCQkJCQkJ CSAqIC0+aGFzaF9wZXJncm91cCAqLwogCVNoYXJlZEFnZ0luZm8gKnNoYXJlZF9pbmZvOyAvKiBv bmUgZW50cnkgcGVyIHdvcmtlciAqLworCisJQWdnUmV0cmlldmVQbGFpbkZuIHJldHJpZXZlX3Bs YWluOyAvKiBpbml0LXRpbWUgY2hvaWNlICovCiB9IEFnZ1N0YXRlOwogCiAvKiAtLS0tLS0tLS0t LS0tLS0tCi0tIAoyLjQ3LjMKCg== --00000000000006d2b20640c83360 Content-Type: application/octet-stream; name="v3-0003-Executor-add-ExecProcNodeBatch-and-integrate-SeqS.patch" Content-Disposition: attachment; filename="v3-0003-Executor-add-ExecProcNodeBatch-and-integrate-SeqS.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgkh6mbe6 RnJvbSAxZWUwOWJhNDJjNTk1ZDEwODM1NmY3OGE0NmVhNGUwMGEwM2NlMTIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IE1vbiwgMSBTZXAgMjAyNSAyMjoxODozMCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjMg My85XSBFeGVjdXRvcjogYWRkIEV4ZWNQcm9jTm9kZUJhdGNoKCkgYW5kIGludGVncmF0ZQogU2Vx U2NhbiB3aXRoIGJhdGNoIEFQSQpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQv cGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKSW50 cm9kdWNlIGEgYmF0Y2gtY2FwYWJsZSBleGVjdXRvciBpbnRlcmZhY2UgYWxvbmdzaWRlIHRoZSBl eGlzdGluZwpzbG90LWF0LWEtdGltZSBwYXRoOgoKICogRXhlY1Byb2NOb2RlQmF0Y2goKSBpcyBh ZGRlZCB0byByZXR1cm4gYSBUdXBsZUJhdGNoIGluc3RlYWQgb2YgYQogICBUdXBsZVRhYmxlU2xv dC4gUGxhblN0YXRlIGdhaW5zIEV4ZWNQcm9jTm9kZUJhdGNoIGFzIGEgZnVuY3Rpb24KICAgcG9p bnRlci4KCkludGVncmF0ZSBTZXFTY2FuIHdpdGggdGhpcyBpbnRlcmZhY2U6CgogKiBBZGQgRXhl Y1NlcVNjYW5CYXRjaCogcm91dGluZXMgdGhhdCBkcml2ZSBoZWFwIHZpYSB0aGUgYmF0Y2ggdGFi bGUKICAgQU0gQVBJIGFuZCByZXR1cm4gYSBUdXBsZUJhdGNoLgogKiBBdCBpbml0LCBzZXQgcHMu RXhlY1Byb2NOb2RlQmF0Y2ggdG8gdGhlc2Ugcm91dGluZXMgd2hlbgogICBTY2FuQ2FuVXNlQmF0 Y2hpbmcoKSBhbGxvd3MuCiAqIFJldGFpbiBFeGVjU2VxU2NhbkJhdGNoU2xvdCogdmFyaWFudHMg Zm9yIHNsb3QtYXQtYS10aW1lIGNvbnN1bWVycy4KClRoaXMgYnVpbGRzIG9uIDAwMDIsIHdoaWNo IGludHJvZHVjZWQgVHVwbGVCYXRjaCBhbmQgbWFkZSBTZXFTY2FuCmNvbnN1bWUgdGhlIEFN4oCZ cyBiYXRjaCBBUEkgaW50ZXJuYWxseSBidXQgc3RpbGwgc3VyZmFjZSBzbG90cy4gV2l0aCB0aGlz CnBhdGNoLCBTZXFTY2FuIGNhbiBzdXJmYWNlIGJhdGNoZXMgZGlyZWN0bHkgdG8gYmF0Y2gtYXdh cmUgdXBwZXIgbm9kZXMuCgpQbGFuIHNoYXBlIGFuZCBFWFBMQUlOIG91dHB1dCByZW1haW4gdW5j aGFuZ2VkOyBvbmx5IGludGVybmFsIHR1cGxlIGZsb3cKZGlmZmVycyB3aGVuIGJhdGNoaW5nIGlz IGVuYWJsZWQgYW5kIGFsbG93ZWQuCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nu b2RlLmMgfCA1MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVNlcXNjYW4uYyAgfCAzNSArKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjU2Nhbi5oICAgICB8IDUxICsrKysrKysrKysrKysrKysrKysrKysrKysr KysKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAgIHwgMTAgKysrKysrCiBzcmMv aW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICB8ICA1ICsrKwogNSBmaWxlcyBjaGFuZ2Vk LCAxNTMgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXgg ZjVmOWNmYmVlYWQuLmE4YzAzMTVlODc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUHJvY25vZGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUu YwpAQCAtMTIxLDYgKzEyMSw4IEBACiAKIHN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY1Byb2NO b2RlRmlyc3QoUGxhblN0YXRlICpub2RlKTsKIHN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY1By b2NOb2RlSW5zdHIoUGxhblN0YXRlICpub2RlKTsKK3N0YXRpYyBUdXBsZUJhdGNoICpFeGVjUHJv Y05vZGVCYXRjaEZpcnN0KFBsYW5TdGF0ZSAqbm9kZSk7CitzdGF0aWMgVHVwbGVCYXRjaCAqRXhl Y1Byb2NOb2RlQmF0Y2hJbnN0cihQbGFuU3RhdGUgKm5vZGUpOwogc3RhdGljIGJvb2wgRXhlY1No dXRkb3duTm9kZV93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpjb250ZXh0KTsKIAogCkBA IC0zODksNiArMzkxLDggQEAgRXhlY0luaXROb2RlKFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCX0KIAogCUV4ZWNTZXRFeGVjUHJvY05vZGUocmVzdWx0LCByZXN1bHQt PkV4ZWNQcm9jTm9kZSk7CisJaWYgKHJlc3VsdC0+RXhlY1Byb2NOb2RlQmF0Y2gpCisJCUV4ZWNT ZXRFeGVjUHJvY05vZGVCYXRjaChyZXN1bHQsIHJlc3VsdC0+RXhlY1Byb2NOb2RlQmF0Y2gpOwog CiAJLyoKIAkgKiBJbml0aWFsaXplIGFueSBpbml0UGxhbnMgcHJlc2VudCBpbiB0aGlzIG5vZGUu ICBUaGUgcGxhbm5lciBwdXQgdGhlbSBpbgpAQCAtNDg5LDYgKzQ5Myw1NCBAQCBFeGVjUHJvY05v ZGVJbnN0cihQbGFuU3RhdGUgKm5vZGUpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIEV4 ZWNTZXRFeGVjUHJvY05vZGVCYXRjaAorICoJCUluc3RhbGwgRXhlY1Byb2NOb2RlQmF0Y2ggd2l0 aCBmaXJzdC1jYWxsIHdyYXBwZXIsIG1pcnJvcmluZyByb3cgcGF0aC4KKyAqLwordm9pZAorRXhl Y1NldEV4ZWNQcm9jTm9kZUJhdGNoKFBsYW5TdGF0ZSAqbm9kZSwgRXhlY1Byb2NOb2RlQmF0Y2hN dGQgZnVuY3Rpb24pCit7CisJbm9kZS0+RXhlY1Byb2NOb2RlQmF0Y2hSZWFsID0gZnVuY3Rpb247 CisJbm9kZS0+RXhlY1Byb2NOb2RlQmF0Y2ggPSBFeGVjUHJvY05vZGVCYXRjaEZpcnN0OworfQor CisvKgorICogRXhlY1Byb2NOb2RlQmF0Y2hGaXJzdAorICoJCU9uZS10aW1lIHN0YWNrLWRlcHRo IGNoZWNrOyB0aGVuIHBpY2sgaW5zdHJ1bWVudC9uby1pbnN0cnVtZW50IHdyYXBwZXIuCisgKi8K K3N0YXRpYyBUdXBsZUJhdGNoICoKK0V4ZWNQcm9jTm9kZUJhdGNoRmlyc3QoUGxhblN0YXRlICpu b2RlKQoreworCWNoZWNrX3N0YWNrX2RlcHRoKCk7CisKKwlpZiAobm9kZS0+aW5zdHJ1bWVudCkK KwkJbm9kZS0+RXhlY1Byb2NOb2RlQmF0Y2ggPSBFeGVjUHJvY05vZGVCYXRjaEluc3RyOworCWVs c2UKKwkJbm9kZS0+RXhlY1Byb2NOb2RlQmF0Y2ggPSBub2RlLT5FeGVjUHJvY05vZGVCYXRjaFJl YWw7CisKKwlyZXR1cm4gbm9kZS0+RXhlY1Byb2NOb2RlQmF0Y2gobm9kZSk7Cit9CisKKy8qCisg KiBFeGVjUHJvY05vZGVCYXRjaEluc3RyCisgKgkJSW5zdHJ1bWVudGF0aW9uIHdyYXBwZXIgZm9y IGJhdGNoIGNhbGxzLgorICoKKyAqIE5vdGU6IHdlIGNhbiByZWNvcmQgbnJvd3MgYXMgdGhlICJ0 dXBsZSIgY291bnQgZm9yIHRoaXMgY2FsbC4gVGhhdCBrZWVwcworICogaW5zdHJ1bWVudGF0aW9u IG1lYW5pbmdmdWwgd2l0aG91dCBjaGFuZ2luZyBJbnN0ciBBUEkuCisgKi8KK3N0YXRpYyBUdXBs ZUJhdGNoICoKK0V4ZWNQcm9jTm9kZUJhdGNoSW5zdHIoUGxhblN0YXRlICpub2RlKQoreworCVR1 cGxlQmF0Y2ggKmI7CisKKwlJbnN0clN0YXJ0Tm9kZShub2RlLT5pbnN0cnVtZW50KTsKKworCWIg PSBub2RlLT5FeGVjUHJvY05vZGVCYXRjaFJlYWwobm9kZSk7CisKKwlJbnN0clN0b3BOb2RlKG5v ZGUtPmluc3RydW1lbnQsIGIgPyAoZG91YmxlKSBiLT5udmFsaWQgOiAwLjApOworCisJcmV0dXJu IGI7Cit9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlNdWx0aUV4ZWNQcm9jTm9kZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVTZXFzY2FuLmMKaW5kZXggMjU1MmQ0MjBmMWMuLmE0Y2YxZTUxYWYwIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTZXFzY2FuLmMKQEAgLTMzNCw2ICszMzQsMzcgQEAgRXhlY1NlcVNjYW5CYXRj aFNsb3RXaXRoUXVhbFByb2plY3QoUGxhblN0YXRlICpwc3RhdGUpCiAJCQkJCQkJCQkgcHN0YXRl LT5xdWFsLCBwc3RhdGUtPnBzX1Byb2pJbmZvKTsKIH0KIAorc3RhdGljIFR1cGxlQmF0Y2ggKgor RXhlY1NlcVNjYW5CYXRjaChQbGFuU3RhdGUgKnBzdGF0ZSkKK3sKKwlTZXFTY2FuU3RhdGUgKm5v ZGUgPSBjYXN0Tm9kZShTZXFTY2FuU3RhdGUsIHBzdGF0ZSk7CisKKwlBc3NlcnQocHN0YXRlLT5z dGF0ZS0+ZXNfZXBxX2FjdGl2ZSA9PSBOVUxMKTsKKwlBc3NlcnQocHN0YXRlLT5xdWFsID09IE5V TEwpOworCUFzc2VydChwc3RhdGUtPnBzX1Byb2pJbmZvID09IE5VTEwpOworCisJcmV0dXJuIEV4 ZWNTY2FuRXh0ZW5kZWRCYXRjaCgmbm9kZS0+c3MsCisJCQkJCQkJCSAoRXhlY1NjYW5BY2Nlc3NC YXRjaE10ZCkgU2VxTmV4dEJhdGNoLAorCQkJCQkJCQkgTlVMTCwgTlVMTCk7Cit9CisKKy8qCisg KiBWYXJpYW50IG9mIEV4ZWNTZXFTY2FuKCkgYnV0IHdoZW4gcXVhbCBldmFsdWF0aW9uIGlzIHJl cXVpcmVkLgorICovCitzdGF0aWMgVHVwbGVCYXRjaCAqCitFeGVjU2VxU2NhbkJhdGNoV2l0aFF1 YWwoUGxhblN0YXRlICpwc3RhdGUpCit7CisJU2VxU2NhblN0YXRlICpub2RlID0gY2FzdE5vZGUo U2VxU2NhblN0YXRlLCBwc3RhdGUpOworCisJQXNzZXJ0KHBzdGF0ZS0+c3RhdGUtPmVzX2VwcV9h Y3RpdmUgPT0gTlVMTCk7CisJcGdfYXNzdW1lKHBzdGF0ZS0+cXVhbCAhPSBOVUxMKTsKKwlBc3Nl cnQocHN0YXRlLT5wc19Qcm9qSW5mbyA9PSBOVUxMKTsKKworCXJldHVybiBFeGVjU2NhbkV4dGVu ZGVkQmF0Y2goJm5vZGUtPnNzLAorCQkJCQkJCQkgKEV4ZWNTY2FuQWNjZXNzQmF0Y2hNdGQpIFNl cU5leHRCYXRjaE1hdGVyaWFsaXplLAorCQkJCQkJCQkgcHN0YXRlLT5xdWFsLCBOVUxMKTsKK30K KwogLyogQmF0Y2ggU2VxU2NhbiBlbmFibGVtZW50IGFuZCBkaXNwYXRjaCAqLwogc3RhdGljIHZv aWQKIFNlcVNjYW5Jbml0QmF0Y2hpbmcoU2VxU2NhblN0YXRlICpzY2Fuc3RhdGUsIGludCBlZmxh Z3MpCkBAIC0zNDgsMTAgKzM3OSwxMiBAQCBTZXFTY2FuSW5pdEJhdGNoaW5nKFNlcVNjYW5TdGF0 ZSAqc2NhbnN0YXRlLCBpbnQgZWZsYWdzKQogCXsKIAkJaWYgKHNjYW5zdGF0ZS0+c3MucHMucHNf UHJvakluZm8gPT0gTlVMTCkKIAkJeworCQkJc2NhbnN0YXRlLT5zcy5wcy5FeGVjUHJvY05vZGVC YXRjaCA9IEV4ZWNTZXFTY2FuQmF0Y2g7CiAJCQlzY2Fuc3RhdGUtPnNzLnBzLkV4ZWNQcm9jTm9k ZSA9IEV4ZWNTZXFTY2FuQmF0Y2hTbG90OwogCQl9CiAJCWVsc2UKIAkJeworCQkJc2NhbnN0YXRl LT5zcy5wcy5FeGVjUHJvY05vZGVCYXRjaCA9IE5VTEw7CiAJCQlzY2Fuc3RhdGUtPnNzLnBzLkV4 ZWNQcm9jTm9kZSA9IEV4ZWNTZXFTY2FuQmF0Y2hTbG90V2l0aFByb2plY3Q7CiAJCX0KIAl9CkBA IC0zNTksMTAgKzM5MiwxMiBAQCBTZXFTY2FuSW5pdEJhdGNoaW5nKFNlcVNjYW5TdGF0ZSAqc2Nh bnN0YXRlLCBpbnQgZWZsYWdzKQogCXsKIAkJaWYgKHNjYW5zdGF0ZS0+c3MucHMucHNfUHJvaklu Zm8gPT0gTlVMTCkKIAkJeworCQkJc2NhbnN0YXRlLT5zcy5wcy5FeGVjUHJvY05vZGVCYXRjaCA9 IEV4ZWNTZXFTY2FuQmF0Y2hXaXRoUXVhbDsKIAkJCXNjYW5zdGF0ZS0+c3MucHMuRXhlY1Byb2NO b2RlID0gRXhlY1NlcVNjYW5CYXRjaFNsb3RXaXRoUXVhbDsKIAkJfQogCQllbHNlCiAJCXsKKwkJ CXNjYW5zdGF0ZS0+c3MucHMuRXhlY1Byb2NOb2RlQmF0Y2ggPSBOVUxMOwogCQkJc2NhbnN0YXRl LT5zcy5wcy5FeGVjUHJvY05vZGUgPSBFeGVjU2VxU2NhbkJhdGNoU2xvdFdpdGhRdWFsUHJvamVj dDsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNTY2FuLmgg Yi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjU2Nhbi5oCmluZGV4IGZlYzYwNjQ3MWM4Li5mYjRi NTdhODMxYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1NjYW4uaAorKysg Yi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjU2Nhbi5oCkBAIC0yOTcsNCArMjk3LDU1IEBAIEV4 ZWNTY2FuRXh0ZW5kZWRCYXRjaFNsb3QoU2NhblN0YXRlICpub2RlLAogCX0KIH0KIAorc3RhdGlj IGlubGluZSBUdXBsZUJhdGNoICoKK0V4ZWNTY2FuRXh0ZW5kZWRCYXRjaChTY2FuU3RhdGUgKm5v ZGUsCisJCQkJCSAgRXhlY1NjYW5BY2Nlc3NCYXRjaE10ZCBhY2Nlc3NCYXRjaE10ZCwKKwkJCQkJ ICBFeHByU3RhdGUgKnF1YWwsIFByb2plY3Rpb25JbmZvICpwcm9qSW5mbykKK3sKKwlFeHByQ29u dGV4dCAqZWNvbnRleHQgPSBub2RlLT5wcy5wc19FeHByQ29udGV4dDsKKwlUdXBsZUJhdGNoICpi ID0gbm9kZS0+cHMucHNfQmF0Y2g7CisJaW50CQkJcXVhbGlmaWVkOworCisJLyogQmF0Y2ggcGF0 aCBkb2VzIG5vdCBzdXBwb3J0IEVQUSAqLworCUFzc2VydChub2RlLT5wcy5zdGF0ZS0+ZXNfZXBx X2FjdGl2ZSA9PSBOVUxMKTsKKwlBc3NlcnQoVHVwbGVCYXRjaElzVmFsaWQoYikpOworCisJZm9y ICg7OykKKwl7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyogR2V0IG5leHQgYmF0 Y2ggZnJvbSB0aGUgQU0gKi8KKwkJaWYgKCFhY2Nlc3NCYXRjaE10ZChub2RlKSkKKwkJCXJldHVy biBOVUxMOworCisJCWlmIChxdWFsICE9IE5VTEwpCisJCXsKKwkJCXF1YWxpZmllZCA9IDA7CisJ CQl3aGlsZSAoVHVwbGVCYXRjaEhhc01vcmUoYikpCisJCQl7CisJCQkJVHVwbGVUYWJsZVNsb3Qg KmluID0gVHVwbGVCYXRjaEdldE5leHRTbG90KGIpOworCisJCQkJQXNzZXJ0KGluKTsKKwkJCQlS ZXNldEV4cHJDb250ZXh0KGVjb250ZXh0KTsKKwkJCQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUg PSBpbjsKKworCQkJCWlmIChFeGVjUXVhbChxdWFsLCBlY29udGV4dCkpCisJCQkJeworCQkJCQlU dXBsZUJhdGNoU3RvcmVJbk91dChiLCBxdWFsaWZpZWQsIGluKTsKKwkJCQkJcXVhbGlmaWVkKys7 CisJCQkJfQorCQkJCWVsc2UKKwkJCQkJSW5zdHJDb3VudEZpbHRlcmVkMShub2RlLCAxKTsKKwkJ CX0KKwkJCVR1cGxlQmF0Y2hVc2VPdXRwdXQoYiwgcXVhbGlmaWVkKTsKKwkJfQorCQllbHNlCisJ CQlxdWFsaWZpZWQgPSBiLT5udmFsaWQ7CisKKwkJaWYgKHF1YWxpZmllZCA+IDApCisJCQlyZXR1 cm4gYjsKKwkJLyogZWxzZSBnZXQgdGhlIG5leHQgYmF0Y2ggZnJvbSB0aGUgQU0gKi8KKwl9Cit9 CisKICNlbmRpZgkJCQkJCQkvKiBFWEVDU0NBTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApp bmRleCAxNzI1OGY3YWUyZC4uY2Y1YjBjN2UwNWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApA QCAtMjk0LDYgKzI5NCw3IEBAIGV4dGVybiB2b2lkIEV2YWxQbGFuUXVhbEVuZChFUFFTdGF0ZSAq ZXBxc3RhdGUpOwogICovCiBleHRlcm4gUGxhblN0YXRlICpFeGVjSW5pdE5vZGUoUGxhbiAqbm9k ZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZvaWQgRXhlY1NldEV4ZWNQ cm9jTm9kZShQbGFuU3RhdGUgKm5vZGUsIEV4ZWNQcm9jTm9kZU10ZCBmdW5jdGlvbik7CitleHRl cm4gdm9pZCBFeGVjU2V0RXhlY1Byb2NOb2RlQmF0Y2goUGxhblN0YXRlICpub2RlLCBFeGVjUHJv Y05vZGVCYXRjaE10ZCBmdW5jdGlvbik7CiBleHRlcm4gTm9kZSAqTXVsdGlFeGVjUHJvY05vZGUo UGxhblN0YXRlICpub2RlKTsKIGV4dGVybiB2b2lkIEV4ZWNFbmROb2RlKFBsYW5TdGF0ZSAqbm9k ZSk7CiBleHRlcm4gdm9pZCBFeGVjU2h1dGRvd25Ob2RlKFBsYW5TdGF0ZSAqbm9kZSk7CkBAIC0z MTUsNiArMzE2LDE1IEBAIEV4ZWNQcm9jTm9kZShQbGFuU3RhdGUgKm5vZGUpCiAKIAlyZXR1cm4g bm9kZS0+RXhlY1Byb2NOb2RlKG5vZGUpOwogfQorCitzdGF0aWMgaW5saW5lIFR1cGxlQmF0Y2gg KgorRXhlY1Byb2NOb2RlQmF0Y2goUGxhblN0YXRlICpub2RlKQoreworCWlmIChub2RlLT5jaGdQ YXJhbSAhPSBOVUxMKSAvKiBzb21ldGhpbmcgY2hhbmdlZD8gKi8KKwkJRXhlY1JlU2Nhbihub2Rl KTsJCS8qIGxldCBSZVNjYW4gaGFuZGxlIHRoaXMgKi8KKworCXJldHVybiBub2RlLT5FeGVjUHJv Y05vZGVCYXRjaChub2RlKTsKK30KICNlbmRpZgogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRl eCBmNGJiOGY3ZGQ3Zi4uYTEwNDU5MWFjMjAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0xMTQ3 LDYgKzExNDcsNyBAQCB0eXBlZGVmIFR1cGxlVGFibGVTbG90ICooKkV4ZWNQcm9jTm9kZU10ZCkg KFBsYW5TdGF0ZSAqcHN0YXRlKTsKIC8qIFJldHVybiBhIGJhdGNoOyBtYXkgcmV1c2UgY2FsbGVy LXByb3ZpZGVkIGVudmVsb3BlLiBOVUxMID0+IGVuZCBvZiBzY2FuLiAqLwogc3RydWN0IFR1cGxl QmF0Y2g7CiB0eXBlZGVmIHN0cnVjdCBUdXBsZUJhdGNoIFR1cGxlQmF0Y2g7Cit0eXBlZGVmIFR1 cGxlQmF0Y2ggKigqRXhlY1Byb2NOb2RlQmF0Y2hNdGQpKHN0cnVjdCBQbGFuU3RhdGUgKnBzKTsK IAogLyogLS0tLS0tLS0tLS0tLS0tLQogICoJCVBsYW5TdGF0ZSBub2RlCkBAIC0xMTcxLDYgKzEx NzIsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhblN0YXRlCiAJRXhlY1Byb2NOb2RlTXRkIEV4ZWNQ cm9jTm9kZVJlYWw7CS8qIGFjdHVhbCBmdW5jdGlvbiwgaWYgYWJvdmUgaXMgYQogCQkJCQkJCQkJ CSAqIHdyYXBwZXIgKi8KIAorCS8qIE9wdGlvbmFsIGJhdGNoLXByb2R1Y2luZyBlbnRyeSBwb2lu dCAoTlVMTCA9PiBubyBiYXRjaGluZykuICovCisJRXhlY1Byb2NOb2RlQmF0Y2hNdGQgRXhlY1By b2NOb2RlQmF0Y2g7CisJRXhlY1Byb2NOb2RlQmF0Y2hNdGQgRXhlY1Byb2NOb2RlQmF0Y2hSZWFs OworCiAJSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50OwkvKiBPcHRpb25hbCBydW50aW1lIHN0 YXRzIGZvciB0aGlzIG5vZGUgKi8KIAlXb3JrZXJJbnN0cnVtZW50YXRpb24gKndvcmtlcl9pbnN0 cnVtZW50OwkvKiBwZXItd29ya2VyIGluc3RydW1lbnRhdGlvbiAqLwogCi0tIAoyLjQ3LjMKCg== --00000000000006d2b20640c83360 Content-Type: application/octet-stream; name="v3-0002-SeqScan-add-batch-driven-variants-returning-slots.patch" Content-Disposition: attachment; filename="v3-0002-SeqScan-add-batch-driven-variants-returning-slots.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mgkh6mbf7 RnJvbSBkYWM3Y2YxY2QyYTAxMzQ3ZmFmNmI3ZmFiMzEwN2MwOGRhODhhYzkwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IE1vbiwgMSBTZXAgMjAyNSAyMTo1OTo1NiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjMg Mi85XSBTZXFTY2FuOiBhZGQgYmF0Y2gtZHJpdmVuIHZhcmlhbnRzIHJldHVybmluZyBzbG90cwoK VGVhY2ggU2VxU2NhbiB0byBkcml2ZSB0aGUgdGFibGUgQU0gdmlhIG5ldyB0aGUgYmF0Y2ggQVBJ IGFkZGVkIGluCnRoZSBwcmV2aW91cyBjb21taXQsIHdoaWxlIHN0aWxsIHJldHVybmluZyBvbmUg VHVwbGVUYWJsZVNsb3QgYXQgYQp0aW1lIHRvIGNhbGxlcnMuIFRoaXMgcmVkdWNlcyBwZXIgdHVw bGUgQU0gY3Jvc3NpbmdzIHdpdGhvdXQKY2hhbmdpbmcgdGhlIG5vZGUgaW50ZXJmYWNlIHNlZW4g YnkgcGFyZW50cy4KCkFkZCBUdXBsZUJhdGNoIGFuZCBzdXBwb3J0aW5nIGNvZGUgaW4gZXhlY0Jh dGNoLmMvaCB0byBob2xkIGV4ZWN1dG9yCnNpZGUgYmF0Y2hpbmcgc3RhdGUuIFBsYW5TdGF0ZSBn YWlucyBwc19CYXRjaCB0byBjYXJyeSB0aGUgYWN0aXZlClR1cGxlQmF0Y2ggd2hlbiBhIG5vZGUg c3VwcG9ydHMgYmF0Y2hpbmcuCgpXaXJlIHVwIHJ1bnRpbWUgc2VsZWN0aW9uIGluIEV4ZWNJbml0 U2VxU2NhbiB1c2luZwpTY2FuQ2FuVXNlQmF0Y2hpbmcoKS4gV2hlbiBleGVjdXRvcl9iYXRjaGlu ZyBpcyBlbmFibGVkLCBFUFEgaXMKaW5hY3RpdmUsIHRoZSBzY2FuIGlzIG5vdCBiYWNrd2FyZCwg YW5kIHRoZSByZWxhdGlvbiBzdXBwb3J0cwpiYXRjaGluZywgcHMuRXhlY1Byb2NOb2RlIGlzIHNl dCB0byBhIGJhdGNoLWRyaXZlbiB2YXJpYW50LiBPdGhlcndpc2UKdGhlIG5vbi1iYXRjaCBwYXRo IGlzIHVzZWQuCgpQbGFuIHNoYXBlIGFuZCBFWFBMQUlOIG91dHB1dCByZW1haW4gdW5jaGFuZ2Vk OyBvbmx5IHRoZSBpbnRlcm5hbAp0dXBsZSBmbG93IGRpZmZlcnMgd2hlbiBiYXRjaGluZyBpcyBl bmFibGVkIGFuZCBhbGxvd2VkLgoKTm90ZXMgLyBjdXJyZW50IGxpbWl0czoKCi0gQmF0Y2hpbmcg dXNlcyBFWEVDX0JBVENIX1JPV1MgKGN1cnJlbnRseSA2NCkgYXMgdGhlIHRhcmdldCBjYXBhY2l0 eS4KLSBXaXRoIHRoZSBjdXJyZW50IGhlYXBhbSwgYmF0Y2hlcyBhcmUgY29tcG9zZWQgZnJvbSBh IHNpbmdsZSBwYWdlLCBzbwogIHRoZSBiYXRjaCBtYXkgbm90IGFsd2F5cyBiZSBmdWxsLiBGdXR1 cmUgd29yayBtYXkgbGV0IFNlcVNjYW4gYW5kL29yCiAgQU1zIHRvcCB1cCBiYXRjaGVzIGFjcm9z cyBwYWdlcyB3aGVuIHNhZmUgdG8gZG8gc28uCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtLmMgICAgICAgICAgfCAgMjkgKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX2hhbmRsZXIuYyAgfCAgMTUgKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFt LmMgICAgICAgIHwgIDExICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZSAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjQmF0Y2guYyAgICAgICAgICB8 IDExNyArKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1NjYW4uYyAgICAg ICAgICAgfCAgMzEgKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvbWVzb24uYnVpbGQgICAgICAg ICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgfCAx NzYgKysrKysrKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxz LmMgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVy cy5kYXQgfCAgIDcgKwogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCAgICAgICAgICAgICAgfCAgMjcg KysrKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0JhdGNoLmggICAgICAgICAgfCAxMDIgKysr KysrKysrKysrKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1NjYW4uaCAgICAgICAgICAgfCAg NTQgKysrKysrKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgICAgfCAg IDQgKwogc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggICAgICAgICAgICAgICAgICAgfCAgIDEgKwog c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgfCAgIDggKwogMTcgZmls ZXMgY2hhbmdlZCwgNTg3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjQmF0Y2guYwogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNCYXRjaC5oCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW0uYwppbmRleCA4YjlhODA0NDljMS4uMzU1ZGRkOTgzOGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hl YXBhbS5jCkBAIC0xNTcwLDYgKzE1NzAsMzUgQEAgaGVhcF9iZWdpbl9iYXRjaChUYWJsZVNjYW5E ZXNjIHNzY2FuLCBpbnQgbWF4aXRlbXMpCiAJcmV0dXJuIGhiOwogfQogCisvKgorICogaGVhcF9z Y2FuX21hdGVyaWFsaXplX2FsbAorICoKKyAqIEJpbmQgYWxsIHR1cGxlcyBvZiB0aGUgY3VycmVu dCBiYXRjaCBpbnRvICdzbG90cycuIFdlIGJpbmQgdGhlCisgKiBIZWFwVHVwbGVEYXRhIGhlYWRl ciB0aGF0IHBvaW50cyBpbnRvIHRoZSBwaW5uZWQgcGFnZS4gTm8gcGVyLXJvdyBjb3B5LgorICov Cit2b2lkCitoZWFwX21hdGVyaWFsaXplX2JhdGNoX2FsbCh2b2lkICphbV9iYXRjaCwgVHVwbGVU YWJsZVNsb3QgKipzbG90cywgaW50IG4pCit7CisJSGVhcEJhdGNoICpoYiA9IChIZWFwQmF0Y2gg KikgYW1fYmF0Y2g7CisKKwlBc3NlcnQobiA8PSBoYi0+bml0ZW1zKTsKKworCWZvciAoaW50IGkg PSAwOyBpIDwgbjsgaSsrKQorCXsKKwkJSGVhcFR1cGxlRGF0YSAqdHVwbGUgPSAmaGItPnR1cGRh dGFbaV07CisJCUhlYXBUdXBsZVRhYmxlU2xvdCAqc2xvdCA9IChIZWFwVHVwbGVUYWJsZVNsb3Qg Kikgc2xvdHNbaV07CisKKwkJLyogSW5saW5lIG9mIEV4ZWNTdG9yZUhlYXBUdXBsZSh0dXBsZSwg c2xvdCwgZmFsc2UpICovCisJCXNsb3QtPnR1cGxlID0gdHVwbGU7CisJCXNsb3QtPm9mZiA9IDA7 CisJCXNsb3QtPmJhc2UudHRzX252YWxpZCA9IDA7CisJCXNsb3QtPmJhc2UudHRzX2ZsYWdzICY9 IH4oVFRTX0ZMQUdfRU1QVFkgfCBUVFNfRkxBR19TSE9VTERGUkVFKTsKKwkJc2xvdC0+YmFzZS50 dHNfdGlkID0gdHVwbGUtPnRfc2VsZjsKKwkJc2xvdC0+YmFzZS50dHNfdGFibGVPaWQgPSB0dXBs ZS0+dF90YWJsZU9pZDsKKwkJc2xvdC0+YmFzZS50dHNfZmxhZ3MgJj0gfihUVFNfRkxBR19TSE9V TERGUkVFIHwgVFRTX0ZMQUdfRU1QVFkpOworCX0KK30KKwogLyoKICAqIGhlYXBfc2Nhbl9lbmRf YmF0Y2gKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFu ZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBl YzRlZWNjZjE5Yy4uOGU4OGNjOWU4ZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X2hhbmRsZXIuYwpAQCAtNzIsNiArNzIsMjAgQEAgaGVhcGFtX3Nsb3RfY2FsbGJhY2tzKFJlbGF0 aW9uIHJlbGF0aW9uKQogCXJldHVybiAmVFRTT3BzQnVmZmVySGVhcFR1cGxlOwogfQogCisvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqIFR1cGxlQmF0Y2ggcmVsYXRlZCBjYWxsYmFja3MgZm9yIGhlYXAg QU0KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKK3N0YXRpYyBjb25zdCBUdXBsZUJhdGNoT3Bz IFR1cGxlQmF0Y2hIZWFwT3BzID0geworCS5tYXRlcmlhbGl6ZV9hbGwgPSBoZWFwX21hdGVyaWFs aXplX2JhdGNoX2FsbAorfTsKKworc3RhdGljIGNvbnN0IFR1cGxlQmF0Y2hPcHMgKgoraGVhcGFt X2JhdGNoX2NhbGxiYWNrcyhSZWxhdGlvbiByZWxhdGlvbikKK3sKKwlyZXR1cm4gJlR1cGxlQmF0 Y2hIZWFwT3BzOworfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIEluZGV4IFNjYW4gQ2FsbGJh Y2tzIGZvciBoZWFwIEFNCkBAIC0yNjE3LDYgKzI2MzEsNyBAQCBzdGF0aWMgY29uc3QgVGFibGVB bVJvdXRpbmUgaGVhcGFtX21ldGhvZHMgPSB7CiAJLnR5cGUgPSBUX1RhYmxlQW1Sb3V0aW5lLAog CiAJLnNsb3RfY2FsbGJhY2tzID0gaGVhcGFtX3Nsb3RfY2FsbGJhY2tzLAorCS5iYXRjaF9jYWxs YmFja3MgPSBoZWFwYW1fYmF0Y2hfY2FsbGJhY2tzLAogCiAJLnNjYW5fYmVnaW4gPSBoZWFwX2Jl Z2luc2NhbiwKIAkuc2Nhbl9lbmQgPSBoZWFwX2VuZHNjYW4sCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3Rh YmxlYW0uYwppbmRleCA1ZTQxNDA0OTM3ZS4uNWE4ZWJiOGI5N2MgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Rh YmxlL3RhYmxlYW0uYwpAQCAtMTAzLDYgKzEwMywxNyBAQCB0YWJsZV9zbG90X2NyZWF0ZShSZWxh dGlvbiByZWxhdGlvbiwgTGlzdCAqKnJlZ2xpc3QpCiAJcmV0dXJuIHNsb3Q7CiB9CiAKKy8qIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqIFR1cGxlQmF0Y2ggc3VwcG9ydCByb3V0aW5lcworICogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICovCitjb25zdCBUdXBsZUJhdGNoT3BzICoKK3RhYmxlX2JhdGNo X2NhbGxiYWNrcyhSZWxhdGlvbiByZWxhdGlvbikKK3sKKwlpZiAocmVsYXRpb24tPnJkX3RhYmxl YW0pCisJCXJldHVybiByZWxhdGlvbi0+cmRfdGFibGVhbS0+YmF0Y2hfY2FsbGJhY2tzKHJlbGF0 aW9uKTsKKwllbG9nKEVSUk9SLCAicmVsYXRpb24gZG9lcyBub3Qgc3VwcG9ydCBUdXBsZUJhdGNo IG9wZXJhdGlvbnMiKTsKK30KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogVGFibGUgc2Nh biBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmlsZSBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxlCmluZGV4IDExMTE4ZDBjZTAyLi4zZTcyZjNm ZTAzYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUKQEAgLTE1LDYgKzE1LDcgQEAgaW5jbHVkZSAkKHRv cF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogT0JKUyA9IFwKIAlleGVjQW1pLm8gXAog CWV4ZWNBc3luYy5vIFwKKwlleGVjQmF0Y2gubyBcCiAJZXhlY0N1cnJlbnQubyBcCiAJZXhlY0V4 cHIubyBcCiAJZXhlY0V4cHJJbnRlcnAubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjQmF0Y2guYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNCYXRjaC5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMDdhZTUzNTY4NwotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNCYXRjaC5jCkBAIC0wLDAgKzEsMTE3 IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBleGVjQmF0Y2guYworICoJCUhlbHBlcnMg Zm9yIFR1cGxlQmF0Y2gKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNSwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdo dCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgor ICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0JhdGNoLmMK KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorI2luY2x1 ZGUgImV4ZWN1dG9yL2V4ZWNCYXRjaC5oIgorCisvKgorICogVHVwbGVCYXRjaENyZWF0ZQorICoJ CUFsbG9jYXRlIGFuZCBpbml0aWFsaXplIGEgbmV3IFR1cGxlQmF0Y2ggZW52ZWxvcGUuCisgKi8K K1R1cGxlQmF0Y2ggKgorVHVwbGVCYXRjaENyZWF0ZShUdXBsZURlc2Mgc2NhbmRlc2MsIGludCBj YXBhY2l0eSkKK3sKKwlUdXBsZUJhdGNoICAqYjsKKwlUdXBsZVRhYmxlU2xvdCAqKmluc2xvdHMs CisJCQkJICAgKipvdXRzbG90czsKKworCWluc2xvdHMgPSBwYWxsb2Moc2l6ZW9mKFR1cGxlVGFi bGVTbG90ICopICogY2FwYWNpdHkpOworCW91dHNsb3RzID0gcGFsbG9jKHNpemVvZihUdXBsZVRh YmxlU2xvdCAqKSAqIGNhcGFjaXR5KTsKKwlmb3IgKGludCBpID0gMDsgaSA8IGNhcGFjaXR5OyBp KyspCisJCWluc2xvdHNbaV0gPSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc2NhbmRlc2MsICZU VFNPcHNIZWFwVHVwbGUpOworCisJYiA9IChUdXBsZUJhdGNoICopIHBhbGxvYyhzaXplb2YoVHVw bGVCYXRjaCkpOworCisJLyogSW5pdGlhbCBzdGF0ZTogZW1wdHkgZW52ZWxvcGUgKi8KKwliLT5h bV9wYXlsb2FkID0gTlVMTDsKKwliLT5udHVwbGVzID0gMDsKKwliLT5pbnNsb3RzID0gaW5zbG90 czsKKwliLT5vdXRzbG90cyA9IG91dHNsb3RzOworCWItPmFjdGl2ZXNsb3RzID0gTlVMTDsKKwli LT5vdXRzbG90cyA9IG91dHNsb3RzOworCWItPm1heHNsb3RzID0gY2FwYWNpdHk7CisKKwliLT5u dmFsaWQgPSAwOworCWItPm5leHQgPSAwOworCisJcmV0dXJuIGI7Cit9CisKKy8qCisgKiBUdXBs ZUJhdGNoUmVzZXQKKyAqCQlSZXNldCBhbiBleGlzdGluZyBUdXBsZUJhdGNoIGVudmVsb3BlIHRv IGVtcHR5LgorICovCit2b2lkCitUdXBsZUJhdGNoUmVzZXQoVHVwbGVCYXRjaCAqYiwgYm9vbCBk cm9wX3Nsb3RzKQoreworCWlmIChiID09IE5VTEwpCisJCXJldHVybjsKKworCWZvciAoaW50IGkg PSAwOyBpIDwgYi0+bWF4c2xvdHM7IGkrKykKKwl7CisJCUV4ZWNDbGVhclR1cGxlKGItPmluc2xv dHNbaV0pOworCQlpZiAoZHJvcF9zbG90cykKKwkJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNs b3QoYi0+aW5zbG90c1tpXSk7CisJfQorCisJaWYgKGRyb3Bfc2xvdHMpCisJeworCQlwZnJlZShi LT5pbnNsb3RzKTsKKwkJcGZyZWUoYi0+b3V0c2xvdHMpOworCQliLT5pbnNsb3RzID0gYi0+b3V0 c2xvdHMgPSBOVUxMOworCX0KKworCWItPm50dXBsZXMgPSAwOworCWItPm52YWxpZCA9IDA7CisJ Yi0+bmV4dCA9IDA7CisJYi0+YWN0aXZlc2xvdHMgPSBOVUxMOworfQorCit2b2lkCitUdXBsZUJh dGNoVXNlSW5wdXQoVHVwbGVCYXRjaCAqYiwgaW50IG52YWxpZCkKK3sKKwliLT5tYXRlcmlhbGl6 ZWQgPSB0cnVlOworCWItPmFjdGl2ZXNsb3RzID0gYi0+aW5zbG90czsKKwliLT5udmFsaWQgPSBu dmFsaWQ7CisJYi0+bmV4dCA9IDA7Cit9CisKK3ZvaWQKK1R1cGxlQmF0Y2hVc2VPdXRwdXQoVHVw bGVCYXRjaCAqYiwgaW50IG52YWxpZCkKK3sKKwliLT5tYXRlcmlhbGl6ZWQgPSB0cnVlOworCWIt PmFjdGl2ZXNsb3RzID0gYi0+b3V0c2xvdHM7CisJYi0+bnZhbGlkID0gbnZhbGlkOworCWItPm5l eHQgPSAwOworfQorCitib29sCitUdXBsZUJhdGNoSXNWYWxpZChUdXBsZUJhdGNoICpiKQorewor CXJldHVybgliICE9IE5VTEwgJiYKKwkJCWItPm1heHNsb3RzID4gMCAmJgorCQkJYi0+aW5zbG90 cyAhPSBOVUxMICYmCisJCQliLT5vdXRzbG90cyAhPSBOVUxMOworfQorCit2b2lkCitUdXBsZUJh dGNoUmV3aW5kKFR1cGxlQmF0Y2ggKmIpCit7CisJYi0+bmV4dCA9IDA7Cit9CisKK2ludAorVHVw bGVCYXRjaEdldE51bVZhbGlkKFR1cGxlQmF0Y2ggKmIpCit7CisJcmV0dXJuIGItPm52YWxpZDsK K30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNTY2FuLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjU2Nhbi5jCmluZGV4IDkwNzI2OTQ5YTg3Li5mMjRjNWQ3M2FlMSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1NjYW4uYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjU2Nhbi5jCkBAIC0xOCw2ICsxOCw3IEBACiAgKi8KICNpbmNsdWRl ICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiYWNjZXNzL3RhYmxlYW0uaCIKICNpbmNsdWRlICJl eGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNTY2FuLmgiCiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCkBAIC0xNTQsMyArMTU1LDMzIEBAIEV4ZWNTY2FuUmVTY2FuKFNj YW5TdGF0ZSAqbm9kZSkKIAkJfQogCX0KIH0KKworYm9vbAorU2NhbkNhblVzZUJhdGNoaW5nKFNj YW5TdGF0ZSAqc2NhbnN0YXRlLCBpbnQgZWZsYWdzKQoreworCVJlbGF0aW9uCXJlbGF0aW9uID0g c2NhbnN0YXRlLT5zc19jdXJyZW50UmVsYXRpb247CisKKwlyZXR1cm4JZXhlY3V0b3JfYmF0Y2hp bmcgJiYKKwkJCShzY2Fuc3RhdGUtPnBzLnN0YXRlLT5lc19lcHFfYWN0aXZlID09IE5VTEwpICYm CisJCQkhKGVmbGFncyAmIEVYRUNfRkxBR19CQUNLV0FSRCkgJiYKKwkJCXJlbGF0aW9uICYmIHRh YmxlX3N1cHBvcnRzX2JhdGNoaW5nKHJlbGF0aW9uKTsKK30KKwordm9pZAorU2NhblJlc2V0QmF0 Y2hpbmcoU2NhblN0YXRlICpzY2Fuc3RhdGUsIGJvb2wgZHJvcCkKK3sKKwlUdXBsZUJhdGNoICpi ID0gc2NhbnN0YXRlLT5wcy5wc19CYXRjaDsKKworCWlmIChiKQorCXsKKwkJVHVwbGVCYXRjaFJl c2V0KGIsIGRyb3ApOworCQlpZiAoYi0+YW1fcGF5bG9hZCkKKwkJeworCQkJdGFibGVfc2Nhbl9l bmRfYmF0Y2goc2NhbnN0YXRlLT5zc19jdXJyZW50U2NhbkRlc2MsCisJCQkJCQkJCSBiLT5hbV9w YXlsb2FkKTsKKwkJCWItPmFtX3BheWxvYWQgPSBOVUxMOworCQl9CisJCWlmIChkcm9wKQorCQkJ cGZyZWUoYik7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvbWVzb24u YnVpbGQgYi9zcmMvYmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZAppbmRleCAyY2VhNDFmODc3 MS4uNDBmZmMyOGYzY2IgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL21lc29uLmJ1 aWxkCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL21lc29uLmJ1aWxkCkBAIC0zLDYgKzMsNyBA QAogYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAnZXhlY0FtaS5jJywKICAgJ2V4ZWNBc3lu Yy5jJywKKyAgJ2V4ZWNCYXRjaC5jJywKICAgJ2V4ZWNDdXJyZW50LmMnLAogICAnZXhlY0V4cHIu YycsCiAgICdleGVjRXhwckludGVycC5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmlu ZGV4IDk0MDQ3ZDI5NDMwLi4yNTUyZDQyMGYxYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nh bi5jCkBAIC0yMDMsNiArMjAzLDE3MSBAQCBFeGVjU2VxU2NhbkVQUShQbGFuU3RhdGUgKnBzdGF0 ZSkKIAkJCQkJKEV4ZWNTY2FuUmVjaGVja010ZCkgU2VxUmVjaGVjayk7CiB9CiAKKy8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqCQkJCQkJQmF0Y2ggU3VwcG9ydAorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitzdGF0aWMgaW5saW5l IGJvb2wKK1NlcU5leHRCYXRjaChTZXFTY2FuU3RhdGUgKm5vZGUpCit7CisJVGFibGVTY2FuRGVz YyBzY2FuZGVzYzsKKwlFU3RhdGUJICAgKmVzdGF0ZTsKKwlTY2FuRGlyZWN0aW9uIGRpcmVjdGlv bjsKKworCUFzc2VydChub2RlLT5zcy5wcy5wc19CYXRjaCAhPSBOVUxMKTsKKworCS8qCisJICog Z2V0IGluZm9ybWF0aW9uIGZyb20gdGhlIGVzdGF0ZSBhbmQgc2NhbiBzdGF0ZQorCSAqLworCXNj YW5kZXNjID0gbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjOworCWVzdGF0ZSA9IG5vZGUtPnNz LnBzLnN0YXRlOworCWRpcmVjdGlvbiA9IGVzdGF0ZS0+ZXNfZGlyZWN0aW9uOworCUFzc2VydChk aXJlY3Rpb24gPT0gRm9yd2FyZFNjYW5EaXJlY3Rpb24pOworCisJaWYgKHNjYW5kZXNjID09IE5V TEwpCisJeworCQkvKgorCQkgKiBXZSByZWFjaCBoZXJlIGlmIHRoZSBzY2FuIGlzIG5vdCBwYXJh bGxlbCwgb3IgaWYgd2UncmUgc2VyaWFsbHkKKwkJICogZXhlY3V0aW5nIGEgc2NhbiB0aGF0IHdh cyBwbGFubmVkIHRvIGJlIHBhcmFsbGVsLgorCQkgKi8KKwkJc2NhbmRlc2MgPSB0YWJsZV9iZWdp bnNjYW4obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAorCQkJCQkJCQkgICBlc3RhdGUtPmVz X3NuYXBzaG90LAorCQkJCQkJCQkgICAwLCBOVUxMKTsKKwkJbm9kZS0+c3Muc3NfY3VycmVudFNj YW5EZXNjID0gc2NhbmRlc2M7CisJfQorCisJLyogTGF6aWx5IGNyZWF0ZSB0aGUgQU0gYmF0Y2gg cGF5bG9hZC4gKi8KKwlpZiAobm9kZS0+c3MucHMucHNfQmF0Y2gtPmFtX3BheWxvYWQgPT0gTlVM TCkKKwl7CisJCWNvbnN0IFRhYmxlQW1Sb3V0aW5lICp0YW0gUEdfVVNFRF9GT1JfQVNTRVJUU19P TkxZID0gc2NhbmRlc2MtPnJzX3JkLT5yZF90YWJsZWFtOworCisJCUFzc2VydCh0YW0gJiYgdGFt LT5zY2FuX2JlZ2luX2JhdGNoKTsKKwkJbm9kZS0+c3MucHMucHNfQmF0Y2gtPmFtX3BheWxvYWQg PQorCQkJdGFibGVfc2Nhbl9iZWdpbl9iYXRjaChzY2FuZGVzYywgbm9kZS0+c3MucHMucHNfQmF0 Y2gtPm1heHNsb3RzKTsKKwkJbm9kZS0+c3MucHMucHNfQmF0Y2gtPm9wcyA9IHRhYmxlX2JhdGNo X2NhbGxiYWNrcyhub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24pOworCX0KKworCW5vZGUtPnNz LnBzLnBzX0JhdGNoLT5udHVwbGVzID0KKwkJdGFibGVfc2Nhbl9nZXRuZXh0YmF0Y2goc2NhbmRl c2MsIG5vZGUtPnNzLnBzLnBzX0JhdGNoLT5hbV9wYXlsb2FkLCBkaXJlY3Rpb24pOworCW5vZGUt PnNzLnBzLnBzX0JhdGNoLT5udmFsaWQgPSBub2RlLT5zcy5wcy5wc19CYXRjaC0+bnR1cGxlczsK Kwlub2RlLT5zcy5wcy5wc19CYXRjaC0+bWF0ZXJpYWxpemVkID0gZmFsc2U7CisKKwlyZXR1cm4g bm9kZS0+c3MucHMucHNfQmF0Y2gtPm50dXBsZXMgPiAwOworfQorCitzdGF0aWMgaW5saW5lIGJv b2wKK1NlcU5leHRCYXRjaE1hdGVyaWFsaXplKFNlcVNjYW5TdGF0ZSAqbm9kZSkKK3sKKwlpZiAo U2VxTmV4dEJhdGNoKG5vZGUpKQorCXsKKwkJVHVwbGVCYXRjaE1hdGVyaWFsaXplQWxsKG5vZGUt PnNzLnBzLnBzX0JhdGNoKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOwor fQorCitzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKgorRXhlY1NlcVNjYW5CYXRjaFNsb3QoUGxhblN0 YXRlICpwc3RhdGUpCit7CisJU2VxU2NhblN0YXRlICpub2RlID0gY2FzdE5vZGUoU2VxU2NhblN0 YXRlLCBwc3RhdGUpOworCisJQXNzZXJ0KHBzdGF0ZS0+c3RhdGUtPmVzX2VwcV9hY3RpdmUgPT0g TlVMTCk7CisJQXNzZXJ0KHBzdGF0ZS0+cXVhbCA9PSBOVUxMKTsKKwlBc3NlcnQocHN0YXRlLT5w c19Qcm9qSW5mbyA9PSBOVUxMKTsKKworCXJldHVybiBFeGVjU2NhbkV4dGVuZGVkQmF0Y2hTbG90 KCZub2RlLT5zcywKKwkJCQkJCQkJCSAoRXhlY1NjYW5BY2Nlc3NCYXRjaE10ZCkgU2VxTmV4dEJh dGNoTWF0ZXJpYWxpemUsCisJCQkJCQkJCQkgTlVMTCwgTlVMTCk7Cit9CisKK3N0YXRpYyBUdXBs ZVRhYmxlU2xvdCAqCitFeGVjU2VxU2NhbkJhdGNoU2xvdFdpdGhRdWFsKFBsYW5TdGF0ZSAqcHN0 YXRlKQoreworCVNlcVNjYW5TdGF0ZSAqbm9kZSA9IGNhc3ROb2RlKFNlcVNjYW5TdGF0ZSwgcHN0 YXRlKTsKKworCS8qCisJICogVXNlIHBnX2Fzc3VtZSgpIGZvciAhPSBOVUxMIHRlc3RzIHRvIG1h a2UgdGhlIGNvbXBpbGVyIHJlYWxpemUgbm8KKwkgKiBydW50aW1lIGNoZWNrIGZvciB0aGUgZmll bGQgaXMgbmVlZGVkIGluIEV4ZWNTY2FuRXh0ZW5kZWQoKS4KKwkgKi8KKwlBc3NlcnQocHN0YXRl LT5zdGF0ZS0+ZXNfZXBxX2FjdGl2ZSA9PSBOVUxMKTsKKwlwZ19hc3N1bWUocHN0YXRlLT5xdWFs ICE9IE5VTEwpOworCUFzc2VydChwc3RhdGUtPnBzX1Byb2pJbmZvID09IE5VTEwpOworCisJcmV0 dXJuIEV4ZWNTY2FuRXh0ZW5kZWRCYXRjaFNsb3QoJm5vZGUtPnNzLAorCQkJCQkJCQkJIChFeGVj U2NhbkFjY2Vzc0JhdGNoTXRkKSBTZXFOZXh0QmF0Y2hNYXRlcmlhbGl6ZSwKKwkJCQkJCQkJCSBw c3RhdGUtPnF1YWwsIE5VTEwpOworfQorCisvKgorICogVmFyaWFudCBvZiBFeGVjU2VxU2Nhbigp IGJ1dCB3aGVuIHByb2plY3Rpb24gaXMgcmVxdWlyZWQuCisgKi8KK3N0YXRpYyBUdXBsZVRhYmxl U2xvdCAqCitFeGVjU2VxU2NhbkJhdGNoU2xvdFdpdGhQcm9qZWN0KFBsYW5TdGF0ZSAqcHN0YXRl KQoreworCVNlcVNjYW5TdGF0ZSAqbm9kZSA9IGNhc3ROb2RlKFNlcVNjYW5TdGF0ZSwgcHN0YXRl KTsKKworCUFzc2VydChwc3RhdGUtPnN0YXRlLT5lc19lcHFfYWN0aXZlID09IE5VTEwpOworCUFz c2VydChwc3RhdGUtPnF1YWwgPT0gTlVMTCk7CisJcGdfYXNzdW1lKHBzdGF0ZS0+cHNfUHJvaklu Zm8gIT0gTlVMTCk7CisKKwlyZXR1cm4gRXhlY1NjYW5FeHRlbmRlZEJhdGNoU2xvdCgmbm9kZS0+ c3MsCisJCQkJCQkJCQkgKEV4ZWNTY2FuQWNjZXNzQmF0Y2hNdGQpIFNlcU5leHRCYXRjaE1hdGVy aWFsaXplLAorCQkJCQkJCQkJIE5VTEwsIHBzdGF0ZS0+cHNfUHJvakluZm8pOworfQorCisvKgor ICogVmFyaWFudCBvZiBFeGVjU2VxU2NhbigpIGJ1dCB3aGVuIHF1YWwgZXZhbHVhdGlvbiBhbmQg cHJvamVjdGlvbiBhcmUKKyAqIHJlcXVpcmVkLgorICovCitzdGF0aWMgVHVwbGVUYWJsZVNsb3Qg KgorRXhlY1NlcVNjYW5CYXRjaFNsb3RXaXRoUXVhbFByb2plY3QoUGxhblN0YXRlICpwc3RhdGUp Cit7CisJU2VxU2NhblN0YXRlICpub2RlID0gY2FzdE5vZGUoU2VxU2NhblN0YXRlLCBwc3RhdGUp OworCisJQXNzZXJ0KHBzdGF0ZS0+c3RhdGUtPmVzX2VwcV9hY3RpdmUgPT0gTlVMTCk7CisJcGdf YXNzdW1lKHBzdGF0ZS0+cXVhbCAhPSBOVUxMKTsKKwlwZ19hc3N1bWUocHN0YXRlLT5wc19Qcm9q SW5mbyAhPSBOVUxMKTsKKworCXJldHVybiBFeGVjU2NhbkV4dGVuZGVkQmF0Y2hTbG90KCZub2Rl LT5zcywKKwkJCQkJCQkJCSAoRXhlY1NjYW5BY2Nlc3NCYXRjaE10ZCkgU2VxTmV4dEJhdGNoTWF0 ZXJpYWxpemUsCisJCQkJCQkJCQkgcHN0YXRlLT5xdWFsLCBwc3RhdGUtPnBzX1Byb2pJbmZvKTsK K30KKworLyogQmF0Y2ggU2VxU2NhbiBlbmFibGVtZW50IGFuZCBkaXNwYXRjaCAqLworc3RhdGlj IHZvaWQKK1NlcVNjYW5Jbml0QmF0Y2hpbmcoU2VxU2NhblN0YXRlICpzY2Fuc3RhdGUsIGludCBl ZmxhZ3MpCit7CisJY29uc3QgaW50IGNhcCA9IEVYRUNfQkFUQ0hfUk9XUzsKKwlUdXBsZURlc2MJ c2NhbmRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHNjYW5zdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0 aW9uKTsKKworCXNjYW5zdGF0ZS0+c3MucHMucHNfQmF0Y2ggPSBUdXBsZUJhdGNoQ3JlYXRlKHNj YW5kZXNjLCBjYXApOworCisJLyogQ2hvb3NlIGJhdGNoIHZhcmlhbnQgdG8gcHJlc2VydmUgeW91 ciBzcGVjaWFsaXphdGlvbiBtYXRyaXggKi8KKwlpZiAoc2NhbnN0YXRlLT5zcy5wcy5xdWFsID09 IE5VTEwpCisJeworCQlpZiAoc2NhbnN0YXRlLT5zcy5wcy5wc19Qcm9qSW5mbyA9PSBOVUxMKQor CQl7CisJCQlzY2Fuc3RhdGUtPnNzLnBzLkV4ZWNQcm9jTm9kZSA9IEV4ZWNTZXFTY2FuQmF0Y2hT bG90OworCQl9CisJCWVsc2UKKwkJeworCQkJc2NhbnN0YXRlLT5zcy5wcy5FeGVjUHJvY05vZGUg PSBFeGVjU2VxU2NhbkJhdGNoU2xvdFdpdGhQcm9qZWN0OworCQl9CisJfQorCWVsc2UKKwl7CisJ CWlmIChzY2Fuc3RhdGUtPnNzLnBzLnBzX1Byb2pJbmZvID09IE5VTEwpCisJCXsKKwkJCXNjYW5z dGF0ZS0+c3MucHMuRXhlY1Byb2NOb2RlID0gRXhlY1NlcVNjYW5CYXRjaFNsb3RXaXRoUXVhbDsK KwkJfQorCQllbHNlCisJCXsKKwkJCXNjYW5zdGF0ZS0+c3MucHMuRXhlY1Byb2NOb2RlID0gRXhl Y1NlcVNjYW5CYXRjaFNsb3RXaXRoUXVhbFByb2plY3Q7CisJCX0KKwl9Cit9CisKIC8qIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAqCQlFeGVjSW5pdFNlcVNjYW4KICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIxMSw2ICszNzYsNyBAQCBT ZXFTY2FuU3RhdGUgKgogRXhlY0luaXRTZXFTY2FuKFNlcVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0 YXRlLCBpbnQgZWZsYWdzKQogewogCVNlcVNjYW5TdGF0ZSAqc2NhbnN0YXRlOworCWJvb2wJdXNl X2JhdGNoaW5nOwogCiAJLyoKIAkgKiBPbmNlIHVwb24gYSB0aW1lIGl0IHdhcyBwb3NzaWJsZSB0 byBoYXZlIGFuIG91dGVyUGxhbiBvZiBhIFNlcVNjYW4sIGJ1dApAQCAtMjQxLDkgKzQwNywxMiBA QCBFeGVjSW5pdFNlcVNjYW4oU2VxU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJCQkJCQkJIG5vZGUtPnNjYW4uc2NhbnJlbGlkLAogCQkJCQkJCSBlZmxhZ3MpOwogCisJ dXNlX2JhdGNoaW5nID0gU2NhbkNhblVzZUJhdGNoaW5nKCZzY2Fuc3RhdGUtPnNzLCBlZmxhZ3Mp OworCiAJLyogYW5kIGNyZWF0ZSBzbG90IHdpdGggdGhlIGFwcHJvcHJpYXRlIHJvd3R5cGUgKi8K IAlFeGVjSW5pdFNjYW5UdXBsZVNsb3QoZXN0YXRlLCAmc2NhbnN0YXRlLT5zcywKIAkJCQkJCSAg UmVsYXRpb25HZXREZXNjcihzY2Fuc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiksCisJCQkJ CQkgIHVzZV9iYXRjaGluZyA/ICZUVFNPcHNIZWFwVHVwbGUgOgogCQkJCQkJICB0YWJsZV9zbG90 X2NhbGxiYWNrcyhzY2Fuc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbikpOwogCiAJLyoKQEAg LTI4MCw2ICs0NDksOSBAQCBFeGVjSW5pdFNlcVNjYW4oU2VxU2NhbiAqbm9kZSwgRVN0YXRlICpl c3RhdGUsIGludCBlZmxhZ3MpCiAJCQlzY2Fuc3RhdGUtPnNzLnBzLkV4ZWNQcm9jTm9kZSA9IEV4 ZWNTZXFTY2FuV2l0aFF1YWxQcm9qZWN0OwogCX0KIAorCWlmICh1c2VfYmF0Y2hpbmcpCisJCVNl cVNjYW5Jbml0QmF0Y2hpbmcoc2NhbnN0YXRlLCBlZmxhZ3MpOworCiAJcmV0dXJuIHNjYW5zdGF0 ZTsKIH0KIApAQCAtMjk5LDYgKzQ3MSw4IEBAIEV4ZWNFbmRTZXFTY2FuKFNlcVNjYW5TdGF0ZSAq bm9kZSkKIAkgKi8KIAlzY2FuRGVzYyA9IG5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYzsKIAor CVNjYW5SZXNldEJhdGNoaW5nKCZub2RlLT5zcywgdHJ1ZSk7CisKIAkvKgogCSAqIGNsb3NlIGhl YXAgc2NhbgogCSAqLwpAQCAtMzI3LDcgKzUwMSw3IEBAIEV4ZWNSZVNjYW5TZXFTY2FuKFNlcVNj YW5TdGF0ZSAqbm9kZSkKIAlpZiAoc2NhbiAhPSBOVUxMKQogCQl0YWJsZV9yZXNjYW4oc2NhbiwJ CS8qIHNjYW4gZGVzYyAqLwogCQkJCQkgTlVMTCk7CQkvKiBuZXcgc2NhbiBrZXlzICovCi0KKwlT Y2FuUmVzZXRCYXRjaGluZygmbm9kZS0+c3MsIGZhbHNlKTsKIAlFeGVjU2NhblJlU2NhbigoU2Nh blN0YXRlICopIG5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0 L2dsb2JhbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCmluZGV4IGQzMWNi NDVhMDU4Li5iNGEwOTk2YTcxNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9n bG9iYWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKQEAgLTE2NSwz ICsxNjUsNiBAQCBpbnQJCQlub3RpZnlfYnVmZmVycyA9IDE2OwogaW50CQkJc2VyaWFsaXphYmxl X2J1ZmZlcnMgPSAzMjsKIGludAkJCXN1YnRyYW5zYWN0aW9uX2J1ZmZlcnMgPSAwOwogaW50CQkJ dHJhbnNhY3Rpb25fYnVmZmVycyA9IDA7CisKKy8qIGV4ZWN1dG9yIGJhdGNoaW5nICovCitib29s CQlleGVjdXRvcl9iYXRjaGluZyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19w YXJhbWV0ZXJzLmRhdAppbmRleCBiMTc2ZDUxMzBlNC4uYTRiYzhjMTBjYzIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CkBAIC04ODcsNiArODg3LDEzIEBACiAg IGJvb3RfdmFsID0+ICd0cnVlJywKIH0sCiAKK3sgbmFtZSA9PiAnZXhlY3V0b3JfYmF0Y2hpbmcn LCB0eXBlID0+ICdib29sJywgY29udGV4dCA9PiAnUEdDX1VTRVJTRVQnLCBncm91cCA9PiAnREVW RUxPUEVSX09QVElPTlMnLAorICBzaG9ydF9kZXNjID0+ICdVc2UgdHVwbGUgYmF0Y2hpbmcgZHVy aW5nIGV4ZWN1dGlvbi4nLAorICBmbGFncyA9PiAnR1VDX05PVF9JTl9TQU1QTEUnLAorICB2YXJp YWJsZSA9PiAnZXhlY3V0b3JfYmF0Y2hpbmcnLAorICBib290X3ZhbCA9PiAndHJ1ZScsCit9LAor CiB7IG5hbWUgPT4gJ2RhdGFfc3luY19yZXRyeScsIHR5cGUgPT4gJ2Jvb2wnLCBjb250ZXh0ID0+ ICdQR0NfUE9TVE1BU1RFUicsIGdyb3VwID0+ICdFUlJPUl9IQU5ETElOR19PUFRJT05TJywKICAg c2hvcnRfZGVzYyA9PiAnV2hldGhlciB0byBjb250aW51ZSBydW5uaW5nIGFmdGVyIGEgZmFpbHVy ZSB0byBzeW5jIGRhdGEgZmlsZXMuJywKICAgdmFyaWFibGUgPT4gJ2RhdGFfc3luY19yZXRyeScs CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvaGVhcGFtLmgKaW5kZXggMDJmNzc5M2ZiYTAuLjEzY2U2MTY2ZWMzIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oCkBAIC0zMTQsNiArMzE0LDcgQEAgZXh0ZXJuIGJvb2wgaGVhcF9nZXRuZXh0c2xvdChU YWJsZVNjYW5EZXNjIHNzY2FuLAogZXh0ZXJuIHZvaWQgKmhlYXBfYmVnaW5fYmF0Y2goVGFibGVT Y2FuRGVzYyBzc2NhbiwgaW50IG1heGl0ZW1zKTsKIGV4dGVybiB2b2lkIGhlYXBfZW5kX2JhdGNo KFRhYmxlU2NhbkRlc2Mgc3NjYW4sIHZvaWQgKmFtX2JhdGNoKTsKIGV4dGVybiBpbnQgaGVhcF9n ZXRuZXh0YmF0Y2goVGFibGVTY2FuRGVzYyBzc2Nhbiwgdm9pZCAqYW1fYmF0Y2gsIFNjYW5EaXJl Y3Rpb24gZGlyKTsKK2V4dGVybiB2b2lkIGhlYXBfbWF0ZXJpYWxpemVfYmF0Y2hfYWxsKHZvaWQg KmFtX2JhdGNoLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbik7CiAKIGV4dGVybiB2b2lk IGhlYXBfc2V0X3RpZHJhbmdlKFRhYmxlU2NhbkRlc2Mgc3NjYW4sIEl0ZW1Qb2ludGVyIG1pbnRp ZCwKIAkJCQkJCQkgIEl0ZW1Qb2ludGVyIG1heHRpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCA5 NTMyMDdlYWM1MC4uMDVmODI4Yjk3NjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90 YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaApAQCAtMjEsNiArMjEs NyBAQAogI2luY2x1ZGUgImFjY2Vzcy9zZGlyLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIK ICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjQmF0 Y2guaCIKICNpbmNsdWRlICJleGVjdXRvci90dXB0YWJsZS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cmVhZF9zdHJlYW0uaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKQEAgLTM5LDYgKzQwLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgQnVsa0luc2VydFN0YXRlRGF0YSBCdWxrSW5zZXJ0U3RhdGVEYXRhOwog dHlwZWRlZiBzdHJ1Y3QgSW5kZXhJbmZvIEluZGV4SW5mbzsKIHR5cGVkZWYgc3RydWN0IFNhbXBs ZVNjYW5TdGF0ZSBTYW1wbGVTY2FuU3RhdGU7CiB0eXBlZGVmIHN0cnVjdCBWYWxpZGF0ZUluZGV4 U3RhdGUgVmFsaWRhdGVJbmRleFN0YXRlOwordHlwZWRlZiBzdHJ1Y3QgVHVwbGVCYXRjaE9wcyBU dXBsZUJhdGNoT3BzOwogCiAvKgogICogQml0bWFzayB2YWx1ZXMgZm9yIHRoZSBmbGFncyBhcmd1 bWVudCB0byB0aGUgc2Nhbl9iZWdpbiBjYWxsYmFjay4KQEAgLTMwMSw2ICszMDMsNyBAQCB0eXBl ZGVmIHN0cnVjdCBUYWJsZUFtUm91dGluZQogCSAqIFJldHVybiBzbG90IGltcGxlbWVudGF0aW9u IHN1aXRhYmxlIGZvciBzdG9yaW5nIGEgdHVwbGUgb2YgdGhpcyBBTS4KIAkgKi8KIAljb25zdCBU dXBsZVRhYmxlU2xvdE9wcyAqKCpzbG90X2NhbGxiYWNrcykgKFJlbGF0aW9uIHJlbCk7CisJY29u c3QgVHVwbGVCYXRjaE9wcyAqKCpiYXRjaF9jYWxsYmFja3MpKFJlbGF0aW9uIHJlbCk7CiAKIAog CS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzYxLDYgKzM2NCw3IEBAIHR5cGVkZWYgc3RydWN0IFRh YmxlQW1Sb3V0aW5lCiAJCQkJCQkJCQkgU2NhbkRpcmVjdGlvbiBkaXIpOwogCXZvaWQJCSgqc2Nh bl9lbmRfYmF0Y2gpKFRhYmxlU2NhbkRlc2Mgc3NjYW4sIHZvaWQgKmFtX2JhdGNoKTsKIAorCiAJ LyotLS0tLS0tLS0tLQogCSAqIE9wdGlvbmFsIGZ1bmN0aW9ucyB0byBwcm92aWRlIHNjYW5uaW5n IGZvciByYW5nZXMgb2YgSXRlbVBvaW50ZXJzLgogCSAqIEltcGxlbWVudGF0aW9ucyBtdXN0IGVp dGhlciBwcm92aWRlIGJvdGggb2YgdGhlc2UgZnVuY3Rpb25zLCBvciBuZWl0aGVyCkBAIC04NzIs NiArODc2LDE2IEBAIGV4dGVybiBjb25zdCBUdXBsZVRhYmxlU2xvdE9wcyAqdGFibGVfc2xvdF9j YWxsYmFja3MoUmVsYXRpb24gcmVsYXRpb24pOwogICovCiBleHRlcm4gVHVwbGVUYWJsZVNsb3Qg KnRhYmxlX3Nsb3RfY3JlYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBMaXN0ICoqcmVnbGlzdCk7CiAK Ky8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFR1cGxlQmF0Y2ggZnVuY3Rpb25zLgorICogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qCisgKiBSZXR1cm5zIGNhbGxiYWNrcyBmb3IgbWFu aXB1bGF0aW5nIFR1cGxlQmF0Y2ggZm9yIHR1cGxlcyBvZiB0aGUgZ2l2ZW4KKyAqIHJlbGF0aW9u LgorICovCitleHRlcm4gY29uc3QgVHVwbGVCYXRjaE9wcyAqdGFibGVfYmF0Y2hfY2FsbGJhY2tz KFJlbGF0aW9uIHJlbGF0aW9uKTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogVGFibGUg c2NhbiBmdW5jdGlvbnMuCkBAIC0xMDQ2LDYgKzEwNjAsMTggQEAgdGFibGVfc2Nhbl9nZXRuZXh0 c2xvdChUYWJsZVNjYW5EZXNjIHNzY2FuLCBTY2FuRGlyZWN0aW9uIGRpcmVjdGlvbiwgVHVwbGVU YWJsZVMKIAlyZXR1cm4gc3NjYW4tPnJzX3JkLT5yZF90YWJsZWFtLT5zY2FuX2dldG5leHRzbG90 KHNzY2FuLCBkaXJlY3Rpb24sIHNsb3QpOwogfQogCisvKgorICogdGFibGVfc3VwcG9ydHNfYmF0 Y2hpbmcKKyAqCQlEb2VzIHRoZSByZWxhdGlvbidzIEFNIHN1cHBvcnQgYmF0Y2hpbmc/CisgKi8K K3N0YXRpYyBpbmxpbmUgYm9vbAordGFibGVfc3VwcG9ydHNfYmF0Y2hpbmcoUmVsYXRpb24gcmVs YXRpb24pCit7CisJY29uc3QgVGFibGVBbVJvdXRpbmUgKnRhbSA9IHJlbGF0aW9uLT5yZF90YWJs ZWFtOworCisJcmV0dXJuIHRhbS0+c2Nhbl9nZXRuZXh0YmF0Y2ggIT0gTlVMTDsKK30KKwogLyoK ICAqIHRhYmxlX3NjYW5fYmVnaW5fYmF0Y2gKICAqCQlBbGxvY2F0ZSBBTS1vd25lZCBiYXRjaCBw YXlsb2FkIHdpdGggY2FwYWNpdHkgJ21heGl0ZW1zJy4KQEAgLTIxMTYsNSArMjE0Miw2IEBAIGV4 dGVybiBjb25zdCBUYWJsZUFtUm91dGluZSAqR2V0VGFibGVBbVJvdXRpbmUoT2lkIGFtaGFuZGxl cik7CiAgKi8KIAogZXh0ZXJuIGNvbnN0IFRhYmxlQW1Sb3V0aW5lICpHZXRIZWFwYW1UYWJsZUFt Um91dGluZSh2b2lkKTsKK2V4dGVybiBzdHJ1Y3QgVHVwbGVCYXRjaE9wcyAqR2V0SGVhcGFtVHVw bGVCYXRjaE9wcyh2b2lkKTsKIAogI2VuZGlmCQkJCQkJCS8qIFRBQkxFQU1fSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0JhdGNoLmggYi9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjQmF0Y2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u NmYxYTM4ZDE0YmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj QmF0Y2guaApAQCAtMCwwICsxLDEwMiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZXhl Y0JhdGNoLmgKKyAqCQlFeGVjdXRvciBiYXRjaCBlbnZlbG9wZSBmb3IgcGFzc2luZyB0dXBsZSBi YXRjaCBzdGF0ZSB1cHdhcmQKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAy NSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHly aWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisg KgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0JhdGNo LmgKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIEVYRUNCQVRDSF9ICisjZGVmaW5l IEVYRUNCQVRDSF9ICisKKyNpbmNsdWRlICJleGVjdXRvci90dXB0YWJsZS5oIgorCisvKiBYWFgg Zml4ZWQgNjQgZm9yIFBvQyAqLworI2RlZmluZQlFWEVDX0JBVENIX1JPV1MJCTY0CisKKy8qCisg KiBUdXBsZUJhdGNoT3BzIC0tIEFNLXNwZWNpZmljIGhlbHBlcnMgZm9yIGxhenkgbWF0ZXJpYWxp emF0aW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBUdXBsZUJhdGNoT3BzCit7CisJdm9pZCAoKm1h dGVyaWFsaXplX2FsbCkodm9pZCAqYW1fcGF5bG9hZCwKKwkJCQkJCQlUdXBsZVRhYmxlU2xvdCAq KmRzdCwKKwkJCQkJCQlpbnQgbWF4c2xvdHMpOworfSBUdXBsZUJhdGNoT3BzOworCisvKgorICog VHVwbGVCYXRjaAorICoKKyAqIEVudmVsb3BlIGZvciBhIGJhdGNoIG9mIHR1cGxlcyBwcm9kdWNl ZCBieSBhIHBsYW4gbm9kZSAoZS5nLiwgU2VxU2NhbikgcGVyCisgKiBjYWxsIHRvIGEgYmF0Y2gg dmFyaWFudCBvZiBFeGVjU2VxU2NhbigpLgorICovCit0eXBlZGVmIHN0cnVjdCBUdXBsZUJhdGNo Cit7CisJdm9pZAkgICAqYW1fcGF5bG9hZDsKKwljb25zdCBUdXBsZUJhdGNoT3BzICpvcHM7CisJ aW50CQkJbnR1cGxlczsJCQkJLyogbnVtYmVyIG9mIHR1cGxlcyBpbiBhbV9wYXlsb2FkICovCisJ Ym9vbAkJbWF0ZXJpYWxpemVkOwkJIC8qIHR1cGxlcyBpbiBzbG90cyB2YWxpZD8gKi8KKwlzdHJ1 Y3QgVHVwbGVUYWJsZVNsb3QgKippbnNsb3RzOyAvKiBzbG90cyBmb3IgdHVwbGVzIHJlYWQgImlu dG8iIGJhdGNoICovCisJc3RydWN0IFR1cGxlVGFibGVTbG90ICoqb3V0c2xvdHM7IC8qIHNsb3Rz IGZvciB0dXBsZXMgZ29pbmcgIm91dCBvZiIKKwkJCQkJCQkJCSAgICogYmF0Y2ggKi8KKwlzdHJ1 Y3QgVHVwbGVUYWJsZVNsb3QgKiphY3RpdmVzbG90czsKKwlpbnQJCQltYXhzbG90czsKKworCWlu dAkJbnZhbGlkOwkJLyogbnVtYmVyIG9mIHJldHVybmFibGUgdHVwbGVzIGluIG91dHNsb3RzICov CisJaW50CQluZXh0OwkJLyogMC1iYXNlZCBpbmRleCBvZiBuZXh0IHR1cGxlIHRvIGJlIHJldHVy bmVkICovCit9IFR1cGxlQmF0Y2g7CisKKworLyogSGVscGVycyAqLworZXh0ZXJuIFR1cGxlQmF0 Y2ggKlR1cGxlQmF0Y2hDcmVhdGUoVHVwbGVEZXNjIHNjYW5kZXNjLCBpbnQgY2FwYWNpdHkpOwor ZXh0ZXJuIHZvaWQgVHVwbGVCYXRjaFJlc2V0KFR1cGxlQmF0Y2ggKmIsIGJvb2wgZHJvcF9zbG90 cyk7CitleHRlcm4gdm9pZCBUdXBsZUJhdGNoVXNlSW5wdXQoVHVwbGVCYXRjaCAqYiwgaW50IG52 YWxpZCk7CitleHRlcm4gdm9pZCBUdXBsZUJhdGNoVXNlT3V0cHV0KFR1cGxlQmF0Y2ggKmIsIGlu dCBudmFsaWQpOworZXh0ZXJuIGJvb2wgVHVwbGVCYXRjaElzVmFsaWQoVHVwbGVCYXRjaCAqYik7 CitleHRlcm4gdm9pZCBUdXBsZUJhdGNoUmV3aW5kKFR1cGxlQmF0Y2ggKmIpOworZXh0ZXJuIGlu dCBUdXBsZUJhdGNoR2V0TnVtVmFsaWQoVHVwbGVCYXRjaCAqYik7CisKK3N0YXRpYyBpbmxpbmUg VHVwbGVUYWJsZVNsb3QgKgorVHVwbGVCYXRjaEdldE5leHRTbG90KFR1cGxlQmF0Y2ggKmIpCit7 CisJcmV0dXJuIGItPm5leHQgPCBiLT5udmFsaWQgPyBiLT5hY3RpdmVzbG90c1tiLT5uZXh0Kytd IDogTlVMTDsKK30KKworc3RhdGljIGlubGluZSBUdXBsZVRhYmxlU2xvdCAqCitUdXBsZUJhdGNo R2V0U2xvdChUdXBsZUJhdGNoICpiLCBpbnQgaW5kZXgpCit7CisJQXNzZXJ0KGluZGV4IDwgYi0+ bnZhbGlkKTsKKwlyZXR1cm4gYi0+YWN0aXZlc2xvdHNbaW5kZXhdOworfQorCitzdGF0aWMgaW5s aW5lIHZvaWQKK1R1cGxlQmF0Y2hTdG9yZUluT3V0KFR1cGxlQmF0Y2ggKmIsIGludCBpbmRleCwg VHVwbGVUYWJsZVNsb3QgKm91dCkKK3sKKwlBc3NlcnQoVHVwbGVCYXRjaElzVmFsaWQoYikpOwor CWItPm91dHNsb3RzW2luZGV4XSA9IG91dDsKK30KKworc3RhdGljIGlubGluZSBib29sCitUdXBs ZUJhdGNoSGFzTW9yZShUdXBsZUJhdGNoICpiKQoreworCXJldHVybiBiLT5hY3RpdmVzbG90cyAm JiBiLT5uZXh0IDwgYi0+bnZhbGlkOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK1R1cGxlQmF0 Y2hNYXRlcmlhbGl6ZUFsbChUdXBsZUJhdGNoICpiKQoreworCWlmIChiLT5tYXRlcmlhbGl6ZWQp CisJCXJldHVybjsKKworCWlmIChiLT5vcHMgPT0gTlVMTCB8fCBiLT5vcHMtPm1hdGVyaWFsaXpl X2FsbCA9PSBOVUxMKQorCQllbG9nKEVSUk9SLCAiVHVwbGVCYXRjaCBoYXMgbm8gc2xvdHMgYW5k IG5vIG1hdGVyaWFsaXplX2FsbCBvcCIpOworCisJYi0+b3BzLT5tYXRlcmlhbGl6ZV9hbGwoYi0+ YW1fcGF5bG9hZCwgYi0+aW5zbG90cywgYi0+bnR1cGxlcyk7CisJVHVwbGVCYXRjaFVzZUlucHV0 KGIsIGItPm50dXBsZXMpOworfQorCisjZW5kaWYJLyogRVhFQ0JBVENIX0ggKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNTY2FuLmggYi9zcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjU2Nhbi5oCmluZGV4IDgzN2VhNzc4NWJiLi5mZWM2MDY0NzFjOCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1NjYW4uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjU2Nhbi5oCkBAIC0yNDMsNCArMjQzLDU4IEBAIEV4ZWNTY2FuRXh0ZW5kZWQoU2NhblN0 YXRlICpub2RlLAogCX0KIH0KIAorc3RhdGljIGlubGluZSBUdXBsZVRhYmxlU2xvdCAqCitFeGVj U2NhbkV4dGVuZGVkQmF0Y2hTbG90KFNjYW5TdGF0ZSAqbm9kZSwKKwkJCQkJCSAgRXhlY1NjYW5B Y2Nlc3NCYXRjaE10ZCBhY2Nlc3NCYXRjaE10ZCwKKwkJCQkJCSAgRXhwclN0YXRlICpxdWFsLCBQ cm9qZWN0aW9uSW5mbyAqcHJvakluZm8pCit7CisJRXhwckNvbnRleHQgKmVjb250ZXh0ID0gbm9k ZS0+cHMucHNfRXhwckNvbnRleHQ7CisJVHVwbGVCYXRjaCAqYiA9IG5vZGUtPnBzLnBzX0JhdGNo OworCisJLyogQmF0Y2ggcGF0aCBkb2VzIG5vdCBzdXBwb3J0IEVQUSAqLworCUFzc2VydChub2Rl LT5wcy5zdGF0ZS0+ZXNfZXBxX2FjdGl2ZSA9PSBOVUxMKTsKKwlBc3NlcnQoVHVwbGVCYXRjaElz VmFsaWQoYikpOworCisJZm9yICg7OykKKwl7CisJCVR1cGxlVGFibGVTbG90ICppbjsKKworCQlD SEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCS8qIEdldCBuZXh0IGlucHV0IHNsb3QgZnJvbSBj dXJyZW50IGJhdGNoLCBvciByZWZpbGwgKi8KKwkJaWYgKCFUdXBsZUJhdGNoSGFzTW9yZShiKSkK KwkJeworCQkJaWYgKCFhY2Nlc3NCYXRjaE10ZChub2RlKSkKKwkJCQlyZXR1cm4gTlVMTDsKKwkJ fQorCisJCWluID0gVHVwbGVCYXRjaEdldE5leHRTbG90KGIpOworCQlBc3NlcnQoaW4pOworCisJ CS8qIE5vIHF1YWwsIG5vIHByb2plY3Rpb246IGRpcmVjdCByZXR1cm4gKi8KKwkJaWYgKHF1YWwg PT0gTlVMTCAmJiBwcm9qSW5mbyA9PSBOVUxMKQorCQkJcmV0dXJuIGluOworCisJCVJlc2V0RXhw ckNvbnRleHQoZWNvbnRleHQpOworCQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBpbjsKKwor CQkvKiBRdWFsIG9ubHkgKi8KKwkJaWYgKHByb2pJbmZvID09IE5VTEwpCisJCXsKKwkJCWlmIChx dWFsID09IE5VTEwgfHwgRXhlY1F1YWwocXVhbCwgZWNvbnRleHQpKQorCQkJCXJldHVybiBpbjsK KwkJCWVsc2UKKwkJCQlJbnN0ckNvdW50RmlsdGVyZWQxKG5vZGUsIDEpOworCQkJY29udGludWU7 CisJCX0KKworCQkvKiBQcm9qZWN0aW9uICh3aXRoIG9yIHdpdGhvdXQgcXVhbCkgKi8KKwkJaWYg KHF1YWwgPT0gTlVMTCB8fCBFeGVjUXVhbChxdWFsLCBlY29udGV4dCkpCisJCQlyZXR1cm4gRXhl Y1Byb2plY3QocHJvakluZm8pOworCQllbHNlCisJCQlJbnN0ckNvdW50RmlsdGVyZWQxKG5vZGUs IDEpOworCQkvKiBlbHNlIHRyeSBuZXh0IHR1cGxlICovCisJfQorfQorCiAjZW5kaWYJCQkJCQkJ LyogRVhFQ1NDQU5fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0 b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKaW5kZXggMzI0OGU3OGNkMjgu LjE3MjU4ZjdhZTJkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5o CisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTU3NSwxMiArNTc1LDE2 IEBAIGV4dGVybiBEYXR1bSBFeGVjTWFrZUZ1bmN0aW9uUmVzdWx0U2V0KFNldEV4cHJTdGF0ZSAq ZmNhY2hlLAogICovCiB0eXBlZGVmIFR1cGxlVGFibGVTbG90ICooKkV4ZWNTY2FuQWNjZXNzTXRk KSAoU2NhblN0YXRlICpub2RlKTsKIHR5cGVkZWYgYm9vbCAoKkV4ZWNTY2FuUmVjaGVja010ZCkg KFNjYW5TdGF0ZSAqbm9kZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOwordHlwZWRlZiBib29sICgq RXhlY1NjYW5BY2Nlc3NCYXRjaE10ZCkoU2NhblN0YXRlICpub2RlKTsKIAogZXh0ZXJuIFR1cGxl VGFibGVTbG90ICpFeGVjU2NhbihTY2FuU3RhdGUgKm5vZGUsIEV4ZWNTY2FuQWNjZXNzTXRkIGFj Y2Vzc010ZCwKIAkJCQkJCQkJRXhlY1NjYW5SZWNoZWNrTXRkIHJlY2hlY2tNdGQpOworCiBleHRl cm4gdm9pZCBFeGVjQXNzaWduU2NhblByb2plY3Rpb25JbmZvKFNjYW5TdGF0ZSAqbm9kZSk7CiBl eHRlcm4gdm9pZCBFeGVjQXNzaWduU2NhblByb2plY3Rpb25JbmZvV2l0aFZhcm5vKFNjYW5TdGF0 ZSAqbm9kZSwgaW50IHZhcm5vKTsKIGV4dGVybiB2b2lkIEV4ZWNTY2FuUmVTY2FuKFNjYW5TdGF0 ZSAqbm9kZSk7CitleHRlcm4gYm9vbCBTY2FuQ2FuVXNlQmF0Y2hpbmcoU2NhblN0YXRlICpzY2Fu c3RhdGUsIGludCBlZmxhZ3MpOworZXh0ZXJuIHZvaWQgU2NhblJlc2V0QmF0Y2hpbmcoU2NhblN0 YXRlICpzY2Fuc3RhdGUsIGJvb2wgZHJvcCk7CiAKIC8qCiAgKiBwcm90b3R5cGVzIGZyb20gZnVu Y3Rpb25zIGluIGV4ZWNUdXBsZXMuYwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWlu LmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCAxYmVmOTg0NzFjMy4uYjhlN2FmZGE1 N2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRl L21pc2NhZG1pbi5oCkBAIC0yODcsNiArMjg3LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGRvdWJs ZSBWYWN1dW1Db3N0RGVsYXk7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IFZhY3V1bUNvc3RCYWxh bmNlOwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgVmFjdXVtQ29zdEFjdGl2ZTsKIAorZXh0ZXJu IFBHRExMSU1QT1JUIGJvb2wgZXhlY3V0b3JfYmF0Y2hpbmc7CiAKIC8qIGluIHV0aWxzL21pc2Mv c3RhY2tfZGVwdGguYyAqLwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IGEzNjY1M2MzN2Y5Li5m NGJiOGY3ZGQ3ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNkZWZp bmUgRVhFQ05PREVTX0gKIAogI2luY2x1ZGUgImFjY2Vzcy90dXBjb252ZXJ0LmgiCisjaW5jbHVk ZSAiZXhlY3V0b3IvZXhlY0JhdGNoLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudC5o IgogI2luY2x1ZGUgImZtZ3IuaCIKICNpbmNsdWRlICJsaWIvaWxpc3QuaCIKQEAgLTExNDMsNiAr MTE0NCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBKc29uRXhwclN0YXRlCiAgKi8KIHR5cGVkZWYgVHVw bGVUYWJsZVNsb3QgKigqRXhlY1Byb2NOb2RlTXRkKSAoUGxhblN0YXRlICpwc3RhdGUpOwogCisv KiBSZXR1cm4gYSBiYXRjaDsgbWF5IHJldXNlIGNhbGxlci1wcm92aWRlZCBlbnZlbG9wZS4gTlVM TCA9PiBlbmQgb2Ygc2Nhbi4gKi8KK3N0cnVjdCBUdXBsZUJhdGNoOwordHlwZWRlZiBzdHJ1Y3Qg VHVwbGVCYXRjaCBUdXBsZUJhdGNoOworCiAvKiAtLS0tLS0tLS0tLS0tLS0tCiAgKgkJUGxhblN0 YXRlIG5vZGUKICAqCkBAIC0xMTk4LDYgKzEyMDMsOSBAQCB0eXBlZGVmIHN0cnVjdCBQbGFuU3Rh dGUKIAlFeHByQ29udGV4dCAqcHNfRXhwckNvbnRleHQ7CS8qIG5vZGUncyBleHByZXNzaW9uLWV2 YWx1YXRpb24gY29udGV4dCAqLwogCVByb2plY3Rpb25JbmZvICpwc19Qcm9qSW5mbzsJLyogaW5m byBmb3IgZG9pbmcgdHVwbGUgcHJvamVjdGlvbiAqLwogCisJLyogQmF0Y2hpbmcgc3RhdGUgaWYg bm9kZSBzdXBwb3J0cyBpdC4gKi8KKwlUdXBsZUJhdGNoICpwc19CYXRjaDsKKwogCWJvb2wJCWFz eW5jX2NhcGFibGU7CS8qIHRydWUgaWYgbm9kZSBpcyBhc3luYy1jYXBhYmxlICovCiAKIAkvKgot LSAKMi40Ny4zCgo= --00000000000006d2b20640c83360--