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 1qUKkB-00CVfs-Ce for pgsql-hackers@arkaria.postgresql.org; Fri, 11 Aug 2023 05:31:28 +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 1qUKk9-004Tbx-Ux for pgsql-hackers@arkaria.postgresql.org; Fri, 11 Aug 2023 05:31:26 +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 1qUKk9-004Tbp-Cl for pgsql-hackers@lists.postgresql.org; Fri, 11 Aug 2023 05:31:25 +0000 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qUKk6-001oxw-5Y for pgsql-hackers@postgresql.org; Fri, 11 Aug 2023 05:31:25 +0000 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-2693640dfa2so966774a91.3 for ; Thu, 10 Aug 2023 22:31:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1691731880; x=1692336680; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=frj9eq+X6sa/sTxXEydHFNehkSElWoFtJNJOr4DfTy4=; b=Vs70wkTNrPVpYDTTsYarsNn3W5yhMUbMkQYK0PWAkAlmzOjgLbP86BUZLZYj5q9mIQ UfcewRnKFCZoZNl2UqyczmlSnziGLuZjBKh2+Odu6fgT+V6wHKS/MPOtkLry8+WIZt3x u8qzgiXokExRPQxxNbeudA4pFme2O13IaMln9BNx0zgdwiViA0j2pUrPC4uT2N0IDizn MqQSKTeZDoO1+Jar5pH6y7J+getpqpuDefLdgtZAAgKGRSv896WQ3cPtg08rcvsxoA9U TcC+jmB537sPscGmGFi95k6tKAaUFY7LVE1Sx6u0afBMlFXnuLsexmhNdvtKYOIwoCam F4Lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691731880; x=1692336680; 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=frj9eq+X6sa/sTxXEydHFNehkSElWoFtJNJOr4DfTy4=; b=IMznFVDWvAmEWTbVWoQjjws8C3WFgLM+ERww4NLYdF2r40T94JAll/DH+AiTEhas34 mp80UkRwSNmVQ0RCpgddEufaLQVcMm3KQU8/PLco/j1/EXxP7c2bzM5LKD87tLVzvXvN EZSAPS9bp6KKHLOILOKprIIRnnK20PrMvmvLxkzSawTxer+dDmzKZsPaZTeBK2zmlttw IVy1A4SEsWNuGxaK6RoV5l01DM5Jb1INQ7yIpcVoFlrNxJR8tuZHLnoIZ4eBFbz3ZLVK a2Kcp2CnK7wvx59IU2dtXFe98xJ3Bzjp0pzbNei9hXInnCipW0pvBgJjEMiXlOhJ4Y0/ xLhg== X-Gm-Message-State: AOJu0YygRkAOtoT6NuagOAiVAfICWJUiX80DcpiKrA9CyHQyYgpG7wZa p98C1pQdArd04ZSL4MrhBDM9t3L2d5Ag7d51jOY= X-Google-Smtp-Source: AGHT+IF7bbRF/ebNTwC2X4xHNDeZLRSJCGGGzrfBTXo/sx6Vgl5koRgzxhlZNSYk+QVWfUdodfMfIoVNJr20IEkQ8n4= X-Received: by 2002:a17:90a:9a83:b0:26b:2230:d298 with SMTP id e3-20020a17090a9a8300b0026b2230d298mr421044pjp.46.1691731879558; Thu, 10 Aug 2023 22:31:19 -0700 (PDT) MIME-Version: 1.0 References: <20221221101846.7zsi7lscnm5ediik@alvherre.pgsql> <1350682.1671635927@sss.pgh.pa.us> <4191508.1674157166@sss.pgh.pa.us> <349124.1674185509@sss.pgh.pa.us> <20230207180855.xy5m4puwh5gzd7xy@awork3.anarazel.de> <1274885.1680558101@sss.pgh.pa.us> <9D23D8BB-83EE-451E-95C1-CF42ADB76869@yesql.se> In-Reply-To: From: Amit Langote Date: Fri, 11 Aug 2023 14:31:03 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Robert Haas Cc: Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , Jacob Champion , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: multipart/mixed; boundary="000000000000bcafc906029f0516" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000bcafc906029f0516 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Aug 9, 2023 at 1:05=E2=80=AFAM Robert Haas = wrote: > On Tue, Aug 8, 2023 at 10:32=E2=80=AFAM Amit Langote wrote: > > But should ExecInitNode() subroutines return the partially initialized > > PlanState node or NULL on detecting invalidation? If I'm > > understanding how you think this should be working correctly, I think > > you mean the former, because if it were the latter, ExecInitNode() > > would end up returning NULL at the top for the root and then there's > > nothing to pass to ExecEndNode(), so no way to clean up to begin with. > > In that case, I think we will need to adjust ExecEndNode() subroutines > > to add `if (node->ps.ps_ResultTupleSlot)` in the above code, for > > example. That's something Tom had said he doesn't like very much [1]. > > Yeah, I understood Tom's goal as being "don't return partially > initialized nodes." > > Personally, I'm not sure that's an important goal. In fact, I don't > even think it's a desirable one. It doesn't look difficult to audit > the end-node functions for cases where they'd fail if a particular > pointer were NULL instead of pointing to some real data, and just > fixing all such cases to have NULL-tests looks like purely mechanical > work that we are unlikely to get wrong. And at least some cases > wouldn't require any changes at all. > > If we don't do that, the complexity doesn't go away. It just moves > someplace else. Presumably what we do in that case is have > ExecInitNode functions undo any initialization that they've already > done before returning NULL. There are basically two ways to do that. > Option one is to add code at the point where they return early to > clean up anything they've already initialized, but that code is likely > to substantially duplicate whatever the ExecEndNode function already > knows how to do, and it's very easy for logic like this to get broken > if somebody rearranges an ExecInitNode function down the road. Yeah, I too am not a fan of making ExecInitNode() clean up partially initialized nodes. > Option > two is to rearrange the ExecInitNode functions now, to open relations > or recurse at the beginning, so that we discover the need to fail > before we initialize anything. That restricts our ability to further > rearrange the functions in future somewhat, but more importantly, > IMHO, it introduces more risk right now. Checking that the ExecEndNode > function will not fail if some pointers are randomly null is a lot > easier than checking that changing the order of operations in an > ExecInitNode function breaks nothing. > > I'm not here to say that we can't do one of those things. But I think > adding null-tests to ExecEndNode functions looks like *far* less work > and *way* less risk. +1 > There's a second issue here, too, which is when we abort ExecInitNode > partway through, how do we signal that? You're rightly pointing out > here that if we do that by returning NULL, then we don't do it by > returning a pointer to the partially initialized node that we just > created, which means that we either need to store those partially > initialized nodes in a separate data structure as you propose to do in > 0001, > > or else we need to pick a different signalling convention. We > could change (a) ExecInitNode to have an additional argument, bool > *kaboom, or (b) we could make it return bool and return the node > pointer via a new additional argument, or (c) we could put a Boolean > flag into the estate and let the function signal failure by flipping > the value of the flag. The failure can already be detected by seeing that ExecPlanIsValid(estate) is false. The question is what ExecInitNode() or any of its subroutines should return once it is. I think the following convention works: Return partially initialized state from ExecInit* function where we detect the invalidation after calling ExecInitNode() on a child plan, so that ExecEndNode() can recurse to clean it up. Return NULL from ExecInit* functions where we detect the invalidation after opening and locking a relation but before calling ExecInitNode() to initialize a child plan if there's one at all. Even if we may set things like ExprContext, TupleTableSlot fields, they are cleaned up independently of the plan tree anyway via the cleanup called with es_exprcontexts, es_tupleTable, respectively. I even noticed bits like this in ExecEnd* functions: - /* - * Free the exprcontext(s) ... now dead code, see ExecFreeExprContext - */ -#ifdef NOT_USED - ExecFreeExprContext(&node->ss.ps); - if (node->ioss_RuntimeContext) - FreeExprContext(node->ioss_RuntimeContext, true); -#endif So, AFAICS, ExprContext, TupleTableSlot cleanup in ExecNode* functions is unnecessary but remain around because nobody cared about and got around to getting rid of it. > If we do any of those things, then as far as I > can see 0001 is unnecessary. If we do none of them but also avoid > creating partially initialized nodes by one of the two techniques > mentioned two paragraphs prior, then 0001 is also unnecessary. If we > do none of them but do create partially initialized nodes, then we > need 0001. > > So if this were a restaurant menu, then it might look like this: > > Prix Fixe Menu (choose one from each) > > First Course - How do we clean up after partial initialization? > (1) ExecInitNode functions produce partially initialized nodes > (2) ExecInitNode functions get refactored so that the stuff that can > cause early exit always happens first, so that no cleanup is ever > needed > (3) ExecInitNode functions do any required cleanup in situ > > Second Course - How do we signal that initialization stopped early? > (A) Return NULL. > (B) Add a bool * out-parmeter to ExecInitNode. > (C) Add a Node * out-parameter to ExecInitNode and change the return > value to bool. > (D) Add a bool to the EState. > (E) Something else, maybe. > > I think that we need 0001 if we choose specifically (1) and (A). My > gut feeling is that the least-invasive way to do this project is to > choose (1) and (D). My second choice would be (1) and (C), and my > third choice would be (1) and (A). If I can't have (1), I think I > prefer (2) over (3), but I also believe I prefer hiding in a deep hole > to either of them. Maybe I'm not seeing the whole picture correctly > here, but both (2) and (3) look awfully painful to me. I think what I've ended up with in the attached 0001 (WIP) is both (1), (2), and (D). As mentioned above, (D) is implemented with the ExecPlanStillValid() function. -- Thanks, Amit Langote EDB: http://www.enterprisedb.com --000000000000bcafc906029f0516 Content-Type: application/octet-stream; name="v45-0006-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Disposition: attachment; filename="v45-0006-Track-opened-range-table-relations-in-a-List-in-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ll65godv0 RnJvbSA3N2EwN2UxMTVhMTg1MjdlYmU5MzEyZDcwM2Q1Yzc2ZDk0ZmMxZjg0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0OSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ1 IDYvNl0gVHJhY2sgb3BlbmVkIHJhbmdlIHRhYmxlIHJlbGF0aW9ucyBpbiBhIExpc3QgaW4KIEVT dGF0ZQoKVGhpcyBtYWtlcyBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zIGZhc3RlciB3aGVu IHRoZXJlIGFyZSBtYW55CnJlbGF0aW9ucyBpbiB0aGUgcmFuZ2UgdGFibGUgYnV0IG9ubHkgYSBm ZXcgYXJlIG9wZW5lZCBkdXJpbmcKZXhlY3V0aW9uLCBzdWNoIGFzIHdoZW4gcnVuLXRpbWUgcHJ1 bmluZyBraWNrcyBpbiBvbiBhbiBBcHBlbmQKY29udGFpbmluZyB0aG91c2FuZHMgb2YgcGFydGl0 aW9uIHN1YnBsYW5zLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdxRkdr TVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5jb20K LS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICB8IDkgKysrKystLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyB8IDIgKysKIHNyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oICAgIHwgMiArKwogMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggMTE5N2ZmMmJmMi4uZDY3 ODk0MGEzZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC0xNjQwLDEyICsxNjQwLDEzIEBA IEV4ZWNDbG9zZVJlc3VsdFJlbGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSkKIHZvaWQKIEV4ZWNDbG9z ZVJhbmdlVGFibGVSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUpCiB7Ci0JaW50CQkJaTsKKwlMaXN0 Q2VsbCAqbGM7CiAKLQlmb3IgKGkgPSAwOyBpIDwgZXN0YXRlLT5lc19yYW5nZV90YWJsZV9zaXpl OyBpKyspCisJZm9yZWFjaChsYywgZXN0YXRlLT5lc19vcGVuZWRfcmVsYXRpb25zKQogCXsKLQkJ aWYgKGVzdGF0ZS0+ZXNfcmVsYXRpb25zW2ldKQotCQkJdGFibGVfY2xvc2UoZXN0YXRlLT5lc19y ZWxhdGlvbnNbaV0sIE5vTG9jayk7CisJCVJlbGF0aW9uIHJlbCA9IGxmaXJzdChsYyk7CisKKwkJ dGFibGVfY2xvc2UocmVsLCBOb0xvY2spOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMu YwppbmRleCBhZjkyZDJiM2MzLi5mMDMyMGNmYTM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMu YwpAQCAtODM3LDYgKzgzNyw4IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICpl c3RhdGUsIEluZGV4IHJ0aSkKIAkJfQogCiAJCWVzdGF0ZS0+ZXNfcmVsYXRpb25zW3J0aSAtIDFd ID0gcmVsOworCQllc3RhdGUtPmVzX29wZW5lZF9yZWxhdGlvbnMgPSBsYXBwZW5kKGVzdGF0ZS0+ ZXNfb3BlbmVkX3JlbGF0aW9ucywKKwkJCQkJCQkJCQkJICByZWwpOwogCX0KIAogCXJldHVybiBy ZWw7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4IDcxOWE3MjgzMTkuLjA2YmY4MjliNzggMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL2V4ZWNub2Rlcy5oCkBAIC02MTksNiArNjE5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRl CiAJSW5kZXgJCWVzX3JhbmdlX3RhYmxlX3NpemU7CS8qIHNpemUgb2YgdGhlIHJhbmdlIHRhYmxl IGFycmF5cyAqLwogCVJlbGF0aW9uICAgKmVzX3JlbGF0aW9uczsJLyogQXJyYXkgb2YgcGVyLXJh bmdlLXRhYmxlLWVudHJ5IFJlbGF0aW9uCiAJCQkJCQkJCSAqIHBvaW50ZXJzLCBvciBOVUxMIGlm IG5vdCB5ZXQgb3BlbmVkICovCisJTGlzdAkgICAqZXNfb3BlbmVkX3JlbGF0aW9uczsgLyogTGlz dCBvZiBub24tTlVMTCBlbnRyaWVzIGluCisJCQkJCQkJCQkgICogZXNfcmVsYXRpb25zIGluIG5v IHNwZWNpZmljIG9yZGVyICovCiAJc3RydWN0IEV4ZWNSb3dNYXJrICoqZXNfcm93bWFya3M7CS8q IEFycmF5IG9mIHBlci1yYW5nZS10YWJsZS1lbnRyeQogCQkJCQkJCQkJCSAqIEV4ZWNSb3dNYXJr cywgb3IgTlVMTCBpZiBub25lICovCiAJTGlzdAkgICAqZXNfcnRlcGVybWluZm9zOwkvKiBMaXN0 IG9mIFJURVBlcm1pc3Npb25JbmZvICovCi0tIAoyLjM1LjMKCg== --000000000000bcafc906029f0516 Content-Type: application/octet-stream; name="v45-0003-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Disposition: attachment; filename="v45-0003-Add-field-to-store-parent-relids-to-Append-Merge.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ll65goeg3 RnJvbSAwYTkxNjE3ODNhNDE1ZWE1NTkzNTE0Y2I0ZDY1MGNkM2JjNmMwNjAxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjozMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ1 IDMvNl0gQWRkIGZpZWxkIHRvIHN0b3JlIHBhcmVudCByZWxpZHMgdG8KIEFwcGVuZC9NZXJnZUFw cGVuZAoKVGhlcmUncyBubyB3YXkgY3VycmVudGx5IGluIHRoZSBleGVjdXRvciB0byB0ZWxsIGlm IHRoZSBjaGlsZApzdWJwbGFucyBvZiBBcHBlbmQvTWVyZ2VBcHBlbmQgYXJlIHNjYW5uaW5nIHBh cnRpdGlvbnMsIGFuZCBpZgp0aGV5IGluZGVlZCBkbywgd2hhdCB0aGUgUlQgaW5kZXhlcyBvZiB0 aGVpciBwYXJlbnQvYW5jZXN0b3IgdGFibGVzCmFyZS4gIEV4ZWN1dG9yIGRvZXNuJ3QgbmVlZCB0 byBzZWUgdGhlaXIgUlQgaW5kZXhlcyBleGNlcHQgZm9yCnJ1bi10aW1lIHBydW5pbmcsIGluIHdo aWNoIGNhc2UgdGhleSBjYW4gY2FuIGJlIGZvdW5kIGluIHRoZQpQYXJ0aXRpb25QcnVuZUluZm8s IGJ1dCBhIGZ1dHVyZSBjb21taXQgd2lsbCBjcmVhdGUgYSBuZWVkIGZvcgp0aGVtIHRvIGJlIGF2 YWlsYWJsZSBhdCBhbGwgdGltZXMgZm9yIHRoZSBwdXJwb3NlIG9mIGxvY2tpbmcKdGhvc2UgcGFy ZW50L2FuY2VzdG9yIHRhYmxlcyB3aGVuIGV4ZWN1dGluZyBhIGNhY2hlZCBwbGFuLgoKVGhlIGNv ZGUgdG8gbG9vayB1cCBwYXJ0aXRpb25lZCBwYXJlbnQgcmVsaWRzIGZvciBhIGdpdmVuIGxpc3Qg b2YKcGFydGl0aW9uIHNjYW4gc3VicGF0aHMgb2YgYW4gQXBwZW5kL01lcmdlQXBwZW5kIGlzIGFs cmVhZHkgcHJlc2VudAppbiBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKSBidXQgaXQncyBsb2Nh bCB0byBwYXJ0cHJ1bmUuYy4gIFRoaXMKY29tbWl0IHJlZmFjdG9ycyB0aGF0IGNvZGUgaW50byBp dHMgb3duIGZ1bmN0aW9uIGNhbGxlZAphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcygpIGRl ZmluZWQgaW4gYXBwZW5kaW5mby5jIGFuZApnZW5lcmFsaXplcyBpdCB0byBjb25zaWRlciBjaGls ZCBqb2luIGFuZCBhZ2dyZWdhdGUgcGF0aHMuICBUbwpmYWNpbGl0YXRlIGxvb2tpbmcgdXAgb2Yg cGFyZW50IHJlbHMgb2YgY2hpbGQgZ3JvdXBpbmcgcmVscyBpbgphZGRfYXBwZW5kX3N1YnBhdGhf cGFydHJlbGlkcygpLCBwYXJlbnQgbGlua3MgYXJlIG5vdyBhbHNvIHNldCBpbgp0aGUgUmVsT3B0 SW5mb3Mgb2YgY2hpbGQgZ3JvdXBpbmcgcmVscyB0b28sIGxpa2UgdGhleSBhcmUgaW4KdGhvc2Ug b2YgY2hpbGQgYmFzZSBhbmQgam9pbiByZWxzLgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9DQStIaXdxRkdrTVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1Vjdvb2l0RUVwYktCME9fbWdA bWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFu LmMgfCAgNDEgKysrKysrLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAg ICB8ICAgMyArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgICAgfCAgIDQg Kwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jIHwgMTM0ICsrKysrKysr KysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jICAg IHwgMTI0ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rl cy5oICAgICAgICAgICB8ICAxNCArKysKIHNyYy9pbmNsdWRlL29wdGltaXplci9hcHBlbmRpbmZv LmggICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggICAg fCAgIDMgKy0KIDggZmlsZXMgY2hhbmdlZCwgMjAzIGluc2VydGlvbnMoKyksIDEyMyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFu LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggYWY0ODEw OTA1OC4uOGFjMWQzOTA5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v Y3JlYXRlcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4u YwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIm5vZGVzL2V4dGVuc2libGUuaCIKICNpbmNs dWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKKyNp bmNsdWRlICJvcHRpbWl6ZXIvYXBwZW5kaW5mby5oIgogI2luY2x1ZGUgIm9wdGltaXplci9jbGF1 c2VzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL2Nvc3QuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIv b3B0aW1pemVyLmgiCkBAIC0xMjEwLDYgKzEyMTEsNyBAQCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxh bm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZsYWdzKQogCU9pZAkJ ICAgKm5vZGVDb2xsYXRpb25zID0gTlVMTDsKIAlib29sCSAgICpub2RlTnVsbHNGaXJzdCA9IE5V TEw7CiAJYm9vbAkJY29uc2lkZXJfYXN5bmMgPSBmYWxzZTsKKwlMaXN0CSAgICphbGxwYXJ0cmVs aWRzID0gTklMOwogCiAJLyoKIAkgKiBUaGUgc3VicGF0aHMgbGlzdCBjb3VsZCBiZSBlbXB0eSwg aWYgZXZlcnkgY2hpbGQgd2FzIHByb3ZlbiBlbXB0eSBieQpAQCAtMTM1MSwxNSArMTM1MywyMyBA QCBjcmVhdGVfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3Rf cGF0aCwgaW50IGZsYWdzKQogCQkJKytuYXN5bmNwbGFuczsKIAkJfQogCisJCS8qCisJCSAqIEZp bmQgcGFydGl0aW9uZWQgcGFyZW50IHJlbChzKSBvZiB0aGUgc3VicGF0aCdzIHJlbChzKS4KKwkJ ICovCisJCWFsbHBhcnRyZWxpZHMgPSBhZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcyhyb290 LCBzdWJwYXRoLCByZWwsCisJCQkJCQkJCQkJCQkJICBhbGxwYXJ0cmVsaWRzKTsKKwogCQlzdWJw bGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCXBsYW4tPmFsbHBhcnRy ZWxpZHMgPSBhbGxwYXJ0cmVsaWRzOworCiAJLyoKLQkgKiBJZiBhbnkgcXVhbHMgZXhpc3QsIHRo ZXkgbWF5IGJlIHVzZWZ1bCB0byBwZXJmb3JtIGZ1cnRoZXIgcGFydGl0aW9uCi0JICogcHJ1bmlu ZyBkdXJpbmcgZXhlY3V0aW9uLiAgR2F0aGVyIGluZm9ybWF0aW9uIG5lZWRlZCBieSB0aGUgZXhl Y3V0b3IgdG8KLQkgKiBkbyBwYXJ0aXRpb24gcHJ1bmluZy4KKwkgKiBJZiBzY2FubmluZyBwYXJ0 aXRpb25zLCBjaGVjayBpZiB0aGVyZSBhcmUgcXVhbHMgdGhhdCBtYXkgYmUgdXNlZnVsIHRvCisJ ICogcGVyZm9ybSBmdXJ0aGVyIHBhcnRpdGlvbiBwcnVuaW5nIGR1cmluZyBleGVjdXRpb24uICBH YXRoZXIgaW5mb3JtYXRpb24KKwkgKiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvIGRvIHBhcnRp dGlvbiBwcnVuaW5nLgogCSAqLwotCWlmIChlbmFibGVfcGFydGl0aW9uX3BydW5pbmcpCisJaWYg KGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZyAmJiBhbGxwYXJ0cmVsaWRzICE9IE5JTCkKIAl7CiAJ CUxpc3QJICAgKnBydW5lcXVhbDsKIApAQCAtMTM4MCw3ICsxMzkwLDggQEAgY3JlYXRlX2FwcGVu ZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBBcHBlbmRQYXRoICpiZXN0X3BhdGgsIGludCBmbGFn cykKIAkJCXBhcnRwcnVuZWluZm8gPQogCQkJCW1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290 LCByZWwsCiAJCQkJCQkJCQkJIGJlc3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJIHBydW5l cXVhbCk7CisJCQkJCQkJCQkJIHBydW5lcXVhbCwKKwkJCQkJCQkJCQkgYWxscGFydHJlbGlkcyk7 CiAJfQogCiAJcGxhbi0+YXBwZW5kcGxhbnMgPSBzdWJwbGFuczsKQEAgLTE0MjYsNiArMTQzNyw3 IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBl bmRQYXRoICpiZXN0X3BhdGgsCiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJUmVsT3B0SW5mbyAq cmVsID0gYmVzdF9wYXRoLT5wYXRoLnBhcmVudDsKIAlQYXJ0aXRpb25QcnVuZUluZm8gKnBhcnRw cnVuZWluZm8gPSBOVUxMOworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHMgPSBOSUw7CiAKIAkvKgog CSAqIFdlIGRvbid0IGhhdmUgdGhlIGFjdHVhbCBjcmVhdGlvbiBvZiB0aGUgTWVyZ2VBcHBlbmQg bm9kZSBzcGxpdCBvdXQKQEAgLTE1MTUsMTUgKzE1MjcsMjMgQEAgY3JlYXRlX21lcmdlX2FwcGVu ZF9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNZXJnZUFwcGVuZFBhdGggKmJlc3RfcGF0aCwKIAkJ CXN1YnBsYW4gPSAoUGxhbiAqKSBzb3J0OwogCQl9CiAKKwkJLyoKKwkJICogRmluZCBwYXJ0aXRp b25lZCBwYXJlbnQgcmVsKHMpIG9mIHRoZSBzdWJwYXRoJ3MgcmVsKHMpLgorCQkgKi8KKwkJYWxs cGFydHJlbGlkcyA9IGFkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzKHJvb3QsIHN1YnBhdGgs IHJlbCwKKwkJCQkJCQkJCQkJCQkgIGFsbHBhcnRyZWxpZHMpOworCiAJCXN1YnBsYW5zID0gbGFw cGVuZChzdWJwbGFucywgc3VicGxhbik7CiAJfQogCisJbm9kZS0+YWxscGFydHJlbGlkcyA9IGFs bHBhcnRyZWxpZHM7CisKIAkvKgotCSAqIElmIGFueSBxdWFscyBleGlzdCwgdGhleSBtYXkgYmUg dXNlZnVsIHRvIHBlcmZvcm0gZnVydGhlciBwYXJ0aXRpb24KLQkgKiBwcnVuaW5nIGR1cmluZyBl eGVjdXRpb24uICBHYXRoZXIgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBleGVjdXRvciB0bwot CSAqIGRvIHBhcnRpdGlvbiBwcnVuaW5nLgorCSAqIElmIHNjYW5uaW5nIHBhcnRpdGlvbnMsIGNo ZWNrIGlmIHRoZXJlIGFyZSBxdWFscyB0aGF0IG1heSBiZSB1c2VmdWwgdG8KKwkgKiBwZXJmb3Jt IGZ1cnRoZXIgcGFydGl0aW9uIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZv cm1hdGlvbgorCSAqIG5lZWRlZCBieSB0aGUgZXhlY3V0b3IgdG8gZG8gcGFydGl0aW9uIHBydW5p bmcuCiAJICovCi0JaWYgKGVuYWJsZV9wYXJ0aXRpb25fcHJ1bmluZykKKwlpZiAoZW5hYmxlX3Bh cnRpdGlvbl9wcnVuaW5nICYmIGFsbHBhcnRyZWxpZHMgIT0gTklMKQogCXsKIAkJTGlzdAkgICAq cHJ1bmVxdWFsOwogCkBAIC0xNTM1LDcgKzE1NTUsOCBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3Bs YW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdlQXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQlpZiAo cHJ1bmVxdWFsICE9IE5JTCkKIAkJCXBhcnRwcnVuZWluZm8gPSBtYWtlX3BhcnRpdGlvbl9wcnVu ZWluZm8ocm9vdCwgcmVsLAogCQkJCQkJCQkJCQkJCSBiZXN0X3BhdGgtPnN1YnBhdGhzLAotCQkJ CQkJCQkJCQkJCSBwcnVuZXF1YWwpOworCQkJCQkJCQkJCQkJCSBwcnVuZXF1YWwsCisJCQkJCQkJ CQkJCQkJIGFsbHBhcnRyZWxpZHMpOwogCX0KIAogCW5vZGUtPm1lcmdlcGxhbnMgPSBzdWJwbGFu czsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwppbmRleCA0NGVmYjFmNGViLi5mOTdi YzA5MTEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC03ODU1LDggKzc4 NTUsMTEgQEAgY3JlYXRlX3BhcnRpdGlvbndpc2VfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8g KnJvb3QsCiAJCQkJCQkJCQkgICBhZ2dfY29zdHMsIGdkLCAmY2hpbGRfZXh0cmEsCiAJCQkJCQkJ CQkgICAmY2hpbGRfcGFydGlhbGx5X2dyb3VwZWRfcmVsKTsKIAorCQkvKiBNYXJrIGFzIGNoaWxk IG9mIGdyb3VwZWRfcmVsLiAqLworCQljaGlsZF9ncm91cGVkX3JlbC0+cGFyZW50ID0gZ3JvdXBl ZF9yZWw7CiAJCWlmIChjaGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpCiAJCXsKKwkJCWNoaWxk X3BhcnRpYWxseV9ncm91cGVkX3JlbC0+cGFyZW50ID0gZ3JvdXBlZF9yZWw7CiAJCQlwYXJ0aWFs bHlfZ3JvdXBlZF9saXZlX2NoaWxkcmVuID0KIAkJCQlsYXBwZW5kKHBhcnRpYWxseV9ncm91cGVk X2xpdmVfY2hpbGRyZW4sCiAJCQkJCQljaGlsZF9wYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDk3ZmE1NjFlNGUuLjg1NGRkN2M4YWYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTE3NjYsNiArMTc2Niw4IEBA IHNldF9hcHBlbmRfcmVmZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAlzZXRfZHVtbXlfdGxp c3RfcmVmZXJlbmNlcygoUGxhbiAqKSBhcGxhbiwgcnRvZmZzZXQpOwogCiAJYXBsYW4tPmFwcHJl bGlkcyA9IG9mZnNldF9yZWxpZF9zZXQoYXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOworCWZv cmVhY2gobCwgYXBsYW4tPmFsbHBhcnRyZWxpZHMpCisJCWxmaXJzdChsKSA9IG9mZnNldF9yZWxp ZF9zZXQoKFJlbGlkcykgbGZpcnN0KGwpLCBydG9mZnNldCk7CiAKIAlpZiAoYXBsYW4tPnBhcnRf cHJ1bmVfaW5mbykKIAl7CkBAIC0xODQyLDYgKzE4NDQsOCBAQCBzZXRfbWVyZ2VhcHBlbmRfcmVm ZXJlbmNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAlzZXRfZHVtbXlfdGxpc3RfcmVmZXJlbmNlcygo UGxhbiAqKSBtcGxhbiwgcnRvZmZzZXQpOwogCiAJbXBsYW4tPmFwcHJlbGlkcyA9IG9mZnNldF9y ZWxpZF9zZXQobXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOworCWZvcmVhY2gobCwgbXBsYW4t PmFsbHBhcnRyZWxpZHMpCisJCWxmaXJzdChsKSA9IG9mZnNldF9yZWxpZF9zZXQoKFJlbGlkcykg bGZpcnN0KGwpLCBydG9mZnNldCk7CiAKIAlpZiAobXBsYW4tPnBhcnRfcHJ1bmVfaW5mbykKIAl7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9hcHBlbmRpbmZvLmMKaW5kZXggZjQ1NmIzYjBhNC4u NWJkOGU4MmI5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5k aW5mby5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYwpAQCAt NDEsNiArNDEsNyBAQCBzdGF0aWMgdm9pZCBtYWtlX2luaF90cmFuc2xhdGlvbl9saXN0KFJlbGF0 aW9uIG9sZHJlbGF0aW9uLAogCQkJCQkJCQkJICBBcHBlbmRSZWxJbmZvICphcHBpbmZvKTsKIHN0 YXRpYyBOb2RlICphZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJ CQkJCQkJCQkJYWRqdXN0X2FwcGVuZHJlbF9hdHRyc19jb250ZXh0ICpjb250ZXh0KTsKK3N0YXRp YyBMaXN0ICphZGRfcGFydF9yZWxpZHMoTGlzdCAqYWxscGFydHJlbGlkcywgQml0bWFwc2V0ICpw YXJ0cmVsaWRzKTsKIAogCiAvKgpAQCAtMTAzNSwzICsxMDM2LDEzNiBAQCBkaXN0cmlidXRlX3Jv d19pZGVudGl0eV92YXJzKFBsYW5uZXJJbmZvICpyb290KQogCQl9CiAJfQogfQorCisvKgorICog YWRkX2FwcGVuZF9zdWJwYXRoX3BhcnRyZWxpZHMKKyAqCQlMb29rIHVwIGEgY2hpbGQgc3VicGF0 aCdzIHJlbCdzIHBhcnRpdGlvbmVkIHBhcmVudCByZWxpZHMgdXAgdG8KKyAqCQlwYXJlbnRyZWwg YW5kIGFkZCB0aGUgYml0bWFwc2V0IGNvbnRhaW5pbmcgdGhvc2UgaW50bworICoJCSdhbGxwYXJ0 cmVsaWRzJworICovCitMaXN0ICoKK2FkZF9hcHBlbmRfc3VicGF0aF9wYXJ0cmVsaWRzKFBsYW5u ZXJJbmZvICpyb290LCBQYXRoICpzdWJwYXRoLAorCQkJCQkJCSAgUmVsT3B0SW5mbyAqcGFyZW50 cmVsLAorCQkJCQkJCSAgTGlzdCAqYWxscGFydHJlbGlkcykKK3sKKwlSZWxPcHRJbmZvICpwcmVs ID0gc3VicGF0aC0+cGFyZW50OworCVJlbGlkcwkJcGFydHJlbGlkcyA9IE5VTEw7CisKKwkvKiBO b3RoaW5nIHRvIGRvIGlmIHRoZXJlJ3Mgbm8gcGFyZW50IHRvIGJlZ2luIHdpdGguICovCisJaWYg KCFJU19PVEhFUl9SRUwocHJlbCkpCisJCXJldHVybiBhbGxwYXJ0cmVsaWRzOworCisJLyoKKwkg KiBUcmF2ZXJzZSB1cCB0byB0aGUgcGF0aHJlbCdzIHRvcG1vc3QgcGFydGl0aW9uZWQgcGFyZW50 LCBjb2xsZWN0aW5nCisJICogcGFyZW50IHJlbGlkcyBhcyB3ZSBnbzsgYnV0IHN0b3AgaWYgd2Ug cmVhY2ggcGFyZW50cmVsLiAgKE5vcm1hbGx5LCBhCisJICogcGF0aHJlbCdzIHRvcG1vc3QgcGFy dGl0aW9uZWQgcGFyZW50IGlzIGVpdGhlciBwYXJlbnRyZWwgb3IgYSBVTklPTiBBTEwKKwkgKiBh cHBlbmRyZWwgY2hpbGQgb2YgcGFyZW50cmVsLiAgQnV0IHdoZW4gaGFuZGxpbmcgcGFydGl0aW9u d2lzZSBqb2lucyBvZgorCSAqIG11bHRpLWxldmVsIHBhcnRpdGlvbmluZyB0cmVlcywgd2UgY2Fu IHNlZSBhbiBhcHBlbmQgcGF0aCB3aG9zZQorCSAqIHBhcmVudHJlbCBpcyBhbiBpbnRlcm1lZGlh dGUgcGFydGl0aW9uZWQgdGFibGUuKQorCSAqLworCWRvCisJeworCQlSZWxpZHMJcGFyZW50X3Jl bGlkcyA9IE5VTEw7CisKKwkJLyoKKwkJICogRm9yIHNpbXBsZSBjaGlsZCByZWxzLCB3ZSBjYW4g c2ltcGx5IHNldCB0aGUgcGFyZW50X3JlbGlkcyB0bworCQkgKiBwcmVsLT5wYXJlbnQtPnJlbGlk cy4gIEJ1dCBmb3IgcGFydGl0aW9ud2lzZSBqb2luIGFuZCBhZ2dyZWdhdGUKKwkJICogY2hpbGQg cmVscywgd2hpbGUgd2UgY2FuIHVzZSBwcmVsLT5wYXJlbnQgdG8gbW92ZSB1cCB0aGUgdHJlZSwK KwkJICogcGFyZW50X3JlbGlkcyBtdXN0IGJlIGZvdW5kIHRoZSBoYXJkIHdheSB0aHJvdWdoIEFw cGVuZEluZm9JbmZvcywKKwkJICogYmVjYXVzZSAxKSBhIGpvaW5yZWwncyByZWxpZHMgbWF5IHBv aW50IHRvIFJURV9KT0lOIGVudHJpZXMsCisJCSAqIDIpIHRvcG1vc3QgcGFyZW50IGdyb3VwaW5n IHJlbCdzIHJlbGlkcyBmaWVsZCBpcyBOVUxMLgorCQkgKi8KKwkJaWYgKElTX1NJTVBMRV9SRUwo cHJlbCkpCisJCXsKKwkJCXByZWwgPSBwcmVsLT5wYXJlbnQ7CisJCQkvKiBTdG9wIG9uY2Ugd2Ug cmVhY2ggdGhlIHJvb3QgcGFydGl0aW9uZWQgcmVsLiAqLworCQkJaWYgKCFJU19QQVJUSVRJT05F RF9SRUwocHJlbCkpCisJCQkJYnJlYWs7CisJCQlwYXJlbnRfcmVsaWRzID0gYm1zX2FkZF9tZW1i ZXJzKHBhcmVudF9yZWxpZHMsIHByZWwtPnJlbGlkcyk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlB cHBlbmRSZWxJbmZvICoqYXBwaW5mb3M7CisJCQlpbnQJCW5hcHBpbmZvcywKKwkJCQkJaTsKKwor CQkJYXBwaW5mb3MgPSBmaW5kX2FwcGluZm9zX2J5X3JlbGlkcyhyb290LCBwcmVsLT5yZWxpZHMs CisJCQkJCQkJCQkJCSAgICZuYXBwaW5mb3MpOworCQkJZm9yIChpID0gMDsgaSA8IG5hcHBpbmZv czsgaSsrKQorCQkJeworCQkJCUFwcGVuZFJlbEluZm8gKmFwcGluZm8gPSBhcHBpbmZvc1tpXTsK KworCQkJCXBhcmVudF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcihwYXJlbnRfcmVsaWRzLAorCQkJ CQkJCQkJCQkgICBhcHBpbmZvLT5wYXJlbnRfcmVsaWQpOworCQkJfQorCQkJcGZyZWUoYXBwaW5m b3MpOworCQkJcHJlbCA9IHByZWwtPnBhcmVudDsKKwkJfQorCQkvKiBhY2NlcHQgdGhpcyBsZXZl bCBhcyBhbiBpbnRlcmVzdGluZyBwYXJlbnQgKi8KKwkJcGFydHJlbGlkcyA9IGJtc19hZGRfbWVt YmVycyhwYXJ0cmVsaWRzLCBwYXJlbnRfcmVsaWRzKTsKKwkJaWYgKHByZWwgPT0gcGFyZW50cmVs KQorCQkJYnJlYWs7CQkvKiBkb24ndCB0cmF2ZXJzZSBhYm92ZSBwYXJlbnRyZWwgKi8KKwl9IHdo aWxlIChJU19PVEhFUl9SRUwocHJlbCkpOworCisJaWYgKHBhcnRyZWxpZHMgPT0gTlVMTCkKKwkJ cmV0dXJuIGFsbHBhcnRyZWxpZHM7CisKKwlyZXR1cm4gYWRkX3BhcnRfcmVsaWRzKGFsbHBhcnRy ZWxpZHMsIHBhcnRyZWxpZHMpOworfQorCisvKgorICogYWRkX3BhcnRfcmVsaWRzCisgKgkJQWRk IG5ldyBpbmZvIHRvIGEgbGlzdCBvZiBCaXRtYXBzZXRzIG9mIHBhcnRpdGlvbmVkIHJlbGlkcy4K KyAqCisgKiBXaXRoaW4gJ2FsbHBhcnRyZWxpZHMnLCB0aGVyZSBpcyBvbmUgQml0bWFwc2V0IGZv ciBlYWNoIHRvcG1vc3QgcGFyZW50CisgKiBwYXJ0aXRpb25lZCByZWwuICBFYWNoIEJpdG1hcHNl dCBjb250YWlucyB0aGUgUlQgaW5kZXhlcyBvZiB0aGUgdG9wbW9zdAorICogcGFyZW50IGFzIHdl bGwgYXMgaXRzIHJlbGV2YW50IG5vbi1sZWFmIGNoaWxkIHBhcnRpdGlvbnMuICBTaW5jZSAoYnkK KyAqIGNvbnN0cnVjdGlvbiBvZiB0aGUgcmFuZ2V0YWJsZSBsaXN0KSBwYXJlbnQgcGFydGl0aW9u cyBtdXN0IGhhdmUgbG93ZXIKKyAqIFJUIGluZGV4ZXMgdGhhbiB0aGVpciBjaGlsZHJlbiwgd2Ug Y2FuIGRpc3Rpbmd1aXNoIHRoZSB0b3Btb3N0IHBhcmVudAorICogYXMgYmVpbmcgdGhlIGxvd2Vz dCBzZXQgYml0IGluIHRoZSBCaXRtYXBzZXQuCisgKgorICogJ3BhcnRyZWxpZHMnIGNvbnRhaW5z IHRoZSBSVCBpbmRleGVzIG9mIGEgcGFyZW50IHBhcnRpdGlvbmVkIHJlbCwgYW5kCisgKiBwb3Nz aWJseSBzb21lIG5vbi1sZWFmIGNoaWxkcmVuLCB0aGF0IGFyZSBuZXdseSBpZGVudGlmaWVkIGFz IHBhcmVudHMgb2YKKyAqIHNvbWUgc3VicGF0aCByZWwgcGFzc2VkIHRvIG1ha2VfcGFydGl0aW9u X3BydW5laW5mbygpLiAgVGhlc2UgYXJlIGFkZGVkCisgKiB0byBhbiBhcHByb3ByaWF0ZSBtZW1i ZXIgb2YgJ2FsbHBhcnRyZWxpZHMnLgorICoKKyAqIE5vdGUgdGhhdCB0aGUgbGlzdCBjb250YWlu cyBvbmx5IFJUIGluZGV4ZXMgb2YgcGFydGl0aW9uZWQgdGFibGVzIHRoYXQKKyAqIGFyZSBwYXJl bnRzIG9mIHNvbWUgc2Nhbi1sZXZlbCByZWxhdGlvbiBhcHBlYXJpbmcgaW4gdGhlICdzdWJwYXRo cycgdGhhdAorICogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKCkgaXMgZGVhbGluZyB3aXRoLiAg QWxzbywgInRvcG1vc3QiIHBhcmVudHMgYXJlCisgKiBub3QgYWxsb3dlZCB0byBiZSBoaWdoZXIg dGhhbiB0aGUgJ3BhcmVudHJlbCcgYXNzb2NpYXRlZCB3aXRoIHRoZSBhcHBlbmQKKyAqIHBhdGgu ICBJbiB0aGlzIHdheSwgd2UgYXZvaWQgZXhwZW5kaW5nIGN5Y2xlcyBvbiBwYXJ0aXRpb25lZCBy ZWxzIHRoYXQKKyAqIGNhbid0IGNvbnRyaWJ1dGUgdXNlZnVsIHBydW5pbmcgaW5mb3JtYXRpb24g Zm9yIHRoZSBwcm9ibGVtIGF0IGhhbmQuCisgKiAoSXQgaXMgcG9zc2libGUgZm9yICdwYXJlbnRy ZWwnIHRvIGJlIGEgY2hpbGQgcGFydGl0aW9uZWQgdGFibGUsIGFuZCBpdAorICogaXMgYWxzbyBw b3NzaWJsZSBmb3Igc2Nhbi1sZXZlbCByZWxhdGlvbnMgdG8gYmUgY2hpbGQgcGFydGl0aW9uZWQg dGFibGVzCisgKiByYXRoZXIgdGhhbiBsZWFmIHBhcnRpdGlvbnMuICBIZW5jZSB3ZSBtdXN0IGNv bnN0cnVjdCB0aGlzIHJlbGF0aW9uIHNldAorICogd2l0aCByZWZlcmVuY2UgdG8gdGhlIHBhcnRp Y3VsYXIgYXBwZW5kIHBhdGggd2UncmUgZGVhbGluZyB3aXRoLCByYXRoZXIKKyAqIHRoYW4gbG9v a2luZyBhdCB0aGUgZnVsbCBwYXJ0aXRpb25pbmcgc3RydWN0dXJlIHJlcHJlc2VudGVkIGluIHRo ZQorICogUmVsT3B0SW5mb3MuKQorICovCitzdGF0aWMgTGlzdCAqCithZGRfcGFydF9yZWxpZHMo TGlzdCAqYWxscGFydHJlbGlkcywgQml0bWFwc2V0ICpwYXJ0cmVsaWRzKQoreworCUluZGV4CQl0 YXJnZXRwYXJ0OworCUxpc3RDZWxsICAgKmxjOworCisJLyogV2UgY2FuIGVhc2lseSBnZXQgdGhl IGxvd2VzdCBzZXQgYml0IHRoaXMgd2F5OiAqLworCXRhcmdldHBhcnQgPSBibXNfbmV4dF9tZW1i ZXIocGFydHJlbGlkcywgLTEpOworCUFzc2VydCh0YXJnZXRwYXJ0ID4gMCk7CisKKwkvKiBMb29r IGZvciBhIG1hdGNoaW5nIHRvcG1vc3QgcGFyZW50ICovCisJZm9yZWFjaChsYywgYWxscGFydHJl bGlkcykKKwl7CisJCUJpdG1hcHNldCAgKmN1cnJwYXJ0cmVsaWRzID0gKEJpdG1hcHNldCAqKSBs Zmlyc3QobGMpOworCQlJbmRleAkJY3VycnRhcmdldCA9IGJtc19uZXh0X21lbWJlcihjdXJycGFy dHJlbGlkcywgLTEpOworCisJCWlmICh0YXJnZXRwYXJ0ID09IGN1cnJ0YXJnZXQpCisJCXsKKwkJ CS8qIEZvdW5kIGEgbWF0Y2gsIHNvIGFkZCBhbnkgbmV3IFJUIGluZGV4ZXMgdG8gdGhpcyBoaWVy YXJjaHkgKi8KKwkJCWN1cnJwYXJ0cmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKGN1cnJwYXJ0cmVs aWRzLCBwYXJ0cmVsaWRzKTsKKwkJCWxmaXJzdChsYykgPSBjdXJycGFydHJlbGlkczsKKwkJCXJl dHVybiBhbGxwYXJ0cmVsaWRzOworCQl9CisJfQorCS8qIE5vIG1hdGNoLCBzbyBhZGQgdGhlIG5l dyBwYXJ0aXRpb24gaGllcmFyY2h5IHRvIHRoZSBsaXN0ICovCisJcmV0dXJuIGxhcHBlbmQoYWxs cGFydHJlbGlkcywgcGFydHJlbGlkcyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0 aXRpb25pbmcvcGFydHBydW5lLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5l LmMKaW5kZXggNzE3OWIyMmEwNS4uMjEzNTEyYTVmNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9w YXJ0cHJ1bmUuYwpAQCAtMTM4LDcgKzEzOCw2IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lU3RlcFJl c3VsdAogfSBQcnVuZVN0ZXBSZXN1bHQ7CiAKIAotc3RhdGljIExpc3QgKmFkZF9wYXJ0X3JlbGlk cyhMaXN0ICphbGxwYXJ0cmVsaWRzLCBCaXRtYXBzZXQgKnBhcnRyZWxpZHMpOwogc3RhdGljIExp c3QgKm1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LAogCQkJ CQkJCQkJCSAgIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCQkJCQkgICBMaXN0ICpwcnVu ZXF1YWwsCkBAIC0yMTgsMzMgKzIxNywzMiBAQCBzdGF0aWMgdm9pZCBwYXJ0a2V5X2RhdHVtX2Zy b21fZXhwcihQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQsCiAgKiBvZiBzY2FuIHBhdGhz IGZvciBpdHMgY2hpbGQgcmVscy4KICAqICdwcnVuZXF1YWwnIGlzIGEgbGlzdCBvZiBwb3RlbnRp YWwgcHJ1bmluZyBxdWFscyAoaS5lLiwgcmVzdHJpY3Rpb24KICAqIGNsYXVzZXMgdGhhdCBhcmUg YXBwbGljYWJsZSB0byB0aGUgYXBwZW5kcmVsKS4KKyAqICdhbGxwYXJ0cmVsaWRzJyBjb250YWlu cyBCaXRtYXBzZXRzIG9mIFJUIGluZGV4ZXMgb2YgcGFydGl0aW9uZWQgcGFyZW50cworICogd2hv c2UgcGFydGl0aW9ucycgUGF0aHMgYXJlIGluICdzdWJwYXRocyc7IHRoZXJlJ3Mgb25lIEJpdG1h cHNldCBmb3IgZXZlcnkKKyAqIHBhcnRpdGlvbiB0cmVlIGludm9sdmVkLgogICovCiBQYXJ0aXRp b25QcnVuZUluZm8gKgogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQkJCQkgTGlzdCAqc3VicGF0aHMsCi0JCQkJCQkg TGlzdCAqcHJ1bmVxdWFsKQorCQkJCQkJIExpc3QgKnBydW5lcXVhbCwKKwkJCQkJCSBMaXN0ICph bGxwYXJ0cmVsaWRzKQogewogCVBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvOwogCUJpdG1h cHNldCAgKmFsbG1hdGNoZWRzdWJwbGFucyA9IE5VTEw7Ci0JTGlzdAkgICAqYWxscGFydHJlbGlk czsKIAlMaXN0CSAgICpwcnVuZXJlbGluZm9zOwogCWludAkJICAgKnJlbGlkX3N1YnBsYW5fbWFw OwogCUxpc3RDZWxsICAgKmxjOwogCWludAkJCWk7CiAKKwlBc3NlcnQobGlzdF9sZW5ndGgoYWxs cGFydHJlbGlkcykgPiAwKTsKKwogCS8qCi0JICogU2NhbiB0aGUgc3VicGF0aHMgdG8gc2VlIHdo aWNoIG9uZXMgYXJlIHNjYW5zIG9mIHBhcnRpdGlvbiBjaGlsZAotCSAqIHJlbGF0aW9ucywgYW5k IGlkZW50aWZ5IHRoZWlyIHBhcmVudCBwYXJ0aXRpb25lZCByZWxzLiAgKE5vdGU6IHdlIG11c3QK LQkgKiByZXN0cmljdCB0aGUgcGFyZW50IHBhcnRpdGlvbmVkIHJlbHMgdG8gYmUgcGFyZW50cmVs IG9yIGNoaWxkcmVuIG9mCi0JICogcGFyZW50cmVsLCBvdGhlcndpc2Ugd2UgY291bGRuJ3QgdHJh bnNsYXRlIHBydW5lcXVhbCB0byBtYXRjaC4pCi0JICoKLQkgKiBBbHNvIGNvbnN0cnVjdCBhIHRl bXBvcmFyeSBhcnJheSB0byBtYXAgZnJvbSBwYXJ0aXRpb24tY2hpbGQtcmVsYXRpb24KLQkgKiBy ZWxpZCB0byB0aGUgaW5kZXggaW4gJ3N1YnBhdGhzJyBvZiB0aGUgc2NhbiBwbGFuIGZvciB0aGF0 IHBhcnRpdGlvbi4KKwkgKiBDb25zdHJ1Y3QgYSB0ZW1wb3JhcnkgYXJyYXkgdG8gbWFwIGZyb20g cGFydGl0aW9uLWNoaWxkLXJlbGF0aW9uIHJlbGlkCisJICogdG8gdGhlIGluZGV4IGluICdzdWJw YXRocycgb2YgdGhlIHNjYW4gcGxhbiBmb3IgdGhhdCBwYXJ0aXRpb24uCiAJICogKFVzZSBvZiAi c3VicGxhbiIgcmF0aGVyIHRoYW4gInN1YnBhdGgiIGlzIGEgYml0IG9mIGEgbWlzbm9tZXIsIGJ1 dAogCSAqIHdlJ2xsIGxldCBpdCBzdGFuZC4pICBGb3IgY29udmVuaWVuY2UsIHdlIHVzZSAxLWJh c2VkIGluZGV4ZXMgaGVyZSwgc28KIAkgKiB0aGF0IHplcm8gY2FuIHJlcHJlc2VudCBhbiB1bi1m aWxsZWQgYXJyYXkgZW50cnkuCiAJICovCi0JYWxscGFydHJlbGlkcyA9IE5JTDsKIAlyZWxpZF9z dWJwbGFuX21hcCA9IHBhbGxvYzAoc2l6ZW9mKGludCkgKiByb290LT5zaW1wbGVfcmVsX2FycmF5 X3NpemUpOwogCiAJaSA9IDE7CkBAIC0yNTMsNTAgKzI1MSw5IEBAIG1ha2VfcGFydGl0aW9uX3By dW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50cmVsLAogCQlQYXRo CSAgICpwYXRoID0gKFBhdGggKikgbGZpcnN0KGxjKTsKIAkJUmVsT3B0SW5mbyAqcGF0aHJlbCA9 IHBhdGgtPnBhcmVudDsKIAotCQkvKiBXZSBkb24ndCBjb25zaWRlciBwYXJ0aXRpb25lZCBqb2lu cyBoZXJlICovCi0JCWlmIChwYXRocmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1C RVJfUkVMKQotCQl7Ci0JCQlSZWxPcHRJbmZvICpwcmVsID0gcGF0aHJlbDsKLQkJCUJpdG1hcHNl dCAgKnBhcnRyZWxpZHMgPSBOVUxMOwotCi0JCQkvKgotCQkJICogVHJhdmVyc2UgdXAgdG8gdGhl IHBhdGhyZWwncyB0b3Btb3N0IHBhcnRpdGlvbmVkIHBhcmVudCwKLQkJCSAqIGNvbGxlY3Rpbmcg cGFyZW50IHJlbGlkcyBhcyB3ZSBnbzsgYnV0IHN0b3AgaWYgd2UgcmVhY2gKLQkJCSAqIHBhcmVu dHJlbC4gIChOb3JtYWxseSwgYSBwYXRocmVsJ3MgdG9wbW9zdCBwYXJ0aXRpb25lZCBwYXJlbnQK LQkJCSAqIGlzIGVpdGhlciBwYXJlbnRyZWwgb3IgYSBVTklPTiBBTEwgYXBwZW5kcmVsIGNoaWxk IG9mCi0JCQkgKiBwYXJlbnRyZWwuICBCdXQgd2hlbiBoYW5kbGluZyBwYXJ0aXRpb253aXNlIGpv aW5zIG9mCi0JCQkgKiBtdWx0aS1sZXZlbCBwYXJ0aXRpb25pbmcgdHJlZXMsIHdlIGNhbiBzZWUg YW4gYXBwZW5kIHBhdGggd2hvc2UKLQkJCSAqIHBhcmVudHJlbCBpcyBhbiBpbnRlcm1lZGlhdGUg cGFydGl0aW9uZWQgdGFibGUuKQotCQkJICovCi0JCQlkbwotCQkJewotCQkJCUFwcGVuZFJlbElu Zm8gKmFwcGluZm87Ci0KLQkJCQlBc3NlcnQocHJlbC0+cmVsaWQgPCByb290LT5zaW1wbGVfcmVs X2FycmF5X3NpemUpOwotCQkJCWFwcGluZm8gPSByb290LT5hcHBlbmRfcmVsX2FycmF5W3ByZWwt PnJlbGlkXTsKLQkJCQlwcmVsID0gZmluZF9iYXNlX3JlbChyb290LCBhcHBpbmZvLT5wYXJlbnRf cmVsaWQpOwotCQkJCWlmICghSVNfUEFSVElUSU9ORURfUkVMKHByZWwpKQotCQkJCQlicmVhazsJ CS8qIHJlYWNoZWQgYSBub24tcGFydGl0aW9uZWQgcGFyZW50ICovCi0JCQkJLyogYWNjZXB0IHRo aXMgbGV2ZWwgYXMgYW4gaW50ZXJlc3RpbmcgcGFyZW50ICovCi0JCQkJcGFydHJlbGlkcyA9IGJt c19hZGRfbWVtYmVyKHBhcnRyZWxpZHMsIHByZWwtPnJlbGlkKTsKLQkJCQlpZiAocHJlbCA9PSBw YXJlbnRyZWwpCi0JCQkJCWJyZWFrOwkJLyogZG9uJ3QgdHJhdmVyc2UgYWJvdmUgcGFyZW50cmVs ICovCi0JCQl9IHdoaWxlIChwcmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9PVEhFUl9NRU1CRVJf UkVMKTsKLQotCQkJaWYgKHBhcnRyZWxpZHMpCi0JCQl7Ci0JCQkJLyoKLQkJCQkgKiBGb3VuZCBz b21lIHJlbGV2YW50IHBhcmVudCBwYXJ0aXRpb25zLCB3aGljaCBtYXkgb3IgbWF5IG5vdAotCQkJ CSAqIG92ZXJsYXAgd2l0aCBwYXJ0aXRpb24gdHJlZXMgd2UgYWxyZWFkeSBmb3VuZC4gIEFkZCBu ZXcKLQkJCQkgKiBpbmZvcm1hdGlvbiB0byB0aGUgYWxscGFydHJlbGlkcyBsaXN0LgotCQkJCSAq LwotCQkJCWFsbHBhcnRyZWxpZHMgPSBhZGRfcGFydF9yZWxpZHMoYWxscGFydHJlbGlkcywgcGFy dHJlbGlkcyk7Ci0JCQkJLyogQWxzbyByZWNvcmQgdGhlIHN1YnBsYW4gaW4gcmVsaWRfc3VicGxh bl9tYXBbXSAqLwotCQkJCS8qIE5vIGR1cGxpY2F0ZXMgcGxlYXNlICovCi0JCQkJQXNzZXJ0KHJl bGlkX3N1YnBsYW5fbWFwW3BhdGhyZWwtPnJlbGlkXSA9PSAwKTsKLQkJCQlyZWxpZF9zdWJwbGFu X21hcFtwYXRocmVsLT5yZWxpZF0gPSBpOwotCQkJfQotCQl9CisJCS8qIE5vIGR1cGxpY2F0ZXMg cGxlYXNlICovCisJCUFzc2VydChyZWxpZF9zdWJwbGFuX21hcFtwYXRocmVsLT5yZWxpZF0gPT0g MCk7CisJCXJlbGlkX3N1YnBsYW5fbWFwW3BhdGhyZWwtPnJlbGlkXSA9IGk7CiAJCWkrKzsKIAl9 CiAKQEAgLTM2Miw2MyArMzE5LDYgQEAgbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJcmV0dXJuIHBydW5laW5mbzsKIH0K IAotLyoKLSAqIGFkZF9wYXJ0X3JlbGlkcwotICoJCUFkZCBuZXcgaW5mbyB0byBhIGxpc3Qgb2Yg Qml0bWFwc2V0cyBvZiBwYXJ0aXRpb25lZCByZWxpZHMuCi0gKgotICogV2l0aGluICdhbGxwYXJ0 cmVsaWRzJywgdGhlcmUgaXMgb25lIEJpdG1hcHNldCBmb3IgZWFjaCB0b3Btb3N0IHBhcmVudAot ICogcGFydGl0aW9uZWQgcmVsLiAgRWFjaCBCaXRtYXBzZXQgY29udGFpbnMgdGhlIFJUIGluZGV4 ZXMgb2YgdGhlIHRvcG1vc3QKLSAqIHBhcmVudCBhcyB3ZWxsIGFzIGl0cyByZWxldmFudCBub24t bGVhZiBjaGlsZCBwYXJ0aXRpb25zLiAgU2luY2UgKGJ5Ci0gKiBjb25zdHJ1Y3Rpb24gb2YgdGhl IHJhbmdldGFibGUgbGlzdCkgcGFyZW50IHBhcnRpdGlvbnMgbXVzdCBoYXZlIGxvd2VyCi0gKiBS VCBpbmRleGVzIHRoYW4gdGhlaXIgY2hpbGRyZW4sIHdlIGNhbiBkaXN0aW5ndWlzaCB0aGUgdG9w bW9zdCBwYXJlbnQKLSAqIGFzIGJlaW5nIHRoZSBsb3dlc3Qgc2V0IGJpdCBpbiB0aGUgQml0bWFw c2V0LgotICoKLSAqICdwYXJ0cmVsaWRzJyBjb250YWlucyB0aGUgUlQgaW5kZXhlcyBvZiBhIHBh cmVudCBwYXJ0aXRpb25lZCByZWwsIGFuZAotICogcG9zc2libHkgc29tZSBub24tbGVhZiBjaGls ZHJlbiwgdGhhdCBhcmUgbmV3bHkgaWRlbnRpZmllZCBhcyBwYXJlbnRzIG9mCi0gKiBzb21lIHN1 YnBhdGggcmVsIHBhc3NlZCB0byBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oKS4gIFRoZXNlIGFy ZSBhZGRlZAotICogdG8gYW4gYXBwcm9wcmlhdGUgbWVtYmVyIG9mICdhbGxwYXJ0cmVsaWRzJy4K LSAqCi0gKiBOb3RlIHRoYXQgdGhlIGxpc3QgY29udGFpbnMgb25seSBSVCBpbmRleGVzIG9mIHBh cnRpdGlvbmVkIHRhYmxlcyB0aGF0Ci0gKiBhcmUgcGFyZW50cyBvZiBzb21lIHNjYW4tbGV2ZWwg cmVsYXRpb24gYXBwZWFyaW5nIGluIHRoZSAnc3VicGF0aHMnIHRoYXQKLSAqIG1ha2VfcGFydGl0 aW9uX3BydW5laW5mbygpIGlzIGRlYWxpbmcgd2l0aC4gIEFsc28sICJ0b3Btb3N0IiBwYXJlbnRz IGFyZQotICogbm90IGFsbG93ZWQgdG8gYmUgaGlnaGVyIHRoYW4gdGhlICdwYXJlbnRyZWwnIGFz c29jaWF0ZWQgd2l0aCB0aGUgYXBwZW5kCi0gKiBwYXRoLiAgSW4gdGhpcyB3YXksIHdlIGF2b2lk IGV4cGVuZGluZyBjeWNsZXMgb24gcGFydGl0aW9uZWQgcmVscyB0aGF0Ci0gKiBjYW4ndCBjb250 cmlidXRlIHVzZWZ1bCBwcnVuaW5nIGluZm9ybWF0aW9uIGZvciB0aGUgcHJvYmxlbSBhdCBoYW5k LgotICogKEl0IGlzIHBvc3NpYmxlIGZvciAncGFyZW50cmVsJyB0byBiZSBhIGNoaWxkIHBhcnRp dGlvbmVkIHRhYmxlLCBhbmQgaXQKLSAqIGlzIGFsc28gcG9zc2libGUgZm9yIHNjYW4tbGV2ZWwg cmVsYXRpb25zIHRvIGJlIGNoaWxkIHBhcnRpdGlvbmVkIHRhYmxlcwotICogcmF0aGVyIHRoYW4g bGVhZiBwYXJ0aXRpb25zLiAgSGVuY2Ugd2UgbXVzdCBjb25zdHJ1Y3QgdGhpcyByZWxhdGlvbiBz ZXQKLSAqIHdpdGggcmVmZXJlbmNlIHRvIHRoZSBwYXJ0aWN1bGFyIGFwcGVuZCBwYXRoIHdlJ3Jl IGRlYWxpbmcgd2l0aCwgcmF0aGVyCi0gKiB0aGFuIGxvb2tpbmcgYXQgdGhlIGZ1bGwgcGFydGl0 aW9uaW5nIHN0cnVjdHVyZSByZXByZXNlbnRlZCBpbiB0aGUKLSAqIFJlbE9wdEluZm9zLikKLSAq Lwotc3RhdGljIExpc3QgKgotYWRkX3BhcnRfcmVsaWRzKExpc3QgKmFsbHBhcnRyZWxpZHMsIEJp dG1hcHNldCAqcGFydHJlbGlkcykKLXsKLQlJbmRleAkJdGFyZ2V0cGFydDsKLQlMaXN0Q2VsbCAg ICpsYzsKLQotCS8qIFdlIGNhbiBlYXNpbHkgZ2V0IHRoZSBsb3dlc3Qgc2V0IGJpdCB0aGlzIHdh eTogKi8KLQl0YXJnZXRwYXJ0ID0gYm1zX25leHRfbWVtYmVyKHBhcnRyZWxpZHMsIC0xKTsKLQlB c3NlcnQodGFyZ2V0cGFydCA+IDApOwotCi0JLyogTG9vayBmb3IgYSBtYXRjaGluZyB0b3Btb3N0 IHBhcmVudCAqLwotCWZvcmVhY2gobGMsIGFsbHBhcnRyZWxpZHMpCi0JewotCQlCaXRtYXBzZXQg ICpjdXJycGFydHJlbGlkcyA9IChCaXRtYXBzZXQgKikgbGZpcnN0KGxjKTsKLQkJSW5kZXgJCWN1 cnJ0YXJnZXQgPSBibXNfbmV4dF9tZW1iZXIoY3VycnBhcnRyZWxpZHMsIC0xKTsKLQotCQlpZiAo dGFyZ2V0cGFydCA9PSBjdXJydGFyZ2V0KQotCQl7Ci0JCQkvKiBGb3VuZCBhIG1hdGNoLCBzbyBh ZGQgYW55IG5ldyBSVCBpbmRleGVzIHRvIHRoaXMgaGllcmFyY2h5ICovCi0JCQljdXJycGFydHJl bGlkcyA9IGJtc19hZGRfbWVtYmVycyhjdXJycGFydHJlbGlkcywgcGFydHJlbGlkcyk7Ci0JCQls Zmlyc3QobGMpID0gY3VycnBhcnRyZWxpZHM7Ci0JCQlyZXR1cm4gYWxscGFydHJlbGlkczsKLQkJ fQotCX0KLQkvKiBObyBtYXRjaCwgc28gYWRkIHRoZSBuZXcgcGFydGl0aW9uIGhpZXJhcmNoeSB0 byB0aGUgbGlzdCAqLwotCXJldHVybiBsYXBwZW5kKGFsbHBhcnRyZWxpZHMsIHBhcnRyZWxpZHMp OwotfQotCiAvKgogICogbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8KICAqCQlCdWlsZCBh IExpc3Qgb2YgUGFydGl0aW9uZWRSZWxQcnVuZUluZm9zLCBvbmUgZm9yIGVhY2ggaW50ZXJlc3Rp bmcKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggMWI3ODdmZTAzMS4uN2E1ZjNiYTYyNSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcGxhbm5vZGVzLmgKQEAgLTI2Nyw2ICsyNjcsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5k CiAJTGlzdAkgICAqYXBwZW5kcGxhbnM7CiAJaW50CQkJbmFzeW5jcGxhbnM7CS8qICMgb2YgYXN5 bmNocm9ub3VzIHBsYW5zICovCiAKKwkvKgorCSAqIFJUSXMgb2YgYWxsIHBhcnRpdGlvbmVkIHRh YmxlcyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBieQorCSAqIGFwcGVuZHBsYW5zLiBUaGUg bGlzdCBjb250YWlucyBhIGJpdG1hcHNldCBmb3IgZXZlcnkgcGFydGl0aW9uIHRyZWUKKwkgKiBj b3ZlcmVkIGJ5IHRoaXMgQXBwZW5kLgorCSAqLworCUxpc3QJICAgKmFsbHBhcnRyZWxpZHM7CisK IAkvKgogCSAqIEFsbCAnYXBwZW5kcGxhbnMnIHByZWNlZGluZyB0aGlzIGluZGV4IGFyZSBub24t cGFydGlhbCBwbGFucy4gQWxsCiAJICogJ2FwcGVuZHBsYW5zJyBmcm9tIHRoaXMgaW5kZXggb253 YXJkcyBhcmUgcGFydGlhbCBwbGFucy4KQEAgLTI5MSw2ICsyOTgsMTMgQEAgdHlwZWRlZiBzdHJ1 Y3QgTWVyZ2VBcHBlbmQKIAogCUxpc3QJICAgKm1lcmdlcGxhbnM7CiAKKwkvKgorCSAqIFJUSXMg b2YgYWxsIHBhcnRpdGlvbmVkIHRhYmxlcyB3aG9zZSBjaGlsZHJlbiBhcmUgc2Nhbm5lZCBieQor CSAqIG1lcmdlcGxhbnMuIFRoZSBsaXN0IGNvbnRhaW5zIGEgYml0bWFwc2V0IGZvciBldmVyeSBw YXJ0aXRpb24gdHJlZQorCSAqIGNvdmVyZWQgYnkgdGhpcyBNZXJnZUFwcGVuZC4KKwkgKi8KKwlM aXN0CSAgICphbGxwYXJ0cmVsaWRzOworCiAJLyogdGhlc2UgZmllbGRzIGFyZSBqdXN0IGxpa2Ug dGhlIHNvcnQta2V5IGluZm8gaW4gc3RydWN0IFNvcnQ6ICovCiAKIAkvKiBudW1iZXIgb2Ygc29y dC1rZXkgY29sdW1ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVu ZGluZm8uaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9hcHBlbmRpbmZvLmgKaW5kZXggYTA1Zjkx Zjc3ZC4uMTYyMWE3MzE5YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2FwcGVu ZGluZm8uaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvYXBwZW5kaW5mby5oCkBAIC00Niw1 ICs0Niw4IEBAIGV4dGVybiB2b2lkIGFkZF9yb3dfaWRlbnRpdHlfY29sdW1ucyhQbGFubmVySW5m byAqcm9vdCwgSW5kZXggcnRpbmRleCwKIAkJCQkJCQkJCSBSYW5nZVRibEVudHJ5ICp0YXJnZXRf cnRlLAogCQkJCQkJCQkJIFJlbGF0aW9uIHRhcmdldF9yZWxhdGlvbik7CiBleHRlcm4gdm9pZCBk aXN0cmlidXRlX3Jvd19pZGVudGl0eV92YXJzKFBsYW5uZXJJbmZvICpyb290KTsKK2V4dGVybiBM aXN0ICphZGRfYXBwZW5kX3N1YnBhdGhfcGFydHJlbGlkcyhQbGFubmVySW5mbyAqcm9vdCwgUGF0 aCAqc3VicGF0aCwKKwkJCQkJCQkgIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKKwkJCQkJCQkgIExp c3QgKmFsbHBhcnRyZWxpZHMpOwogCiAjZW5kaWYJCQkJCQkJLyogQVBQRU5ESU5GT19IICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggYi9zcmMvaW5j bHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKaW5kZXggODYzNmUwNGUzNy4uY2FhNzc0YTEx MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCisrKyBi L3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaApAQCAtNzMsNyArNzMsOCBAQCB0 eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZUNvbnRleHQKIGV4dGVybiBQYXJ0aXRpb25QcnVu ZUluZm8gKm1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8gKnJvb3Qs CiAJCQkJCQkJCQkJCQkJc3RydWN0IFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJCQkJCQkJCQkJ CQlMaXN0ICpzdWJwYXRocywKLQkJCQkJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOworCQkJCQkJ CQkJCQkJCUxpc3QgKnBydW5lcXVhbCwKKwkJCQkJCQkJCQkJCQlMaXN0ICphbGxwYXJ0cmVsaWRz KTsKIGV4dGVybiBCaXRtYXBzZXQgKnBydW5lX2FwcGVuZF9yZWxfcGFydGl0aW9ucyhzdHJ1Y3Qg UmVsT3B0SW5mbyAqcmVsKTsKIGV4dGVybiBCaXRtYXBzZXQgKmdldF9tYXRjaGluZ19wYXJ0aXRp b25zKFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgIExpc3QgKnBy dW5pbmdfc3RlcHMpOwotLSAKMi4zNS4zCgo= --000000000000bcafc906029f0516 Content-Type: application/octet-stream; name="v45-0005-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Disposition: attachment; filename="v45-0005-Delay-locking-of-child-tables-in-cached-plans-un.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ll65goee1 RnJvbSAwZWQwYTY5MjhmMGM5YTRjNzEzODUwYjZmMGQ3MmFiNWEwMGM4NDI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0NSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ1 IDUvNl0gRGVsYXkgbG9ja2luZyBvZiBjaGlsZCB0YWJsZXMgaW4gY2FjaGVkIHBsYW5zIHVudGls CiBFeGVjdXRvclN0YXJ0KCkKCkN1cnJlbnRseSwgR2V0Q2FjaGVkUGxhbigpIHRha2VzIGEgbG9j ayBvbiBhbGwgcmVsYXRpb25zIGNvbnRhaW5lZCBpbgphIGNhY2hlZCBwbGFuIGJlZm9yZSByZXR1 cm5pbmcgaXQgYXMgYSB2YWxpZCBwbGFuIHRvIGl0cyBjYWxsZXJzIGZvcgpleGVjdXRpb24uICBP bmUgZGlzYWR2YW50YWdlIGlzIHRoYXQgaWYgdGhlIHBsYW4gY29udGFpbnMgcGFydGl0aW9ucwp0 aGF0IGFyZSBwcnVuYWJsZSB3aXRoIGNvbmRpdGlvbnMgaW52b2x2aW5nIEVYVEVSTiBwYXJhbWV0 ZXJzIGFuZApvdGhlciBzdGFibGUgZXhwcmVzc2lvbnMgKGtub3duIGFzICJpbml0aWFsIHBydW5p bmciKSwgbWFueSBvZiB0aGVtCndvdWxkIGJlIGxvY2tlZCB1bm5lY2Vzc2FyaWx5LCBiZWNhdXNl IG9ubHkgdGhvc2UgdGhhdCBzdXJ2aXZlCmluaXRpYWwgcHJ1bmluZyBuZWVkIHRvIGhhdmUgYmVl biBsb2NrZWQuICBMb2NraW5nIGFsbCBwYXJ0aXRpb25zIHRoaXMKd2F5IGNhdXNlcyBzaWduaWZp Y2FudCBkZWxheSB3aGVuIHRoZXJlIGFyZSBtYW55IHBhcnRpdGlvbnMuICBOb3RlCnRoYXQgaW5p dGlhbCBwcnVuaW5nIG9jY3VycyBkdXJpbmcgZXhlY3V0b3IncyBpbml0aWFsaXphdGlvbiBvZiB0 aGUKcGxhbiwgdGhhdCBpcywgRXhlY0luaXROb2RlKCkuCgpUaGlzIGNvbW1pdCByZWFycmFuZ2Vz IHRoaW5ncyB0byBtb3ZlIHRoZSBsb2NraW5nIG9mIGNoaWxkIHRhYmxlcwpyZWZlcmVuY2VkIGlu IGEgY2FjaGVkIHBsYW4gdG8gb2NjdXIgZHVyaW5nIEV4ZWNJbml0Tm9kZSgpIHNvIHRoYXQKaW5p dGlhbCBwcnVuaW5nIGluIHRoZSBFeGVjSW5pdE5vZGUoKSBzdWJyb3V0aW5lcyBvZiB0aGUgcGxh biBub2Rlcwp0aGF0IHN1cHBvcnQgcHJ1bmluZyBjYW4gZWxpbWluYXRlIGFueSBjaGlsZCB0YWJs ZXMgdGhhdCBuZWVkIG5vdCBiZQpzY2FubmVkIGFuZCB0aHVzIGxvY2tlZC4KClRvIGRldGVybWlu ZSB0aGF0IGEgZ2l2ZW4gdGFibGUgaXMgYSBjaGlsZCB0YWJsZSwKRXhlY0dldFJhbmdlVGFibGVS ZWxhdGlvbigpIG5vdyBsb29rcyBhdCB0aGUgUlRFJ3MgaW5Gcm9tQ2wgZmllbGQsCndoaWNoIGlz IG9ubHkgdHJ1ZSBmb3IgdGFibGVzIHRoYXQgYXJlIGRpcmVjdGx5IG1lbnRpb25lZCBpbiB0aGUK cXVlcnkgYnV0IGZhbHNlIGZvciBjaGlsZCB0YWJsZXMuICBOb3RlIHRoYXQgYW55IHRhYmxlcyB3 aG9zZSBSVEVzJwppbkZyb21DbCBpcyB0cnVlIHdvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIGxvY2tl ZCBieSBHZXRDYWNoZWRQbGFuKCksCnNvIG5lZWQgbm90IGJlIGxvY2tlZCBhZ2FpbiBkdXJpbmcg ZXhlY3V0aW9uLgoKSWYgdGhlIGxvY2tpbmcgb2YgY2hpbGQgdGFibGVzIGNhdXNlcyB0aGUgQ2Fj aGVkUGxhbiB0byBnbyBzdGFsZSwgdGhhdAppcywgaXRzIGlzX3ZhbGlkIHNldCB0byBmYWxzZSBi eSBQbGFuQ2FjaGVSZWxDYWxsYmFjaygpIHdoZW4gYW4KaW52YWxpZGF0aW9uIG1lc3NhZ2UgbWF0 Y2hpbmcgc29tZSBjaGlsZCB0YWJsZSBjb250YWluZWQgaW4gdGhlIHBsYW4KaXMgcHJvY2Vzc2Vk LCBFeGVjSW5pdE5vZGUoKSBhYmFuZG9ucyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlCnJlbWFp bmluZyBub2RlcyBpbiB0aGUgcGxhbiB0cmVlLiAgSW4gdGhhdCBjYXNlLCBJbml0UGxhbigpIHJl dHVybnMKYWZ0ZXIgc2V0dGluZyBRdWVyeURlc2MucGxhbnN0YXRlIHRvIE5VTEwgdG8gaW5kaWNh dGUgdG8gdGhlIGNhbGxlcgp0aGF0IG5vIGV4ZWN1dGlvbiBpcyBwb3NzaWJsZSB3aXRoIHRoZSBw bGFuIHRyZWUgYXMgaXMuICBBbHNvLApFeGVjdXRvclN0YXJ0KCkgbm93IHJldHVybnMgdHJ1ZSBv ciBmYWxzZSB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdApRdWVyeURlc2MucGxhbnN0YXRlIHBv aW50cyB0byBhIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCBQbGFuU3RhdGUKdHJlZS4gIENhbGwg c2l0ZXMgdGhhdCB1c2UgR2V0Q2FjaGVkUGxhbigpIHRvIGdldCB0aGUgcGxhbiB0cmVlcyB0bwpw YXNzIHRvIHRoZSBleGVjdXRvciBzaG91bGQgbm93IGJlIHByZXBhcmVkIHRvIHJldHJ5IGluIHRo ZSBjYXNlcwp3aGVyZSBFeGVjdXRvclN0YXJ0KCkgcmV0dXJucyBmYWxzZS4KCkRpc2N1c3Npb246 IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtRemRlMG9ocEF5Y0xRdVY3 b29pdEVFcGJLQjBPX21nQG1haWwuZ21haWwuY29tCi0tLQogY29udHJpYi9hdXRvX2V4cGxhaW4v YXV0b19leHBsYWluLmMgICAgICAgICAgIHwgIDEyICstCiAuLi4vcGdfc3RhdF9zdGF0ZW1lbnRz L3BnX3N0YXRfc3RhdGVtZW50cy5jICAgfCAgMTIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHl0by5jICAgICAgICAgICAgICAgICB8ICAgNyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY3Jl YXRlYXMuYyAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBs YWluLmMgICAgICAgICAgICAgICAgfCAgMzMgKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0 ZW5zaW9uLmMgICAgICAgICAgICAgIHwgICA0ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2 aWV3LmMgICAgICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRh bGNtZHMuYyAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFy ZS5jICAgICAgICAgICAgICAgIHwgIDIzICsrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1F ICAgICAgICAgICAgICAgICAgIHwgIDM5ICsrKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jICAgICAgICAgICAgICAgfCAgNjQgKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmMgICAgICAgICAgIHwgIDE0ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUGFydGl0aW9uLmMgICAgICAgICAgfCAgMTAgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNVdGlscy5jICAgICAgICAgICAgICB8ICA2MSArKysrKy0tCiBzcmMvYmFja2VuZC9leGVjdXRv ci9mdW5jdGlvbnMuYyAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVBcHBlbmQuYyAgICAgICAgICAgICB8ICAxOSArKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVNZXJnZUFwcGVuZC5jICAgICAgICB8ICAxOSArKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9y L3NwaS5jICAgICAgICAgICAgICAgICAgICB8ICAyNiArKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9sbWdyLmMgICAgICAgICAgICAgICB8ICA0NSArKysrKwogc3JjL2JhY2tlbmQvdGNvcC9w b3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgIHwgIDE4ICstCiBzcmMvYmFja2VuZC90Y29wL3Bx dWVyeS5jICAgICAgICAgICAgICAgICAgICAgfCAgNDkgKysrKystCiBzcmMvYmFja2VuZC91dGls cy9jYWNoZS9sc3lzY2FjaGUuYyAgICAgICAgICAgfCAgMjEgKysrCiBzcmMvYmFja2VuZC91dGls cy9jYWNoZS9wbGFuY2FjaGUuYyAgICAgICAgICAgfCAxNTYgKysrKysrKy0tLS0tLS0tLS0tCiBz cmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNy Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggICAgICAgICAgICAgICB8ICAgNCArCiBzcmMv aW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAgICAgfCAgIDcgKy0KIHNyYy9p bmNsdWRlL3N0b3JhZ2UvbG1nci5oICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5j bHVkZS90Y29wL3BxdWVyeS5oICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNs dWRlL3V0aWxzL2xzeXNjYWNoZS5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9t b2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZSAgICAgfCAgIDMgKy0KIC4uLi9tb2R1bGVz L2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYyB8ICA2NyArKysrKysrLQogLi4uL2V4 cGVjdGVkL2NhY2hlZC1wbGFuLXJlcGxhbi5vdXQgICAgICAgICAgIHwgMTU2ICsrKysrKysrKysr KysrKysrKwogLi4uL3NwZWNzL2NhY2hlZC1wbGFuLXJlcGxhbi5zcGVjICAgICAgICAgICAgIHwg IDYxICsrKysrKysKIDMzIGZpbGVzIGNoYW5nZWQsIDc4NiBpbnNlcnRpb25zKCspLCAxODEgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVj dXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4tcmVwbGFuLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNzL2NhY2hlZC1wbGFuLXJlcGxh bi5zcGVjCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMg Yi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwppbmRleCBjM2FjMjdhZTk5Li5h MDYzMGQ3OTQ0IDEwMDY0NAotLS0gYS9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4u YworKysgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwpAQCAtNzgsNyArNzgs NyBAQCBzdGF0aWMgRXhlY3V0b3JSdW5faG9va190eXBlIHByZXZfRXhlY3V0b3JSdW4gPSBOVUxM Owogc3RhdGljIEV4ZWN1dG9yRmluaXNoX2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yRmluaXNoID0g TlVMTDsKIHN0YXRpYyBFeGVjdXRvckVuZF9ob29rX3R5cGUgcHJldl9FeGVjdXRvckVuZCA9IE5V TEw7CiAKLXN0YXRpYyB2b2lkIGV4cGxhaW5fRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgaW50IGVmbGFncyk7CitzdGF0aWMgYm9vbCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogc3RhdGljIHZvaWQgZXhwbGFpbl9FeGVj dXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCQkJU2NhbkRpcmVjdGlvbiBkaXJl Y3Rpb24sCiAJCQkJCQkJCXVpbnQ2NCBjb3VudCwgYm9vbCBleGVjdXRlX29uY2UpOwpAQCAtMjU4 LDkgKzI1OCwxMSBAQCBfUEdfaW5pdCh2b2lkKQogLyoKICAqIEV4ZWN1dG9yU3RhcnQgaG9vazog c3RhcnQgdXAgbG9nZ2luZyBpZiBuZWVkZWQKICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBib29s CiBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Mp CiB7CisJYm9vbAlwbGFuX3ZhbGlkOworCiAJLyoKIAkgKiBBdCB0aGUgYmVnaW5uaW5nIG9mIGVh Y2ggdG9wLWxldmVsIHN0YXRlbWVudCwgZGVjaWRlIHdoZXRoZXIgd2UnbGwKIAkgKiBzYW1wbGUg dGhpcyBzdGF0ZW1lbnQuICBJZiBuZXN0ZWQtc3RhdGVtZW50IGV4cGxhaW5pbmcgaXMgZW5hYmxl ZCwKQEAgLTI5Niw5ICsyOTgsOSBAQCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpx dWVyeURlc2MsIGludCBlZmxhZ3MpCiAJfQogCiAJaWYgKHByZXZfRXhlY3V0b3JTdGFydCkKLQkJ cHJldl9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcGxhbl92YWxpZCA9IHBy ZXZfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiAJZWxzZQotCQlzdGFuZGFyZF9F eGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJcGxhbl92YWxpZCA9IHN0YW5kYXJk X0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogCiAJaWYgKGF1dG9fZXhwbGFpbl9l bmFibGVkKCkpCiAJewpAQCAtMzE2LDYgKzMxOCw4IEBAIGV4cGxhaW5fRXhlY3V0b3JTdGFydChR dWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjeHQpOwogCQl9CiAJfQorCisJcmV0dXJuIHBsYW5fdmFsaWQ7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBi L2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IDU1 Yjk1N2QyNTEuLjExNjBhNzMyNmEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1l bnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRz L3BnX3N0YXRfc3RhdGVtZW50cy5jCkBAIC0zMjUsNyArMzI1LDcgQEAgc3RhdGljIFBsYW5uZWRT dG10ICpwZ3NzX3BsYW5uZXIoUXVlcnkgKnBhcnNlLAogCQkJCQkJCQkgY29uc3QgY2hhciAqcXVl cnlfc3RyaW5nLAogCQkJCQkJCQkgaW50IGN1cnNvck9wdGlvbnMsCiAJCQkJCQkJCSBQYXJhbUxp c3RJbmZvIGJvdW5kUGFyYW1zKTsKLXN0YXRpYyB2b2lkIHBnc3NfRXhlY3V0b3JTdGFydChRdWVy eURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CitzdGF0aWMgYm9vbCBwZ3NzX0V4ZWN1dG9y U3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogc3RhdGljIHZvaWQgcGdz c19FeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCQkgU2NhbkRpcmVjdGlv biBkaXJlY3Rpb24sCiAJCQkJCQkJIHVpbnQ2NCBjb3VudCwgYm9vbCBleGVjdXRlX29uY2UpOwpA QCAtOTYzLDEzICs5NjMsMTUgQEAgcGdzc19wbGFubmVyKFF1ZXJ5ICpwYXJzZSwKIC8qCiAgKiBF eGVjdXRvclN0YXJ0IGhvb2s6IHN0YXJ0IHVwIHRyYWNraW5nIGlmIG5lZWRlZAogICovCi1zdGF0 aWMgdm9pZAorc3RhdGljIGJvb2wKIHBnc3NfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5 RGVzYywgaW50IGVmbGFncykKIHsKKwlib29sCXBsYW5fdmFsaWQ7CisKIAlpZiAocHJldl9FeGVj dXRvclN0YXJ0KQotCQlwcmV2X0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCQlw bGFuX3ZhbGlkID0gcHJldl9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAllbHNl Ci0JCXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCQlwbGFuX3Zh bGlkID0gc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CiAKIAkvKgog CSAqIElmIHF1ZXJ5IGhhcyBxdWVyeUlkIHplcm8sIGRvbid0IHRyYWNrIGl0LiAgVGhpcyBwcmV2 ZW50cyBkb3VibGUKQEAgLTk5Miw2ICs5OTQsOCBAQCBwZ3NzX0V4ZWN1dG9yU3RhcnQoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y3h0KTsKIAkJfQogCX0KKworCXJldHVybiBwbGFuX3ZhbGlkOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5dG8uYwppbmRleCA5ZTRiMjQzN2E1Li45MTZkNmRjZWQzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8u YwpAQCAtNTU4LDcgKzU1OCw4IEBAIEJlZ2luQ29weVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJ KChEUl9jb3B5ICopIGRlc3QpLT5jc3RhdGUgPSBjc3RhdGU7CiAKIAkJLyogQ3JlYXRlIGEgUXVl cnlEZXNjIHJlcXVlc3Rpbmcgbm8gb3V0cHV0ICovCi0JCWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3Jl YXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQljc3RhdGUtPnF1ZXJ5 RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLAorCQkJCQkJCQkJCQlwc3RhdGUtPnBf c291cmNldGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJ SW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKQEAgLTU2 Nyw4ICs1NjgsMTAgQEAgQmVnaW5Db3B5VG8oUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkgKiBDYWxs IEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uLgogCQkgKgog CQkgKiBFeGVjdXRvclN0YXJ0IGNvbXB1dGVzIGEgcmVzdWx0IHR1cGRlc2MgZm9yIHVzCisJCSAq CisJCSAqIE9LIHRvIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlOyBwbGFuIGNhbid0IGJlY29tZSBp bnZhbGlkLgogCQkgKi8KLQkJRXhlY3V0b3JTdGFydChjc3RhdGUtPnF1ZXJ5RGVzYywgMCk7CisJ CSh2b2lkKSBFeGVjdXRvclN0YXJ0KGNzdGF0ZS0+cXVlcnlEZXNjLCAwKTsKIAogCQl0dXBEZXNj ID0gY3N0YXRlLT5xdWVyeURlc2MtPnR1cERlc2M7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvY3JlYXRlYXMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMK aW5kZXggZTkxOTIwY2ExNC4uZTVjY2U0YzA3YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY3JlYXRlYXMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVhcy5jCkBA IC0zMjUsMTIgKzMyNSwxNiBAQCBFeGVjQ3JlYXRlVGFibGVBcyhQYXJzZVN0YXRlICpwc3RhdGUs IENyZWF0ZVRhYmxlQXNTdG10ICpzdG10LAogCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJ ZCgpOwogCiAJCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYywgcmVkaXJlY3Rpbmcgb3V0cHV0IHRvIG91 ciB0dXBsZSByZWNlaXZlciAqLwotCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbiwg cHN0YXRlLT5wX3NvdXJjZXRleHQsCisJCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFu LCBOVUxMLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90 KCksIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIDAp OwogCi0JCS8qIGNhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVj dXRpb24gKi8KLQkJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIEdldEludG9SZWxFRmxhZ3MoaW50 bykpOworCQkvKgorCQkgKiBjYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBm b3IgZXhlY3V0aW9uCisJCSAqCisJCSAqIE9LIHRvIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlOyBw bGFuIGNhbid0IGJlY29tZSBpbnZhbGlkLgorCQkgKi8KKwkJKHZvaWQpIEV4ZWN1dG9yU3RhcnQo cXVlcnlEZXNjLCBHZXRJbnRvUmVsRUZsYWdzKGludG8pKTsKIAogCQkvKiBydW4gdGhlIHBsYW4g dG8gY29tcGxldGlvbiAqLwogCQlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRTY2FuRGly ZWN0aW9uLCAwLCB0cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCA1OWQ1N2Y5YzEwLi42 MTcxYTIwZmUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC00MTYsNyArNDE2LDcgQEAgRXhw bGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJCQlCdWZmZXJV c2FnZUFjY3VtRGlmZigmYnVmdXNhZ2UsICZwZ0J1ZmZlclVzYWdlLCAmYnVmdXNhZ2Vfc3RhcnQp OwogCQl9CiAKLQkJcXVlcnlEZXNjID0gRXhwbGFpblF1ZXJ5RGVzYyhwbGFuLCBxdWVyeVN0cmlu ZywgaW50bywgZXMsCisJCXF1ZXJ5RGVzYyA9IEV4cGxhaW5RdWVyeURlc2MocGxhbiwgTlVMTCwg cXVlcnlTdHJpbmcsIGludG8sIGVzLAogCQkJCQkJCQkJIHBhcmFtcywgcXVlcnlFbnYpOwogCQlB c3NlcnQocXVlcnlEZXNjKTsKIApAQCAtNDI5LDkgKzQyOSwxMSBAQCBFeHBsYWluT25lUXVlcnko UXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9ucywKIC8qCiAgKiBFeHBsYWluUXVlcnlEZXNj CiAgKgkJU2V0IHVwIFF1ZXJ5RGVzYyBmb3IgRVhQTEFJTmluZyBhIGdpdmVuIHBsYW4KKyAqCisg KiBUaGlzIHJldHVybnMgTlVMTCBpZiBjcGxhbiBpcyBmb3VuZCB0byBiZSBubyBsb25nZXIgdmFs aWQuCiAgKi8KIFF1ZXJ5RGVzYyAqCi1FeHBsYWluUXVlcnlEZXNjKFBsYW5uZWRTdG10ICpzdG10 LAorRXhwbGFpblF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqc3RtdCwgQ2FjaGVkUGxhbiAqY3BsYW4s CiAJCQkJIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWlu U3RhdGUgKmVzLAogCQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAq cXVlcnlFbnYpCiB7CkBAIC00NjcsNyArNDY5LDcgQEAgRXhwbGFpblF1ZXJ5RGVzYyhQbGFubmVk U3RtdCAqc3RtdCwKIAlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCiAJLyogQ3Jl YXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVy eURlc2Moc3RtdCwgcXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0 bXQsIGNwbGFuLCBxdWVyeVN0cmluZywKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52 YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCBpbnN0cnVtZW50 X29wdGlvbik7CiAKQEAgLTQ4MSw4ICs0ODMsMTggQEAgRXhwbGFpblF1ZXJ5RGVzYyhQbGFubmVk U3RtdCAqc3RtdCwKIAlpZiAoaW50bykKIAkJZWZsYWdzIHw9IEdldEludG9SZWxFRmxhZ3MoaW50 byk7CiAKLQkvKiBDYWxsIEV4ZWN1dG9yU3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhl Y3V0aW9uLiAqLwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCS8qCisJICog Q2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4gIEEg Y2FjaGVkIHBsYW4KKwkgKiBtYXkgZ2V0IGludmFsaWRhdGVkIGR1cmluZyBwbGFuIGludGlhbGl6 YXRpb24uCisJICovCisJaWYgKCFFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKSkKKwl7 CisJCS8qIENsZWFuIHVwLiAqLworCQlFeGVjdXRvckVuZChxdWVyeURlc2MpOworCQlGcmVlUXVl cnlEZXNjKHF1ZXJ5RGVzYyk7CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCXJldHVybiBOVUxM OworCX0KIAogCXJldHVybiBxdWVyeURlc2M7CiB9CkBAIC00ODg0LDYgKzQ4OTYsMTcgQEAgRXhw bGFpbkR1bW15R3JvdXAoY29uc3QgY2hhciAqb2JqdHlwZSwgY29uc3QgY2hhciAqbGFiZWxuYW1l LCBFeHBsYWluU3RhdGUgKmVzKQogCX0KIH0KIAorLyoKKyAqIERpc2NhcmQgb3V0cHV0IGJ1ZmZl ciBmb3IgYSBmcmVzaCByZXN0YXJ0LgorICovCit2b2lkCitFeHBsYWluUmVzZXRPdXRwdXQoRXhw bGFpblN0YXRlICplcykKK3sKKwlBc3NlcnQoZXMtPnN0cik7CisJcmVzZXRTdHJpbmdJbmZvKGVz LT5zdHIpOworCUV4cGxhaW5CZWdpbk91dHB1dChlcyk7Cit9CisKIC8qCiAgKiBFbWl0IHRoZSBz dGFydC1vZi1vdXRwdXQgYm9pbGVycGxhdGUuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXh0ZW5zaW9uLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwpp bmRleCA1MzUwNzJkMTgxLi45M2E2ODNlMzEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9leHRlbnNpb24uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYwpA QCAtNzk3LDExICs3OTcsMTMgQEAgZXhlY3V0ZV9zcWxfc3RyaW5nKGNvbnN0IGNoYXIgKnNxbCkK IAkJCQlRdWVyeURlc2MgICpxZGVzYzsKIAogCQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0 bXQsCisJCQkJCQkJCQkJTlVMTCwKIAkJCQkJCQkJCQlzcWwsCiAJCQkJCQkJCQkJR2V0QWN0aXZl U25hcHNob3QoKSwgTlVMTCwKIAkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKIAotCQkJ CUV4ZWN1dG9yU3RhcnQocWRlc2MsIDApOworCQkJCS8qIE9LIHRvIGlnbm9yZSB0aGUgcmV0dXJu IHZhbHVlOyBwbGFuIGNhbid0IGJlY29tZSBpbnZhbGlkLiAqLworCQkJCSh2b2lkKSBFeGVjdXRv clN0YXJ0KHFkZXNjLCAwKTsKIAkJCQlFeGVjdXRvclJ1bihxZGVzYywgRm9yd2FyZFNjYW5EaXJl Y3Rpb24sIDAsIHRydWUpOwogCQkJCUV4ZWN1dG9yRmluaXNoKHFkZXNjKTsKIAkJCQlFeGVjdXRv ckVuZChxZGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKaW5kZXggYWMyZTc0ZmEzZi4uMzg3OTVj ZTdjYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAtNDA4LDEyICs0MDgsMTYgQEAgcmVmcmVz aF9tYXR2aWV3X2RhdGFmaWxsKERlc3RSZWNlaXZlciAqZGVzdCwgUXVlcnkgKnF1ZXJ5LAogCVVw ZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFuZElkKCk7CiAKIAkvKiBDcmVhdGUgYSBRdWVyeURlc2Ms IHJlZGlyZWN0aW5nIG91dHB1dCB0byBvdXIgdHVwbGUgcmVjZWl2ZXIgKi8KLQlxdWVyeURlc2Mg PSBDcmVhdGVRdWVyeURlc2MocGxhbiwgcXVlcnlTdHJpbmcsCisJcXVlcnlEZXNjID0gQ3JlYXRl UXVlcnlEZXNjKHBsYW4sIE5VTEwsIHF1ZXJ5U3RyaW5nLAogCQkJCQkJCQlHZXRBY3RpdmVTbmFw c2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJCQkJCWRlc3QsIE5VTEwsIE5VTEwsIDApOwog Ci0JLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlv biAqLwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAwKTsKKwkvKgorCSAqIGNhbGwgRXhlY3V0 b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24KKwkgKgorCSAqIE9LIHRv IGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlOyBwbGFuIGNhbid0IGJlY29tZSBpbnZhbGlkLgorCSAq LworCSh2b2lkKSBFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgMCk7CiAKIAkvKiBydW4gdGhlIHBs YW4gKi8KIAlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAwLCB0 cnVlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYwppbmRleCA3M2VkN2FhMmYwLi41MTIwZjkz NDE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCkBAIC0xNDIsOSArMTQyLDEwIEBAIFBl cmZvcm1DdXJzb3JPcGVuKFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVjbGFyZUN1cnNvclN0bXQgKmNz dG10LCBQYXJhbUxpc3RJbmZvIHBhCiAKIAkvKgogCSAqIFN0YXJ0IGV4ZWN1dGlvbiwgaW5zZXJ0 aW5nIHBhcmFtZXRlcnMgaWYgYW55LgorCSAqCisJICogT0sgdG8gaWdub3JlIHRoZSByZXR1cm4g dmFsdWU7IHBsYW4gY2FuJ3QgYmVjb21lIGludmFsaWQgaGVyZS4KIAkgKi8KLQlQb3J0YWxTdGFy dChwb3J0YWwsIHBhcmFtcywgMCwgR2V0QWN0aXZlU25hcHNob3QoKSk7Ci0KKwkodm9pZCkgUG9y dGFsU3RhcnQocG9ydGFsLCBwYXJhbXMsIDAsIEdldEFjdGl2ZVNuYXBzaG90KCkpOwogCUFzc2Vy dChwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUKTsKIAogCS8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9wcmVwYXJlLmMKaW5kZXggMWU5YTk4YWQ2ZS4uMTU2YzNjNWZlZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3By ZXBhcmUuYwpAQCAtMTgzLDYgKzE4Myw3IEBAIEV4ZWN1dGVRdWVyeShQYXJzZVN0YXRlICpwc3Rh dGUsCiAJCXBhcmFtTEkgPSBFdmFsdWF0ZVBhcmFtcyhwc3RhdGUsIGVudHJ5LCBzdG10LT5wYXJh bXMsIGVzdGF0ZSk7CiAJfQogCityZXBsYW46CiAJLyogQ3JlYXRlIGEgbmV3IHBvcnRhbCB0byBy dW4gdGhlIHF1ZXJ5IGluICovCiAJcG9ydGFsID0gQ3JlYXRlTmV3UG9ydGFsKCk7CiAJLyogRG9u J3QgZGlzcGxheSB0aGUgcG9ydGFsIGluIHBnX2N1cnNvcnMsIGl0IGlzIGZvciBpbnRlcm5hbCB1 c2Ugb25seSAqLwpAQCAtMjUxLDkgKzI1MiwxNSBAQCBFeGVjdXRlUXVlcnkoUGFyc2VTdGF0ZSAq cHN0YXRlLAogCX0KIAogCS8qCi0JICogUnVuIHRoZSBwb3J0YWwgYXMgYXBwcm9wcmlhdGUuCisJ ICogUnVuIHRoZSBwb3J0YWwgYXMgYXBwcm9wcmlhdGUuICBJZiB0aGUgcG9ydGFsIGNvbnRhaW5z IGEgY2FjaGVkIHBsYW4sIGl0CisJICogbXVzdCBiZSByZWNyZWF0ZWQgaWYgdGhlIGNhY2hlZCBw bGFuIHdhcyBmb3VuZCB0byBoYXZlIGJlZW4gaW52YWxpZGF0ZWQKKwkgKiB3aGVuIGluaXRpYWxp emluZyBvbmUgb2YgdGhlIHBsYW4gdHJlZXMgY29udGFpbmVkIGluIGl0LgogCSAqLwotCVBvcnRh bFN0YXJ0KHBvcnRhbCwgcGFyYW1MSSwgZWZsYWdzLCBHZXRBY3RpdmVTbmFwc2hvdCgpKTsKKwlp ZiAoIVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1MSSwgZWZsYWdzLCBHZXRBY3RpdmVTbmFwc2hv dCgpKSkKKwl7CisJCVBvcnRhbERyb3AocG9ydGFsLCBmYWxzZSk7CisJCWdvdG8gcmVwbGFuOwor CX0KIAogCSh2b2lkKSBQb3J0YWxSdW4ocG9ydGFsLCBjb3VudCwgZmFsc2UsIHRydWUsIGRlc3Qs IGRlc3QsIHFjKTsKIApAQCAtNTc0LDcgKzU4MSw3IEBAIEV4cGxhaW5FeGVjdXRlUXVlcnkoRXhl Y3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAog ewogCVByZXBhcmVkU3RhdGVtZW50ICplbnRyeTsKIAljb25zdCBjaGFyICpxdWVyeV9zdHJpbmc7 Ci0JQ2FjaGVkUGxhbiAqY3BsYW47CisJQ2FjaGVkUGxhbiAqY3BsYW4gPSBOVUxMOwogCUxpc3QJ ICAgKnBsYW5fbGlzdDsKIAlMaXN0Q2VsbCAgICpwOwogCVBhcmFtTGlzdEluZm8gcGFyYW1MSSA9 IE5VTEw7CkBAIC02MTgsNiArNjI1LDcgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3Rt dCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJfQogCiAJ LyogUmVwbGFuIGlmIG5lZWRlZCwgYW5kIGFjcXVpcmUgYSB0cmFuc2llbnQgcmVmY291bnQgKi8K K3JlcGxhbjoKIAljcGxhbiA9IEdldENhY2hlZFBsYW4oZW50cnktPnBsYW5zb3VyY2UsIHBhcmFt TEksCiAJCQkJCQkgIEN1cnJlbnRSZXNvdXJjZU93bmVyLCBxdWVyeUVudik7CiAKQEAgLTY0Miw5 ICs2NTAsMTQgQEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIElu dG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCXsKIAkJCVF1ZXJ5RGVzYyAqcXVl cnlEZXNjOwogCi0JCQlxdWVyeURlc2MgPSBFeHBsYWluUXVlcnlEZXNjKHBzdG10LCBxdWVyeVN0 cmluZywKKwkJCXF1ZXJ5RGVzYyA9IEV4cGxhaW5RdWVyeURlc2MocHN0bXQsIGNwbGFuLCBxdWVy eVN0cmluZywKIAkJCQkJCQkJCQkgaW50bywgZXMsIHBhcmFtTEksIHF1ZXJ5RW52KTsKLQkJCUFz c2VydChxdWVyeURlc2MgIT0gTlVMTCk7CisJCQlpZiAocXVlcnlEZXNjID09IE5VTEwpCisJCQl7 CisJCQkJRXhwbGFpblJlc2V0T3V0cHV0KGVzKTsKKwkJCQlSZWxlYXNlQ2FjaGVkUGxhbihjcGxh biwgQ3VycmVudFJlc291cmNlT3duZXIpOworCQkJCWdvdG8gcmVwbGFuOworCQkJfQogCQkJRXhw bGFpbk9uZVBsYW4ocXVlcnlEZXNjLCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJLAog CQkJCQkJICAgcXVlcnlFbnYsICZwbGFuZHVyYXRpb24sCiAJCQkJCQkgICAoZXMtPmJ1ZmZlcnMg PyAmYnVmdXNhZ2UgOiBOVUxMKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9S RUFETUUgYi9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKaW5kZXggMTc3NzVhNDllMi4uMGE3 YmI0MmNjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQpAQCAtMjgwLDYgKzI4MCwzNyBAQCBhcmUgdHlwaWNh bGx5IHJlc2V0IHRvIGVtcHR5IG9uY2UgcGVyIHR1cGxlLiAgUGVyLXR1cGxlIGNvbnRleHRzIGFy ZSB1c3VhbGx5CiBhc3NvY2lhdGVkIHdpdGggRXhwckNvbnRleHRzLCBhbmQgY29tbW9ubHkgZWFj aCBQbGFuU3RhdGUgbm9kZSBoYXMgaXRzIG93bgogRXhwckNvbnRleHQgdG8gZXZhbHVhdGUgaXRz IHF1YWwgYW5kIHRhcmdldGxpc3QgZXhwcmVzc2lvbnMgaW4uCiAKK1JlbGF0aW9uIExvY2tpbmcK Ky0tLS0tLS0tLS0tLS0tLS0KKworTm9ybWFsbHksIHRoZSBleGVjdXRvciBkb2VzIG5vdCBsb2Nr IG5vbi1pbmRleCByZWxhdGlvbnMgYXBwZWFyaW5nIGluIGEgZ2l2ZW4KK3BsYW4gdHJlZSB3aGVu IGluaXRpYWxpemluZyBpdCBmb3IgZXhlY3V0aW9uIGlmIHRoZSBwbGFuIHRyZWUgaXMgZnJlc2hs eQorY3JlYXRlZCwgdGhhdCBpcywgbm90IGRlcml2ZWQgZnJvbSBhIENhY2hlZFBsYW4uICBUaGUg cmVhc29uIGZvciB0aGF0IGlzIHRoYXQKK3RoZSBsb2NrcyBtdXN0IGFscmVhZHkgaGF2ZSBiZWVu IHRha2VuIGR1cmluZyBwYXJzaW5nLCByZXdyaXRpbmcsIGFuZCBwbGFubmluZworb2YgdGhlIHF1 ZXJ5IGluIHRoYXQgY2FzZS4gIElmIHRoZSBwbGFuIHRyZWUgaXMgYSBjYWNoZWQgb25lLCB0aGVy ZSBtYXkgc3RpbGwKK2JlIHVubG9ja2VkIHJlbGF0aW9ucyBwcmVzZW50IGluIHRoZSBwbGFuIHRy ZWUsIGJlY2F1c2UgR2V0Q2FjaGVkUGxhbigpIG9ubHkKK2xvY2tzIHRoZSByZWxhdGlvbnMgdGhh dCB3b3VsZCBiZSBwcmVzZW50IGluIHRoZSBxdWVyeSdzIHJhbmdlIHRhYmxlIGJlZm9yZQorcGxh bm5pbmcgb2NjdXJzLCBidXQgbm90IHJlbGF0aW9ucyB0aGF0IHdvdWxkIGhhdmUgYmVlbiBhZGRl ZCB0byB0aGUgcmFuZ2UKK3RhYmxlIGR1cmluZyBwbGFubmluZy4gIFRoaXMgbWVhbnMgdGhhdCBp bmhlcml0YW5jZSBjaGlsZCB0YWJsZXMgcHJlc2VudCBpbgorYSBjYWNoZWQgcGxhbiwgd2hpY2gg YXJlIGFkZGVkIHRvIHRoZSBxdWVyeSdzIHJhbmdlIHRhYmxlIGR1cmluZyBwbGFubmluZywKK3dv dWxkIG5vdCBoYXZlIGJlZW4gbG9ja2VkIHdoZW4gdGhlIHBsYW4gZW50ZXJzIHRoZSBleGVjdXRv ci4KKworR2V0Q2FjaGVkUGxhbigpIHB1bnRzIG9uIGxvY2tpbmcgY2hpbGQgdGFibGVzIGJlY2F1 c2Ugbm90IGFsbCBtYXkgYWN0dWFsbHkgYmUKK3NjYW5uZWQgZHVyaW5nIGEgZ2l2ZW4gZXhlY3V0 aW9uIG9mIHRoZSBwbGFuIGlmIHRoZSBjaGlsZCB0YWJsZXMgYXJlIHBhcnRpdGlvbnMKK3doaWNo IG1heSBnZXQgcHJ1bmVkIGF3YXkgZHVlIHRvIGV4ZWN1dGlvbi1pbml0aWFsaXphdGlvbi10aW1l IHBydW5pbmcuICBTbyB0aGUKK2xvY2tpbmcgb2YgY2hpbGQgdGFibGVzIGlzIG1hZGUgdG8gd2Fp dCB0aWxsIGV4ZWN1dGlvbi1pbml0aWFsaXphdGlvbi10aW1lLAord2hpY2ggb2NjdXJzIGR1cmlu ZyBFeGVjSW5pdE5vZGUoKSBvbiB0aGUgcGxhbiBub2RlcyBjb250YWluaW5nIHRoZSBjaGlsZAor dGFibGVzLgorCitTbywgdGhlcmUncyBhIHRpbWUgd2luZG93IGR1cmluZyB3aGljaCBhIGNhY2hl ZCBwbGFuIHRyZWUgY291bGQgZ28gc3RhbGUKK2lmIGl0IGNvbnRhaW5zIGNoaWxkIHRhYmxlcywg YmVjYXVzZSB0aGV5IGNvdWxkIGdldCBjaGFuZ2VkIGluIG90aGVyIGJhY2tlbmRzCitiZWZvcmUg RXhlY0luaXROb2RlKCkgZ2V0cyBhIGxvY2sgb24gdGhlbS4gIFRoaXMgbWVhbnMgdGhlIGV4ZWN1 dG9yIG5vdyBtdXN0CitjaGVjayB0aGUgdmFsaWRpdHkgb2YgdGhlIHBsYW4gdHJlZSBldmVyeSB0 aW1lIGl0IHRha2VzIGEgbG9jayBvbiBhIGNoaWxkCit0YWJsZSBjb250YWluZWQgaW4gdGhlIHRy ZWUgYWZ0ZXIgZXhlY3V0aW9uLWluaXRpYWxpemF0aW9uLXBydW5pbmcgaGFzIGJlZW4KK3BlcmZv cm1lZC4gIEl0IGRvZXMgdGhhdCBieSBsb29raW5nIGF0IENhY2hlZFBsYW4uaXNfdmFsaWQgb2Yg dGhlIENhY2hlZFBsYW4KK3Bhc3NlZCB0byBpdC4gIElmIHRoZSBwbGFuIHRyZWUgaXMgaW5kZWVk IHN0YWxlIChpc192YWxpZD1mYWxzZSksIHRoZSBleGVjdXRvcgorbXVzdCBnaXZlIHVwIGNvbnRp bnVpbmcgdG8gaW5pdGlhbGl6ZSBpdCBhbnkgZnVydGhlciBhbmQgcmV0dXJuIHRvIHRoZSBjYWxs ZXIKK2xldHRpbmcgaXQga25vdyB0aGF0IHRoZSBleGVjdXRpb24gbXVzdCBiZSByZXRyaWVkIHdp dGggYSBuZXcgcGxhbiB0cmVlLgogCiBRdWVyeSBQcm9jZXNzaW5nIENvbnRyb2wgRmxvdwogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTMxNiw3ICszNDcsMTMgQEAgVGhpcyBpcyBh IHNrZXRjaCBvZiBjb250cm9sIGZsb3cgZm9yIGZ1bGwgcXVlcnkgcHJvY2Vzc2luZzoKIAogCUZy ZWVRdWVyeURlc2MKIAotUGVyIGFib3ZlIGNvbW1lbnRzLCBpdCdzIG5vdCByZWFsbHkgY3JpdGlj YWwgZm9yIEV4ZWNFbmROb2RlIHRvIGZyZWUgYW55CitBcyBtZW50aW9uZWQgaW4gdGhlICJSZWxh dGlvbiBMb2NraW5nIiBzZWN0aW9uLCBpZiB0aGUgcGxhbiB0cmVlIGlzIGZvdW5kIHRvCitiZSBz dGFsZSBkdXJpbmcgb25lIG9mIHRoZSByZWN1cnNpdmUgY2FsbHMgb2YgRXhlY0luaXROb2RlKCkg YWZ0ZXIgdGFraW5nIGEKK2xvY2sgb24gYSBjaGlsZCB0YWJsZSwgdGhlIGNvbnRyb2wgaXMgaW1t bWVkaWF0ZWx5IHJldHVybmVkIHRvIHRoZSBjYWxsZXIgb2YKK0V4ZWN1dG9yU3RhcnQoKSwgd2hp Y2ggbXVzdCByZWRvIHRoZSBzdGVwcyBmcm9tIENyZWF0ZVF1ZXJ5RGVzYyB3aXRoIGEgbmV3Citw bGFuIHRyZWUuCisKK1BlciBhYm92ZSBjb21tZW50cywgaXQncyBub3QgcmVhbGx5IGNyaXRpY2Fs IGZvciBFeGVjRW5kUGxhbiB0byBmcmVlIGFueQogbWVtb3J5OyBpdCdsbCBhbGwgZ28gYXdheSBp biBGcmVlRXhlY3V0b3JTdGF0ZSBhbnl3YXkuICBIb3dldmVyLCB3ZSBkbyBuZWVkIHRvCiBiZSBj YXJlZnVsIHRvIGNsb3NlIHJlbGF0aW9ucywgZHJvcCBidWZmZXIgcGlucywgZXRjLCBzbyB3ZSBk byBuZWVkIHRvIHNjYW4KIHRoZSBwbGFuIHN0YXRlIHRyZWUgdG8gZmluZCB0aGVzZSBzb3J0cyBv ZiByZXNvdXJjZXMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCAxYTg0OGIxYzIwLi4xMTk3 ZmYyYmYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTc5LDcgKzc5LDcgQEAgRXhlY3V0 b3JFbmRfaG9va190eXBlIEV4ZWN1dG9yRW5kX2hvb2sgPSBOVUxMOwogRXhlY3V0b3JDaGVja1Bl cm1zX2hvb2tfdHlwZSBFeGVjdXRvckNoZWNrUGVybXNfaG9vayA9IE5VTEw7CiAKIC8qIGRlY2xz IGZvciBsb2NhbCByb3V0aW5lcyBvbmx5IHVzZWQgd2l0aGluIHRoaXMgbW9kdWxlICovCi1zdGF0 aWMgdm9pZCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CitzdGF0 aWMgYm9vbCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBzdGF0 aWMgdm9pZCBDaGVja1ZhbGlkUm93TWFya1JlbChSZWxhdGlvbiByZWwsIFJvd01hcmtUeXBlIG1h cmtUeXBlKTsKIHN0YXRpYyB2b2lkIEV4ZWNQb3N0cHJvY2Vzc1BsYW4oRVN0YXRlICplc3RhdGUp Owogc3RhdGljIHZvaWQgRXhlY0VuZFBsYW4oUGxhblN0YXRlICpwbGFuc3RhdGUsIEVTdGF0ZSAq ZXN0YXRlKTsKQEAgLTExOSw2ICsxMTksMTMgQEAgc3RhdGljIHZvaWQgRXZhbFBsYW5RdWFsU3Rh cnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSk7CiAgKgogICogZWZsYWdzIGNv bnRhaW5zIGZsYWcgYml0cyBhcyBkZXNjcmliZWQgaW4gZXhlY3V0b3IuaC4KICAqCisgKiBQbGFu IGluaXRpYWxpemF0aW9uIG1heSBmYWlsIGlmIHRoZSBpbnB1dCBwbGFuIHRyZWUgaXMgZm91bmQg dG8gaGF2ZSBiZWVuCisgKiBpbnZhbGlkYXRlZCwgd2hpY2ggY2FuIGhhcHBlbiBpZiBpdCBjb21l cyBmcm9tIGEgQ2FjaGVkUGxhbi4KKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgcGxhbiB3YXMgc3Vj Y2Vzc2Z1bGx5IGluaXRpYWxpemVkIGFuZCBmYWxzZSBvdGhlcndpc2UuICBJZgorICogdGhlIGxh dHRlciwgdGhlIGNhbGxlciBtdXN0IGNhbGwgRXhlY3V0b3JFbmQoKSBvbiAncXVlcnlEZXNjJyB0 byBjbGVhbiB1cAorICogYWZ0ZXIgZmFpbGVkIHBsYW4gaW5pdGlhbGl6YXRpb24uCisgKgogICog TkI6IHRoZSBDdXJyZW50TWVtb3J5Q29udGV4dCB3aGVuIHRoaXMgaXMgY2FsbGVkIHdpbGwgYmVj b21lIHRoZSBwYXJlbnQKICAqIG9mIHRoZSBwZXItcXVlcnkgY29udGV4dCB1c2VkIGZvciB0aGlz IEV4ZWN1dG9yIGludm9jYXRpb24uCiAgKgpAQCAtMTI4LDcgKzEzNSw3IEBAIHN0YXRpYyB2b2lk IEV2YWxQbGFuUXVhbFN0YXJ0KEVQUVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpOwog ICoKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAqLwotdm9pZAorYm9vbAogRXhlY3V0b3JTdGFydChRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKIAkvKgpAQCAtMTQwLDE0ICsxNDcsMTUgQEAgRXhl Y3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAlwZ3N0YXRfcmVw b3J0X3F1ZXJ5X2lkKHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnF1ZXJ5SWQsIGZhbHNlKTsKIAog CWlmIChFeGVjdXRvclN0YXJ0X2hvb2spCi0JCSgqRXhlY3V0b3JTdGFydF9ob29rKSAocXVlcnlE ZXNjLCBlZmxhZ3MpOwotCWVsc2UKLQkJc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2Ms IGVmbGFncyk7CisJCXJldHVybiAoKkV4ZWN1dG9yU3RhcnRfaG9vaykgKHF1ZXJ5RGVzYywgZWZs YWdzKTsKKworCXJldHVybiBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdz KTsKIH0KIAotdm9pZAorYm9vbAogc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgaW50IGVmbGFncykKIHsKKwlib29sCQlwbGFuX3ZhbGlkOwogCUVTdGF0ZQkgICAq ZXN0YXRlOwogCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKIApAQCAtMjYzLDkgKzI3MSwxMSBA QCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdz KQogCS8qCiAJICogSW5pdGlhbGl6ZSB0aGUgcGxhbiBzdGF0ZSB0cmVlCiAJICovCi0JSW5pdFBs YW4ocXVlcnlEZXNjLCBlZmxhZ3MpOworCXBsYW5fdmFsaWQgPSBJbml0UGxhbihxdWVyeURlc2Ms IGVmbGFncyk7CiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisKKwlyZXR1 cm4gcGxhbl92YWxpZDsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjIwLDYgKzYzMCwxNyBAQCBFeGVj Q2hlY2tQZXJtaXNzaW9ucyhMaXN0ICpyYW5nZVRhYmxlLCBMaXN0ICpydGVwZXJtaW5mb3MsCiAJ CVJURVBlcm1pc3Npb25JbmZvICpwZXJtaW5mbyA9IGxmaXJzdF9ub2RlKFJURVBlcm1pc3Npb25J bmZvLCBsKTsKIAogCQlBc3NlcnQoT2lkSXNWYWxpZChwZXJtaW5mby0+cmVsaWQpKTsKKworCQkv KgorCQkgKiBSZWxhdGlvbnMgd2hvc2UgcGVybWlzc2lvbnMgbmVlZCB0byBiZSBjaGVja2VkIG11 c3QgYWxyZWFkeSBoYXZlCisJCSAqIGJlZW4gbG9ja2VkIGJ5IHRoZSBwYXJzZXIgb3IgYnkgR2V0 Q2FjaGVkUGxhbigpIGlmIGEgY2FjaGVkIHBsYW4gaXMKKwkJICogYmVpbmcgZXhlY3V0ZWQuCisJ CSAqCisJCSAqIFhYWCBzaG91bGRuJ3Qgd2Ugc2tpcCBjYWxsaW5nIEV4ZWNDaGVja1Blcm1pc3Np b25zIGZyb20gSW5pdFBsYW4KKwkJICogaW4gYSBwYXJhbGxlbCB3b3JrZXI/CisJCSAqLworCQlB c3NlcnQoQ2hlY2tSZWxMb2NrZWRCeU1lKHBlcm1pbmZvLT5yZWxpZCwgQWNjZXNzU2hhcmVMb2Nr LCB0cnVlKSB8fAorCQkJICAgSXNQYXJhbGxlbFdvcmtlcigpKTsKIAkJcmVzdWx0ID0gRXhlY0No ZWNrT25lUmVsUGVybXMocGVybWluZm8pOwogCQlpZiAoIXJlc3VsdCkKIAkJewpAQCAtODI5LDkg Kzg1MCwxMiBAQCBFeGVjQ2hlY2tYYWN0UmVhZE9ubHkoUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10 KQogICoKICAqCQlJbml0aWFsaXplcyB0aGUgcXVlcnkgcGxhbjogb3BlbiBmaWxlcywgYWxsb2Nh dGUgc3RvcmFnZQogICoJCWFuZCBzdGFydCB1cCB0aGUgcnVsZSBtYW5hZ2VyCisgKgorICogUmV0 dXJucyB0cnVlIGlmIHRoZSBwbGFuIHRyZWUgaXMgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkIGZv ciBleGVjdXRpb24sCisgKiBmYWxzZSBvdGhlcndpc2UuCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KLXN0YXRp YyB2b2lkCitzdGF0aWMgYm9vbAogSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBl ZmxhZ3MpCiB7CiAJQ21kVHlwZQkJb3BlcmF0aW9uID0gcXVlcnlEZXNjLT5vcGVyYXRpb247CkBA IC04NTAsMTIgKzg3NCwxMiBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVm bGFncykKIAlFeGVjQ2hlY2tQZXJtaXNzaW9ucyhyYW5nZVRhYmxlLCBwbGFubmVkc3RtdC0+cGVy bUluZm9zLCB0cnVlKTsKIAogCS8qCi0JICogaW5pdGlhbGl6ZSB0aGUgbm9kZSdzIGV4ZWN1dGlv biBzdGF0ZQorCSAqIFNldCB1cCByYW5nZSB0YWJsZSBpbiBFU3RhdGUuCiAJICovCiAJRXhlY0lu aXRSYW5nZVRhYmxlKGVzdGF0ZSwgcmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcyk7 CiAKIAllc3RhdGUtPmVzX3BsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7Ci0JZXN0YXRlLT5lc19j YWNoZWRwbGFuID0gTlVMTDsKKwllc3RhdGUtPmVzX2NhY2hlZHBsYW4gPSBxdWVyeURlc2MtPmNw bGFuOwogCiAJLyoKIAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0 aGUgUGxhblJvd01hcmsocyksIGlmIGFueS4KQEAgLTEwMTYsNyArMTA0MCw3IEBAIEluaXRQbGFu KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCXF1ZXJ5RGVzYy0+dHVwRGVzYyA9 IHR1cFR5cGU7CiAJQXNzZXJ0KHBsYW5zdGF0ZSAhPSBOVUxMKTsKIAlxdWVyeURlc2MtPnBsYW5z dGF0ZSA9IHBsYW5zdGF0ZTsKLQlyZXR1cm47CisJcmV0dXJuIHRydWU7CiAKIHBsYW5faW5pdF9z dXNwZW5kZWQ6CiAJLyoKQEAgLTEwMjQsNiArMTA0OCw3IEBAIHBsYW5faW5pdF9zdXNwZW5kZWQ6 CiAJICogd2lsbCBjbGVhbiB1cCBpbml0aWFsaXplZCBwbGFuIG5vZGVzIGZyb20gZXN0YXRlLT5l c19wbGFuc3RhdGVfbm9kZXMuCiAJICovCiAJcXVlcnlEZXNjLT5wbGFuc3RhdGUgPSBwbGFuc3Rh dGU7CisJcmV0dXJuIGZhbHNlOwogfQogCiAvKgpAQCAtMTQ0MSw3ICsxNDY2LDcgQEAgRXhlY0dl dEFuY2VzdG9yUmVzdWx0UmVscyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbykKIAogCQkJLyoKIAkJCSAqIEFsbCBhbmNlc3RvcnMgdXAgdG8gdGhlIHJvb3QgdGFy Z2V0IHJlbGF0aW9uIG11c3QgaGF2ZSBiZWVuCi0JCQkgKiBsb2NrZWQgYnkgdGhlIHBsYW5uZXIg b3IgQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKS4KKwkJCSAqIGxvY2tlZCBieSB0aGUgcGxhbm5lciBv ciBFeGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxhdGlvbnMoKS4KIAkJCSAqLwogCQkJYW5jUmVsID0g dGFibGVfb3BlbihhbmNPaWQsIE5vTG9jayk7CiAJCQlySW5mbyA9IG1ha2VOb2RlKFJlc3VsdFJl bEluZm8pOwpAQCAtMjg3Myw3ICsyODk4LDggQEAgRXZhbFBsYW5RdWFsU3RhcnQoRVBRU3RhdGUg KmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSkKIAkgKiBDaGlsZCBFUFEgRVN0YXRlcyBzaGFyZSB0 aGUgcGFyZW50J3MgY29weSBvZiB1bmNoYW5naW5nIHN0YXRlIHN1Y2ggYXMKIAkgKiB0aGUgc25h cHNob3QsIHJhbmdldGFibGUsIGFuZCBleHRlcm5hbCBQYXJhbSBpbmZvLiAgVGhleSBuZWVkIHRo ZWlyIG93bgogCSAqIGNvcGllcyBvZiBsb2NhbCBzdGF0ZSwgaW5jbHVkaW5nIGEgdHVwbGUgdGFi bGUsIGVzX3BhcmFtX2V4ZWNfdmFscywKLQkgKiByZXN1bHQtcmVsIGluZm8sIGV0Yy4KKwkgKiBy ZXN1bHQtcmVsIGluZm8sIGV0Yy4gIEFsc28sIHdlIGRvbid0IHBhc3MgdGhlIHBhcmVudCd0IGNv cHkgb2YgdGhlCisJICogQ2FjaGVkUGxhbiwgYmVjYXVzZSBubyBuZXcgbG9ja3Mgd2lsbCBiZSB0 YWtlbiBmb3IgRXZhbFBsYW5RdWFsKCkuCiAJICovCiAJcmNlc3RhdGUtPmVzX2RpcmVjdGlvbiA9 IEZvcndhcmRTY2FuRGlyZWN0aW9uOwogCXJjZXN0YXRlLT5lc19zbmFwc2hvdCA9IHBhcmVudGVz dGF0ZS0+ZXNfc25hcHNob3Q7CkBAIC0yOTYwLDYgKzI5ODYsMTIgQEAgRXZhbFBsYW5RdWFsU3Rh cnQoRVBRU3RhdGUgKmVwcXN0YXRlLCBQbGFuICpwbGFuVHJlZSkKIAkJUGxhblN0YXRlICAqc3Vi cGxhbnN0YXRlOwogCiAJCXN1YnBsYW5zdGF0ZSA9IEV4ZWNJbml0Tm9kZShzdWJwbGFuLCByY2Vz dGF0ZSwgMCk7CisKKwkJLyoKKwkJICogQXQgdGhpcyBwb2ludCwgd2UgaGFkIGJldHRlciBub3Qg cmVjZWl2ZWQgYW55IG5ldyBpbnZhbGlkYXRpb24KKwkJICogbWVzc2FnZXMgdGhhdCB3b3VsZCBo YXZlIGNhdXNlZCB0aGUgcGxhbiB0cmVlIHRvIGdvIHN0YWxlLgorCQkgKi8KKwkJQXNzZXJ0KEV4 ZWNQbGFuU3RpbGxWYWxpZChyY2VzdGF0ZSkpOwogCQlyY2VzdGF0ZS0+ZXNfc3VicGxhbnN0YXRl cyA9IGxhcHBlbmQocmNlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMsCiAJCQkJCQkJCQkJCSBzdWJw bGFuc3RhdGUpOwogCX0KQEAgLTMwMDMsNiArMzAzNSwxMiBAQCBFdmFsUGxhblF1YWxTdGFydChF UFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCSAqLwogCWVwcXN0YXRlLT5yZWNo ZWNrcGxhbnN0YXRlID0gRXhlY0luaXROb2RlKHBsYW5UcmVlLCByY2VzdGF0ZSwgMCk7CiAKKwkv KgorCSAqIEF0IHRoaXMgcG9pbnQsIHdlIGhhZCBiZXR0ZXIgbm90IHJlY2VpdmVkIGFueSBuZXcg aW52YWxpZGF0aW9uIG1lc3NhZ2VzCisJICogdGhhdCB3b3VsZCBoYXZlIGNhdXNlZCB0aGUgcGxh biB0cmVlIHRvIGdvIHN0YWxlLgorCSAqLworCUFzc2VydChFeGVjUGxhblN0aWxsVmFsaWQocmNl c3RhdGUpKTsKKwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIH0KIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwppbmRleCBjYzJiOGNjYWI3Li5iZmEyYThlYzE4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYwpAQCAtMTI0OCw4ICsxMjQ4LDE3IEBAIEV4 ZWNQYXJhbGxlbEdldFF1ZXJ5RGVzYyhzaG1fdG9jICp0b2MsIERlc3RSZWNlaXZlciAqcmVjZWl2 ZXIsCiAJcGFyYW1zcGFjZSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfS0VZX1BBUkFN TElTVElORk8sIGZhbHNlKTsKIAlwYXJhbUxJID0gUmVzdG9yZVBhcmFtTGlzdCgmcGFyYW1zcGFj ZSk7CiAKLQkvKiBDcmVhdGUgYSBRdWVyeURlc2MgZm9yIHRoZSBxdWVyeS4gKi8KKwkvKgorCSAq IENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5LiAgTm90ZSB0aGF0IG5vIENhY2hlZFBs YW4gaXMgYXZhaWxhYmxlCisJICogaGVyZSBldmVuIGlmIHRoZSBsZWFkZXIgbWF5IGhhdmUgZ290 dGVuIHRoZSBwbGFuIHRyZWUgZnJvbSBvbmUuICBUaGF0J3MKKwkgKiBmaW5lIHRob3VnaCwgYmVj YXVzZSB0aGUgbGVhZGVyIHdvdWxkIGhhdmUgdGFrZW4gdGhlIGxvY2tzIG5lY2Vzc2FyeQorCSAq IGZvciB0aGUgcGxhbiB0cmVlIHRoYXQgd2UgaGF2ZSBoZXJlIHRvIGJlIGZ1bGx5IHZhbGlkLiAg VGhhdCBpcyB0cnVlCisJICogZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IHdlIHdpbGwgYmUgdGFraW5n IG91ciBvd24gY29waWVzIG9mIHRob3NlIGxvY2tzCisJICogaW4gRXhlY0dldFJhbmdlVGFibGVS ZWxhdGlvbigpLCBiZWNhdXNlIG5vbmUgb2YgdGhlbSB3b3VsZCBiZSB0aGUgbG9ja3MKKwkgKiB0 aGF0IGFyZSBub3QgYWxyZWFkeSB0YWtlbiBieSB0aGUgbGVhZGVyLgorCSAqLwogCXJldHVybiBD cmVhdGVRdWVyeURlc2MocHN0bXQsCisJCQkJCQkgICBOVUxMLAogCQkJCQkJICAgcXVlcnlTdHJp bmcsCiAJCQkJCQkgICBHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJCQkJ CQkgICByZWNlaXZlciwgcGFyYW1MSSwgTlVMTCwgaW5zdHJ1bWVudF9vcHRpb25zKTsKQEAgLTE0 MzAsNyArMTQzOSw4IEBAIFBhcmFsbGVsUXVlcnlNYWluKGRzbV9zZWdtZW50ICpzZWcsIHNobV90 b2MgKnRvYykKIAogCS8qIFN0YXJ0IHVwIHRoZSBleGVjdXRvciAqLwogCXF1ZXJ5RGVzYy0+cGxh bm5lZHN0bXQtPmppdEZsYWdzID0gZnBlcy0+aml0X2ZsYWdzOwotCUV4ZWN1dG9yU3RhcnQocXVl cnlEZXNjLCBmcGVzLT5lZmxhZ3MpOworCS8qIE9LIHRvIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVl OyBwbGFuIGNhbid0IGJlY29tZSBpbnZhbGlkLiAqLworCSh2b2lkKSBFeGVjdXRvclN0YXJ0KHF1 ZXJ5RGVzYywgZnBlcy0+ZWZsYWdzKTsKIAogCS8qIFNwZWNpYWwgZXhlY3V0b3IgaW5pdGlhbGl6 YXRpb24gc3RlcHMgZm9yIHBhcmFsbGVsIHdvcmtlcnMgKi8KIAlxdWVyeURlc2MtPnBsYW5zdGF0 ZS0+c3RhdGUtPmVzX3F1ZXJ5X2RzYSA9IGFyZWE7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0 aW9uLmMKaW5kZXggZTg4NDU1MzY4Yy4uY2Y3M2QyOGJhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uYwpAQCAtNTEzLDYgKzUxMywxMyBAQCBFeGVjSW5pdFBhcnRpdGlvbkluZm8o TW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAKIAlvbGRjeHQgPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8ocHJvdXRlLT5tZW1jeHQpOwogCisJLyoKKwkgKiBOb3RlIHRo YXQgd2hpbGUgd2Ugbm9ybWFsbHkgY2hlY2sgRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkgYWZ0 ZXIgZWFjaAorCSAqIGxvY2sgdGFrZW4gZHVyaW5nIGV4ZWN1dGlvbiBpbml0aWFsaXphdGlvbiwg aXQgaXMgZmluZSBub3QgZG8gc28gZm9yCisJICogcGFydGl0aW9ucyBvcGVuZWQgaGVyZSwgZm9y IHR1cGxlIHJvdXRpbmcuICBMb2NrcyB0YWtlbiBoZXJlIGNhbid0CisJICogcG9zc2libHkgaW52 YWxpZGF0ZSB0aGUgcGxhbiBnaXZlbiB0aGF0IHRoZSBwbGFuIGRvZXNuJ3QgY29udGFpbiBhbnkK KwkgKiBpbmZvIGFib3V0IHRob3NlIHBhcnRpdGlvbnMuCisJICovCiAJcGFydHJlbCA9IHRhYmxl X29wZW4ocGFydE9pZCwgUm93RXhjbHVzaXZlTG9jayk7CiAKIAlsZWFmX3BhcnRfcnJpID0gbWFr ZU5vZGUoUmVzdWx0UmVsSW5mbyk7CkBAIC0xMTExLDYgKzExMTgsOSBAQCBFeGVjSW5pdFBhcnRp dGlvbkRpc3BhdGNoSW5mbyhFU3RhdGUgKmVzdGF0ZSwKIAkgKiBPbmx5IHN1Yi1wYXJ0aXRpb25l ZCB0YWJsZXMgbmVlZCB0byBiZSBsb2NrZWQgaGVyZS4gIFRoZSByb290CiAJICogcGFydGl0aW9u ZWQgdGFibGUgd2lsbCBhbHJlYWR5IGhhdmUgYmVlbiBsb2NrZWQgYXMgaXQncyByZWZlcmVuY2Vk IGluCiAJICogdGhlIHF1ZXJ5J3MgcnRhYmxlLgorCSAqCisJICogU2VlIHRoZSBjb21tZW50IGlu IEV4ZWNJbml0UGFydGl0aW9uSW5mbygpIGFib3V0IHRha2luZyBsb2NrcyBhbmQKKwkgKiBub3Qg Y2hlY2tpbmcgRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkgaGVyZS4KIAkgKi8KIAlpZiAocGFy dG9pZCAhPSBSZWxhdGlvbkdldFJlbGlkKHByb3V0ZS0+cGFydGl0aW9uX3Jvb3QpKQogCQlyZWwg PSB0YWJsZV9vcGVuKHBhcnRvaWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj VXRpbHMuYwppbmRleCBmNDYxMWJkZDI3Li5hZjkyZDJiM2MzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj VXRpbHMuYwpAQCAtODA0LDcgKzgwNCwyNSBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVT dGF0ZSAqZXN0YXRlLCBJbmRleCBydGkpCiAKIAkJQXNzZXJ0KHJ0ZS0+cnRla2luZCA9PSBSVEVf UkVMQVRJT04pOwogCi0JCWlmICghSXNQYXJhbGxlbFdvcmtlcigpKQorCQlpZiAoSXNQYXJhbGxl bFdvcmtlcigpIHx8CisJCQkoZXN0YXRlLT5lc19jYWNoZWRwbGFuICE9IE5VTEwgJiYgIXJ0ZS0+ aW5Gcm9tQ2wpKQorCQl7CisJCQkvKgorCQkJICogVGFrZSBhIGxvY2sgaWYgd2UgYXJlIGEgcGFy YWxsZWwgd29ya2VyIG9yIGlmIHRoaXMgaXMgYSBjaGlsZAorCQkJICogdGFibGUgcmVmZXJlbmNl ZCBpbiBhIGNhY2hlZCBwbGFuLgorCQkJICoKKwkJCSAqIFBhcmFsbGVsIHdvcmtlcnMgbmVlZCB0 byBoYXZlIHRoZWlyIG93biBsb2NhbCBsb2NrIG9uIHRoZQorCQkJICogcmVsYXRpb24uICBUaGlz IGVuc3VyZXMgc2FuZSBiZWhhdmlvciBpbiBjYXNlIHRoZSBwYXJlbnQgcHJvY2VzcworCQkJICog ZXhpdHMgYmVmb3JlIHdlIGRvLgorCQkJICoKKwkJCSAqIFdoZW4gZXhlY3V0aW5nIGEgY2FjaGVk IHBsYW4sIGNoaWxkIHRhYmxlcyBtdXN0IGJlIGxvY2tlZAorCQkJICogaGVyZSwgYmVjYXVzZSBw bGFuY2FjaGUuYyAoR2V0Q2FjaGVkUGxhbigpKSB3b3VsZCBvbmx5IGhhdmUKKwkJCSAqIGxvY2tl ZCB0YWJsZXMgbWVudGlvbmVkIGluIHRoZSBxdWVyeSwgdGhhdCBpcywgdGFibGVzIHdob3NlCisJ CQkgKiBSVEVzJyBpbkZyb21DbCBpcyB0cnVlLgorCQkJICovCisJCQlyZWwgPSB0YWJsZV9vcGVu KHJ0ZS0+cmVsaWQsIHJ0ZS0+cmVsbG9ja21vZGUpOworCQl9CisJCWVsc2UKIAkJewogCQkJLyoK IAkJCSAqIEluIGEgbm9ybWFsIHF1ZXJ5LCB3ZSBzaG91bGQgYWxyZWFkeSBoYXZlIHRoZSBhcHBy b3ByaWF0ZSBsb2NrLApAQCAtODE3LDE1ICs4MzUsNiBAQCBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0 aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBydGkpCiAJCQlBc3NlcnQocnRlLT5yZWxsb2NrbW9k ZSA9PSBBY2Nlc3NTaGFyZUxvY2sgfHwKIAkJCQkgICBDaGVja1JlbGF0aW9uTG9ja2VkQnlNZShy ZWwsIHJ0ZS0+cmVsbG9ja21vZGUsIGZhbHNlKSk7CiAJCX0KLQkJZWxzZQotCQl7Ci0JCQkvKgot CQkJICogSWYgd2UgYXJlIGEgcGFyYWxsZWwgd29ya2VyLCB3ZSBuZWVkIHRvIG9idGFpbiBvdXIg b3duIGxvY2FsCi0JCQkgKiBsb2NrIG9uIHRoZSByZWxhdGlvbi4gIFRoaXMgZW5zdXJlcyBzYW5l IGJlaGF2aW9yIGluIGNhc2UgdGhlCi0JCQkgKiBwYXJlbnQgcHJvY2VzcyBleGl0cyBiZWZvcmUg d2UgZG8uCi0JCQkgKi8KLQkJCXJlbCA9IHRhYmxlX29wZW4ocnRlLT5yZWxpZCwgcnRlLT5yZWxs b2NrbW9kZSk7Ci0JCX0KIAogCQllc3RhdGUtPmVzX3JlbGF0aW9uc1tydGkgLSAxXSA9IHJlbDsK IAl9CkBAIC04MzMsNiArODQyLDM4IEBAIEV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oRVN0YXRl ICplc3RhdGUsIEluZGV4IHJ0aSkKIAlyZXR1cm4gcmVsOwogfQogCisvKgorICogRXhlY0xvY2tB cHBlbmROb25MZWFmUmVsYXRpb25zCisgKgkJTG9jayBub24tbGVhZiByZWxhdGlvbnMgd2hvc2Ug Y2hpbGRyZW4gYXJlIHNjYW5uZWQgYnkgYSBnaXZlbgorICoJCUFwcGVuZC9NZXJnZUFwcGVuZCBu b2RlCisgKi8KK3ZvaWQKK0V4ZWNMb2NrQXBwZW5kTm9uTGVhZlJlbGF0aW9ucyhFU3RhdGUgKmVz dGF0ZSwgTGlzdCAqYWxscGFydHJlbGlkcykKK3sKKwlMaXN0Q2VsbCAqbDsKKworCS8qIFRoaXMg c2hvdWxkIGdldCBjYWxsZWQgb25seSB3aGVuIGV4ZWN1dGluZyBjYWNoZWQgcGxhbnMuICovCisJ QXNzZXJ0KGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiAhPSBOVUxMKTsKKwlmb3JlYWNoKGwsIGFsbHBh cnRyZWxpZHMpCisJeworCQlCaXRtYXBzZXQgKnBhcnRyZWxpZHMgPSBsZmlyc3Rfbm9kZShCaXRt YXBzZXQsIGwpOworCQlpbnQJCWk7CisKKwkJLyoKKwkJICogTm90ZSB0aGF0IHdlIGRvbid0IGxv Y2sgdGhlIGZpcnN0IG1lbWJlciAoaT0wKSBvZiBlYWNoIGJpdG1hcHNldAorCQkgKiBiZWNhdXNl IGl0IHN0YW5kcyBmb3IgdGhlIHJvb3QgcGFyZW50IG1lbnRpb25lZCBpbiB0aGUgcXVlcnkgdGhh dAorCQkgKiBzaG91bGQgYWx3YXlzIGhhdmUgYmVlbiBsb2NrZWQgYmVmb3JlIGVudGVyaW5nIHRo ZSBleGVjdXRvci4KKwkJICovCisJCWkgPSAwOworCQl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1i ZXIocGFydHJlbGlkcywgaSkpID4gMCkKKwkJeworCQkJUmFuZ2VUYmxFbnRyeSAqcnRlID0gZXhl Y19ydF9mZXRjaChpLCBlc3RhdGUpOworCisJCQlMb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwg cnRlLT5yZWxsb2NrbW9kZSk7CisJCX0KKwl9Cit9CisKIC8qCiAgKiBFeGVjSW5pdFJlc3VsdFJl bGF0aW9uCiAgKgkJT3BlbiByZWxhdGlvbiBnaXZlbiBieSB0aGUgcGFzc2VkLWluIFJUIGluZGV4 IGFuZCBmaWxsIGl0cwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25z LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwppbmRleCBmNTU0MjRlYjVhLi40 ZGRmNGZkN2E5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpAQCAtODM4LDYgKzgzOCw3IEBA IHBvc3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIg ZmNhY2hlKQogCQlkZXN0ID0gTm9uZV9SZWNlaXZlcjsKIAogCWVzLT5xZCA9IENyZWF0ZVF1ZXJ5 RGVzYyhlcy0+c3RtdCwKKwkJCQkJCQkgTlVMTCwJLyogZm1ncl9zcWwoKSBkb2Vzbid0IHVzZSBD YWNoZWRQbGFucyAqLwogCQkJCQkJCSBmY2FjaGUtPnNyYywKIAkJCQkJCQkgR2V0QWN0aXZlU25h cHNob3QoKSwKIAkJCQkJCQkgSW52YWxpZFNuYXBzaG90LApAQCAtODYyLDcgKzg2Myw5IEBAIHBv c3RxdWVsX3N0YXJ0KGV4ZWN1dGlvbl9zdGF0ZSAqZXMsIFNRTEZ1bmN0aW9uQ2FjaGVQdHIgZmNh Y2hlKQogCQkJZWZsYWdzID0gRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlM7CiAJCWVsc2UKIAkJCWVm bGFncyA9IDA7CQkJLyogZGVmYXVsdCBydW4tdG8tY29tcGxldGlvbiBmbGFncyAqLwotCQlFeGVj dXRvclN0YXJ0KGVzLT5xZCwgZWZsYWdzKTsKKworCQkvKiBPSyB0byBpZ25vcmUgdGhlIHJldHVy biB2YWx1ZTsgcGxhbiBjYW4ndCBiZWNvbWUgaW52YWxpZC4gKi8KKwkJKHZvaWQpIEV4ZWN1dG9y U3RhcnQoZXMtPnFkLCBlZmxhZ3MpOwogCX0KIAogCWVzLT5zdGF0dXMgPSBGX0VYRUNfUlVOOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCmluZGV4IDVkOWZhNGJmZjMuLmNlNjBjYTIxMjYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYworKysgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKQEAgLTEzMyw2ICsxMzMsMjUgQEAgRXhlY0luaXRB cHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlhcHBlbmRz dGF0ZS0+YXNfc3luY2RvbmUgPSBmYWxzZTsKIAlhcHBlbmRzdGF0ZS0+YXNfYmVndW4gPSBmYWxz ZTsKIAorCS8qCisJICogTG9jayBub24tbGVhZiBwYXJ0aXRpb25zIHdob3NlIGxlYWYgY2hpbGRy ZW4gYXJlIHByZXNlbnQgaW4KKwkgKiBub2RlLT5hcHBlbmRwbGFucy4gIE9ubHkgbmVlZCB0byBk byBzbyBpZiBleGVjdXRpbmcgYSBjYWNoZWQKKwkgKiBwbGFuLCBiZWNhdXNlIGNoaWxkIHRhYmxl cyBwcmVzZW50IGluIGNhY2hlZCBwbGFucyBhcmUgbm90CisJICogbG9ja2VkIGJlZm9yZSBleGVj dXRpb24uCisJICoKKwkgKiBYWFggLSBzb21lIG9mIHRoZSBub24tbGVhZiBwYXJ0aXRpb25zIG1h eSBhbHNvIGJlIG1lbnRpb25lZCBpbgorCSAqIHBhcnRfcHJ1bmVfaW5mbywgd2hpY2ggaWYgdGhl eSBhcmUgd291bGQgZ2V0IGxvY2tlZCBhZ2FpbiBpbgorCSAqIEV4ZWNJbml0UGFydGl0aW9uUHJ1 bmluZygpIGJlY2F1c2UgaXQgY2FsbHMKKwkgKiBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkg d2hpY2ggbG9ja3MgY2hpbGQgdGFibGVzLgorCSAqLworCWlmIChlc3RhdGUtPmVzX2NhY2hlZHBs YW4pCisJeworCQlFeGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxhdGlvbnMoZXN0YXRlLCBub2RlLT5h bGxwYXJ0cmVsaWRzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJl dHVybiBOVUxMOworCisJfQorCiAJLyogSWYgcnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgaXMg ZW5hYmxlZCwgdGhlbiBzZXQgdGhhdCB1cCBub3cgKi8KIAlpZiAobm9kZS0+cGFydF9wcnVuZV9p bmZvICE9IE5VTEwpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1l cmdlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRl eCAyNTViMDVhYWQzLi42NTdmYTkxZWM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VB cHBlbmQuYwpAQCAtODEsNiArODEsMjUgQEAgRXhlY0luaXRNZXJnZUFwcGVuZChNZXJnZUFwcGVu ZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJbWVyZ2VzdGF0ZS0+cHMuc3Rh dGUgPSBlc3RhdGU7CiAJbWVyZ2VzdGF0ZS0+cHMuRXhlY1Byb2NOb2RlID0gRXhlY01lcmdlQXBw ZW5kOwogCisJLyoKKwkgKiBMb2NrIG5vbi1sZWFmIHBhcnRpdGlvbnMgd2hvc2UgbGVhZiBjaGls ZHJlbiBhcmUgcHJlc2VudCBpbgorCSAqIG5vZGUtPm1lcmdlcGxhbnMuICBPbmx5IG5lZWQgdG8g ZG8gc28gaWYgZXhlY3V0aW5nIGEgY2FjaGVkCisJICogcGxhbiwgYmVjYXVzZSBjaGlsZCB0YWJs ZXMgcHJlc2VudCBpbiBjYWNoZWQgcGxhbnMgYXJlIG5vdAorCSAqIGxvY2tlZCBiZWZvcmUgZXhl Y3V0aW9uLgorCSAqCisJICogWFhYIC0gc29tZSBvZiB0aGUgbm9uLWxlYWYgcGFydGl0aW9ucyBt YXkgYWxzbyBiZSBtZW50aW9uZWQgaW4KKwkgKiBwYXJ0X3BydW5lX2luZm8sIHdoaWNoIGlmIHRo ZXkgYXJlIHdvdWxkIGdldCBsb2NrZWQgYWdhaW4gaW4KKwkgKiBFeGVjSW5pdFBhcnRpdGlvblBy dW5pbmcoKSBiZWNhdXNlIGl0IGNhbGxzCisJICogRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbigp IHdoaWNoIGxvY2tzIGNoaWxkIHRhYmxlcy4KKwkgKi8KKwlpZiAoZXN0YXRlLT5lc19jYWNoZWRw bGFuKQorCXsKKwkJRXhlY0xvY2tBcHBlbmROb25MZWFmUmVsYXRpb25zKGVzdGF0ZSwgbm9kZS0+ YWxscGFydHJlbGlkcyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQly ZXR1cm4gTlVMTDsKKworCX0KKwogCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlz IGVuYWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCiAJaWYgKG5vZGUtPnBhcnRfcHJ1bmVf aW5mbyAhPSBOVUxMKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5kZXggZDM2Y2EzNWQzYS4uOWM0ZWQ3NDI0 MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTE1ODIsNiArMTU4Miw3IEBAIFNQSV9jdXJzb3Jfb3Blbl9p bnRlcm5hbChjb25zdCBjaGFyICpuYW1lLCBTUElQbGFuUHRyIHBsYW4sCiAJU25hcHNob3QJc25h cHNob3Q7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwogCVBvcnRhbAkJcG9ydGFsOworCWJv b2wJCXBsYW5fdmFsaWQ7CiAJU1BJQ2FsbGJhY2tBcmcgc3BpY2FsbGJhY2thcmc7CiAJRXJyb3JD b250ZXh0Q2FsbGJhY2sgc3BpZXJyY29udGV4dDsKIApAQCAtMTYyMyw2ICsxNjI0LDcgQEAgU1BJ X2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwK IAlfU1BJX2N1cnJlbnQtPnByb2Nlc3NlZCA9IDA7CiAJX1NQSV9jdXJyZW50LT50dXB0YWJsZSA9 IE5VTEw7CiAKK3JlcGxhbjoKIAkvKiBDcmVhdGUgdGhlIHBvcnRhbCAqLwogCWlmIChuYW1lID09 IE5VTEwgfHwgbmFtZVswXSA9PSAnXDAnKQogCXsKQEAgLTE3NjYsMTUgKzE3NjgsMjMgQEAgU1BJ X2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5QdHIgcGxhbiwK IAl9CiAKIAkvKgotCSAqIFN0YXJ0IHBvcnRhbCBleGVjdXRpb24uCisJICogU3RhcnQgcG9ydGFs IGV4ZWN1dGlvbi4gIElmIHRoZSBwb3J0YWwgY29udGFpbnMgYSBjYWNoZWQgcGxhbiwgaXQgbXVz dAorCSAqIGJlIHJlY3JlYXRlZCBpZiB0aGUgY2FjaGVkIHBsYW4gd2FzIGZvdW5kIHRvIGhhdmUg YmVlbiBpbnZhbGlkYXRlZCB3aGVuCisJICogaW5pdGlhbGl6aW5nIG9uZSBvZiB0aGUgcGxhbiB0 cmVlcyBjb250YWluZWQgaW4gaXQuCiAJICovCi0JUG9ydGFsU3RhcnQocG9ydGFsLCBwYXJhbUxJ LCAwLCBzbmFwc2hvdCk7CisJcGxhbl92YWxpZCA9IFBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1M SSwgMCwgc25hcHNob3QpOwogCiAJQXNzZXJ0KHBvcnRhbC0+c3RyYXRlZ3kgIT0gUE9SVEFMX01V TFRJX1FVRVJZKTsKIAogCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLwogCWVycm9y X2NvbnRleHRfc3RhY2sgPSBzcGllcnJjb250ZXh0LnByZXZpb3VzOwogCisJaWYgKCFwbGFuX3Zh bGlkKQorCXsKKwkJUG9ydGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKKwkJZ290byByZXBsYW47CisJ fQorCiAJLyogUG9wIHRoZSBTUEkgc3RhY2sgKi8KIAlfU1BJX2VuZF9jYWxsKHRydWUpOwogCkBA IC0yNTUyLDYgKzI1NjIsNyBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNv bnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkgKiBSZXBsYW4gaWYgbmVlZGVkLCBh bmQgaW5jcmVtZW50IHBsYW4gcmVmY291bnQuICBJZiBpdCdzIGEgc2F2ZWQKIAkJICogcGxhbiwg dGhlIHJlZmNvdW50IG11c3QgYmUgYmFja2VkIGJ5IHRoZSBwbGFuX293bmVyLgogCQkgKi8KK3Jl cGxhbjoKIAkJY3BsYW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIG9wdGlvbnMtPnBhcmFt cywKIAkJCQkJCQkgIHBsYW5fb3duZXIsIF9TUElfY3VycmVudC0+cXVlcnlFbnYpOwogCkBAIC0y NjY5LDYgKzI2ODAsNyBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0 IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQkJCQlzbmFwID0gSW52YWxpZFNuYXBzaG90 OwogCiAJCQkJcWRlc2MgPSBDcmVhdGVRdWVyeURlc2Moc3RtdCwKKwkJCQkJCQkJCQljcGxhbiwK IAkJCQkJCQkJCQlwbGFuc291cmNlLT5xdWVyeV9zdHJpbmcsCiAJCQkJCQkJCQkJc25hcCwgY3Jv c3NjaGVja19zbmFwc2hvdCwKIAkJCQkJCQkJCQlkZXN0LApAQCAtMjY4MiwxMCArMjY5NCwxNiBA QCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRp b25zICpvcHRpb25zLAogCQkJCWVsc2UKIAkJCQkJZWZsYWdzID0gRVhFQ19GTEFHX1NLSVBfVFJJ R0dFUlM7CiAKLQkJCQlFeGVjdXRvclN0YXJ0KHFkZXNjLCBlZmxhZ3MpOworCQkJCWlmICghRXhl Y3V0b3JTdGFydChxZGVzYywgZWZsYWdzKSkKKwkJCQl7CisJCQkJCUV4ZWN1dG9yRW5kKHFkZXNj KTsKKwkJCQkJRnJlZVF1ZXJ5RGVzYyhxZGVzYyk7CisJCQkJCUFzc2VydChjcGxhbik7CisJCQkJ CVJlbGVhc2VDYWNoZWRQbGFuKGNwbGFuLCBwbGFuX293bmVyKTsKKwkJCQkJZ290byByZXBsYW47 CisJCQkJfQogCiAJCQkJcmVzID0gX1NQSV9wcXVlcnkocWRlc2MsIGNhblNldFRhZyA/IG9wdGlv bnMtPnRjb3VudCA6IDApOwotCiAJCQkJRnJlZVF1ZXJ5RGVzYyhxZGVzYyk7CiAJCQl9CiAJCQll bHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYwppbmRleCBlZTliODlhNjcyLi5jODA3ZTljZGNjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCisrKyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJzdG9y YWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsYWR0LmgiCiAjaW5jbHVk ZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKIAogCiAvKgpA QCAtMzY0LDYgKzM2NSw1MCBAQCBDaGVja1JlbGF0aW9uTG9ja2VkQnlNZShSZWxhdGlvbiByZWxh dGlvbiwgTE9DS01PREUgbG9ja21vZGUsIGJvb2wgb3JzdHJvbmdlcikKIAlyZXR1cm4gZmFsc2U7 CiB9CiAKKy8qCisgKgkJQ2hlY2tSZWxMb2NrZWRCeU1lCisgKgorICogUmV0dXJucyB0cnVlIGlm IGN1cnJlbnQgdHJhbnNhY3Rpb24gaG9sZHMgYSBsb2NrIG9uIHRoZSBnaXZlbiByZWxhdGlvbiBv ZgorICogbW9kZSAnbG9ja21vZGUnLiAgSWYgJ29yc3Ryb25nZXInIGlzIHRydWUsIGEgc3Ryb25n ZXIgbG9ja21vZGUgaXMgYWxzbyBPSy4KKyAqICgiU3Ryb25nZXIiIGlzIGRlZmluZWQgYXMgIm51 bWVyaWNhbGx5IGhpZ2hlciIsIHdoaWNoIGlzIGEgYml0CisgKiBzZW1hbnRpY2FsbHkgZHViaW91 cyBidXQgaXMgT0sgZm9yIHRoZSBwdXJwb3NlcyB3ZSB1c2UgdGhpcyBmb3IuKQorICovCitib29s CitDaGVja1JlbExvY2tlZEJ5TWUoT2lkIHJlbGlkLCBMT0NLTU9ERSBsb2NrbW9kZSwgYm9vbCBv cnN0cm9uZ2VyKQoreworCU9pZAkJCWRiSWQgPSBnZXRfcmVsX3JlbGlzc2hhcmVkKHJlbGlkKSA/ IEludmFsaWRPaWQgOiBNeURhdGFiYXNlSWQ7CisJTE9DS1RBRwkJdGFnOworCisJU0VUX0xPQ0tU QUdfUkVMQVRJT04odGFnLCBkYklkLCByZWxpZCk7CisKKwlpZiAoTG9ja0hlbGRCeU1lKCZ0YWcs IGxvY2ttb2RlKSkKKwkJcmV0dXJuIHRydWU7CisKKwlpZiAob3JzdHJvbmdlcikKKwl7CisJCUxP Q0tNT0RFCXNsb2NrbW9kZTsKKworCQlmb3IgKHNsb2NrbW9kZSA9IGxvY2ttb2RlICsgMTsKKwkJ CSBzbG9ja21vZGUgPD0gTWF4TG9ja01vZGU7CisJCQkgc2xvY2ttb2RlKyspCisJCXsKKwkJCWlm IChMb2NrSGVsZEJ5TWUoJnRhZywgc2xvY2ttb2RlKSkKKwkJCXsKKyNpZmRlZiBOT1RfVVNFRAor CQkJCS8qIFNvbWV0aW1lcyB0aGlzIG1pZ2h0IGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nIHB1cnBv c2VzICovCisJCQkJZWxvZyhXQVJOSU5HLCAibG9jayBtb2RlICVzIHN1YnN0aXR1dGVkIGZvciAl cyBvbiByZWxhdGlvbiAlcyIsCisJCQkJCSBHZXRMb2NrbW9kZU5hbWUodGFnLmxvY2t0YWdfbG9j a21ldGhvZGlkLCBzbG9ja21vZGUpLAorCQkJCQkgR2V0TG9ja21vZGVOYW1lKHRhZy5sb2NrdGFn X2xvY2ttZXRob2RpZCwgbG9ja21vZGUpLAorCQkJCQkgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsYXRpb24pKTsKKyNlbmRpZgorCQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9CisJfQorCisJ cmV0dXJuIGZhbHNlOworfQorCiAvKgogICoJCUxvY2tIYXNXYWl0ZXJzUmVsYXRpb24KICAqCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29w L3Bvc3RncmVzLmMKaW5kZXggMzZjYzk5ZWM5Yy4uODg3MjRhOGQ2NyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMu YwpAQCAtMTIzMiw3ICsxMjMyLDEyIEBAIGV4ZWNfc2ltcGxlX3F1ZXJ5KGNvbnN0IGNoYXIgKnF1 ZXJ5X3N0cmluZykKIAkJLyoKIAkJICogU3RhcnQgdGhlIHBvcnRhbC4gIE5vIHBhcmFtZXRlcnMg aGVyZS4KIAkJICovCi0JCVBvcnRhbFN0YXJ0KHBvcnRhbCwgTlVMTCwgMCwgSW52YWxpZFNuYXBz aG90KTsKKwkJeworCQkJYm9vbAlwbGFuX3ZhbGlkIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsK KworCQkJcGxhbl92YWxpZCA9IFBvcnRhbFN0YXJ0KHBvcnRhbCwgTlVMTCwgMCwgSW52YWxpZFNu YXBzaG90KTsKKwkJCUFzc2VydChwbGFuX3ZhbGlkKTsKKwkJfQogCiAJCS8qCiAJCSAqIFNlbGVj dCB0aGUgYXBwcm9wcmlhdGUgb3V0cHV0IGZvcm1hdDogdGV4dCB1bmxlc3Mgd2UgYXJlIGRvaW5n IGEKQEAgLTE3MzcsNiArMTc0Miw3IEBAIGV4ZWNfYmluZF9tZXNzYWdlKFN0cmluZ0luZm8gaW5w dXRfbWVzc2FnZSkKIAkJCQkJCSJjb21tYW5kcyBpZ25vcmVkIHVudGlsIGVuZCBvZiB0cmFuc2Fj dGlvbiBibG9jayIpLAogCQkJCSBlcnJkZXRhaWxfYWJvcnQoKSkpOwogCityZXBsYW46CiAJLyoK IAkgKiBDcmVhdGUgdGhlIHBvcnRhbC4gIEFsbG93IHNpbGVudCByZXBsYWNlbWVudCBvZiBhbiBl eGlzdGluZyBwb3J0YWwgb25seQogCSAqIGlmIHRoZSB1bm5hbWVkIHBvcnRhbCBpcyBzcGVjaWZp ZWQuCkBAIC0yMDI4LDkgKzIwMzQsMTUgQEAgZXhlY19iaW5kX21lc3NhZ2UoU3RyaW5nSW5mbyBp bnB1dF9tZXNzYWdlKQogCQlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCiAJLyoKLQkgKiBBbmQgd2Un cmUgcmVhZHkgdG8gc3RhcnQgcG9ydGFsIGV4ZWN1dGlvbi4KKwkgKiBTdGFydCBwb3J0YWwgZXhl Y3V0aW9uLiAgSWYgdGhlIHBvcnRhbCBjb250YWlucyBhIGNhY2hlZCBwbGFuLCBpdCBtdXN0CisJ ICogYmUgcmVjcmVhdGVkIGlmIHRoZSBjYWNoZWQgcGxhbiB3YXMgZm91bmQgdG8gaGF2ZSBiZWVu IGludmFsaWRhdGVkIHdoZW4KKwkgKiBpbml0aWFsaXppbmcgb25lIG9mIHRoZSBwbGFuIHRyZWVz IGNvbnRhaW5lZCBpbiBpdC4KIAkgKi8KLQlQb3J0YWxTdGFydChwb3J0YWwsIHBhcmFtcywgMCwg SW52YWxpZFNuYXBzaG90KTsKKwlpZiAoIVBvcnRhbFN0YXJ0KHBvcnRhbCwgcGFyYW1zLCAwLCBJ bnZhbGlkU25hcHNob3QpKQorCXsKKwkJUG9ydGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKKwkJZ290 byByZXBsYW47CisJfQogCiAJLyoKIAkgKiBBcHBseSB0aGUgcmVzdWx0IGZvcm1hdCByZXF1ZXN0 cyB0byB0aGUgcG9ydGFsLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYyBi L3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggNzAxODA4ZjMwMy4uNDhjZDZmNDMwNCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYworKysgYi9zcmMvYmFja2VuZC90 Y29wL3BxdWVyeS5jCkBAIC02MCw2ICs2MCw3IEBAIHN0YXRpYyB2b2lkIERvUG9ydGFsUmV3aW5k KFBvcnRhbCBwb3J0YWwpOwogICovCiBRdWVyeURlc2MgKgogQ3JlYXRlUXVlcnlEZXNjKFBsYW5u ZWRTdG10ICpwbGFubmVkc3RtdCwKKwkJCQlDYWNoZWRQbGFuICpjcGxhbiwKIAkJCQljb25zdCBj aGFyICpzb3VyY2VUZXh0LAogCQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJCVNuYXBzaG90IGNy b3NzY2hlY2tfc25hcHNob3QsCkBAIC03Miw2ICs3Myw3IEBAIENyZWF0ZVF1ZXJ5RGVzYyhQbGFu bmVkU3RtdCAqcGxhbm5lZHN0bXQsCiAKIAlxZC0+b3BlcmF0aW9uID0gcGxhbm5lZHN0bXQtPmNv bW1hbmRUeXBlOwkvKiBvcGVyYXRpb24gKi8KIAlxZC0+cGxhbm5lZHN0bXQgPSBwbGFubmVkc3Rt dDsJLyogcGxhbiAqLworCXFkLT5jcGxhbiA9IGNwbGFuOwkJCQkvKiBDYWNoZWRQbGFuLCBpZiBw bGFuIGlzIGZyb20gb25lICovCiAJcWQtPnNvdXJjZVRleHQgPSBzb3VyY2VUZXh0OwkvKiBxdWVy eSB0ZXh0ICovCiAJcWQtPnNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChzbmFwc2hvdCk7CS8q IHNuYXBzaG90ICovCiAJLyogUkkgY2hlY2sgc25hcHNob3QgKi8KQEAgLTM0MSwxMCArMzQzLDEy IEBAIEZldGNoU3RhdGVtZW50VGFyZ2V0TGlzdChOb2RlICpzdG10KQogICogcHJlc2VudGx5IGln bm9yZWQgZm9yIG5vbi1QT1JUQUxfT05FX1NFTEVDVCBwb3J0YWxzIChpdCdzIG9ubHkgaW50ZW5k ZWQKICAqIHRvIGJlIHVzZWQgZm9yIGN1cnNvcnMpLgogICoKLSAqIE9uIHJldHVybiwgcG9ydGFs IGlzIHJlYWR5IHRvIGFjY2VwdCBQb3J0YWxSdW4oKSBjYWxscywgYW5kIHRoZSByZXN1bHQKLSAq IHR1cGRlc2MgKGlmIGFueSkgaXMga25vd24uCisgKiBUcnVlIGlzIHJldHVybmVkIGlmIHBvcnRh bCBpcyByZWFkeSB0byBhY2NlcHQgUG9ydGFsUnVuKCkgY2FsbHMsIGFuZCB0aGUKKyAqIHJlc3Vs dCB0dXBkZXNjIChpZiBhbnkpIGlzIGtub3duLiAgRmFsc2UgaWYgdGhlIHBsYW4gdHJlZSBpcyBu byBsb25nZXIKKyAqIHZhbGlkLCBpbiB3aGljaCBjYXNlLCB0aGUgY2FsbGVyIG11c3QgcmV0cnkg YWZ0ZXIgZ2VuZXJhdGluZyBhIG5ldworICogQ2FjaGVkUGxhbi4KICAqLwotdm9pZAorYm9vbAog UG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQlpbnQg ZWZsYWdzLCBTbmFwc2hvdCBzbmFwc2hvdCkKIHsKQEAgLTM1Myw2ICszNTcsNyBAQCBQb3J0YWxT dGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAlNZW1vcnlDb250ZXh0 IG9sZENvbnRleHQ7CiAJUXVlcnlEZXNjICAqcXVlcnlEZXNjOwogCWludAkJCW15ZWZsYWdzID0g MDsKKwlib29sCQlwbGFuX3ZhbGlkID0gdHJ1ZTsKIAogCUFzc2VydChQb3J0YWxJc1ZhbGlkKHBv cnRhbCkpOwogCUFzc2VydChwb3J0YWwtPnN0YXR1cyA9PSBQT1JUQUxfREVGSU5FRCk7CkBAIC00 MDcsNiArNDEyLDcgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBw YXJhbXMsCiAJCQkJICogc2V0IHRoZSBkZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KIAkJCQkgKi8K IAkJCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MobGluaXRpYWxfbm9kZShQbGFubmVkU3Rt dCwgcG9ydGFsLT5zdG10cyksCisJCQkJCQkJCQkJCXBvcnRhbC0+Y3BsYW4sCiAJCQkJCQkJCQkJ CXBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJ CQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LApAQCAtNDMxLDggKzQzNywxOSBAQCBQb3J0YWxTdGFy dChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQllbHNlCiAJCQkJCW15 ZWZsYWdzID0gZWZsYWdzOwogCi0JCQkJLyogQ2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUg dGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4gKi8KLQkJCQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywg bXllZmxhZ3MpOworCQkJCS8qCisJCQkJICogQ2FsbCBFeGVjdXRvclN0YXJ0IHRvIHByZXBhcmUg dGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4gIEEKKwkJCQkgKiBjYWNoZWQgcGxhbiBtYXkgZ2V0IGlu dmFsaWRhdGVkIGR1cmluZyBwbGFuIGludGlhbGl6YXRpb24uCisJCQkJICovCisJCQkJaWYgKCFF eGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgbXllZmxhZ3MpKQorCQkJCXsKKwkJCQkJQXNzZXJ0KHF1 ZXJ5RGVzYy0+Y3BsYW4pOworCQkJCQlFeGVjdXRvckVuZChxdWVyeURlc2MpOworCQkJCQlGcmVl UXVlcnlEZXNjKHF1ZXJ5RGVzYyk7CisJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQkJCXBs YW5fdmFsaWQgPSBmYWxzZTsKKwkJCQkJZ290byBwbGFuX2luaXRfZmFpbGVkOworCQkJCX0KIAog CQkJCS8qCiAJCQkJICogVGhpcyB0ZWxscyBQb3J0YWxDbGVhbnVwIHRvIHNodXQgZG93biB0aGUg ZXhlY3V0b3IsIHRob3VnaApAQCAtNTI1LDcgKzU0Miw3IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBw b3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCQkJICogQ3JlYXRlIHRoZSBRdWVyeURl c2MuICBEZXN0UmVjZWl2ZXIgd2lsbCBiZSBzZXQgaW4KIAkJCQkJCSAqIFBvcnRhbFJ1bk11bHRp KCkgYmVmb3JlIGNhbGxpbmcgRXhlY3V0b3JSdW4oKS4KIAkJCQkJCSAqLwotCQkJCQkJcXVlcnlE ZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sCisJCQkJCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVy eURlc2MocGxhbiwgcG9ydGFsLT5jcGxhbiwKIAkJCQkJCQkJCQkJCQlwb3J0YWwtPnNvdXJjZVRl eHQsCiAJCQkJCQkJCQkJCQkJIWlzX3V0aWxpdHkgPwogCQkJCQkJCQkJCQkJCUdldEFjdGl2ZVNu YXBzaG90KCkgOgpAQCAtNTQxLDcgKzU1OCwyMCBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFs LCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJCWlmIChpc191dGlsaXR5KQogCQkJCQkJCWNv bnRpbnVlOwogCi0JCQkJCQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgbXllZmxhZ3MpOworCQkJ CQkJLyoKKwkJCQkJCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZv cgorCQkJCQkJICogZXhlY3V0aW9uLiAgQSBjYWNoZWQgcGxhbiBtYXkgZ2V0IGludmFsaWRhdGVk CisJCQkJCQkgKiBkdXJpbmcgcGxhbiBpbnRpYWxpemF0aW9uLgorCQkJCQkJICovCisJCQkJCQlp ZiAoIUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBteWVmbGFncykpCisJCQkJCQl7CisJCQkJCQkJ UG9wQWN0aXZlU25hcHNob3QoKTsKKwkJCQkJCQlBc3NlcnQocXVlcnlEZXNjLT5jcGxhbik7CisJ CQkJCQkJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKKwkJCQkJCQlGcmVlUXVlcnlEZXNjKHF1ZXJ5 RGVzYyk7CisJCQkJCQkJcGxhbl92YWxpZCA9IGZhbHNlOworCQkJCQkJCWdvdG8gcGxhbl9pbml0 X2ZhaWxlZDsKKwkJCQkJCX0KIAkJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CiAJCQkJCX0KIAkJ CQl9CkBAIC01NjMsMTIgKzU5MywxNSBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJh bUxpc3RJbmZvIHBhcmFtcywKIAl9CiAJUEdfRU5EX1RSWSgpOwogCisJcG9ydGFsLT5zdGF0dXMg PSBQT1JUQUxfUkVBRFk7CisKK3BsYW5faW5pdF9mYWlsZWQ6CiAJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZENvbnRleHQpOwogCiAJQWN0aXZlUG9ydGFsID0gc2F2ZUFjdGl2ZVBvcnRhbDsKIAlD dXJyZW50UmVzb3VyY2VPd25lciA9IHNhdmVSZXNvdXJjZU93bmVyOwogCi0JcG9ydGFsLT5zdGF0 dXMgPSBQT1JUQUxfUkVBRFk7CisJcmV0dXJuIHBsYW5fdmFsaWQ7CiB9CiAKIC8qCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2xzeXNjYWNoZS5jCmluZGV4IGZjNmQyNjdlNDQuLjI3MjVkMDIzMTIgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC0yMDk1LDYgKzIwOTUsMjcgQEAgZ2V0X3Jl bF9wZXJzaXN0ZW5jZShPaWQgcmVsaWQpCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIGdl dF9yZWxfcmVsaXNzaGFyZWQKKyAqCisgKgkJUmV0dXJucyBpZiB0aGUgZ2l2ZW4gcmVsYXRpb24g aXMgc2hhcmVkIG9yIG5vdAorICovCitib29sCitnZXRfcmVsX3JlbGlzc2hhcmVkKE9pZCByZWxp ZCkKK3sKKwlIZWFwVHVwbGUJdHA7CisJRm9ybV9wZ19jbGFzcyByZWx0dXA7CisJYm9vbAkJcmVz dWx0OworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoUkVMT0lELCBPYmplY3RJZEdldERhdHVtKHJl bGlkKSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hl IGxvb2t1cCBmYWlsZWQgZm9yIHJlbGF0aW9uICV1IiwgcmVsaWQpOworCXJlbHR1cCA9IChGb3Jt X3BnX2NsYXNzKSBHRVRTVFJVQ1QodHApOworCXJlc3VsdCA9IHJlbHR1cC0+cmVsaXNzaGFyZWQ7 CisJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKworCXJldHVybiByZXN1bHQ7Cit9CiAKIC8qCQkJCS0t LS0tLS0tLS0gVFJBTlNGT1JNIENBQ0hFIC0tLS0tLS0tLS0JCQkJCQkgKi8KIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9wbGFuY2FjaGUuYwppbmRleCBkNjdjZDlhNDA1Li5jNWE3NjE2YjMzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYwpAQCAtMTAyLDEzICsxMDIsMTMgQEAgc3RhdGljIHZv aWQgUmVsZWFzZUdlbmVyaWNQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpOwogc3Rh dGljIExpc3QgKlJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLAogCQkJCQkJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiBzdGF0aWMgYm9v bCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSk7CitzdGF0aWMg Ym9vbCBHZW5lcmljUGxhbklzVmFsaWQoQ2FjaGVkUGxhbiAqY3BsYW4pOwogc3RhdGljIENhY2hl ZFBsYW4gKkJ1aWxkQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBMaXN0 ICpxbGlzdCwKIAkJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcywgUXVlcnlFbnZp cm9ubWVudCAqcXVlcnlFbnYpOwogc3RhdGljIGJvb2wgY2hvb3NlX2N1c3RvbV9wbGFuKENhY2hl ZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJCQkJICAgUGFyYW1MaXN0SW5mbyBib3VuZFBh cmFtcyk7CiBzdGF0aWMgZG91YmxlIGNhY2hlZF9wbGFuX2Nvc3QoQ2FjaGVkUGxhbiAqcGxhbiwg Ym9vbCBpbmNsdWRlX3BsYW5uZXIpOwogc3RhdGljIFF1ZXJ5ICpRdWVyeUxpc3RHZXRQcmltYXJ5 U3RtdChMaXN0ICpzdG10cyk7Ci1zdGF0aWMgdm9pZCBBY3F1aXJlRXhlY3V0b3JMb2NrcyhMaXN0 ICpzdG10X2xpc3QsIGJvb2wgYWNxdWlyZSk7CiBzdGF0aWMgdm9pZCBBY3F1aXJlUGxhbm5lckxv Y2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKTsKIHN0YXRpYyB2b2lkIFNjYW5RdWVy eUZvckxvY2tzKFF1ZXJ5ICpwYXJzZXRyZWUsIGJvb2wgYWNxdWlyZSk7CiBzdGF0aWMgYm9vbCBT Y2FuUXVlcnlXYWxrZXIoTm9kZSAqbm9kZSwgYm9vbCAqYWNxdWlyZSk7CkBAIC03OTAsOCArNzkw LDE1IEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNl LAogICogQ2FsbGVyIG11c3QgaGF2ZSBhbHJlYWR5IGNhbGxlZCBSZXZhbGlkYXRlQ2FjaGVkUXVl cnkgdG8gdmVyaWZ5IHRoYXQgdGhlCiAgKiBxdWVyeXRyZWUgaXMgdXAgdG8gZGF0ZS4KICAqCi0g KiBPbiBhICJ0cnVlIiByZXR1cm4sIHdlIGhhdmUgYWNxdWlyZWQgdGhlIGxvY2tzIG5lZWRlZCB0 byBydW4gdGhlIHBsYW4uCi0gKiAoV2UgbXVzdCBkbyB0aGlzIGZvciB0aGUgInRydWUiIHJlc3Vs dCB0byBiZSByYWNlLWNvbmRpdGlvbi1mcmVlLikKKyAqIElmIHRoZSBwbGFuIGNvbnRhaW5zIGFu eSBjaGlsZCByZWxhdGlvbnMgdGhhdCB3b3VsZCBoYXZlIGJlZW4gYWRkZWQgYnkgdGhlCisgKiBw bGFubmVyLCB0aGV5IHdvdWxkIG5vdCBoYXZlIGJlZW4gbG9ja2VkIHlldCwgYmVjYXVzZSBBY3F1 aXJlUGxhbm5lckxvY2tzKCkKKyAqIG9ubHkgbG9ja3MgcmVsYXRpb25zIHRoYXQgd291bGQgYmUg cHJlc2VudCBpbiB0aGUgb3JpZ2luYWwgcXVlcnkncyByYW5nZQorICogdGFibGUgKHRoYXQgaXMs IGJlZm9yZSBlbnRlcmluZyB0aGUgcGxhbm5lcikuICBTbywgdGhlIHBsYW4gY291bGQgZ28gc3Rh bGUKKyAqIGJlZm9yZSBpdCByZWFjaGVzIGV4ZWN1dGlvbiBpZiBhbnkgb2YgdGhvc2UgY2hpbGQg cmVsYXRpb25zIGdldCBtb2RpZmllZAorICogY29uY3VycmVudGx5LiAgVGhlIGV4ZWN1dG9yIG11 c3QgY2hlY2sgdGhhdCB0aGUgcGxhbiAoQ2FjaGVkUGxhbikgaXMgc3RpbGwKKyAqIHZhbGlkIGFm dGVyIHRha2luZyBhIGxvY2sgb24gZWFjaCBvZiB0aGUgY2hpbGQgdGFibGVzIGR1cmluZyB0aGUg cGxhbgorICogaW5pdGlhbGl6YXRpb24gcGhhc2UsIGFuZCBpZiBpdCBpcyBub3QsIGFzayB0aGUg Y2FsbGVyIHRvIHJlY3JlYXRlIHRoZQorICogcGxhbi4KICAqLwogc3RhdGljIGJvb2wKIENoZWNr Q2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQpAQCAtODA1LDYwICs4MTIs NTYgQEAgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCiAJaWYg KCFwbGFuKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlBc3NlcnQocGxhbi0+bWFnaWMgPT0gQ0FDSEVE UExBTl9NQUdJQyk7Ci0JLyogR2VuZXJpYyBwbGFucyBhcmUgbmV2ZXIgb25lLXNob3QgKi8KLQlB c3NlcnQoIXBsYW4tPmlzX29uZXNob3QpOworCWlmIChHZW5lcmljUGxhbklzVmFsaWQocGxhbikp CisJCXJldHVybiB0cnVlOwogCiAJLyoKLQkgKiBJZiBwbGFuIGlzbid0IHZhbGlkIGZvciBjdXJy ZW50IHJvbGUsIHdlIGNhbid0IHVzZSBpdC4KKwkgKiBQbGFuIGhhcyBiZWVuIGludmFsaWRhdGVk LCBzbyB1bmxpbmsgaXQgZnJvbSB0aGUgcGFyZW50IGFuZCByZWxlYXNlIGl0LgogCSAqLwotCWlm IChwbGFuLT5pc192YWxpZCAmJiBwbGFuLT5kZXBlbmRzT25Sb2xlICYmCi0JCXBsYW4tPnBsYW5S b2xlSWQgIT0gR2V0VXNlcklkKCkpCi0JCXBsYW4tPmlzX3ZhbGlkID0gZmFsc2U7CisJUmVsZWFz ZUdlbmVyaWNQbGFuKHBsYW5zb3VyY2UpOwogCi0JLyoKLQkgKiBJZiBpdCBhcHBlYXJzIHZhbGlk LCBhY3F1aXJlIGxvY2tzIGFuZCByZWNoZWNrOyB0aGlzIGlzIG11Y2ggdGhlIHNhbWUKLQkgKiBs b2dpYyBhcyBpbiBSZXZhbGlkYXRlQ2FjaGVkUXVlcnksIGJ1dCBmb3IgYSBwbGFuLgotCSAqLwot CWlmIChwbGFuLT5pc192YWxpZCkKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBHZW5lcmlj UGxhbklzVmFsaWQKKyAqCQlJcyBhIGdlbmVyaWMgcGxhbiBzdGlsbCB2YWxpZD8KKyAqCisgKiBJ dCBtYXkgaGF2ZSBnb25lIHN0YWxlIGR1ZSB0byBjb25jdXJyZW50IHNjaGVtYSBtb2RpZmljYXRp b25zIG9mIHJlbGF0aW9ucworICogbWVudGlvbmVkIGluIHRoZSBwbGFuIG9yIGEgY291cGxlIG9m IG90aGVyIHRoaW5ncyBtZW50aW9uZWQgYmVsb3cuCisgKi8KK3N0YXRpYyBib29sCitHZW5lcmlj UGxhbklzVmFsaWQoQ2FjaGVkUGxhbiAqY3BsYW4pCit7CisJQXNzZXJ0KGNwbGFuICE9IE5VTEwp OworCUFzc2VydChjcGxhbi0+bWFnaWMgPT0gQ0FDSEVEUExBTl9NQUdJQyk7CisJLyogR2VuZXJp YyBwbGFucyBhcmUgbmV2ZXIgb25lLXNob3QgKi8KKwlBc3NlcnQoIWNwbGFuLT5pc19vbmVzaG90 KTsKKworCWlmIChjcGxhbi0+aXNfdmFsaWQpCiAJewogCQkvKgogCQkgKiBQbGFuIG11c3QgaGF2 ZSBwb3NpdGl2ZSByZWZjb3VudCBiZWNhdXNlIGl0IGlzIHJlZmVyZW5jZWQgYnkKIAkJICogcGxh bnNvdXJjZTsgc28gbm8gbmVlZCB0byBmZWFyIGl0IGRpc2FwcGVhcnMgdW5kZXIgdXMgaGVyZS4K IAkJICovCi0JCUFzc2VydChwbGFuLT5yZWZjb3VudCA+IDApOwotCi0JCUFjcXVpcmVFeGVjdXRv ckxvY2tzKHBsYW4tPnN0bXRfbGlzdCwgdHJ1ZSk7CisJCUFzc2VydChjcGxhbi0+cmVmY291bnQg PiAwKTsKIAogCQkvKgotCQkgKiBJZiBwbGFuIHdhcyB0cmFuc2llbnQsIGNoZWNrIHRvIHNlZSBp ZiBUcmFuc2FjdGlvblhtaW4gaGFzCi0JCSAqIGFkdmFuY2VkLCBhbmQgaWYgc28gaW52YWxpZGF0 ZSBpdC4KKwkJICogSWYgcGxhbiBpc24ndCB2YWxpZCBmb3IgY3VycmVudCByb2xlLCB3ZSBjYW4n dCB1c2UgaXQuCiAJCSAqLwotCQlpZiAocGxhbi0+aXNfdmFsaWQgJiYKLQkJCVRyYW5zYWN0aW9u SWRJc1ZhbGlkKHBsYW4tPnNhdmVkX3htaW4pICYmCi0JCQkhVHJhbnNhY3Rpb25JZEVxdWFscyhw bGFuLT5zYXZlZF94bWluLCBUcmFuc2FjdGlvblhtaW4pKQotCQkJcGxhbi0+aXNfdmFsaWQgPSBm YWxzZTsKKwkJaWYgKGNwbGFuLT5kZXBlbmRzT25Sb2xlICYmIGNwbGFuLT5wbGFuUm9sZUlkICE9 IEdldFVzZXJJZCgpKQorCQkJY3BsYW4tPmlzX3ZhbGlkID0gZmFsc2U7CiAKIAkJLyoKLQkJICog Qnkgbm93LCBpZiBhbnkgaW52YWxpZGF0aW9uIGhhcyBoYXBwZW5lZCwgdGhlIGludmFsIGNhbGxi YWNrCi0JCSAqIGZ1bmN0aW9ucyB3aWxsIGhhdmUgbWFya2VkIHRoZSBwbGFuIGludmFsaWQuCisJ CSAqIElmIHBsYW4gd2FzIHRyYW5zaWVudCwgY2hlY2sgdG8gc2VlIGlmIFRyYW5zYWN0aW9uWG1p biBoYXMKKwkJICogYWR2YW5jZWQsIGFuZCBpZiBzbyBpbnZhbGlkYXRlIGl0LgogCQkgKi8KLQkJ aWYgKHBsYW4tPmlzX3ZhbGlkKQotCQl7Ci0JCQkvKiBTdWNjZXNzZnVsbHkgcmV2YWxpZGF0ZWQg YW5kIGxvY2tlZCB0aGUgcXVlcnkuICovCi0JCQlyZXR1cm4gdHJ1ZTsKLQkJfQotCi0JCS8qIE9v cHMsIHRoZSByYWNlIGNhc2UgaGFwcGVuZWQuICBSZWxlYXNlIHVzZWxlc3MgbG9ja3MuICovCi0J CUFjcXVpcmVFeGVjdXRvckxvY2tzKHBsYW4tPnN0bXRfbGlzdCwgZmFsc2UpOworCQlpZiAoVHJh bnNhY3Rpb25JZElzVmFsaWQoY3BsYW4tPnNhdmVkX3htaW4pICYmCisJCQkhVHJhbnNhY3Rpb25J ZEVxdWFscyhjcGxhbi0+c2F2ZWRfeG1pbiwgVHJhbnNhY3Rpb25YbWluKSkKKwkJCWNwbGFuLT5p c192YWxpZCA9IGZhbHNlOwogCX0KIAotCS8qCi0JICogUGxhbiBoYXMgYmVlbiBpbnZhbGlkYXRl ZCwgc28gdW5saW5rIGl0IGZyb20gdGhlIHBhcmVudCBhbmQgcmVsZWFzZSBpdC4KLQkgKi8KLQlS ZWxlYXNlR2VuZXJpY1BsYW4ocGxhbnNvdXJjZSk7Ci0KLQlyZXR1cm4gZmFsc2U7CisJcmV0dXJu IGNwbGFuLT5pc192YWxpZDsKIH0KIAogLyoKQEAgLTExMjgsOCArMTEzMSwxNiBAQCBjYWNoZWRf cGxhbl9jb3N0KENhY2hlZFBsYW4gKnBsYW4sIGJvb2wgaW5jbHVkZV9wbGFubmVyKQogICogcGxh biBvciBhIGN1c3RvbSBwbGFuIGZvciB0aGUgZ2l2ZW4gcGFyYW1ldGVyczogdGhlIGNhbGxlciBk b2VzIG5vdCBrbm93CiAgKiB3aGljaCBpdCB3aWxsIGdldC4KICAqCi0gKiBPbiByZXR1cm4sIHRo ZSBwbGFuIGlzIHZhbGlkIGFuZCB3ZSBoYXZlIHN1ZmZpY2llbnQgbG9ja3MgdG8gYmVnaW4KLSAq IGV4ZWN1dGlvbi4KKyAqIE9uIHJldHVybiwgdGhlIHBsYW4gaXMgdmFsaWQgdW5sZXNzIGl0IGNv bnRhaW5zIGluaGVyaXRhbmNlL3BhcnRpdGlvbiBjaGlsZAorICogdGFibGVzLCBiZWNhdXNlIHRo ZXkgd2lsbCBub3QgaGF2ZSBiZWVuIGxvY2tlZCBhcyBoZXJlIHdlIG9ubHkgbG9jayB0aGUKKyAq IHRhYmxlcyBtZW50aW9uZWQgaW4gdGhlIG9yaWdpbmFsIHF1ZXJ5LiAgSW5oZXJpdGFuY2UvcGFy dGl0aW9uIGNoaWxkIHRhYmxlcworICogYXJlIGxvY2tlZCBieSB0aGUgZXhlY3V0b3Igd2hlbiBp bml0aWFsaXppbmcgdGhlIHBsYW4gdHJlZSBhbmQgaWYgdGhlIHBsYW4KKyAqIGdldHMgaW52YWxp ZGF0ZWQgYXMgYSByZXN1bHQgb2YgdGFraW5nIHRob3NlIGxvY2tzLCB0aGUgZXhlY3V0b3IgbXVz dCBhc2sKKyAqIHRoZSBjYWxsZXIgdG8gZ2V0IGEgbmV3IHBsYW4gYnkgY2FsbGluZyBoZXJlIGFn YWluLiAgTG9ja2luZyBvZiB0aGUgY2hpbGQKKyAqIHRhYmxlcyBpcyBkZWZlcnJlZCB0byB0aGUg ZXhlY3V0b3IgaW4gdGhpcyBtYW5uZXIsIGJlY2F1c2Ugbm90IGFsbCBjaGlsZAorICogdGFibGVz IG1heSBuZWVkIHRvIGJlIGxvY2tlZCBhcyBzb21lIG1heSBnZXQgcHJ1bmVkIGR1cmluZyB0aGUg ZXhlY3V0b3IKKyAqIHBsYW4gaW5pdGlhbGl6YXRpb24gd2hpY2ggcGVyZm9ybXMgaW5pdGlhbCBw cnVpbmcgb24gYW55IG5vZGVzIHRoYXQKKyAqIHN1cHBvcnQgcGFydGl0aW9uIHBydW5pbmcuCiAg KgogICogT24gcmV0dXJuLCB0aGUgcmVmY291bnQgb2YgdGhlIHBsYW4gaGFzIGJlZW4gaW5jcmVt ZW50ZWQ7IGEgbGF0ZXIKICAqIFJlbGVhc2VDYWNoZWRQbGFuKCkgY2FsbCBpcyBleHBlY3RlZC4g IElmICJvd25lciIgaXMgbm90IE5VTEwgdGhlbgpAQCAtMTE2NCw3ICsxMTc1LDEwIEBAIEdldENh Y2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgUGFyYW1MaXN0SW5mbyBib3Vu ZFBhcmFtcywKIAl7CiAJCWlmIChDaGVja0NhY2hlZFBsYW4ocGxhbnNvdXJjZSkpCiAJCXsKLQkJ CS8qIFdlIHdhbnQgYSBnZW5lcmljIHBsYW4sIGFuZCB3ZSBhbHJlYWR5IGhhdmUgYSB2YWxpZCBv bmUgKi8KKwkJCS8qCisJCQkgKiBXZSB3YW50IGEgZ2VuZXJpYyBwbGFuLCBhbmQgd2UgYWxyZWFk eSBoYXZlIGEgdmFsaWQgb25lLCB0aG91Z2gKKwkJCSAqIHNlZSB0aGUgaGVhZGVyIGNvbW1lbnQu CisJCQkgKi8KIAkJCXBsYW4gPSBwbGFuc291cmNlLT5ncGxhbjsKIAkJCUFzc2VydChwbGFuLT5t YWdpYyA9PSBDQUNIRURQTEFOX01BR0lDKTsKIAkJfQpAQCAtMTM2Miw4ICsxMzc2LDggQEAgQ2Fj aGVkUGxhbkFsbG93c1NpbXBsZVZhbGlkaXR5Q2hlY2soQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSwKIAl9CiAKIAkvKgotCSAqIFJlamVjdCBpZiBBY3F1aXJlRXhlY3V0b3JMb2NrcyB3b3Vs ZCBoYXZlIGFueXRoaW5nIHRvIGRvLiAgVGhpcyBpcwotCSAqIHByb2JhYmx5IHVubmVjZXNzYXJ5 IGdpdmVuIHRoZSBwcmV2aW91cyBjaGVjaywgYnV0IGxldCdzIGJlIHNhZmUuCisJICogUmVqZWN0 IGlmIHRoZSBleGVjdXRvciB3b3VsZCBuZWVkIHRvIHRha2UgYWRkaXRpb25hbCBsb2NrcywgdGhh dCBpcywgaW4KKwkgKiBhZGRpdGlvbiB0byB0aG9zZSB0YWtlbiBieSBBY3F1aXJlUGxhbm5lckxv Y2tzKCkgb24gYSBnaXZlbiBxdWVyeS4KIAkgKi8KIAlmb3JlYWNoKGxjLCBwbGFuLT5zdG10X2xp c3QpCiAJewpAQCAtMTczOSw1OCArMTc1Myw2IEBAIFF1ZXJ5TGlzdEdldFByaW1hcnlTdG10KExp c3QgKnN0bXRzKQogCXJldHVybiBOVUxMOwogfQogCi0vKgotICogQWNxdWlyZUV4ZWN1dG9yTG9j a3M6IGFjcXVpcmUgbG9ja3MgbmVlZGVkIGZvciBleGVjdXRpb24gb2YgYSBjYWNoZWQgcGxhbjsK LSAqIG9yIHJlbGVhc2UgdGhlbSBpZiBhY3F1aXJlIGlzIGZhbHNlLgotICovCi1zdGF0aWMgdm9p ZAotQWNxdWlyZUV4ZWN1dG9yTG9ja3MoTGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCi17 Ci0JTGlzdENlbGwgICAqbGMxOwotCi0JZm9yZWFjaChsYzEsIHN0bXRfbGlzdCkKLQl7Ci0JCVBs YW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBsYzEpOwot CQlMaXN0Q2VsbCAgICpsYzI7Ci0KLQkJaWYgKHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZSA9PSBD TURfVVRJTElUWSkKLQkJewotCQkJLyoKLQkJCSAqIElnbm9yZSB1dGlsaXR5IHN0YXRlbWVudHMs IGV4Y2VwdCB0aG9zZSAoc3VjaCBhcyBFWFBMQUlOKSB0aGF0Ci0JCQkgKiBjb250YWluIGEgcGFy c2VkLWJ1dC1ub3QtcGxhbm5lZCBxdWVyeS4gIE5vdGU6IGl0J3Mgb2theSB0byB1c2UKLQkJCSAq IFNjYW5RdWVyeUZvckxvY2tzLCBldmVuIHRob3VnaCB0aGUgcXVlcnkgaGFzbid0IGJlZW4gdGhy b3VnaAotCQkJICogcnVsZSByZXdyaXRpbmcsIGJlY2F1c2UgcmV3cml0aW5nIGRvZXNuJ3QgY2hh bmdlIHRoZSBxdWVyeQotCQkJICogcmVwcmVzZW50YXRpb24uCi0JCQkgKi8KLQkJCVF1ZXJ5CSAg ICpxdWVyeSA9IFV0aWxpdHlDb250YWluc1F1ZXJ5KHBsYW5uZWRzdG10LT51dGlsaXR5U3RtdCk7 Ci0KLQkJCWlmIChxdWVyeSkKLQkJCQlTY2FuUXVlcnlGb3JMb2NrcyhxdWVyeSwgYWNxdWlyZSk7 Ci0JCQljb250aW51ZTsKLQkJfQotCi0JCWZvcmVhY2gobGMyLCBwbGFubmVkc3RtdC0+cnRhYmxl KQotCQl7Ci0JCQlSYW5nZVRibEVudHJ5ICpydGUgPSAoUmFuZ2VUYmxFbnRyeSAqKSBsZmlyc3Qo bGMyKTsKLQotCQkJaWYgKCEocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTiB8fAotCQkJCSAg KHJ0ZS0+cnRla2luZCA9PSBSVEVfU1VCUVVFUlkgJiYgT2lkSXNWYWxpZChydGUtPnJlbGlkKSkp KQotCQkJCWNvbnRpbnVlOwotCi0JCQkvKgotCQkJICogQWNxdWlyZSB0aGUgYXBwcm9wcmlhdGUg dHlwZSBvZiBsb2NrIG9uIGVhY2ggcmVsYXRpb24gT0lELiBOb3RlCi0JCQkgKiB0aGF0IHdlIGRv bid0IGFjdHVhbGx5IHRyeSB0byBvcGVuIHRoZSByZWwsIGFuZCBoZW5jZSB3aWxsIG5vdAotCQkJ ICogZmFpbCBpZiBpdCdzIGJlZW4gZHJvcHBlZCBlbnRpcmVseSAtLS0gd2UnbGwganVzdCB0cmFu c2llbnRseQotCQkJICogYWNxdWlyZSBhIG5vbi1jb25mbGljdGluZyBsb2NrLgotCQkJICovCi0J CQlpZiAoYWNxdWlyZSkKLQkJCQlMb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRlLT5yZWxs b2NrbW9kZSk7Ci0JCQllbHNlCi0JCQkJVW5sb2NrUmVsYXRpb25PaWQocnRlLT5yZWxpZCwgcnRl LT5yZWxsb2NrbW9kZSk7Ci0JCX0KLQl9Ci19Ci0KIC8qCiAgKiBBY3F1aXJlUGxhbm5lckxvY2tz OiBhY3F1aXJlIGxvY2tzIG5lZWRlZCBmb3IgcGxhbm5pbmcgb2YgYSBxdWVyeXRyZWUgbGlzdDsK ICAqIG9yIHJlbGVhc2UgdGhlbSBpZiBhY3F1aXJlIGlzIGZhbHNlLgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFp bi5oCmluZGV4IDA4ZWE4NTJiNjUuLjM5MmFiYjUxNTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2V4cGxhaW4uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgK QEAgLTg4LDcgKzg4LDcgQEAgZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVV0aWxpdHkoTm9kZSAqdXRp bGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkJICBFeHBsYWluU3RhdGUgKmVzLCBj b25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCQkgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBR dWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiAKLWV4dGVybiBRdWVyeURlc2MgKkV4cGxhaW5R dWVyeURlc2MoUGxhbm5lZFN0bXQgKnN0bXQsCitleHRlcm4gUXVlcnlEZXNjICpFeHBsYWluUXVl cnlEZXNjKFBsYW5uZWRTdG10ICpzdG10LCBzdHJ1Y3QgQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJ IGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBJbnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUg KmVzLAogCQkJCSBQYXJhbUxpc3RJbmZvIHBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlF bnYpOwogZXh0ZXJuIHZvaWQgRXhwbGFpbk9uZVBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCkBA IC0xMDgsNiArMTA4LDcgQEAgZXh0ZXJuIHZvaWQgRXhwbGFpblF1ZXJ5UGFyYW1ldGVycyhFeHBs YWluU3RhdGUgKmVzLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywgaW50IG0KIAogZXh0ZXJuIHZvaWQg RXhwbGFpbkJlZ2luT3V0cHV0KEV4cGxhaW5TdGF0ZSAqZXMpOwogZXh0ZXJuIHZvaWQgRXhwbGFp bkVuZE91dHB1dChFeHBsYWluU3RhdGUgKmVzKTsKK2V4dGVybiB2b2lkIEV4cGxhaW5SZXNldE91 dHB1dChFeHBsYWluU3RhdGUgKmVzKTsKIGV4dGVybiB2b2lkIEV4cGxhaW5TZXBhcmF0ZVBsYW5z KEV4cGxhaW5TdGF0ZSAqZXMpOwogCiBleHRlcm4gdm9pZCBFeHBsYWluUHJvcGVydHlMaXN0KGNv bnN0IGNoYXIgKnFsYWJlbCwgTGlzdCAqZGF0YSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNkZXNjLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCmluZGV4 IGFmMmJmMzZkZmIuLjRiNzM2OGEwZGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWNkZXNjLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaApAQCAtMzIs OSArMzIsMTIgQEAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNjCiB7CisJTm9kZVRhZwkJ dHlwZTsKKwogCS8qIFRoZXNlIGZpZWxkcyBhcmUgcHJvdmlkZWQgYnkgQ3JlYXRlUXVlcnlEZXNj ICovCiAJQ21kVHlwZQkJb3BlcmF0aW9uOwkJLyogQ01EX1NFTEVDVCwgQ01EX1VQREFURSwgZXRj LiAqLwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdDsJLyogcGxhbm5lcidzIG91dHB1dCAoY291 bGQgYmUgdXRpbGl0eSwgdG9vKSAqLworCXN0cnVjdCBDYWNoZWRQbGFuICpjcGxhbjsJLyogQ2Fj aGVkUGxhbiwgaWYgcGxhbm5lZHN0bXQgaXMgZnJvbSBvbmUgKi8KIAljb25zdCBjaGFyICpzb3Vy Y2VUZXh0OwkJLyogc291cmNlIHRleHQgb2YgdGhlIHF1ZXJ5ICovCiAJU25hcHNob3QJc25hcHNo b3Q7CQkvKiBzbmFwc2hvdCB0byB1c2UgZm9yIHF1ZXJ5ICovCiAJU25hcHNob3QJY3Jvc3NjaGVj a19zbmFwc2hvdDsJLyogY3Jvc3NjaGVjayBmb3IgUkkgdXBkYXRlL2RlbGV0ZSAqLwpAQCAtNTcs NiArNjAsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWVyeURlc2MKIAogLyogaW4gcHF1ZXJ5LmMgKi8K IGV4dGVybiBRdWVyeURlc2MgKkNyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5lZHN0 bXQsCisJCQkJCQkJCSAgc3RydWN0IENhY2hlZFBsYW4gKmNwbGFuLAogCQkJCQkJCQkgIGNvbnN0 IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkJ CSAgU25hcHNob3QgY3Jvc3NjaGVja19zbmFwc2hvdCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2V4ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmlu ZGV4IDhlYzYzNmNhYjguLmVkZjJmMTNkMDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAt NzMsNyArNzMsNyBAQAogCiAKIC8qIEhvb2sgZm9yIHBsdWdpbnMgdG8gZ2V0IGNvbnRyb2wgaW4g RXhlY3V0b3JTdGFydCgpICovCi10eXBlZGVmIHZvaWQgKCpFeGVjdXRvclN0YXJ0X2hvb2tfdHlw ZSkgKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKK3R5cGVkZWYgYm9vbCAoKkV4 ZWN1dG9yU3RhcnRfaG9va190eXBlKSAoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3Mp OwogZXh0ZXJuIFBHRExMSU1QT1JUIEV4ZWN1dG9yU3RhcnRfaG9va190eXBlIEV4ZWN1dG9yU3Rh cnRfaG9vazsKIAogLyogSG9vayBmb3IgcGx1Z2lucyB0byBnZXQgY29udHJvbCBpbiBFeGVjdXRv clJ1bigpICovCkBAIC0xOTgsOCArMTk4LDggQEAgRXhlY0dldEp1bmtBdHRyaWJ1dGUoVHVwbGVU YWJsZVNsb3QgKnNsb3QsIEF0dHJOdW1iZXIgYXR0bm8sIGJvb2wgKmlzTnVsbCkKIC8qCiAgKiBw cm90b3R5cGVzIGZyb20gZnVuY3Rpb25zIGluIGV4ZWNNYWluLmMKICAqLwotZXh0ZXJuIHZvaWQg RXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7Ci1leHRlcm4g dm9pZCBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZs YWdzKTsKK2V4dGVybiBib29sIEV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGlu dCBlZmxhZ3MpOworZXh0ZXJuIGJvb2wgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2Mg KnF1ZXJ5RGVzYywgaW50IGVmbGFncyk7CiBleHRlcm4gdm9pZCBFeGVjdXRvclJ1bihRdWVyeURl c2MgKnF1ZXJ5RGVzYywKIAkJCQkJCVNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLCB1aW50NjQgY291 bnQsIGJvb2wgZXhlY3V0ZV9vbmNlKTsKIGV4dGVybiB2b2lkIHN0YW5kYXJkX0V4ZWN1dG9yUnVu KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLApAQCAtNjAyLDYgKzYwMiw3IEBAIGV4ZWNfcnRfZmV0Y2go SW5kZXggcnRpLCBFU3RhdGUgKmVzdGF0ZSkKIH0KIAogZXh0ZXJuIFJlbGF0aW9uIEV4ZWNHZXRS YW5nZVRhYmxlUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHJ0aSk7CitleHRlcm4gdm9p ZCBFeGVjTG9ja0FwcGVuZE5vbkxlYWZSZWxhdGlvbnMoRVN0YXRlICplc3RhdGUsIExpc3QgKmFs bHBhcnRyZWxpZHMpOwogZXh0ZXJuIHZvaWQgRXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUg KmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJCQkJCQkJICAgSW5kZXgg cnRpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmggYi9zcmMvaW5j bHVkZS9zdG9yYWdlL2xtZ3IuaAppbmRleCA0ZWU5MWUzY2Y5Li41OThiZjI2ODhhIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdl L2xtZ3IuaApAQCAtNDgsNiArNDgsNyBAQCBleHRlcm4gYm9vbCBDb25kaXRpb25hbExvY2tSZWxh dGlvbihSZWxhdGlvbiByZWxhdGlvbiwgTE9DS01PREUgbG9ja21vZGUpOwogZXh0ZXJuIHZvaWQg VW5sb2NrUmVsYXRpb24oUmVsYXRpb24gcmVsYXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlKTsKIGV4 dGVybiBib29sIENoZWNrUmVsYXRpb25Mb2NrZWRCeU1lKFJlbGF0aW9uIHJlbGF0aW9uLCBMT0NL TU9ERSBsb2NrbW9kZSwKIAkJCQkJCQkJCWJvb2wgb3JzdHJvbmdlcik7CitleHRlcm4gYm9vbCBD aGVja1JlbExvY2tlZEJ5TWUoT2lkIHJlbGlkLCBMT0NLTU9ERSBsb2NrbW9kZSwgYm9vbCBvcnN0 cm9uZ2VyKTsKIGV4dGVybiBib29sIExvY2tIYXNXYWl0ZXJzUmVsYXRpb24oUmVsYXRpb24gcmVs YXRpb24sIExPQ0tNT0RFIGxvY2ttb2RlKTsKIAogZXh0ZXJuIHZvaWQgTG9ja1JlbGF0aW9uSWRG b3JTZXNzaW9uKExvY2tSZWxJZCAqcmVsaWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3Rjb3AvcHF1ZXJ5LmggYi9zcmMvaW5jbHVkZS90Y29wL3BxdWVyeS5o CmluZGV4IGE1ZTY1Yjk4YWEuLjU3N2I4MWE5ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rj b3AvcHF1ZXJ5LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC9wcXVlcnkuaApAQCAtMjksNyArMjks NyBAQCBleHRlcm4gTGlzdCAqRmV0Y2hQb3J0YWxUYXJnZXRMaXN0KFBvcnRhbCBwb3J0YWwpOwog CiBleHRlcm4gTGlzdCAqRmV0Y2hTdGF0ZW1lbnRUYXJnZXRMaXN0KE5vZGUgKnN0bXQpOwogCi1l eHRlcm4gdm9pZCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFt cywKK2V4dGVybiBib29sIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8g cGFyYW1zLAogCQkJCQkJaW50IGVmbGFncywgU25hcHNob3Qgc25hcHNob3QpOwogCiBleHRlcm4g dm9pZCBQb3J0YWxTZXRSZXN1bHRGb3JtYXQoUG9ydGFsIHBvcnRhbCwgaW50IG5Gb3JtYXRzLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91 dGlscy9sc3lzY2FjaGUuaAppbmRleCBmNWZkYmZlMTE2Li5hMDI0ZTVkY2QwIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9s c3lzY2FjaGUuaApAQCAtMTQwLDYgKzE0MCw3IEBAIGV4dGVybiBjaGFyIGdldF9yZWxfcmVsa2lu ZChPaWQgcmVsaWQpOwogZXh0ZXJuIGJvb2wgZ2V0X3JlbF9yZWxpc3BhcnRpdGlvbihPaWQgcmVs aWQpOwogZXh0ZXJuIE9pZAlnZXRfcmVsX3RhYmxlc3BhY2UoT2lkIHJlbGlkKTsKIGV4dGVybiBj aGFyIGdldF9yZWxfcGVyc2lzdGVuY2UoT2lkIHJlbGlkKTsKK2V4dGVybiBib29sIGdldF9yZWxf cmVsaXNzaGFyZWQoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV9mcm9tc3Fs KE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJuIE9pZAlnZXRf dHJhbnNmb3JtX3Rvc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwog ZXh0ZXJuIGJvb2wgZ2V0X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVz L2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQppbmRleCA3MGYyNGU4NDZkLi4yZmNhODRkMDI3IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQorKysg Yi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQpAQCAtOCw3ICs4LDgg QEAgT0JKUyA9IFwKIAlkZWxheV9leGVjdXRpb24ubwogCiBJU09MQVRJT04gPSBwYXJ0aXRpb24t YWRkaXRpb24gXAotCSAgICBwYXJ0aXRpb24tcmVtb3ZhbC0xCisJICAgIHBhcnRpdGlvbi1yZW1v dmFsLTEgXAorCQljYWNoZWQtcGxhbi1yZXBsYW4KIAogaWZkZWYgVVNFX1BHWFMKIFBHX0NPTkZJ RyA9IHBnX2NvbmZpZwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRp b24vZGVsYXlfZXhlY3V0aW9uLmMgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9k ZWxheV9leGVjdXRpb24uYwppbmRleCA3Y2Q3NmViMzRiLi5jZTE4OTE1NmFkIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYworKysg Yi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYwpAQCAt MSwxNCArMSwxOCBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogZGVsYXlfZXhlY3V0aW9u LmMKLSAqCQlUZXN0IG1vZHVsZSB0byBhbGxvdyBkZWxheSBiZXR3ZWVuIHBhcnNpbmcgYW5kIGV4 ZWN1dGlvbiBvZiBhIHF1ZXJ5LgorICoJCVRlc3QgbW9kdWxlIHRvIGludHJvZHVjZSBkZWxheSBh dCB2YXJpb3VzIHBvaW50cyBkdXJpbmcgZXhlY3V0aW9uIG9mIGEKKyAqCQlxdWVyeSB0byB0ZXN0 IHRoYXQgZXhlY3V0aW9uIHByb2NlZWRzIHNhZmVseSBpbiBsaWdodCBvZiBjb25jdXJyZW50Cisg KgkJY2hhbmdlcy4KICAqCiAgKiBUaGUgZGVsYXkgaXMgaW1wbGVtZW50ZWQgYnkgdGFraW5nIGFu ZCBpbW1lZGlhdGVseSByZWxlYXNpbmcgYSBzcGVjaWZpZWQKICAqIGFkdmlzb3J5IGxvY2suICBJ ZiBhbm90aGVyIHByb2Nlc3MgaGFzIHByZXZpb3VzbHkgdGFrZW4gdGhhdCBsb2NrLCB0aGUKICAq IGN1cnJlbnQgcHJvY2VzcyB3aWxsIGJlIGJsb2NrZWQgdW50aWwgdGhlIGxvY2sgaXMgcmVsZWFz ZWQ7IG90aGVyd2lzZSwKICAqIHRoZXJlJ3Mgbm8gZWZmZWN0LiAgVGhpcyBhbGxvd3MgYW4gaXNv bGF0aW9udGVzdGVyIHNjcmlwdCB0byByZWxpYWJseQotICogdGVzdCBiZWhhdmlvcnMgd2hlcmUg c29tZSBzcGVjaWZpZWQgYWN0aW9uIGhhcHBlbnMgaW4gYW5vdGhlciBiYWNrZW5kCi0gKiBiZXR3 ZWVuIHBhcnNpbmcgYW5kIGV4ZWN1dGlvbiBvZiBhbnkgZGVzaXJlZCBxdWVyeS4KKyAqIHRlc3Qg YmVoYXZpb3JzIHdoZXJlIHNvbWUgc3BlY2lmaWVkIGFjdGlvbiBoYXBwZW5zIGluIGFub3RoZXIg YmFja2VuZCBpbgorICogYSBjb3VwbGUgb2YgY2FzZXM6IDEpIGJldHdlZW4gcGFyc2luZyBhbmQg ZXhlY3V0aW9uIG9mIGFueSBkZXNpcmVkIHF1ZXJ5CisgKiB3aGVuIHVzaW5nIHRoZSBwbGFubmVy X2hvb2ssIDIpIGJldHdlZW4gUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5KCkgYW5kCisgKiBFeGVjdXRv clN0YXJ0KCkgd2hlbiB1c2luZyB0aGUgRXhlY3V0b3JTdGFydF9ob29rLgogICoKICAqIENvcHly aWdodCAoYykgMjAyMC0yMDIzLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAog ICoKQEAgLTIyLDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgPGxpbWl0cy5oPgogCisjaW5jbHVkZSAi ZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbm5lci5oIgogI2lu Y2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCkBAIC0zMiw5 ICszNywxMSBAQCBQR19NT0RVTEVfTUFHSUM7CiAKIC8qIEdVQzogYWR2aXNvcnkgbG9jayBJRCB0 byB1c2UuICBaZXJvIGRpc2FibGVzIHRoZSBmZWF0dXJlLiAqLwogc3RhdGljIGludAlwb3N0X3Bs YW5uaW5nX2xvY2tfaWQgPSAwOworc3RhdGljIGludAlleGVjdXRvcl9zdGFydF9sb2NrX2lkID0g MDsKIAotLyogU2F2ZSBwcmV2aW91cyBwbGFubmVyIGhvb2sgdXNlciB0byBiZSBhIGdvb2QgY2l0 aXplbiAqLworLyogU2F2ZSBwcmV2aW91cyBob29rIHVzZXJzIHRvIGJlIGEgZ29vZCBjaXRpemVu ICovCiBzdGF0aWMgcGxhbm5lcl9ob29rX3R5cGUgcHJldl9wbGFubmVyX2hvb2sgPSBOVUxMOwor c3RhdGljIEV4ZWN1dG9yU3RhcnRfaG9va190eXBlIHByZXZfRXhlY3V0b3JTdGFydF9ob29rID0g TlVMTDsKIAogCiAvKiBwbGFubmVyX2hvb2sgZnVuY3Rpb24gdG8gcHJvdmlkZSB0aGUgZGVzaXJl ZCBkZWxheSAqLwpAQCAtNzAsMTEgKzc3LDQ1IEBAIGRlbGF5X2V4ZWN1dGlvbl9wbGFubmVyKFF1 ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLAogCXJldHVybiByZXN1bHQ7CiB9 CiAKKy8qIEV4ZWN1dG9yU3RhcnRfaG9vayBmdW5jdGlvbiB0byBwcm92aWRlIHRoZSBkZXNpcmVk IGRlbGF5ICovCitzdGF0aWMgYm9vbAorZGVsYXlfZXhlY3V0aW9uX0V4ZWN1dG9yU3RhcnQoUXVl cnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCit7CisJYm9vbAlwbGFuX3ZhbGlkOworCisJ LyogSWYgZW5hYmxlZCwgZGVsYXkgYnkgdGFraW5nIGFuZCByZWxlYXNpbmcgdGhlIHNwZWNpZmll ZCBsb2NrICovCisJaWYgKGV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgIT0gMCkKKwl7CisJCURpcmVj dEZ1bmN0aW9uQ2FsbDEocGdfYWR2aXNvcnlfbG9ja19pbnQ4LAorCQkJCQkJCUludDY0R2V0RGF0 dW0oKGludDY0KSBleGVjdXRvcl9zdGFydF9sb2NrX2lkKSk7CisJCURpcmVjdEZ1bmN0aW9uQ2Fs bDEocGdfYWR2aXNvcnlfdW5sb2NrX2ludDgsCisJCQkJCQkJSW50NjRHZXREYXR1bSgoaW50NjQp IGV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQpKTsKKworCQkvKgorCQkgKiBFbnN1cmUgdGhhdCB3ZSBu b3RpY2UgYW55IHBlbmRpbmcgaW52YWxpZGF0aW9ucywgc2luY2UgdGhlIGFkdmlzb3J5CisJCSAq IGxvY2sgZnVuY3Rpb25zIGRvbid0IGRvIHRoaXMuCisJCSAqLworCQlBY2NlcHRJbnZhbGlkYXRp b25NZXNzYWdlcygpOworCX0KKworCS8qIE5vdyBzdGFydCB0aGUgZXhlY3V0b3IsIHBvc3NpYmx5 IHZpYSBhIHByZXZpb3VzIGhvb2sgdXNlciAqLworCWlmIChwcmV2X0V4ZWN1dG9yU3RhcnRfaG9v aykKKwkJcGxhbl92YWxpZCA9IHByZXZfRXhlY3V0b3JTdGFydF9ob29rKHF1ZXJ5RGVzYywgZWZs YWdzKTsKKwllbHNlCisJCXBsYW5fdmFsaWQgPSBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1ZXJ5 RGVzYywgZWZsYWdzKTsKKworCWlmIChleGVjdXRvcl9zdGFydF9sb2NrX2lkICE9IDApCisJCWVs b2coTk9USUNFLCAiRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzICVzIiwK KwkJCSBwbGFuX3ZhbGlkID8gInZhbGlkIiA6ICJub3QgdmFsaWQiKTsKKworCXJldHVybiBwbGFu X3ZhbGlkOworfQorCiAvKiBNb2R1bGUgbG9hZCBmdW5jdGlvbiAqLwogdm9pZAogX1BHX2luaXQo dm9pZCkKIHsKLQkvKiBTZXQgdXAgdGhlIEdVQyB0byBjb250cm9sIHdoaWNoIGxvY2sgaXMgdXNl ZCAqLworCS8qIFNldCB1cCBHVUNzIHRvIGNvbnRyb2wgd2hpY2ggbG9jayBpcyB1c2VkICovCiAJ RGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoImRlbGF5X2V4ZWN1dGlvbi5wb3N0X3BsYW5uaW5nX2xv Y2tfaWQiLAogCQkJCQkJCSJTZXRzIHRoZSBhZHZpc29yeSBsb2NrIElEIHRvIGJlIGxvY2tlZC91 bmxvY2tlZCBhZnRlciBwbGFubmluZy4iLAogCQkJCQkJCSJaZXJvIGRpc2FibGVzIHRoZSBkZWxh eS4iLApAQCAtODYsMTAgKzEyNywyMiBAQCBfUEdfaW5pdCh2b2lkKQogCQkJCQkJCU5VTEwsCiAJ CQkJCQkJTlVMTCwKIAkJCQkJCQlOVUxMKTsKLQorCURlZmluZUN1c3RvbUludFZhcmlhYmxlKCJk ZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCIsCisJCQkJCQkJIlNldHMgdGhl IGFkdmlzb3J5IGxvY2sgSUQgdG8gYmUgbG9ja2VkL3VubG9ja2VkIGJlZm9yZSBzdGFydGluZyBl eGVjdXRpb24uIiwKKwkJCQkJCQkiWmVybyBkaXNhYmxlcyB0aGUgZGVsYXkuIiwKKwkJCQkJCQkm ZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCwKKwkJCQkJCQkwLAorCQkJCQkJCTAsIElOVF9NQVgsCisJ CQkJCQkJUEdDX1VTRVJTRVQsCisJCQkJCQkJMCwKKwkJCQkJCQlOVUxMLAorCQkJCQkJCU5VTEws CisJCQkJCQkJTlVMTCk7CiAJTWFya0dVQ1ByZWZpeFJlc2VydmVkKCJkZWxheV9leGVjdXRpb24i KTsKIAotCS8qIEluc3RhbGwgb3VyIGhvb2sgKi8KKwkvKiBJbnN0YWxsIG91ciBob29rcy4gKi8K IAlwcmV2X3BsYW5uZXJfaG9vayA9IHBsYW5uZXJfaG9vazsKIAlwbGFubmVyX2hvb2sgPSBkZWxh eV9leGVjdXRpb25fcGxhbm5lcjsKKwlwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayA9IEV4ZWN1dG9y U3RhcnRfaG9vazsKKwlFeGVjdXRvclN0YXJ0X2hvb2sgPSBkZWxheV9leGVjdXRpb25fRXhlY3V0 b3JTdGFydDsKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9u L2V4cGVjdGVkL2NhY2hlZC1wbGFuLXJlcGxhbi5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5 X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBsYW4ub3V0Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjBhYzZhMTdjMmIKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxhbi1yZXBs YW4ub3V0CkBAIC0wLDAgKzEsMTU2IEBACitQYXJzZWQgdGVzdCBzcGVjIHdpdGggMiBzZXNzaW9u cworCitzdGFydGluZyBwZXJtdXRhdGlvbjogczFwcmVwIHMybG9jayBzMWV4ZWMgczJkcm9waSBz MnVubG9jaworc3RlcCBzMXByZXA6IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmlj X3BsYW47CisJCSAgUFJFUEFSRSBxIEFTIFNFTEVDVCAqIEZST00gZm9vdiBXSEVSRSBhID0gJDE7 CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOworUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCitBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAKKyAg LT4gIEJpdG1hcCBIZWFwIFNjYW4gb24gZm9vMTEgZm9vXzEgICAgICAgCisgICAgICAgIFJlY2hl Y2sgQ29uZDogKGEgPSAkMSkgICAgICAgICAgICAgIAorICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gZm9vMTFfYV9pZHgKKyAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSAkMSkg ICAgICAgICAgCisoNiByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xv Y2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzogTE9BRCAnZGVsYXlfZXhlY3V0aW9uJzsK KwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgPSAxMjM0NTsK KwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcSAoMSk7IDx3YWl0aW5nIC4uLj4KK3N0 ZXAgczJkcm9waTogRFJPUCBJTkRFWCBmb28xMV9hOworc3RlcCBzMnVubG9jazogU0VMRUNUIHBn X2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV91bmxvY2sKKy0tLS0tLS0tLS0t LS0tLS0tLQordCAgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjOiA8Li4u IGNvbXBsZXRlZD4KK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hl ZFBsYW4gaXMgbm90IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgp OiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAg CisgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgIAorICAtPiAgU2VxIFNjYW4gb24gZm9vMTEg Zm9vXzEKKyAgICAgICAgRmlsdGVyOiAoYSA9ICQxKSAgICAgCisoNCByb3dzKQorCisKK3N0YXJ0 aW5nIHBlcm11dGF0aW9uOiBzMXByZXAyIHMybG9jayBzMWV4ZWMyIHMyZHJvcGkgczJ1bmxvY2sK K3N0ZXAgczFwcmVwMjogU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsK KwkJICBQUkVQQVJFIHEyIEFTIFNFTEVDVCAqIEZST00gZm9vdiBXSEVSRSBhID0gMTsKKwkJICBF WFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhl Y3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K0JpdG1hcCBIZWFwIFNjYW4gb24gZm9vMTEgZm9vICAgICAgICAgCisgIFJlY2hlY2sgQ29uZDog KGEgPSAxKSAgICAgICAgICAgICAgIAorICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTFf YV9pZHgKKyAgICAgICAgSW5kZXggQ29uZDogKGEgPSAxKSAgICAgICAgICAgCisoNCByb3dzKQor CitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNv cnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitz dGVwIHMxZXhlYzI6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1 dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMg T0ZGKSBFWEVDVVRFIHEyOyA8d2FpdGluZyAuLi4+CitzdGVwIHMyZHJvcGk6IERST1AgSU5ERVgg Zm9vMTFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUp OworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAg ICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzI6IDwuLi4gY29tcGxldGVkPgorczE6IE5PVElD RTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBub3QgdmFsaWQKK3Mx OiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQK K1FVRVJZIFBMQU4gICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitTZXEgU2NhbiBv biBmb28xMSBmb28KKyAgRmlsdGVyOiAoYSA9IDEpICAgIAorKDIgcm93cykKKworCitzdGFydGlu ZyBwZXJtdXRhdGlvbjogczFwcmVwMyBzMmxvY2sgczFleGVjMyBzMmRyb3BpIHMydW5sb2NrCitz dGVwIHMxcHJlcDM6IFNFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJ CSAgU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZSA9IG9uOworCQkgIFNFVCBlbmFi bGVfcGFydGl0aW9ud2lzZV9qb2luID0gb247CisJCSAgUFJFUEFSRSBxMyBBUyBTRUxFQ1QgdDEu YSwgY291bnQodDIuYikgRlJPTSBmb28gdDEsIGZvbyB0MiBXSEVSRSB0MS5hID0gdDIuYSBHUk9V UCBCWSAxOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxMzsKK3MxOiBOT1RJQ0U6 ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKyAgLT4gIEdyb3VwQWdncmVnYXRlICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgR3JvdXAgS2V5OiB0MS5hICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIE1lcmdlIEpv aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgTWVyZ2UgQ29uZDogKHQxLmEgPSB0Mi5hKSAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg ICAgICAgICAgICAgLT4gIEluZGV4IE9ubHkgU2NhbiB1c2luZyBmb28xMV9hX2lkeCBvbiBmb28x MSB0MSAKKyAgICAgICAgICAgICAgLT4gIE1hdGVyaWFsaXplICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNpbmcg Zm9vMTFfYV9pZHggb24gZm9vMTEgdDIKKyAgLT4gIEdyb3VwQWdncmVnYXRlICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgR3JvdXAgS2V5OiB0MV8x LmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIE1l cmdlIEpvaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAg ICAgICAgICAgTWVyZ2UgQ29uZDogKHQxXzEuYSA9IHQyXzEuYSkgICAgICAgICAgICAgICAgICAg ICAKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQxXzEuYSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IGZvbzIgdDFfMSAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgLT4gIFNvcnQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAg ICAgU29ydCBLZXk6IHQyXzEuYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzIgdDJfMSAgICAgICAgICAgICAgICAgICAK KygxOCByb3dzKQorCitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUp OworcGdfYWR2aXNvcnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIAor KDEgcm93KQorCitzdGVwIHMxZXhlYzM6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VU IGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQ TEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEzOyA8d2FpdGluZyAuLi4+CitzdGVwIHMyZHJvcGk6 IERST1AgSU5ERVggZm9vMTFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91 bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0tLS0tLS0KK3Qg ICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzM6IDwuLi4gY29tcGxldGVk PgorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBu b3QgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBs YW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitBcHBlbmQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLT4gIEdyb3VwQWdncmVn YXRlICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBHcm91cCBLZXk6IHQxLmEgICAg ICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ICBNZXJnZSBKb2luICAgICAgICAgICAgICAg ICAgICAgICAKKyAgICAgICAgICAgICAgTWVyZ2UgQ29uZDogKHQxLmEgPSB0Mi5hKSAgICAgIAor ICAgICAgICAgICAgICAtPiAgU29ydCAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg ICAgICAgICAgIFNvcnQgS2V5OiB0MS5hICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIGZvbzExIHQxIAorICAgICAgICAgICAgICAtPiAgU29ydCAgICAgICAg ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Mi5hICAgICAg ICAgICAKKyAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIGZvbzExIHQyIAorICAt PiAgR3JvdXBBZ2dyZWdhdGUgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEdyb3Vw IEtleTogdDFfMS5hICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIE1lcmdlIEpvaW4g ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBNZXJnZSBDb25kOiAodDFfMS5h ID0gdDJfMS5hKSAgCisgICAgICAgICAgICAgIC0+ICBTb3J0ICAgICAgICAgICAgICAgICAgICAg ICAKKyAgICAgICAgICAgICAgICAgICAgU29ydCBLZXk6IHQxXzEuYSAgICAgICAgIAorICAgICAg ICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMiB0MV8xCisgICAgICAgICAgICAgIC0+ ICBTb3J0ICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU29ydCBL ZXk6IHQyXzEuYSAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g Zm9vMiB0Ml8xCisoMjEgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxh eV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4tcmVwbGFuLnNwZWMgYi9zcmMvdGVzdC9tb2R1 bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1yZXBsYW4uc3BlYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zYzkyY2JkNWM2Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vc3BlY3MvY2FjaGVkLXBsYW4t cmVwbGFuLnNwZWMKQEAgLTAsMCArMSw2MSBAQAorIyBUZXN0IHRvIGNoZWNrIHRoYXQgaW52YWxp ZGF0aW9uIG9mIGNhY2hlZCBnZW5lcmljIHBsYW5zIGR1cmluZyBFeGVjdXRvclN0YXJ0CisjIGNv cnJlY3RseSB0cmlnZ2VycyByZXBsYW5uaW5nIGFuZCByZS1leGVjdXRpb24uCisKK3NldHVwCit7 CisgIENSRUFURSBUQUJMRSBmb28gKGEgaW50LCBiIHRleHQpIFBBUlRJVElPTiBCWSBMSVNUKGEp OworICBDUkVBVEUgVEFCTEUgZm9vMSBQQVJUSVRJT04gT0YgZm9vIEZPUiBWQUxVRVMgSU4gKDEp IFBBUlRJVElPTiBCWSBMSVNUIChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzExIFBBUlRJVElPTiBP RiBmb28xIEZPUiBWQUxVRVMgSU4gKDEpOworICBDUkVBVEUgSU5ERVggZm9vMTFfYSBPTiBmb28x IChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzIgUEFSVElUSU9OIE9GIGZvbyBGT1IgVkFMVUVTIElO ICgyKTsKKyAgQ1JFQVRFIFZJRVcgZm9vdiBBUyBTRUxFQ1QgKiBGUk9NIGZvbzsKK30KKwordGVh cmRvd24KK3sKKyAgRFJPUCBWSUVXIGZvb3Y7CisgIERST1AgVEFCTEUgZm9vOworfQorCitzZXNz aW9uICJzMSIKKyMgQXBwZW5kIHdpdGggcnVuLXRpbWUgcHJ1bmluZworc3RlcCAiczFwcmVwIiAg IHsgU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJF IHEgQVMgU0VMRUNUICogRlJPTSBmb292IFdIRVJFIGEgPSAkMTsKKwkJICBFWFBMQUlOIChDT1NU UyBPRkYpIEVYRUNVVEUgcSAoMSk7IH0KKworIyBubyBBcHBlbmQgY2FzZSAob25seSBvbmUgcGFy dGl0aW9uIHNlbGVjdGVkIGJ5IHRoZSBwbGFubmVyKQorc3RlcCAiczFwcmVwMiIgICB7IFNFVCBw bGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxMiBBUyBT RUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9IDE7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBF WEVDVVRFIHEyOyB9CisKKyMgQXBwZW5kIHdpdGggcGFydGl0aW9uLXdpc2Ugam9pbiBhZ2dyZWdh dGUgYW5kIGpvaW4gcGxhbnMgYXMgY2hpbGQgc3VicGxhbnMKK3N0ZXAgInMxcHJlcDMiICAgeyBT RVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFNFVCBlbmFibGVf cGFydGl0aW9ud2lzZV9hZ2dyZWdhdGUgPSBvbjsKKwkJICBTRVQgZW5hYmxlX3BhcnRpdGlvbndp c2Vfam9pbiA9IG9uOworCQkgIFBSRVBBUkUgcTMgQVMgU0VMRUNUIHQxLmEsIGNvdW50KHQyLmIp IEZST00gZm9vIHQxLCBmb28gdDIgV0hFUkUgdDEuYSA9IHQyLmEgR1JPVVAgQlkgMTsKKwkJICBF WFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTM7IH0KKworIyBFeGVjdXRlcyBhIGdlbmVyaWMg cGxhbgorc3RlcCAiczFleGVjIgl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRl bGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJ TiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEgKDEpOyB9CitzdGVwICJzMWV4ZWMyIgl7IExPQUQgJ2Rl bGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9s b2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyB9Citz dGVwICJzMWV4ZWMzIgl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4 ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09T VFMgT0ZGKSBFWEVDVVRFIHEzOyB9CisKK3Nlc3Npb24gInMyIgorc3RlcCAiczJsb2NrIgl7IFNF TEVDVCBwZ19hZHZpc29yeV9sb2NrKDEyMzQ1KTsgfQorc3RlcCAiczJ1bmxvY2siCXsgU0VMRUNU IHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7IH0KK3N0ZXAgInMyZHJvcGkiCXsgRFJPUCBJTkRF WCBmb28xMV9hOyB9CisKKyMgV2hpbGUgInMxZXhlYyIsIGV0Yy4gd2FpdCB0byBhY3F1aXJlIHRo ZSBhZHZpc29yeSBsb2NrLCAiczJkcm9wIiBpcyBhYmxlIHRvCisjIGRyb3AgdGhlIGluZGV4IGJl aW5nIHVzZWQgaW4gdGhlIGNhY2hlZCBwbGFuLiAgV2hlbiAiczFleGVjIiBpcyB0aGVuCisjIHVu YmxvY2tlZCBhbmQgaW5pdGlhbGl6ZXMgdGhlIGNhY2hlZCBwbGFuIGZvciBleGVjdXRpb24sIGl0 IGRldGVjdHMgdGhlCisjIGNvbmN1cnJlbnQgaW5kZXggZHJvcCBhbmQgY2F1c2VzIHRoZSBjYWNo ZWQgcGxhbiB0byBiZSBkaXNjYXJkZWQgYW5kCisjIHJlY3JlYXRlZCB3aXRob3V0IHRoZSBpbmRl eC4KK3Blcm11dGF0aW9uICJzMXByZXAiICJzMmxvY2siICJzMWV4ZWMiICJzMmRyb3BpIiAiczJ1 bmxvY2siCitwZXJtdXRhdGlvbiAiczFwcmVwMiIgInMybG9jayIgInMxZXhlYzIiICJzMmRyb3Bp IiAiczJ1bmxvY2siCitwZXJtdXRhdGlvbiAiczFwcmVwMyIgInMybG9jayIgInMxZXhlYzMiICJz MmRyb3BpIiAiczJ1bmxvY2siCi0tIAoyLjM1LjMKCg== --000000000000bcafc906029f0516 Content-Type: application/octet-stream; name="v45-0004-Set-inFromCl-to-false-in-child-table-RTEs.patch" Content-Disposition: attachment; filename="v45-0004-Set-inFromCl-to-false-in-child-table-RTEs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ll65goef2 RnJvbSBhZjI2NGU5MDFlNzYzNmJmMDgxYTY4MjU3NTQ0ZDkzM2IxNmQ3N2NhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFR1ZSwgNCBKdWwgMjAyMyAyMjozNjo0MyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ1 IDQvNl0gU2V0IGluRnJvbUNsIHRvIGZhbHNlIGluIGNoaWxkIHRhYmxlIFJURXMKClRoaXMgaXMg dG8gYWxsb3cgdGhlIGV4ZWN1dG9yIGJlIGFibGUgdG8gZGlzdGluZ3Vpc2ggdGFibGVzIHRoYXQg YXJlCmRpcmVjdGx5IG1lbnRpb25lZCBpbiB0aGUgcXVlcnkgZnJvbSB0aG9zZSB0aGF0IGdldCBh ZGRlZCB0byB0aGUKcXVlcnkgZHVyaW5nIHBsYW5uaW5nLiAgQSBzdWJzZXF1ZW50IGNvbW1pdCB3 aWxsIHRlYWNoIHRoZSBleGVjdXRvcgp0byBsb2NrIG9ubHkgdGhlIHRhYmxlcyBvZiB0aGUgbGF0 dGVyIGtpbmQgd2hlbiBleGVjdXRpbmcgYSBjYWNoZWQKcGxhbi4KCkRpc2N1c3Npb246IGh0dHBz Oi8vcG9zdGdyLmVzL20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtRemRlMG9ocEF5Y0xRdVY3b29pdEVF cGJLQjBPX21nQG1haWwuZ21haWwuY29tawotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGls L2luaGVyaXQuYyB8IDYgKysrKysrCiBzcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jICAgICAg ICAgfCA3ICsrKy0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICB8IDkg KysrKysrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvaW5oZXJpdC5jCmluZGV4IDk0ZGU4NTVhMjIuLjli YWMwN2JmNDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2luaGVyaXQu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9pbmhlcml0LmMKQEAgLTQ5Miw2ICs0 OTIsMTIgQEAgZXhwYW5kX3NpbmdsZV9pbmhlcml0YW5jZV9jaGlsZChQbGFubmVySW5mbyAqcm9v dCwgUmFuZ2VUYmxFbnRyeSAqcGFyZW50cnRlLAogCX0KIAllbHNlCiAJCWNoaWxkcnRlLT5pbmgg PSBmYWxzZTsKKwkvKgorCSAqIE1hcmsgY2hpbGQgdGFibGVzIGFzIG5vdCBiZWluZyBkaXJlY3Rs eSBtZW50aW9uZWQgaW4gdGhlIHF1ZXJ5LiAgVGhpcworCSAqIGFsbG93cyB0aGUgZXhlY3V0b3In cyBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKCkgdG8gY29udmVuaWVudGx5CisJICogaWRlbnRp ZnkgaXQgYXMgYW4gaW5oZXJpdGFuY2UgY2hpbGQgdGFibGUuCisJICovCisJY2hpbGRydGUtPmlu RnJvbUNsID0gZmFsc2U7CiAJY2hpbGRydGUtPnNlY3VyaXR5UXVhbHMgPSBOSUw7CiAKIAkvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3Bh cnNlci9hbmFseXplLmMKaW5kZXggNDAwNjYzMjA5Mi4uYmNmNmZjZGRlMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5h bHl6ZS5jCkBAIC0zMjY3LDEwICszMjY3LDkgQEAgdHJhbnNmb3JtTG9ja2luZ0NsYXVzZShQYXJz ZVN0YXRlICpwc3RhdGUsIFF1ZXJ5ICpxcnksIExvY2tpbmdDbGF1c2UgKmxjLAogCQkvKgogCQkg KiBMb2NrIGFsbCByZWd1bGFyIHRhYmxlcyB1c2VkIGluIHF1ZXJ5IGFuZCBpdHMgc3VicXVlcmll cy4gIFdlCiAJCSAqIGV4YW1pbmUgaW5Gcm9tQ2wgdG8gZXhjbHVkZSBhdXRvLWFkZGVkIFJURXMs IHBhcnRpY3VsYXJseSBORVcvT0xECi0JCSAqIGluIHJ1bGVzLiAgVGhpcyBpcyBhIGJpdCBvZiBh biBhYnVzZSBvZiBhIG1vc3RseS1vYnNvbGV0ZSBmbGFnLCBidXQKLQkJICogaXQncyBjb252ZW5p ZW50LiAgV2UgY2FuJ3QgcmVseSBvbiB0aGUgbmFtZXNwYWNlIG1lY2hhbmlzbSB0aGF0IGhhcwot CQkgKiBsYXJnZWx5IHJlcGxhY2VkIGluRnJvbUNsLCBzaW5jZSBmb3IgZXhhbXBsZSB3ZSBuZWVk IHRvIGxvY2sKLQkJICogYmFzZS1yZWxhdGlvbiBSVEVzIGV2ZW4gaWYgdGhleSBhcmUgbWFza2Vk IGJ5IHVwcGVyIGpvaW5zLgorCQkgKiBpbiBydWxlcy4gIFdlIGNhbid0IHJlbHkgb24gdGhlIG5h bWVzcGFjZSBtZWNoYW5pc20gc2luY2UgZm9yCisJCSAqIGV4YW1wbGUgd2UgbmVlZCB0byBsb2Nr IGJhc2UtcmVsYXRpb24gUlRFcyBldmVuIGlmIHRoZXkgYXJlIG1hc2tlZAorCQkgKiBieSB1cHBl ciBqb2lucy4KIAkJICovCiAJCWkgPSAwOwogCQlmb3JlYWNoKHJ0LCBxcnktPnJ0YWJsZSkKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaAppbmRleCBmZTAwM2RlZDUwLi43MmYyYjBjMDRmIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCkBAIC05OTQsMTEgKzk5NCwxNiBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRp b25DbWQKICAqCiAgKgkgIGluRnJvbUNsIG1hcmtzIHRob3NlIHJhbmdlIHZhcmlhYmxlcyB0aGF0 IGFyZSBsaXN0ZWQgaW4gdGhlIEZST00gY2xhdXNlLgogICoJICBJdCdzIGZhbHNlIGZvciBSVEVz IHRoYXQgYXJlIGFkZGVkIHRvIGEgcXVlcnkgYmVoaW5kIHRoZSBzY2VuZXMsIHN1Y2gKLSAqCSAg YXMgdGhlIE5FVyBhbmQgT0xEIHZhcmlhYmxlcyBmb3IgYSBydWxlLCBvciB0aGUgc3VicXVlcmll cyBvZiBhIFVOSU9OLgorICoJICBhcyB0aGUgTkVXIGFuZCBPTEQgdmFyaWFibGVzIGZvciBhIHJ1 bGUsIG9yIHRoZSBzdWJxdWVyaWVzIG9mIGEgVU5JT04sCisgKgkgIG9yIHRoZSBSVEVzIG9mIGlu aGVyaXRhbmNlIGNoaWxkIHRhYmxlcyB0aGF0IGFyZSBhZGRlZCBieSB0aGUgcGxhbm5lci4KICAq CSAgVGhpcyBmbGFnIGlzIG5vdCB1c2VkIGR1cmluZyBwYXJzaW5nIChleGNlcHQgaW4gdHJhbnNm b3JtTG9ja2luZ0NsYXVzZSwKICAqCSAgcS52Lik7IHRoZSBwYXJzZXIgbm93IHVzZXMgYSBzZXBh cmF0ZSAibmFtZXNwYWNlIiBkYXRhIHN0cnVjdHVyZSB0bwogICoJICBjb250cm9sIHZpc2liaWxp dHkuICBCdXQgaXQgaXMgbmVlZGVkIGJ5IHJ1bGV1dGlscy5jIHRvIGRldGVybWluZQotICoJICB3 aGV0aGVyIFJURXMgc2hvdWxkIGJlIHNob3duIGluIGRlY29tcGlsZWQgcXVlcmllcy4KKyAqCSAg d2hldGhlciBSVEVzIHNob3VsZCBiZSBzaG93biBpbiBkZWNvbXBpbGVkIHF1ZXJpZXMuICBJdCBp cyB1c2VkIGJ5IHRoZQorICoJICBleGVjdXRvciB0byBkZXRlcm1pbmUgdGhhdCBhIGdpdmVuIFJU RV9SRUxBVElPTiBlbnRyeSBiZWxvbmdzIHRvIGEgdGFibGUKKyAqCSAgZGlyZWN0bHkgbWVudGlv bmVkIGluIHRoZSBxdWVyeSBvciB0byBhIGNoaWxkIHRhYmxlIGFkZGVkIGJ5IHRoZSBwbGFubmVy LgorICoJICBJdCBuZWVkcyB0byBrbm93IHRoYXQgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBjaGls ZCB0YWJsZXMgaW4gYSBwbGFuIG5lZWQKKyAqCSAgdG8gYmUgbG9ja2VkLgogICoKICAqCSAgc2Vj dXJpdHlRdWFscyBpcyBhIGxpc3Qgb2Ygc2VjdXJpdHkgYmFycmllciBxdWFscyAoYm9vbGVhbiBl eHByZXNzaW9ucyksCiAgKgkgIHRvIGJlIHRlc3RlZCBpbiB0aGUgbGlzdGVkIG9yZGVyIGJlZm9y ZSByZXR1cm5pbmcgYSByb3cgZnJvbSB0aGUKLS0gCjIuMzUuMwoK --000000000000bcafc906029f0516 Content-Type: application/octet-stream; name="v45-0002-Refactoring-to-move-ExecutorStart-calls-to-be-ne.patch" Content-Disposition: attachment; filename="v45-0002-Refactoring-to-move-ExecutorStart-calls-to-be-ne.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ll65goeh4 RnJvbSAxYjI3ZmNiZGZlZDU0MjZmZjE5NzIxZDNlMTk2NjRhZGI4NGY5YzdkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFRodSwgMyBBdWcgMjAyMyAxMjozNDozMSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjQ1 IDIvNl0gUmVmYWN0b3JpbmcgdG8gbW92ZSBFeGVjdXRvclN0YXJ0KCkgY2FsbHMgdG8gYmUgbmVh cgogR2V0Q2FjaGVkUGxhbigpCgpBbiB1cGNvbWluZyBwYXRjaCB3aWxsIG1ha2UgRXhlY3V0b3JT dGFydCgpIGRldGVjdCB0aGUgaW52YWxpZGF0aW9uCm9mIGEgQ2FjaGVkUGxhbiB3aGVuIGluaXRp YWxpemluZyB0aGUgcGxhbiB0cmVlIGNvbnRhaW5lZCBpbiBpdC4gIEEKY2FsbGVyIG11c3QgcmV0 cnkgd2l0aCBhIG5ldyBDYWNoZWRQbGFuIHdoZW4gRXhlY3V0b3JTdGFydCgpIGRldGVjdHMKYW4g aW52YWxpZGF0aW9uLiAgSGF2aW5nIHRoZSBFeGVjdXRvclN0YXJ0KCkgaW4gdGhlIHNhbWUgb3Ig bmVhcmJ5CmFzIEdldENhY2hlZFBsYW4oKSBtYWtlcyBpdCBtb3JlIGNvbnZlbmllbnQgdG8gaW1w bGVtZW50IHRoZSByZXBsYW4KbG9vcC4KClRoZSBmb2xsb3dpbmcgc2l0ZXMgaGF2ZSB0aHVzIGJl ZW4gbW9kaWZpZWQ6CgoqIFRoZSBFeGVjdXRvclN0YXJ0KCkgY2FsbCBpbiBFeHBsYWluT25lUGxh bigpIGlzIG1vdmVkLCBhbG9uZyB3aXRoCiAgQ3JlYXRlUXVlcnlEZXNjKCksIGludG8gYSBuZXcg ZnVuY3Rpb24gRXhwbGFpblF1ZXJ5RGVzYygpLCB3aGljaCBpdHMKICBjYWxsZXJzIG5vdyBjYWxs IGJlZm9yZSBjYWxsaW5nIGl0LgoKKiBUaGUgRXhlY3V0b3JTdGFydCgpIGNhbGwgaW4gX1NQSV9w cXVlcnkoKSBpcyBtb3ZlZCB0byBpdHMgY2FsbGVyCiAgX1NQSV9leGVjdXRlX3BsYW4oKS4KCiog VGhlIEV4ZWN1dG9yU3RhcnQoKSBjYWxsIGluIFBvcnRhbFJ1bk11bHRpKCkgaXMgbW92ZWQgdG8K ICBQb3J0YWxTdGFydCgpLiAgVGhpcyByZXF1aXJlcyBhIG5ldyBMaXN0IGZpZWxkIGluIFBvcnRh bERhdGEgdG8KICBzdG9yZSB0aGUgUXVlcnlEZXNjcyBjcmVhdGVkIGluIFBvcnRhbFN0YXJ0KCkg YW5kIHRoZSBhc3NvY2lhdGVkCiAgbWVtb3J5IGNvbnRleHQgZmllbGQuICBPbmUgdW5pbnRlbmRl ZCBjb25zZXF1ZW5jZSBpcyB0aGF0IHRoZQogIENvbW1hbmRDb3VudGVySW5jcmVtZW50KCkgYmV0 d2VlbiBxdWVyaWVzIGluIFBPUlRBTF9NVUxUSV9RVUVSWQogIGNhc2VzIGlzIG5vdyBkb25lIGlu IHRoZSBsb29wIGluIFBvcnRhbFN0YXJ0KCkgYW5kIG5vdCBpbgogIFBvcnRhbFJ1bk11bHRpKCku ICBUaGF0IHN0aWxsIHNlZW1zIHRvIHdvcmsgYmVjYXVzZSB0aGUgU25hcHNob3QKICByZWdpc3Rl cmVkIGluIFF1ZXJ5RGVzYy9FU3RhdGUgaXMgdXBkYXRlZCB0byBhY2NvdW50IGZvciB0aGUKICBD Q0koKS4KLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgIHwgMTIxICsrKysr Ky0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMgICAgIHwgIDEyICstCiBzcmMv YmFja2VuZC9leGVjdXRvci9zcGkuYyAgICAgICAgIHwgIDI3ICstLQogc3JjL2JhY2tlbmQvdGNv cC9wcXVlcnkuYyAgICAgICAgICB8IDMxMSArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQog c3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxtZW0uYyB8ICAgOSArCiBzcmMvaW5jbHVkZS9j b21tYW5kcy9leHBsYWluLmggICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS91dGlscy9wb3J0YWwu aCAgICAgICAgIHwgICAyICsKIDcgZmlsZXMgY2hhbmdlZCwgMjUwIGluc2VydGlvbnMoKyksIDIz OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWlu LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKaW5kZXggODU3MGIxNGY2Mi4uNTlk NTdmOWMxMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbi5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwpAQCAtMzkzLDYgKzM5Myw3IEBAIEV4cGxh aW5PbmVRdWVyeShRdWVyeSAqcXVlcnksIGludCBjdXJzb3JPcHRpb25zLAogCWVsc2UKIAl7CiAJ CVBsYW5uZWRTdG10ICpwbGFuOworCQlRdWVyeURlc2MgICAqcXVlcnlEZXNjOwogCQlpbnN0cl90 aW1lCXBsYW5zdGFydCwKIAkJCQkJcGxhbmR1cmF0aW9uOwogCQlCdWZmZXJVc2FnZSBidWZ1c2Fn ZV9zdGFydCwKQEAgLTQxNSwxMiArNDE2LDc3IEBAIEV4cGxhaW5PbmVRdWVyeShRdWVyeSAqcXVl cnksIGludCBjdXJzb3JPcHRpb25zLAogCQkJQnVmZmVyVXNhZ2VBY2N1bURpZmYoJmJ1ZnVzYWdl LCAmcGdCdWZmZXJVc2FnZSwgJmJ1ZnVzYWdlX3N0YXJ0KTsKIAkJfQogCisJCXF1ZXJ5RGVzYyA9 IEV4cGxhaW5RdWVyeURlc2MocGxhbiwgcXVlcnlTdHJpbmcsIGludG8sIGVzLAorCQkJCQkJCQkJ IHBhcmFtcywgcXVlcnlFbnYpOworCQlBc3NlcnQocXVlcnlEZXNjKTsKKwogCQkvKiBydW4gaXQg KGlmIG5lZWRlZCkgYW5kIHByb2R1Y2Ugb3V0cHV0ICovCi0JCUV4cGxhaW5PbmVQbGFuKHBsYW4s IGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwkJRXhwbGFpbk9uZVBs YW4ocXVlcnlEZXNjLCBpbnRvLCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCiAJ CQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1c2FnZSA6IE5VTEwpKTsK IAl9CiB9CiAKKy8qCisgKiBFeHBsYWluUXVlcnlEZXNjCisgKgkJU2V0IHVwIFF1ZXJ5RGVzYyBm b3IgRVhQTEFJTmluZyBhIGdpdmVuIHBsYW4KKyAqLworUXVlcnlEZXNjICoKK0V4cGxhaW5RdWVy eURlc2MoUGxhbm5lZFN0bXQgKnN0bXQsCisJCQkJIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLCBJ bnRvQ2xhdXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAorCQkJCSBQYXJhbUxpc3RJbmZvIHBh cmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCit7CisJUXVlcnlEZXNjICAqcXVlcnlE ZXNjOworCURlc3RSZWNlaXZlciAqZGVzdDsKKwlpbnQJCQllZmxhZ3M7CisJaW50CQkJaW5zdHJ1 bWVudF9vcHRpb24gPSAwOworCisJLyoKKwkgKiBOb3JtYWxseSB3ZSBkaXNjYXJkIHRoZSBxdWVy eSdzIG91dHB1dCwgYnV0IGlmIGV4cGxhaW5pbmcgQ1JFQVRFIFRBQkxFCisJICogQVMsIHdlJ2Qg YmV0dGVyIHVzZSB0aGUgYXBwcm9wcmlhdGUgdHVwbGUgcmVjZWl2ZXIuCisJICovCisJaWYgKGlu dG8pCisJCWRlc3QgPSBDcmVhdGVJbnRvUmVsRGVzdFJlY2VpdmVyKGludG8pOworCWVsc2UKKwkJ ZGVzdCA9IE5vbmVfUmVjZWl2ZXI7CisKKwlpZiAoZXMtPmFuYWx5emUgJiYgZXMtPnRpbWluZykK KwkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9USU1FUjsKKwllbHNlIGlmIChlcy0+ YW5hbHl6ZSkKKwkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5TVFJVTUVOVF9ST1dTOworCisJaWYg KGVzLT5idWZmZXJzKQorCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX0JVRkZFUlM7 CisJaWYgKGVzLT53YWwpCisJCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RSVU1FTlRfV0FMOwor CisJLyoKKwkgKiBVc2UgYSBzbmFwc2hvdCB3aXRoIGFuIHVwZGF0ZWQgY29tbWFuZCBJRCB0byBl bnN1cmUgdGhpcyBxdWVyeSBzZWVzCisJICogcmVzdWx0cyBvZiBhbnkgcHJldmlvdXNseSBleGVj dXRlZCBxdWVyaWVzLgorCSAqLworCVB1c2hDb3BpZWRTbmFwc2hvdChHZXRBY3RpdmVTbmFwc2hv dCgpKTsKKwlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOworCisJLyogQ3JlYXRlIGEg UXVlcnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KKwlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2Mo c3RtdCwgcXVlcnlTdHJpbmcsCisJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRT bmFwc2hvdCwKKwkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwgaW5zdHJ1bWVudF9vcHRp b24pOworCisJLyogU2VsZWN0IGV4ZWN1dGlvbiBvcHRpb25zICovCisJaWYgKGVzLT5hbmFseXpl KQorCQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdzICov CisJZWxzZQorCQllZmxhZ3MgPSBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZOworCWlmIChlcy0+Z2Vu ZXJpYykKKwkJZWZsYWdzIHw9IEVYRUNfRkxBR19FWFBMQUlOX0dFTkVSSUM7CisJaWYgKGludG8p CisJCWVmbGFncyB8PSBHZXRJbnRvUmVsRUZsYWdzKGludG8pOworCisJLyogQ2FsbCBFeGVjdXRv clN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4gKi8KKwlFeGVjdXRvclN0 YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKworCXJldHVybiBxdWVyeURlc2M7Cit9CisKIC8qCiAg KiBFeHBsYWluT25lVXRpbGl0eSAtCiAgKgkgIHByaW50IG91dCB0aGUgZXhlY3V0aW9uIHBsYW4g Zm9yIG9uZSB1dGlsaXR5IHN0YXRlbWVudApAQCAtNTI0LDI5ICs1OTAsMTYgQEAgRXhwbGFpbk9u ZVV0aWxpdHkoTm9kZSAqdXRpbGl0eVN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0 ZSAqZXMsCiAgKiB0byBjYWxsIGl0LgogICovCiB2b2lkCi1FeHBsYWluT25lUGxhbihQbGFubmVk U3RtdCAqcGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCitF eHBsYWluT25lUGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKKwkJCSAgIEludG9DbGF1c2UgKmlu dG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCQkgICBjb25zdCBjaGFyICpxdWVyeVN0cmluZywgUGFy YW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwgY29u c3QgaW5zdHJfdGltZSAqcGxhbmR1cmF0aW9uLAogCQkJICAgY29uc3QgQnVmZmVyVXNhZ2UgKmJ1 ZnVzYWdlKQogewotCURlc3RSZWNlaXZlciAqZGVzdDsKLQlRdWVyeURlc2MgICpxdWVyeURlc2M7 CiAJaW5zdHJfdGltZQlzdGFydHRpbWU7CiAJZG91YmxlCQl0b3RhbHRpbWUgPSAwOwotCWludAkJ CWVmbGFnczsKLQlpbnQJCQlpbnN0cnVtZW50X29wdGlvbiA9IDA7CiAKLQlBc3NlcnQocGxhbm5l ZHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElMSVRZKTsKLQotCWlmIChlcy0+YW5hbHl6ZSAm JiBlcy0+dGltaW5nKQotCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5UX1RJTUVSOwot CWVsc2UgaWYgKGVzLT5hbmFseXplKQotCQlpbnN0cnVtZW50X29wdGlvbiB8PSBJTlNUUlVNRU5U X1JPV1M7Ci0KLQlpZiAoZXMtPmJ1ZmZlcnMpCi0JCWluc3RydW1lbnRfb3B0aW9uIHw9IElOU1RS VU1FTlRfQlVGRkVSUzsKLQlpZiAoZXMtPndhbCkKLQkJaW5zdHJ1bWVudF9vcHRpb24gfD0gSU5T VFJVTUVOVF9XQUw7CisJQXNzZXJ0KHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPmNvbW1hbmRUeXBl ICE9IENNRF9VVElMSVRZKTsKIAogCS8qCiAJICogV2UgYWx3YXlzIGNvbGxlY3QgdGltaW5nIGZv ciB0aGUgZW50aXJlIHN0YXRlbWVudCwgZXZlbiB3aGVuIG5vZGUtbGV2ZWwKQEAgLTU1NSw0MCAr NjA4LDYgQEAgRXhwbGFpbk9uZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xh dXNlICppbnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCSAqLwogCUlOU1RSX1RJTUVfU0VUX0NVUlJF TlQoc3RhcnR0aW1lKTsKIAotCS8qCi0JICogVXNlIGEgc25hcHNob3Qgd2l0aCBhbiB1cGRhdGVk IGNvbW1hbmQgSUQgdG8gZW5zdXJlIHRoaXMgcXVlcnkgc2VlcwotCSAqIHJlc3VsdHMgb2YgYW55 IHByZXZpb3VzbHkgZXhlY3V0ZWQgcXVlcmllcy4KLQkgKi8KLQlQdXNoQ29waWVkU25hcHNob3Qo R2V0QWN0aXZlU25hcHNob3QoKSk7Ci0JVXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQoKTsK LQotCS8qCi0JICogTm9ybWFsbHkgd2UgZGlzY2FyZCB0aGUgcXVlcnkncyBvdXRwdXQsIGJ1dCBp ZiBleHBsYWluaW5nIENSRUFURSBUQUJMRQotCSAqIEFTLCB3ZSdkIGJldHRlciB1c2UgdGhlIGFw cHJvcHJpYXRlIHR1cGxlIHJlY2VpdmVyLgotCSAqLwotCWlmIChpbnRvKQotCQlkZXN0ID0gQ3Jl YXRlSW50b1JlbERlc3RSZWNlaXZlcihpbnRvKTsKLQllbHNlCi0JCWRlc3QgPSBOb25lX1JlY2Vp dmVyOwotCi0JLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkgKi8KLQlxdWVyeURl c2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbm5lZHN0bXQsIHF1ZXJ5U3RyaW5nLAotCQkJCQkJCQlH ZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCi0JCQkJCQkJCWRlc3QsIHBhcmFt cywgcXVlcnlFbnYsIGluc3RydW1lbnRfb3B0aW9uKTsKLQotCS8qIFNlbGVjdCBleGVjdXRpb24g b3B0aW9ucyAqLwotCWlmIChlcy0+YW5hbHl6ZSkKLQkJZWZsYWdzID0gMDsJCQkJLyogZGVmYXVs dCBydW4tdG8tY29tcGxldGlvbiBmbGFncyAqLwotCWVsc2UKLQkJZWZsYWdzID0gRVhFQ19GTEFH X0VYUExBSU5fT05MWTsKLQlpZiAoZXMtPmdlbmVyaWMpCi0JCWVmbGFncyB8PSBFWEVDX0ZMQUdf RVhQTEFJTl9HRU5FUklDOwotCWlmIChpbnRvKQotCQllZmxhZ3MgfD0gR2V0SW50b1JlbEVGbGFn cyhpbnRvKTsKLQotCS8qIGNhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJlIHRoZSBwbGFuIGZv ciBleGVjdXRpb24gKi8KLQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKLQogCS8q IEV4ZWN1dGUgdGhlIHBsYW4gZm9yIHN0YXRpc3RpY3MgaWYgYXNrZWQgZm9yICovCiAJaWYgKGVz LT5hbmFseXplKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYwppbmRleCAxOGY3MDMxOWZjLi4xZTlh OThhZDZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCkBAIC02MzksOCArNjM5LDE2IEBAIEV4cGxh aW5FeGVjdXRlUXVlcnkoRXhlY3V0ZVN0bXQgKmV4ZWNzdG10LCBJbnRvQ2xhdXNlICppbnRvLCBF eHBsYWluU3RhdGUgKmVzLAogCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBsZmlyc3Rfbm9kZShQbGFu bmVkU3RtdCwgcCk7CiAKIAkJaWYgKHBzdG10LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSkK LQkJCUV4cGxhaW5PbmVQbGFuKHBzdG10LCBpbnRvLCBlcywgcXVlcnlfc3RyaW5nLCBwYXJhbUxJ LCBxdWVyeUVudiwKLQkJCQkJCSAgICZwbGFuZHVyYXRpb24sIChlcy0+YnVmZmVycyA/ICZidWZ1 c2FnZSA6IE5VTEwpKTsKKwkJeworCQkJUXVlcnlEZXNjICpxdWVyeURlc2M7CisKKwkJCXF1ZXJ5 RGVzYyA9IEV4cGxhaW5RdWVyeURlc2MocHN0bXQsIHF1ZXJ5U3RyaW5nLAorCQkJCQkJCQkJCSBp bnRvLCBlcywgcGFyYW1MSSwgcXVlcnlFbnYpOworCQkJQXNzZXJ0KHF1ZXJ5RGVzYyAhPSBOVUxM KTsKKwkJCUV4cGxhaW5PbmVQbGFuKHF1ZXJ5RGVzYywgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywg cGFyYW1MSSwKKwkJCQkJCSAgIHF1ZXJ5RW52LCAmcGxhbmR1cmF0aW9uLAorCQkJCQkJICAgKGVz LT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCkpOworCQl9CiAJCWVsc2UKIAkJCUV4cGxhaW5P bmVVdGlsaXR5KHBzdG10LT51dGlsaXR5U3RtdCwgaW50bywgZXMsIHF1ZXJ5X3N0cmluZywKIAkJ CQkJCQkgIHBhcmFtTEksIHF1ZXJ5RW52KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL3NwaS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5kZXggMzM5NzU2ODdiMy4u ZDM2Y2EzNWQzYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIGludAlf U1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25z ICpvcHRpb25zLAogc3RhdGljIFBhcmFtTGlzdEluZm8gX1NQSV9jb252ZXJ0X3BhcmFtcyhpbnQg bmFyZ3MsIE9pZCAqYXJndHlwZXMsCiAJCQkJCQkJCQkJIERhdHVtICpWYWx1ZXMsIGNvbnN0IGNo YXIgKk51bGxzKTsKIAotc3RhdGljIGludAlfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVz YywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KTsKK3N0YXRpYyBpbnQJX1NQSV9w cXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIHVpbnQ2NCB0Y291bnQpOwogCiBzdGF0aWMgdm9p ZCBfU1BJX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiAKQEAgLTI2NjEsNiArMjY2MSw3IEBA IF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlv bnMgKm9wdGlvbnMsCiAJCQl7CiAJCQkJUXVlcnlEZXNjICAqcWRlc2M7CiAJCQkJU25hcHNob3QJ c25hcDsKKwkJCQlpbnQJCQllZmxhZ3M7CiAKIAkJCQlpZiAoQWN0aXZlU25hcHNob3RTZXQoKSkK IAkJCQkJc25hcCA9IEdldEFjdGl2ZVNuYXBzaG90KCk7CkBAIC0yNjc0LDggKzI2NzUsMTcgQEAg X1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElFeGVjdXRlT3B0aW9u cyAqb3B0aW9ucywKIAkJCQkJCQkJCQlvcHRpb25zLT5wYXJhbXMsCiAJCQkJCQkJCQkJX1NQSV9j dXJyZW50LT5xdWVyeUVudiwKIAkJCQkJCQkJCQkwKTsKLQkJCQlyZXMgPSBfU1BJX3BxdWVyeShx ZGVzYywgZmlyZV90cmlnZ2VycywKLQkJCQkJCQkJICBjYW5TZXRUYWcgPyBvcHRpb25zLT50Y291 bnQgOiAwKTsKKworCQkJCS8qIFNlbGVjdCBleGVjdXRpb24gb3B0aW9ucyAqLworCQkJCWlmIChm aXJlX3RyaWdnZXJzKQorCQkJCQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21w bGV0aW9uIGZsYWdzICovCisJCQkJZWxzZQorCQkJCQllZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJUF9U UklHR0VSUzsKKworCQkJCUV4ZWN1dG9yU3RhcnQocWRlc2MsIGVmbGFncyk7CisKKwkJCQlyZXMg PSBfU1BJX3BxdWVyeShxZGVzYywgY2FuU2V0VGFnID8gb3B0aW9ucy0+dGNvdW50IDogMCk7CisK IAkJCQlGcmVlUXVlcnlEZXNjKHFkZXNjKTsKIAkJCX0KIAkJCWVsc2UKQEAgLTI4NTAsMTAgKzI4 NjAsOSBAQCBfU1BJX2NvbnZlcnRfcGFyYW1zKGludCBuYXJncywgT2lkICphcmd0eXBlcywKIH0K IAogc3RhdGljIGludAotX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmly ZV90cmlnZ2VycywgdWludDY0IHRjb3VudCkKK19TUElfcHF1ZXJ5KFF1ZXJ5RGVzYyAqcXVlcnlE ZXNjLCB1aW50NjQgdGNvdW50KQogewogCWludAkJCW9wZXJhdGlvbiA9IHF1ZXJ5RGVzYy0+b3Bl cmF0aW9uOwotCWludAkJCWVmbGFnczsKIAlpbnQJCQlyZXM7CiAKIAlzd2l0Y2ggKG9wZXJhdGlv bikKQEAgLTI4OTcsMTQgKzI5MDYsNiBAQCBfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVz YywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KQogCQlSZXNldFVzYWdlKCk7CiAj ZW5kaWYKIAotCS8qIFNlbGVjdCBleGVjdXRpb24gb3B0aW9ucyAqLwotCWlmIChmaXJlX3RyaWdn ZXJzKQotCQllZmxhZ3MgPSAwOwkJCQkvKiBkZWZhdWx0IHJ1bi10by1jb21wbGV0aW9uIGZsYWdz ICovCi0JZWxzZQotCQllZmxhZ3MgPSBFWEVDX0ZMQUdfU0tJUF9UUklHR0VSUzsKLQotCUV4ZWN1 dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOwotCiAJRXhlY3V0b3JSdW4ocXVlcnlEZXNjLCBG b3J3YXJkU2NhbkRpcmVjdGlvbiwgdGNvdW50LCB0cnVlKTsKIAogCV9TUElfY3VycmVudC0+cHJv Y2Vzc2VkID0gcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZDsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCmluZGV4 IDU1NjVmMjAwYzMuLjcwMTgwOGYzMDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcHF1 ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwpAQCAtMTksNiArMTksNyBAQAog CiAjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgi CisjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY2Rlc2MuaCIKICNpbmNsdWRlICJleGVjdXRvci90c3Rv cmVSZWNlaXZlci5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnX3RyYWNl LmgiCkBAIC0zNSwxMiArMzYsNiBAQAogUG9ydGFsCQlBY3RpdmVQb3J0YWwgPSBOVUxMOwogCiAK LXN0YXRpYyB2b2lkIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKLQkJCQkJCSBjb25z dCBjaGFyICpzb3VyY2VUZXh0LAotCQkJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLAotCQkJCQkJ IFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAotCQkJCQkJIERlc3RSZWNlaXZlciAqZGVzdCwK LQkJCQkJCSBRdWVyeUNvbXBsZXRpb24gKnFjKTsKIHN0YXRpYyB2b2lkIEZpbGxQb3J0YWxTdG9y ZShQb3J0YWwgcG9ydGFsLCBib29sIGlzVG9wTGV2ZWwpOwogc3RhdGljIHVpbnQ2NCBSdW5Gcm9t U3RvcmUoUG9ydGFsIHBvcnRhbCwgU2NhbkRpcmVjdGlvbiBkaXJlY3Rpb24sIHVpbnQ2NCBjb3Vu dCwKIAkJCQkJCSAgIERlc3RSZWNlaXZlciAqZGVzdCk7CkBAIC0xMTYsODYgKzExMSw2IEBAIEZy ZWVRdWVyeURlc2MoUXVlcnlEZXNjICpxZGVzYykKIH0KIAogCi0vKgotICogUHJvY2Vzc1F1ZXJ5 Ci0gKgkJRXhlY3V0ZSBhIHNpbmdsZSBwbGFubmFibGUgcXVlcnkgd2l0aGluIGEgUE9SVEFMX01V TFRJX1FVRVJZLAotICoJCVBPUlRBTF9PTkVfUkVUVVJOSU5HLCBvciBQT1JUQUxfT05FX01PRF9X SVRIIHBvcnRhbAotICoKLSAqCXBsYW46IHRoZSBwbGFuIHRyZWUgZm9yIHRoZSBxdWVyeQotICoJ c291cmNlVGV4dDogdGhlIHNvdXJjZSB0ZXh0IG9mIHRoZSBxdWVyeQotICoJcGFyYW1zOiBhbnkg cGFyYW1ldGVycyBuZWVkZWQKLSAqCWRlc3Q6IHdoZXJlIHRvIHNlbmQgcmVzdWx0cwotICoJcWM6 IHdoZXJlIHRvIHN0b3JlIHRoZSBjb21tYW5kIGNvbXBsZXRpb24gc3RhdHVzIGRhdGEuCi0gKgot ICogcWMgbWF5IGJlIE5VTEwgaWYgY2FsbGVyIGRvZXNuJ3Qgd2FudCBhIHN0YXR1cyBzdHJpbmcu Ci0gKgotICogTXVzdCBiZSBjYWxsZWQgaW4gYSBtZW1vcnkgY29udGV4dCB0aGF0IHdpbGwgYmUg cmVzZXQgb3IgZGVsZXRlZCBvbgotICogZXJyb3I7IG90aGVyd2lzZSB0aGUgZXhlY3V0b3IncyBt ZW1vcnkgdXNhZ2Ugd2lsbCBiZSBsZWFrZWQuCi0gKi8KLXN0YXRpYyB2b2lkCi1Qcm9jZXNzUXVl cnkoUGxhbm5lZFN0bXQgKnBsYW4sCi0JCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKLQkJCSBQ YXJhbUxpc3RJbmZvIHBhcmFtcywKLQkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKLQkJ CSBEZXN0UmVjZWl2ZXIgKmRlc3QsCi0JCQkgUXVlcnlDb21wbGV0aW9uICpxYykKLXsKLQlRdWVy eURlc2MgICpxdWVyeURlc2M7Ci0KLQkvKgotCSAqIENyZWF0ZSB0aGUgUXVlcnlEZXNjIG9iamVj dAotCSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBzb3VyY2VUZXh0LAot CQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCi0JCQkJCQkJCWRl c3QsIHBhcmFtcywgcXVlcnlFbnYsIDApOwotCi0JLyoKLQkgKiBDYWxsIEV4ZWN1dG9yU3RhcnQg dG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uCi0JICovCi0JRXhlY3V0b3JTdGFydChx dWVyeURlc2MsIDApOwotCi0JLyoKLQkgKiBSdW4gdGhlIHBsYW4gdG8gY29tcGxldGlvbi4KLQkg Ki8KLQlFeGVjdXRvclJ1bihxdWVyeURlc2MsIEZvcndhcmRTY2FuRGlyZWN0aW9uLCAwLCB0cnVl KTsKLQotCS8qCi0JICogQnVpbGQgY29tbWFuZCBjb21wbGV0aW9uIHN0YXR1cyBkYXRhLCBpZiBj YWxsZXIgd2FudHMgb25lLgotCSAqLwotCWlmIChxYykKLQl7Ci0JCXN3aXRjaCAocXVlcnlEZXNj LT5vcGVyYXRpb24pCi0JCXsKLQkJCWNhc2UgQ01EX1NFTEVDVDoKLQkJCQlTZXRRdWVyeUNvbXBs ZXRpb24ocWMsIENNRFRBR19TRUxFQ1QsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQp OwotCQkJCWJyZWFrOwotCQkJY2FzZSBDTURfSU5TRVJUOgotCQkJCVNldFF1ZXJ5Q29tcGxldGlv bihxYywgQ01EVEFHX0lOU0VSVCwgcXVlcnlEZXNjLT5lc3RhdGUtPmVzX3Byb2Nlc3NlZCk7Ci0J CQkJYnJlYWs7Ci0JCQljYXNlIENNRF9VUERBVEU6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFj LCBDTURUQUdfVVBEQVRFLCBxdWVyeURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQli cmVhazsKLQkJCWNhc2UgQ01EX0RFTEVURToKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENN RFRBR19ERUxFVEUsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFr OwotCQkJY2FzZSBDTURfTUVSR0U6Ci0JCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdf TUVSR0UsIHF1ZXJ5RGVzYy0+ZXN0YXRlLT5lc19wcm9jZXNzZWQpOwotCQkJCWJyZWFrOwotCQkJ ZGVmYXVsdDoKLQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19VTktOT1dOLCBxdWVy eURlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2VkKTsKLQkJCQlicmVhazsKLQkJfQotCX0KLQotCS8q Ci0JICogTm93LCB3ZSBjbG9zZSBkb3duIGFsbCB0aGUgc2NhbnMgYW5kIGZyZWUgYWxsb2NhdGVk IHJlc291cmNlcy4KLQkgKi8KLQlFeGVjdXRvckZpbmlzaChxdWVyeURlc2MpOwotCUV4ZWN1dG9y RW5kKHF1ZXJ5RGVzYyk7Ci0KLQlGcmVlUXVlcnlEZXNjKHF1ZXJ5RGVzYyk7Ci19Ci0KIC8qCiAg KiBDaG9vc2VQb3J0YWxTdHJhdGVneQogICoJCVNlbGVjdCBwb3J0YWwgZXhlY3V0aW9uIHN0cmF0 ZWd5IGdpdmVuIHRoZSBpbnRlbmRlZCBzdGF0ZW1lbnQgbGlzdC4KQEAgLTQzNSwxMCArMzUwLDkg QEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiB7CiAJ UG9ydGFsCQlzYXZlQWN0aXZlUG9ydGFsOwogCVJlc291cmNlT3duZXIgc2F2ZVJlc291cmNlT3du ZXI7Ci0JTWVtb3J5Q29udGV4dCBzYXZlUG9ydGFsQ29udGV4dDsKIAlNZW1vcnlDb250ZXh0IG9s ZENvbnRleHQ7CiAJUXVlcnlEZXNjICAqcXVlcnlEZXNjOwotCWludAkJCW15ZWZsYWdzOworCWlu dAkJCW15ZWZsYWdzID0gMDsKIAogCUFzc2VydChQb3J0YWxJc1ZhbGlkKHBvcnRhbCkpOwogCUFz c2VydChwb3J0YWwtPnN0YXR1cyA9PSBQT1JUQUxfREVGSU5FRCk7CkBAIC00NDgsMTUgKzM2Miwx MyBAQCBQb3J0YWxTdGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkg Ki8KIAlzYXZlQWN0aXZlUG9ydGFsID0gQWN0aXZlUG9ydGFsOwogCXNhdmVSZXNvdXJjZU93bmVy ID0gQ3VycmVudFJlc291cmNlT3duZXI7Ci0Jc2F2ZVBvcnRhbENvbnRleHQgPSBQb3J0YWxDb250 ZXh0OwogCVBHX1RSWSgpOwogCXsKIAkJQWN0aXZlUG9ydGFsID0gcG9ydGFsOwogCQlpZiAocG9y dGFsLT5yZXNvd25lcikKIAkJCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gcG9ydGFsLT5yZXNvd25l cjsKLQkJUG9ydGFsQ29udGV4dCA9IHBvcnRhbC0+cG9ydGFsQ29udGV4dDsKIAotCQlvbGRDb250 ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFBvcnRhbENvbnRleHQpOworCQlvbGRDb250ZXh0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBvcnRhbC0+cXVlcnlDb250ZXh0KTsKIAogCQkvKiBN dXN0IHJlbWVtYmVyIHBvcnRhbCBwYXJhbSBsaXN0LCBpZiBhbnkgKi8KIAkJcG9ydGFsLT5wb3J0 YWxQYXJhbXMgPSBwYXJhbXM7CkBAIC00NzIsNiArMzg0LDggQEAgUG9ydGFsU3RhcnQoUG9ydGFs IHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCXN3aXRjaCAocG9ydGFsLT5zdHJhdGVn eSkKIAkJewogCQkJY2FzZSBQT1JUQUxfT05FX1NFTEVDVDoKKwkJCWNhc2UgUE9SVEFMX09ORV9S RVRVUk5JTkc6CisJCQljYXNlIFBPUlRBTF9PTkVfTU9EX1dJVEg6CiAKIAkJCQkvKiBNdXN0IHNl dCBzbmFwc2hvdCBiZWZvcmUgc3RhcnRpbmcgZXhlY3V0b3IuICovCiAJCQkJaWYgKHNuYXBzaG90 KQpAQCAtNDg5LDggKzQwMyw4IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlz dEluZm8gcGFyYW1zLAogCQkJCSAqLwogCiAJCQkJLyoKLQkJCQkgKiBDcmVhdGUgUXVlcnlEZXNj IGluIHBvcnRhbCdzIGNvbnRleHQ7IGZvciB0aGUgbW9tZW50LCBzZXQKLQkJCQkgKiB0aGUgZGVz dGluYXRpb24gdG8gRGVzdE5vbmUuCisJCQkJICogQ3JlYXRlIFF1ZXJ5RGVzYyBpbiBwb3J0YWwt PnF1ZXJ5Q29udGV4dDsgZm9yIHRoZSBtb21lbnQsCisJCQkJICogc2V0IHRoZSBkZXN0aW5hdGlv biB0byBEZXN0Tm9uZS4KIAkJCQkgKi8KIAkJCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2Mo bGluaXRpYWxfbm9kZShQbGFubmVkU3RtdCwgcG9ydGFsLT5zdG10cyksCiAJCQkJCQkJCQkJCXBv cnRhbC0+c291cmNlVGV4dCwKQEAgLTUwMSwzMCArNDE1LDQxIEBAIFBvcnRhbFN0YXJ0KFBvcnRh bCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCQkJCQkJCQlwb3J0YWwtPnF1ZXJ5 RW52LAogCQkJCQkJCQkJCQkwKTsKIAorCQkJCS8qIFJlbWVtYmVyIGZvciBQb3J0YWxSdW5NdWx0 aSgpLiAqLworCQkJCWlmIChwb3J0YWwtPnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfUkVUVVJOSU5H IHx8CisJCQkJCXBvcnRhbC0+c3RyYXRlZ3kgPT0gUE9SVEFMX09ORV9NT0RfV0lUSCkKKwkJCQkJ cG9ydGFsLT5xZGVzY3MgPSBsaXN0X21ha2UxKHF1ZXJ5RGVzYyk7CisKIAkJCQkvKgogCQkJCSAq IElmIGl0J3MgYSBzY3JvbGxhYmxlIGN1cnNvciwgZXhlY3V0b3IgbmVlZHMgdG8gc3VwcG9ydAog CQkJCSAqIFJFV0lORCBhbmQgYmFja3dhcmRzIHNjYW4sIGFzIHdlbGwgYXMgd2hhdGV2ZXIgdGhl IGNhbGxlcgogCQkJCSAqIG1pZ2h0J3ZlIGFza2VkIGZvci4KIAkJCQkgKi8KLQkJCQlpZiAocG9y dGFsLT5jdXJzb3JPcHRpb25zICYgQ1VSU09SX09QVF9TQ1JPTEwpCisJCQkJaWYgKHBvcnRhbC0+ c3RyYXRlZ3kgPT0gUE9SVEFMX09ORV9TRUxFQ1QgJiYKKwkJCQkJKHBvcnRhbC0+Y3Vyc29yT3B0 aW9ucyAmIENVUlNPUl9PUFRfU0NST0xMKSkKIAkJCQkJbXllZmxhZ3MgPSBlZmxhZ3MgfCBFWEVD X0ZMQUdfUkVXSU5EIHwgRVhFQ19GTEFHX0JBQ0tXQVJEOwogCQkJCWVsc2UKIAkJCQkJbXllZmxh Z3MgPSBlZmxhZ3M7CiAKLQkJCQkvKgotCQkJCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVw YXJlIHRoZSBwbGFuIGZvciBleGVjdXRpb24KLQkJCQkgKi8KKwkJCQkvKiBDYWxsIEV4ZWN1dG9y U3RhcnQgdG8gcHJlcGFyZSB0aGUgcGxhbiBmb3IgZXhlY3V0aW9uLiAqLwogCQkJCUV4ZWN1dG9y U3RhcnQocXVlcnlEZXNjLCBteWVmbGFncyk7CiAKIAkJCQkvKgotCQkJCSAqIFRoaXMgdGVsbHMg UG9ydGFsQ2xlYW51cCB0byBzaHV0IGRvd24gdGhlIGV4ZWN1dG9yCisJCQkJICogVGhpcyB0ZWxs cyBQb3J0YWxDbGVhbnVwIHRvIHNodXQgZG93biB0aGUgZXhlY3V0b3IsIHRob3VnaAorCQkJCSAq IG5vdCBuZWVkZWQgZm9yIHF1ZXJpZXMgaGFuZGxlZCBieSBQb3J0YWxSdW5NdWx0aSgpLgogCQkJ CSAqLwotCQkJCXBvcnRhbC0+cXVlcnlEZXNjID0gcXVlcnlEZXNjOworCQkJCWlmIChwb3J0YWwt PnN0cmF0ZWd5ID09IFBPUlRBTF9PTkVfU0VMRUNUKQorCQkJCQlwb3J0YWwtPnF1ZXJ5RGVzYyA9 IHF1ZXJ5RGVzYzsKIAogCQkJCS8qCi0JCQkJICogUmVtZW1iZXIgdHVwbGUgZGVzY3JpcHRvciAo Y29tcHV0ZWQgYnkgRXhlY3V0b3JTdGFydCkKKwkJCQkgKiBSZW1lbWJlciB0dXBsZSBkZXNjcmlw dG9yIChjb21wdXRlZCBieSBFeGVjdXRvclN0YXJ0KSwKKwkJCQkgKiB0aG91Z2ggbWFrZSBpdCBp bmRlcGVuZGVudCBvZiBRdWVyeURlc2MgZm9yIHF1ZXJpZXMgaGFuZGxlZAorCQkJCSAqIGJ5IFBv cnRhbFJ1bk11bHRpKCkuCiAJCQkJICovCi0JCQkJcG9ydGFsLT50dXBEZXNjID0gcXVlcnlEZXNj LT50dXBEZXNjOworCQkJCWlmIChwb3J0YWwtPnN0cmF0ZWd5ICE9IFBPUlRBTF9PTkVfU0VMRUNU KQorCQkJCQlwb3J0YWwtPnR1cERlc2MgPSBDcmVhdGVUdXBsZURlc2NDb3B5KHF1ZXJ5RGVzYy0+ dHVwRGVzYyk7CisJCQkJZWxzZQorCQkJCQlwb3J0YWwtPnR1cERlc2MgPSBxdWVyeURlc2MtPnR1 cERlc2M7CiAKIAkJCQkvKgogCQkJCSAqIFJlc2V0IGN1cnNvciBwb3NpdGlvbiBkYXRhIHRvICJz dGFydCBvZiBxdWVyeSIKQEAgLTUzNiwyOSArNDYxLDYgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBv cnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCQkJUG9wQWN0aXZlU25hcHNob3QoKTsKIAkJ CQlicmVhazsKIAotCQkJY2FzZSBQT1JUQUxfT05FX1JFVFVSTklORzoKLQkJCWNhc2UgUE9SVEFM X09ORV9NT0RfV0lUSDoKLQotCQkJCS8qCi0JCQkJICogV2UgZG9uJ3Qgc3RhcnQgdGhlIGV4ZWN1 dG9yIHVudGlsIHdlIGFyZSB0b2xkIHRvIHJ1biB0aGUKLQkJCQkgKiBwb3J0YWwuICBXZSBkbyBu ZWVkIHRvIHNldCB1cCB0aGUgcmVzdWx0IHR1cGRlc2MuCi0JCQkJICovCi0JCQkJewotCQkJCQlQ bGFubmVkU3RtdCAqcHN0bXQ7Ci0KLQkJCQkJcHN0bXQgPSBQb3J0YWxHZXRQcmltYXJ5U3RtdChw b3J0YWwpOwotCQkJCQlwb3J0YWwtPnR1cERlc2MgPQotCQkJCQkJRXhlY0NsZWFuVHlwZUZyb21U TChwc3RtdC0+cGxhblRyZWUtPnRhcmdldGxpc3QpOwotCQkJCX0KLQotCQkJCS8qCi0JCQkJICog UmVzZXQgY3Vyc29yIHBvc2l0aW9uIGRhdGEgdG8gInN0YXJ0IG9mIHF1ZXJ5IgotCQkJCSAqLwot CQkJCXBvcnRhbC0+YXRTdGFydCA9IHRydWU7Ci0JCQkJcG9ydGFsLT5hdEVuZCA9IGZhbHNlOwkv KiBhbGxvdyBmZXRjaGVzICovCi0JCQkJcG9ydGFsLT5wb3J0YWxQb3MgPSAwOwotCQkJCWJyZWFr OwotCiAJCQljYXNlIFBPUlRBTF9VVElMX1NFTEVDVDoKIAogCQkJCS8qCkBAIC01ODEsNyArNDgz LDY5IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlzdEluZm8gcGFyYW1zLAog CQkJCWJyZWFrOwogCiAJCQljYXNlIFBPUlRBTF9NVUxUSV9RVUVSWToKLQkJCQkvKiBOZWVkIGRv IG5vdGhpbmcgbm93ICovCisJCQkJeworCQkJCQlMaXN0Q2VsbCAgICpsYzsKKwkJCQkJYm9vbAkJ Zmlyc3QgPSB0cnVlOworCisJCQkJCW15ZWZsYWdzID0gZWZsYWdzOworCQkJCQlmb3JlYWNoKGxj LCBwb3J0YWwtPnN0bXRzKQorCQkJCQl7CisJCQkJCQlQbGFubmVkU3RtdCAqcGxhbiA9IGxmaXJz dF9ub2RlKFBsYW5uZWRTdG10LCBsYyk7CisJCQkJCQlib29sCQlpc191dGlsaXR5ID0gKHBsYW4t PnV0aWxpdHlTdG10ICE9IE5VTEwpOworCisJCQkJCQkvKgorCQkJCQkJICogUHVzaCB0aGUgc25h cHNob3QgdG8gYmUgdXNlZCBieSB0aGUgZXhlY3V0b3IuCisJCQkJCQkgKi8KKwkJCQkJCWlmICgh aXNfdXRpbGl0eSkKKwkJCQkJCXsKKwkJCQkJCQkvKgorCQkJCQkJCSAqIE11c3QgY29weSB0aGUg c25hcHNob3QgZm9yIGFsbCBzdGF0ZW1lbnRzCisJCQkJCQkJICogZXhjZXB0IHRoZWMgZmlyc3Qg YXMgd2UnbGwgbmVlZCB0byB1cGRhdGUgaXRzCisJCQkJCQkJICogY29tbWFuZCBJRC4KKwkJCQkJ CQkgKi8KKwkJCQkJCQlpZiAoIWZpcnN0KQorCQkJCQkJCQlQdXNoQ29waWVkU25hcHNob3QoR2V0 VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKKwkJCQkJCQllbHNlCisJCQkJCQkJCVB1c2hBY3RpdmVT bmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQkJCQkJfQorCisJCQkJCQkvKgor CQkJCQkJICogRnJvbSB0aGUgMm5kIHN0YXRlbWVudCBvbndhcmRzLCB1cGRhdGUgdGhlIGNvbW1h bmQKKwkJCQkJCSAqIElEIGFuZCB0aGUgc25hcHNob3QgdG8gbWF0Y2guCisJCQkJCQkgKi8KKwkJ CQkJCWlmICghZmlyc3QpCisJCQkJCQl7CisJCQkJCQkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQo KTsKKwkJCQkJCQlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOworCQkJCQkJfQorCisJ CQkJCQlmaXJzdCA9IGZhbHNlOworCisJCQkJCQkvKgorCQkJCQkJICogQ3JlYXRlIHRoZSBRdWVy eURlc2MuICBEZXN0UmVjZWl2ZXIgd2lsbCBiZSBzZXQgaW4KKwkJCQkJCSAqIFBvcnRhbFJ1bk11 bHRpKCkgYmVmb3JlIGNhbGxpbmcgRXhlY3V0b3JSdW4oKS4KKwkJCQkJCSAqLworCQkJCQkJcXVl cnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sCisJCQkJCQkJCQkJCQkJcG9ydGFsLT5zb3Vy Y2VUZXh0LAorCQkJCQkJCQkJCQkJCSFpc191dGlsaXR5ID8KKwkJCQkJCQkJCQkJCQlHZXRBY3Rp dmVTbmFwc2hvdCgpIDoKKwkJCQkJCQkJCQkJCQlJbnZhbGlkU25hcHNob3QsCisJCQkJCQkJCQkJ CQkJSW52YWxpZFNuYXBzaG90LAorCQkJCQkJCQkJCQkJCU5VTEwsCisJCQkJCQkJCQkJCQkJcGFy YW1zLAorCQkJCQkJCQkJCQkJCXBvcnRhbC0+cXVlcnlFbnYsIDApOworCisJCQkJCQkvKiBSZW1l bWJlciBmb3IgUG9ydGFsUnVuTXVsdGkoKSAqLworCQkJCQkJcG9ydGFsLT5xZGVzY3MgPSBsYXBw ZW5kKHBvcnRhbC0+cWRlc2NzLCBxdWVyeURlc2MpOworCisJCQkJCQlpZiAoaXNfdXRpbGl0eSkK KwkJCQkJCQljb250aW51ZTsKKworCQkJCQkJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZs YWdzKTsKKwkJCQkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJCQkJCX0KKwkJCQl9CisKIAkJCQlw b3J0YWwtPnR1cERlc2MgPSBOVUxMOwogCQkJCWJyZWFrOwogCQl9CkBAIC01OTQsNyArNTU4LDYg QEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBvcnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAJCS8q IFJlc3RvcmUgZ2xvYmFsIHZhcnMgYW5kIHByb3BhZ2F0ZSBlcnJvciAqLwogCQlBY3RpdmVQb3J0 YWwgPSBzYXZlQWN0aXZlUG9ydGFsOwogCQlDdXJyZW50UmVzb3VyY2VPd25lciA9IHNhdmVSZXNv dXJjZU93bmVyOwotCQlQb3J0YWxDb250ZXh0ID0gc2F2ZVBvcnRhbENvbnRleHQ7CiAKIAkJUEdf UkVfVEhST1coKTsKIAl9CkBAIC02MDQsNyArNTY3LDYgQEAgUG9ydGFsU3RhcnQoUG9ydGFsIHBv cnRhbCwgUGFyYW1MaXN0SW5mbyBwYXJhbXMsCiAKIAlBY3RpdmVQb3J0YWwgPSBzYXZlQWN0aXZl UG9ydGFsOwogCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gc2F2ZVJlc291cmNlT3duZXI7Ci0JUG9y dGFsQ29udGV4dCA9IHNhdmVQb3J0YWxDb250ZXh0OwogCiAJcG9ydGFsLT5zdGF0dXMgPSBQT1JU QUxfUkVBRFk7CiB9CkBAIC0xMTkzLDcgKzExNTUsNyBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwg cG9ydGFsLAogCQkJICAgUXVlcnlDb21wbGV0aW9uICpxYykKIHsKIAlib29sCQlhY3RpdmVfc25h cHNob3Rfc2V0ID0gZmFsc2U7Ci0JTGlzdENlbGwgICAqc3RtdGxpc3RfaXRlbTsKKwlMaXN0Q2Vs bCAgICpxZGVzY19pdGVtOwogCiAJLyoKIAkgKiBJZiB0aGUgZGVzdGluYXRpb24gaXMgRGVzdFJl bW90ZUV4ZWN1dGUsIGNoYW5nZSB0byBEZXN0Tm9uZS4gIFRoZQpAQCAtMTIxNCw5ICsxMTc2LDEw IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJICogTG9vcCB0byBoYW5kbGUgdGhl IGluZGl2aWR1YWwgcXVlcmllcyBnZW5lcmF0ZWQgZnJvbSBhIHNpbmdsZSBwYXJzZXRyZWUKIAkg KiBieSBhbmFseXNpcyBhbmQgcmV3cml0ZS4KIAkgKi8KLQlmb3JlYWNoKHN0bXRsaXN0X2l0ZW0s IHBvcnRhbC0+c3RtdHMpCisJZm9yZWFjaChxZGVzY19pdGVtLCBwb3J0YWwtPnFkZXNjcykKIAl7 Ci0JCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2RlKFBsYW5uZWRTdG10LCBzdG10bGlz dF9pdGVtKTsKKwkJUXVlcnlEZXNjICpxZGVzYyA9IChRdWVyeURlc2MgKikgbGZpcnN0KHFkZXNj X2l0ZW0pOworCQlQbGFubmVkU3RtdCAqcHN0bXQgPSBxZGVzYy0+cGxhbm5lZHN0bXQ7CiAKIAkJ LyoKIAkJICogSWYgd2UgZ290IGEgY2FuY2VsIHNpZ25hbCBpbiBwcmlvciBjb21tYW5kLCBxdWl0 CkBAIC0xMjMzLDMzICsxMTk2LDI2IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJ CQlpZiAobG9nX2V4ZWN1dG9yX3N0YXRzKQogCQkJCVJlc2V0VXNhZ2UoKTsKIAotCQkJLyoKLQkJ CSAqIE11c3QgYWx3YXlzIGhhdmUgYSBzbmFwc2hvdCBmb3IgcGxhbm5hYmxlIHF1ZXJpZXMuICBG aXJzdCB0aW1lCi0JCQkgKiB0aHJvdWdoLCB0YWtlIGEgbmV3IHNuYXBzaG90OyBmb3Igc3Vic2Vx dWVudCBxdWVyaWVzIGluIHRoZQotCQkJICogc2FtZSBwb3J0YWwsIGp1c3QgdXBkYXRlIHRoZSBz bmFwc2hvdCdzIGNvcHkgb2YgdGhlIGNvbW1hbmQKLQkJCSAqIGNvdW50ZXIuCi0JCQkgKi8KKwkJ CS8qIFB1c2ggdGhlIHNuYXBzaG90IGZvciBwbGFubmFibGUgcXVlcmllcy4gKi8KIAkJCWlmICgh YWN0aXZlX3NuYXBzaG90X3NldCkKIAkJCXsKLQkJCQlTbmFwc2hvdAlzbmFwc2hvdCA9IEdldFRy YW5zYWN0aW9uU25hcHNob3QoKTsKKwkJCQlTbmFwc2hvdAlzbmFwc2hvdCA9IHFkZXNjLT5zbmFw c2hvdDsKIAotCQkJCS8qIElmIHRvbGQgdG8sIHJlZ2lzdGVyIHRoZSBzbmFwc2hvdCBhbmQgc2F2 ZSBpbiBwb3J0YWwgKi8KKwkJCQkvKgorCQkJCSAqIElmIHRvbGQgdG8sIHJlZ2lzdGVyIHRoZSBz bmFwc2hvdCBhbmQgc2F2ZSBpbiBwb3J0YWwKKwkJCQkgKgorCQkJCSAqIE5vdGUgdGhhdCB0aGUg Y29tbWFuZCBJRCBvZiBxZGVzYy0+c25hcHNob3QgZm9yIDJuZCBxdWVyeQorCQkJCSAqIG9ud2Fy ZHMgd291bGQgaGF2ZSBiZWVuIHVwZGF0ZWQgaW4gUG9ydGFsU3RhcnQoKSB0byBhY2NvdW50CisJ CQkJICogZm9yIENDSSgpIGRvbmUgYmV0d2VlbiBxdWVyaWVzLCBidXQgaXQncyBPSyB0aGF0IGhl cmUgd2UKKwkJCQkgKiBkb24ndCBsaWtld2lzZSB1cGRhdGUgaG9sZFNuYXBzaG90J3MgY29tbWFu ZCBJRC4KKwkJCQkgKi8KIAkJCQlpZiAoc2V0SG9sZFNuYXBzaG90KQogCQkJCXsKIAkJCQkJc25h cHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKIAkJCQkJcG9ydGFsLT5ob2xkU25h cHNob3QgPSBzbmFwc2hvdDsKIAkJCQl9CiAKLQkJCQkvKgotCQkJCSAqIFdlIGNhbid0IGhhdmUg dGhlIGhvbGRTbmFwc2hvdCBhbHNvIGJlIHRoZSBhY3RpdmUgb25lLAotCQkJCSAqIGJlY2F1c2Ug VXBkYXRlQWN0aXZlU25hcHNob3RDb21tYW5kSWQgd291bGQgY29tcGxhaW4uICBTbwotCQkJCSAq IGZvcmNlIGFuIGV4dHJhIHNuYXBzaG90IGNvcHkuICBQbGFpbiBQdXNoQWN0aXZlU25hcHNob3QK LQkJCQkgKiB3b3VsZCBoYXZlIGNvcGllZCB0aGUgdHJhbnNhY3Rpb24gc25hcHNob3QgYW55d2F5 LCBzbyB0aGlzCi0JCQkJICogb25seSBhZGRzIGEgY29weSBzdGVwIHdoZW4gc2V0SG9sZFNuYXBz aG90IGlzIHRydWUuICAoSXQncwotCQkJCSAqIG9rYXkgZm9yIHRoZSBjb21tYW5kIElEIG9mIHRo ZSBhY3RpdmUgc25hcHNob3QgdG8gZGl2ZXJnZQotCQkJCSAqIGZyb20gd2hhdCBob2xkU25hcHNo b3QgaGFzLikKLQkJCQkgKi8KLQkJCQlQdXNoQ29waWVkU25hcHNob3Qoc25hcHNob3QpOworCQkJ CVB1c2hBY3RpdmVTbmFwc2hvdChzbmFwc2hvdCk7CiAKIAkJCQkvKgogCQkJCSAqIEFzIGZvciBQ T1JUQUxfT05FX1NFTEVDVCBwb3J0YWxzLCBpdCBkb2VzIG5vdCBzZWVtCkBAIC0xMjY4LDI2ICsx MjI0LDM5IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAKIAkJCQlhY3RpdmVfc25h cHNob3Rfc2V0ID0gdHJ1ZTsKIAkJCX0KLQkJCWVsc2UKLQkJCQlVcGRhdGVBY3RpdmVTbmFwc2hv dENvbW1hbmRJZCgpOwogCisJCQkvKgorCQkJICogUnVuIHRoZSBwbGFuIHRvIGNvbXBsZXRpb24u CisJCQkgKi8KKwkJCXFkZXNjLT5kZXN0ID0gZGVzdDsKKwkJCUV4ZWN1dG9yUnVuKHFkZXNjLCBG b3J3YXJkU2NhbkRpcmVjdGlvbiwgMCwgdHJ1ZSk7CisKKwkJCS8qCisJCQkgKiBCdWlsZCBjb21t YW5kIGNvbXBsZXRpb24gc3RhdHVzIGRhdGEgaWYgbmVlZGVkLgorCQkJICovCiAJCQlpZiAocHN0 bXQtPmNhblNldFRhZykKIAkJCXsKLQkJCQkvKiBzdGF0ZW1lbnQgY2FuIHNldCB0YWcgc3RyaW5n ICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10LAotCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQs Ci0JCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAotCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52 LAotCQkJCQkJCSBkZXN0LCBxYyk7Ci0JCQl9Ci0JCQllbHNlCi0JCQl7Ci0JCQkJLyogc3RtdCBh ZGRlZCBieSByZXdyaXRlIGNhbm5vdCBzZXQgdGFnICovCi0JCQkJUHJvY2Vzc1F1ZXJ5KHBzdG10 LAotCQkJCQkJCSBwb3J0YWwtPnNvdXJjZVRleHQsCi0JCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFy YW1zLAotCQkJCQkJCSBwb3J0YWwtPnF1ZXJ5RW52LAotCQkJCQkJCSBhbHRkZXN0LCBOVUxMKTsK KwkJCQlzd2l0Y2ggKHFkZXNjLT5vcGVyYXRpb24pCisJCQkJeworCQkJCQljYXNlIENNRF9TRUxF Q1Q6CisJCQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19TRUxFQ1QsIHFkZXNjLT5l c3RhdGUtPmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBDTURfSU5TRVJU OgorCQkJCQkJU2V0UXVlcnlDb21wbGV0aW9uKHFjLCBDTURUQUdfSU5TRVJULCBxZGVzYy0+ZXN0 YXRlLT5lc19wcm9jZXNzZWQpOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgQ01EX1VQREFURToK KwkJCQkJCVNldFF1ZXJ5Q29tcGxldGlvbihxYywgQ01EVEFHX1VQREFURSwgcWRlc2MtPmVzdGF0 ZS0+ZXNfcHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIENNRF9ERUxFVEU6CisJ CQkJCQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19ERUxFVEUsIHFkZXNjLT5lc3RhdGUt PmVzX3Byb2Nlc3NlZCk7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBDTURfTUVSR0U6CisJCQkJ CQlTZXRRdWVyeUNvbXBsZXRpb24ocWMsIENNRFRBR19NRVJHRSwgcWRlc2MtPmVzdGF0ZS0+ZXNf cHJvY2Vzc2VkKTsKKwkJCQkJCWJyZWFrOworCQkJCQlkZWZhdWx0OgorCQkJCQkJU2V0UXVlcnlD b21wbGV0aW9uKHFjLCBDTURUQUdfVU5LTk9XTiwgcWRlc2MtPmVzdGF0ZS0+ZXNfcHJvY2Vzc2Vk KTsKKwkJCQkJCWJyZWFrOworCQkJCX0KIAkJCX0KIAogCQkJaWYgKGxvZ19leGVjdXRvcl9zdGF0 cykKQEAgLTEzNDIsMTIgKzEzMTEsMTIgQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRhbCwK IAkJaWYgKHBvcnRhbC0+c3RtdHMgPT0gTklMKQogCQkJYnJlYWs7CiAKLQkJLyoKLQkJICogSW5j cmVtZW50IGNvbW1hbmQgY291bnRlciBiZXR3ZWVuIHF1ZXJpZXMsIGJ1dCBub3QgYWZ0ZXIgdGhl IGxhc3QKLQkJICogb25lLgotCQkgKi8KLQkJaWYgKGxuZXh0KHBvcnRhbC0+c3RtdHMsIHN0bXRs aXN0X2l0ZW0pICE9IE5VTEwpCi0JCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCQlpZiAo cWRlc2MtPmVzdGF0ZSkKKwkJeworCQkJRXhlY3V0b3JGaW5pc2gocWRlc2MpOworCQkJRXhlY3V0 b3JFbmQocWRlc2MpOworCQl9CisJCUZyZWVRdWVyeURlc2MocWRlc2MpOwogCX0KIAogCS8qIFBv cCB0aGUgc25hcHNob3QgaWYgd2UgcHVzaGVkIG9uZS4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRh bG1lbS5jCmluZGV4IDA2ZGZhODVmMDQuLjBjYWQ0NTBkY2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9w b3J0YWxtZW0uYwpAQCAtMjAxLDYgKzIwMSwxMyBAQCBDcmVhdGVQb3J0YWwoY29uc3QgY2hhciAq bmFtZSwgYm9vbCBhbGxvd0R1cCwgYm9vbCBkdXBTaWxlbnQpCiAJcG9ydGFsLT5wb3J0YWxDb250 ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcFBvcnRhbENvbnRleHQsCiAJCQkJCQkJCQkJ CQkgICJQb3J0YWxDb250ZXh0IiwKIAkJCQkJCQkJCQkJCSAgQUxMT0NTRVRfU01BTExfU0laRVMp OworCS8qCisJICogaW5pdGlhbGl6ZSBwb3J0YWwncyBxdWVyeSBjb250ZXh0IHRvIHN0b3JlIFF1 ZXJ5RGVzY3MgY3JlYXRlZCBkdXJpbmcKKwkgKiBQb3J0YWxTdGFydCgpIGFuZCB0aGVuIHVzZWQg aW4gUG9ydGFsUnVuKCkuCisJICovCisJcG9ydGFsLT5xdWVyeUNvbnRleHQgPSBBbGxvY1NldENv bnRleHRDcmVhdGUoVG9wUG9ydGFsQ29udGV4dCwKKwkJCQkJCQkJCQkJCSAiUG9ydGFsUXVlcnlD b250ZXh0IiwKKwkJCQkJCQkJCQkJCSBBTExPQ1NFVF9TTUFMTF9TSVpFUyk7CiAKIAkvKiBjcmVh dGUgYSByZXNvdXJjZSBvd25lciBmb3IgdGhlIHBvcnRhbCAqLwogCXBvcnRhbC0+cmVzb3duZXIg PSBSZXNvdXJjZU93bmVyQ3JlYXRlKEN1clRyYW5zYWN0aW9uUmVzb3VyY2VPd25lciwKQEAgLTIy NCw2ICsyMzEsNyBAQCBDcmVhdGVQb3J0YWwoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBhbGxvd0R1 cCwgYm9vbCBkdXBTaWxlbnQpCiAKIAkvKiBmb3IgbmFtZWQgcG9ydGFscyByZXVzZSBwb3J0YWwt Pm5hbWUgY29weSAqLwogCU1lbW9yeUNvbnRleHRTZXRJZGVudGlmaWVyKHBvcnRhbC0+cG9ydGFs Q29udGV4dCwgcG9ydGFsLT5uYW1lWzBdID8gcG9ydGFsLT5uYW1lIDogIjx1bm5hbWVkPiIpOwor CU1lbW9yeUNvbnRleHRTZXRJZGVudGlmaWVyKHBvcnRhbC0+cXVlcnlDb250ZXh0LCBwb3J0YWwt Pm5hbWVbMF0gPyBwb3J0YWwtPm5hbWUgOiAiPHVubmFtZWQ+Iik7CiAKIAlyZXR1cm4gcG9ydGFs OwogfQpAQCAtNTk0LDYgKzYwMiw3IEBAIFBvcnRhbERyb3AoUG9ydGFsIHBvcnRhbCwgYm9vbCBp c1RvcENvbW1pdCkKIAogCS8qIHJlbGVhc2Ugc3Vic2lkaWFyeSBzdG9yYWdlICovCiAJTWVtb3J5 Q29udGV4dERlbGV0ZShwb3J0YWwtPnBvcnRhbENvbnRleHQpOworCU1lbW9yeUNvbnRleHREZWxl dGUocG9ydGFsLT5xdWVyeUNvbnRleHQpOwogCiAJLyogcmVsZWFzZSBwb3J0YWwgc3RydWN0IChp dCdzIGluIFRvcFBvcnRhbENvbnRleHQpICovCiAJcGZyZWUocG9ydGFsKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4 cGxhaW4uaAppbmRleCAzZDNlNjMyYTBjLi4wOGVhODUyYjY1IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFp bi5oCkBAIC04OCw3ICs4OCwxMSBAQCBleHRlcm4gdm9pZCBFeHBsYWluT25lVXRpbGl0eShOb2Rl ICp1dGlsaXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywKIAkJCQkJCQkgIEV4cGxhaW5TdGF0ZSAq ZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCQkJCQkJCSAgUGFyYW1MaXN0SW5mbyBwYXJh bXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIAotZXh0ZXJuIHZvaWQgRXhwbGFpbk9u ZVBsYW4oUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10LCBJbnRvQ2xhdXNlICppbnRvLAorZXh0ZXJu IFF1ZXJ5RGVzYyAqRXhwbGFpblF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqc3RtdCwKKwkJCQkgY29u c3QgY2hhciAqcXVlcnlTdHJpbmcsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMs CisJCQkJIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7 CitleHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKKwkJCQkJ CSAgIEludG9DbGF1c2UgKmludG8sCiAJCQkJCQkgICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBj aGFyICpxdWVyeVN0cmluZywKIAkJCQkJCSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVu dmlyb25tZW50ICpxdWVyeUVudiwKIAkJCQkJCSAgIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJh dGlvbiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oIGIvc3JjL2luY2x1 ZGUvdXRpbHMvcG9ydGFsLmgKaW5kZXggYWEwOGIxZTBmYy4uYWYwNTllMzBmOCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9y dGFsLmgKQEAgLTEzOCw2ICsxMzgsOCBAQCB0eXBlZGVmIHN0cnVjdCBQb3J0YWxEYXRhCiAJUXVl cnlDb21wbGV0aW9uIHFjOwkJCS8qIGNvbW1hbmQgY29tcGxldGlvbiBkYXRhIGZvciBleGVjdXRl ZCBxdWVyeSAqLwogCUxpc3QJICAgKnN0bXRzOwkJCS8qIGxpc3Qgb2YgUGxhbm5lZFN0bXRzICov CiAJQ2FjaGVkUGxhbiAqY3BsYW47CQkJLyogQ2FjaGVkUGxhbiwgaWYgc3RtdHMgYXJlIGZyb20g b25lICovCisJTGlzdAkgICAqcWRlc2NzOwkJCS8qIGxpc3Qgb2YgUXVlcnlEZXNjcyAqLworCU1l bW9yeUNvbnRleHQgcXVlcnlDb250ZXh0OwkvKiBtZW1vcnkgZm9yIFF1ZXJ5RGVzY3MgYW5kIGNo aWxkcmVuICovCiAKIAlQYXJhbUxpc3RJbmZvIHBvcnRhbFBhcmFtczsgLyogcGFyYW1zIHRvIHBh c3MgdG8gcXVlcnkgKi8KIAlRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudjsgLyogZW52aXJvbm1l bnQgZm9yIHF1ZXJ5ICovCi0tIAoyLjM1LjMKCg== --000000000000bcafc906029f0516 Content-Type: application/octet-stream; name="v45-0001-Add-support-for-allowing-ExecInitNode-to-detect-.patch" Content-Disposition: attachment; filename="v45-0001-Add-support-for-allowing-ExecInitNode-to-detect-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ll65goei5 RnJvbSBkZGFhNzYxZTk2Y2Q0YjM0MDM1ZWRkNDBmNmJjMTdiOTUzNTc0NDk2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IEZyaSwgMTEgQXVnIDIwMjMgMTQ6MDk6MjkgKzA5MDAKU3ViamVjdDogW1BBVENIIHY0 NSAxLzZdIEFkZCBzdXBwb3J0IGZvciBhbGxvd2luZyBFeGVjSW5pdE5vZGUgdG8gZGV0ZWN0CiBD YWNoZWRQbGFuIGludmFsaWRhdGlvbgoKVGhpcyBtZWFucyBFeGVjSW5pdE5vZGUoKSB3aWxsIGNo ZWNrIGZvciBDYWNoZWRQbGFuIGludmFsaWRhdGlvbiBhdAp2YXJpb3VzIHBvaW50cyAoYWZ0ZXIg bG9ja2luZyB0YWJsZXMsIGluaXRpYWxpemluZyBjaGlsZCBwbGFucywgZXRjLikKYW5kIHJldHVy biBlaXRoZXIgYSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQgcGxhbnN0YXRlIG5vZGUgb3IgTlVMTCBp ZgpubyBjbGVhbnVwIGlzIG5lY2Vzc2FyeS4KCkV4ZWNFbmROb2RlKCkgc3Vicm91dGluZXMgbm93 IGFsd2F5cyBjaGVjayBhIHBvaW50ZXIgZm9yIG51bGxuZXNzCmJlZm9yZSBjYWxsaW5nIGNsZWFu dXAgb24gaXQuCi0tLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgICAgICAg ICAgIHwgIDQgKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAg ICAgIHwgMjMgKysrKysrKysrKysrKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cnRpdGlvbi5jICAgICAgICAgIHwgIDQgKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1By b2Nub2RlLmMgICAgICAgICAgIHwgMTIgKysrKysrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1V0aWxzLmMgICAgICAgICAgICAgIHwgIDIgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVBZ2cuYyAgICAgICAgICAgICAgICB8IDE1ICsrKystLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUFwcGVuZC5jICAgICAgICAgICAgIHwgMTAgKysrKystLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYyAgICAgICAgICB8ICA3ICsrKy0tLQogc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgICAgIHwgMTkgKysrKystLS0tLS0tLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMgICAgfCAxMCArKy0t LS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMgICAgICAgICAgIHwgIDcg KysrLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3Rlc2Nhbi5jICAgICAgICAgICAgfCAx MiAtLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMgICAgICAgICAg ICAgfCAxNiArKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRm9yZWlnbnNj YW4uYyAgICAgICAgfCAxMiArKysrLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRnVu Y3Rpb25zY2FuLmMgICAgICAgfCAxMiAtLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlR2F0aGVyLmMgICAgICAgICAgICAgfCAgNiArKy0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUdhdGhlck1lcmdlLmMgICAgICAgIHwgIDUgKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUdyb3VwLmMgICAgICAgICAgICAgIHwgIDcgKystLS0tCiBzcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlSGFzaC5jICAgICAgICAgICAgICAgfCAgNyArKy0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVIYXNoam9pbi5jICAgICAgICAgICB8IDE2ICsrKystLS0tLS0tLS0KIHNyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYyAgICB8IDEwICsrLS0tLS0tCiBzcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5jICAgICAgfCAyMCArKysrLS0tLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgICAgICAgICAgfCAy MCArKysrLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTGltaXQuYyAgICAg ICAgICAgICAgfCAgMyArKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jICAg ICAgICAgICB8ICAyICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWF0ZXJpYWwuYyAgICAg ICAgICAgfCAgNyArKy0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMgICAg ICAgICAgICB8IDEyICsrKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFw cGVuZC5jICAgICAgICB8ICA2ICsrKystCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vq b2luLmMgICAgICAgICAgfCAxNiArKysrLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTW9kaWZ5VGFibGUuYyAgICAgICAgfCAxOCArKysrKystLS0tLS0tLS0KIC4uLi9leGVjdXRv ci9ub2RlTmFtZWR0dXBsZXN0b3Jlc2Nhbi5jICAgICAgICB8IDExIC0tLS0tLS0tLQogc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMgICAgICAgICAgIHwgMTUgKysrKy0tLS0tLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jICAgICAgICAgfCAxMiArKy0t LS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVjdXJzaXZldW5pb24uYyAgICAgfCAx MCArKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlc3VsdC5jICAgICAgICAgICAg IHwgMTIgKystLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBsZXNjYW4uYyAg ICAgICAgIHwgMTYgKysrLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNj YW4uYyAgICAgICAgICAgIHwgMTQgKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTZXRPcC5jICAgICAgICAgICAgICB8ICA2ICsrLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlU29ydC5jICAgICAgICAgICAgICAgfCAgOSArKy0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jICAgICAgIHwgMTQgKystLS0tLS0tLS0KIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMgICAgICB8IDEyIC0tLS0tLS0tLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYyAgICAgICB8IDE0ICsrLS0tLS0tLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jICAgICAgICAgICAgfCAxNCArKy0t LS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jICAgICAgICAgICAgIHwg IDcgKystLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5jICAgICAgICAg fCAxMyAtLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jICAg ICAgICAgIHwgMTMgKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXb3JrdGFi bGVzY2FuLmMgICAgICB8IDExIC0tLS0tLS0tLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0 b3IuaCAgICAgICAgICAgICAgIHwgMTIgKysrKysrKysrKwogc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggICAgICAgICAgICAgICAgIHwgIDIgKysKIHNyYy9pbmNsdWRlL3V0aWxzL3BsYW5j YWNoZS5oICAgICAgICAgICAgICAgICB8IDE0ICsrKysrKysrKysrCiA1MCBmaWxlcyBjaGFuZ2Vk LCAxOTEgaW5zZXJ0aW9ucygrKSwgMzYwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRy aWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9z dGdyZXNfZmR3LmMKaW5kZXggYzVjYWRhNTVmYi4uMWVkZDRjM2YxNyAxMDA2NDQKLS0tIGEvY29u dHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19m ZHcvcG9zdGdyZXNfZmR3LmMKQEAgLTI2NTgsNyArMjY1OCwxMSBAQCBwb3N0Z3Jlc0JlZ2luRGly ZWN0TW9kaWZ5KEZvcmVpZ25TY2FuU3RhdGUgKm5vZGUsIGludCBlZmxhZ3MpCiAJLyogR2V0IGlu Zm8gYWJvdXQgZm9yZWlnbiB0YWJsZS4gKi8KIAlydGluZGV4ID0gbm9kZS0+cmVzdWx0UmVsSW5m by0+cmlfUmFuZ2VUYWJsZUluZGV4OwogCWlmIChmc3BsYW4tPnNjYW4uc2NhbnJlbGlkID09IDAp CisJewogCQlkbXN0YXRlLT5yZWwgPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIHJ0aW5k ZXgsIGVmbGFncyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1 cm47CisJfQogCWVsc2UKIAkJZG1zdGF0ZS0+cmVsID0gbm9kZS0+c3Muc3NfY3VycmVudFJlbGF0 aW9uOwogCXRhYmxlID0gR2V0Rm9yZWlnblRhYmxlKFJlbGF0aW9uR2V0UmVsaWQoZG1zdGF0ZS0+ cmVsKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCA0YzVhN2JiZjYyLi4xYTg0OGIxYzIw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTgzOSw3ICs4MzksNyBAQCBJbml0UGxhbihR dWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAlQbGFuCSAgICpwbGFuID0gcGxhbm5l ZHN0bXQtPnBsYW5UcmVlOwogCUxpc3QJICAgKnJhbmdlVGFibGUgPSBwbGFubmVkc3RtdC0+cnRh YmxlOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gcXVlcnlEZXNjLT5lc3RhdGU7Ci0JUGxhblN0YXRl ICAqcGxhbnN0YXRlOworCVBsYW5TdGF0ZSAgKnBsYW5zdGF0ZSA9IE5VTEw7CiAJVHVwbGVEZXNj CXR1cFR5cGU7CiAJTGlzdENlbGwgICAqbDsKIAlpbnQJCQlpOwpAQCAtODU1LDYgKzg1NSw3IEBA IEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCUV4ZWNJbml0UmFu Z2VUYWJsZShlc3RhdGUsIHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MpOwogCiAJ ZXN0YXRlLT5lc19wbGFubmVkc3RtdCA9IHBsYW5uZWRzdG10OworCWVzdGF0ZS0+ZXNfY2FjaGVk cGxhbiA9IE5VTEw7CiAKIAkvKgogCSAqIE5leHQsIGJ1aWxkIHRoZSBFeGVjUm93TWFyayBhcnJh eSBmcm9tIHRoZSBQbGFuUm93TWFyayhzKSwgaWYgYW55LgpAQCAtODg2LDYgKzg4Nyw4IEBAIElu aXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJCWNhc2UgUk9XX01B UktfS0VZU0hBUkU6CiAJCQkJY2FzZSBST1dfTUFSS19SRUZFUkVOQ0U6CiAJCQkJCXJlbGF0aW9u ID0gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihlc3RhdGUsIHJjLT5ydGkpOworCQkJCQlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJCQkJZ290byBwbGFuX2luaXRfc3VzcGVu ZGVkOwogCQkJCQlicmVhazsKIAkJCQljYXNlIFJPV19NQVJLX0NPUFk6CiAJCQkJCS8qIG5vIHBo eXNpY2FsIHRhYmxlIGFjY2VzcyBpcyByZXF1aXJlZCAqLwpAQCAtOTUzLDkgKzk1NiwxMCBAQCBJ bml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCXNwX2VmbGFncyB8 PSBFWEVDX0ZMQUdfUkVXSU5EOwogCiAJCXN1YnBsYW5zdGF0ZSA9IEV4ZWNJbml0Tm9kZShzdWJw bGFuLCBlc3RhdGUsIHNwX2VmbGFncyk7Ci0KIAkJZXN0YXRlLT5lc19zdWJwbGFuc3RhdGVzID0g bGFwcGVuZChlc3RhdGUtPmVzX3N1YnBsYW5zdGF0ZXMsCiAJCQkJCQkJCQkJICAgc3VicGxhbnN0 YXRlKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCWdvdG8gcGxhbl9p bml0X3N1c3BlbmRlZDsKIAogCQlpKys7CiAJfQpAQCAtOTY2LDYgKzk3MCw4IEBAIEluaXRQbGFu KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCSAqIHByb2Nlc3NpbmcgdHVwbGVz LgogCSAqLwogCXBsYW5zdGF0ZSA9IEV4ZWNJbml0Tm9kZShwbGFuLCBlc3RhdGUsIGVmbGFncyk7 CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJZ290byBwbGFuX2luaXRfc3Vz cGVuZGVkOwogCiAJLyoKIAkgKiBHZXQgdGhlIHR1cGxlIGRlc2NyaXB0b3IgZGVzY3JpYmluZyB0 aGUgdHlwZSBvZiB0dXBsZXMgdG8gcmV0dXJuLgpAQCAtMTAwOCw2ICsxMDE0LDE1IEBAIEluaXRQ bGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCX0KIAogCXF1ZXJ5RGVzYy0+ dHVwRGVzYyA9IHR1cFR5cGU7CisJQXNzZXJ0KHBsYW5zdGF0ZSAhPSBOVUxMKTsKKwlxdWVyeURl c2MtPnBsYW5zdGF0ZSA9IHBsYW5zdGF0ZTsKKwlyZXR1cm47CisKK3BsYW5faW5pdF9zdXNwZW5k ZWQ6CisJLyoKKwkgKiBQbGFuIGluaXRpYWxpemF0aW9uIGZhaWxlZC4gIE1hcmsgUXVlcnlEZXNj IGFzIHN1Y2guICBFeGVjRW5kUGxhbigpCisJICogd2lsbCBjbGVhbiB1cCBpbml0aWFsaXplZCBw bGFuIG5vZGVzIGZyb20gZXN0YXRlLT5lc19wbGFuc3RhdGVfbm9kZXMuCisJICovCiAJcXVlcnlE ZXNjLT5wbGFuc3RhdGUgPSBwbGFuc3RhdGU7CiB9CiAKQEAgLTMwMTAsNiArMzAyNSwxMCBAQCBF dmFsUGxhblF1YWxFbmQoRVBRU3RhdGUgKmVwcXN0YXRlKQogCU1lbW9yeUNvbnRleHQgb2xkY29u dGV4dDsKIAlMaXN0Q2VsbCAgICpsOwogCisJLyogTm90aGluZyB0byBkbyBpZiBFdmFsUGxhblF1 YWxJbml0KCkgd2Fzbid0IGRvbmUgdG8gYmVnaW4gd2l0aC4gKi8KKwlpZiAoZXBxc3RhdGUtPnBh cmVudGVzdGF0ZSA9PSBOVUxMKQorCQlyZXR1cm47CisKIAlydHNpemUgPSBlcHFzdGF0ZS0+cGFy ZW50ZXN0YXRlLT5lc19yYW5nZV90YWJsZV9zaXplOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uYwppbmRleCBlYjhhODdmZDYzLi5lODg0NTUzNjhjIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0xODAxLDYgKzE4MDEsOCBAQCBFeGVjSW5pdFBhcnRp dGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAKIAkvKiBDcmVhdGUgdGhlIHdvcmtp bmcgZGF0YSBzdHJ1Y3R1cmUgZm9yIHBydW5pbmcgKi8KIAlwcnVuZXN0YXRlID0gQ3JlYXRlUGFy dGl0aW9uUHJ1bmVTdGF0ZShwbGFuc3RhdGUsIHBydW5laW5mbyk7CisJaWYgKCFFeGVjUGxhblN0 aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAkvKgogCSAqIFBlcmZvcm0gYW4g aW5pdGlhbCBwYXJ0aXRpb24gcHJ1bmUgcGFzcywgaWYgcmVxdWlyZWQuCkBAIC0xOTI3LDYgKzE5 MjksOCBAQCBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQ YXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIAkJCSAqIGR1cmF0aW9uIG9mIHRoaXMgZXhl Y3V0b3IgcnVuLgogCQkJICovCiAJCQlwYXJ0cmVsID0gRXhlY0dldFJhbmdlVGFibGVSZWxhdGlv bihlc3RhdGUsIHBpbmZvLT5ydGluZGV4KTsKKwkJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpCisJCQkJcmV0dXJuIE5VTEw7CiAJCQlwYXJ0a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRp b25LZXkocGFydHJlbCk7CiAJCQlwYXJ0ZGVzYyA9IFBhcnRpdGlvbkRpcmVjdG9yeUxvb2t1cChl c3RhdGUtPmVzX3BhcnRpdGlvbl9kaXJlY3RvcnksCiAJCQkJCQkJCQkJCQlwYXJ0cmVsKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKaW5kZXggNGQyODhiYzhkNC4uODQyYzY3NTFjNSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nub2RlLmMKQEAgLTEzNSw3ICsxMzUsMTMgQEAgc3Rh dGljIGJvb2wgRXhlY1NodXRkb3duTm9kZV93YWxrZXIoUGxhblN0YXRlICpub2RlLCB2b2lkICpj b250ZXh0KTsKICAqCQkgICdlc3RhdGUnIGlzIHRoZSBzaGFyZWQgZXhlY3V0aW9uIHN0YXRlIGZv ciB0aGUgcGxhbiB0cmVlCiAgKgkJICAnZWZsYWdzJyBpcyBhIGJpdHdpc2UgT1Igb2YgZmxhZyBi aXRzIGRlc2NyaWJlZCBpbiBleGVjdXRvci5oCiAgKgotICoJCVJldHVybnMgYSBQbGFuU3RhdGUg bm9kZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBQbGFuIG5vZGUuCisgKgkJUmV0dXJucyBh IFBsYW5TdGF0ZSBub2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIFBsYW4gbm9kZSBvciBO VUxMLgorICoKKyAqCQlOVUxMIG1heSBiZSByZXR1cm5lZCBlaXRoZXIgaWYgdGhlIGlucHV0IG5v ZGUgaXMgTlVMTCBvciBpZiB0aGUgcGxhbgorICoJCXRyZWUgdGhhdCB0aGUgbm9kZSBpcyBhIHBh cnQgb2YgaXMgZm91bmQgdG8gaGF2ZSBiZWVuIGludmFsaWRhdGVkIHdoZW4KKyAqCQl0YWtpbmcg YSBsb2NrIG9uIHRoZSByZWxhdGlvbiBtZW50aW9uZWQgaW4gdGhlIG5vZGUgb3IgaW4gYSBjaGls ZAorICoJCW5vZGUuICBUaGUgbGF0dGVyIGNhc2UgYXJpc2VzIGlmIHRoZSBwbGFuIHRyZWUgY29u dGFpbnMgaW5oZXJpdGFuY2UvCisgKgkJcGFydGl0aW9uIGNoaWxkIHRhYmxlcyBhbmQgaXMgZnJv bSBhIENhY2hlZFBsYW4uCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogUGxhblN0YXRlICoKQEAg LTM4OCw2ICszOTQsMTAgQEAgRXhlY0luaXROb2RlKFBsYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCQkJYnJlYWs7CiAJfQogCisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQo ZXN0YXRlKSkKKwkJcmV0dXJuIHJlc3VsdDsKKworCUFzc2VydChyZXN1bHQgIT0gTlVMTCk7CiAJ RXhlY1NldEV4ZWNQcm9jTm9kZShyZXN1bHQsIHJlc3VsdC0+RXhlY1Byb2NOb2RlKTsKIAogCS8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCmluZGV4IGMwNmIyMjg4NTguLmY0NjExYmRkMjcgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC04NDgsNiArODQ4LDggQEAgRXhlY0luaXRSZXN1 bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywK IAlSZWxhdGlvbglyZXN1bHRSZWxhdGlvbkRlc2M7CiAKIAlyZXN1bHRSZWxhdGlvbkRlc2MgPSBF eGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcnRpKTsKKwlpZiAoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm47CiAJSW5pdFJlc3VsdFJlbEluZm8ocmVzdWx0UmVs SW5mbywKIAkJCQkJICByZXN1bHRSZWxhdGlvbkRlc2MsCiAJCQkJCSAgcnRpLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUFnZy5jCmluZGV4IDQ2OGRiOTRmZTUuLmY0NmMzZGYxOTkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl QWdnLmMKQEAgLTMxNTAsNyArMzE1MCw4IEBAIGhhc2hhZ2dfcmVzZXRfc3BpbGxfc3RhdGUoQWdn U3RhdGUgKmFnZ3N0YXRlKQogCX0KIAogCS8qIGZyZWUgYmF0Y2hlcyAqLwotCWxpc3RfZnJlZV9k ZWVwKGFnZ3N0YXRlLT5oYXNoX2JhdGNoZXMpOworCWlmIChhZ2dzdGF0ZS0+aGFzaF9iYXRjaGVz KQorCQlsaXN0X2ZyZWVfZGVlcChhZ2dzdGF0ZS0+aGFzaF9iYXRjaGVzKTsKIAlhZ2dzdGF0ZS0+ aGFzaF9iYXRjaGVzID0gTklMOwogCiAJLyogY2xvc2UgdGFwZSBzZXQgKi8KQEAgLTMzMDQsNiAr MzMwNSw4IEBAIEV4ZWNJbml0QWdnKEFnZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJCWVmbGFncyAmPSB+RVhFQ19GTEFHX1JFV0lORDsKIAlvdXRlclBsYW4gPSBvdXRlclBs YW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUoYWdnc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVy UGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkp CisJCXJldHVybiBhZ2dzdGF0ZTsKIAogCS8qCiAJICogaW5pdGlhbGl6ZSBzb3VyY2UgdHVwbGUg dHlwZS4KQEAgLTQzNTcsMTYgKzQzNjAsNiBAQCBFeGVjRW5kQWdnKEFnZ1N0YXRlICpub2RlKQog CWlmIChub2RlLT5oYXNoY29udGV4dCkKIAkJUmVTY2FuRXhwckNvbnRleHQobm9kZS0+aGFzaGNv bnRleHQpOwogCi0JLyoKLQkgKiBXZSBkb24ndCBhY3R1YWxseSBmcmVlIGFueSBFeHByQ29udGV4 dHMgaGVyZSAoc2VlIGNvbW1lbnQgaW4KLQkgKiBFeGVjRnJlZUV4cHJDb250ZXh0KSwganVzdCB1 bmxpbmtpbmcgdGhlIG91dHB1dCBvbmUgZnJvbSB0aGUgcGxhbiBub2RlCi0JICogc3VmZmljZXMu Ci0JICovCi0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwotCi0JLyogY2xlYW4g dXAgdHVwbGUgdGFibGUgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVT bG90KTsKLQogCW91dGVyUGxhbiA9IG91dGVyUGxhblN0YXRlKG5vZGUpOwogCUV4ZWNFbmROb2Rl KG91dGVyUGxhbik7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBw ZW5kLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKaW5kZXggNjA5ZGY2Yjll Ni4uNWQ5ZmE0YmZmMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVu ZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAtMTQ3LDYgKzE0 Nyw4IEBAIEV4ZWNJbml0QXBwZW5kKEFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJCQkJCQkJCQkJCSAgbGlzdF9sZW5ndGgobm9kZS0+YXBwZW5kcGxhbnMpLAogCQkJ CQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1bmVfaW5mbywKIAkJCQkJCQkJCQkJICAmdmFsaWRzdWJw bGFucyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4gTlVM TDsKIAkJYXBwZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBsYW5z ID0gYm1zX251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwogCkBAIC0xODUsOCArMTg3LDkgQEAg RXhlY0luaXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAlhcHBlbmRzdGF0ZS0+cHMucmVzdWx0b3Bzc2V0ID0gdHJ1ZTsKIAlhcHBlbmRzdGF0ZS0+cHMu cmVzdWx0b3BzZml4ZWQgPSBmYWxzZTsKIAotCWFwcGVuZHBsYW5zdGF0ZXMgPSAoUGxhblN0YXRl ICoqKSBwYWxsb2MobnBsYW5zICoKLQkJCQkJCQkJCQkJIHNpemVvZihQbGFuU3RhdGUgKikpOwor CWFwcGVuZHN0YXRlLT5hcHBlbmRwbGFucyA9IGFwcGVuZHBsYW5zdGF0ZXMgPQorCQkoUGxhblN0 YXRlICoqKSBwYWxsb2MwKG5wbGFucyAqIHNpemVvZihQbGFuU3RhdGUgKikpOworCWFwcGVuZHN0 YXRlLT5hc19ucGxhbnMgPSBucGxhbnM7CiAKIAkvKgogCSAqIGNhbGwgRXhlY0luaXROb2RlIG9u IGVhY2ggb2YgdGhlIHZhbGlkIHBsYW5zIHRvIGJlIGV4ZWN1dGVkIGFuZCBzYXZlCkBAIC0yMjEs MTEgKzIyNCwxMiBAQCBFeGVjSW5pdEFwcGVuZChBcHBlbmQgKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCQkJZmlyc3R2YWxpZCA9IGo7CiAKIAkJYXBwZW5kcGxhbnN0YXRlc1tq KytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7CisJCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4gYXBwZW5kc3RhdGU7CiAJfQogCiAJ YXBwZW5kc3RhdGUtPmFzX2ZpcnN0X3BhcnRpYWxfcGxhbiA9IGZpcnN0dmFsaWQ7CiAJYXBwZW5k c3RhdGUtPmFwcGVuZHBsYW5zID0gYXBwZW5kcGxhbnN0YXRlczsKLQlhcHBlbmRzdGF0ZS0+YXNf bnBsYW5zID0gbnBsYW5zOwogCiAJLyogSW5pdGlhbGl6ZSBhc3luYyBzdGF0ZSAqLwogCWFwcGVu ZHN0YXRlLT5hc19hc3luY3BsYW5zID0gYXN5bmNwbGFuczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBBbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVC aXRtYXBBbmQuYwppbmRleCA0YzVlYjJiMjNiLi45M2U1ZGUwYzFhIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwQW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZUJpdG1hcEFuZC5jCkBAIC03OCw3ICs3OCw2IEBAIEV4ZWNJbml0Qml0bWFwQW5kKEJp dG1hcEFuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJYml0bWFwYW5kc3Rh dGUtPnBzLnN0YXRlID0gZXN0YXRlOwogCWJpdG1hcGFuZHN0YXRlLT5wcy5FeGVjUHJvY05vZGUg PSBFeGVjQml0bWFwQW5kOwogCWJpdG1hcGFuZHN0YXRlLT5iaXRtYXBwbGFucyA9IGJpdG1hcHBs YW5zdGF0ZXM7Ci0JYml0bWFwYW5kc3RhdGUtPm5wbGFucyA9IG5wbGFuczsKIAogCS8qCiAJICog Y2FsbCBFeGVjSW5pdE5vZGUgb24gZWFjaCBvZiB0aGUgcGxhbnMgdG8gYmUgZXhlY3V0ZWQgYW5k IHNhdmUgdGhlCkBAIC04OCw4ICs4NywxMCBAQCBFeGVjSW5pdEJpdG1hcEFuZChCaXRtYXBBbmQg Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWZvcmVhY2gobCwgbm9kZS0+Yml0 bWFwcGxhbnMpCiAJewogCQlpbml0Tm9kZSA9IChQbGFuICopIGxmaXJzdChsKTsKLQkJYml0bWFw cGxhbnN0YXRlc1tpXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwgZXN0YXRlLCBlZmxhZ3MpOwot CQlpKys7CisJCWJpdG1hcHBsYW5zdGF0ZXNbaSsrXSA9IEV4ZWNJbml0Tm9kZShpbml0Tm9kZSwg ZXN0YXRlLCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQkJ cmV0dXJuIGJpdG1hcGFuZHN0YXRlOworCQliaXRtYXBhbmRzdGF0ZS0+bnBsYW5zID0gaTsKIAl9 CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBz Y2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwppbmRleCBm MzVkZjBiOGJmLi4zY2RlY2U4NTJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlQml0bWFwSGVhcHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFw SGVhcHNjYW4uYwpAQCAtNjU1LDE4ICs2NTUsNiBAQCBFeGVjRW5kQml0bWFwSGVhcFNjYW4oQml0 bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSkKIAkgKi8KIAlzY2FuRGVzYyA9IG5vZGUtPnNzLnNzX2N1 cnJlbnRTY2FuRGVzYzsKIAotCS8qCi0JICogRnJlZSB0aGUgZXhwcmNvbnRleHQKLQkgKi8KLQlF eGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5zcy5wcyk7Ci0KLQkvKgotCSAqIGNsZWFyIG91dCB0 dXBsZSB0YWJsZSBzbG90cwotCSAqLwotCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNs b3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0J RXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0KIAkvKgogCSAqIGNs b3NlIGRvd24gc3VicGxhbnMKIAkgKi8KQEAgLTY5Myw3ICs2ODEsOCBAQCBFeGVjRW5kQml0bWFw SGVhcFNjYW4oQml0bWFwSGVhcFNjYW5TdGF0ZSAqbm9kZSkKIAkvKgogCSAqIGNsb3NlIGhlYXAg c2NhbgogCSAqLwotCXRhYmxlX2VuZHNjYW4oc2NhbkRlc2MpOworCWlmIChzY2FuRGVzYykKKwkJ dGFibGVfZW5kc2NhbihzY2FuRGVzYyk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTc2MywxMSArNzUy LDE1IEBAIEV4ZWNJbml0Qml0bWFwSGVhcFNjYW4oQml0bWFwSGVhcFNjYW4gKm5vZGUsIEVTdGF0 ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8K IAljdXJyZW50UmVsYXRpb24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNj YW4uc2NhbnJlbGlkLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkp CisJCXJldHVybiBzY2Fuc3RhdGU7CiAKIAkvKgogCSAqIGluaXRpYWxpemUgY2hpbGQgbm9kZXMK IAkgKi8KIAlvdXRlclBsYW5TdGF0ZShzY2Fuc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxh bihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpCisJCXJldHVybiBzY2Fuc3RhdGU7CiAKIAkvKgogCSAqIGdldCB0aGUgc2NhbiB0eXBlIGZy b20gdGhlIHJlbGF0aW9uIGRlc2NyaXB0b3IuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlQml0bWFwSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwSW5kZXhzY2FuLmMKaW5kZXggODNlYzllZGU4OS4uNDIwMDQ3MmQwMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBJbmRleHNjYW4uYwpAQCAtMTg0LDE0ICsxODQsNiBAQCBF eGVjRW5kQml0bWFwSW5kZXhTY2FuKEJpdG1hcEluZGV4U2NhblN0YXRlICpub2RlKQogCWluZGV4 UmVsYXRpb25EZXNjID0gbm9kZS0+Ymlzc19SZWxhdGlvbkRlc2M7CiAJaW5kZXhTY2FuRGVzYyA9 IG5vZGUtPmJpc3NfU2NhbkRlc2M7CiAKLQkvKgotCSAqIEZyZWUgdGhlIGV4cHJjb250ZXh0IC4u LiBub3cgZGVhZCBjb2RlLCBzZWUgRXhlY0ZyZWVFeHByQ29udGV4dAotCSAqLwotI2lmZGVmIE5P VF9VU0VECi0JaWYgKG5vZGUtPmJpc3NfUnVudGltZUNvbnRleHQpCi0JCUZyZWVFeHByQ29udGV4 dChub2RlLT5iaXNzX1J1bnRpbWVDb250ZXh0LCB0cnVlKTsKLSNlbmRpZgotCiAJLyoKIAkgKiBj bG9zZSB0aGUgaW5kZXggcmVsYXRpb24gKG5vLW9wIGlmIHdlIGRpZG4ndCBvcGVuIGl0KQogCSAq LwpAQCAtMjYzLDYgKzI1NSw4IEBAIEV4ZWNJbml0Qml0bWFwSW5kZXhTY2FuKEJpdG1hcEluZGV4 U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJLyogT3BlbiB0aGUgaW5k ZXggcmVsYXRpb24uICovCiAJbG9ja21vZGUgPSBleGVjX3J0X2ZldGNoKG5vZGUtPnNjYW4uc2Nh bnJlbGlkLCBlc3RhdGUpLT5yZWxsb2NrbW9kZTsKIAlpbmRleHN0YXRlLT5iaXNzX1JlbGF0aW9u RGVzYyA9IGluZGV4X29wZW4obm9kZS0+aW5kZXhpZCwgbG9ja21vZGUpOworCWlmICghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBpbmRleHN0YXRlOwogCiAJLyoKIAkgKiBJ bml0aWFsaXplIGluZGV4LXNwZWNpZmljIHNjYW4gc3RhdGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBPci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcE9yLmMKaW5kZXggMGJmOGFmOTY1Mi4uZTBlOTIyOGUzNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcE9yLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUJpdG1hcE9yLmMKQEAgLTc5LDcgKzc5LDYgQEAgRXhlY0luaXRCaXRtYXBPcihCaXRtYXBP ciAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJYml0bWFwb3JzdGF0ZS0+cHMu c3RhdGUgPSBlc3RhdGU7CiAJYml0bWFwb3JzdGF0ZS0+cHMuRXhlY1Byb2NOb2RlID0gRXhlY0Jp dG1hcE9yOwogCWJpdG1hcG9yc3RhdGUtPmJpdG1hcHBsYW5zID0gYml0bWFwcGxhbnN0YXRlczsK LQliaXRtYXBvcnN0YXRlLT5ucGxhbnMgPSBucGxhbnM7CiAKIAkvKgogCSAqIGNhbGwgRXhlY0lu aXROb2RlIG9uIGVhY2ggb2YgdGhlIHBsYW5zIHRvIGJlIGV4ZWN1dGVkIGFuZCBzYXZlIHRoZQpA QCAtODksOCArODgsMTAgQEAgRXhlY0luaXRCaXRtYXBPcihCaXRtYXBPciAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiAJZm9yZWFjaChsLCBub2RlLT5iaXRtYXBwbGFucykKIAl7 CiAJCWluaXROb2RlID0gKFBsYW4gKikgbGZpcnN0KGwpOwotCQliaXRtYXBwbGFuc3RhdGVzW2ld ID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFncyk7Ci0JCWkrKzsKKwkJYml0 bWFwcGxhbnN0YXRlc1tpKytdID0gRXhlY0luaXROb2RlKGluaXROb2RlLCBlc3RhdGUsIGVmbGFn cyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQlyZXR1cm4gYml0bWFw b3JzdGF0ZTsKKwkJYml0bWFwb3JzdGF0ZS0+bnBsYW5zID0gaTsKIAl9CiAKIAkvKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVDdGVzY2FuLmMKaW5kZXggY2M0YzQyNDNlMi4uYTBjMGM0YmUzMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN0ZXNjYW4uYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQ3Rlc2Nhbi5jCkBAIC0yODcsMTggKzI4Nyw2IEBAIEV4ZWNJbml0Q3Rl U2NhbihDdGVTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHZvaWQKIEV4 ZWNFbmRDdGVTY2FuKEN0ZVNjYW5TdGF0ZSAqbm9kZSkKIHsKLQkvKgotCSAqIEZyZWUgZXhwcmNv bnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5zcy5wcyk7Ci0KLQkvKgot CSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8KLQlpZiAobm9kZS0+c3MucHMucHNf UmVzdWx0VHVwbGVTbG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRU dXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwot CiAJLyoKIAkgKiBJZiBJIGFtIHRoZSBsZWFkZXIsIGZyZWUgdGhlIHR1cGxlc3RvcmUuCiAJICov CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlQ3VzdG9tLmMKaW5kZXggYmQ0MmM2NWIyOS4uMzgwNjFjMzBiOSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUN1c3RvbS5jCisrKyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVDdXN0b20uYwpAQCAtNjEsNiArNjEsOCBAQCBFeGVjSW5pdEN1 c3RvbVNjYW4oQ3VzdG9tU2NhbiAqY3NjYW4sIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CWlmIChzY2FucmVsaWQgPiAwKQogCXsKIAkJc2Nhbl9yZWwgPSBFeGVjT3BlblNjYW5SZWxhdGlv bihlc3RhdGUsIHNjYW5yZWxpZCwgZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQo ZXN0YXRlKSkKKwkJCXJldHVybiBOVUxMOwogCQljc3MtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiA9 IHNjYW5fcmVsOwogCX0KIApAQCAtMTI3LDE1ICsxMjksMTEgQEAgRXhlY0N1c3RvbVNjYW4oUGxh blN0YXRlICpwc3RhdGUpCiB2b2lkCiBFeGVjRW5kQ3VzdG9tU2NhbihDdXN0b21TY2FuU3RhdGUg Km5vZGUpCiB7Ci0JQXNzZXJ0KG5vZGUtPm1ldGhvZHMtPkVuZEN1c3RvbVNjYW4gIT0gTlVMTCk7 Ci0Jbm9kZS0+bWV0aG9kcy0+RW5kQ3VzdG9tU2Nhbihub2RlKTsKLQotCS8qIEZyZWUgdGhlIGV4 cHJjb250ZXh0ICovCi0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwotCi0JLyog Q2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBz LnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1 cGxlU2xvdCk7CisJaWYgKG5vZGUtPm1ldGhvZHMpCisJeworCQlBc3NlcnQobm9kZS0+bWV0aG9k cy0+RW5kQ3VzdG9tU2NhbiAhPSBOVUxMKTsKKwkJbm9kZS0+bWV0aG9kcy0+RW5kQ3VzdG9tU2Nh bihub2RlKTsKKwl9CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVGb3JlaWduc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2Fu LmMKaW5kZXggYzIxMzlhY2NhMC4uYTM3MDUwODJhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUZvcmVpZ25zY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZUZvcmVpZ25zY2FuLmMKQEAgLTE3Myw2ICsxNzMsOCBAQCBFeGVjSW5pdEZvcmVpZ25TY2FuKEZv cmVpZ25TY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlpZiAoc2NhbnJl bGlkID4gMCkKIAl7CiAJCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVz dGF0ZSwgc2NhbnJlbGlkLCBlZmxhZ3MpOworCQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3Rh dGUpKQorCQkJcmV0dXJuIE5VTEw7CiAJCXNjYW5zdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9u ID0gY3VycmVudFJlbGF0aW9uOwogCQlmZHdyb3V0aW5lID0gR2V0RmR3Um91dGluZUZvclJlbGF0 aW9uKGN1cnJlbnRSZWxhdGlvbiwgdHJ1ZSk7CiAJfQpAQCAtMjY0LDYgKzI2Niw4IEBAIEV4ZWNJ bml0Rm9yZWlnblNjYW4oRm9yZWlnblNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCWlmIChvdXRlclBsYW4obm9kZSkpCiAJCW91dGVyUGxhblN0YXRlKHNjYW5zdGF0ZSkg PQogCQkJRXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlm ICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBzY2Fuc3RhdGU7CiAKIAkv KgogCSAqIFRlbGwgdGhlIEZEVyB0byBpbml0aWFsaXplIHRoZSBzY2FuLgpAQCAtMzEyLDE0ICsz MTYsNiBAQCBFeGVjRW5kRm9yZWlnblNjYW4oRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSkKIAkvKiBT aHV0IGRvd24gYW55IG91dGVyIHBsYW4uICovCiAJaWYgKG91dGVyUGxhblN0YXRlKG5vZGUpKQog CQlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7Ci0KLQkvKiBGcmVlIHRoZSBleHBy Y29udGV4dCAqLwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qIGNs ZWFuIG91dCB0aGUgdHVwbGUgdGFibGUgKi8KLQlpZiAobm9kZS0+c3MucHMucHNfUmVzdWx0VHVw bGVTbG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3Qp OwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwogfQogCiAvKiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRnVuY3Rpb25zY2Fu LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlRnVuY3Rpb25zY2FuLmMKaW5kZXggZGQwNmVm OGFlZS4uYTQ5YzFhMmM4NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUZ1 bmN0aW9uc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVGdW5jdGlvbnNjYW4u YwpAQCAtNTIzLDE4ICs1MjMsNiBAQCBFeGVjRW5kRnVuY3Rpb25TY2FuKEZ1bmN0aW9uU2NhblN0 YXRlICpub2RlKQogewogCWludAkJCWk7CiAKLQkvKgotCSAqIEZyZWUgdGhlIGV4cHJjb250ZXh0 Ci0JICovCi0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwotCi0JLyoKLQkgKiBj bGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlCi0JICovCi0JaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3Vs dFR1cGxlU2xvdCkKLQkJRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVT bG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKLQogCS8q CiAJICogUmVsZWFzZSBzbG90cyBhbmQgdHVwbGVzdG9yZSByZXNvdXJjZXMKIAkgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXIuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVHYXRoZXIuYwppbmRleCAzMDdmYzEwZWVhLi42YjI2ZTAzZjc0IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlR2F0aGVyLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUdhdGhlci5jCkBAIC04OSw2ICs4OSw5IEBAIEV4ZWNJbml0R2F0aGVyKEdh dGhlciAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICovCiAJb3V0ZXJOb2Rl ID0gb3V0ZXJQbGFuKG5vZGUpOwogCW91dGVyUGxhblN0YXRlKGdhdGhlcnN0YXRlKSA9IEV4ZWNJ bml0Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKQorCQlyZXR1cm4gZ2F0aGVyc3RhdGU7CisKIAl0dXBEZXNjID0gRXhlY0dl dFJlc3VsdFR5cGUob3V0ZXJQbGFuU3RhdGUoZ2F0aGVyc3RhdGUpKTsKIAogCS8qCkBAIC0yNTAs OSArMjUzLDYgQEAgRXhlY0VuZEdhdGhlcihHYXRoZXJTdGF0ZSAqbm9kZSkKIHsKIAlFeGVjRW5k Tm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CS8qIGxldCBjaGlsZHJlbiBjbGVhbiB1cCBmaXJz dCAqLwogCUV4ZWNTaHV0ZG93bkdhdGhlcihub2RlKTsKLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZu b2RlLT5wcyk7Ci0JaWYgKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKLQkJRXhlY0NsZWFy VHVwbGUobm9kZS0+cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHYXRoZXJNZXJnZS5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMKaW5kZXggOWQ1ZTFhNDZlOS4uODQ0MTJmOTRiYiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMKKysrIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUdhdGhlck1lcmdlLmMKQEAgLTEwOCw2ICsxMDgsOCBAQCBF eGVjSW5pdEdhdGhlck1lcmdlKEdhdGhlck1lcmdlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAkgKi8KIAlvdXRlck5vZGUgPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFu U3RhdGUoZ21fc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyTm9kZSwgZXN0YXRlLCBlZmxhZ3Mp OworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBnbV9zdGF0ZTsK IAogCS8qCiAJICogTGVhZGVyIG1heSBhY2Nlc3MgRXhlY1Byb2NOb2RlIHJlc3VsdCBkaXJlY3Rs eSAoaWYKQEAgLTI5MCw5ICsyOTIsNiBAQCBFeGVjRW5kR2F0aGVyTWVyZ2UoR2F0aGVyTWVyZ2VT dGF0ZSAqbm9kZSkKIHsKIAlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CS8qIGxl dCBjaGlsZHJlbiBjbGVhbiB1cCBmaXJzdCAqLwogCUV4ZWNTaHV0ZG93bkdhdGhlck1lcmdlKG5v ZGUpOwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnBzKTsKLQlpZiAobm9kZS0+cHMucHNf UmVzdWx0VHVwbGVTbG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBs ZVNsb3QpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlR3JvdXAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCmluZGV4IDI1 YTE2MTg5NTIuLmI2MDY4ODg3ZjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVHcm91cC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVHcm91cC5jCkBAIC0xODUs NiArMTg1LDggQEAgRXhlY0luaXRHcm91cChHcm91cCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxhblN0 YXRlKGdycHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZs YWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gZ3Jwc3Rh dGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlLgpAQCAtMjI4LDEx ICsyMzAsNiBAQCBFeGVjRW5kR3JvdXAoR3JvdXBTdGF0ZSAqbm9kZSkKIHsKIAlQbGFuU3RhdGUg ICpvdXRlclBsYW47CiAKLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5zcy5wcyk7Ci0KLQkv KiBjbGVhbiB1cCB0dXBsZSB0YWJsZSAqLwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1Nj YW5UdXBsZVNsb3QpOwotCiAJb3V0ZXJQbGFuID0gb3V0ZXJQbGFuU3RhdGUobm9kZSk7CiAJRXhl Y0VuZE5vZGUob3V0ZXJQbGFuKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVIYXNoLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFzaC5jCmluZGV4IDhiNWMz NWI4MmIuLjAzMGJmMGVkNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVI YXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUhhc2guYwpAQCAtMzg2LDYgKzM4 Niw4IEBAIEV4ZWNJbml0SGFzaChIYXNoICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFn cykKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5vZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoaGFz aHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsK KwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gaGFzaHN0YXRlOwog CiAJLyoKIAkgKiBpbml0aWFsaXplIG91ciByZXN1bHQgc2xvdCBhbmQgdHlwZS4gTm8gbmVlZCB0 byBidWlsZCBwcm9qZWN0aW9uCkBAIC00MTUsMTEgKzQxNyw2IEBAIEV4ZWNFbmRIYXNoKEhhc2hT dGF0ZSAqbm9kZSkKIHsKIAlQbGFuU3RhdGUgICpvdXRlclBsYW47CiAKLQkvKgotCSAqIGZyZWUg ZXhwcmNvbnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5wcyk7Ci0KIAkv KgogCSAqIHNodXQgZG93biB0aGUgc3VicGxhbgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUhhc2hqb2luLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFz aGpvaW4uYwppbmRleCA5ODA3NDYxMjhiLi40OWE2YmE0Mjc2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSGFzaGpvaW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlSGFzaGpvaW4uYwpAQCAtNzUyLDggKzc1MiwxMiBAQCBFeGVjSW5pdEhhc2hKb2luKEhhc2hK b2luICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAloYXNoTm9kZSA9IChIYXNo ICopIGlubmVyUGxhbihub2RlKTsKIAogCW91dGVyUGxhblN0YXRlKGhqc3RhdGUpID0gRXhlY0lu aXROb2RlKG91dGVyTm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZh bGlkKGVzdGF0ZSkpCisJCXJldHVybiBoanN0YXRlOwogCW91dGVyRGVzYyA9IEV4ZWNHZXRSZXN1 bHRUeXBlKG91dGVyUGxhblN0YXRlKGhqc3RhdGUpKTsKIAlpbm5lclBsYW5TdGF0ZShoanN0YXRl KSA9IEV4ZWNJbml0Tm9kZSgoUGxhbiAqKSBoYXNoTm9kZSwgZXN0YXRlLCBlZmxhZ3MpOworCWlm ICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBoanN0YXRlOwogCWlubmVy RGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKGlubmVyUGxhblN0YXRlKGhqc3RhdGUpKTsKIAogCS8q CkBAIC04NjcsMTggKzg3MSw2IEBAIEV4ZWNFbmRIYXNoSm9pbihIYXNoSm9pblN0YXRlICpub2Rl KQogCQlub2RlLT5oal9IYXNoVGFibGUgPSBOVUxMOwogCX0KIAotCS8qCi0JICogRnJlZSB0aGUg ZXhwcmNvbnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5qcy5wcyk7Ci0K LQkvKgotCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8KLQlFeGVjQ2xlYXJUdXBs ZShub2RlLT5qcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUt PmhqX091dGVyVHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5oal9IYXNoVHVwbGVT bG90KTsKLQogCS8qCiAJICogY2xlYW4gdXAgc3VidHJlZXMKIAkgKi8KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmNyZW1lbnRhbFNvcnQuYwppbmRleCA3NjgzZTMzNDFjLi42Y2FhMWFhMzA2 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5jcmVtZW50YWxTb3J0LmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluY3JlbWVudGFsU29ydC5jCkBAIC0xMDQx LDYgKzEwNDEsOCBAQCBFeGVjSW5pdEluY3JlbWVudGFsU29ydChJbmNyZW1lbnRhbFNvcnQgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIG5vZGVzIG1heSBiZSBhYmxlIHRv IGRvIHNvbWV0aGluZyBtb3JlIHVzZWZ1bC4KIAkgKi8KIAlvdXRlclBsYW5TdGF0ZShpbmNyc29y dHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsK KwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gaW5jcnNvcnRzdGF0 ZTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSBzY2FuIHNsb3QgYW5kIHR5cGUuCkBAIC0xMDc5LDE0 ICsxMDgxLDYgQEAgRXhlY0VuZEluY3JlbWVudGFsU29ydChJbmNyZW1lbnRhbFNvcnRTdGF0ZSAq bm9kZSkKIHsKIAlTT19wcmludGYoIkV4ZWNFbmRJbmNyZW1lbnRhbFNvcnQ6IHNodXR0aW5nIGRv d24gc29ydCBub2RlXG4iKTsKIAotCS8qIGNsZWFuIG91dCB0aGUgc2NhbiB0dXBsZSAqLwotCUV4 ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwotCS8qIG11c3QgZHJvcCBw b2ludGVyIHRvIHNvcnQgcmVzdWx0IHR1cGxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Mu cHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQkvKiBtdXN0IGRyb3Agc3RhbmRhbG9uZSB0dXBsZSBz bG90cyBmcm9tIG91dGVyIG5vZGUgKi8KLQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KG5v ZGUtPmdyb3VwX3Bpdm90KTsKLQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KG5vZGUtPnRy YW5zZmVyX3R1cGxlKTsKLQogCS8qCiAJICogUmVsZWFzZSB0dXBsZXNvcnQgcmVzb3VyY2VzLgog CSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4u YyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKaW5kZXggMGI0M2E5 Yjk2OS4uZWE3ZmQ4OWMwYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUlu ZGV4b25seXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nh bi5jCkBAIC0zODAsMjIgKzM4MCw2IEBAIEV4ZWNFbmRJbmRleE9ubHlTY2FuKEluZGV4T25seVNj YW5TdGF0ZSAqbm9kZSkKIAkJbm9kZS0+aW9zc19WTUJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAJ fQogCi0JLyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dChzKSAuLi4gbm93IGRlYWQgY29kZSwg c2VlIEV4ZWNGcmVlRXhwckNvbnRleHQKLQkgKi8KLSNpZmRlZiBOT1RfVVNFRAotCUV4ZWNGcmVl RXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQlpZiAobm9kZS0+aW9zc19SdW50aW1lQ29udGV4 dCkKLQkJRnJlZUV4cHJDb250ZXh0KG5vZGUtPmlvc3NfUnVudGltZUNvbnRleHQsIHRydWUpOwot I2VuZGlmCi0KLQkvKgotCSAqIGNsZWFyIG91dCB0dXBsZSB0YWJsZSBzbG90cwotCSAqLwotCWlm IChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUt PnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3Nf U2NhblR1cGxlU2xvdCk7Ci0KIAkvKgogCSAqIGNsb3NlIHRoZSBpbmRleCByZWxhdGlvbiAobm8t b3AgaWYgd2UgZGlkbid0IG9wZW4gaXQpCiAJICovCkBAIC01MTIsNiArNDk2LDggQEAgRXhlY0lu aXRJbmRleE9ubHlTY2FuKEluZGV4T25seVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQg ZWZsYWdzKQogCSAqIG9wZW4gdGhlIHNjYW4gcmVsYXRpb24KIAkgKi8KIAljdXJyZW50UmVsYXRp b24gPSBFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsIG5vZGUtPnNjYW4uc2NhbnJlbGlkLCBl ZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxM OwogCiAJaW5kZXhzdGF0ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVudFJlbGF0aW9u OwogCWluZGV4c3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CS8qIG5vIGhlYXAg c2NhbiBoZXJlICovCkBAIC01NjUsNiArNTUxLDggQEAgRXhlY0luaXRJbmRleE9ubHlTY2FuKElu ZGV4T25seVNjYW4gKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCS8qIE9wZW4g dGhlIGluZGV4IHJlbGF0aW9uLiAqLwogCWxvY2ttb2RlID0gZXhlY19ydF9mZXRjaChub2RlLT5z Y2FuLnNjYW5yZWxpZCwgZXN0YXRlKS0+cmVsbG9ja21vZGU7CiAJaW5kZXhzdGF0ZS0+aW9zc19S ZWxhdGlvbkRlc2MgPSBpbmRleF9vcGVuKG5vZGUtPmluZGV4aWQsIGxvY2ttb2RlKTsKKwlpZiAo IUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICog SW5pdGlhbGl6ZSBpbmRleC1zcGVjaWZpYyBzY2FuIHN0YXRlCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl SW5kZXhzY2FuLmMKaW5kZXggNDU0MGM3NzgxZC4uOTA2MzU4MDExYSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVJbmRleHNjYW4uYwpAQCAtNzk0LDIyICs3OTQsNiBAQCBFeGVjRW5kSW5kZXhTY2Fu KEluZGV4U2NhblN0YXRlICpub2RlKQogCWluZGV4UmVsYXRpb25EZXNjID0gbm9kZS0+aXNzX1Jl bGF0aW9uRGVzYzsKIAlpbmRleFNjYW5EZXNjID0gbm9kZS0+aXNzX1NjYW5EZXNjOwogCi0JLyoK LQkgKiBGcmVlIHRoZSBleHByY29udGV4dChzKSAuLi4gbm93IGRlYWQgY29kZSwgc2VlIEV4ZWNG cmVlRXhwckNvbnRleHQKLQkgKi8KLSNpZmRlZiBOT1RfVVNFRAotCUV4ZWNGcmVlRXhwckNvbnRl eHQoJm5vZGUtPnNzLnBzKTsKLQlpZiAobm9kZS0+aXNzX1J1bnRpbWVDb250ZXh0KQotCQlGcmVl RXhwckNvbnRleHQobm9kZS0+aXNzX1J1bnRpbWVDb250ZXh0LCB0cnVlKTsKLSNlbmRpZgotCi0J LyoKLQkgKiBjbGVhciBvdXQgdHVwbGUgdGFibGUgc2xvdHMKLQkgKi8KLQlpZiAobm9kZS0+c3Mu cHMucHNfUmVzdWx0VHVwbGVTbG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19S ZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNs b3QpOwotCiAJLyoKIAkgKiBjbG9zZSB0aGUgaW5kZXggcmVsYXRpb24gKG5vLW9wIGlmIHdlIGRp ZG4ndCBvcGVuIGl0KQogCSAqLwpAQCAtOTI1LDYgKzkwOSw4IEBAIEV4ZWNJbml0SW5kZXhTY2Fu KEluZGV4U2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0 aGUgc2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJl bGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAlpbmRleHN0YXRlLT5z cy5zc19jdXJyZW50UmVsYXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJaW5kZXhzdGF0ZS0+c3Mu c3NfY3VycmVudFNjYW5EZXNjID0gTlVMTDsJLyogbm8gaGVhcCBzY2FuIGhlcmUgKi8KQEAgLTk3 MCw2ICs5NTYsOCBAQCBFeGVjSW5pdEluZGV4U2NhbihJbmRleFNjYW4gKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCS8qIE9wZW4gdGhlIGluZGV4IHJlbGF0aW9uLiAqLwogCWxv Y2ttb2RlID0gZXhlY19ydF9mZXRjaChub2RlLT5zY2FuLnNjYW5yZWxpZCwgZXN0YXRlKS0+cmVs bG9ja21vZGU7CiAJaW5kZXhzdGF0ZS0+aXNzX1JlbGF0aW9uRGVzYyA9IGluZGV4X29wZW4obm9k ZS0+aW5kZXhpZCwgbG9ja21vZGUpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkp CisJCXJldHVybiBOVUxMOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIGluZGV4LXNwZWNpZmljIHNj YW4gc3RhdGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMaW1pdC5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMKaW5kZXggNDI1ZmJmYzQwNS4uNjc2MGRl MGYyNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxpbWl0LmMKQEAgLTQ3Niw2ICs0NzYsOCBAQCBFeGVj SW5pdExpbWl0KExpbWl0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKi8K IAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUobGltaXRzdGF0 ZSkgPSBFeGVjSW5pdE5vZGUob3V0ZXJQbGFuLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVj UGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIGxpbWl0c3RhdGU7CiAKIAkvKgogCSAq IGluaXRpYWxpemUgY2hpbGQgZXhwcmVzc2lvbnMKQEAgLTUzNCw3ICs1MzYsNiBAQCBFeGVjSW5p dExpbWl0KExpbWl0ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHZvaWQKIEV4 ZWNFbmRMaW1pdChMaW1pdFN0YXRlICpub2RlKQogewotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5v ZGUtPnBzKTsKIAlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7CiB9CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVMb2NrUm93cy5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKaW5kZXggZTQ1OTk3MWQzMi4uMjU5OTMzMmYwMSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMKQEAgLTMyMiw2ICszMjIsOCBAQCBFeGVjSW5p dExvY2tSb3dzKExvY2tSb3dzICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkg KiB0aGVuIGluaXRpYWxpemUgb3V0ZXIgcGxhbgogCSAqLwogCW91dGVyUGxhblN0YXRlKGxyc3Rh dGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBscnN0YXRlOwogCiAJLyogbm9kZSBy ZXR1cm5zIHVubW9kaWZpZWQgc2xvdHMgZnJvbSB0aGUgb3V0ZXIgcGxhbiAqLwogCWxyc3RhdGUt PnBzLnJlc3VsdG9wc3NldCA9IHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTWF0ZXJpYWwuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlhbC5jCmlu ZGV4IDA5NjMyNjc4YjAuLmI5NzRlYmRjOGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNYXRlcmlhbC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNYXRlcmlh bC5jCkBAIC0yMTQsNiArMjE0LDggQEAgRXhlY0luaXRNYXRlcmlhbChNYXRlcmlhbCAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAKIAlvdXRlclBsYW4gPSBvdXRlclBsYW4obm9k ZSk7CiAJb3V0ZXJQbGFuU3RhdGUobWF0c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbiwg ZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJl dHVybiBtYXRzdGF0ZTsKIAogCS8qCiAJICogSW5pdGlhbGl6ZSByZXN1bHQgdHlwZSBhbmQgc2xv dC4gTm8gbmVlZCB0byBpbml0aWFsaXplIHByb2plY3Rpb24gaW5mbwpAQCAtMjM5LDExICsyNDEs NiBAQCBFeGVjSW5pdE1hdGVyaWFsKE1hdGVyaWFsICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIHZvaWQKIEV4ZWNFbmRNYXRlcmlhbChNYXRlcmlhbFN0YXRlICpub2RlKQogewot CS8qCi0JICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZQotCSAqLwotCUV4ZWNDbGVhclR1cGxl KG5vZGUtPnNzLnNzX1NjYW5UdXBsZVNsb3QpOwotCiAJLyoKIAkgKiBSZWxlYXNlIHR1cGxlc3Rv cmUgcmVzb3VyY2VzCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVtb2l6ZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lbW9pemUuYwppbmRleCA0ZjA0 MjY5ZTI2Li5kMGNkYmUxZmQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TWVtb2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZW1vaXplLmMKQEAgLTkz OCw2ICs5MzgsOCBAQCBFeGVjSW5pdE1lbW9pemUoTWVtb2l6ZSAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAKIAlvdXRlck5vZGUgPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQ bGFuU3RhdGUobXN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlck5vZGUsIGVzdGF0ZSwgZWZsYWdz KTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gbXN0YXRlOwog CiAJLyoKIAkgKiBJbml0aWFsaXplIHJldHVybiBzbG90IGFuZCB0eXBlLiBObyBuZWVkIHRvIGlu aXRpYWxpemUgcHJvamVjdGlvbiBpbmZvCkBAIC0xMDQzLDYgKzEwNDUsNyBAQCBFeGVjRW5kTWVt b2l6ZShNZW1vaXplU3RhdGUgKm5vZGUpCiB7CiAjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwog CS8qIFZhbGlkYXRlIHRoZSBtZW1vcnkgYWNjb3VudGluZyBjb2RlIGlzIGNvcnJlY3QgaW4gYXNz ZXJ0IGJ1aWxkcy4gKi8KKwlpZiAobm9kZS0+aGFzaHRhYmxlKQogCXsKIAkJaW50CQkJY291bnQ7 CiAJCXVpbnQ2NAkJbWVtID0gMDsKQEAgLTEwOTEsMTUgKzEwOTQsNiBAQCBFeGVjRW5kTWVtb2l6 ZShNZW1vaXplU3RhdGUgKm5vZGUpCiAJLyogUmVtb3ZlIHRoZSBjYWNoZSBjb250ZXh0ICovCiAJ TWVtb3J5Q29udGV4dERlbGV0ZShub2RlLT50YWJsZUNvbnRleHQpOwogCi0JRXhlY0NsZWFyVHVw bGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0JLyogbXVzdCBkcm9wIHBvaW50ZXIgdG8g Y2FjaGUgcmVzdWx0IHR1cGxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVz dWx0VHVwbGVTbG90KTsKLQotCS8qCi0JICogZnJlZSBleHByY29udGV4dAotCSAqLwotCUV4ZWNG cmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQogCS8qCiAJICogc2h1dCBkb3duIHRoZSBz dWJwbGFuCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VB cHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jCmluZGV4IDIx YjU3MjZlNmUuLjI1NWIwNWFhZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNZXJnZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVu ZC5jCkBAIC05NSw2ICs5NSw4IEBAIEV4ZWNJbml0TWVyZ2VBcHBlbmQoTWVyZ2VBcHBlbmQgKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQkJCQkJCQkJCQkgIGxpc3RfbGVuZ3Ro KG5vZGUtPm1lcmdlcGxhbnMpLAogCQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1bmVfaW5mbywK IAkJCQkJCQkJCQkJICAmdmFsaWRzdWJwbGFucyk7CisJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlk KGVzdGF0ZSkpCisJCQlyZXR1cm4gTlVMTDsKIAkJbWVyZ2VzdGF0ZS0+bXNfcHJ1bmVfc3RhdGUg PSBwcnVuZXN0YXRlOwogCQlucGxhbnMgPSBibXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFucyk7 CiAKQEAgLTEyMCw3ICsxMjIsNyBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJbWVyZ2VzdGF0ZS0+bXNfcHJ1bmVf c3RhdGUgPSBOVUxMOwogCX0KIAotCW1lcmdlcGxhbnN0YXRlcyA9IChQbGFuU3RhdGUgKiopIHBh bGxvYyhucGxhbnMgKiBzaXplb2YoUGxhblN0YXRlICopKTsKKwltZXJnZXBsYW5zdGF0ZXMgPSAo UGxhblN0YXRlICoqKSBwYWxsb2MwKG5wbGFucyAqIHNpemVvZihQbGFuU3RhdGUgKikpOwogCW1l cmdlc3RhdGUtPm1lcmdlcGxhbnMgPSBtZXJnZXBsYW5zdGF0ZXM7CiAJbWVyZ2VzdGF0ZS0+bXNf bnBsYW5zID0gbnBsYW5zOwogCkBAIC0xNTEsNiArMTUzLDggQEAgRXhlY0luaXRNZXJnZUFwcGVu ZChNZXJnZUFwcGVuZCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCVBsYW4J ICAgKmluaXROb2RlID0gKFBsYW4gKikgbGlzdF9udGgobm9kZS0+bWVyZ2VwbGFucywgaSk7CiAK IAkJbWVyZ2VwbGFuc3RhdGVzW2orK10gPSBFeGVjSW5pdE5vZGUoaW5pdE5vZGUsIGVzdGF0ZSwg ZWZsYWdzKTsKKwkJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJCXJldHVybiBt ZXJnZXN0YXRlOwogCX0KIAogCW1lcmdlc3RhdGUtPnBzLnBzX1Byb2pJbmZvID0gTlVMTDsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNZXJnZWpvaW4uYwppbmRleCAwMGY5NmQwNDVlLi5lN2Y0NTEyNDE5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2Vqb2luLmMKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlam9pbi5jCkBAIC0xNDkwLDExICsxNDkwLDE1 IEBAIEV4ZWNJbml0TWVyZ2VKb2luKE1lcmdlSm9pbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGlu dCBlZmxhZ3MpCiAJbWVyZ2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3JlID0gbm9kZS0+c2tpcF9t YXJrX3Jlc3RvcmU7CiAKIAlvdXRlclBsYW5TdGF0ZShtZXJnZXN0YXRlKSA9IEV4ZWNJbml0Tm9k ZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxW YWxpZChlc3RhdGUpKQorCQlyZXR1cm4gbWVyZ2VzdGF0ZTsKIAlvdXRlckRlc2MgPSBFeGVjR2V0 UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZShtZXJnZXN0YXRlKSk7CiAJaW5uZXJQbGFuU3RhdGUo bWVyZ2VzdGF0ZSkgPSBFeGVjSW5pdE5vZGUoaW5uZXJQbGFuKG5vZGUpLCBlc3RhdGUsCiAJCQkJ CQkJCQkJCSAgbWVyZ2VzdGF0ZS0+bWpfU2tpcE1hcmtSZXN0b3JlID8KIAkJCQkJCQkJCQkJICBl ZmxhZ3MgOgogCQkJCQkJCQkJCQkgIChlZmxhZ3MgfCBFWEVDX0ZMQUdfTUFSSykpOworCWlmICgh RXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBtZXJnZXN0YXRlOwogCWlubmVy RGVzYyA9IEV4ZWNHZXRSZXN1bHRUeXBlKGlubmVyUGxhblN0YXRlKG1lcmdlc3RhdGUpKTsKIAog CS8qCkBAIC0xNjQyLDE4ICsxNjQ2LDYgQEAgRXhlY0VuZE1lcmdlSm9pbihNZXJnZUpvaW5TdGF0 ZSAqbm9kZSkKIHsKIAlNSjFfcHJpbnRmKCJFeGVjRW5kTWVyZ2VKb2luOiAlc1xuIiwKIAkJCSAg ICJlbmRpbmcgbm9kZSBwcm9jZXNzaW5nIik7Ci0KLQkvKgotCSAqIEZyZWUgdGhlIGV4cHJjb250 ZXh0Ci0JICovCi0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+anMucHMpOwotCi0JLyoKLQkg KiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlCi0JICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+ anMucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5tal9NYXJr ZWRUdXBsZVNsb3QpOwotCiAJLyoKIAkgKiBzaHV0IGRvd24gdGhlIHN1YnBsYW5zCiAJICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IDUwMDVkOGMwZDEuLmMyOGQ1 MDU4ZTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC0zOTg1LDYg KzM5ODUsOSBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAkJCQkJCQkgICBsaW5pdGlhbF9pbnQobm9kZS0+cmVzdWx0 UmVsYXRpb25zKSk7CiAJfQogCisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJ cmV0dXJuIE5VTEw7CisKIAkvKiBzZXQgdXAgZXBxc3RhdGUgd2l0aCBkdW1teSBzdWJwbGFuIGRh dGEgZm9yIHRoZSBtb21lbnQgKi8KIAlFdmFsUGxhblF1YWxJbml0KCZtdHN0YXRlLT5tdF9lcHFz dGF0ZSwgZXN0YXRlLCBOVUxMLCBOSUwsCiAJCQkJCSBub2RlLT5lcHFQYXJhbSwgbm9kZS0+cmVz dWx0UmVsYXRpb25zKTsKQEAgLTQwMTIsNiArNDAxNSw4IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUo TW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlpZiAocmVz dWx0UmVsSW5mbyAhPSBtdHN0YXRlLT5yb290UmVzdWx0UmVsSW5mbykKIAkJewogCQkJRXhlY0lu aXRSZXN1bHRSZWxhdGlvbihlc3RhdGUsIHJlc3VsdFJlbEluZm8sIHJlc3VsdFJlbGF0aW9uKTsK KwkJCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCQkJcmV0dXJuIE5VTEw7CiAK IAkJCS8qCiAJCQkgKiBGb3IgY2hpbGQgcmVzdWx0IHJlbGF0aW9ucywgc3RvcmUgdGhlIHJvb3Qg cmVzdWx0IHJlbGF0aW9uCkBAIC00MDM5LDYgKzQwNDQsOCBAQCBFeGVjSW5pdE1vZGlmeVRhYmxl KE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBOb3cg d2UgbWF5IGluaXRpYWxpemUgdGhlIHN1YnBsYW4uCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUobXRz dGF0ZSkgPSBFeGVjSW5pdE5vZGUoc3VicGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBtdHN0YXRlOwogCiAJLyoKIAkgKiBE byBhZGRpdGlvbmFsIHBlci1yZXN1bHQtcmVsYXRpb24gaW5pdGlhbGl6YXRpb24uCkBAIC00NDQ2 LDE3ICs0NDUzLDYgQEAgRXhlY0VuZE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUp CiAJCQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KG5vZGUtPm10X3Jvb3RfdHVwbGVfc2xv dCk7CiAJfQogCi0JLyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dAotCSAqLwotCUV4ZWNGcmVl RXhwckNvbnRleHQoJm5vZGUtPnBzKTsKLQotCS8qCi0JICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0 YWJsZQotCSAqLwotCWlmIChub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCi0JCUV4ZWNDbGVh clR1cGxlKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0KIAkvKgogCSAqIFRlcm1pbmF0 ZSBFUFEgZXhlY3V0aW9uIGlmIGFjdGl2ZQogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU5hbWVkdHVwbGVzdG9yZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVOYW1lZHR1cGxlc3RvcmVzY2FuLmMKaW5kZXggNDY4MzJhZDgyZi4uZTE0MmVmNTkzYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU5hbWVkdHVwbGVzdG9yZXNjYW4u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmFtZWR0dXBsZXN0b3Jlc2Nhbi5jCkBA IC0xNjQsMTcgKzE2NCw2IEBAIEV4ZWNJbml0TmFtZWRUdXBsZXN0b3JlU2NhbihOYW1lZFR1cGxl c3RvcmVTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFnCiB2b2lkCiBFeGVjRW5k TmFtZWRUdXBsZXN0b3JlU2NhbihOYW1lZFR1cGxlc3RvcmVTY2FuU3RhdGUgKm5vZGUpCiB7Ci0J LyoKLQkgKiBGcmVlIGV4cHJjb250ZXh0Ci0JICovCi0JRXhlY0ZyZWVFeHByQ29udGV4dCgmbm9k ZS0+c3MucHMpOwotCi0JLyoKLQkgKiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlCi0JICovCi0J aWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKLQkJRXhlY0NsZWFyVHVwbGUobm9k ZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5z c19TY2FuVHVwbGVTbG90KTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU5lc3Rsb29wLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTmVz dGxvb3AuYwppbmRleCBiM2Q1MmU2OWVjLi4wMTU4YTNlNTkyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTmVzdGxvb3AuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTmVzdGxvb3AuYwpAQCAtMjk1LDExICsyOTUsMTUgQEAgRXhlY0luaXROZXN0TG9vcChOZXN0 TG9vcCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogdmFsdWVzLgogCSAq LwogCW91dGVyUGxhblN0YXRlKG5sc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxhbihub2Rl KSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJ CXJldHVybiBubHN0YXRlOwogCWlmIChub2RlLT5uZXN0UGFyYW1zID09IE5JTCkKIAkJZWZsYWdz IHw9IEVYRUNfRkxBR19SRVdJTkQ7CiAJZWxzZQogCQllZmxhZ3MgJj0gfkVYRUNfRkxBR19SRVdJ TkQ7CiAJaW5uZXJQbGFuU3RhdGUobmxzdGF0ZSkgPSBFeGVjSW5pdE5vZGUoaW5uZXJQbGFuKG5v ZGUpLCBlc3RhdGUsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkK KwkJcmV0dXJuIG5sc3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgcmVzdWx0IHNsb3QsIHR5 cGUgYW5kIHByb2plY3Rpb24uCkBAIC0zNjMsMTcgKzM2Nyw2IEBAIEV4ZWNFbmROZXN0TG9vcChO ZXN0TG9vcFN0YXRlICpub2RlKQogewogCU5MMV9wcmludGYoIkV4ZWNFbmROZXN0TG9vcDogJXNc biIsCiAJCQkgICAiZW5kaW5nIG5vZGUgcHJvY2Vzc2luZyIpOwotCi0JLyoKLQkgKiBGcmVlIHRo ZSBleHByY29udGV4dAotCSAqLwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPmpzLnBzKTsK LQotCS8qCi0JICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZQotCSAqLwotCUV4ZWNDbGVhclR1 cGxlKG5vZGUtPmpzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0KIAkvKgogCSAqIGNsb3NlIGRv d24gc3VicGxhbnMKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVQ cm9qZWN0U2V0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUHJvamVjdFNldC5jCmluZGV4 IGY2ZmYzZGM0NGMuLjFiNDc3NGQ0ZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVQcm9qZWN0U2V0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVByb2plY3RT ZXQuYwpAQCAtMjQ3LDYgKzI0Nyw4IEBAIEV4ZWNJbml0UHJvamVjdFNldChQcm9qZWN0U2V0ICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIGNoaWxkIG5v ZGVzCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUoc3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVyUGxh bihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVzdGF0 ZSkpCisJCXJldHVybiBzdGF0ZTsKIAogCS8qCiAJICogd2UgZG9uJ3QgdXNlIGlubmVyIHBsYW4K QEAgLTMyMCwxNiArMzIyLDYgQEAgRXhlY0luaXRQcm9qZWN0U2V0KFByb2plY3RTZXQgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAogRXhlY0VuZFByb2plY3RTZXQoUHJv amVjdFNldFN0YXRlICpub2RlKQogewotCS8qCi0JICogRnJlZSB0aGUgZXhwcmNvbnRleHQKLQkg Ki8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5wcyk7Ci0KLQkvKgotCSAqIGNsZWFuIG91 dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1 bHRUdXBsZVNsb3QpOwotCiAJLyoKIAkgKiBzaHV0IGRvd24gc3VicGxhbnMKIAkgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZWN1cnNpdmV1bmlvbi5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKaW5kZXggZTc4MTAwMzkzNC4uY2E0 Zjc4Njg1ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVu aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVJlY3Vyc2l2ZXVuaW9uLmMKQEAg LTI0NCw3ICsyNDQsMTEgQEAgRXhlY0luaXRSZWN1cnNpdmVVbmlvbihSZWN1cnNpdmVVbmlvbiAq bm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBu b2RlcwogCSAqLwogCW91dGVyUGxhblN0YXRlKHJ1c3RhdGUpID0gRXhlY0luaXROb2RlKG91dGVy UGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKGVz dGF0ZSkpCisJCXJldHVybiBydXN0YXRlOwogCWlubmVyUGxhblN0YXRlKHJ1c3RhdGUpID0gRXhl Y0luaXROb2RlKGlubmVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBydXN0YXRlOwogCiAJLyoKIAkgKiBJZiBo YXNoaW5nLCBwcmVjb21wdXRlIGZtZ3IgbG9va3VwIGRhdGEgZm9yIGlubmVyIGxvb3AsIGFuZCBj cmVhdGUgdGhlCkBAIC0yNzIsOCArMjc2LDEwIEBAIHZvaWQKIEV4ZWNFbmRSZWN1cnNpdmVVbmlv bihSZWN1cnNpdmVVbmlvblN0YXRlICpub2RlKQogewogCS8qIFJlbGVhc2UgdHVwbGVzdG9yZXMg Ki8KLQl0dXBsZXN0b3JlX2VuZChub2RlLT53b3JraW5nX3RhYmxlKTsKLQl0dXBsZXN0b3JlX2Vu ZChub2RlLT5pbnRlcm1lZGlhdGVfdGFibGUpOworCWlmIChub2RlLT53b3JraW5nX3RhYmxlKQor CQl0dXBsZXN0b3JlX2VuZChub2RlLT53b3JraW5nX3RhYmxlKTsKKwlpZiAobm9kZS0+aW50ZXJt ZWRpYXRlX3RhYmxlKQorCQl0dXBsZXN0b3JlX2VuZChub2RlLT5pbnRlcm1lZGlhdGVfdGFibGUp OwogCiAJLyogZnJlZSBzdWJzaWRpYXJ5IHN0dWZmIGluY2x1ZGluZyBoYXNodGFibGUgKi8KIAlp ZiAobm9kZS0+dGVtcENvbnRleHQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlUmVzdWx0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlUmVzdWx0LmMKaW5kZXggNDIx OTcxMmQzMC4uZDRlYTEwMWNiZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVJlc3VsdC5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVSZXN1bHQuYwpAQCAtMjA4 LDYgKzIwOCw4IEBAIEV4ZWNJbml0UmVzdWx0KFJlc3VsdCAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJICogaW5pdGlhbGl6ZSBjaGlsZCBub2RlcwogCSAqLwogCW91dGVyUGxh blN0YXRlKHJlc3N0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwg ZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gcmVz c3RhdGU7CiAKIAkvKgogCSAqIHdlIGRvbid0IHVzZSBpbm5lciBwbGFuCkBAIC0yNDAsMTYgKzI0 Miw2IEBAIEV4ZWNJbml0UmVzdWx0KFJlc3VsdCAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiB2b2lkCiBFeGVjRW5kUmVzdWx0KFJlc3VsdFN0YXRlICpub2RlKQogewotCS8qCi0J ICogRnJlZSB0aGUgZXhwcmNvbnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2Rl LT5wcyk7Ci0KLQkvKgotCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8KLQlFeGVj Q2xlYXJUdXBsZShub2RlLT5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCiAJLyoKIAkgKiBzaHV0 IGRvd24gc3VicGxhbnMKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVTYW1wbGVzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2FtcGxlc2Nhbi5jCmlu ZGV4IGQ3ZTIyYjFkYmIuLjAyYTdkYjk2ZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVTYW1wbGVzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNhbXBs ZXNjYW4uYwpAQCAtMTI1LDYgKzEyNSw4IEBAIEV4ZWNJbml0U2FtcGxlU2NhbihTYW1wbGVTY2Fu ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY09wZW5TY2FuUmVsYXRp b24oZXN0YXRlLAogCQkJCQkJCSBub2RlLT5zY2FuLnNjYW5yZWxpZCwKIAkJCQkJCQkgZWZsYWdz KTsKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gTlVMTDsKIAog CS8qIHdlIHdvbid0IHNldCB1cCB0aGUgSGVhcFNjYW5EZXNjIHRpbGwgbGF0ZXIgKi8KIAlzY2Fu c3RhdGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9IE5VTEw7CkBAIC0xODUsMjEgKzE4Nyw5IEBA IEV4ZWNFbmRTYW1wbGVTY2FuKFNhbXBsZVNjYW5TdGF0ZSAqbm9kZSkKIAkvKgogCSAqIFRlbGwg c2FtcGxpbmcgZnVuY3Rpb24gdGhhdCB3ZSBmaW5pc2hlZCB0aGUgc2Nhbi4KIAkgKi8KLQlpZiAo bm9kZS0+dHNtcm91dGluZS0+RW5kU2FtcGxlU2NhbikKKwlpZiAobm9kZS0+dHNtcm91dGluZSAm JiBub2RlLT50c21yb3V0aW5lLT5FbmRTYW1wbGVTY2FuKQogCQlub2RlLT50c21yb3V0aW5lLT5F bmRTYW1wbGVTY2FuKG5vZGUpOwogCi0JLyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dAotCSAq LwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qCi0JICogY2xlYW4g b3V0IHRoZSB0dXBsZSB0YWJsZQotCSAqLwotCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBs ZVNsb3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7 Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0KIAkvKgogCSAq IGNsb3NlIGhlYXAgc2NhbgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVNlcXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMKaW5kZXgg NGRhMGYyOGY3Yi4uNDhlMjBhYTczNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBA IC0xNTMsNiArMTUzLDggQEAgRXhlY0luaXRTZXFTY2FuKFNlcVNjYW4gKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKQogCQlFeGVjT3BlblNjYW5SZWxhdGlvbihlc3RhdGUsCiAJCQkJ CQkJIG5vZGUtPnNjYW4uc2NhbnJlbGlkLAogCQkJCQkJCSBlZmxhZ3MpOworCWlmICghRXhlY1Bs YW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiBOVUxMOwogCiAJLyogYW5kIGNyZWF0ZSBz bG90IHdpdGggdGhlIGFwcHJvcHJpYXRlIHJvd3R5cGUgKi8KIAlFeGVjSW5pdFNjYW5UdXBsZVNs b3QoZXN0YXRlLCAmc2NhbnN0YXRlLT5zcywKQEAgLTE5MCwxOCArMTkyLDYgQEAgRXhlY0VuZFNl cVNjYW4oU2VxU2NhblN0YXRlICpub2RlKQogCSAqLwogCXNjYW5EZXNjID0gbm9kZS0+c3Muc3Nf Y3VycmVudFNjYW5EZXNjOwogCi0JLyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dAotCSAqLwot CUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qCi0JICogY2xlYW4gb3V0 IHRoZSB0dXBsZSB0YWJsZQotCSAqLwotCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNs b3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0J RXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0KIAkvKgogCSAqIGNs b3NlIGhlYXAgc2NhbgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVNldE9wLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYwppbmRleCA0YmMyNDA2 Yjg5Li43YTNhMTQyMjA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0 T3AuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2V0T3AuYwpAQCAtNTI4LDYgKzUy OCw4IEBAIEV4ZWNJbml0U2V0T3AoU2V0T3AgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZs YWdzKQogCWlmIChub2RlLT5zdHJhdGVneSA9PSBTRVRPUF9IQVNIRUQpCiAJCWVmbGFncyAmPSB+ RVhFQ19GTEFHX1JFV0lORDsKIAlvdXRlclBsYW5TdGF0ZShzZXRvcHN0YXRlKSA9IEV4ZWNJbml0 Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsKKwlpZiAoIUV4ZWNQbGFuU3Rp bGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gc2V0b3BzdGF0ZTsKIAlvdXRlckRlc2MgPSBFeGVj R2V0UmVzdWx0VHlwZShvdXRlclBsYW5TdGF0ZShzZXRvcHN0YXRlKSk7CiAKIAkvKgpAQCAtNTgy LDEzICs1ODQsOSBAQCBFeGVjSW5pdFNldE9wKFNldE9wICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwg aW50IGVmbGFncykKIHZvaWQKIEV4ZWNFbmRTZXRPcChTZXRPcFN0YXRlICpub2RlKQogewotCS8q IGNsZWFuIHVwIHR1cGxlIHRhYmxlICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+cHMucHNfUmVz dWx0VHVwbGVTbG90KTsKLQogCS8qIGZyZWUgc3Vic2lkaWFyeSBzdHVmZiBpbmNsdWRpbmcgaGFz aHRhYmxlICovCiAJaWYgKG5vZGUtPnRhYmxlQ29udGV4dCkKIAkJTWVtb3J5Q29udGV4dERlbGV0 ZShub2RlLT50YWJsZUNvbnRleHQpOwotCUV4ZWNGcmVlRXhwckNvbnRleHQoJm5vZGUtPnBzKTsK IAogCUV4ZWNFbmROb2RlKG91dGVyUGxhblN0YXRlKG5vZGUpKTsKIH0KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl U29ydC5jCmluZGV4IGM2YzcyYzZlNjcuLjNlYmJjNDY2MDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVTb3J0LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNv cnQuYwpAQCAtMjYzLDYgKzI2Myw4IEBAIEV4ZWNJbml0U29ydChTb3J0ICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAllZmxhZ3MgJj0gfihFWEVDX0ZMQUdfUkVXSU5EIHwgRVhF Q19GTEFHX0JBQ0tXQVJEIHwgRVhFQ19GTEFHX01BUkspOwogCiAJb3V0ZXJQbGFuU3RhdGUoc29y dHN0YXRlKSA9IEV4ZWNJbml0Tm9kZShvdXRlclBsYW4obm9kZSksIGVzdGF0ZSwgZWZsYWdzKTsK KwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm4gc29ydHN0YXRlOwog CiAJLyoKIAkgKiBJbml0aWFsaXplIHNjYW4gc2xvdCBhbmQgdHlwZS4KQEAgLTMwMywxMyArMzA1 LDYgQEAgRXhlY0VuZFNvcnQoU29ydFN0YXRlICpub2RlKQogCVNPMV9wcmludGYoIkV4ZWNFbmRT b3J0OiAlc1xuIiwKIAkJCSAgICJzaHV0dGluZyBkb3duIHNvcnQgbm9kZSIpOwogCi0JLyoKLQkg KiBjbGVhbiBvdXQgdGhlIHR1cGxlIHRhYmxlCi0JICovCi0JRXhlY0NsZWFyVHVwbGUobm9kZS0+ c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0JLyogbXVzdCBkcm9wIHBvaW50ZXIgdG8gc29ydCByZXN1 bHQgdHVwbGUgKi8KLQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNs b3QpOwotCiAJLyoKIAkgKiBSZWxlYXNlIHR1cGxlc29ydCByZXNvdXJjZXMKIAkgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVTdWJxdWVyeXNjYW4uYwppbmRleCA0MjQ3MWJmYzA0Li4zYzVjN2My ZWJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU3VicXVlcnlzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVN1YnF1ZXJ5c2Nhbi5jCkBAIC0xMjQsNiAr MTI0LDggQEAgRXhlY0luaXRTdWJxdWVyeVNjYW4oU3VicXVlcnlTY2FuICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKiBpbml0aWFsaXplIHN1YnF1ZXJ5CiAJICovCiAJc3Vi cXVlcnlzdGF0ZS0+c3VicGxhbiA9IEV4ZWNJbml0Tm9kZShub2RlLT5zdWJwbGFuLCBlc3RhdGUs IGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIHN1 YnF1ZXJ5c3RhdGU7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgc2NhbiBzbG90IGFuZCB0eXBlIChu ZWVkZWQgYnkgRXhlY0Fzc2lnblNjYW5Qcm9qZWN0aW9uSW5mbykKQEAgLTE2NywxOCArMTY5LDYg QEAgRXhlY0luaXRTdWJxdWVyeVNjYW4oU3VicXVlcnlTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0 ZSwgaW50IGVmbGFncykKIHZvaWQKIEV4ZWNFbmRTdWJxdWVyeVNjYW4oU3VicXVlcnlTY2FuU3Rh dGUgKm5vZGUpCiB7Ci0JLyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dAotCSAqLwotCUV4ZWNG cmVlRXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qCi0JICogY2xlYW4gb3V0IHRoZSB1 cHBlciB0dXBsZSB0YWJsZQotCSAqLwotCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNs b3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0J RXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0KIAkvKgogCSAqIGNs b3NlIGRvd24gc3VicXVlcnkKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVUYWJsZUZ1bmNzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVGFibGVGdW5j c2Nhbi5jCmluZGV4IDc5MWNiZDIzNzIuLmE2MGRjZDQ5NDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVUYWJsZUZ1bmNzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVRhYmxlRnVuY3NjYW4uYwpAQCAtMjEzLDE4ICsyMTMsNiBAQCBFeGVjSW5pdFRhYmxl RnVuY1NjYW4oVGFibGVGdW5jU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3Mp CiB2b2lkCiBFeGVjRW5kVGFibGVGdW5jU2NhbihUYWJsZUZ1bmNTY2FuU3RhdGUgKm5vZGUpCiB7 Ci0JLyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dAotCSAqLwotCUV4ZWNGcmVlRXhwckNvbnRl eHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qCi0JICogY2xlYW4gb3V0IHRoZSB0dXBsZSB0YWJsZQot CSAqLwotCWlmIChub2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCi0JCUV4ZWNDbGVhclR1 cGxlKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9k ZS0+c3Muc3NfU2NhblR1cGxlU2xvdCk7Ci0KIAkvKgogCSAqIFJlbGVhc2UgdHVwbGVzdG9yZSBy ZXNvdXJjZXMKIAkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRy YW5nZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVUaWRyYW5nZXNjYW4uYwppbmRl eCAyMTI0YzU1ZWY1Li5kMzM3ZjNkNTRhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlVGlkcmFuZ2VzY2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVRpZHJh bmdlc2Nhbi5jCkBAIC0zMzEsMTggKzMzMSw2IEBAIEV4ZWNFbmRUaWRSYW5nZVNjYW4oVGlkUmFu Z2VTY2FuU3RhdGUgKm5vZGUpCiAKIAlpZiAoc2NhbiAhPSBOVUxMKQogCQl0YWJsZV9lbmRzY2Fu KHNjYW4pOwotCi0JLyoKLQkgKiBGcmVlIHRoZSBleHByY29udGV4dAotCSAqLwotCUV4ZWNGcmVl RXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKLQotCS8qCi0JICogY2xlYXIgb3V0IHR1cGxlIHRh YmxlIHNsb3RzCi0JICovCi0JaWYgKG5vZGUtPnNzLnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCkKLQkJ RXhlY0NsZWFyVHVwbGUobm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KTsKLQlFeGVjQ2xl YXJUdXBsZShub2RlLT5zcy5zc19TY2FuVHVwbGVTbG90KTsKIH0KIAogLyogLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt Mzg2LDYgKzM3NCw4IEBAIEV4ZWNJbml0VGlkUmFuZ2VTY2FuKFRpZFJhbmdlU2NhbiAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICogb3BlbiB0aGUgc2NhbiByZWxhdGlvbgog CSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9k ZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0 YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAl0aWRyYW5nZXN0YXRlLT5zcy5zc19jdXJyZW50UmVs YXRpb24gPSBjdXJyZW50UmVsYXRpb247CiAJdGlkcmFuZ2VzdGF0ZS0+c3Muc3NfY3VycmVudFNj YW5EZXNjID0gTlVMTDsJLyogbm8gdGFibGUgc2NhbiBoZXJlICovCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZVRpZHNjYW4uYwppbmRleCA4NjJiZDAzMzBiLi45NjM3ZjM1NGIyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlVGlkc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVUaWRzY2FuLmMKQEAgLTQ3MiwxOCArNDcyLDYgQEAgRXhlY0VuZFRpZFNjYW4oVGlkU2Nh blN0YXRlICpub2RlKQogewogCWlmIChub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MpCiAJCXRh YmxlX2VuZHNjYW4obm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKTsKLQotCS8qCi0JICogRnJl ZSB0aGUgZXhwcmNvbnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5zcy5w cyk7Ci0KLQkvKgotCSAqIGNsZWFyIG91dCB0dXBsZSB0YWJsZSBzbG90cwotCSAqLwotCWlmIChu b2RlLT5zcy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpCi0JCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNz LnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0JRXhlY0NsZWFyVHVwbGUobm9kZS0+c3Muc3NfU2Nh blR1cGxlU2xvdCk7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTUyOSw2ICs1MTcsOCBAQCBFeGVjSW5p dFRpZFNjYW4oVGlkU2NhbiAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJICog b3BlbiB0aGUgc2NhbiByZWxhdGlvbgogCSAqLwogCWN1cnJlbnRSZWxhdGlvbiA9IEV4ZWNPcGVu U2NhblJlbGF0aW9uKGVzdGF0ZSwgbm9kZS0+c2Nhbi5zY2FucmVsaWQsIGVmbGFncyk7CisJaWYg KCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwkJcmV0dXJuIE5VTEw7CiAKIAl0aWRzdGF0 ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uID0gY3VycmVudFJlbGF0aW9uOwogCXRpZHN0YXRlLT5z cy5zc19jdXJyZW50U2NhbkRlc2MgPSBOVUxMOyAvKiBubyBoZWFwIHNjYW4gaGVyZSAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVVuaXF1ZS5jCmluZGV4IDQ1MDM1ZDc0ZmEuLjI4NjMwZTM4MGUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVVbmlxdWUuYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlVW5pcXVlLmMKQEAgLTEzNiw2ICsxMzYsOCBAQCBFeGVjSW5pdFVuaXF1 ZShVbmlxdWUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIHRoZW4gaW5p dGlhbGl6ZSBvdXRlciBwbGFuCiAJICovCiAJb3V0ZXJQbGFuU3RhdGUodW5pcXVlc3RhdGUpID0g RXhlY0luaXROb2RlKG91dGVyUGxhbihub2RlKSwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhl Y1BsYW5TdGlsbFZhbGlkKGVzdGF0ZSkpCisJCXJldHVybiB1bmlxdWVzdGF0ZTsKIAogCS8qCiAJ ICogSW5pdGlhbGl6ZSByZXN1bHQgc2xvdCBhbmQgdHlwZS4gVW5pcXVlIG5vZGVzIGRvIG5vIHBy b2plY3Rpb25zLCBzbwpAQCAtMTY4LDExICsxNzAsNiBAQCBFeGVjSW5pdFVuaXF1ZShVbmlxdWUg Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogdm9pZAogRXhlY0VuZFVuaXF1ZShV bmlxdWVTdGF0ZSAqbm9kZSkKIHsKLQkvKiBjbGVhbiB1cCB0dXBsZSB0YWJsZSAqLwotCUV4ZWND bGVhclR1cGxlKG5vZGUtPnBzLnBzX1Jlc3VsdFR1cGxlU2xvdCk7Ci0KLQlFeGVjRnJlZUV4cHJD b250ZXh0KCZub2RlLT5wcyk7Ci0KIAlFeGVjRW5kTm9kZShvdXRlclBsYW5TdGF0ZShub2RlKSk7 CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVWYWx1ZXNzY2FuLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlVmFsdWVzc2Nhbi5jCmluZGV4IDMyYWNlNjMwMTcu LjNmODY3ODNhZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVWYWx1ZXNz Y2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVZhbHVlc3NjYW4uYwpAQCAtMzI4 LDE5ICszMjgsNiBAQCBFeGVjSW5pdFZhbHVlc1NjYW4oVmFsdWVzU2NhbiAqbm9kZSwgRVN0YXRl ICplc3RhdGUsIGludCBlZmxhZ3MpCiB2b2lkCiBFeGVjRW5kVmFsdWVzU2NhbihWYWx1ZXNTY2Fu U3RhdGUgKm5vZGUpCiB7Ci0JLyoKLQkgKiBGcmVlIGJvdGggZXhwcmNvbnRleHRzCi0JICovCi0J RXhlY0ZyZWVFeHByQ29udGV4dCgmbm9kZS0+c3MucHMpOwotCW5vZGUtPnNzLnBzLnBzX0V4cHJD b250ZXh0ID0gbm9kZS0+cm93Y29udGV4dDsKLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5z cy5wcyk7Ci0KLQkvKgotCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8KLQlpZiAo bm9kZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5z cy5wcy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1Nj YW5UdXBsZVNsb3QpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93 QWdnLmMKaW5kZXggMzEwYWMyM2UzYS4uYTQxNTNiZTQ5NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVXaW5kb3dBZ2cuYwpAQCAtMjQ1OCw2ICsyNDU4LDggQEAgRXhlY0luaXRXaW5kb3dBZ2coV2lu ZG93QWdnICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKi8KIAlvdXRlclBs YW4gPSBvdXRlclBsYW4obm9kZSk7CiAJb3V0ZXJQbGFuU3RhdGUod2luc3RhdGUpID0gRXhlY0lu aXROb2RlKG91dGVyUGxhbiwgZXN0YXRlLCBlZmxhZ3MpOworCWlmICghRXhlY1BsYW5TdGlsbFZh bGlkKGVzdGF0ZSkpCisJCXJldHVybiB3aW5zdGF0ZTsKIAogCS8qCiAJICogaW5pdGlhbGl6ZSBz b3VyY2UgdHVwbGUgdHlwZSAod2hpY2ggaXMgYWxzbyB0aGUgdHVwbGUgdHlwZSB0aGF0IHdlJ2xs CkBAIC0yNjkxLDE3ICsyNjkzLDYgQEAgRXhlY0VuZFdpbmRvd0FnZyhXaW5kb3dBZ2dTdGF0ZSAq bm9kZSkKIAlFeGVjQ2xlYXJUdXBsZShub2RlLT5hZ2dfcm93X3Nsb3QpOwogCUV4ZWNDbGVhclR1 cGxlKG5vZGUtPnRlbXBfc2xvdF8xKTsKIAlFeGVjQ2xlYXJUdXBsZShub2RlLT50ZW1wX3Nsb3Rf Mik7Ci0JaWYgKG5vZGUtPmZyYW1laGVhZF9zbG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5m cmFtZWhlYWRfc2xvdCk7Ci0JaWYgKG5vZGUtPmZyYW1ldGFpbF9zbG90KQotCQlFeGVjQ2xlYXJU dXBsZShub2RlLT5mcmFtZXRhaWxfc2xvdCk7Ci0KLQkvKgotCSAqIEZyZWUgYm90aCB0aGUgZXhw ciBjb250ZXh0cy4KLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5zcy5wcyk7Ci0J bm9kZS0+c3MucHMucHNfRXhwckNvbnRleHQgPSBub2RlLT50bXBjb250ZXh0OwotCUV4ZWNGcmVl RXhwckNvbnRleHQoJm5vZGUtPnNzLnBzKTsKIAogCWZvciAoaSA9IDA7IGkgPCBub2RlLT5udW1h Z2dzOyBpKyspCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdvcmt0 YWJsZXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXb3JrdGFibGVzY2FuLmMKaW5k ZXggMGMxMzQ0ODIzNi4uY2M2M2RkZmVjYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZVdvcmt0YWJsZXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV29y a3RhYmxlc2Nhbi5jCkBAIC0xOTAsMTcgKzE5MCw2IEBAIEV4ZWNJbml0V29ya1RhYmxlU2NhbihX b3JrVGFibGVTY2FuICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIHZvaWQKIEV4 ZWNFbmRXb3JrVGFibGVTY2FuKFdvcmtUYWJsZVNjYW5TdGF0ZSAqbm9kZSkKIHsKLQkvKgotCSAq IEZyZWUgZXhwcmNvbnRleHQKLQkgKi8KLQlFeGVjRnJlZUV4cHJDb250ZXh0KCZub2RlLT5zcy5w cyk7Ci0KLQkvKgotCSAqIGNsZWFuIG91dCB0aGUgdHVwbGUgdGFibGUKLQkgKi8KLQlpZiAobm9k ZS0+c3MucHMucHNfUmVzdWx0VHVwbGVTbG90KQotCQlFeGVjQ2xlYXJUdXBsZShub2RlLT5zcy5w cy5wc19SZXN1bHRUdXBsZVNsb3QpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnNzLnNzX1NjYW5U dXBsZVNsb3QpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCBj Njc3ZTQ5MGQ3Li44ZWM2MzZjYWI4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTE5LDYg KzE5LDcgQEAKICNpbmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5oIgogI2luY2x1ZGUgIm5vZGVz L3BhcnNlbm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0 aWxzL3BsYW5jYWNoZS5oIgogCiAKIC8qCkBAIC0yNTYsNiArMjU3LDE3IEBAIGV4dGVybiB2b2lk IEV4ZWNFbmROb2RlKFBsYW5TdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjU2h1dGRvd25O b2RlKFBsYW5TdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjU2V0VHVwbGVCb3VuZChpbnQ2 NCB0dXBsZXNfbmVlZGVkLCBQbGFuU3RhdGUgKmNoaWxkX25vZGUpOwogCisvKgorICogSXMgdGhl IGNhY2hlZCBwbGFuLCBpZiBhbnksIHN0aWxsIHZhbGlkIGF0IHRoaXMgcG9pbnQ/ICBUaGF0IGlz LCBub3QKKyAqIGludmFsaWRhdGVkIGJ5IHRoZSBpbmNvbWluZyBpbnZhbGlkYXRpb24gbWVzc2Fn ZXMgdGhhdCBoYXZlIGJlZW4gcHJvY2Vzc2VkCisgKiByZWNlbnRseS4KKyAqLworc3RhdGljIGlu bGluZSBib29sCitFeGVjUGxhblN0aWxsVmFsaWQoRVN0YXRlICplc3RhdGUpCit7CisJcmV0dXJu IGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbiA9PSBOVUxMID8gdHJ1ZSA6CisJCUNhY2hlZFBsYW5TdGls bFZhbGlkKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbik7Cit9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVj UHJvY05vZGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggY2I3MTRmNGExOS4uNzE5YTcyODMxOSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKQEAgLTYyMyw2ICs2MjMsOCBAQCB0eXBlZGVmIHN0cnVjdCBF U3RhdGUKIAkJCQkJCQkJCQkgKiBFeGVjUm93TWFya3MsIG9yIE5VTEwgaWYgbm9uZSAqLwogCUxp c3QJICAgKmVzX3J0ZXBlcm1pbmZvczsJLyogTGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mbyAqLwog CVBsYW5uZWRTdG10ICplc19wbGFubmVkc3RtdDsJLyogbGluayB0byB0b3Agb2YgcGxhbiB0cmVl ICovCisJc3RydWN0IENhY2hlZFBsYW4gICplc19jYWNoZWRwbGFuOwkvKiBDYWNoZWRQbGFuIGlm IHBsYW5uZWRzdG10IGlzIGZyb20sCisJCQkJCQkJCQkJICogb25lIG9yIE5VTEwgaWYgbm90ICov CiAJY29uc3QgY2hhciAqZXNfc291cmNlVGV4dDsJLyogU291cmNlIHRleHQgZnJvbSBRdWVyeURl c2MgKi8KIAogCUp1bmtGaWx0ZXIgKmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1sZXZlbCBqdW5rIGZp bHRlciwgaWYgYW55ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCmluZGV4IDkxNmU1OWQ5ZmUuLmM4M2E2 N2ZlYTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oCkBAIC0yMjEsNiArMjIxLDIwIEBAIGV4dGVybiBD YWNoZWRQbGFuICpHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJ CQkJCQkJCSBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCQkJCQkJCQkgUmVzb3VyY2VPd25l ciBvd25lciwKIAkJCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKKworLyoKKyAq IENhY2hlZFBsYW5TdGlsbFZhbGlkCisgKgkJUmV0dXJucyBpZiBhIGNhY2hlZCBnZW5lcmljIHBs YW4gaXMgc3RpbGwgdmFsaWQKKyAqCisgKiBDYWxsZWQgYnkgdGhlIGV4ZWN1dG9yIG9uIGV2ZXJ5 IHJlbGF0aW9uIGxvY2sgdGFrZW4gd2hlbiBpbml0aWFsaXppbmcgdGhlCisgKiBwbGFuIHRyZWUg aW4gdGhlIENhY2hlZFBsYW4uCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorQ2FjaGVkUGxhblN0 aWxsVmFsaWQoQ2FjaGVkUGxhbiAqY3BsYW4pCit7CisJcmV0dXJuIGNwbGFuLT5pc192YWxpZDsK K30KKwogZXh0ZXJuIHZvaWQgUmVsZWFzZUNhY2hlZFBsYW4oQ2FjaGVkUGxhbiAqcGxhbiwgUmVz b3VyY2VPd25lciBvd25lcik7CiAKIGV4dGVybiBib29sIENhY2hlZFBsYW5BbGxvd3NTaW1wbGVW YWxpZGl0eUNoZWNrKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCi0tIAoyLjM1LjMKCg== --000000000000bcafc906029f0516--