Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vQvx8-002Oa9-38 for pgsql-hackers@arkaria.postgresql.org; Wed, 03 Dec 2025 23:08:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vQvx7-00GvNC-0g for pgsql-hackers@arkaria.postgresql.org; Wed, 03 Dec 2025 23:08:05 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vQvx6-00GvMw-0d for pgsql-hackers@lists.postgresql.org; Wed, 03 Dec 2025 23:08:05 +0000 Received: from mail-ed1-x534.google.com ([2a00:1450:4864:20::534]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vQvwu-0030QY-2g for pgsql-hackers@lists.postgresql.org; Wed, 03 Dec 2025 23:08:03 +0000 Received: by mail-ed1-x534.google.com with SMTP id 4fb4d7f45d1cf-6419b7b4b80so359628a12.2 for ; Wed, 03 Dec 2025 15:07:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1764803272; x=1765408072; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=d0c0ILcHFlbmOHKlhDWgxzkXurFb1MK8Ruj6IMZxMX4=; b=G6cu1fn0a4AGexa2h7YOQbTnhplnoeD0mnptA8Fhj8ef/C2OJYeqxvDilZACfIGK+7 2t7Q2EfWWL4COGfRgt8O98L3V9eHayUAAYFUMwOQw5Z88Fo/qqDFWDmnPYDLXrlONGy/ UeZkKDZQT612k8nzaLUUO1ufiebPi3BH9UETtoiNg7jfmz4OTyz1E8ZoA8uJCA/GA6yj VE0GzazzpMsXa68vJH6AY5CstYyFgy4omhQWBuVm5+C++zS0G/w+IzDpHUwD3mC5dOuo y0uLpa2GjYnq+rrBTA1GKCkpGczJdKOmVDsiwRCSGyOx+sYSd8FBKYXfenSxgfxzT6FM nrdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764803272; x=1765408072; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=d0c0ILcHFlbmOHKlhDWgxzkXurFb1MK8Ruj6IMZxMX4=; b=j7PTIpcF7wdDXXWKKerdQLG6npkA5d3UV34Oi6o6fMLAUYlEaEp7zFPCK4RxXT01fg l8TCWBxksS8W6s2k95TCKki86+HR1mYAePr3E9NMnxDgxiHuHaANirluiBc9ckzRo+ky P+r3oU99tDw3AhCo9u7mZyUvWgGl3gXouJmQgCDSLTsFQsUHkVCYVGUkQuK515tsBZci Hnq0cmdwMcdpTdT3TrmI8IV4j6SDUkB+7gAi6Snvq2u2Y+M9TAYQ5ofvQdW5q/hgbD0h 980wbF4XlXZ/1Z46uguI/Xpz3xQMSi9PzJVQuKvgFSt+2BR9ATM0E+Zr5IFVjKx4/4SX fsLQ== X-Forwarded-Encrypted: i=1; AJvYcCWmV6Z1e09XOcUqslTQ8ZG62Gl09OSDhjOgtGQKe/2uekNCS8vbq/RTf8i3KIXRV98YWoIOjJmRQyLmpcnZ@lists.postgresql.org X-Gm-Message-State: AOJu0YzSMmgFk6INuM+CPAez1f2peIw927C4a7JKY2l8qQvN1UxgKfJz z7URgBoMbs4zJ58FVcPYS2RLXjHORrJixNrsehnvhFoNyUpayQMOcY7mtPS/23wfeDdLPCAAADo lq6aqbQY4qysDx4sMNhtdzTjSDCsvs+Q= X-Gm-Gg: ASbGncvmYSFVCW3Rk9rvRXRD123tN7IC59tJoZSk6pn95fuzbwMz36NNRvz20hSVexP xJSSsMWELIVBoSmiQCWC6WBwYzPtmN45eRfBzVTlgbbvtLkgrBW7o8g+BtIgcsribbNqIHE9EQw 0MgpnUeKgZoDEfOiykEr2auwXiT1JSuUW0Hn8y3pH6tDSEEgGsoquOcg0MUeks5OeLWcdmAbWYj REKUYEJc3rYWgHc23QtTGAUUb58vpr8jG1sBS/QlWTxTQF40WZQtRXv+mmBX2gR3+dvT62q X-Google-Smtp-Source: AGHT+IHK+c8LP1EKIzgLkE+Iud4ocKKjB74jUZUC81Dse47efZt3Uj5tHRr0ibGW2NKSknYRVWCraVklR3jmieO4Uo4= X-Received: by 2002:a05:6402:3492:b0:639:4c9:9c9e with SMTP id 4fb4d7f45d1cf-6479c4959c8mr4016791a12.10.1764803271756; Wed, 03 Dec 2025 15:07:51 -0800 (PST) MIME-Version: 1.0 References: <2wk7jo4m4qwh5sn33pfgerdjfujebbccsmmlownybddbh6nawl@mdyyqpqzxjek> In-Reply-To: From: Melanie Plageman Date: Wed, 3 Dec 2025 18:07:38 -0500 X-Gm-Features: AWmQ_bm6adxuOt2X4use9ERCtoW80zaYUDa7900NVu3lG7fdSQC03Ylb7Yycdzo Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Andres Freund Cc: Kirill Reshke , Robert Haas , Andrey Borodin , PostgreSQL Hackers , Heikki Linnakangas , Chao Li Content-Type: multipart/mixed; boundary="0000000000001ceba70645144821" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001ceba70645144821 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks for the review! All the small changes you suggested I made in attached v23 unless otherwise noted below. On Mon, Nov 24, 2025 at 5:24=E2=80=AFPM Andres Freund = wrote: > > On 2025-11-20 12:19:58 -0500, Melanie Plageman wrote: > > Subject: [PATCH v22 1/9] Split heap_page_prune_and_freeze() into helper= s > > One minor thing: It's slightly odd that prune_freeze_plan() gets an oid > argument, prune_freeze_setup() gets the entire prstate, > heap_page_will_freeze() gets the Relation. It's what they need, but still= a > bit odd. They all get the PruneState actually. I've committed this patch (but actually have to do a follow-on commit to silence coverity. Will do that next.) > > Subject: [PATCH v22 2/9] Eliminate XLOG_HEAP2_VISIBLE from vacuum phase= I > > prune/freeze > > > Hm. This change makes sense, but unfortunately I find it somewhat hard to > review. There are a lot of changes that don't obviously work towards one > goal in this commit. I've split up the first commit into 4 patches in attached v23 (0002-0005). They are not meant to be committed separately but are separate only for ease of review. They comprise the logical steps for getting to the final code state. I originally had it split up but got feedback it was more work to review them each. So, let's see how this goes. > >@@ -238,6 +239,16 @@ typedef struct PruneFreezeParams > > >+ * vmbuffer is the buffer that must already contain contain the req= uired > >+ * block of the visibility map if we are to update it. blk_known_av= is the > >+ * visibility status of the heap block as of the last call to > >+ * find_next_unskippable_block(). > >+ */ > >+ Buffer vmbuffer; > >+ bool blk_known_av; > > What is blk_known_av set to if the block is known to not be all visible? > Compared to the case where we did not yet determine the visibility status= of > the block? blk_known_av should always be set to false if the caller doesn't know. It is used as an optimization. I've added to the comment in this struct to clarify that. More on this further down in my mail. > > + * Decide whether to set the visibility map bits for heap_blk, using > > + * information from PruneState and blk_known_av. Some callers may alre= ady > > + * have examined this page=E2=80=99s VM bits (e.g., VACUUM in the prev= ious > > + * heap_vac_scan_next_block() call) and can pass that along. > > That's not entirely trivial to follow, tbh. As mentioned above, it's not = clear > to me how the state of a block where did determine that the block is *not= * > all-visible is represented. There is no need to distinguish between knowing it is not all-visible and not knowing if it is all-visible. That is, "not known" and "known not" are the same for our purposes. This is only an optimization and not needed for correctness. I've tried to add comments to this effect in various places where blk_known_av is used. > > + else if (blk_known_av && !PageIsAllVisible(heap_page) && > > + visibilitymap_get_status(relation, heap_blk, &vm= buffer) !=3D 0) > > + { > > + ereport(WARNING, > > + (errcode(ERRCODE_DATA_CORRUPTED), > > + errmsg("page is not marked all-visible b= ut visibility map bit is set in relation \"%s\" page %u", > > + RelationGetRelationName(r= elation), heap_blk))); > > + > > + visibilitymap_clear(relation, heap_blk, vmbuffer, > > + VISIBILITYMAP_VAL= ID_BITS); > > Wait, why is it ok to perform this check iff blk_known_av is set? This is existing logic in vacuum. It would be okay to perform the check even if blk_known_av is false but might be too expensive for the common case where the page is not all-visible (especially on-access). The next vacuum should be able to enter this code path and fix it. Or do you think it will be cheap enough because the caller will have read in and pinned the VM page? > > + old_vmbits =3D visibilitymap_set_vmbits(blockno, > > + = vmbuffer, new_vmbits, > > + = params->relation->rd_locator); > > + if (old_vmbits =3D=3D new_vmbits) > > + { > > + LockBuffer(vmbuffer, BUFFER_LOCK_UNLOCK); > > + /* Unset so we don't emit WAL since no ch= ange occurred */ > > + do_set_vm =3D false; > > + } > > + } > > What can lead to this path being reached? Doesn't this mean that somethin= g > changed the state of the VM while we were holding an exclusive lock on th= e > heap buffer? This shouldn't be in this commit (I've fixed that). However, it is needed once we have on-access VM setting because we could have set the page all-visible in the VM on-access in between when find_next_unskippable_block() first checks the VM and sets all_visible_according_to_vm/blk_known_av and when we take the lock and prune/freeze the page. > > log_heap_prune_and_freeze(params->relation, buffe= r, > > - = InvalidBuffer, /* vmbuffer */ > > - = 0, /* vmflags */ > > + = do_set_vm ? vmbuffer : InvalidBuffer, > > + = do_set_vm ? new_vmbits : 0, > > = conflict_xid, > > - = true, params->reason, > > + = true, /* cleanup lock */ > > + = do_set_pd_vis, > > + = params->reason, > > = prstate.frozen, prstate.nfrozen, > > = prstate.redirected, prstate.nredirected, > > = prstate.nowdead, prstate.ndead, > > This function is now taking 16 parameters :/ Is this complaint about readability or performance of parameter passing? Because if it's the latter, I can't imagine that will be noticeable when compared to the overhead of emitting a WAL record. I could add a struct just for passing the parameters to the log_heap_prune_and_freeze(). Something like: typedef struct PruneFreezeChanges { int nredirected; int ndead; int nunused; int nfrozen; OffsetNumber *redirected; OffsetNumber *nowdead; OffsetNumber *nowunused; HeapTupleFreeze *frozen; } PruneFreezeChanges; PruneFreezeChanges c =3D { .redirected =3D prstate.redirected, .nredirected =3D prstate.nredirected, .ndead =3D prstate.ndead, .nowdead =3D prstate.nowdead, .nunused =3D prstate.nunused, .nowunused =3D prstate.nowunused, .nfrozen =3D prstate.nfrozen, .frozen =3D prstate.frozen, }; log_heap_prune_and_freeze(params->relation, buffer, InvalidBuffer, /* vmbuffer */ 0, /* vmflags */ conflict_xid, true, params->reaso= n, c); However, I fear it is a bit confusing to have this struct just to pass the parameters to the log_heap_prune_and_freeze(). We can't use that struct inline in the PruneState because then we would need all the arrays to be inline in the PruneFreezeChanges struct which would cause 4*MaxHeapTuplesPerPage stack allocated OffsetNumbers in vacuum phase III than it currently has and needs. The only other related parameters I see that could be stuck into a struct are vmflags and set_pd_all_vis -- maybe called VisiChanges or HeapPageVisiChanges. But again, I'm not sure if it is worth adding a new struct for this. > > +#ifdef USE_ASSERT_CHECKING > > + if (prstate.all_visible) > > + { > > + TransactionId debug_cutoff; > > + bool debug_all_frozen; > > + > > + Assert(prstate.lpdead_items =3D=3D 0); > > + Assert(prstate.cutoffs); > > + > > + if (!heap_page_is_all_visible(params->relation, buffer, > > + = prstate.cutoffs->OldestXmin, > > + = &debug_all_frozen, > > + = &debug_cutoff, off_loc)) > > + Assert(false); > > I don't love Assert(false), because the message for the assert failure is > pretty much meaningless. Sometimes it's hard to avoid, but here you have = an if > () that has no body other than Assert(false)? Just Assert the expression > directly. This is existing code. I agree it's weird, but I remember Peter saying something about why he did it this way that I no longer remember. Anyway, 0001 changes the assert as you suggest. > > Subject: [PATCH v22 3/9] Eliminate XLOG_HEAP2_VISIBLE from empty-page v= acuum > > > > As part of removing XLOG_HEAP2_VISIBLE records, phase I of VACUUM now > > marks empty pages all-visible in a XLOG_HEAP2_PRUNE_VACUUM_SCAN record. > > This whole business of treating empty pages as all-visible continues to n= ot > make any sense to me. Particularly in combination with a not crashsafe FS= M it > just seems ... unhelpful. It also means that there there's a decent chanc= e of > extra WAL when bulk extending. But that's not the fault of this change. Is the argument for setting them av/af that we can skip them more easily in future vacuums (i.e. not have to read in the page and take a lock etc)? > > Subject: [PATCH v22 4/9] Remove XLOG_HEAP2_VISIBLE entirely > > > > As no remaining users emit XLOG_HEAP2_VISIBLE records. > > This includes deleting the xl_heap_visible struct and all functions > > responsible for emitting or replaying XLOG_HEAP2_VISIBLE records. > > Probably worth mentioning that this changes the VM API. I've added a mention about this in the commit. Are you imagining I have any comments anywhere about how XLOG_HEAP2_VISIBLE used to exist? I realized I need to bump XLOG_PAGE_MAGIC in this commit because the code to replay XLOG_HEAP2_VISIBLE records is gone now. What I'm not sure is if I have to bump it in some of the other commits that change which WAL records are emitted by a particular operation (e.g. not emitting a separate VM record from phase I of vacuum). > > - * - Page pruning, in VACUUM's 1st pass or on access: Some items are > > + * - Page pruning, in vacuum phase I or on-access: Some items are > > * redirected, some marked dead, and some removed altogether. > > * > > - * - Freezing: Items are marked as 'frozen'. > > + * - Freezing: During vacuum phase I, items are marked as 'frozen' > > * > > - * - Vacuum, 2nd pass: Items that are already LP_DEAD are marked as un= used. > > + * - Reaping: During vacuum phase III, items that are already LP_DEAD = are > > + * marked as unused. > > * > > - * They have enough commonalities that we use a single WAL record for = them > > + * - VM updates: After vacuum phases I and III, the heap page may be m= arked > > + * all-visible and all-frozen. > > + * > > + * These changes all happen together, so we use a single WAL record fo= r them > > * all. > > * > > * If replaying the record requires a cleanup lock, pass cleanup_lock = =3D > > true. > > How's that related to the commit's subject? Oops, I moved it to the relevant commit. > > Subject: [PATCH v22 5/9] Rename GlobalVisTestIsRemovableXid() to > > GlobalVisXidVisibleToAll() > > > > The function is currently only used to check whether a tuple=E2=80=99s = xmax is > > visible to all transactions (and thus removable). Upcoming changes will > > also use it to test whether a tuple=E2=80=99s xmin is visible to all to > > decide if a page can be marked all-visible in the visibility map. > > > > The new name, GlobalVisXidVisibleToAll(), better reflects this broader > > purpose. > > If we want this - and I'm not convinced we do - I think it needs to go fu= rther > and change the other uses of removable in > procarray.c. ComputeXidHorizonsResult has a lot of related fields. > > There's also GetOldestNonRemovableTransactionId(), > GlobalVisCheckRemovableXid(), GlobalVisCheckRemovableFullXid() that weren= 't > included in the renaming. Okay, I see what you are saying. When you say you're not sure if we want "this" -- do you mean using GlobalVisState for determining if xmins are visible to all (which is required to set the VM on-access) or do you mean renaming those functions? If we're just talking about the renaming, looking at procarray.c, it is full of the word "removable" because its functions were largely used to examine and determine if everyone can see an xmax as committed and thus if that tuple is removable from their perspective. But nothing about the code that I can see means it has to be an xmax. We could just as well use the functions to determine if everyone can see an xmin as committed. I don't see how we can leave the names as is and use it on xmins because that tuple is _not_ removable based on testing if everyone can see the xmin. So the function basically returns an incorrect result. That being said, the problem with replacing "removable" with "visible to all" -- which isn't _terrible_ -- means we have to replace "nonremovable" with "not visible to all" -- which is terrible. I think getting rid of "removable" from procarray.c would be an improvement because that file feels tightly coupled to vacuum and removing tuples because of the names of variables and functions when actually its functionality isn't. So, the issue is coming up with something palatable. One alternative idea (that requires no renaming) is to add a wrapper function somewhere outside procarray.c which invokes GlobalVisTestIsRemovableXid() but is called something like XidVisibleToAll() and is documented for use with xmins/etc. It would avoid the messy work of coming up with a good name. What do you think? > > Subject: [PATCH v22 6/9] Use GlobalVisState in vacuum to determine page= level > > visibility > > > > This also benefits vacuum directly: in some cases, GlobalVisState may > > advance during a vacuum, allowing more pages to become considered > > all-visible. And, in the future, we could easily add a heuristic to > > update GlobalVisState more frequently during vacuums of large tables. I= n > > the rare case that the GlobalVisState moves backward, vacuum falls back > > to OldestXmin to ensure we don=E2=80=99t attempt to freeze a dead tuple= that > > wasn=E2=80=99t yet prunable according to the GlobalVisState. > > I think it may be better to make sure that the GlobalVisState can't move > backward. Do you mean that I shouldn't use the GlobalVisState to determine visibility until I make sure it can't move backwards? There is actually no functional difference in my patch set with the code this commit message refers to (in heap_prune_satisfies_vacuum()). I only mentioned it to make sure folks knew that even though I was widening usage of GlobalVisState, we wouldn't encounter synchronization issues with freezing horizons. > > Subject: [PATCH v22 8/9] Allow on-access pruning to set pages all-visib= le > > > > Many queries do not modify the underlying relation. For such queries, i= f > > on-access pruning occurs during the scan, we can check whether the page > > has become all-visible and update the visibility map accordingly. > > Previously, only vacuum and COPY FREEZE marked pages as all-visible or > > all-frozen. > > > Supporting this requires passing information about whether the relation > > is modified from the executor down to the scan descriptor. > > I think it'd be good to split this part into a separate commit. The set o= f > folks to review that are distinct (and broader) from the ones looking at > heapam internals. Good point. I've split it into 3 commits in this patch set (0011-0013) - Melanie --0000000000001ceba70645144821 Content-Type: text/x-patch; charset="US-ASCII"; name="v23-0001-Simplify-vacuum-visibility-assertion.patch" Content-Disposition: attachment; filename="v23-0001-Simplify-vacuum-visibility-assertion.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miqlz7f70 RnJvbSA3ZDUxYWFmOWZlYTM1MzY3ZTM2ZDE0MzgyODQxMjcyN2E0NGQ2M2Q2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTA6NDI6NTMgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyMyAwMS8xNF0gU2ltcGxpZnkgdmFjdXVtIHZpc2liaWxpdHkgYXNzZXJ0aW9uCgpQaGFz ZSBJIHZhY3V1bSBnaXZlcyB0aGUgcGFnZSBhIG9uY2Utb3ZlciBhZnRlciBwcnVuaW5nIGFuZCBm cmVlemluZyB0bwpjaGVjayB0aGF0IHRoZSB2YWx1ZXMgb2YgYWxsX3Zpc2libGUgYW5kIGFsbF9m cm96ZW4gYWdyZWUgd2l0aCB0aGUKcmVzdWx0IG9mIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgp LiBUaGlzIGlzIG1lYW50IHRvIGtlZXAgdGhlIGxvZ2ljIGluCnBoYXNlIEkgZm9yIGRldGVybWlu aW5nIHZpc2liaWxpdHkgaW4gc3luYyB3aXRoIHRoZSBsb2dpYyBpbiBwaGFzZSBJSUkuCgpSZXdy aXRlIHRoZSBhc3NlcnRpb24gdG8gYXZvaWQgYW4gQXNzZXJ0KGZhbHNlKS4KClN1Z2dlc3RlZCBi eSBBbmRyZXMgRnJldW5kLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YyB8IDcgKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggNjViYjA1NjhhODYu Ljk4NGQ1ODc5OTQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0yMDI4 LDEwICsyMDI4LDkgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAogCQlB c3NlcnQocHJlc3VsdC5scGRlYWRfaXRlbXMgPT0gMCk7CiAKLQkJaWYgKCFoZWFwX3BhZ2VfaXNf YWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZiwKLQkJCQkJCQkJCSAgdmFjcmVsLT5jdXRvZmZz Lk9sZGVzdFhtaW4sICZkZWJ1Z19hbGxfZnJvemVuLAotCQkJCQkJCQkJICAmZGVidWdfY3V0b2Zm LCAmdmFjcmVsLT5vZmZudW0pKQotCQkJQXNzZXJ0KGZhbHNlKTsKKwkJQXNzZXJ0KGhlYXBfcGFn ZV9pc19hbGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmLAorCQkJCQkJCQkJCXZhY3JlbC0+Y3V0 b2Zmcy5PbGRlc3RYbWluLCAmZGVidWdfYWxsX2Zyb3plbiwKKwkJCQkJCQkJCQkmZGVidWdfY3V0 b2ZmLCAmdmFjcmVsLT5vZmZudW0pKTsKIAogCQlBc3NlcnQocHJlc3VsdC5hbGxfZnJvemVuID09 IGRlYnVnX2FsbF9mcm96ZW4pOwogCi0tIAoyLjQzLjAKCg== --0000000000001ceba70645144821 Content-Type: text/x-patch; charset="US-ASCII"; name="v23-0002-Refactor-lazy_scan_prune-VM-set-logic-into-helpe.patch" Content-Disposition: attachment; filename="v23-0002-Refactor-lazy_scan_prune-VM-set-logic-into-helpe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miqlzbtt1 RnJvbSA3MDIzNTgzOTYyZjk4N2NmZGU1NDUwYzhhMjE0MjU3NGJiM2NlODRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTM6MzY6MzkgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyMyAwMi8xNF0gUmVmYWN0b3IgbGF6eV9zY2FuX3BydW5lKCkgVk0gc2V0IGxvZ2ljIGlu dG8gaGVscGVyCgpUaGlzIGNvbW1pdCBpcyBtZWFudCBmb3IgZWFzZSBvZiByZXZpZXcgb25seS4g SXQgaXMgYSBzdGVwIHRvd2FyZHMKc2V0dGluZyB0aGUgVk0gaW4gdGhlIHNhbWUgcmVjb3JkIGFz IHBydW5pbmcgYW5kIGZyZWV6aW5nIGluIHBoYXNlIEkgb2YKdmFjdXVtLiBJdCBpc24ndCBtZWFu dCB0byBiZSBjb21taXR0ZWQgYWxvbmUgYmVjYXVzZSBpdCB3aWRlbnMgYW4KdW5kZXNpcmFibGUg Y2FzZSB3aGVyZSBhIGhlYXAgYnVmZmVyIG5vdCBtYXJrZWQgZGlydHkgaXMgc3RhbXBlZCB3aXRo IGFuCkxTTi4gSWYgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQgYnV0IHRoZSBWTSBpcyBu b3Qgc2V0LCB3ZSB3b24ndAptYXJrIGl0IGRpcnR5IGFuZCB0aGVuIGlmIGNoZWNrc3VtcyBhcmUg ZW5hYmxlZCB3ZSB3aWxsIHN0aWxsIHN0YW1wIHRoZQpoZWFwIHBhZ2UgTFNOIG9uIGEgcGFnZSBu b3QgbWFya2VkIGRpcnR5LgoKT25jZSB0aGUgVk0gdXBkYXRlIGlzIGRvbmUgaW4gdGhlIHNhbWUg V0FMIHJlY29yZCBhcyBwcnVuaW5nL2ZyZWV6aW5nLAp3ZSB3aWxsIG9ubHkgc2V0IHRoZSBMU04g b24gdGhlIGhlYXAgcGFnZSBpZiB3ZSBzZXQgUERfQUxMX1ZJU0lCTEUgb3IKbWFkZSBvdGhlciBo ZWFwIHBhZ2UgbW9kaWZpY2F0aW9ucy4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgfCAyODMgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgMTQ2IGluc2VydGlvbnMoKyksIDEzNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKaW5kZXggOTg0ZDU4Nzk5NDcuLjFjY2EwOTU4NDFlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xOTM0LDYgKzE5MzQsMTE3IEBAIGNtcE9mZnNl dE51bWJlcnMoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKIAlyZXR1cm4gcGdfY21wX3Ux NigqKGNvbnN0IE9mZnNldE51bWJlciAqKSBhLCAqKGNvbnN0IE9mZnNldE51bWJlciAqKSBiKTsK IH0KIAorCisvKgorICogRGVjaWRlIHdoZXRoZXIgdG8gc2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBi aXRzIGZvciBoZWFwX2JsaywgdXNpbmcKKyAqIGluZm9ybWF0aW9uIGZyb20gUHJ1bmVGcmVlemVS ZXN1bHQgYW5kIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bS4gVGhpcworICogZnVuY3Rpb24g ZG9lcyBub3QgYWN0dWFsbHkgc2V0IHRoZSBWTSBiaXQgb3IgcGFnZS1sZXZlbCBoaW50LAorICog UERfQUxMX1ZJU0lCTEUuCisgKgorICogSWYgaXQgZmluZHMgdGhhdCB0aGUgcGFnZS1sZXZlbCB2 aXNpYmlsaXR5IGhpbnQgb3IgVk0gaXMgY29ycnVwdGVkLCBpdCB3aWxsCisgKiBmaXggdGhlbSBi eSBjbGVhcmluZyB0aGUgVk0gYml0IGFuZCBwYWdlIGhpbnQuIFRoaXMgZG9lcyBub3QgbmVlZCB0 byBiZQorICogZG9uZSBpbiBhIGNyaXRpY2FsIHNlY3Rpb24uCisgKgorICogUmV0dXJucyB0cnVl IGlmIG9uZSBvciBib3RoIFZNIGJpdHMgc2hvdWxkIGJlIHNldCwgYWxvbmcgd2l0aCB0aGUgZGVz aXJlZAorICogZmxhZ3MgaW4gKm5ld192bWJpdHMuIEFsc28gaW5kaWNhdGVzIHZpYSBkb19zZXRf cGRfdmlzIHdoZXRoZXIKKyAqIFBEX0FMTF9WSVNJQkxFIHNob3VsZCBiZSBzZXQgb24gdGhlIGhl YXAgcGFnZS4KKyAqLworc3RhdGljIGJvb2wKK2hlYXBfcGFnZV93aWxsX3NldF92aXMoUmVsYXRp b24gcmVsYXRpb24sCisJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLAorCQkJCQkgICBCdWZm ZXIgaGVhcF9idWYsCisJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJICAgYm9vbCBhbGxf dmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0sCisJCQkJCSAgIGNvbnN0IFBydW5lRnJlZXplUmVzdWx0 ICpwcmVzdWx0LAorCQkJCQkgICB1aW50OCAqbmV3X3ZtYml0cywKKwkJCQkJICAgYm9vbCAqZG9f c2V0X3BkX3ZpcykKK3sKKwlQYWdlCQloZWFwX3BhZ2UgPSBCdWZmZXJHZXRQYWdlKGhlYXBfYnVm KTsKKworCSpuZXdfdm1iaXRzID0gMDsKKworCS8qCisJICogSXQgc2hvdWxkIG5ldmVyIGJlIHRo ZSBjYXNlIHRoYXQgdGhlIHZpc2liaWxpdHkgbWFwIHBhZ2UgaXMgc2V0IHdoaWxlCisJICogdGhl IHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLCBidXQgdGhlIHJldmVyc2UgaXMgYWxsb3dlZCAoaWYg Y2hlY2tzdW1zCisJICogYXJlIG5vdCBlbmFibGVkKS4KKwkgKgorCSAqIFdlIGF2b2lkIHJlbHlp bmcgb24gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFzIGEgcHJveHkgZm9yIHRoZQorCSAq IHBhZ2UtbGV2ZWwgUERfQUxMX1ZJU0lCTEUgYml0IGJlaW5nIHNldCwgc2luY2UgaXQgbWlnaHQg aGF2ZSBiZWNvbWUKKwkgKiBzdGFsZS4KKwkgKi8KKwkqZG9fc2V0X3BkX3ZpcyA9IHByZXN1bHQt PmFsbF92aXNpYmxlICYgIVBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKTsKKworCS8qCisJICog RGV0ZXJtaW5lIHdoYXQgdG8gc2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBiaXRzIHRvIGJhc2VkIG9u IGluZm9ybWF0aW9uCisJICogZnJvbSB0aGUgVk0gKGFzIG9mIGxhc3QgaGVhcF92YWNfc2Nhbl9u ZXh0X2Jsb2NrKCkgY2FsbCksIGFuZCBmcm9tCisJICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96 ZW4gdmFyaWFibGVzLgorCSAqLworCWlmICgocHJlc3VsdC0+YWxsX3Zpc2libGUgJiYgIWFsbF92 aXNpYmxlX2FjY29yZGluZ190b192bSkgfHwKKwkJKHByZXN1bHQtPmFsbF9mcm96ZW4gJiYgIVZN X0FMTF9GUk9aRU4ocmVsYXRpb24sIGhlYXBfYmxrLCAmdm1idWZmZXIpKSkKKwl7CisJCSpuZXdf dm1iaXRzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKKwkJaWYgKHByZXN1bHQtPmFsbF9m cm96ZW4pCisJCXsKKwkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC0+dm1f Y29uZmxpY3RfaG9yaXpvbikpOworCQkJKm5ld192bWJpdHMgfD0gVklTSUJJTElUWU1BUF9BTExf RlJPWkVOOworCQl9CisKKwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoKKwkgKiBOb3cgaGFuZGxl IHR3byBwb3RlbnRpYWwgY29ycnVwdGlvbiBjYXNlczoKKwkgKgorCSAqIFRoZXNlIGRvIG5vdCBu ZWVkIHRvIGhhcHBlbiBpbiBhIGNyaXRpY2FsIHNlY3Rpb24gYW5kIGFyZSBub3QKKwkgKiBXQUwt bG9nZ2VkLgorCSAqCisJICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRoZSB2aXNpYmlsaXR5IG1h cCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKKwkgKiBwYWdlLWxldmVsIGJpdCBpcyBj bGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgYml0IGdvdAorCSAqIGNsZWFy ZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxlZCwgc28gd2UgbXVz dCByZWNoZWNrCisJICogd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1ZGluZyB0aGF0IHRo ZSBWTSBpcyBjb3JydXB0LgorCSAqLworCWVsc2UgaWYgKGFsbF92aXNpYmxlX2FjY29yZGluZ190 b192bSAmJiAhUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpICYmCisJCQkgdmlzaWJpbGl0eW1h cF9nZXRfc3RhdHVzKHJlbGF0aW9uLCBoZWFwX2JsaywgJnZtYnVmZmVyKSAhPSAwKQorCXsKKwkJ ZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAor CQkJCSBlcnJtc2coInBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0 eSBtYXAgYml0IGlzIHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbiksIGhlYXBfYmxrKSkpOworCisJCXZpc2liaWxp dHltYXBfY2xlYXIocmVsYXRpb24sIGhlYXBfYmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJQklM SVRZTUFQX1ZBTElEX0JJVFMpOworCX0KKworCS8qCisJICogSXQncyBwb3NzaWJsZSBmb3IgdGhl IHZhbHVlIHJldHVybmVkIGJ5CisJICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25J ZCgpIHRvIG1vdmUgYmFja3dhcmRzLCBzbyBpdCdzIG5vdAorCSAqIHdyb25nIGZvciB1cyB0byBz ZWUgdHVwbGVzIHRoYXQgYXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCisJICog eWV0LCB3aGlsZSBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4 bWluIHZhbHVlCisJICogbmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVt b3ZhYmxlVHJhbnNhY3Rpb25JZCgpIGlzCisJICogY29uc2VydmF0aXZlIGFuZCBzb21ldGltZXMg cmV0dXJucyBhIHZhbHVlIHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAorCSAqIHNvIGlmIHdl IHNlZSB0aGF0IGNvbnRyYWRpY3Rpb24gaXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhh dCB3ZQorCSAqIHRoaW5rIGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkg YXJlLCBhbmQgdGhlCisJICogUERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3JyZWN0LgorCSAqCisJ ICogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERf QUxMX1ZJU0lCTEUgc2V0LAorCSAqIGhvd2V2ZXIuCisJICovCisJZWxzZSBpZiAocHJlc3VsdC0+ bHBkZWFkX2l0ZW1zID4gMCAmJiBQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkpCisJeworCQll cmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCisJ CQkJIGVycm1zZygicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFs bC12aXNpYmxlIGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCQkJCVJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspKSk7CisKKwkJUGFnZUNsZWFyQWxsVmlz aWJsZShoZWFwX3BhZ2UpOworCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWYpOworCQl2aXNpYmls aXR5bWFwX2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJ TElUWU1BUF9WQUxJRF9CSVRTKTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAgKgls YXp5X3NjYW5fcHJ1bmUoKSAtLSBsYXp5X3NjYW5faGVhcCgpIHBydW5pbmcgYW5kIGZyZWV6aW5n LgogICoKQEAgLTE5NjQsNiArMjA3NSwxMCBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAq dmFjcmVsLAogCQkJCWJvb2wgKnZtX3BhZ2VfZnJvemVuKQogewogCVJlbGF0aW9uCXJlbCA9IHZh Y3JlbC0+cmVsOworCWJvb2wJCWRvX3NldF92bSA9IGZhbHNlOworCWJvb2wJCWRvX3NldF9wZF92 aXMgPSBmYWxzZTsKKwl1aW50OAkJbmV3X3ZtYml0cyA9IDA7CisJdWludDgJCW9sZF92bWJpdHMg PSAwOwogCVBydW5lRnJlZXplUmVzdWx0IHByZXN1bHQ7CiAJUHJ1bmVGcmVlemVQYXJhbXMgcGFy YW1zID0gewogCQkucmVsYXRpb24gPSByZWwsCkBAIC0yMDc1LDI4ICsyMTkwLDIyIEBAIGxhenlf c2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJQXNzZXJ0KCFwcmVzdWx0LmFsbF92aXNp YmxlIHx8ICEoKmhhc19scGRlYWRfaXRlbXMpKTsKIAlBc3NlcnQoIXByZXN1bHQuYWxsX2Zyb3pl biB8fCBwcmVzdWx0LmFsbF92aXNpYmxlKTsKIAotCS8qCi0JICogSGFuZGxlIHNldHRpbmcgdmlz aWJpbGl0eSBtYXAgYml0IGJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFZNIChhcwotCSAq IG9mIGxhc3QgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCksIGFuZCBmcm9tIGFsbF92 aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4gdmFyaWFibGVzCi0JICovCi0JaWYgKCFhbGxfdmlz aWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5hbGxfdmlzaWJsZSkKLQl7Ci0JCXVpbnQ4 CQlvbGRfdm1iaXRzOwotCQl1aW50OAkJZmxhZ3MgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxF OworCWRvX3NldF92bSA9IGhlYXBfcGFnZV93aWxsX3NldF92aXMocmVsLAorCQkJCQkJCQkJICAg Ymxrbm8sCisJCQkJCQkJCQkgICBidWYsCisJCQkJCQkJCQkgICB2bWJ1ZmZlciwKKwkJCQkJCQkJ CSAgIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSwKKwkJCQkJCQkJCSAgICZwcmVzdWx0LAor CQkJCQkJCQkJICAgJm5ld192bWJpdHMsCisJCQkJCQkJCQkgICAmZG9fc2V0X3BkX3Zpcyk7CiAK LQkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJewotCQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklk SXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pKTsKLQkJCWZsYWdzIHw9IFZJU0lC SUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJfQogCisJLyogV2Ugc2hvdWxkIG9ubHkgc2V0IHRoZSBW TSBpZiBQRF9BTExfVklTSUJMRSBpcyBzZXQgb3Igd2lsbCBiZSAqLworCUFzc2VydCghZG9fc2V0 X3ZtIHx8IGRvX3NldF9wZF92aXMgfHwgUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7CisKKwlpZiAo ZG9fc2V0X3BkX3ZpcykKKwl7CiAJCS8qCi0JCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2Fz ZSB0aGF0IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldAotCQkgKiB3aGlsZSB0aGUgcGFn ZS1sZXZlbCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChpZgotCQkg KiBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMg c28gdGhhdCB3ZQotCQkgKiBnZXQgYmFjayBpbiBzeW5jLgotCQkgKgogCQkgKiBOQjogSWYgdGhl IGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBub3Qgc2V0LCB3ZQog CQkgKiBkb24ndCBuZWVkIHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dldmVyLCBpZiBjaGVj a3N1bXMgYXJlCiAJCSAqIGVuYWJsZWQsIHdlIGRvIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhl IGhlYXAgcGFnZSBpcyBkaXJ0aWVkCkBAIC0yMTA0LDEzNiArMjIxMywzNiBAQCBsYXp5X3NjYW5f cHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQkgKiBHaXZlbiB0aGF0IHRoaXMgc2l0dWF0aW9u IHNob3VsZCBvbmx5IGhhcHBlbiBpbiByYXJlIGNhc2VzIGFmdGVyIGEKIAkJICogY3Jhc2gsIGl0 IGlzIG5vdCB3b3J0aCBvcHRpbWl6aW5nLgogCQkgKi8KLQkJUGFnZVNldEFsbFZpc2libGUocGFn ZSk7CiAJCU1hcmtCdWZmZXJEaXJ0eShidWYpOworCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsK Kwl9CisKKwlpZiAoZG9fc2V0X3ZtKQogCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXQo dmFjcmVsLT5yZWwsIGJsa25vLCBidWYsCiAJCQkJCQkJCQkgICBJbnZhbGlkWExvZ1JlY1B0ciwK IAkJCQkJCQkJCSAgIHZtYnVmZmVyLCBwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24sCi0JCQkJ CQkJCQkgICBmbGFncyk7Ci0KLQkJLyoKLQkJICogSWYgdGhlIHBhZ2Ugd2Fzbid0IGFscmVhZHkg c2V0IGFsbC12aXNpYmxlIGFuZC9vciBhbGwtZnJvemVuIGluIHRoZQotCQkgKiBWTSwgY291bnQg aXQgYXMgbmV3bHkgc2V0IGZvciBsb2dnaW5nLgotCQkgKi8KLQkJaWYgKChvbGRfdm1iaXRzICYg VklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCkKLQkJewotCQkJdmFjcmVsLT52bV9uZXdf dmlzaWJsZV9wYWdlcysrOwotCQkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJCXsKLQkJCQl2 YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotCQkJCSp2bV9wYWdlX2Zyb3pl biA9IHRydWU7Ci0JCQl9Ci0JCX0KLQkJZWxzZSBpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZ TUFQX0FMTF9GUk9aRU4pID09IDAgJiYKLQkJCQkgcHJlc3VsdC5hbGxfZnJvemVuKQotCQl7Ci0J CQl2YWNyZWwtPnZtX25ld19mcm96ZW5fcGFnZXMrKzsKLQkJCSp2bV9wYWdlX2Zyb3plbiA9IHRy dWU7Ci0JCX0KLQl9Ci0KLQkvKgotCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJp bGl0eSBtYXAgYml0IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCi0JICogcGFnZS1sZXZlbCBi aXQgaXMgY2xlYXIuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBnb3QKLQkg KiBjbGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNv IHdlIG11c3QgcmVjaGVjawotCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcg dGhhdCB0aGUgVk0gaXMgY29ycnVwdC4KLQkgKi8KLQllbHNlIGlmIChhbGxfdmlzaWJsZV9hY2Nv cmRpbmdfdG9fdm0gJiYgIVBhZ2VJc0FsbFZpc2libGUocGFnZSkgJiYKLQkJCSB2aXNpYmlsaXR5 bWFwX2dldF9zdGF0dXModmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpICE9IDApCi0Jewot CQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCks Ci0JCQkJIGVycm1zZygicGFnZSBpcyBub3QgbWFya2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmls aXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKLQkJCQkJCXZh Y3JlbC0+cmVsbmFtZSwgYmxrbm8pKSk7Ci0KLQkJdmlzaWJpbGl0eW1hcF9jbGVhcih2YWNyZWwt PnJlbCwgYmxrbm8sIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7 Ci0JfQorCQkJCQkJCQkJICAgbmV3X3ZtYml0cyk7CiAKIAkvKgotCSAqIEl0J3MgcG9zc2libGUg Zm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieQotCSAqIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5z YWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKLQkgKiB3cm9uZyBmb3Ig dXMgdG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0byBldmVyeW9u ZQotCSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQuIFRoZSByZWFs IHNhZmUgeG1pbiB2YWx1ZQotCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywgYnV0IEdldE9sZGVz dE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcwotCSAqIGNvbnNlcnZhdGl2ZSBhbmQgc29t ZXRpbWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFsbCwKLQkgKiBz byBpZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgdHVw bGVzIHRoYXQgd2UKLQkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZlcnlvbmUgeWV0IGFj dHVhbGx5IGFyZSwgYW5kIHRoZQotCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcgaXMgY29ycmVjdC4K LQkgKgotCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zIG9uIGEgcGFnZSB3 aXRoIFBEX0FMTF9WSVNJQkxFIHNldCwKLQkgKiBob3dldmVyLgorCSAqIEZvciB0aGUgcHVycG9z ZXMgb2YgbG9nZ2luZywgY291bnQgd2hldGhlciBvciBub3QgdGhlIHBhZ2Ugd2FzIG5ld2x5CisJ ICogc2V0IGFsbC12aXNpYmxlIGFuZCwgcG90ZW50aWFsbHksIGFsbC1mcm96ZW4uCiAJICovCi0J ZWxzZSBpZiAocHJlc3VsdC5scGRlYWRfaXRlbXMgPiAwICYmIFBhZ2VJc0FsbFZpc2libGUocGFn ZSkpCisJaWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCAm JgorCQkobmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpICE9IDApCiAJewot CQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCks Ci0JCQkJIGVycm1zZygicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFz IGFsbC12aXNpYmxlIGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKLQkJCQkJCXZhY3JlbC0+ cmVsbmFtZSwgYmxrbm8pKSk7Ci0KLQkJUGFnZUNsZWFyQWxsVmlzaWJsZShwYWdlKTsKLQkJTWFy a0J1ZmZlckRpcnR5KGJ1Zik7Ci0JCXZpc2liaWxpdHltYXBfY2xlYXIodmFjcmVsLT5yZWwsIGJs a25vLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwotCX0KLQot CS8qCi0JICogSWYgdGhlIGFsbC12aXNpYmxlIHBhZ2UgaXMgYWxsLWZyb3plbiBidXQgbm90IG1h cmtlZCBhcyBzdWNoIHlldCwgbWFyawotCSAqIGl0IGFzIGFsbC1mcm96ZW4uCi0JICovCi0JZWxz ZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmIHByZXN1bHQuYWxsX2Zyb3plbiAm JgotCQkJICFWTV9BTExfRlJPWkVOKHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVyKSkKLQl7 Ci0JCXVpbnQ4CQlvbGRfdm1iaXRzOwotCi0JCS8qCi0JCSAqIEF2b2lkIHJlbHlpbmcgb24gYWxs X3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFzIGEgcHJveHkgZm9yIHRoZQotCQkgKiBwYWdlLWxl dmVsIFBEX0FMTF9WSVNJQkxFIGJpdCBiZWluZyBzZXQsIHNpbmNlIGl0IG1pZ2h0IGhhdmUgYmVj b21lCi0JCSAqIHN0YWxlIC0tIGV2ZW4gd2hlbiBhbGxfdmlzaWJsZSBpcyBzZXQKLQkJICovCi0J CWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKLQkJewotCQkJUGFnZVNldEFsbFZpc2libGUo cGFnZSk7Ci0JCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKLQkJfQotCi0JCS8qCi0JCSAqIFNldCB0 aGUgcGFnZSBhbGwtZnJvemVuIChhbmQgYWxsLXZpc2libGUpIGluIHRoZSBWTS4KLQkJICoKLQkJ ICogV2UgY2FuIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMgb3VyIGN1dG9mZl94aWQsIHNp bmNlIGEKLQkJICogc25hcHNob3RDb25mbGljdEhvcml6b24gc3VmZmljaWVudCB0byBtYWtlIGV2 ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETwotCQkgKiB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0 dXBsZXMgd2VyZSBmcm96ZW4uCi0JCSAqLwotCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlk KHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikpOwotCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0 eW1hcF9zZXQodmFjcmVsLT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJCQkgICBJbnZhbGlkWExv Z1JlY1B0ciwKLQkJCQkJCQkJCSAgIHZtYnVmZmVyLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKLQkJ CQkJCQkJCSAgIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkJICAgVklTSUJJ TElUWU1BUF9BTExfRlJPWkVOKTsKLQotCQkvKgotCQkgKiBUaGUgcGFnZSB3YXMgbGlrZWx5IGFs cmVhZHkgc2V0IGFsbC12aXNpYmxlIGluIHRoZSBWTS4gSG93ZXZlciwKLQkJICogdGhlcmUgaXMg YSBzbWFsbCBjaGFuY2UgdGhhdCBpdCB3YXMgbW9kaWZpZWQgc29tZXRpbWUgYmV0d2VlbgotCQkg KiBzZXR0aW5nIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSBhbmQgY2hlY2tpbmcgdGhlIHZp c2liaWxpdHkKLQkJICogZHVyaW5nIHBydW5pbmcuIENoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2Yg b2xkX3ZtYml0cyBhbnl3YXkgdG8KLQkJICogZW5zdXJlIHRoZSB2aXNpYmlsaXR5IG1hcCBjb3Vu dGVycyB1c2VkIGZvciBsb2dnaW5nIGFyZSBhY2N1cmF0ZS4KLQkJICovCi0JCWlmICgob2xkX3Zt Yml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDApCisJCXZhY3JlbC0+dm1fbmV3 X3Zpc2libGVfcGFnZXMrKzsKKwkJaWYgKChuZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExf RlJPWkVOKSAhPSAwKQogCQl7Ci0JCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7CiAJ CQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwogCQkJKnZtX3BhZ2VfZnJv emVuID0gdHJ1ZTsKIAkJfQotCi0JCS8qCi0JCSAqIFdlIGFscmVhZHkgY2hlY2tlZCB0aGF0IHRo ZSBwYWdlIHdhcyBub3Qgc2V0IGFsbC1mcm96ZW4gaW4gdGhlIFZNCi0JCSAqIGFib3ZlLCBzbyB3 ZSBkb24ndCBuZWVkIHRvIHRlc3QgdGhlIHZhbHVlIG9mIG9sZF92bWJpdHMuCi0JCSAqLwotCQll bHNlCi0JCXsKLQkJCXZhY3JlbC0+dm1fbmV3X2Zyb3plbl9wYWdlcysrOwotCQkJKnZtX3BhZ2Vf ZnJvemVuID0gdHJ1ZTsKLQkJfQorCX0KKwllbHNlIGlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJ VFlNQVBfQUxMX0ZST1pFTikgPT0gMCAmJgorCQkJIChuZXdfdm1iaXRzICYgVklTSUJJTElUWU1B UF9BTExfRlJPWkVOKSAhPSAwKQorCXsKKwkJQXNzZXJ0KChuZXdfdm1iaXRzICYgVklTSUJJTElU WU1BUF9BTExfVklTSUJMRSkgIT0gMCk7CisJCXZhY3JlbC0+dm1fbmV3X2Zyb3plbl9wYWdlcysr OworCQkqdm1fcGFnZV9mcm96ZW4gPSB0cnVlOwogCX0KIAogCXJldHVybiBwcmVzdWx0Lm5kZWxl dGVkOwotLSAKMi40My4wCgo= --0000000000001ceba70645144821 Content-Type: text/x-patch; charset="UTF-8"; name="v23-0003-Set-the-VM-in-prune-code.patch" Content-Disposition: attachment; filename="v23-0003-Set-the-VM-in-prune-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miqlziom2 RnJvbSA0MGI1MDZhODg4ZWY1N2Y1Yjk2MmIzMjBiODE3Yjk3ZTY0YzljNGMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6MDc6NDIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyMyAwMy8xNF0gU2V0IHRoZSBWTSBpbiBwcnVuZSBjb2RlCgpGb3IgcmV2aWV3IG9ubHks IHRoaXMgbW92ZXMgdGhlIGNvZGUgdG8gc2V0IHRoZSBWTSBpbnRvCmhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKCkgYXMgYSBzdGVwIHRvd2FyZCBoYXZpbmcgaXQgaW4gdGhlIHNhbWUgV0FMCnJl Y29yZC4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgfCAyODEgKysr KysrKysrKysrKysrKysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMgfCAxNjYgKy0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5o ICAgICAgICAgIHwgIDI3ICsrKwogMyBmaWxlcyBjaGFuZ2VkLCAyNzIgaW5zZXJ0aW9ucygrKSwg MjAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggNWFm ODRiNGM4NzUuLjBkYWYzYWJmNzE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpA QCAtMTksNyArMTksNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKICNpbmNs dWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKLSNp bmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCIKKyNpbmNsdWRlICJhY2Nlc3Mvdmlz aWJpbGl0eW1hcC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNz L3hsb2dpbnNlcnQuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKQEAgLTQ0LDYgKzQ0 LDggQEAgdHlwZWRlZiBzdHJ1Y3QKIAlib29sCQltYXJrX3VudXNlZF9ub3c7CiAJLyogd2hldGhl ciB0byBhdHRlbXB0IGZyZWV6aW5nIHR1cGxlcyAqLwogCWJvb2wJCWF0dGVtcHRfZnJlZXplOwor CS8qIHdoZXRoZXIgb3Igbm90IHRvIGF0dGVtcHQgdXBkYXRpbmcgdGhlIFZNICovCisJYm9vbAkJ YXR0ZW1wdF91cGRhdGVfdm07CiAJc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnM7CiAKIAkv Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K QEAgLTE0MCwxNiArMTQyLDE3IEBAIHR5cGVkZWYgc3RydWN0CiAJICogYWxsX3Zpc2libGUgYW5k IGFsbF9mcm96ZW4gaW5kaWNhdGUgaWYgdGhlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuCiAJ ICogYml0cyBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgY2FuIGJlIHNldCBmb3IgdGhpcyBwYWdlIGFm dGVyIHBydW5pbmcuCiAJICoKLQkgKiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgaXMgdGhlIG5ld2Vz dCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLgotCSAqIFRoZSBjYWxsZXIgY2FuIHVz ZSBpdCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiwgd2hlbiBzZXR0aW5nIHRoZSBWTQotCSAqIGJp dHMuICBJdCBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVzLCBhbmQgYWxsX2Zy b3plbiBpcwotCSAqIHRydWUuCisJICogdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGlzIHRoZSBuZXdl c3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZS4gSXQKKwkgKiBjYW4gYmUgdXNlZCBh cyB0aGUgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHNldHRpbmcgdGhlIFZNIG9yIHdoZW4KKwkgKiBm cmVlemluZyBhbGwgdGhlIHR1cGxlcyBvbiB0aGUgcGFnZS4gSXQgaXMgb25seSB2YWxpZCB3aGVu IGFsbCB0aGUgbGl2ZQorCSAqIHR1cGxlcyBvbiB0aGUgcGFnZSBhcmUgYWxsLXZpc2libGUuCiAJ ICoKIAkgKiBOT1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBpbml0aWFsbHkgZG9uJ3Qg aW5jbHVkZSBMUF9ERUFEIGl0ZW1zLgogCSAqIFRoYXQncyBjb252ZW5pZW50IGZvciBoZWFwX3Bh Z2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIHRvIHVzZSB0aGVtIHRvCi0JICogZGVjaWRlIHdoZXRoZXIg dG8gZnJlZXplIHRoZSBwYWdlIG9yIG5vdC4gIFRoZSBhbGxfdmlzaWJsZSBhbmQKLQkgKiBhbGxf ZnJvemVuIHZhbHVlcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyIGFyZSBhZGp1c3RlZCB0byBpbmNs dWRlCi0JICogTFBfREVBRCBpdGVtcyBhZnRlciB3ZSBkZXRlcm1pbmUgd2hldGhlciB0byBvcHBv cnR1bmlzdGljYWxseSBmcmVlemUuCisJICogZGVjaWRlIHdoZXRoZXIgdG8gb3Bwb3J0dW5pc3Rp Y2FsbHkgZnJlZXplIHRoZSBwYWdlIG9yIG5vdC4gIFRoZQorCSAqIGFsbF92aXNpYmxlIGFuZCBh bGxfZnJvemVuIHZhbHVlcyB1bHRpbWF0ZWx5IHVzZWQgdG8gc2V0IHRoZSBWTSBhcmUKKwkgKiBh ZGp1c3RlZCB0byBpbmNsdWRlIExQX0RFQUQgaXRlbXMgYWZ0ZXIgd2UgZGV0ZXJtaW5lIHdoZXRo ZXIgb3Igbm90IHRvCisJICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplLgogCSAqLwogCWJvb2wJ CWFsbF92aXNpYmxlOwogCWJvb2wJCWFsbF9mcm96ZW47CkBAIC0xOTEsNiArMTk0LDE0IEBAIHN0 YXRpYyB2b2lkIHBhZ2VfdmVyaWZ5X3JlZGlyZWN0cyhQYWdlIHBhZ2UpOwogc3RhdGljIGJvb2wg aGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAog CQkJCQkJCQkgIGJvb2wgZGlkX3R1cGxlX2hpbnRfZnBpLCBib29sIGRvX3BydW5lLCBib29sIGRv X2hpbnRfcHJ1bmUsCiAJCQkJCQkJCSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSk7CitzdGF0aWMgYm9v bCBoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCQkgICBC bG9ja051bWJlciBoZWFwX2JsaywKKwkJCQkJCQkJICAgQnVmZmVyIGhlYXBfYnVmLAorCQkJCQkJ CQkgICBCdWZmZXIgdm1idWZmZXIsCisJCQkJCQkJCSAgIGJvb2wgYmxrX2tub3duX2F2LAorCQkJ CQkJCQkgICBjb25zdCBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKKwkJCQkJCQkJICAgdWlu dDggKm5ld192bWJpdHMsCisJCQkJCQkJCSAgIGJvb2wgKmRvX3NldF9wZF92aXMpOwogCiAKIC8q CkBAIC0yODAsNiArMjkxLDggQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlv biwgQnVmZmVyIGJ1ZmZlcikKIAkJCVBydW5lRnJlZXplUGFyYW1zIHBhcmFtcyA9IHsKIAkJCQku cmVsYXRpb24gPSByZWxhdGlvbiwKIAkJCQkuYnVmZmVyID0gYnVmZmVyLAorCQkJCS52bWJ1ZmZl ciA9IEludmFsaWRCdWZmZXIsCisJCQkJLmJsa19rbm93bl9hdiA9IGZhbHNlLAogCQkJCS5yZWFz b24gPSBQUlVORV9PTl9BQ0NFU1MsCiAJCQkJLm9wdGlvbnMgPSAwLAogCQkJCS52aXN0ZXN0ID0g dmlzdGVzdCwKQEAgLTMzOCw2ICszNTEsOCBAQCBwcnVuZV9mcmVlemVfc2V0dXAoUHJ1bmVGcmVl emVQYXJhbXMgKnBhcmFtcywKIAkvKiBjdXRvZmZzIG11c3QgYmUgcHJvdmlkZWQgaWYgd2Ugd2ls bCBhdHRlbXB0IGZyZWV6aW5nICovCiAJQXNzZXJ0KCEocGFyYW1zLT5vcHRpb25zICYgSEVBUF9Q QUdFX1BSVU5FX0ZSRUVaRSkgfHwgcGFyYW1zLT5jdXRvZmZzKTsKIAlwcnN0YXRlLT5hdHRlbXB0 X2ZyZWV6ZSA9IChwYXJhbXMtPm9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFKSAhPSAw OworCXByc3RhdGUtPmF0dGVtcHRfdXBkYXRlX3ZtID0KKwkJKHBhcmFtcy0+b3B0aW9ucyAmIEhF QVBfUEFHRV9QUlVORV9VUERBVEVfVklTKSAhPSAwOwogCXByc3RhdGUtPmN1dG9mZnMgPSBwYXJh bXMtPmN1dG9mZnM7CiAKIAkvKgpAQCAtMzg2LDUxICs0MDEsNTQgQEAgcHJ1bmVfZnJlZXplX3Nl dHVwKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJcHJzdGF0ZS0+ZnJ6X2NvbmZsaWN0X2hv cml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAogCS8qCi0JICogVmFjdXVtIG1heSB1cGRh dGUgdGhlIFZNIGFmdGVyIHdlJ3JlIGRvbmUuICBXZSBjYW4ga2VlcCB0cmFjayBvZgotCSAqIHdo ZXRoZXIgdGhlIHBhZ2Ugd2lsbCBiZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbiBhZnRlciBw cnVuaW5nIGFuZAotCSAqIGZyZWV6aW5nIHRvIGhlbHAgdGhlIGNhbGxlciB0byBkbyB0aGF0Lgor CSAqIFRyYWNrIHdoZXRoZXIgdGhlIHBhZ2UgY291bGQgYmUgbWFya2VkIGFsbC12aXNpYmxlIGFu ZC9vciBhbGwtZnJvemVuLgorCSAqIFRoaXMgaW5mb3JtYXRpb24gaXMgdXNlZCBmb3Igb3Bwb3J0 dW5pc3RpYyBmcmVlemluZyBhbmQgZm9yIHVwZGF0aW5nCisJICogdGhlIHZpc2liaWxpdHkgbWFw IChWTSkgaWYgcmVxdWVzdGVkIGJ5IHRoZSBjYWxsZXIuCiAJICoKLQkgKiBDdXJyZW50bHksIG9u bHkgVkFDVVVNIHNldHMgdGhlIFZNIGJpdHMuICBUbyBzYXZlIHRoZSBlZmZvcnQsIG9ubHkgZG8K LQkgKiB0aGUgYm9va2tlZXBpbmcgaWYgdGhlIGNhbGxlciBuZWVkcyBpdC4gIEN1cnJlbnRseSwg dGhhdCdzIHRpZWQgdG8KLQkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFLCBidXQgaXQgY291bGQg YmUgYSBzZXBhcmF0ZSBmbGFnIGlmIHlvdSB3YW50ZWQKLQkgKiB0byB1cGRhdGUgdGhlIFZNIGJp dHMgd2l0aG91dCBhbHNvIGZyZWV6aW5nIG9yIGZyZWV6ZSB3aXRob3V0IGFsc28KLQkgKiBzZXR0 aW5nIHRoZSBWTSBiaXRzLgorCSAqIEN1cnJlbnRseSwgb25seSBWQUNVVU0gcGVyZm9ybXMgZnJl ZXppbmcsIGJ1dCBvdGhlciBjYWxsZXJzIG1heSBpbiB0aGUKKwkgKiBmdXR1cmUuIFZpc2liaWxp dHkgYm9va2tlZXBpbmcgaXMgcmVxdWlyZWQgbm90IGp1c3QgZm9yIHNldHRpbmcgdGhlIFZNCisJ ICogYml0cywgYnV0IGFsc28gZm9yIG9wcG9ydHVuaXN0aWMgZnJlZXppbmc6IHdlIG9ubHkgY29u c2lkZXIgZnJlZXppbmcgaWYKKwkgKiB0aGUgcGFnZSB3b3VsZCBiZWNvbWUgYWxsLWZyb3plbiwg b3IgaWYgaXQgd291bGQgYmUgYWxsLWZyb3plbiBleGNlcHQKKwkgKiBmb3IgZGVhZCB0dXBsZXMg dGhhdCBWQUNVVU0gd2lsbCByZW1vdmUuIElmIGF0dGVtcHRfdXBkYXRlX3ZtIGlzIGZhbHNlLAor CSAqIHdlIHdpbGwgbm90IHNldCB0aGUgVk0gYml0IGV2ZW4gaWYgdGhlIHBhZ2UgaXMgZm91bmQg dG8gYmUgYWxsLXZpc2libGUuCiAJICoKLQkgKiBJbiBhZGRpdGlvbiB0byB0ZWxsaW5nIHRoZSBj YWxsZXIgd2hldGhlciBpdCBjYW4gc2V0IHRoZSBWTSBiaXQsIHdlCi0JICogYWxzbyB1c2UgJ2Fs bF92aXNpYmxlJyBhbmQgJ2FsbF9mcm96ZW4nIGZvciBvdXIgb3duIGRlY2lzaW9uLW1ha2luZy4g SWYKLQkgKiB0aGUgd2hvbGUgcGFnZSB3b3VsZCBiZWNvbWUgZnJvemVuLCB3ZSBjb25zaWRlciBv cHBvcnR1bmlzdGljYWxseQotCSAqIGZyZWV6aW5nIHR1cGxlcy4gIFdlIHdpbGwgbm90IGJlIGFi bGUgdG8gZnJlZXplIHRoZSB3aG9sZSBwYWdlIGlmIHRoZXJlCi0JICogYXJlIHR1cGxlcyBwcmVz ZW50IHRoYXQgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIG9yIGlmIHRoZXJlIGFyZQotCSAq IGRlYWQgdHVwbGVzIHdoaWNoIGFyZSBub3QgeWV0IHJlbW92YWJsZS4gIEhvd2V2ZXIsIGRlYWQg dHVwbGVzIHdoaWNoCi0JICogd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5n IHNob3VsZCBub3QgcHJlY2x1ZGUgdXMgZnJvbQotCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6 aW5nLiAgQmVjYXVzZSBvZiB0aGF0LCB3ZSBkbyBub3QgaW1tZWRpYXRlbHkKLQkgKiBjbGVhciBh bGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiAgV2Ug Zml4Ci0JICogdGhhdCBhZnRlciBzY2FubmluZyB0aGUgbGluZSBwb2ludGVycy4gV2UgbXVzdCBj b3JyZWN0IGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4gYmVmb3JlIHdlIHJldHVybiB0 aGVtIHRvIHRoZSBjYWxsZXIsIHNvIHRoYXQgdGhlIGNhbGxlcgotCSAqIGRvZXNuJ3Qgc2V0IHRo ZSBWTSBiaXRzIGluY29ycmVjdGx5LgorCSAqIElmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVklT IGlzIHBhc3NlZCB3aXRob3V0IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUsCisJICogcHJzdGF0ZS5h bGxfZnJvemVuIG11c3QgYmUgaW5pdGlhbGl6ZWQgdG8gZmFsc2UsIHNpbmNlIHdlIHdpbGwgbm90 IGNhbGwKKwkgKiBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxlKCkgZm9yIGVhY2ggdHVwbGUuCisJ ICoKKwkgKiBEZWFkIHR1cGxlcyB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBieSB0aGUgZW5kIG9mIHZh Y3V1bSBzaG91bGQgbm90CisJICogcHJldmVudCBvcHBvcnR1bmlzdGljIGZyZWV6aW5nLiBUaGVy ZWZvcmUsIHdlIGRvIG5vdCBjbGVhciBhbGxfdmlzaWJsZQorCSAqIGFuZCBhbGxfZnJvemVuIHdo ZW4gd2UgZW5jb3VudGVyIExQX0RFQUQgaXRlbXMuIEluc3RlYWQsIHdlIGNvcnJlY3QKKwkgKiB0 aGVtIGFmdGVyIGRlY2lkaW5nIHdoZXRoZXIgdG8gZnJlZXplLCBidXQgYmVmb3JlIHVwZGF0aW5n IHRoZSBWTSwgdG8KKwkgKiBhdm9pZCBzZXR0aW5nIHRoZSBWTSBiaXRzIGluY29ycmVjdGx5Lgor CSAqCisJICogSWYgbmVpdGhlciBmcmVlemluZyBub3IgVk0gdXBkYXRlcyBhcmUgcmVxdWVzdGVk LCB3ZSBza2lwIHRoZSBleHRyYQorCSAqIGJvb2trZWVwaW5nLiBJbiB0aGlzIGNhc2UsIGluaXRp YWxpemluZyBhbGxfdmlzaWJsZSB0byBmYWxzZSBhbGxvd3MKKwkgKiBoZWFwX3BydW5lX3JlY29y ZF91bmNoYW5nZWRfbHBfbm9ybWFsKCkgdG8gYnlwYXNzIHVubmVjZXNzYXJ5IHdvcmsuCiAJICov CiAJaWYgKHByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQogCXsKIAkJcHJzdGF0ZS0+YWxsX3Zpc2li bGUgPSB0cnVlOwogCQlwcnN0YXRlLT5hbGxfZnJvemVuID0gdHJ1ZTsKIAl9CisJZWxzZSBpZiAo cHJzdGF0ZS0+YXR0ZW1wdF91cGRhdGVfdm0pCisJeworCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9 IHRydWU7CisJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKKwl9CiAJZWxzZQogCXsKLQkJ LyoKLQkJICogSW5pdGlhbGl6aW5nIHRvIGZhbHNlIGFsbG93cyBza2lwcGluZyB0aGUgd29yayB0 byB1cGRhdGUgdGhlbSBpbgotCQkgKiBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9y bWFsKCkuCi0JCSAqLwogCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOwogCQlwcnN0YXRl LT5hbGxfZnJvemVuID0gZmFsc2U7CiAJfQogCiAJLyoKLQkgKiBUaGUgdmlzaWJpbGl0eSBjdXRv ZmYgeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUKLQkgKiBwYWdl LiAgSW4gdGhlIGNvbW1vbiBjYXNlLCB0aGlzIHdpbGwgYmUgc2V0IGFzIHRoZSBjb25mbGljdCBo b3Jpem9uIHRoZQotCSAqIGNhbGxlciBjYW4gdXNlIGZvciB1cGRhdGluZyB0aGUgVk0uICBJZiwg YXQgdGhlIGVuZCBvZiBmcmVlemluZyBhbmQKLQkgKiBwcnVuaW5nLCB0aGUgcGFnZSBpcyBhbGwt ZnJvemVuLCB0aGVyZSBpcyBubyBwb3NzaWJpbGl0eSB0aGF0IGFueQotCSAqIHJ1bm5pbmcgdHJh bnNhY3Rpb24gb24gdGhlIHN0YW5kYnkgZG9lcyBub3Qgc2VlIHR1cGxlcyBvbiB0aGUgcGFnZSBh cwotCSAqIGFsbC12aXNpYmxlLCBzbyB0aGUgY29uZmxpY3QgaG9yaXpvbiByZW1haW5zIEludmFs aWRUcmFuc2FjdGlvbklkLgorCSAqIFRoZSB2aXNpYmlsaXR5IGN1dG9mZiB4aWQgaXMgdGhlIG5l d2VzdCB4bWluIG9mIGxpdmUsIGNvbW1pdHRlZCB0dXBsZXMKKwkgKiBvbGRlciB0aGFuIE9sZGVz dFhtaW4gb24gdGhlIHBhZ2UuIFRoaXMgZmllbGQgaXMgb25seSBrZXB0IHVwLXRvLWRhdGUKKwkg KiBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4gQXMgc29vbiBhcyBhIHR1cGxlIGlzIGVuY291 bnRlcmVkIHRoYXQgaXMKKwkgKiBub3QgdmlzaWJsZSB0byBhbGwsIHRoaXMgZmllbGQgaXMgdW5t YWludGFpbmVkLiBBcyBsb25nIGFzIGl0IGlzCisJICogbWFpbnRhaW5lZCwgaXQgY2FuIGJlIHVz ZWQgdG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uCisJICogd2hlbiB1 cGRhdGluZyB0aGUgVk0gYW5kL29yIGZyZWV6aW5nIGFsbCB0aGUgdHVwbGVzIG9uIHRoZSBwYWdl LgogCSAqLwogCXByc3RhdGUtPnZpc2liaWxpdHlfY3V0b2ZmX3hpZCA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwogfQpAQCAtNzY1LDEwICs3ODMsMTMxIEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShS ZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlyZXR1cm4gZG9fZnJlZXplOwogfQog CisvKgorICogRGVjaWRlIHdoZXRoZXIgdG8gc2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBiaXRzIGZv ciBoZWFwX2JsaywgdXNpbmcKKyAqIGluZm9ybWF0aW9uIGZyb20gUHJ1bmVGcmVlemVSZXN1bHQg YW5kIGJsa19rbm93bl9hdi4gU29tZSBjYWxsZXJzIG1heQorICogYWxyZWFkeSBoYXZlIGV4YW1p bmVkIHRoaXMgcGFnZeKAmXMgVk0gYml0cyAoZS5nLiwgVkFDVVVNIGluIHRoZSBwcmV2aW91cwor ICogaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCkgYW5kIGNhbiBwYXNzIHRoYXQgYWxv bmcgYXMgYmxrX2tub3duX2F2LgorICogQ2FsbGVycyB0aGF0IGhhdmUgbm90IHByZXZpb3VzbHkg Y2hlY2tlZCB0aGUgcGFnZSdzIHN0YXR1cyBpbiB0aGUgVk0gc2hvdWxkCisgKiBwYXNzIGZhbHNl IGZvciBibGtfa25vd25fYXYuCisgKgorICogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBhY3R1YWxs eSBzZXQgdGhlIFZNIGJpdCBvciBwYWdlLWxldmVsIGhpbnQsCisgKiBQRF9BTExfVklTSUJMRS4K KyAqCisgKiBIb3dldmVyLCBpZiBpdCBmaW5kcyB0aGF0IHRoZSBwYWdlLWxldmVsIHZpc2liaWxp dHkgaGludCBvciBWTSBpcworICogY29ycnVwdGVkLCBpdCB3aWxsIGZpeCB0aGVtIGJ5IGNsZWFy aW5nIHRoZSBWTSBiaXQgYW5kIHBhZ2UgaGludC4gVGhpcyBkb2VzCisgKiBub3QgbmVlZCB0byBi ZSBkb25lIGluIGEgY3JpdGljYWwgc2VjdGlvbi4KKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgb25l IG9yIGJvdGggVk0gYml0cyBzaG91bGQgYmUgc2V0LCBhbG9uZyB3aXRoIHRoZSBkZXNpcmVkCisg KiBmbGFncyBpbiAqbmV3X3ZtYml0cy4gQWxzbyBpbmRpY2F0ZXMgdmlhIGRvX3NldF9wZF92aXMg d2hldGhlcgorICogUERfQUxMX1ZJU0lCTEUgc2hvdWxkIGJlIHNldCBvbiB0aGUgaGVhcCBwYWdl LgorICovCitzdGF0aWMgYm9vbAoraGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhSZWxhdGlvbiByZWxh dGlvbiwKKwkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssCisJCQkJCSAgIEJ1ZmZlciBoZWFw X2J1ZiwKKwkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkgICBib29sIGJsa19rbm93bl9h diwKKwkJCQkJICAgY29uc3QgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCisJCQkJCSAgIHVp bnQ4ICpuZXdfdm1iaXRzLAorCQkJCQkgICBib29sICpkb19zZXRfcGRfdmlzKQoreworCVBhZ2UJ CWhlYXBfcGFnZSA9IEJ1ZmZlckdldFBhZ2UoaGVhcF9idWYpOworCisJKm5ld192bWJpdHMgPSAw OworCisJLyoKKwkgKiBJdCBzaG91bGQgbmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJp bGl0eSBtYXAgcGFnZSBpcyBzZXQgd2hpbGUKKwkgKiB0aGUgcGFnZS1sZXZlbCBiaXQgaXMgY2xl YXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChpZiBjaGVja3N1bXMKKwkgKiBhcmUgbm90 IGVuYWJsZWQpLgorCSAqCisJICogV2UgYXZvaWQgcmVseWluZyBvbiBibGtfa25vd25fYXYgYXMg YSBwcm94eSBmb3IgdGhlIHBhZ2UtbGV2ZWwKKwkgKiBQRF9BTExfVklTSUJMRSBiaXQgYmVpbmcg c2V0LCBzaW5jZSBpdCBtaWdodCBoYXZlIGJlY29tZSBzdGFsZSBhbmQgbWF5CisJICogbm90IGJl IHByb3ZpZGVkIGJ5IGFsbCBjYWxsZXJzLgorCSAqLworCSpkb19zZXRfcGRfdmlzID0gcHJlc3Vs dC0+YWxsX3Zpc2libGUgJiAhUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpOworCisJLyoKKwkg KiBEZXRlcm1pbmUgd2hhdCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0cyBzaG91bGQgYmUgc2V0IHRv IHVzaW5nIHRoZQorCSAqIHZhbHVlcyBvZiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkZXRl cm1pbmVkIGR1cmluZworCSAqIHBydW5pbmcvZnJlZXppbmcuCisJICovCisJaWYgKChwcmVzdWx0 LT5hbGxfdmlzaWJsZSAmJiAhYmxrX2tub3duX2F2KSB8fAorCQkocHJlc3VsdC0+YWxsX2Zyb3pl biAmJiAhVk1fQUxMX0ZST1pFTihyZWxhdGlvbiwgaGVhcF9ibGssICZ2bWJ1ZmZlcikpKQorCXsK KwkJKm5ld192bWJpdHMgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCQlpZiAocHJlc3Vs dC0+YWxsX2Zyb3plbikKKwkJeworCQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVz dWx0LT52bV9jb25mbGljdF9ob3Jpem9uKSk7CisJCQkqbmV3X3ZtYml0cyB8PSBWSVNJQklMSVRZ TUFQX0FMTF9GUk9aRU47CisJCX0KKworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwkvKgorCSAqIE5v dyBoYW5kbGUgdHdvIHBvdGVudGlhbCBjb3JydXB0aW9uIGNhc2VzOgorCSAqCisJICogVGhlc2Ug ZG8gbm90IG5lZWQgdG8gaGFwcGVuIGluIGEgY3JpdGljYWwgc2VjdGlvbiBhbmQgYXJlIG5vdAor CSAqIFdBTC1sb2dnZWQuCisJICoKKwkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2li aWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQorCSAqIHBhZ2UtbGV2ZWwg Yml0IGlzIGNsZWFyLiAgSG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290CisJ ICogY2xlYXJlZCBhZnRlciBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBz byB3ZSBtdXN0IHJlY2hlY2sKKwkgKiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5n IHRoYXQgdGhlIFZNIGlzIGNvcnJ1cHQuCisJICoKKwkgKiBDYWxsZXJzIHdoaWNoIGRpZCBub3Qg Y2hlY2sgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBkZXRlcm1pbmUKKwkgKiBibGtfa25vd25fYXYg d2lsbCBub3QgYmUgZWxpZ2libGUgZm9yIHRoaXMsIGhvd2V2ZXIgdGhlIGNvc3Qgb2YKKwkgKiBw b3RlbnRpYWxseSBuZWVkaW5nIHRvIHJlYWQgdGhlIHZpc2liaWxpdHkgbWFwIGZvciBwYWdlcyB0 aGF0IGFyZSBub3QKKwkgKiBhbGwtdmlzaWJsZSBpcyB0b28gaGlnaCB0byBqdXN0aWZ5IGdlbmVy YWxpemluZyB0aGUgY2hlY2suCisJICovCisJZWxzZSBpZiAoYmxrX2tub3duX2F2ICYmICFQYWdl SXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYKKwkJCSB2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMo cmVsYXRpb24sIGhlYXBfYmxrLCAmdm1idWZmZXIpICE9IDApCisJeworCQllcmVwb3J0KFdBUk5J TkcsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCisJCQkJIGVycm1zZygi cGFnZSBpcyBub3QgbWFya2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmlsaXR5IG1hcCBiaXQgaXMg c2V0IGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspKSk7CisKKwkJdmlzaWJpbGl0eW1hcF9jbGVhcihy ZWxhdGlvbiwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURf QklUUyk7CisJfQorCisJLyoKKwkgKiBJdCdzIHBvc3NpYmxlIGZvciB0aGUgdmFsdWUgcmV0dXJu ZWQgYnkKKwkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgdG8gbW92ZSBi YWNrd2FyZHMsIHNvIGl0J3Mgbm90CisJICogd3JvbmcgZm9yIHVzIHRvIHNlZSB0dXBsZXMgdGhh dCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKKwkgKiB5ZXQsIHdoaWxlIFBE X0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZlIHhtaW4gdmFsdWUKKwkg KiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2Fj dGlvbklkKCkgaXMKKwkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1lcyByZXR1cm5zIGEgdmFs dWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCisJICogc28gaWYgd2Ugc2VlIHRoYXQgY29u dHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0aGF0IHdlCisJICogdGhp bmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxseSBhcmUsIGFuZCB0aGUK KwkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCisJICoKKwkgKiBUaGVyZSBzaG91 bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQRF9BTExfVklTSUJMRSBz ZXQsCisJICogaG93ZXZlci4KKwkgKi8KKwllbHNlIGlmIChwcmVzdWx0LT5scGRlYWRfaXRlbXMg PiAwICYmIFBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSkKKwl7CisJCWVyZXBvcnQoV0FSTklO RywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKKwkJCQkgZXJybXNnKCJw YWdlIGNvbnRhaW5pbmcgTFBfREVBRCBpdGVtcyBpcyBtYXJrZWQgYXMgYWxsLXZpc2libGUgaW4g cmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsYXRpb24pLCBoZWFwX2JsaykpKTsKKworCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKGhlYXBfcGFn ZSk7CisJCU1hcmtCdWZmZXJEaXJ0eShoZWFwX2J1Zik7CisJCXZpc2liaWxpdHltYXBfY2xlYXIo cmVsYXRpb24sIGhlYXBfYmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElE X0JJVFMpOworCX0KKworCXJldHVybiBmYWxzZTsKK30KKwogCiAvKgogICogUHJ1bmUgYW5kIHJl cGFpciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoZQot ICogc3BlY2lmaWVkIHBhZ2UuCisgKiBzcGVjaWZpZWQgcGFnZS4gSWYgdGhlIHBhZ2UncyB2aXNp YmlsaXR5IHN0YXR1cyBoYXMgY2hhbmdlZCwgdXBkYXRlIGl0IGluCisgKiB0aGUgVk0uCiAgKgog ICogQ2FsbGVyIG11c3QgaGF2ZSBwaW4gYW5kIGJ1ZmZlciBjbGVhbnVwIGxvY2sgb24gdGhlIHBh Z2UuICBOb3RlIHRoYXQgd2UKICAqIGRvbid0IHVwZGF0ZSB0aGUgRlNNIGluZm9ybWF0aW9uIGZv ciBwYWdlIG9uIGNhbGxlcidzIGJlaGFsZi4gIENhbGxlciBtaWdodApAQCAtNzgzLDEyICs5MjIs MTMgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVm ZmVyLAogICogdHVwbGVzIGlmIGl0J3MgcmVxdWlyZWQgaW4gb3JkZXIgdG8gYWR2YW5jZSByZWxm cm96ZW54aWQgLyByZWxtaW5teGlkLCBvcgogICogaWYgaXQncyBjb25zaWRlcmVkIGFkdmFudGFn ZW91cyBmb3Igb3ZlcmFsbCBzeXN0ZW0gcGVyZm9ybWFuY2UgdG8gZG8gc28KICAqIG5vdy4gIFRo ZSAncGFyYW1zLmN1dG9mZnMnLCAncHJlc3VsdCcsICduZXdfcmVsZnJvemVuX3hpZCcgYW5kCi0g KiAnbmV3X3JlbG1pbl9teGlkJyBhcmd1bWVudHMgYXJlIHJlcXVpcmVkIHdoZW4gZnJlZXppbmcu ICBXaGVuCi0gKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBwYXNzZWQsIHdlIGFs c28gc2V0IHByZXN1bHQtPmFsbF92aXNpYmxlCi0gKiBhbmQgcHJlc3VsdC0+YWxsX2Zyb3plbiBh ZnRlciBkZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5vdCB0bwotICogb3Bwb3J0dW5pc3RpY2FsbHkg ZnJlZXplLCB0byBpbmRpY2F0ZSBpZiB0aGUgVk0gYml0cyBjYW4gYmUgc2V0LiAgVGhleSBhcmUK LSAqIGFsd2F5cyBzZXQgdG8gZmFsc2Ugd2hlbiB0aGUgSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBv cHRpb24gaXMgbm90IHBhc3NlZCwKLSAqIGJlY2F1c2UgYXQgdGhlIG1vbWVudCBvbmx5IGNhbGxl cnMgdGhhdCBhbHNvIGZyZWV6ZSBuZWVkIHRoYXQgaW5mb3JtYXRpb24uCisgKiAnbmV3X3JlbG1p bl9teGlkJyBhcmd1bWVudHMgYXJlIHJlcXVpcmVkIHdoZW4gZnJlZXppbmcuCisgKgorICogSWYg SEVBUF9QQUdFX1BSVU5FX1VQREFURV9WSVMgaXMgc2V0IGluIHBhcmFtcyBhbmQgdGhlIHZpc2li aWxpdHkgc3RhdHVzIG9mCisgKiB0aGUgcGFnZSBoYXMgY2hhbmdlZCwgd2Ugd2lsbCB1cGRhdGUg dGhlIFZNIGF0IHRoZSBzYW1lIHRpbWUgYXMgcHJ1bmluZyBhbmQKKyAqIGZyZWV6aW5nIHRoZSBo ZWFwIHBhZ2UuIFdlIHdpbGwgYWxzbyB1cGRhdGUgcHJlc3VsdC0+b2xkX3ZtYml0cyBhbmQKKyAq IHByZXN1bHQtPm5ld192bWJpdHMgd2l0aCB0aGUgc3RhdGUgb2YgdGhlIFZNIGJlZm9yZSBhbmQg YWZ0ZXIgdXBkYXRpbmcgaXQKKyAqIGZvciB0aGUgY2FsbGVyIHRvIHVzZSBpbiBib29ra2VlcGlu Zy4KICAqCiAgKiBwcmVzdWx0IGNvbnRhaW5zIG91dHB1dCBwYXJhbWV0ZXJzIG5lZWRlZCBieSBj YWxsZXJzLCBzdWNoIGFzIHRoZSBudW1iZXIgb2YKICAqIHR1cGxlcyByZW1vdmVkIGFuZCB0aGUg b2Zmc2V0cyBvZiBkZWFkIGl0ZW1zIG9uIHRoZSBwYWdlIGFmdGVyIHBydW5pbmcuCkBAIC04MTMs MTEgKzk1MywxNSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFt cyAqcGFyYW1zLAogCQkJCQkJICAgTXVsdGlYYWN0SWQgKm5ld19yZWxtaW5fbXhpZCkKIHsKIAlC dWZmZXIJCWJ1ZmZlciA9IHBhcmFtcy0+YnVmZmVyOworCUJ1ZmZlcgkJdm1idWZmZXIgPSBwYXJh bXMtPnZtYnVmZmVyOwogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CisJQmxv Y2tOdW1iZXIgYmxvY2tubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlcik7CiAJUHJ1bmVT dGF0ZQlwcnN0YXRlOwogCWJvb2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlkb19wcnVuZTsKIAlib29s CQlkb19oaW50X3BydW5lOworCWJvb2wJCWRvX3NldF92bTsKKwlib29sCQlkb19zZXRfcGRfdmlz OwogCWJvb2wJCWRpZF90dXBsZV9oaW50X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2Fs VXNhZ2Uud2FsX2ZwaTsKIApAQCAtMTAwNSw2ICsxMTQ5LDUxIEBAIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJCQkqbmV3X3JlbG1pbl9teGlk ID0gcHJzdGF0ZS5wYWdlZnJ6Lk5vRnJlZXplUGFnZVJlbG1pbk14aWQ7CiAJCX0KIAl9CisKKwkv KiBOb3cgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCBhbmQgUERfQUxMX1ZJU0lCTEUgaGludCAq LworCUFzc2VydCghcHJzdGF0ZS5hbGxfdmlzaWJsZSB8fCAocHJzdGF0ZS5scGRlYWRfaXRlbXMg PT0gMCkpOworCisJZG9fc2V0X3ZtID0gZmFsc2U7CisJaWYgKHByc3RhdGUuYXR0ZW1wdF91cGRh dGVfdm0pCisJCWRvX3NldF92bSA9IGhlYXBfcGFnZV93aWxsX3NldF92aXMocGFyYW1zLT5yZWxh dGlvbiwKKwkJCQkJCQkJCQkgICBibG9ja25vLAorCQkJCQkJCQkJCSAgIGJ1ZmZlciwKKwkJCQkJ CQkJCQkgICB2bWJ1ZmZlciwKKwkJCQkJCQkJCQkgICBwYXJhbXMtPmJsa19rbm93bl9hdiwKKwkJ CQkJCQkJCQkgICBwcmVzdWx0LAorCQkJCQkJCQkJCSAgICZwcmVzdWx0LT5uZXdfdm1iaXRzLAor CQkJCQkJCQkJCSAgICZkb19zZXRfcGRfdmlzKTsKKworCisJLyogV2Ugc2hvdWxkIG9ubHkgc2V0 IHRoZSBWTSBpZiBQRF9BTExfVklTSUJMRSBpcyBzZXQgb3Igd2lsbCBiZSAqLworCUFzc2VydCgh ZG9fc2V0X3ZtIHx8IGRvX3NldF9wZF92aXMgfHwgUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7CisK KwkvKgorCSAqIG5ld192bWJpdHMgc2hvdWxkIGJlIDAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9y IG5vdCB0aGUgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGlmIHdlIGRvIG5vdCBpbnRlbmQgdG8g c2V0IHRoZSBWTS4KKwkgKi8KKwlBc3NlcnQoZG9fc2V0X3ZtIHx8IHByZXN1bHQtPm5ld192bWJp dHMgPT0gMCk7CisKKwlpZiAoZG9fc2V0X3BkX3ZpcykKKwl7CisJCS8qCisJCSAqIE5COiBJZiB0 aGUgaGVhcCBwYWdlIGlzIGFsbC12aXNpYmxlIGJ1dCB0aGUgVk0gYml0IGlzIG5vdCBzZXQsIHdl CisJCSAqIGRvbid0IG5lZWQgdG8gZGlydHkgdGhlIGhlYXAgcGFnZS4gIEhvd2V2ZXIsIGlmIGNo ZWNrc3VtcyBhcmUKKwkJICogZW5hYmxlZCwgd2UgZG8gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0 aGUgaGVhcCBwYWdlIGlzIGRpcnRpZWQKKwkJICogYmVmb3JlIHBhc3NpbmcgaXQgdG8gdmlzaWJp bGl0eW1hcF9zZXQoKSwgYmVjYXVzZSBpdCBtYXkgYmUgbG9nZ2VkLgorCQkgKiBHaXZlbiB0aGF0 IHRoaXMgc2l0dWF0aW9uIHNob3VsZCBvbmx5IGhhcHBlbiBpbiByYXJlIGNhc2VzIGFmdGVyIGEK KwkJICogY3Jhc2gsIGl0IGlzIG5vdCB3b3J0aCBvcHRpbWl6aW5nLgorCQkgKi8KKwkJTWFya0J1 ZmZlckRpcnR5KGJ1ZmZlcik7CisJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCX0KKworCXBy ZXN1bHQtPm9sZF92bWJpdHMgPSAwOworCWlmIChkb19zZXRfdm0pCisJCXByZXN1bHQtPm9sZF92 bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldChwYXJhbXMtPnJlbGF0aW9uLCBibG9ja25vLCBidWZm ZXIsCisJCQkJCQkJCQkJCQlJbnZhbGlkWExvZ1JlY1B0ciwKKwkJCQkJCQkJCQkJCXZtYnVmZmVy LCBwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uLAorCQkJCQkJCQkJCQkJcHJlc3VsdC0+bmV3 X3ZtYml0cyk7CiB9CiAKIApAQCAtMTQ3OSw2ICsxNjY4LDggQEAgaGVhcF9wcnVuZV9yZWNvcmRf dW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNl dE51bWIKIAkJCXsKIAkJCQlUcmFuc2FjdGlvbklkIHhtaW47CiAKKwkJCQlBc3NlcnQocHJzdGF0 ZS0+YXR0ZW1wdF91cGRhdGVfdm0pOworCiAJCQkJaWYgKCFIZWFwVHVwbGVIZWFkZXJYbWluQ29t bWl0dGVkKGh0dXApKQogCQkJCXsKIAkJCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCAxY2NhMDk1ODQxZS4uZjU2MTcz MzVjYjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE5MzUsMTE2ICsx OTM1LDYgQEAgY21wT2Zmc2V0TnVtYmVycyhjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQog fQogCiAKLS8qCi0gKiBEZWNpZGUgd2hldGhlciB0byBzZXQgdGhlIHZpc2liaWxpdHkgbWFwIGJp dHMgZm9yIGhlYXBfYmxrLCB1c2luZwotICogaW5mb3JtYXRpb24gZnJvbSBQcnVuZUZyZWV6ZVJl c3VsdCBhbmQgYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtLiBUaGlzCi0gKiBmdW5jdGlvbiBk b2VzIG5vdCBhY3R1YWxseSBzZXQgdGhlIFZNIGJpdCBvciBwYWdlLWxldmVsIGhpbnQsCi0gKiBQ RF9BTExfVklTSUJMRS4KLSAqCi0gKiBJZiBpdCBmaW5kcyB0aGF0IHRoZSBwYWdlLWxldmVsIHZp c2liaWxpdHkgaGludCBvciBWTSBpcyBjb3JydXB0ZWQsIGl0IHdpbGwKLSAqIGZpeCB0aGVtIGJ5 IGNsZWFyaW5nIHRoZSBWTSBiaXQgYW5kIHBhZ2UgaGludC4gVGhpcyBkb2VzIG5vdCBuZWVkIHRv IGJlCi0gKiBkb25lIGluIGEgY3JpdGljYWwgc2VjdGlvbi4KLSAqCi0gKiBSZXR1cm5zIHRydWUg aWYgb25lIG9yIGJvdGggVk0gYml0cyBzaG91bGQgYmUgc2V0LCBhbG9uZyB3aXRoIHRoZSBkZXNp cmVkCi0gKiBmbGFncyBpbiAqbmV3X3ZtYml0cy4gQWxzbyBpbmRpY2F0ZXMgdmlhIGRvX3NldF9w ZF92aXMgd2hldGhlcgotICogUERfQUxMX1ZJU0lCTEUgc2hvdWxkIGJlIHNldCBvbiB0aGUgaGVh cCBwYWdlLgotICovCi1zdGF0aWMgYm9vbAotaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhSZWxhdGlv biByZWxhdGlvbiwKLQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssCi0JCQkJCSAgIEJ1ZmZl ciBoZWFwX2J1ZiwKLQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAotCQkJCQkgICBib29sIGFsbF92 aXNpYmxlX2FjY29yZGluZ190b192bSwKLQkJCQkJICAgY29uc3QgUHJ1bmVGcmVlemVSZXN1bHQg KnByZXN1bHQsCi0JCQkJCSAgIHVpbnQ4ICpuZXdfdm1iaXRzLAotCQkJCQkgICBib29sICpkb19z ZXRfcGRfdmlzKQotewotCVBhZ2UJCWhlYXBfcGFnZSA9IEJ1ZmZlckdldFBhZ2UoaGVhcF9idWYp OwotCi0JKm5ld192bWJpdHMgPSAwOwotCi0JLyoKLQkgKiBJdCBzaG91bGQgbmV2ZXIgYmUgdGhl IGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0eSBtYXAgcGFnZSBpcyBzZXQgd2hpbGUKLQkgKiB0aGUg cGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBhbGxvd2VkIChpZiBj aGVja3N1bXMKLQkgKiBhcmUgbm90IGVuYWJsZWQpLgotCSAqCi0JICogV2UgYXZvaWQgcmVseWlu ZyBvbiBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gYXMgYSBwcm94eSBmb3IgdGhlCi0JICog cGFnZS1sZXZlbCBQRF9BTExfVklTSUJMRSBiaXQgYmVpbmcgc2V0LCBzaW5jZSBpdCBtaWdodCBo YXZlIGJlY29tZQotCSAqIHN0YWxlLgotCSAqLwotCSpkb19zZXRfcGRfdmlzID0gcHJlc3VsdC0+ YWxsX3Zpc2libGUgJiAhUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpOwotCi0JLyoKLQkgKiBE ZXRlcm1pbmUgd2hhdCB0byBzZXQgdGhlIHZpc2liaWxpdHkgbWFwIGJpdHMgdG8gYmFzZWQgb24g aW5mb3JtYXRpb24KLQkgKiBmcm9tIHRoZSBWTSAoYXMgb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25l eHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20KLQkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3pl biB2YXJpYWJsZXMuCi0JICovCi0JaWYgKChwcmVzdWx0LT5hbGxfdmlzaWJsZSAmJiAhYWxsX3Zp c2libGVfYWNjb3JkaW5nX3RvX3ZtKSB8fAotCQkocHJlc3VsdC0+YWxsX2Zyb3plbiAmJiAhVk1f QUxMX0ZST1pFTihyZWxhdGlvbiwgaGVhcF9ibGssICZ2bWJ1ZmZlcikpKQotCXsKLQkJKm5ld192 bWJpdHMgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOwotCQlpZiAocHJlc3VsdC0+YWxsX2Zy b3plbikKLQkJewotCQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LT52bV9j b25mbGljdF9ob3Jpem9uKSk7Ci0JCQkqbmV3X3ZtYml0cyB8PSBWSVNJQklMSVRZTUFQX0FMTF9G Uk9aRU47Ci0JCX0KLQotCQlyZXR1cm4gdHJ1ZTsKLQl9Ci0KLQkvKgotCSAqIE5vdyBoYW5kbGUg dHdvIHBvdGVudGlhbCBjb3JydXB0aW9uIGNhc2VzOgotCSAqCi0JICogVGhlc2UgZG8gbm90IG5l ZWQgdG8gaGFwcGVuIGluIGEgY3JpdGljYWwgc2VjdGlvbiBhbmQgYXJlIG5vdAotCSAqIFdBTC1s b2dnZWQuCi0JICoKLQkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFw IGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQotCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNs ZWFyLiAgSG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290Ci0JICogY2xlYXJl ZCBhZnRlciBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0 IHJlY2hlY2sKLQkgKiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhl IFZNIGlzIGNvcnJ1cHQuCi0JICovCi0JZWxzZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3Rv X3ZtICYmICFQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYKLQkJCSB2aXNpYmlsaXR5bWFw X2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBfYmxrLCAmdm1idWZmZXIpICE9IDApCi0JewotCQll cmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCi0J CQkJIGVycm1zZygicGFnZSBpcyBub3QgbWFya2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmlsaXR5 IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKLQkJCQkJCVJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspKSk7Ci0KLQkJdmlzaWJpbGl0 eW1hcF9jbGVhcihyZWxhdGlvbiwgaGVhcF9ibGssIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lCSUxJ VFlNQVBfVkFMSURfQklUUyk7Ci0JfQotCi0JLyoKLQkgKiBJdCdzIHBvc3NpYmxlIGZvciB0aGUg dmFsdWUgcmV0dXJuZWQgYnkKLQkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklk KCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90Ci0JICogd3JvbmcgZm9yIHVzIHRvIHNl ZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKLQkgKiB5 ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZlIHht aW4gdmFsdWUKLQkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25SZW1v dmFibGVUcmFuc2FjdGlvbklkKCkgaXMKLQkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1lcyBy ZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCi0JICogc28gaWYgd2Ug c2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0aGF0 IHdlCi0JICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxseSBh cmUsIGFuZCB0aGUKLQkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCi0JICoKLQkg KiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQRF9B TExfVklTSUJMRSBzZXQsCi0JICogaG93ZXZlci4KLQkgKi8KLQllbHNlIGlmIChwcmVzdWx0LT5s cGRlYWRfaXRlbXMgPiAwICYmIFBhZ2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSkKLQl7Ci0JCWVy ZXBvcnQoV0FSTklORywKLQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJ CQkgZXJybXNnKCJwYWdlIGNvbnRhaW5pbmcgTFBfREVBRCBpdGVtcyBpcyBtYXJrZWQgYXMgYWxs LXZpc2libGUgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJCQkJUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVsYXRpb24pLCBoZWFwX2JsaykpKTsKLQotCQlQYWdlQ2xlYXJBbGxWaXNp YmxlKGhlYXBfcGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0eShoZWFwX2J1Zik7Ci0JCXZpc2liaWxp dHltYXBfY2xlYXIocmVsYXRpb24sIGhlYXBfYmxrLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklM SVRZTUFQX1ZBTElEX0JJVFMpOwotCX0KLQotCXJldHVybiBmYWxzZTsKLX0KLQogLyoKICAqCWxh enlfc2Nhbl9wcnVuZSgpIC0tIGxhenlfc2Nhbl9oZWFwKCkgcHJ1bmluZyBhbmQgZnJlZXppbmcu CiAgKgpAQCAtMjA3NSwxNiArMTk2NSwxNCBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAq dmFjcmVsLAogCQkJCWJvb2wgKnZtX3BhZ2VfZnJvemVuKQogewogCVJlbGF0aW9uCXJlbCA9IHZh Y3JlbC0+cmVsOwotCWJvb2wJCWRvX3NldF92bSA9IGZhbHNlOwotCWJvb2wJCWRvX3NldF9wZF92 aXMgPSBmYWxzZTsKLQl1aW50OAkJbmV3X3ZtYml0cyA9IDA7Ci0JdWludDgJCW9sZF92bWJpdHMg PSAwOwogCVBydW5lRnJlZXplUmVzdWx0IHByZXN1bHQ7CiAJUHJ1bmVGcmVlemVQYXJhbXMgcGFy YW1zID0gewogCQkucmVsYXRpb24gPSByZWwsCiAJCS5idWZmZXIgPSBidWYsCisJCS52bWJ1ZmZl ciA9IHZtYnVmZmVyLAorCQkuYmxrX2tub3duX2F2ID0gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3Rv X3ZtLAogCQkucmVhc29uID0gUFJVTkVfVkFDVVVNX1NDQU4sCi0JCS5vcHRpb25zID0gSEVBUF9Q QUdFX1BSVU5FX0ZSRUVaRSwKKwkJLm9wdGlvbnMgPSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIHwg SEVBUF9QQUdFX1BSVU5FX1VQREFURV9WSVMsCiAJCS52aXN0ZXN0ID0gdmFjcmVsLT52aXN0ZXN0 LAogCQkuY3V0b2ZmcyA9ICZ2YWNyZWwtPmN1dG9mZnMsCiAJfTsKQEAgLTIxODcsNjAgKzIwNzUs MjQgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkvKiBEaWQgd2UgZmlu ZCBMUF9ERUFEIGl0ZW1zPyAqLwogCSpoYXNfbHBkZWFkX2l0ZW1zID0gKHByZXN1bHQubHBkZWFk X2l0ZW1zID4gMCk7CiAKLQlBc3NlcnQoIXByZXN1bHQuYWxsX3Zpc2libGUgfHwgISgqaGFzX2xw ZGVhZF9pdGVtcykpOwotCUFzc2VydCghcHJlc3VsdC5hbGxfZnJvemVuIHx8IHByZXN1bHQuYWxs X3Zpc2libGUpOwotCi0JZG9fc2V0X3ZtID0gaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhyZWwsCi0J CQkJCQkJCQkgICBibGtubywKLQkJCQkJCQkJCSAgIGJ1ZiwKLQkJCQkJCQkJCSAgIHZtYnVmZmVy LAotCQkJCQkJCQkJICAgYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtLAotCQkJCQkJCQkJICAg JnByZXN1bHQsCi0JCQkJCQkJCQkgICAmbmV3X3ZtYml0cywKLQkJCQkJCQkJCSAgICZkb19zZXRf cGRfdmlzKTsKLQotCi0JLyogV2Ugc2hvdWxkIG9ubHkgc2V0IHRoZSBWTSBpZiBQRF9BTExfVklT SUJMRSBpcyBzZXQgb3Igd2lsbCBiZSAqLwotCUFzc2VydCghZG9fc2V0X3ZtIHx8IGRvX3NldF9w ZF92aXMgfHwgUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7Ci0KLQlpZiAoZG9fc2V0X3BkX3ZpcykK LQl7Ci0JCS8qCi0JCSAqIE5COiBJZiB0aGUgaGVhcCBwYWdlIGlzIGFsbC12aXNpYmxlIGJ1dCB0 aGUgVk0gYml0IGlzIG5vdCBzZXQsIHdlCi0JCSAqIGRvbid0IG5lZWQgdG8gZGlydHkgdGhlIGhl YXAgcGFnZS4gIEhvd2V2ZXIsIGlmIGNoZWNrc3VtcyBhcmUKLQkJICogZW5hYmxlZCwgd2UgZG8g bmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaGVhcCBwYWdlIGlzIGRpcnRpZWQKLQkJICogYmVm b3JlIHBhc3NpbmcgaXQgdG8gdmlzaWJpbGl0eW1hcF9zZXQoKSwgYmVjYXVzZSBpdCBtYXkgYmUg bG9nZ2VkLgotCQkgKiBHaXZlbiB0aGF0IHRoaXMgc2l0dWF0aW9uIHNob3VsZCBvbmx5IGhhcHBl biBpbiByYXJlIGNhc2VzIGFmdGVyIGEKLQkJICogY3Jhc2gsIGl0IGlzIG5vdCB3b3J0aCBvcHRp bWl6aW5nLgotCQkgKi8KLQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7Ci0JCVBhZ2VTZXRBbGxWaXNp YmxlKHBhZ2UpOwotCX0KLQotCWlmIChkb19zZXRfdm0pCi0JCW9sZF92bWJpdHMgPSB2aXNpYmls aXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkJCSAgIEludmFsaWRY TG9nUmVjUHRyLAotCQkJCQkJCQkJICAgdm1idWZmZXIsIHByZXN1bHQudm1fY29uZmxpY3RfaG9y aXpvbiwKLQkJCQkJCQkJCSAgIG5ld192bWJpdHMpOwotCiAJLyoKIAkgKiBGb3IgdGhlIHB1cnBv c2VzIG9mIGxvZ2dpbmcsIGNvdW50IHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIHdhcyBuZXdseQog CSAqIHNldCBhbGwtdmlzaWJsZSBhbmQsIHBvdGVudGlhbGx5LCBhbGwtZnJvemVuLgogCSAqLwot CWlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpID09IDAgJiYKLQkJ KG5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwKQorCWlmICgocHJl c3VsdC5vbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgPT0gMCAmJgorCQko cHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgIT0gMCkKIAl7 CiAJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMrKzsKLQkJaWYgKChuZXdfdm1iaXRzICYg VklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSAhPSAwKQorCQlpZiAoKHByZXN1bHQubmV3X3ZtYml0 cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgIT0gMCkKIAkJewogCQkJdmFjcmVsLT52bV9u ZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKIAkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7CiAJ CX0KIAl9Ci0JZWxzZSBpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4p ID09IDAgJiYKLQkJCSAobmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgIT0g MCkKKwllbHNlIGlmICgocHJlc3VsdC5vbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExfRlJP WkVOKSA9PSAwICYmCisJCQkgKHByZXN1bHQubmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxM X0ZST1pFTikgIT0gMCkKIAl7Ci0JCUFzc2VydCgobmV3X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUpICE9IDApOworCQlBc3NlcnQoKHByZXN1bHQubmV3X3ZtYml0cyAmIFZJU0lC SUxJVFlNQVBfQUxMX1ZJU0lCTEUpICE9IDApOwogCQl2YWNyZWwtPnZtX25ld19mcm96ZW5fcGFn ZXMrKzsKIAkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXgg NjMyYzQzMzJhOGMuLmNlOWNmYmRjNzY3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC00Miw2ICs0Miw3 IEBACiAvKiAib3B0aW9ucyIgZmxhZyBiaXRzIGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZSAqLwogI2RlZmluZSBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVTRURfTk9XCQkoMSA8PCAwKQog I2RlZmluZSBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFCQkJCSgxIDw8IDEpCisjZGVmaW5lIEhFQVBf UEFHRV9QUlVORV9VUERBVEVfVklTCQkJKDEgPDwgMikKIAogdHlwZWRlZiBzdHJ1Y3QgQnVsa0lu c2VydFN0YXRlRGF0YSAqQnVsa0luc2VydFN0YXRlOwogdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlz U3RhdGUgR2xvYmFsVmlzU3RhdGU7CkBAIC0yMzgsNiArMjM5LDE4IEBAIHR5cGVkZWYgc3RydWN0 IFBydW5lRnJlZXplUGFyYW1zCiAJUmVsYXRpb24JcmVsYXRpb247CQkvKiByZWxhdGlvbiBjb250 YWluaW5nIGJ1ZmZlciB0byBiZSBwcnVuZWQgKi8KIAlCdWZmZXIJCWJ1ZmZlcjsJCQkvKiBidWZm ZXIgdG8gYmUgcHJ1bmVkICovCiAKKwkvKgorCSAqIHZtYnVmZmVyIGlzIHRoZSBidWZmZXIgdGhh dCBtdXN0IGFscmVhZHkgY29udGFpbiB0aGUgcmVxdWlyZWQgYmxvY2sgb2YKKwkgKiB0aGUgdmlz aWJpbGl0eSBtYXAgaWYgd2UgYXJlIHRvIHVwZGF0ZSBpdC4gYmxrX2tub3duX2F2IGlzIHRoZQor CSAqIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFwIGJsb2NrIGFzIG9mIHRoZSBsYXN0IGNh bGwgdG8KKwkgKiBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2soKS4gQ2FsbGVycyB3aGljaCBk aWQgbm90IGNoZWNrIHRoZQorCSAqIHZpc2liaWxpdHkgbWFwIGFscmVhZHkgc2hvdWxkIHBhc3Mg ZmFsc2UgZm9yIGJsa19rbm93bl9hdi4gVGhpcyBpcyBvbmx5CisJICogYW4gb3B0aW1pemF0aW9u IGZvciBjYWxsZXJzIHRoYXQgZGlkIGNoZWNrIHRoZSBWTSBhbmQgd29uJ3QgYWZmZWN0CisJICog Y29ycmVjdG5lc3MuCisJICovCisJQnVmZmVyCQl2bWJ1ZmZlcjsKKwlib29sCQlibGtfa25vd25f YXY7CisKIAkvKgogCSAqIFRoZSByZWFzb24gcHJ1bmluZyB3YXMgcGVyZm9ybWVkLiAgSXQgaXMg dXNlZCB0byBzZXQgdGhlIFdBTCByZWNvcmQKIAkgKiBvcGNvZGUgd2hpY2ggaXMgdXNlZCBmb3Ig ZGVidWdnaW5nIGFuZCBhbmFseXNpcyBwdXJwb3Nlcy4KQEAgLTI1Miw2ICsyNjUsOSBAQCB0eXBl ZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVBhcmFtcwogCSAqCiAJICogSEVBUF9QQUdFX1BSVU5FX0ZS RUVaRSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcywgYW5kCiAJICog d2lsbCByZXR1cm4gJ2FsbF92aXNpYmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRoZSBjYWxs ZXIuCisJICoKKwkgKiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZJUyBpbmRpY2F0ZXMgdGhhdCB3 ZSB3aWxsIHNldCB0aGUgcGFnZSdzIHN0YXR1cworCSAqIGluIHRoZSBWTS4KIAkgKi8KIAlpbnQJ CQlvcHRpb25zOwogCkBAIC0yOTksNiArMzE1LDE3IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJl ZXplUmVzdWx0CiAJYm9vbAkJYWxsX2Zyb3plbjsKIAlUcmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0 X2hvcml6b247CiAKKwkvKgorCSAqIG9sZF92bWJpdHMgYXJlIHRoZSBzdGF0ZSBvZiB0aGUgYWxs LXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYml0cyBpbiB0aGUKKwkgKiB2aXNpYmlsaXR5IG1hcCBi ZWZvcmUgdXBkYXRpbmcgaXQgZHVyaW5nIHBoYXNlIEkgb2YgdmFjdXVtaW5nLgorCSAqIG5ld192 bWJpdHMgYXJlIHRoZSBzdGF0ZSBvZiB0aG9zZSBiaXRzIGFmdGVyIHBoYXNlIEkgb2YgdmFjdXVt aW5nLgorCSAqCisJICogVGhlc2UgYXJlIG9ubHkgc2V0IGlmIHRoZSBIRUFQX1BBR0VfUFJVTkVf VVBEQVRFX1ZJUyBvcHRpb24gaXMgc2V0IGFuZAorCSAqIHdlIGhhdmUgYXR0ZW1wdGVkIHRvIHVw ZGF0ZSB0aGUgVk0uCisJICovCisJdWludDgJCW5ld192bWJpdHM7CisJdWludDgJCW9sZF92bWJp dHM7CisKIAkvKgogCSAqIFdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIG1ha2VzIHJlbCB0cnVuY2F0 aW9uIHVuc2FmZS4gIFRoaXMgaXMgc2V0IHRvCiAJICogJ3RydWUnLCBldmVuIGlmIHRoZSBwYWdl IGNvbnRhaW5zIExQX0RFQUQgaXRlbXMuICBWQUNVVU0gd2lsbCByZW1vdmUKLS0gCjIuNDMuMAoK --0000000000001ceba70645144821 Content-Type: text/x-patch; charset="UTF-8"; name="v23-0004-Move-VM-assert-into-prune-freeze-code.patch" Content-Disposition: attachment; filename="v23-0004-Move-VM-assert-into-prune-freeze-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miqlznba3 RnJvbSA5YWEwZWMyYjVmYWUwNDc2MjEyOGZiZWMzMjlhMjMxMzlmYjViNGE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTU6NTc6MzQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyMyAwNC8xNF0gTW92ZSBWTSBhc3NlcnQgaW50byBwcnVuZS9mcmVlemUgY29kZQoKRm9y IHJldmlldyBvbmx5LCB0aGlzIGNvbW1pdCBtb3ZlcyB0aGUgY2hlY2sgb2YgdGhlIGhlYXAgcGFn ZSBpbnRvCnBydW5lL2ZyZWV6ZSBjb2RlIGJlZm9yZSBzZXR0aW5nIHRoZSBWTS4gVGhpcyBhbGxv d3MgdXMgdG8gcmVtb3ZlIHNvbWUKZmllbGRzIG9mIHRoZSBQcnVuZUZyZWV6ZVJlc3VsdC4KClRo aXMgd2lsbCBnZXQgc3F1YXNoZWQgaW50byBhIGxhcmdlciBjb21taXQgdG8gc2V0IHRoZSBWTSBp biB0aGUgc2FtZQpyZWNvcmQgd2hlcmUgd2UgcHJ1bmUgYW5kIGZyZWV6ZS4KLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgfCAxNDIgKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAgNjggKy0tLS0t LS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgIHwgIDI1ICsrLS0t CiAzIGZpbGVzIGNoYW5nZWQsIDExMSBpbnNlcnRpb25zKCspLCAxMjQgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCAwZGFmM2FiZjcxNy4uMjUxMmI1ZDgz ZTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xOTksNyArMTk5LDcgQEAg c3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhSZWxhdGlvbiByZWxhdGlvbiwKIAkJ CQkJCQkJICAgQnVmZmVyIGhlYXBfYnVmLAogCQkJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIsCiAJ CQkJCQkJCSAgIGJvb2wgYmxrX2tub3duX2F2LAotCQkJCQkJCQkgICBjb25zdCBQcnVuZUZyZWV6 ZVJlc3VsdCAqcHJlc3VsdCwKKwkJCQkJCQkJICAgY29uc3QgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwK IAkJCQkJCQkJICAgdWludDggKm5ld192bWJpdHMsCiAJCQkJCQkJCSAgIGJvb2wgKmRvX3NldF9w ZF92aXMpOwogCkBAIC03ODUsOCArNzg1LDggQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCiAvKgogICogRGVjaWRlIHdoZXRoZXIgdG8g c2V0IHRoZSB2aXNpYmlsaXR5IG1hcCBiaXRzIGZvciBoZWFwX2JsaywgdXNpbmcKLSAqIGluZm9y bWF0aW9uIGZyb20gUHJ1bmVGcmVlemVSZXN1bHQgYW5kIGJsa19rbm93bl9hdi4gU29tZSBjYWxs ZXJzIG1heQotICogYWxyZWFkeSBoYXZlIGV4YW1pbmVkIHRoaXMgcGFnZeKAmXMgVk0gYml0cyAo ZS5nLiwgVkFDVVVNIGluIHRoZSBwcmV2aW91cworICogaW5mb3JtYXRpb24gZnJvbSBQcnVuZVN0 YXRlIGFuZCBibGtfa25vd25fYXYuIFNvbWUgY2FsbGVycyBtYXkgYWxyZWFkeSBoYXZlCisgKiBl eGFtaW5lZCB0aGlzIHBhZ2XigJlzIFZNIGJpdHMgKGUuZy4sIFZBQ1VVTSBpbiB0aGUgcHJldmlv dXMKICAqIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIGNhbGwpIGFuZCBjYW4gcGFzcyB0aGF0 IGFsb25nIGFzIGJsa19rbm93bl9hdi4KICAqIENhbGxlcnMgdGhhdCBoYXZlIG5vdCBwcmV2aW91 c2x5IGNoZWNrZWQgdGhlIHBhZ2UncyBzdGF0dXMgaW4gdGhlIFZNIHNob3VsZAogICogcGFzcyBm YWxzZSBmb3IgYmxrX2tub3duX2F2LgpAQCAtODA4LDEzICs4MDgsMjAgQEAgaGVhcF9wYWdlX3dp bGxfc2V0X3ZpcyhSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJICAgQnVmZmVyIGhlYXBfYnVmLAog CQkJCQkgICBCdWZmZXIgdm1idWZmZXIsCiAJCQkJCSAgIGJvb2wgYmxrX2tub3duX2F2LAotCQkJ CQkgICBjb25zdCBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKKwkJCQkJICAgY29uc3QgUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSwKIAkJCQkJICAgdWludDggKm5ld192bWJpdHMsCiAJCQkJCSAgIGJv b2wgKmRvX3NldF9wZF92aXMpCiB7CiAJUGFnZQkJaGVhcF9wYWdlID0gQnVmZmVyR2V0UGFnZSho ZWFwX2J1Zik7CiAKIAkqbmV3X3ZtYml0cyA9IDA7CisJKmRvX3NldF9wZF92aXMgPSBmYWxzZTsK KworCWlmICghcHJzdGF0ZS0+YXR0ZW1wdF91cGRhdGVfdm0pCisJeworCQlBc3NlcnQoIXByc3Rh dGUtPmFsbF92aXNpYmxlICYmICFwcnN0YXRlLT5hbGxfZnJvemVuKTsKKwkJcmV0dXJuIGZhbHNl OworCX0KIAogCS8qCiAJICogSXQgc2hvdWxkIG5ldmVyIGJlIHRoZSBjYXNlIHRoYXQgdGhlIHZp c2liaWxpdHkgbWFwIHBhZ2UgaXMgc2V0IHdoaWxlCkBAIC04MjUsMjIgKzgzMiwxOSBAQCBoZWFw X3BhZ2Vfd2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9uLAogCSAqIFBEX0FMTF9WSVNJQkxF IGJpdCBiZWluZyBzZXQsIHNpbmNlIGl0IG1pZ2h0IGhhdmUgYmVjb21lIHN0YWxlIGFuZCBtYXkK IAkgKiBub3QgYmUgcHJvdmlkZWQgYnkgYWxsIGNhbGxlcnMuCiAJICovCi0JKmRvX3NldF9wZF92 aXMgPSBwcmVzdWx0LT5hbGxfdmlzaWJsZSAmICFQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSk7 CisJKmRvX3NldF9wZF92aXMgPSBwcnN0YXRlLT5hbGxfdmlzaWJsZSAmICFQYWdlSXNBbGxWaXNp YmxlKGhlYXBfcGFnZSk7CiAKIAkvKgogCSAqIERldGVybWluZSB3aGF0IHRoZSB2aXNpYmlsaXR5 IG1hcCBiaXRzIHNob3VsZCBiZSBzZXQgdG8gdXNpbmcgdGhlCiAJICogdmFsdWVzIG9mIGFsbF92 aXNpYmxlIGFuZCBhbGxfZnJvemVuIGRldGVybWluZWQgZHVyaW5nCiAJICogcHJ1bmluZy9mcmVl emluZy4KIAkgKi8KLQlpZiAoKHByZXN1bHQtPmFsbF92aXNpYmxlICYmICFibGtfa25vd25fYXYp IHx8Ci0JCShwcmVzdWx0LT5hbGxfZnJvemVuICYmICFWTV9BTExfRlJPWkVOKHJlbGF0aW9uLCBo ZWFwX2JsaywgJnZtYnVmZmVyKSkpCisJaWYgKChwcnN0YXRlLT5hbGxfdmlzaWJsZSAmJiAhYmxr X2tub3duX2F2KSB8fAorCQkocHJzdGF0ZS0+YWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihy ZWxhdGlvbiwgaGVhcF9ibGssICZ2bWJ1ZmZlcikpKQogCXsKIAkJKm5ld192bWJpdHMgPSBWSVNJ QklMSVRZTUFQX0FMTF9WSVNJQkxFOwotCQlpZiAocHJlc3VsdC0+YWxsX2Zyb3plbikKLQkJewot CQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jp em9uKSk7CisJCWlmIChwcnN0YXRlLT5hbGxfZnJvemVuKQogCQkJKm5ld192bWJpdHMgfD0gVklT SUJJTElUWU1BUF9BTExfRlJPWkVOOwotCQl9CiAKIAkJcmV0dXJuIHRydWU7CiAJfQpAQCAtODg3 LDcgKzg5MSw3IEBAIGhlYXBfcGFnZV93aWxsX3NldF92aXMoUmVsYXRpb24gcmVsYXRpb24sCiAJ ICogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERf QUxMX1ZJU0lCTEUgc2V0LAogCSAqIGhvd2V2ZXIuCiAJICovCi0JZWxzZSBpZiAocHJlc3VsdC0+ bHBkZWFkX2l0ZW1zID4gMCAmJiBQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkpCisJZWxzZSBp ZiAocHJzdGF0ZS0+bHBkZWFkX2l0ZW1zID4gMCAmJiBQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFn ZSkpCiAJewogCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NP UlJVUFRFRCksCkBAIC05MDMsNiArOTA3LDMwIEBAIGhlYXBfcGFnZV93aWxsX3NldF92aXMoUmVs YXRpb24gcmVsYXRpb24sCiAJcmV0dXJuIGZhbHNlOwogfQogCisjaWZkZWYgVVNFX0FTU0VSVF9D SEVDS0lORworCisvKgorICogV3JhcHBlciBmb3IgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNp YmxlKCkgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGNhbGxlcnMKKyAqIHRoYXQgZXhwZWN0IG5vIExQ X0RFQUQgb24gdGhlIHBhZ2UuIEN1cnJlbnRseSBhc3NlcnQtb25seSwgYnV0IHRoZXJlIGlzIG5v CisgKiByZWFzb24gbm90IHRvIHVzZSBpdCBvdXRzaWRlIG9mIGFzc2VydHMuCisgKi8KK3N0YXRp YyBib29sCitoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVm LAorCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCSBib29sICphbGxfZnJv emVuLAorCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJ CSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQoreworCisJcmV0dXJuIGhlYXBfcGFnZV93 b3VsZF9iZV9hbGxfdmlzaWJsZShyZWwsIGJ1ZiwKKwkJCQkJCQkJCQkgIE9sZGVzdFhtaW4sCisJ CQkJCQkJCQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgYWxsX2Zyb3plbiwKKwkJCQkJCQkJCQkg IHZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCQkgIGxvZ2dpbmdfb2ZmbnVtKTsKK30K KyNlbmRpZgorCiAKIC8qCiAgKiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50YXRpb24gYW5kIHBv dGVudGlhbGx5IGZyZWV6ZSB0dXBsZXMgb24gdGhlCkBAIC05NTYsNiArOTg0LDcgQEAgaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAlCdWZmZXIJ CXZtYnVmZmVyID0gcGFyYW1zLT52bWJ1ZmZlcjsKIAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFn ZShidWZmZXIpOwogCUJsb2NrTnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihi dWZmZXIpOworCVRyYW5zYWN0aW9uSWQgdm1fY29uZmxpY3RfaG9yaXpvbiA9IEludmFsaWRUcmFu c2FjdGlvbklkOwogCVBydW5lU3RhdGUJcHJzdGF0ZTsKIAlib29sCQlkb19mcmVlemU7CiAJYm9v bAkJZG9fcHJ1bmU7CkBAIC0xMTE2LDIzICsxMTQ1LDggQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAlwcmVzdWx0LT5uZnJvemVuID0gcHJz dGF0ZS5uZnJvemVuOwogCXByZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJzdGF0ZS5saXZlX3R1cGxl czsKIAlwcmVzdWx0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHByc3RhdGUucmVjZW50bHlfZGVh ZF90dXBsZXM7Ci0JcHJlc3VsdC0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF92aXNpYmxlOwot CXByZXN1bHQtPmFsbF9mcm96ZW4gPSBwcnN0YXRlLmFsbF9mcm96ZW47CiAJcHJlc3VsdC0+aGFz dHVwID0gcHJzdGF0ZS5oYXN0dXA7CiAKLQkvKgotCSAqIEZvciBjYWxsZXJzIHBsYW5uaW5nIHRv IHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoZSBjb25mbGljdCBob3Jpem9uCi0JICogZm9y IHRoYXQgcmVjb3JkIG11c3QgYmUgdGhlIG5ld2VzdCB4bWluIG9uIHRoZSBwYWdlLiAgSG93ZXZl ciwgaWYgdGhlCi0JICogcGFnZSBpcyBjb21wbGV0ZWx5IGZyb3plbiwgdGhlcmUgY2FuIGJlIG5v IGNvbmZsaWN0IGFuZCB0aGUKLQkgKiB2bV9jb25mbGljdF9ob3Jpem9uIHNob3VsZCByZW1haW4g SW52YWxpZFRyYW5zYWN0aW9uSWQuICBUaGlzIGluY2x1ZGVzCi0JICogdGhlIGNhc2UgdGhhdCB3 ZSBqdXN0IGZyb3plIGFsbCB0aGUgdHVwbGVzOyB0aGUgcHJ1bmUtZnJlZXplIHJlY29yZAotCSAq IGluY2x1ZGVkIHRoZSBjb25mbGljdCBYSUQgYWxyZWFkeSBzbyB0aGUgY2FsbGVyIGRvZXNuJ3Qg bmVlZCBpdC4KLQkgKi8KLQlpZiAocHJlc3VsdC0+YWxsX2Zyb3plbikKLQkJcHJlc3VsdC0+dm1f Y29uZmxpY3RfaG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCWVsc2UKLQkJcHJlc3Vs dC0+dm1fY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkOwot CiAJcHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0gcHJzdGF0ZS5scGRlYWRfaXRlbXM7CiAJLyogdGhl IHByZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5IHdhcyBhbHJlYWR5IGZpbGxlZCBpbiAqLwogCkBA IC0xMTUwLDIwICsxMTY0LDY4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJl ZXplUGFyYW1zICpwYXJhbXMsCiAJCX0KIAl9CiAKLQkvKiBOb3cgdXBkYXRlIHRoZSB2aXNpYmls aXR5IG1hcCBhbmQgUERfQUxMX1ZJU0lCTEUgaGludCAqLwotCUFzc2VydCghcHJzdGF0ZS5hbGxf dmlzaWJsZSB8fCAocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCkpOworCS8qCisJICogSWYgdXBk YXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29uZmxpY3QgaG9yaXpvbiBmb3IgdGhhdCBy ZWNvcmQKKwkgKiBtdXN0IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0aGUgcGFnZS4gIEhvd2V2ZXIs IGlmIHRoZSBwYWdlIGlzCisJICogY29tcGxldGVseSBmcm96ZW4sIHRoZXJlIGNhbiBiZSBubyBj b25mbGljdCBhbmQgdGhlIHZtX2NvbmZsaWN0X2hvcml6b24KKwkgKiBzaG91bGQgcmVtYWluIElu dmFsaWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRlcyB0aGUgY2FzZSB0aGF0IHdlCisJICog anVzdCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBydW5lLWZyZWV6ZSByZWNvcmQgaW5jbHVk ZWQgdGhlCisJICogY29uZmxpY3QgWElEIGFscmVhZHkgc28gd2UgZG9uJ3QgbmVlZCB0byBhZ2Fp bi4KKwkgKi8KKwlpZiAocHJzdGF0ZS5hbGxfZnJvemVuKQorCQl2bV9jb25mbGljdF9ob3Jpem9u ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJZWxzZQorCQl2bV9jb25mbGljdF9ob3Jpem9uID0g cHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQ7CisKKwkvKgorCSAqIER1cmluZyBpdHMgc2Vj b25kIHBhc3Mgb3ZlciB0aGUgaGVhcCwgVkFDVVVNIGNhbGxzCisJICogaGVhcF9wYWdlX3dvdWxk X2JlX2FsbF92aXNpYmxlKCkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBwYWdlIGlzCisJICogYWxs LXZpc2libGUgYW5kIGFsbC1mcm96ZW4uIFRoZSBsb2dpYyBoZXJlIGlzIHNpbWlsYXIuIEFmdGVy IGNvbXBsZXRpbmcKKwkgKiBwcnVuaW5nIGFuZCBmcmVlemluZywgdXNlIGFuIGFzc2VydGlvbiB0 byB2ZXJpZnkgdGhhdCBvdXIgcmVzdWx0cworCSAqIHJlbWFpbiBjb25zaXN0ZW50IHdpdGggaGVh cF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKCkuCisJICovCisjaWZkZWYgVVNFX0FTU0VSVF9D SEVDS0lORworCWlmIChwcnN0YXRlLmFsbF92aXNpYmxlKQorCXsKKwkJVHJhbnNhY3Rpb25JZCBk ZWJ1Z19jdXRvZmY7CisJCWJvb2wJCWRlYnVnX2FsbF9mcm96ZW47CisKKwkJQXNzZXJ0KHByZXN1 bHQtPmxwZGVhZF9pdGVtcyA9PSAwKTsKKworCQlBc3NlcnQoaGVhcF9wYWdlX2lzX2FsbF92aXNp YmxlKHBhcmFtcy0+cmVsYXRpb24sIGJ1ZmZlciwKKwkJCQkJCQkJCQlwcnN0YXRlLmN1dG9mZnMt Pk9sZGVzdFhtaW4sCisJCQkJCQkJCQkJJmRlYnVnX2FsbF9mcm96ZW4sCisJCQkJCQkJCQkJJmRl YnVnX2N1dG9mZiwgb2ZmX2xvYykpOwogCi0JZG9fc2V0X3ZtID0gZmFsc2U7Ci0JaWYgKHByc3Rh dGUuYXR0ZW1wdF91cGRhdGVfdm0pCi0JCWRvX3NldF92bSA9IGhlYXBfcGFnZV93aWxsX3NldF92 aXMocGFyYW1zLT5yZWxhdGlvbiwKLQkJCQkJCQkJCQkgICBibG9ja25vLAotCQkJCQkJCQkJCSAg IGJ1ZmZlciwKLQkJCQkJCQkJCQkgICB2bWJ1ZmZlciwKLQkJCQkJCQkJCQkgICBwYXJhbXMtPmJs a19rbm93bl9hdiwKLQkJCQkJCQkJCQkgICBwcmVzdWx0LAotCQkJCQkJCQkJCSAgICZwcmVzdWx0 LT5uZXdfdm1iaXRzLAotCQkJCQkJCQkJCSAgICZkb19zZXRfcGRfdmlzKTsKKwkJQXNzZXJ0KHBy c3RhdGUuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsKIAorCQlBc3NlcnQoIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKKwkJCSAgIGRlYnVnX2N1dG9mZiA9PSB2 bV9jb25mbGljdF9ob3Jpem9uKTsKKwl9CisjZW5kaWYKKworCUFzc2VydCghcHJzdGF0ZS5hbGxf ZnJvemVuIHx8IHByc3RhdGUuYWxsX3Zpc2libGUpOworCUFzc2VydCghcHJzdGF0ZS5hbGxfdmlz aWJsZSB8fCAocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCkpOworCisJLyoKKwkgKiBEZWNpZGUg d2hldGhlciB0byBzZXQgdGhlIHBhZ2UtbGV2ZWwgUERfQUxMX1ZJU0lCTEUgYml0IGFuZCB0aGUg Vk0gYml0cworCSAqIGJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFZNIGFuZCB0aGUgYWxs X3Zpc2libGUvYWxsX2Zyb3plbiBmbGFncy4KKwkgKgorCSAqIFdoaWxlIGl0IGlzIHZhbGlkIGZv ciBQRF9BTExfVklTSUJMRSB0byBiZSBzZXQgd2hlbiB0aGUgY29ycmVzcG9uZGluZworCSAqIFZN IGJpdCBpcyBjbGVhciwgd2Ugc3Ryb25nbHkgcHJlZmVyIHRvIGtlZXAgdGhlbSBpbiBzeW5jLgor CSAqCisJICogQWNjb3JkaW5nbHksIHdlIGFsc28gYWxsb3cgdXBkYXRpbmcgb25seSB0aGUgVk0g d2hlbiBQRF9BTExfVklTSUJMRSBoYXMKKwkgKiBhbHJlYWR5IGJlZW4gc2V0LiBTZXR0aW5nIG9u bHkgdGhlIFZNIGlzIG1vc3QgY29tbW9uIHdoZW4gc2V0dGluZyBhbgorCSAqIGFscmVhZHkgYWxs LXZpc2libGUgcGFnZSBhbGwtZnJvemVuLgorCSAqLworCWRvX3NldF92bSA9IGhlYXBfcGFnZV93 aWxsX3NldF92aXMocGFyYW1zLT5yZWxhdGlvbiwKKwkJCQkJCQkJCSAgIGJsb2Nrbm8sCisJCQkJ CQkJCQkgICBidWZmZXIsCisJCQkJCQkJCQkgICB2bWJ1ZmZlciwKKwkJCQkJCQkJCSAgIHBhcmFt cy0+YmxrX2tub3duX2F2LAorCQkJCQkJCQkJICAgJnByc3RhdGUsCisJCQkJCQkJCQkgICAmcHJl c3VsdC0+bmV3X3ZtYml0cywKKwkJCQkJCQkJCSAgICZkb19zZXRfcGRfdmlzKTsKIAogCS8qIFdl IHNob3VsZCBvbmx5IHNldCB0aGUgVk0gaWYgUERfQUxMX1ZJU0lCTEUgaXMgc2V0IG9yIHdpbGwg YmUgKi8KIAlBc3NlcnQoIWRvX3NldF92bSB8fCBkb19zZXRfcGRfdmlzIHx8IFBhZ2VJc0FsbFZp c2libGUocGFnZSkpOwpAQCAtMTE5Miw3ICsxMjU0LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAlpZiAoZG9fc2V0X3ZtKQogCQlwcmVz dWx0LT5vbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXQocGFyYW1zLT5yZWxhdGlvbiwgYmxv Y2tubywgYnVmZmVyLAogCQkJCQkJCQkJCQkJSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkJCQkJ CQl2bWJ1ZmZlciwgcHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbiwKKwkJCQkJCQkJCQkJCXZt YnVmZmVyLCB2bV9jb25mbGljdF9ob3Jpem9uLAogCQkJCQkJCQkJCQkJcHJlc3VsdC0+bmV3X3Zt Yml0cyk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCBmNTYxNzMz NWNiMi4uNGFhNDI1ZWM5NDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAg LTQ2NCwyMCArNDY0LDYgQEAgc3RhdGljIHZvaWQgZGVhZF9pdGVtc19hZGQoTFZSZWxTdGF0ZSAq dmFjcmVsLCBCbG9ja051bWJlciBibGtubywgT2Zmc2V0TnVtYmVyICoKIHN0YXRpYyB2b2lkIGRl YWRfaXRlbXNfcmVzZXQoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIGRlYWRfaXRl bXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpOwogCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVD S0lORwotc3RhdGljIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGJ1ZiwKLQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCi0JCQkJCQkJ CQkgYm9vbCAqYWxsX2Zyb3plbiwKLQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5 X2N1dG9mZl94aWQsCi0JCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSk7Ci0j ZW5kaWYKLXN0YXRpYyBib29sIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlv biByZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWlu LAotCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCi0JCQkJCQkJCQkJICAg aW50IG5kZWFkb2Zmc2V0cywKLQkJCQkJCQkJCQkgICBib29sICphbGxfZnJvemVuLAotCQkJCQkJ CQkJCSAgIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCQkJCQkg ICBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKIHN0YXRpYyB2b2lkIHVwZGF0ZV9yZWxz dGF0c19hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZvaWQgdmFjdXVt X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiBzdGF0aWMgdm9pZCB1cGRhdGVfdmFjdXVtX2Vy cm9yX2luZm8oTFZSZWxTdGF0ZSAqdmFjcmVsLApAQCAtMjAxNiwzMiArMjAwMiw2IEBAIGxhenlf c2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJCXZhY3JlbC0+bmV3X2Zyb3plbl90dXBs ZV9wYWdlcysrOwogCX0KIAotCS8qCi0JICogVkFDVVVNIHdpbGwgY2FsbCBoZWFwX3BhZ2VfaXNf YWxsX3Zpc2libGUoKSBkdXJpbmcgdGhlIHNlY29uZCBwYXNzIG92ZXIKLQkgKiB0aGUgaGVhcCB0 byBkZXRlcm1pbmUgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gZm9yIHRoZSBwYWdlIC0tIHRo aXMKLQkgKiBpcyBhIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgdGhlIGxvZ2ljIGZyb20gdGhpcyBm dW5jdGlvbi4gIE5vdyB0aGF0Ci0JICogd2UndmUgZmluaXNoZWQgcHJ1bmluZyBhbmQgZnJlZXpp bmcsIG1ha2Ugc3VyZSB0aGF0IHdlJ3JlIGluIHRvdGFsCi0JICogYWdyZWVtZW50IHdpdGggaGVh cF9wYWdlX2lzX2FsbF92aXNpYmxlKCkgdXNpbmcgYW4gYXNzZXJ0aW9uLgotCSAqLwotI2lmZGVm IFVTRV9BU1NFUlRfQ0hFQ0tJTkcKLQlpZiAocHJlc3VsdC5hbGxfdmlzaWJsZSkKLQl7Ci0JCVRy YW5zYWN0aW9uSWQgZGVidWdfY3V0b2ZmOwotCQlib29sCQlkZWJ1Z19hbGxfZnJvemVuOwotCi0J CUFzc2VydChwcmVzdWx0LmxwZGVhZF9pdGVtcyA9PSAwKTsKLQotCQlBc3NlcnQoaGVhcF9wYWdl X2lzX2FsbF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWYsCi0JCQkJCQkJCQkJdmFjcmVsLT5jdXRv ZmZzLk9sZGVzdFhtaW4sICZkZWJ1Z19hbGxfZnJvemVuLAotCQkJCQkJCQkJCSZkZWJ1Z19jdXRv ZmYsICZ2YWNyZWwtPm9mZm51bSkpOwotCi0JCUFzc2VydChwcmVzdWx0LmFsbF9mcm96ZW4gPT0g ZGVidWdfYWxsX2Zyb3plbik7Ci0KLQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChkZWJ1 Z19jdXRvZmYpIHx8Ci0JCQkgICBkZWJ1Z19jdXRvZmYgPT0gcHJlc3VsdC52bV9jb25mbGljdF9o b3Jpem9uKTsKLQl9Ci0jZW5kaWYKLQogCS8qCiAJICogTm93IHNhdmUgZGV0YWlscyBvZiB0aGUg TFBfREVBRCBpdGVtcyBmcm9tIHRoZSBwYWdlIGluIHZhY3JlbAogCSAqLwpAQCAtMzQ5NiwyOSAr MzQ1Niw2IEBAIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpCiAJdmFjcmVs LT5wdnMgPSBOVUxMOwogfQogCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwotCi0vKgotICog V3JhcHBlciBmb3IgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKCkgd2hpY2ggY2FuIGJl IHVzZWQgZm9yIGNhbGxlcnMKLSAqIHRoYXQgZXhwZWN0IG5vIExQX0RFQUQgb24gdGhlIHBhZ2Uu IEN1cnJlbnRseSBhc3NlcnQtb25seSwgYnV0IHRoZXJlIGlzIG5vCi0gKiByZWFzb24gbm90IHRv IHVzZSBpdCBvdXRzaWRlIG9mIGFzc2VydHMuCi0gKi8KLXN0YXRpYyBib29sCi1oZWFwX3BhZ2Vf aXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJIFRyYW5zYWN0 aW9uSWQgT2xkZXN0WG1pbiwKLQkJCQkJCSBib29sICphbGxfZnJvemVuLAotCQkJCQkJIFRyYW5z YWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCSBPZmZzZXROdW1iZXIgKmxv Z2dpbmdfb2ZmbnVtKQotewotCi0JcmV0dXJuIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJs ZShyZWwsIGJ1ZiwKLQkJCQkJCQkJCQkgIE9sZGVzdFhtaW4sCi0JCQkJCQkJCQkJICBOVUxMLCAw LAotCQkJCQkJCQkJCSAgYWxsX2Zyb3plbiwKLQkJCQkJCQkJCQkgIHZpc2liaWxpdHlfY3V0b2Zm X3hpZCwKLQkJCQkJCQkJCQkgIGxvZ2dpbmdfb2ZmbnVtKTsKLX0KLSNlbmRpZgogCiAvKgogICog Q2hlY2sgd2hldGhlciB0aGUgaGVhcCBwYWdlIGluIGJ1ZiBpcyBhbGwtdmlzaWJsZSBleGNlcHQg Zm9yIHRoZSBkZWFkCkBAIC0zNTQyLDE1ICszNDc5LDEyIEBAIGhlYXBfcGFnZV9pc19hbGxfdmlz aWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAgKiAgLSAqbG9nZ2luZ19vZmZudW06IE9m ZnNldE51bWJlciBvZiBjdXJyZW50IHR1cGxlIGJlaW5nIHByb2Nlc3NlZDsKICAqICAgICB1c2Vk IGJ5IHZhY3V1bSdzIGVycm9yIGNhbGxiYWNrIHN5c3RlbS4KICAqCi0gKiBDYWxsZXJzIGxvb2tp bmcgdG8gdmVyaWZ5IHRoYXQgdGhlIHBhZ2UgaXMgYWxyZWFkeSBhbGwtdmlzaWJsZSBjYW4gY2Fs bAotICogaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKCkuCi0gKgogICogVGhpcyBsb2dpYyBpcyBj bG9zZWx5IHJlbGF0ZWQgdG8gaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbCgp LgogICogSWYgeW91IG1vZGlmeSB0aGlzIGZ1bmN0aW9uLCBlbnN1cmUgY29uc2lzdGVuY3kgd2l0 aCB0aGF0IGNvZGUuIEFuCiAgKiBhc3NlcnRpb24gY3Jvc3MtY2hlY2tzIHRoYXQgYm90aCByZW1h aW4gaW4gYWdyZWVtZW50LiBEbyBub3QgaW50cm9kdWNlIG5ldwogICogc2lkZS1lZmZlY3RzLgog ICovCi1zdGF0aWMgYm9vbAorYm9vbAogaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJl bGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFht aW4sCiAJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApp bmRleCBjZTljZmJkYzc2Ny4uYjIwMDk2YjZjYTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTI2Myw4 ICsyNjMsNyBAQCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVBhcmFtcwogCSAqIEhFQVBfUEFH RV9QUlVORV9NQVJLX1VOVVNFRF9OT1cgaW5kaWNhdGVzIHRoYXQgZGVhZCBpdGVtcyBjYW4gYmUg c2V0CiAJICogTFBfVU5VU0VEIGR1cmluZyBwcnVuaW5nLgogCSAqCi0JICogSEVBUF9QQUdFX1BS VU5FX0ZSRUVaRSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcywgYW5k Ci0JICogd2lsbCByZXR1cm4gJ2FsbF92aXNpYmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRo ZSBjYWxsZXIuCisJICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBpbmRpY2F0ZXMgdGhhdCB3ZSB3 aWxsIGFsc28gZnJlZXplIHR1cGxlcwogCSAqCiAJICogSEVBUF9QQUdFX1BSVU5FX1VQREFURV9W SVMgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBzZXQgdGhlIHBhZ2UncyBzdGF0dXMKIAkgKiBpbiB0 aGUgVk0uCkBAIC0zMDAsMjEgKzI5OSw2IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUmVz dWx0CiAJaW50CQkJbGl2ZV90dXBsZXM7CiAJaW50CQkJcmVjZW50bHlfZGVhZF90dXBsZXM7CiAK LQkvKgotCSAqIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGluZGljYXRlIGlmIHRoZSBhbGwt dmlzaWJsZSBhbmQgYWxsLWZyb3plbgotCSAqIGJpdHMgaW4gdGhlIHZpc2liaWxpdHkgbWFwIGNh biBiZSBzZXQgZm9yIHRoaXMgcGFnZSwgYWZ0ZXIgcHJ1bmluZy4KLQkgKgotCSAqIHZtX2NvbmZs aWN0X2hvcml6b24gaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdl LiAgVGhlCi0JICogY2FsbGVyIGNhbiB1c2UgaXQgYXMgdGhlIGNvbmZsaWN0IGhvcml6b24gd2hl biBzZXR0aW5nIHRoZSBWTSBiaXRzLiAgSXQKLQkgKiBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3pl IHNvbWUgdHVwbGVzIChuZnJvemVuID4gMCksIGFuZCBhbGxfZnJvemVuIGlzCi0JICogdHJ1ZS4K LQkgKgotCSAqIFRoZXNlIGFyZSBvbmx5IHNldCBpZiB0aGUgSEVBUF9QUlVORV9GUkVFWkUgb3B0 aW9uIGlzIHNldC4KLQkgKi8KLQlib29sCQlhbGxfdmlzaWJsZTsKLQlib29sCQlhbGxfZnJvemVu OwotCVRyYW5zYWN0aW9uSWQgdm1fY29uZmxpY3RfaG9yaXpvbjsKLQogCS8qCiAJICogb2xkX3Zt Yml0cyBhcmUgdGhlIHN0YXRlIG9mIHRoZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbiBiaXRz IGluIHRoZQogCSAqIHZpc2liaWxpdHkgbWFwIGJlZm9yZSB1cGRhdGluZyBpdCBkdXJpbmcgcGhh c2UgSSBvZiB2YWN1dW1pbmcuCkBAIC00NjAsNiArNDQ0LDEzIEBAIGV4dGVybiB2b2lkIGxvZ19o ZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAv KiBpbiBoZWFwL3ZhY3V1bWxhenkuYyAqLwogZXh0ZXJuIHZvaWQgaGVhcF92YWN1dW1fcmVsKFJl bGF0aW9uIHJlbCwKIAkJCQkJCQljb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLCBCdWZmZXJBY2Nl c3NTdHJhdGVneSBic3RyYXRlZ3kpOworZXh0ZXJuIGJvb2wgaGVhcF9wYWdlX3dvdWxkX2JlX2Fs bF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKKwkJCQkJCQkJCQkgICBUcmFuc2Fj dGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0 cywKKwkJCQkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAorCQkJCQkJCQkJCSAgIGJvb2wgKmFs bF9mcm96ZW4sCisJCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZf eGlkLAorCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pOwogCiAvKiBp biBoZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMgKi8KIGV4dGVybiBib29sIEhlYXBUdXBsZVNhdGlz Zmllc1Zpc2liaWxpdHkoSGVhcFR1cGxlIGh0dXAsIFNuYXBzaG90IHNuYXBzaG90LAotLSAKMi40 My4wCgo= --0000000000001ceba70645144821 Content-Type: text/x-patch; charset="US-ASCII"; name="v23-0005-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Disposition: attachment; filename="v23-0005-Eliminate-XLOG_HEAP2_VISIBLE-from-vacuum-phase-I.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miqlzrgd4 RnJvbSBhNDA3NjczY2IyNjMyZDQ1NDRjYzU2NDU4ZGJmNGEwNjNkYTIwNjdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDIgRGVjIDIwMjUgMTY6MTY6MjIgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyMyAwNS8xNF0gRWxpbWluYXRlIFhMT0dfSEVBUDJfVklTSUJMRSBmcm9tIHZhY3V1bSBw aGFzZSBJCiBwcnVuZS9mcmVlemUKClZhY3V1bSBubyBsb25nZXIgZW1pdHMgYSBzZXBhcmF0ZSBX QUwgcmVjb3JkIGZvciBlYWNoIHBhZ2Ugc2V0CmFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4gZHVy aW5nIHBoYXNlIEkuIEluc3RlYWQsIHZpc2liaWxpdHkgbWFwCnVwZGF0ZXMgYXJlIG5vdyBpbmNs dWRlZCBpbiB0aGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQgdGhhdAppcyBh bHJlYWR5IGVtaXR0ZWQgZm9yIHBydW5pbmcgYW5kIGZyZWV6aW5nLgoKUHJldmlvdXNseSwgaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSBkZXRlcm1pbmVkIHdoZXRoZXIgYSBwYWdlIHdhcwph bGwtdmlzaWJsZSwgYnV0IHRoZSBjb3JyZXNwb25kaW5nIFZNIGJpdHMgd2VyZSBvbmx5IHNldCBs YXRlciBpbgpsYXp5X3NjYW5fcHJ1bmUoKS4gTm93IHRoZSBWTSBpcyB1cGRhdGVkIGltbWVkaWF0 ZWx5IGluCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCksIGF0IHRoZSBzYW1lIHRpbWUgYXMg dGhlIGhlYXAKbW9kaWZpY2F0aW9ucy4KClRoaXMgY2hhbmdlIGFwcGxpZXMgb25seSB0byB2YWN1 dW0gcGhhc2UgSSwgbm90IHRvIHBydW5pbmcgcGVyZm9ybWVkCmR1cmluZyBub3JtYWwgcGFnZSBh Y2Nlc3MuCgpOT1RFOiBUaGlzIGNvbW1pdCBpcyB0aGUgbWFpbiBjb21taXQgYW5kIGFsbCByZXZp ZXctb25seSBjb21taXRzCnByZWNlZGluZyBpdCB3aWxsIGJlIHNxdWFzaGVkIGludG8gaXQuCgpB dXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmll d2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmlld2VkLWJ5OiBS b2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJl c2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2 YW4uY2hhb0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZmxhdC9D QUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1WN1NPTHhkSzktZyU0MG1h aWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyB8 ICA0OCArKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICB8IDI5NCAr KysrKysrKysrKysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jICB8ICAgMSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgIHwg ICAxICsKIDQgZmlsZXMgY2hhbmdlZCwgMjEyIGluc2VydGlvbnMoKyksIDEzMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCAxMWNiM2Y3NGRhNS4u YjFjZWFiNzE5MjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94 bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtMTA0 LDYgKzEwNCw4IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAJCU9mZnNldE51bWJlciAqZnJ6X29mZnNldHM7CiAJCWNoYXIJICAgKmRhdGFwdHIgPSBY TG9nUmVjR2V0QmxvY2tEYXRhKHJlY29yZCwgMCwgJmRhdGFsZW4pOwogCQlib29sCQlkb19wcnVu ZTsKKwkJYm9vbAkJc2V0X2xzbiA9IGZhbHNlOworCQlib29sCQltYXJrX2J1ZmZlcl9kaXJ0eSA9 IGZhbHNlOwogCiAJCWhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGRhdGFw dHIsIHhscmVjLmZsYWdzLAogCQkJCQkJCQkJCQkgICAmbnBsYW5zLCAmcGxhbnMsICZmcnpfb2Zm c2V0cywKQEAgLTE1NywxNyArMTU5LDM5IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJCS8qIFRoZXJlIHNob3VsZCBiZSBubyBtb3JlIGRhdGEgKi8K IAkJQXNzZXJ0KChjaGFyICopIGZyel9vZmZzZXRzID09IGRhdGFwdHIgKyBkYXRhbGVuKTsKIAot CQlpZiAodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykKLQkJCVBhZ2VTZXRBbGxW aXNpYmxlKHBhZ2UpOwotCi0JCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOworCQlpZiAoZG9fcHJ1 bmUgfHwgbnBsYW5zID4gMCkKKwkJCW1hcmtfYnVmZmVyX2RpcnR5ID0gc2V0X2xzbiA9IHRydWU7 CiAKIAkJLyoKLQkJICogU2VlIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoKSBmb3IgY29tbWVu dGFyeSBvbiB3aGVuIHdlIHNldCB0aGUKLQkJICogaGVhcCBwYWdlIExTTi4KKwkJICogVGhlIGNy aXRpY2FsIGludGVncml0eSByZXF1aXJlbWVudCBoZXJlIGlzIHRoYXQgd2UgbXVzdCBuZXZlciBl bmQKKwkJICogdXAgd2l0aCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IHNldCBhbmQgdGhlIHBhZ2Ut bGV2ZWwKKwkJICogUERfQUxMX1ZJU0lCTEUgYml0IHVuc2V0LiAgSWYgdGhhdCB3ZXJlIHRvIG9j Y3VyLCBhIHN1YnNlcXVlbnQgcGFnZQorCQkgKiBtb2RpZmljYXRpb24gd291bGQgZmFpbCB0byBj bGVhciB0aGUgdmlzaWJpbGl0eSBtYXAgYml0LgorCQkgKgorCQkgKiB2bWZsYWdzIG1heSBiZSBu b256ZXJvIHdpdGggUERfQUxMX1ZJU0lCTEUgYWxyZWFkeSBzZXQgKGUuZy4gd2hlbgorCQkgKiBt YXJraW5nIGFuIGFsbC12aXNpYmxlIHBhZ2UgYWxsLWZyb3plbikuIElmIG9ubHkgdGhlIFZNIGlz IHVwZGF0ZWQsCisJCSAqIHRoZSBoZWFwIHBhZ2UgbmVlZCBub3QgYmUgZGlydGllZC4KIAkJICov Ci0JCWlmIChkb19wcnVuZSB8fCBucGxhbnMgPiAwIHx8Ci0JCQkoKHZtZmxhZ3MgJiBWSVNJQklM SVRZTUFQX1ZBTElEX0JJVFMpICYmIFhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCisJCWlmICgodm1m bGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgJiYgIVBhZ2VJc0FsbFZpc2libGUocGFn ZSkpCisJCXsKKwkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCQkJbWFya19idWZmZXJfZGly dHkgPSB0cnVlOworCisJCQkvKgorCQkJICogU2VlIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUo KSBmb3IgY29tbWVudGFyeSBvbiB3aGVuIHdlIHNldAorCQkJICogdGhlIGhlYXAgcGFnZSBMU04u CisJCQkgKi8KKwkJCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkpCisJCQkJc2V0X2xzbiA9IHRy dWU7CisJCX0KKworCQkvKiBXZSBzaG91bGQgYWx3YXlzIG1hcmsgYSBidWZmZXIgZGlydHkgYmVm b3JlIHN0YW1waW5nIHdpdGggYW4gTFNOICovCisJCUFzc2VydCghc2V0X2xzbiB8fCBtYXJrX2J1 ZmZlcl9kaXJ0eSk7CisKKwkJaWYgKG1hcmtfYnVmZmVyX2RpcnR5KQorCQkJTWFya0J1ZmZlckRp cnR5KGJ1ZmZlcik7CisKKwkJaWYgKHNldF9sc24pCiAJCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7 CiAKIAkJLyoKQEAgLTI0NiwxMCArMjcwLDEwIEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExv Z1JlYWRlclN0YXRlICpyZWNvcmQpCiAvKgogICogUmVwbGF5IFhMT0dfSEVBUDJfVklTSUJMRSBy ZWNvcmRzLgogICoKLSAqIFRoZSBjcml0aWNhbCBpbnRlZ3JpdHkgcmVxdWlyZW1lbnQgaGVyZSBp cyB0aGF0IHdlIG11c3QgbmV2ZXIgZW5kIHVwIHdpdGgKLSAqIGEgc2l0dWF0aW9uIHdoZXJlIHRo ZSB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0LCBhbmQgdGhlIHBhZ2UtbGV2ZWwKLSAqIFBEX0FM TF9WSVNJQkxFIGJpdCBpcyBjbGVhci4gIElmIHRoYXQgd2VyZSB0byBvY2N1ciwgdGhlbiBhIHN1 YnNlcXVlbnQKLSAqIHBhZ2UgbW9kaWZpY2F0aW9uIHdvdWxkIGZhaWwgdG8gY2xlYXIgdGhlIHZp c2liaWxpdHkgbWFwIGJpdC4KKyAqIFRoZSBjcml0aWNhbCBpbnRlZ3JpdHkgcmVxdWlyZW1lbnQg aGVyZSBpcyB0aGF0IHdlIG11c3QgbmV2ZXIgZW5kIHVwIHdpdGggYQorICogc2l0dWF0aW9uIHdo ZXJlIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0LCBhbmQgdGhlIHBhZ2UtbGV2ZWwKKyAq IFBEX0FMTF9WSVNJQkxFIGJpdCBpcyBjbGVhci4gIElmIHRoYXQgd2VyZSB0byBvY2N1ciwgdGhl biBhIHN1YnNlcXVlbnQgcGFnZQorICogbW9kaWZpY2F0aW9uIHdvdWxkIGZhaWwgdG8gY2xlYXIg dGhlIHZpc2liaWxpdHkgbWFwIGJpdC4KICAqLwogc3RhdGljIHZvaWQKIGhlYXBfeGxvZ192aXNp YmxlKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCAyNTEyYjVkODNlMy4uYjg1MWQ3MjNjNzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCkBAIC0xOTQsNiArMTk0LDEyIEBAIHN0YXRpYyB2b2lkIHBhZ2VfdmVyaWZ5X3Jl ZGlyZWN0cyhQYWdlIHBhZ2UpOwogc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJCQkgIGJvb2wgZGlkX3R1cGxl X2hpbnRfZnBpLCBib29sIGRvX3BydW5lLCBib29sIGRvX2hpbnRfcHJ1bmUsCiAJCQkJCQkJCSAg UHJ1bmVTdGF0ZSAqcHJzdGF0ZSk7CitzdGF0aWMgVHJhbnNhY3Rpb25JZCBnZXRfY29uZmxpY3Rf eGlkKGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLCBib29sIGRvX3NldF92bSwKKwkJCQkJ CQkJCSAgdWludDggbmV3X3ZtYml0cywKKwkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBsYXRlc3Rf eGlkX3JlbW92ZWQsCisJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgZnJ6X2NvbmZsaWN0X2hvcml6 b24sCisJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJ CQkJCQkJICBib29sIGJsa19hbHJlYWR5X2F2KTsKIHN0YXRpYyBib29sIGhlYXBfcGFnZV93aWxs X3NldF92aXMoUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBf YmxrLAogCQkJCQkJCQkgICBCdWZmZXIgaGVhcF9idWYsCkBAIC03ODMsNiArNzg5LDY0IEBAIGhl YXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAly ZXR1cm4gZG9fZnJlZXplOwogfQogCisvKgorICogQ2FsY3VsYXRlIHRoZSBjb25mbGljdCBob3Jp em9uIGZvciB0aGUgd2hvbGUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTgorICogb3IgWExP R19IRUFQMl9QUlVORV9PTl9BQ0NFU1MgcmVjb3JkLgorICovCitzdGF0aWMgVHJhbnNhY3Rpb25J ZAorZ2V0X2NvbmZsaWN0X3hpZChib29sIGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwgYm9vbCBk b19zZXRfdm0sIHVpbnQ4IG5ld192bWJpdHMsCisJCQkJIFRyYW5zYWN0aW9uSWQgbGF0ZXN0X3hp ZF9yZW1vdmVkLCBUcmFuc2FjdGlvbklkIGZyel9jb25mbGljdF9ob3Jpem9uLAorCQkJCSBUcmFu c2FjdGlvbklkIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCwgYm9vbCBibGtfYWxyZWFkeV9hdikKK3sK KwlUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZDsKKworCS8qCisJICogV2UgY2FuIG9taXQgdGhl IHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gaWYgd2UgYXJlIG5vdCBwcnVuaW5nIG9yCisJICog ZnJlZXppbmcgYW55IHR1cGxlcyBhbmQgYXJlIHNldHRpbmcgYW4gYWxyZWFkeSBhbGwtdmlzaWJs ZSBwYWdlCisJICogYWxsLWZyb3plbiBpbiB0aGUgVk0uIEluIHRoaXMgY2FzZSwgYWxsIG9mIHRo ZSB0dXBsZXMgb24gdGhlIHBhZ2UgbXVzdAorCSAqIGFscmVhZHkgYmUgdmlzaWJsZSB0byBhbGwg TVZDQyBzbmFwc2hvdHMgb24gdGhlIHN0YW5kYnkuCisJICovCisJaWYgKCFkb19wcnVuZSAmJiAh ZG9fZnJlZXplICYmCisJCWRvX3NldF92bSAmJiBibGtfYWxyZWFkeV9hdiAmJiAobmV3X3ZtYml0 cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikpCisJCXJldHVybiBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKKworCS8qCisJICogVGhlIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIGZvciB0aGUgd2hv bGUgcmVjb3JkIHNob3VsZCBiZSB0aGUgbW9zdAorCSAqIGNvbnNlcnZhdGl2ZSBvZiBhbGwgdGhl IGhvcml6b25zIGNhbGN1bGF0ZWQgZm9yIGFueSBvZiB0aGUgcG9zc2libGUKKwkgKiBtb2RpZmlj YXRpb25zLiAgSWYgdGhpcyByZWNvcmQgd2lsbCBwcnVuZSB0dXBsZXMsIGFueSB0cmFuc2FjdGlv bnMgb24KKwkgKiB0aGUgc3RhbmRieSBvbGRlciB0aGFuIHRoZSB5b3VuZ2VzdCB4bWF4IG9mIHRo ZSBtb3N0IHJlY2VudGx5IHJlbW92ZWQKKwkgKiB0dXBsZSB0aGlzIHJlY29yZCB3aWxsIHBydW5l IHdpbGwgY29uZmxpY3QuICBJZiB0aGlzIHJlY29yZCB3aWxsIGZyZWV6ZQorCSAqIHR1cGxlcywg YW55IHRyYW5zYWN0aW9ucyBvbiB0aGUgc3RhbmRieSB3aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUK KwkgKiB5b3VuZ2VzdCB0dXBsZSB0aGlzIHJlY29yZCB3aWxsIGZyZWV6ZSB3aWxsIGNvbmZsaWN0 LgorCSAqLworCWNvbmZsaWN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCisJLyoKKwkg KiBJZiB3ZSBhcmUgdXBkYXRpbmcgdGhlIFZNLCB0aGUgY29uZmxpY3QgaG9yaXpvbiBpcyBhbG1v c3QgYWx3YXlzIHRoZQorCSAqIHZpc2liaWxpdHkgY3V0b2ZmIFhJRC4KKwkgKgorCSAqIFNlcGFy YXRlbHksIGlmIHdlIGFyZSBmcmVlemluZyBhbnkgdHVwbGVzLCBhcyBhbiBvcHRpbWl6YXRpb24s IHdlIGNhbgorCSAqIHVzZSB0aGUgdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGFzIHRoZSBjb25mbGlj dCBob3Jpem9uIGlmIHRoZSBwYWdlIHdpbGwKKwkgKiBiZSBhbGwtZnJvemVuLiBUaGlzIGlzIHRy dWUgZXZlbiBpZiB0aGVyZSBhcmUgTFBfREVBRCBsaW5lIHBvaW50ZXJzCisJICogYmVjYXVzZSB3 ZSBpZ25vcmVkIHRob3NlIHdoZW4gbWFpbnRhaW5pbmcgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hp ZC4KKwkgKiBUaGlzIHdpbGwgaGF2ZSBiZWVuIGNhbGN1bGF0ZWQgZWFybGllciBhcyB0aGUgZnJ6 X2NvbmZsaWN0X2hvcml6b24gd2hlbgorCSAqIHdlIGRldGVybWluZWQgd2Ugd291bGQgZnJlZXpl LgorCSAqLworCWlmIChkb19zZXRfdm0pCisJCWNvbmZsaWN0X3hpZCA9IHZpc2liaWxpdHlfY3V0 b2ZmX3hpZDsKKwllbHNlIGlmIChkb19mcmVlemUpCisJCWNvbmZsaWN0X3hpZCA9IGZyel9jb25m bGljdF9ob3Jpem9uOworCisJLyoKKwkgKiBJZiB3ZSBhcmUgcmVtb3ZpbmcgdHVwbGVzIHdpdGgg YSB5b3VuZ2VyIHhtYXggdGhhbiBvdXIgc28gZmFyCisJICogY2FsY3VsYXRlZCBjb25mbGljdF94 aWQsIHdlIG11c3QgdXNlIHRoaXMgYXMgb3VyIGhvcml6b24uCisJICovCisJaWYgKFRyYW5zYWN0 aW9uSWRGb2xsb3dzKGxhdGVzdF94aWRfcmVtb3ZlZCwgY29uZmxpY3RfeGlkKSkKKwkJY29uZmxp Y3RfeGlkID0gbGF0ZXN0X3hpZF9yZW1vdmVkOworCisJcmV0dXJuIGNvbmZsaWN0X3hpZDsKK30K KwogLyoKICAqIERlY2lkZSB3aGV0aGVyIHRvIHNldCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0cyBm b3IgaGVhcF9ibGssIHVzaW5nCiAgKiBpbmZvcm1hdGlvbiBmcm9tIFBydW5lU3RhdGUgYW5kIGJs a19rbm93bl9hdi4gU29tZSBjYWxsZXJzIG1heSBhbHJlYWR5IGhhdmUKQEAgLTk4NCw3ICsxMDQ4 LDYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFt cywKIAlCdWZmZXIJCXZtYnVmZmVyID0gcGFyYW1zLT52bWJ1ZmZlcjsKIAlQYWdlCQlwYWdlID0g QnVmZmVyR2V0UGFnZShidWZmZXIpOwogCUJsb2NrTnVtYmVyIGJsb2Nrbm8gPSBCdWZmZXJHZXRC bG9ja051bWJlcihidWZmZXIpOwotCVRyYW5zYWN0aW9uSWQgdm1fY29uZmxpY3RfaG9yaXpvbiA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwogCVBydW5lU3RhdGUJcHJzdGF0ZTsKIAlib29sCQlkb19m cmVlemU7CiAJYm9vbAkJZG9fcHJ1bmU7CkBAIC05OTMsNiArMTA1Niw5IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXplUGFyYW1zICpwYXJhbXMsCiAJYm9vbAkJZG9fc2V0 X3BkX3ZpczsKIAlib29sCQlkaWRfdHVwbGVfaGludF9mcGk7CiAJaW50NjQJCWZwaV9iZWZvcmUg PSBwZ1dhbFVzYWdlLndhbF9mcGk7CisJVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQgPSBJbnZh bGlkVHJhbnNhY3Rpb25JZDsKKwl1aW50OAkJbmV3X3ZtYml0cyA9IDA7CisJdWludDgJCW9sZF92 bWJpdHMgPSAwOwogCiAJLyogSW5pdGlhbGl6ZSBwcnN0YXRlICovCiAJcHJ1bmVfZnJlZXplX3Nl dHVwKHBhcmFtcywKQEAgLTEwNTgsNiArMTEyNCwzOSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQlwcnN0YXRlLmFsbF92aXNpYmxlID0g cHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CiAKIAlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3pl biB8fCBwcnN0YXRlLmFsbF92aXNpYmxlKTsKKwlBc3NlcnQoIXByc3RhdGUuYWxsX3Zpc2libGUg fHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApKTsKKworCS8qCisJICogRGVjaWRlIHdoZXRo ZXIgdG8gc2V0IHRoZSBwYWdlLWxldmVsIFBEX0FMTF9WSVNJQkxFIGJpdCBhbmQgdGhlIFZNIGJp dHMKKwkgKiBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSBhbmQgdGhlIGFsbF92aXNp YmxlL2FsbF9mcm96ZW4gZmxhZ3MuCisJICoKKwkgKiBXaGlsZSBpdCBpcyB2YWxpZCBmb3IgUERf QUxMX1ZJU0lCTEUgdG8gYmUgc2V0IHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcKKwkgKiBWTSBiaXQg aXMgY2xlYXIsIHdlIHN0cm9uZ2x5IHByZWZlciB0byBrZWVwIHRoZW0gaW4gc3luYy4KKwkgKgor CSAqIEFjY29yZGluZ2x5LCB3ZSBhbHNvIGFsbG93IHVwZGF0aW5nIG9ubHkgdGhlIFZNIHdoZW4g UERfQUxMX1ZJU0lCTEUgaGFzCisJICogYWxyZWFkeSBiZWVuIHNldC4gU2V0dGluZyBvbmx5IHRo ZSBWTSBpcyBtb3N0IGNvbW1vbiB3aGVuIHNldHRpbmcgYW4KKwkgKiBhbHJlYWR5IGFsbC12aXNp YmxlIHBhZ2UgYWxsLWZyb3plbi4KKwkgKi8KKwlkb19zZXRfdm0gPSBoZWFwX3BhZ2Vfd2lsbF9z ZXRfdmlzKHBhcmFtcy0+cmVsYXRpb24sCisJCQkJCQkJCQkgICBibG9ja25vLCBidWZmZXIsIHZt YnVmZmVyLCBwYXJhbXMtPmJsa19rbm93bl9hdiwKKwkJCQkJCQkJCSAgICZwcnN0YXRlLCAmbmV3 X3ZtYml0cywgJmRvX3NldF9wZF92aXMpOworCisJLyogV2Ugc2hvdWxkIG9ubHkgc2V0IHRoZSBW TSBpZiBQRF9BTExfVklTSUJMRSBpcyBzZXQgb3Igd2lsbCBiZSAqLworCUFzc2VydCghZG9fc2V0 X3ZtIHx8IGRvX3NldF9wZF92aXMgfHwgUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7CisKKwkvKgor CSAqIG5ld192bWJpdHMgc2hvdWxkIGJlIDAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0 aGUgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlIGlmIHdlIGRvIG5vdCBpbnRlbmQgdG8gc2V0IHRo ZSBWTS4KKwkgKi8KKwlBc3NlcnQoZG9fc2V0X3ZtIHx8IG5ld192bWJpdHMgPT0gMCk7CisKKwlj b25mbGljdF94aWQgPSBnZXRfY29uZmxpY3RfeGlkKGRvX3BydW5lLCBkb19mcmVlemUsIGRvX3Nl dF92bSwgbmV3X3ZtYml0cywKKwkJCQkJCQkJCXByc3RhdGUubGF0ZXN0X3hpZF9yZW1vdmVkLCBw cnN0YXRlLmZyel9jb25mbGljdF9ob3Jpem9uLAorCQkJCQkJCQkJcHJzdGF0ZS52aXNpYmlsaXR5 X2N1dG9mZl94aWQsIHBhcmFtcy0+YmxrX2tub3duX2F2KTsKKworCS8qIExvY2sgdm1idWZmZXIg YmVmb3JlIGVudGVyaW5nIGEgY3JpdGljYWwgc2VjdGlvbiAqLworCWlmIChkb19zZXRfdm0pCisJ CUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CiAKIAkvKiBBbnkg ZXJyb3Igd2hpbGUgYXBwbHlpbmcgdGhlIGNoYW5nZXMgaXMgY3JpdGljYWwgKi8KIAlTVEFSVF9D UklUX1NFQ1RJT04oKTsKQEAgLTEwNzksMTQgKzExNzgsMTcgQEAgaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAogCQkvKgogCQkgKiBJZiB0aGF0 J3MgYWxsIHdlIGhhZCB0byBkbyB0byB0aGUgcGFnZSwgdGhpcyBpcyBhIG5vbi1XQUwtbG9nZ2Vk Ci0JCSAqIGhpbnQuICBJZiB3ZSBhcmUgZ29pbmcgdG8gZnJlZXplIG9yIHBydW5lIHRoZSBwYWdl LCB3ZSB3aWxsIG1hcmsKLQkJICogdGhlIGJ1ZmZlciBkaXJ0eSBiZWxvdy4KKwkJICogaGludC4g IElmIHdlIGFyZSBnb2luZyB0byBmcmVlemUgb3IgcHJ1bmUgdGhlIHBhZ2Ugb3Igc2V0CisJCSAq IFBEX0FMTF9WSVNJQkxFLCB3ZSB3aWxsIG1hcmsgdGhlIGJ1ZmZlciBkaXJ0eSBiZWxvdy4KKwkJ ICoKKwkJICogU2V0dGluZyBQRF9BTExfVklTSUJMRSBpcyBmdWxseSBXQUwtbG9nZ2VkIGJlY2F1 c2UgaXQgaXMgZm9yYmlkZGVuCisJCSAqIGZvciB0aGUgVk0gdG8gYmUgc2V0IGFuZCBQRF9BTExf VklTSUJMRSB0byBiZSBjbGVhci4KIAkJICovCi0JCWlmICghZG9fZnJlZXplICYmICFkb19wcnVu ZSkKKwkJaWYgKCFkb19mcmVlemUgJiYgIWRvX3BydW5lICYmICFkb19zZXRfcGRfdmlzKQogCQkJ TWFya0J1ZmZlckRpcnR5SGludChidWZmZXIsIHRydWUpOwogCX0KIAotCWlmIChkb19wcnVuZSB8 fCBkb19mcmVlemUpCisJaWYgKGRvX3BydW5lIHx8IGRvX2ZyZWV6ZSB8fCBkb19zZXRfdm0pCiAJ ewogCQkvKiBBcHBseSB0aGUgcGxhbm5lZCBpdGVtIGNoYW5nZXMgYW5kIHJlcGFpciBwYWdlIGZy YWdtZW50YXRpb24uICovCiAJCWlmIChkb19wcnVuZSkKQEAgLTExMDAsMzYgKzEyMDIsMzMgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJ aWYgKGRvX2ZyZWV6ZSkKIAkJCWhlYXBfZnJlZXplX3ByZXBhcmVkX3R1cGxlcyhidWZmZXIsIHBy c3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4pOwogCi0JCU1hcmtCdWZmZXJEaXJ0eShidWZm ZXIpOworCQlpZiAoZG9fc2V0X3BkX3ZpcykKKwkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwor CisJCWlmIChkb19wcnVuZSB8fCBkb19mcmVlemUgfHwgZG9fc2V0X3BkX3ZpcykKKwkJCU1hcmtC dWZmZXJEaXJ0eShidWZmZXIpOworCisJCWlmIChkb19zZXRfdm0pCisJCXsKKwkJCUFzc2VydChQ YWdlSXNBbGxWaXNpYmxlKHBhZ2UpKTsKKwkJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3Nl dF92bWJpdHMoYmxvY2tubywKKwkJCQkJCQkJCQkJCSAgdm1idWZmZXIsIG5ld192bWJpdHMsCisJ CQkJCQkJCQkJCQkgIHBhcmFtcy0+cmVsYXRpb24tPnJkX2xvY2F0b3IpOworCQkJQXNzZXJ0KG9s ZF92bWJpdHMgIT0gbmV3X3ZtYml0cyk7CisJCX0KIAogCQkvKgogCQkgKiBFbWl0IGEgV0FMIFhM T0dfSEVBUDJfUFJVTkUqIHJlY29yZCBzaG93aW5nIHdoYXQgd2UgZGlkCiAJCSAqLwogCQlpZiAo UmVsYXRpb25OZWVkc1dBTChwYXJhbXMtPnJlbGF0aW9uKSkKIAkJewotCQkJLyoKLQkJCSAqIFRo ZSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBmb3IgdGhlIHdob2xlIHJlY29yZCBzaG91bGQgYmUg dGhlCi0JCQkgKiBtb3N0IGNvbnNlcnZhdGl2ZSBvZiBhbGwgdGhlIGhvcml6b25zIGNhbGN1bGF0 ZWQgZm9yIGFueSBvZiB0aGUKLQkJCSAqIHBvc3NpYmxlIG1vZGlmaWNhdGlvbnMuICBJZiB0aGlz IHJlY29yZCB3aWxsIHBydW5lIHR1cGxlcywgYW55Ci0JCQkgKiB0cmFuc2FjdGlvbnMgb24gdGhl IHN0YW5kYnkgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3QgeG1heCBvZiB0aGUKLQkJCSAqIG1vc3Qg cmVjZW50bHkgcmVtb3ZlZCB0dXBsZSB0aGlzIHJlY29yZCB3aWxsIHBydW5lIHdpbGwKLQkJCSAq IGNvbmZsaWN0LiAgSWYgdGhpcyByZWNvcmQgd2lsbCBmcmVlemUgdHVwbGVzLCBhbnkgdHJhbnNh Y3Rpb25zCi0JCQkgKiBvbiB0aGUgc3RhbmRieSB3aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUgeW91 bmdlc3QgdHVwbGUgdGhpcwotCQkJICogcmVjb3JkIHdpbGwgZnJlZXplIHdpbGwgY29uZmxpY3Qu Ci0JCQkgKi8KLQkJCVRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkOwotCi0JCQlpZiAoVHJhbnNh Y3Rpb25JZEZvbGxvd3MocHJzdGF0ZS5mcnpfY29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJCQkJCSBw cnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCkpCi0JCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5m cnpfY29uZmxpY3RfaG9yaXpvbjsKLQkJCWVsc2UKLQkJCQljb25mbGljdF94aWQgPSBwcnN0YXRl LmxhdGVzdF94aWRfcmVtb3ZlZDsKLQogCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShwYXJh bXMtPnJlbGF0aW9uLCBidWZmZXIsCi0JCQkJCQkJCQkgIEludmFsaWRCdWZmZXIsCS8qIHZtYnVm ZmVyICovCi0JCQkJCQkJCQkgIDAsCS8qIHZtZmxhZ3MgKi8KKwkJCQkJCQkJCSAgZG9fc2V0X3Zt ID8gdm1idWZmZXIgOiBJbnZhbGlkQnVmZmVyLAorCQkJCQkJCQkJICBkb19zZXRfdm0gPyBuZXdf dm1iaXRzIDogMCwKIAkJCQkJCQkJCSAgY29uZmxpY3RfeGlkLAotCQkJCQkJCQkJICB0cnVlLCBw YXJhbXMtPnJlYXNvbiwKKwkJCQkJCQkJCSAgdHJ1ZSwgLyogY2xlYW51cCBsb2NrICovCisJCQkJ CQkJCQkgIGRvX3NldF9wZF92aXMsCisJCQkJCQkJCQkgIHBhcmFtcy0+cmVhc29uLAogCQkJCQkJ CQkJICBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJvemVuLAogCQkJCQkJCQkJICBwcnN0YXRl LnJlZGlyZWN0ZWQsIHByc3RhdGUubnJlZGlyZWN0ZWQsCiAJCQkJCQkJCQkgIHByc3RhdGUubm93 ZGVhZCwgcHJzdGF0ZS5uZGVhZCwKQEAgLTExMzksNDMgKzEyMzgsOCBAQCBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCiAJRU5EX0NSSVRfU0VD VElPTigpOwogCi0JLyogQ29weSBpbmZvcm1hdGlvbiBiYWNrIGZvciBjYWxsZXIgKi8KLQlwcmVz dWx0LT5uZGVsZXRlZCA9IHByc3RhdGUubmRlbGV0ZWQ7Ci0JcHJlc3VsdC0+bm5ld2xwZGVhZCA9 IHByc3RhdGUubmRlYWQ7Ci0JcHJlc3VsdC0+bmZyb3plbiA9IHByc3RhdGUubmZyb3plbjsKLQlw cmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90dXBsZXM7Ci0JcHJlc3VsdC0+cmVj ZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5X2RlYWRfdHVwbGVzOwotCXByZXN1 bHQtPmhhc3R1cCA9IHByc3RhdGUuaGFzdHVwOwotCi0JcHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0g cHJzdGF0ZS5scGRlYWRfaXRlbXM7Ci0JLyogdGhlIHByZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5 IHdhcyBhbHJlYWR5IGZpbGxlZCBpbiAqLwotCi0JaWYgKHByc3RhdGUuYXR0ZW1wdF9mcmVlemUp Ci0JewotCQlpZiAocHJlc3VsdC0+bmZyb3plbiA+IDApCi0JCXsKLQkJCSpuZXdfcmVsZnJvemVu X3hpZCA9IHByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsZnJvemVuWGlkOwotCQkJKm5ld19y ZWxtaW5fbXhpZCA9IHByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsbWluTXhpZDsKLQkJfQot CQllbHNlCi0JCXsKLQkJCSpuZXdfcmVsZnJvemVuX3hpZCA9IHByc3RhdGUucGFnZWZyei5Ob0Zy ZWV6ZVBhZ2VSZWxmcm96ZW5YaWQ7Ci0JCQkqbmV3X3JlbG1pbl9teGlkID0gcHJzdGF0ZS5wYWdl ZnJ6Lk5vRnJlZXplUGFnZVJlbG1pbk14aWQ7Ci0JCX0KLQl9Ci0KLQkvKgotCSAqIElmIHVwZGF0 aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCwgdGhlIGNvbmZsaWN0IGhvcml6b24gZm9yIHRoYXQgcmVj b3JkCi0JICogbXVzdCBiZSB0aGUgbmV3ZXN0IHhtaW4gb24gdGhlIHBhZ2UuICBIb3dldmVyLCBp ZiB0aGUgcGFnZSBpcwotCSAqIGNvbXBsZXRlbHkgZnJvemVuLCB0aGVyZSBjYW4gYmUgbm8gY29u ZmxpY3QgYW5kIHRoZSB2bV9jb25mbGljdF9ob3Jpem9uCi0JICogc2hvdWxkIHJlbWFpbiBJbnZh bGlkVHJhbnNhY3Rpb25JZC4gIFRoaXMgaW5jbHVkZXMgdGhlIGNhc2UgdGhhdCB3ZQotCSAqIGp1 c3QgZnJvemUgYWxsIHRoZSB0dXBsZXM7IHRoZSBwcnVuZS1mcmVlemUgcmVjb3JkIGluY2x1ZGVk IHRoZQotCSAqIGNvbmZsaWN0IFhJRCBhbHJlYWR5IHNvIHdlIGRvbid0IG5lZWQgdG8gYWdhaW4u Ci0JICovCi0JaWYgKHByc3RhdGUuYWxsX2Zyb3plbikKLQkJdm1fY29uZmxpY3RfaG9yaXpvbiA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwotCWVsc2UKLQkJdm1fY29uZmxpY3RfaG9yaXpvbiA9IHBy c3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkOworCWlmIChkb19zZXRfdm0pCisJCUxvY2tCdWZm ZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAKIAkvKgogCSAqIER1cmluZyBpdHMg c2Vjb25kIHBhc3Mgb3ZlciB0aGUgaGVhcCwgVkFDVVVNIGNhbGxzCkBAIC0xMTkwLDcgKzEyNTQs OCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1z LAogCQlUcmFuc2FjdGlvbklkIGRlYnVnX2N1dG9mZjsKIAkJYm9vbAkJZGVidWdfYWxsX2Zyb3pl bjsKIAotCQlBc3NlcnQocHJlc3VsdC0+bHBkZWFkX2l0ZW1zID09IDApOworCQlBc3NlcnQocHJz dGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7CisJCUFzc2VydChwcnN0YXRlLmN1dG9mZnMpOwogCiAJ CUFzc2VydChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUocGFyYW1zLT5yZWxhdGlvbiwgYnVmZmVy LAogCQkJCQkJCQkJCXByc3RhdGUuY3V0b2Zmcy0+T2xkZXN0WG1pbiwKQEAgLTEyMDAsNjIgKzEy NjUsMzYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBh cmFtcywKIAkJQXNzZXJ0KHByc3RhdGUuYWxsX2Zyb3plbiA9PSBkZWJ1Z19hbGxfZnJvemVuKTsK IAogCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRlYnVnX2N1dG9mZikgfHwKLQkJCSAg IGRlYnVnX2N1dG9mZiA9PSB2bV9jb25mbGljdF9ob3Jpem9uKTsKKwkJCSAgIGRlYnVnX2N1dG9m ZiA9PSBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCk7CiAJfQogI2VuZGlmCiAKLQlBc3Nl cnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8fCBwcnN0YXRlLmFsbF92aXNpYmxlKTsKLQlBc3NlcnQo IXByc3RhdGUuYWxsX3Zpc2libGUgfHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApKTsKLQot CS8qCi0JICogRGVjaWRlIHdoZXRoZXIgdG8gc2V0IHRoZSBwYWdlLWxldmVsIFBEX0FMTF9WSVNJ QkxFIGJpdCBhbmQgdGhlIFZNIGJpdHMKLQkgKiBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRo ZSBWTSBhbmQgdGhlIGFsbF92aXNpYmxlL2FsbF9mcm96ZW4gZmxhZ3MuCi0JICoKLQkgKiBXaGls ZSBpdCBpcyB2YWxpZCBmb3IgUERfQUxMX1ZJU0lCTEUgdG8gYmUgc2V0IHdoZW4gdGhlIGNvcnJl c3BvbmRpbmcKLQkgKiBWTSBiaXQgaXMgY2xlYXIsIHdlIHN0cm9uZ2x5IHByZWZlciB0byBrZWVw IHRoZW0gaW4gc3luYy4KLQkgKgotCSAqIEFjY29yZGluZ2x5LCB3ZSBhbHNvIGFsbG93IHVwZGF0 aW5nIG9ubHkgdGhlIFZNIHdoZW4gUERfQUxMX1ZJU0lCTEUgaGFzCi0JICogYWxyZWFkeSBiZWVu IHNldC4gU2V0dGluZyBvbmx5IHRoZSBWTSBpcyBtb3N0IGNvbW1vbiB3aGVuIHNldHRpbmcgYW4K LQkgKiBhbHJlYWR5IGFsbC12aXNpYmxlIHBhZ2UgYWxsLWZyb3plbi4KLQkgKi8KLQlkb19zZXRf dm0gPSBoZWFwX3BhZ2Vfd2lsbF9zZXRfdmlzKHBhcmFtcy0+cmVsYXRpb24sCi0JCQkJCQkJCQkg ICBibG9ja25vLAotCQkJCQkJCQkJICAgYnVmZmVyLAotCQkJCQkJCQkJICAgdm1idWZmZXIsCi0J CQkJCQkJCQkgICBwYXJhbXMtPmJsa19rbm93bl9hdiwKLQkJCQkJCQkJCSAgICZwcnN0YXRlLAot CQkJCQkJCQkJICAgJnByZXN1bHQtPm5ld192bWJpdHMsCi0JCQkJCQkJCQkgICAmZG9fc2V0X3Bk X3Zpcyk7Ci0KLQkvKiBXZSBzaG91bGQgb25seSBzZXQgdGhlIFZNIGlmIFBEX0FMTF9WSVNJQkxF IGlzIHNldCBvciB3aWxsIGJlICovCi0JQXNzZXJ0KCFkb19zZXRfdm0gfHwgZG9fc2V0X3BkX3Zp cyB8fCBQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKTsKKwkvKiBDb3B5IGluZm9ybWF0aW9uIGJhY2sg Zm9yIGNhbGxlciAqLworCXByZXN1bHQtPm5kZWxldGVkID0gcHJzdGF0ZS5uZGVsZXRlZDsKKwlw cmVzdWx0LT5ubmV3bHBkZWFkID0gcHJzdGF0ZS5uZGVhZDsKKwlwcmVzdWx0LT5uZnJvemVuID0g cHJzdGF0ZS5uZnJvemVuOworCXByZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJzdGF0ZS5saXZlX3R1 cGxlczsKKwlwcmVzdWx0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHByc3RhdGUucmVjZW50bHlf ZGVhZF90dXBsZXM7CisJcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0ZS5oYXN0dXA7CisJcHJlc3Vs dC0+bmV3X3ZtYml0cyA9IG5ld192bWJpdHM7CisJcHJlc3VsdC0+b2xkX3ZtYml0cyA9IG9sZF92 bWJpdHM7CiAKLQkvKgotCSAqIG5ld192bWJpdHMgc2hvdWxkIGJlIDAgcmVnYXJkbGVzcyBvZiB3 aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBpcwotCSAqIGFsbC12aXNpYmxlIGlmIHdlIGRvIG5vdCBp bnRlbmQgdG8gc2V0IHRoZSBWTS4KLQkgKi8KLQlBc3NlcnQoZG9fc2V0X3ZtIHx8IHByZXN1bHQt Pm5ld192bWJpdHMgPT0gMCk7CisJcHJlc3VsdC0+bHBkZWFkX2l0ZW1zID0gcHJzdGF0ZS5scGRl YWRfaXRlbXM7CisJLyogdGhlIHByZXN1bHQtPmRlYWRvZmZzZXRzIGFycmF5IHdhcyBhbHJlYWR5 IGZpbGxlZCBpbiAqLwogCi0JaWYgKGRvX3NldF9wZF92aXMpCisJaWYgKHByc3RhdGUuYXR0ZW1w dF9mcmVlemUpCiAJewotCQkvKgotCQkgKiBOQjogSWYgdGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlz aWJsZSBidXQgdGhlIFZNIGJpdCBpcyBub3Qgc2V0LCB3ZQotCQkgKiBkb24ndCBuZWVkIHRvIGRp cnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dldmVyLCBpZiBjaGVja3N1bXMgYXJlCi0JCSAqIGVuYWJs ZWQsIHdlIGRvIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGhlYXAgcGFnZSBpcyBkaXJ0aWVk Ci0JCSAqIGJlZm9yZSBwYXNzaW5nIGl0IHRvIHZpc2liaWxpdHltYXBfc2V0KCksIGJlY2F1c2Ug aXQgbWF5IGJlIGxvZ2dlZC4KLQkJICogR2l2ZW4gdGhhdCB0aGlzIHNpdHVhdGlvbiBzaG91bGQg b25seSBoYXBwZW4gaW4gcmFyZSBjYXNlcyBhZnRlciBhCi0JCSAqIGNyYXNoLCBpdCBpcyBub3Qg d29ydGggb3B0aW1pemluZy4KLQkJICovCi0JCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwotCQlQ YWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJaWYgKHByZXN1bHQtPm5mcm96ZW4gPiAwKQorCQl7 CisJCQkqbmV3X3JlbGZyb3plbl94aWQgPSBwcnN0YXRlLnBhZ2VmcnouRnJlZXplUGFnZVJlbGZy b3plblhpZDsKKwkJCSpuZXdfcmVsbWluX214aWQgPSBwcnN0YXRlLnBhZ2VmcnouRnJlZXplUGFn ZVJlbG1pbk14aWQ7CisJCX0KKwkJZWxzZQorCQl7CisJCQkqbmV3X3JlbGZyb3plbl94aWQgPSBw cnN0YXRlLnBhZ2VmcnouTm9GcmVlemVQYWdlUmVsZnJvemVuWGlkOworCQkJKm5ld19yZWxtaW5f bXhpZCA9IHByc3RhdGUucGFnZWZyei5Ob0ZyZWV6ZVBhZ2VSZWxtaW5NeGlkOworCQl9CiAJfQot Ci0JcHJlc3VsdC0+b2xkX3ZtYml0cyA9IDA7Ci0JaWYgKGRvX3NldF92bSkKLQkJcHJlc3VsdC0+ b2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHBhcmFtcy0+cmVsYXRpb24sIGJsb2Nrbm8s IGJ1ZmZlciwKLQkJCQkJCQkJCQkJCUludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJCQkJCQkJdm1i dWZmZXIsIHZtX2NvbmZsaWN0X2hvcml6b24sCi0JCQkJCQkJCQkJCQlwcmVzdWx0LT5uZXdfdm1i aXRzKTsKIH0KIAogCkBAIC0yMzg3LDE0ICsyNDI2LDE4IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFu KEhlYXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxlcywKICAqCiAgKiBUaGlzIGlzIHVz ZWQgZm9yIHNldmVyYWwgZGlmZmVyZW50IHBhZ2UgbWFpbnRlbmFuY2Ugb3BlcmF0aW9uczoKICAq Ci0gKiAtIFBhZ2UgcHJ1bmluZywgaW4gVkFDVVVNJ3MgMXN0IHBhc3Mgb3Igb24gYWNjZXNzOiBT b21lIGl0ZW1zIGFyZQorICogLSBQYWdlIHBydW5pbmcsIGluIHZhY3V1bSBwaGFzZSBJIG9yIG9u LWFjY2VzczogU29tZSBpdGVtcyBhcmUKICAqICAgcmVkaXJlY3RlZCwgc29tZSBtYXJrZWQgZGVh ZCwgYW5kIHNvbWUgcmVtb3ZlZCBhbHRvZ2V0aGVyLgogICoKLSAqIC0gRnJlZXppbmc6IEl0ZW1z IGFyZSBtYXJrZWQgYXMgJ2Zyb3plbicuCisgKiAtIEZyZWV6aW5nOiBEdXJpbmcgdmFjdXVtIHBo YXNlIEksIGl0ZW1zIGFyZSBtYXJrZWQgYXMgJ2Zyb3plbicKKyAqCisgKiAtIFJlYXBpbmc6IER1 cmluZyB2YWN1dW0gcGhhc2UgSUlJLCBpdGVtcyB0aGF0IGFyZSBhbHJlYWR5IExQX0RFQUQgYXJl CisgKiAgIG1hcmtlZCBhcyB1bnVzZWQuCiAgKgotICogLSBWYWN1dW0sIDJuZCBwYXNzOiBJdGVt cyB0aGF0IGFyZSBhbHJlYWR5IExQX0RFQUQgYXJlIG1hcmtlZCBhcyB1bnVzZWQuCisgKiAtIFZN IHVwZGF0ZXM6IEFmdGVyIHZhY3V1bSBwaGFzZXMgSSBhbmQgSUlJLCB0aGUgaGVhcCBwYWdlIG1h eSBiZSBtYXJrZWQKKyAqICAgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4uCiAgKgotICogVGhl eSBoYXZlIGVub3VnaCBjb21tb25hbGl0aWVzIHRoYXQgd2UgdXNlIGEgc2luZ2xlIFdBTCByZWNv cmQgZm9yIHRoZW0KKyAqIFRoZXNlIGNoYW5nZXMgYWxsIGhhcHBlbiB0b2dldGhlciwgc28gd2Ug dXNlIGEgc2luZ2xlIFdBTCByZWNvcmQgZm9yIHRoZW0KICAqIGFsbC4KICAqCiAgKiBJZiByZXBs YXlpbmcgdGhlIHJlY29yZCByZXF1aXJlcyBhIGNsZWFudXAgbG9jaywgcGFzcyBjbGVhbnVwX2xv Y2sgPSB0cnVlLgpAQCAtMjQwNiw2ICsyNDQ5LDE1IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhl YXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxlcywKICAqIGNhc2UsIHZtYnVmZmVyIHNo b3VsZCBhbHJlYWR5IGhhdmUgYmVlbiB1cGRhdGVkIGFuZCBtYXJrZWQgZGlydHkgYW5kIHNob3Vs ZAogICogc3RpbGwgYmUgcGlubmVkIGFuZCBsb2NrZWQuCiAgKgorICogc2V0X3BkX2FsbF92aXMg aW5kaWNhdGVzIHRoYXQgd2Ugc2V0IFBEX0FMTF9WSVNJQkxFIGFuZCB0aHVzIHNob3VsZCB1cGRh dGUKKyAqIHRoZSBwYWdlIExTTiB3aGVuIGNoZWNrc3Vtcy93YWxfbG9nX2hpbnRzIGFyZSBlbmFi bGVkIGV2ZW4gaWYgd2UgZGlkIG5vdAorICogcHJ1bmUgb3IgZnJlZXplIHR1cGxlcyBvbiB0aGUg cGFnZS4KKyAqCisgKiBJbiBzb21lIGNhc2VzLCBzdWNoIGFzIHdoZW4gaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoKSBpcyBzZXR0aW5nIGFuCisgKiBhbHJlYWR5IG1hcmtlZCBhbGwtdmlzaWJs ZSBwYWdlIGFsbC1mcm96ZW4sIFBEX0FMTF9WSVNJQkxFIG1heSBhbHJlYWR5IGJlCisgKiBzZXQu IFNvLCBpdCBpcyBwb3NzaWJsZSBmb3Igdm1mbGFncyB0byBiZSBub24temVybyBhbmQgc2V0X3Bk X2FsbF92aXMgdG8gYmUKKyAqIGZhbHNlLgorICoKICAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gc2Ny aWJibGVzIG9uIHRoZSAnZnJvemVuJyBhcnJheS4KICAqCiAgKiBOb3RlOiBUaGlzIGlzIGNhbGxl ZCBpbiBhIGNyaXRpY2FsIHNlY3Rpb24sIHNvIGNhcmVmdWwgd2hhdCB5b3UgZG8gaGVyZS4KQEAg LTI0MTUsNiArMjQ2Nyw3IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVs YXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwgdWludDggdm1m bGFncywKIAkJCQkJCSAgVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQsCiAJCQkJCQkgIGJvb2wg Y2xlYW51cF9sb2NrLAorCQkJCQkJICBib29sIHNldF9wZF9hbGxfdmlzLAogCQkJCQkJICBQcnVu ZVJlYXNvbiByZWFzb24sCiAJCQkJCQkgIEhlYXBUdXBsZUZyZWV6ZSAqZnJvemVuLCBpbnQgbmZy b3plbiwKIAkJCQkJCSAgT2Zmc2V0TnVtYmVyICpyZWRpcmVjdGVkLCBpbnQgbnJlZGlyZWN0ZWQs CkBAIC0yNDUxLDcgKzI1MDQsNyBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9u IHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqLwogCWlmICghZG9fcHJ1bmUgJiYKIAkJbmZy b3plbiA9PSAwICYmCi0JCSghZG9fc2V0X3ZtIHx8ICFYTG9nSGludEJpdElzTmVlZGVkKCkpKQor CQkoIXNldF9wZF9hbGxfdmlzIHx8ICFYTG9nSGludEJpdElzTmVlZGVkKCkpKQogCQlyZWdidWZf ZmxhZ3NfaGVhcCB8PSBSRUdCVUZfTk9fSU1BR0U7CiAKIAkvKgpAQCAtMjU2OSw3ICsyNjIyLDgg QEAgbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1 ZmZlciwKIAkgKiBTZWUgY29tbWVudCBhdCB0aGUgdG9wIG9mIHRoZSBmdW5jdGlvbiBhYm91dCBy ZWdidWZfZmxhZ3NfaGVhcCBmb3IKIAkgKiBkZXRhaWxzIG9uIHdoZW4gd2UgY2FuIGFkdmFuY2Ug dGhlIHBhZ2UgTFNOLgogCSAqLwotCWlmIChkb19wcnVuZSB8fCBuZnJvemVuID4gMCB8fCAoZG9f c2V0X3ZtICYmIFhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCisJaWYgKGRvX3BydW5lIHx8IG5mcm96 ZW4gPiAwIHx8CisJCShzZXRfcGRfYWxsX3ZpcyAmJiBYTG9nSGludEJpdElzTmVlZGVkKCkpKQog CXsKIAkJQXNzZXJ0KEJ1ZmZlcklzRGlydHkoYnVmZmVyKSk7CiAJCVBhZ2VTZXRMU04oQnVmZmVy R2V0UGFnZShidWZmZXIpLCByZWNwdHIpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CmluZGV4IDRhYTQyNWVjOTQ1Li4wZDM5ZDU3MTE1ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYwpAQCAtMjc3Niw2ICsyNzc2LDcgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExW UmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJCQkJ CQkJCSAgdm1mbGFncywKIAkJCQkJCQkJICBjb25mbGljdF94aWQsCiAJCQkJCQkJCSAgZmFsc2Us CS8qIG5vIGNsZWFudXAgbG9jayByZXF1aXJlZCAqLworCQkJCQkJCQkgICh2bWZsYWdzICYgVklT SUJJTElUWU1BUF9WQUxJRF9CSVRTKSAhPSAwLAogCQkJCQkJCQkgIFBSVU5FX1ZBQ1VVTV9DTEVB TlVQLAogCQkJCQkJCQkgIE5VTEwsIDAsCS8qIGZyb3plbiAqLwogCQkJCQkJCQkgIE5VTEwsIDAs CS8qIHJlZGlyZWN0ZWQgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBiMjAwOTZiNmNhMS4uMTRjMWQ5 MjYwNGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQzNSw2ICs0MzUsNyBAQCBleHRlcm4gdm9pZCBs b2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy LAogCQkJCQkJCQkJICBCdWZmZXIgdm1idWZmZXIsIHVpbnQ4IHZtZmxhZ3MsCiAJCQkJCQkJCQkg IFRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkLAogCQkJCQkJCQkJICBib29sIGNsZWFudXBfbG9j aywKKwkJCQkJCQkJCSAgYm9vbCBzZXRfcGRfYWxsX3ZpcywKIAkJCQkJCQkJCSAgUHJ1bmVSZWFz b24gcmVhc29uLAogCQkJCQkJCQkJICBIZWFwVHVwbGVGcmVlemUgKmZyb3plbiwgaW50IG5mcm96 ZW4sCiAJCQkJCQkJCQkgIE9mZnNldE51bWJlciAqcmVkaXJlY3RlZCwgaW50IG5yZWRpcmVjdGVk LAotLSAKMi40My4wCgo= --0000000000001ceba70645144821 Content-Type: text/x-patch; charset="US-ASCII"; name="v23-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Disposition: attachment; filename="v23-0006-Eliminate-XLOG_HEAP2_VISIBLE-from-empty-page-vac.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miqlzutr5 RnJvbSBmZDE1MThiYjgyNzQxZjhiMGU1NTQyMDZjMmUzNWE2NGJmMTJmYmMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjIxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjMgMDYvMTRdIEVsaW1pbmF0ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZnJvbSBlbXB0eS1w YWdlIHZhY3V1bQoKQXMgcGFydCBvZiByZW1vdmluZyBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jk cywgcGhhc2UgSSBvZiBWQUNVVU0gbm93Cm1hcmtzIGVtcHR5IHBhZ2VzIGFsbC12aXNpYmxlIGlu IGEgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTiByZWNvcmQuCgpBdXRob3I6IE1lbGFuaWUg UGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQg SGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8 YW5kcmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdt YWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAzNiAr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzAgaW5zZXJ0aW9u cygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5k ZXggMGQzOWQ1NzExNWQuLmQwMzQ0MmFiY2MxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jCkBAIC0xODcyLDkgKzE4NzIsMTIgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJl bFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCQkgKi8KIAkJ aWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKQogCQl7CisJCQkvKiBMb2NrIHZtYnVmZmVyIGJl Zm9yZSBlbnRlcmluZyBjcml0aWNhbCBzZWN0aW9uICovCisJCQlMb2NrQnVmZmVyKHZtYnVmZmVy LCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCiAJCQlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIAot CQkJLyogbWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdyaXRpbmcgYSBXQUwgcmVjb3JkICovCisJ CQkvKiBNYXJrIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgd3JpdGluZyBhbnkgV0FMIHJlY29yZHMgKi8K IAkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOwogCiAJCQkvKgpAQCAtMTg5MSwxMyArMTg5NCwzNCBA QCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1Ziwg QmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJbG9nX25ld3BhZ2VfYnVmZmVyKGJ1ZiwgdHJ1ZSk7CiAK IAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVs LT5yZWwsIGJsa25vLCBidWYsCi0JCQkJCQkJICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkg IHZtYnVmZmVyLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKLQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUgfAotCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKwkJCXZp c2liaWxpdHltYXBfc2V0X3ZtYml0cyhibGtubywKKwkJCQkJCQkJCSB2bWJ1ZmZlciwKKwkJCQkJ CQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCSBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4sCisJCQkJCQkJCQkgdmFjcmVsLT5yZWwtPnJkX2xvY2F0b3IpOworCisJCQkv KgorCQkJICogRW1pdCBXQUwgZm9yIHNldHRpbmcgUERfQUxMX1ZJU0lCTEUgb24gdGhlIGhlYXAg cGFnZSBhbmQKKwkJCSAqIHNldHRpbmcgdGhlIFZNLgorCQkJICovCisJCQlpZiAoUmVsYXRpb25O ZWVkc1dBTCh2YWNyZWwtPnJlbCkpCisJCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZSh2YWNy ZWwtPnJlbCwgYnVmLAorCQkJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCQkJICBWSVNJQklM SVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pF TiwKKwkJCQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklkLCAvKiBjb25mbGljdCB4aWQgKi8K KwkJCQkJCQkJCQkgIGZhbHNlLAkvKiBjbGVhbnVwIGxvY2sgKi8KKwkJCQkJCQkJCQkgIHRydWUs IC8qIHNldF9wZF9hbGxfdmlzICovCisJCQkJCQkJCQkJICBQUlVORV9WQUNVVU1fU0NBTiwJLyog cmVhc29uICovCisJCQkJCQkJCQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJ CQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJCQkJICBOVUxMLCAwKTsKKwogCQkJRU5EX0NSSVRf U0VDVElPTigpOwogCisJCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0sp OworCiAJCQkvKiBDb3VudCB0aGUgbmV3bHkgYWxsLWZyb3plbiBwYWdlcyBmb3IgbG9nZ2luZyAq LwogCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysrOwogCQkJdmFjcmVsLT52bV9uZXdf dmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKLS0gCjIuNDMuMAoK --0000000000001ceba70645144821 Content-Type: text/x-patch; charset="US-ASCII"; name="v23-0007-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Disposition: attachment; filename="v23-0007-Remove-XLOG_HEAP2_VISIBLE-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miqm04h86 RnJvbSBmYWYwNzkwMjVjNjM1NGZiMmZjYjA2OTVkYTI5MTE4YzQ3NmFlNGRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI3IFNlcCAyMDI1IDExOjU1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjMgMDcvMTRdIFJlbW92ZSBYTE9HX0hFQVAyX1ZJU0lCTEUgZW50aXJlbHkKCkFzIG5v IHJlbWFpbmluZyB1c2VycyBlbWl0IFhMT0dfSEVBUDJfVklTSUJMRSByZWNvcmRzLgpUaGlzIGlu Y2x1ZGVzIGRlbGV0aW5nIHRoZSB4bF9oZWFwX3Zpc2libGUgc3RydWN0IGFuZCBhbGwgZnVuY3Rp b25zCnJlc3BvbnNpYmxlIGZvciBlbWl0dGluZyBvciByZXBsYXlpbmcgWExPR19IRUFQMl9WSVNJ QkxFIHJlY29yZHMuCgpUaGlzIGNoYW5nZXMgdGhlIHZpc2liaWxpdHkgbWFwIEFQSSwgc28gYW55 IGV4dGVybmFsIHVzZXJzL2NvbnN1bWVycyBvZgp0aGUgVk0tb25seSBXQUwgcmVjb3JkIHdpbGwg bmVlZCB0byBjaGFuZ2UuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1h bkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXkgQm9yb2RpbiA8eDRtbW1AeWFuZGV4LXRl YW0ucnU+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJl dmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgfCAgNTQgKy0tLS0tLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgfCAxNTUgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgfCAgIDYgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAgMTYgKy0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgIHwgMTEyICstLS0tLS0tLS0tLS0tLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jICAgfCAgMTAgLS0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgfCAgIDEgLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc3RhbmRieS5jICAgICAgICB8ICAxMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmggICAgICAgICB8ICAyOCArLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJp bGl0eW1hcC5oICAgICAgIHwgIDEzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1h cGRlZnMuaCAgIHwgICA5IC0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAg ICAgIHwgICAxIC0KIDEzIGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDM3NSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2su YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jCmluZGV4IGJiMjYwY2ZmYTY4 Li41ZjA3ZjE3OTQxNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZt YXNrLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKQEAgLTU2LDgg KzU2LDggQEAgbWFza19wYWdlX2hpbnRfYml0cyhQYWdlIHBhZ2UpCiAKIAkvKgogCSAqIER1cmlu ZyByZXBsYXksIGlmIHRoZSBwYWdlIExTTiBoYXMgYWR2YW5jZWQgcGFzdCBvdXIgWExPRyByZWNv cmQncyBMU04sCi0JICogd2UgZG9uJ3QgbWFyayB0aGUgcGFnZSBhbGwtdmlzaWJsZS4gU2VlIGhl YXBfeGxvZ192aXNpYmxlKCkgZm9yCi0JICogZGV0YWlscy4KKwkgKiB3ZSBkb24ndCBtYXJrIHRo ZSBwYWdlIGFsbC12aXNpYmxlLiBTZWUgaGVhcF94bG9nX3BydW5lX2FuZF9mcmVlemUoKQorCSAq IGZvciBtb3JlIGRldGFpbHMuCiAJICovCiAJUGFnZUNsZWFyQWxsVmlzaWJsZShwYWdlKTsKIH0K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggNGQzODJhMDQzMzguLjNhZDc4YmE0Njk0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMjUzOSwxMSArMjUzOSwxMSBAQCBoZWFwX211 bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3QgKipzbG90cywgaW50 IG50dXBsZXMsCiAJCWVsc2UgaWYgKGFsbF9mcm96ZW5fc2V0KQogCQl7CiAJCQlQYWdlU2V0QWxs VmlzaWJsZShwYWdlKTsKLQkJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhCdWZmZXJHZXRCbG9j a051bWJlcihidWZmZXIpLAotCQkJCQkJCQkJIHZtYnVmZmVyLAotCQkJCQkJCQkJIFZJU0lCSUxJ VFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwK LQkJCQkJCQkJCSByZWxhdGlvbi0+cmRfbG9jYXRvcik7CisJCQl2aXNpYmlsaXR5bWFwX3NldChC dWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIpLAorCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJ ICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxM X0ZST1pFTiwKKwkJCQkJCQkgIHJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKIAkJfQogCiAJCS8qCkBA IC04ODEyLDUwICs4ODEyLDYgQEAgYm90dG9tdXBfc29ydF9hbmRfc2hyaW5rKFRNX0luZGV4RGVs ZXRlT3AgKmRlbHN0YXRlKQogCXJldHVybiBuYmxvY2tzZmF2b3JhYmxlOwogfQogCi0vKgotICog UGVyZm9ybSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdmlzaWJsZSBvcGVyYXRpb24uICAnYmxvY2sn IGlzIHRoZSBibG9jawotICogYmVpbmcgbWFya2VkIGFsbC12aXNpYmxlLCBhbmQgdm1fYnVmZmVy IGlzIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUKLSAqIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0 eSBtYXAgYmxvY2suICBCb3RoIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBtb2RpZmllZAotICog YW5kIGRpcnRpZWQuCi0gKgotICogc25hcHNob3RDb25mbGljdEhvcml6b24gY29tZXMgZnJvbSB0 aGUgbGFyZ2VzdCB4bWluIG9uIHRoZSBwYWdlIGJlaW5nCi0gKiBtYXJrZWQgYWxsLXZpc2libGUu ICBSRURPIHJvdXRpbmUgdXNlcyBpdCB0byBnZW5lcmF0ZSByZWNvdmVyeSBjb25mbGljdHMuCi0g KgotICogSWYgY2hlY2tzdW1zIG9yIHdhbF9sb2dfaGludHMgYXJlIGVuYWJsZWQsIHdlIG1heSBh bHNvIGdlbmVyYXRlIGEgZnVsbC1wYWdlCi0gKiBpbWFnZSBvZiBoZWFwX2J1ZmZlci4gT3RoZXJ3 aXNlLCB3ZSBvcHRpbWl6ZSBhd2F5IHRoZSBGUEkgKGJ5IHNwZWNpZnlpbmcKLSAqIFJFR0JVRl9O T19JTUFHRSBmb3IgdGhlIGhlYXAgYnVmZmVyKSwgaW4gd2hpY2ggY2FzZSB0aGUgY2FsbGVyIHNo b3VsZCAqbm90KgotICogdXBkYXRlIHRoZSBoZWFwIHBhZ2UncyBMU04uCi0gKi8KLVhMb2dSZWNQ dHIKLWxvZ19oZWFwX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsIEJ1 ZmZlciB2bV9idWZmZXIsCi0JCQkJIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6 b24sIHVpbnQ4IHZtZmxhZ3MpCi17Ci0JeGxfaGVhcF92aXNpYmxlIHhscmVjOwotCVhMb2dSZWNQ dHIJcmVjcHRyOwotCXVpbnQ4CQlmbGFnczsKLQotCUFzc2VydChCdWZmZXJJc1ZhbGlkKGhlYXBf YnVmZmVyKSk7Ci0JQXNzZXJ0KEJ1ZmZlcklzVmFsaWQodm1fYnVmZmVyKSk7Ci0KLQl4bHJlYy5z bmFwc2hvdENvbmZsaWN0SG9yaXpvbiA9IHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwotCXhscmVj LmZsYWdzID0gdm1mbGFnczsKLQlpZiAoUmVsYXRpb25Jc0FjY2Vzc2libGVJbkxvZ2ljYWxEZWNv ZGluZyhyZWwpKQotCQl4bHJlYy5mbGFncyB8PSBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19S RUw7Ci0JWExvZ0JlZ2luSW5zZXJ0KCk7Ci0JWExvZ1JlZ2lzdGVyRGF0YSgmeGxyZWMsIFNpemVP ZkhlYXBWaXNpYmxlKTsKLQotCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCB2bV9idWZmZXIsIDApOwot Ci0JZmxhZ3MgPSBSRUdCVUZfU1RBTkRBUkQ7Ci0JaWYgKCFYTG9nSGludEJpdElzTmVlZGVkKCkp Ci0JCWZsYWdzIHw9IFJFR0JVRl9OT19JTUFHRTsKLQlYTG9nUmVnaXN0ZXJCdWZmZXIoMSwgaGVh cF9idWZmZXIsIGZsYWdzKTsKLQotCXJlY3B0ciA9IFhMb2dJbnNlcnQoUk1fSEVBUDJfSUQsIFhM T0dfSEVBUDJfVklTSUJMRSk7Ci0KLQlyZXR1cm4gcmVjcHRyOwotfQotCiAvKgogICogUGVyZm9y bSBYTG9nSW5zZXJ0IGZvciBhIGhlYXAtdXBkYXRlIG9wZXJhdGlvbi4gIENhbGxlciBtdXN0IGFs cmVhZHkKICAqIGhhdmUgbW9kaWZpZWQgdGhlIGJ1ZmZlcihzKSBhbmQgbWFya2VkIHRoZW0gZGly dHkuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCBiMWNlYWI3MTkyOC4u ZjBkZTJjMTM2YTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94 bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtMjU0 LDcgKzI1NCw3IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAJCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKIAkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1Na LCAwKTsKIAotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sIHZtYnVmZmVyLCB2bWZs YWdzLCBybG9jYXRvcik7CisJCXZpc2liaWxpdHltYXBfc2V0KGJsa25vLCB2bWJ1ZmZlciwgdm1m bGFncywgcmxvY2F0b3IpOwogCiAJCUFzc2VydChCdWZmZXJJc0RpcnR5KHZtYnVmZmVyKSk7CiAJ CVBhZ2VTZXRMU04odm1wYWdlLCBsc24pOwpAQCAtMjY3LDE0MiArMjY3LDYgQEAgaGVhcF94bG9n X3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJWExvZ1JlY29yZFBhZ2VX aXRoRnJlZVNwYWNlKHJsb2NhdG9yLCBibGtubywgZnJlZXNwYWNlKTsKIH0KIAotLyoKLSAqIFJl cGxheSBYTE9HX0hFQVAyX1ZJU0lCTEUgcmVjb3Jkcy4KLSAqCi0gKiBUaGUgY3JpdGljYWwgaW50 ZWdyaXR5IHJlcXVpcmVtZW50IGhlcmUgaXMgdGhhdCB3ZSBtdXN0IG5ldmVyIGVuZCB1cCB3aXRo IGEKLSAqIHNpdHVhdGlvbiB3aGVyZSB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCwgYW5k IHRoZSBwYWdlLWxldmVsCi0gKiBQRF9BTExfVklTSUJMRSBiaXQgaXMgY2xlYXIuICBJZiB0aGF0 IHdlcmUgdG8gb2NjdXIsIHRoZW4gYSBzdWJzZXF1ZW50IHBhZ2UKLSAqIG1vZGlmaWNhdGlvbiB3 b3VsZCBmYWlsIHRvIGNsZWFyIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQuCi0gKi8KLXN0YXRpYyB2 b2lkCi1oZWFwX3hsb2dfdmlzaWJsZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKLXsKLQlYTG9n UmVjUHRyCWxzbiA9IHJlY29yZC0+RW5kUmVjUHRyOwotCXhsX2hlYXBfdmlzaWJsZSAqeGxyZWMg PSAoeGxfaGVhcF92aXNpYmxlICopIFhMb2dSZWNHZXREYXRhKHJlY29yZCk7Ci0JQnVmZmVyCQl2 bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7Ci0JQnVmZmVyCQlidWZmZXI7Ci0JUGFnZQkJcGFnZTsK LQlSZWxGaWxlTG9jYXRvciBybG9jYXRvcjsKLQlCbG9ja051bWJlciBibGtubzsKLQlYTG9nUmVk b0FjdGlvbiBhY3Rpb247Ci0KLQlBc3NlcnQoKHhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBf WExPR19WQUxJRF9CSVRTKSA9PSB4bHJlYy0+ZmxhZ3MpOwotCi0JWExvZ1JlY0dldEJsb2NrVGFn KHJlY29yZCwgMSwgJnJsb2NhdG9yLCBOVUxMLCAmYmxrbm8pOwotCi0JLyoKLQkgKiBJZiB0aGVy ZSBhcmUgYW55IEhvdCBTdGFuZGJ5IHRyYW5zYWN0aW9ucyBydW5uaW5nIHRoYXQgaGF2ZSBhbiB4 bWluCi0JICogaG9yaXpvbiBvbGQgZW5vdWdoIHRoYXQgdGhpcyBwYWdlIGlzbid0IGFsbC12aXNp YmxlIGZvciB0aGVtLCB0aGV5Ci0JICogbWlnaHQgaW5jb3JyZWN0bHkgZGVjaWRlIHRoYXQgYW4g aW5kZXgtb25seSBzY2FuIGNhbiBza2lwIGEgaGVhcCBmZXRjaC4KLQkgKgotCSAqIE5COiBJdCBt aWdodCBiZSBiZXR0ZXIgdG8gdGhyb3cgc29tZSBraW5kIG9mICJzb2Z0IiBjb25mbGljdCBoZXJl IHRoYXQKLQkgKiBmb3JjZXMgYW55IGluZGV4LW9ubHkgc2NhbiB0aGF0IGlzIGluIGZsaWdodCB0 byBwZXJmb3JtIGhlYXAgZmV0Y2hlcywKLQkgKiByYXRoZXIgdGhhbiBraWxsaW5nIHRoZSB0cmFu c2FjdGlvbiBvdXRyaWdodC4KLQkgKi8KLQlpZiAoSW5Ib3RTdGFuZGJ5KQotCQlSZXNvbHZlUmVj b3ZlcnlDb25mbGljdFdpdGhTbmFwc2hvdCh4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24s Ci0JCQkJCQkJCQkJCXhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JF TCwKLQkJCQkJCQkJCQkJcmxvY2F0b3IpOwotCi0JLyoKLQkgKiBSZWFkIHRoZSBoZWFwIHBhZ2Us IGlmIGl0IHN0aWxsIGV4aXN0cy4gSWYgdGhlIGhlYXAgZmlsZSBoYXMgZHJvcHBlZCBvcgotCSAq IHRydW5jYXRlZCBsYXRlciBpbiByZWNvdmVyeSwgd2UgZG9uJ3QgbmVlZCB0byB1cGRhdGUgdGhl IHBhZ2UsIGJ1dCB3ZSdkCi0JICogYmV0dGVyIHN0aWxsIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBt YXAuCi0JICovCi0JYWN0aW9uID0gWExvZ1JlYWRCdWZmZXJGb3JSZWRvKHJlY29yZCwgMSwgJmJ1 ZmZlcik7Ci0JaWYgKGFjdGlvbiA9PSBCTEtfTkVFRFNfUkVETykKLQl7Ci0JCS8qCi0JCSAqIFdl IGRvbid0IGJ1bXAgdGhlIExTTiBvZiB0aGUgaGVhcCBwYWdlIHdoZW4gc2V0dGluZyB0aGUgdmlz aWJpbGl0eQotCQkgKiBtYXAgYml0ICh1bmxlc3MgY2hlY2tzdW1zIG9yIHdhbF9oaW50X2JpdHMg aXMgZW5hYmxlZCwgaW4gd2hpY2gKLQkJICogY2FzZSB3ZSBtdXN0KS4gVGhpcyBleHBvc2VzIHVz IHRvIHRvcm4gcGFnZSBoYXphcmRzLCBidXQgc2luY2UKLQkJICogd2UncmUgbm90IGluc3BlY3Rp bmcgdGhlIGV4aXN0aW5nIHBhZ2UgY29udGVudHMgaW4gYW55IHdheSwgd2UKLQkJICogZG9uJ3Qg Y2FyZS4KLQkJICovCi0JCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7Ci0KLQkJUGFnZVNl dEFsbFZpc2libGUocGFnZSk7Ci0KLQkJaWYgKFhMb2dIaW50Qml0SXNOZWVkZWQoKSkKLQkJCVBh Z2VTZXRMU04ocGFnZSwgbHNuKTsKLQotCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKLQl9Ci0J ZWxzZSBpZiAoYWN0aW9uID09IEJMS19SRVNUT1JFRCkKLQl7Ci0JCS8qCi0JCSAqIElmIGhlYXAg YmxvY2sgd2FzIGJhY2tlZCB1cCwgd2UgYWxyZWFkeSByZXN0b3JlZCBpdCBhbmQgdGhlcmUncwot CQkgKiBub3RoaW5nIG1vcmUgdG8gZG8uIChUaGlzIGNhbiBvbmx5IGhhcHBlbiB3aXRoIGNoZWNr c3VtcyBvcgotCQkgKiB3YWxfbG9nX2hpbnRzIGVuYWJsZWQuKQotCQkgKi8KLQl9Ci0KLQlpZiAo QnVmZmVySXNWYWxpZChidWZmZXIpKQotCXsKLQkJU2l6ZQkJc3BhY2UgPSBQYWdlR2V0RnJlZVNw YWNlKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSk7Ci0KLQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZm ZXIpOwotCi0JCS8qCi0JCSAqIFNpbmNlIEZTTSBpcyBub3QgV0FMLWxvZ2dlZCBhbmQgb25seSB1 cGRhdGVkIGhldXJpc3RpY2FsbHksIGl0Ci0JCSAqIGVhc2lseSBiZWNvbWVzIHN0YWxlIGluIHN0 YW5kYnlzLiAgSWYgdGhlIHN0YW5kYnkgaXMgbGF0ZXIgcHJvbW90ZWQKLQkJICogYW5kIHJ1bnMg VkFDVVVNLCBpdCB3aWxsIHNraXAgdXBkYXRpbmcgaW5kaXZpZHVhbCBmcmVlIHNwYWNlCi0JCSAq IGZpZ3VyZXMgZm9yIHBhZ2VzIHRoYXQgYmVjYW1lIGFsbC12aXNpYmxlIChvciBhbGwtZnJvemVu LCBkZXBlbmRpbmcKLQkJICogb24gdGhlIHZhY3V1bSBtb2RlLCkgd2hpY2ggaXMgdHJvdWJsZXNv bWUgd2hlbiBGcmVlU3BhY2VNYXBWYWN1dW0KLQkJICogcHJvcGFnYXRlcyB0b28gb3B0aW1pc3Rp YyBmcmVlIHNwYWNlIHZhbHVlcyB0byB1cHBlciBGU00gbGF5ZXJzOwotCQkgKiBsYXRlciBpbnNl cnRlcnMgdHJ5IHRvIHVzZSBzdWNoIHBhZ2VzIG9ubHkgdG8gZmluZCBvdXQgdGhhdCB0aGV5Ci0J CSAqIGFyZSB1bnVzYWJsZS4gIFRoaXMgY2FuIGNhdXNlIGxvbmcgc3RhbGxzIHdoZW4gdGhlcmUg YXJlIG1hbnkgc3VjaAotCQkgKiBwYWdlcy4KLQkJICoKLQkJICogRm9yZXN0YWxsIHRob3NlIHBy b2JsZW1zIGJ5IHVwZGF0aW5nIEZTTSdzIGlkZWEgYWJvdXQgYSBwYWdlIHRoYXQKLQkJICogaXMg YmVjb21pbmcgYWxsLXZpc2libGUgb3IgYWxsLWZyb3plbi4KLQkJICoKLQkJICogRG8gdGhpcyBy ZWdhcmRsZXNzIG9mIGEgZnVsbC1wYWdlIGltYWdlIGJlaW5nIGFwcGxpZWQsIHNpbmNlIHRoZQot CQkgKiBGU00gZGF0YSBpcyBub3QgaW4gdGhlIHBhZ2UgYW55d2F5LgotCQkgKi8KLQkJaWYgKHhs cmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykKLQkJCVhMb2dSZWNvcmRQYWdl V2l0aEZyZWVTcGFjZShybG9jYXRvciwgYmxrbm8sIHNwYWNlKTsKLQl9Ci0KLQkvKgotCSAqIEV2 ZW4gaWYgd2Ugc2tpcHBlZCB0aGUgaGVhcCBwYWdlIHVwZGF0ZSBkdWUgdG8gdGhlIExTTiBpbnRl cmxvY2ssIGl0J3MKLQkgKiBzdGlsbCBzYWZlIHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAu ICBBbnkgV0FMIHJlY29yZCB0aGF0IGNsZWFycwotCSAqIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQg ZG9lcyBzbyBiZWZvcmUgY2hlY2tpbmcgdGhlIHBhZ2UgTFNOLCBzbyBhbnkKLQkgKiBiaXRzIHRo YXQgbmVlZCB0byBiZSBjbGVhcmVkIHdpbGwgc3RpbGwgYmUgY2xlYXJlZC4KLQkgKi8KLQlpZiAo WExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5kZWQocmVjb3JkLCAwLCBSQk1fWkVST19PTl9FUlJP UiwgZmFsc2UsCi0JCQkJCQkJCQkgICZ2bWJ1ZmZlcikgPT0gQkxLX05FRURTX1JFRE8pCi0Jewot CQlQYWdlCQl2bXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtYnVmZmVyKTsKLQkJUmVsYXRpb24JcmVs bjsKLQkJdWludDgJCXZtYml0czsKLQotCQkvKiBpbml0aWFsaXplIHRoZSBwYWdlIGlmIGl0IHdh cyByZWFkIGFzIHplcm9zICovCi0JCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKLQkJCVBhZ2VJbml0 KHZtcGFnZSwgQkxDS1NaLCAwKTsKLQotCQkvKiByZW1vdmUgVklTSUJJTElUWU1BUF9YTE9HXyog Ki8KLQkJdm1iaXRzID0geGxyZWMtPmZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTOwot Ci0JCS8qCi0JCSAqIFhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkIGxvY2tlZCB0aGUgYnVm ZmVyLiBCdXQKLQkJICogdmlzaWJpbGl0eW1hcF9zZXQgd2lsbCBoYW5kbGUgbG9ja2luZyBpdHNl bGYuCi0JCSAqLwotCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0spOwot Ci0JCXJlbG4gPSBDcmVhdGVGYWtlUmVsY2FjaGVFbnRyeShybG9jYXRvcik7Ci0KLQkJdmlzaWJp bGl0eW1hcF9zZXQocmVsbiwgYmxrbm8sIEludmFsaWRCdWZmZXIsIGxzbiwgdm1idWZmZXIsCi0J CQkJCQkgIHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgdm1iaXRzKTsKLQotCQlSZWxl YXNlQnVmZmVyKHZtYnVmZmVyKTsKLQkJRnJlZUZha2VSZWxjYWNoZUVudHJ5KHJlbG4pOwotCX0K LQllbHNlIGlmIChCdWZmZXJJc1ZhbGlkKHZtYnVmZmVyKSkKLQkJVW5sb2NrUmVsZWFzZUJ1ZmZl cih2bWJ1ZmZlcik7Ci19Ci0KIC8qCiAgKiBHaXZlbiBhbiAiaW5mb2JpdHMiIGZpZWxkIGZyb20g YW4gWExvZyByZWNvcmQsIHNldCB0aGUgY29ycmVjdCBiaXRzIGluIHRoZQogICogZ2l2ZW4gaW5m b21hc2sgYW5kIGluZm9tYXNrMiBmb3IgdGhlIHR1cGxlIHRvdWNoZWQgYnkgdGhlIHJlY29yZC4K QEAgLTc4MCw4ICs2NDQsOCBAQCBoZWFwX3hsb2dfbXVsdGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCSAqCiAJICogRHVyaW5nIHJlY292ZXJ5LCBob3dldmVyLCBubyBjb25jdXJy ZW50IHdyaXRlcnMgZXhpc3QuIFRoZXJlZm9yZSwKIAkgKiB1cGRhdGluZyB0aGUgVk0gd2l0aG91 dCBob2xkaW5nIHRoZSBoZWFwIHBhZ2UgbG9jayBpcyBzYWZlIGVub3VnaC4gVGhpcwotCSAqIHNh bWUgYXBwcm9hY2ggaXMgdGFrZW4gd2hlbiByZXBsYXlpbmcgeGxfaGVhcF92aXNpYmxlIHJlY29y ZHMgKHNlZQotCSAqIGhlYXBfeGxvZ192aXNpYmxlKCkpLgorCSAqIHNhbWUgYXBwcm9hY2ggaXMg dGFrZW4gd2hlbiByZXBsYXlpbmcgWExPR19IRUFQMl9QUlVORSogcmVjb3JkcyAoc2VlCisJICog aGVhcF94bG9nX3BydW5lX2FuZF9mcmVlemUoKSkuCiAJICovCiAJaWYgKCh4bHJlYy0+ZmxhZ3Mg JiBYTEhfSU5TRVJUX0FMTF9GUk9aRU5fU0VUKSAmJgogCQlYTG9nUmVhZEJ1ZmZlckZvclJlZG9F eHRlbmRlZChyZWNvcmQsIDEsIFJCTV9aRVJPX09OX0VSUk9SLCBmYWxzZSwKQEAgLTc5MywxMSAr NjU3LDExIEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQp CiAJCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKIAkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1NaLCAw KTsKIAotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sCi0JCQkJCQkJCSB2bWJ1ZmZl ciwKLQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkgVklTSUJJ TElUWU1BUF9BTExfRlJPWkVOLAotCQkJCQkJCQkgcmxvY2F0b3IpOworCQl2aXNpYmlsaXR5bWFw X3NldChibGtubywKKwkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxM X1ZJU0lCTEUgfAorCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCisJCQkJCQkgIHJs b2NhdG9yKTsKIAogCQlBc3NlcnQoQnVmZmVySXNEaXJ0eSh2bWJ1ZmZlcikpOwogCQlQYWdlU2V0 TFNOKHZtcGFnZSwgbHNuKTsKQEAgLTEzNzgsOSArMTI0Miw2IEBAIGhlYXAyX3JlZG8oWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5V UDoKIAkJCWhlYXBfeGxvZ19wcnVuZV9mcmVlemUocmVjb3JkKTsKIAkJCWJyZWFrOwotCQljYXNl IFhMT0dfSEVBUDJfVklTSUJMRToKLQkJCWhlYXBfeGxvZ192aXNpYmxlKHJlY29yZCk7Ci0JCQli cmVhazsKIAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWhlYXBfeGxvZ19tdWx0 aV9pbnNlcnQocmVjb3JkKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwppbmRleCBiODUxZDcyM2M3NC4uN2E3NzhhZDNiYWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jCkBAIC0xMjExLDkgKzEyMTEsOSBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShQcnVuZUZyZWV6ZVBhcmFtcyAqcGFyYW1zLAogCQlpZiAoZG9fc2V0X3ZtKQogCQl7CiAJCQlB c3NlcnQoUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7Ci0JCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0 eW1hcF9zZXRfdm1iaXRzKGJsb2Nrbm8sCi0JCQkJCQkJCQkJCQkgIHZtYnVmZmVyLCBuZXdfdm1i aXRzLAotCQkJCQkJCQkJCQkJICBwYXJhbXMtPnJlbGF0aW9uLT5yZF9sb2NhdG9yKTsKKwkJCW9s ZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldChibG9ja25vLAorCQkJCQkJCQkJCSAgIHZtYnVm ZmVyLCBuZXdfdm1iaXRzLAorCQkJCQkJCQkJCSAgIHBhcmFtcy0+cmVsYXRpb24tPnJkX2xvY2F0 b3IpOwogCQkJQXNzZXJ0KG9sZF92bWJpdHMgIT0gbmV3X3ZtYml0cyk7CiAJCX0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGQwMzQ0MmFiY2MxLi41ZDg4YTE1OTJlMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTg5NCwxMSArMTg5NCwxMSBA QCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1Ziwg QmxvY2tOdW1iZXIgYmxrbm8sCiAJCQkJbG9nX25ld3BhZ2VfYnVmZmVyKGJ1ZiwgdHJ1ZSk7CiAK IAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRz KGJsa25vLAotCQkJCQkJCQkJIHZtYnVmZmVyLAotCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxM X1ZJU0lCTEUgfAotCQkJCQkJCQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTiwKLQkJCQkJCQkJ CSB2YWNyZWwtPnJlbC0+cmRfbG9jYXRvcik7CisJCQl2aXNpYmlsaXR5bWFwX3NldChibGtubywK KwkJCQkJCQkgIHZtYnVmZmVyLAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8 CisJCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4sCisJCQkJCQkJICB2YWNyZWwtPnJl bC0+cmRfbG9jYXRvcik7CiAKIAkJCS8qCiAJCQkgKiBFbWl0IFdBTCBmb3Igc2V0dGluZyBQRF9B TExfVklTSUJMRSBvbiB0aGUgaGVhcCBwYWdlIGFuZApAQCAtMjc4MSw5ICsyNzgxLDkgQEAgbGF6 eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8s IEJ1ZmZlciBidWZmZXIsCiAJCSAqIHNldCBQRF9BTExfVklTSUJMRS4KIAkJICovCiAJCVBhZ2VT ZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoYmxrbm8sCi0J CQkJCQkJCSB2bWJ1ZmZlciwgdm1mbGFncywKLQkJCQkJCQkJIHZhY3JlbC0+cmVsLT5yZF9sb2Nh dG9yKTsKKwkJdmlzaWJpbGl0eW1hcF9zZXQoYmxrbm8sCisJCQkJCQkgIHZtYnVmZmVyLCB2bWZs YWdzLAorCQkJCQkJICB2YWNyZWwtPnJlbC0+cmRfbG9jYXRvcik7CiAJCWNvbmZsaWN0X3hpZCA9 IHZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2li aWxpdHltYXAuYwppbmRleCBkMTQ1ODhlOTJhZS4uNzk5N2U5MjY4NzIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKQEAgLTE0LDggKzE0LDcgQEAKICAqCQl2aXNpYmls aXR5bWFwX2NsZWFyICAtIGNsZWFyIGJpdHMgZm9yIG9uZSBwYWdlIGluIHRoZSB2aXNpYmlsaXR5 IG1hcAogICoJCXZpc2liaWxpdHltYXBfcGluCSAtIHBpbiBhIG1hcCBwYWdlIGZvciBzZXR0aW5n IGEgYml0CiAgKgkJdmlzaWJpbGl0eW1hcF9waW5fb2sgLSBjaGVjayB3aGV0aGVyIGNvcnJlY3Qg bWFwIHBhZ2UgaXMgYWxyZWFkeSBwaW5uZWQKLSAqCQl2aXNpYmlsaXR5bWFwX3NldAkgLSBzZXQg Yml0KHMpIGluIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZSBhbmQgbG9nCi0gKgkJdmlzaWJpbGl0 eW1hcF9zZXRfdm1iaXRzIC0gc2V0IGJpdChzKSBpbiBhIHBpbm5lZCBwYWdlCisgKgkJdmlzaWJp bGl0eW1hcF9zZXQJIC0gc2V0IGJpdChzKSBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UKICAq CQl2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMgLSBnZXQgc3RhdHVzIG9mIGJpdHMKICAqCQl2aXNp YmlsaXR5bWFwX2NvdW50ICAtIGNvdW50IG51bWJlciBvZiBiaXRzIHNldCBpbiB2aXNpYmlsaXR5 IG1hcAogICoJCXZpc2liaWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZSAtCkBAIC0yMjAsMTA5ICsy MTksNiBAQCB2aXNpYmlsaXR5bWFwX3Bpbl9vayhCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIg dm1idWYpCiAJcmV0dXJuIEJ1ZmZlcklzVmFsaWQodm1idWYpICYmIEJ1ZmZlckdldEJsb2NrTnVt YmVyKHZtYnVmKSA9PSBtYXBCbG9jazsKIH0KIAotLyoKLSAqCXZpc2liaWxpdHltYXBfc2V0IC0g c2V0IGJpdChzKSBvbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UKLSAqCi0gKiByZWNwdHIgaXMg dGhlIExTTiBvZiB0aGUgWExPRyByZWNvcmQgd2UncmUgcmVwbGF5aW5nLCBpZiB3ZSdyZSBpbiBy ZWNvdmVyeSwKLSAqIG9yIEludmFsaWRYTG9nUmVjUHRyIGluIG5vcm1hbCBydW5uaW5nLiAgVGhl IFZNIHBhZ2UgTFNOIGlzIGFkdmFuY2VkIHRvIHRoZQotICogb25lIHByb3ZpZGVkOyBpbiBub3Jt YWwgcnVubmluZywgd2UgZ2VuZXJhdGUgYSBuZXcgWExPRyByZWNvcmQgYW5kIHNldCB0aGUKLSAq IHBhZ2UgTFNOIHRvIHRoYXQgdmFsdWUgKHRob3VnaCB0aGUgaGVhcCBwYWdlJ3MgTFNOIG1heSAq bm90KiBiZSB1cGRhdGVkOwotICogc2VlIGJlbG93KS4gIGN1dG9mZl94aWQgaXMgdGhlIGxhcmdl c3QgeG1pbiBvbiB0aGUgcGFnZSBiZWluZyBtYXJrZWQKLSAqIGFsbC12aXNpYmxlOyBpdCBpcyBu ZWVkZWQgZm9yIEhvdCBTdGFuZGJ5LCBhbmQgY2FuIGJlIEludmFsaWRUcmFuc2FjdGlvbklkCi0g KiBpZiB0aGUgcGFnZSBjb250YWlucyBubyB0dXBsZXMuICBJdCBjYW4gYWxzbyBiZSBzZXQgdG8g SW52YWxpZFRyYW5zYWN0aW9uSWQKLSAqIHdoZW4gYSBwYWdlIHRoYXQgaXMgYWxyZWFkeSBhbGwt dmlzaWJsZSBpcyBiZWluZyBtYXJrZWQgYWxsLWZyb3plbi4KLSAqCi0gKiBDYWxsZXIgaXMgZXhw ZWN0ZWQgdG8gc2V0IHRoZSBoZWFwIHBhZ2UncyBQRF9BTExfVklTSUJMRSBiaXQgYmVmb3JlIGNh bGxpbmcKLSAqIHRoaXMgZnVuY3Rpb24uIEV4Y2VwdCBpbiByZWNvdmVyeSwgY2FsbGVyIHNob3Vs ZCBhbHNvIHBhc3MgdGhlIGhlYXAKLSAqIGJ1ZmZlci4gV2hlbiBjaGVja3N1bXMgYXJlIGVuYWJs ZWQgYW5kIHdlJ3JlIG5vdCBpbiByZWNvdmVyeSwgd2UgbXVzdCBhZGQKLSAqIHRoZSBoZWFwIGJ1 ZmZlciB0byB0aGUgV0FMIGNoYWluIHRvIHByb3RlY3QgaXQgZnJvbSBiZWluZyB0b3JuLgotICoK LSAqIFlvdSBtdXN0IHBhc3MgYSBidWZmZXIgY29udGFpbmluZyB0aGUgY29ycmVjdCBtYXAgcGFn ZSB0byB0aGlzIGZ1bmN0aW9uLgotICogQ2FsbCB2aXNpYmlsaXR5bWFwX3BpbiBmaXJzdCB0byBw aW4gdGhlIHJpZ2h0IG9uZS4gVGhpcyBmdW5jdGlvbiBkb2Vzbid0IGRvCi0gKiBhbnkgSS9PLgot ICoKLSAqIFJldHVybnMgdGhlIHN0YXRlIG9mIHRoZSBwYWdlJ3MgVk0gYml0cyBiZWZvcmUgc2V0 dGluZyBmbGFncy4KLSAqLwotdWludDgKLXZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwg QmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCi0JCQkJICBYTG9nUmVjUHRyIHJl Y3B0ciwgQnVmZmVyIHZtQnVmLCBUcmFuc2FjdGlvbklkIGN1dG9mZl94aWQsCi0JCQkJICB1aW50 OCBmbGFncykKLXsKLQlCbG9ja051bWJlciBtYXBCbG9jayA9IEhFQVBCTEtfVE9fTUFQQkxPQ0so aGVhcEJsayk7Ci0JdWludDMyCQltYXBCeXRlID0gSEVBUEJMS19UT19NQVBCWVRFKGhlYXBCbGsp OwotCXVpbnQ4CQltYXBPZmZzZXQgPSBIRUFQQkxLX1RPX09GRlNFVChoZWFwQmxrKTsKLQlQYWdl CQlwYWdlOwotCXVpbnQ4CSAgICptYXA7Ci0JdWludDgJCXN0YXR1czsKLQotI2lmZGVmIFRSQUNF X1ZJU0lCSUxJVFlNQVAKLQllbG9nKERFQlVHMSwgInZtX3NldCBmbGFncyAweCUwMlggZm9yICVz ICVkIiwKLQkJIGZsYWdzLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwQmxrKTsK LSNlbmRpZgotCi0JQXNzZXJ0KEluUmVjb3ZlcnkgfHwgIVhMb2dSZWNQdHJJc1ZhbGlkKHJlY3B0 cikpOwotCUFzc2VydChJblJlY292ZXJ5IHx8IFBhZ2VJc0FsbFZpc2libGUoQnVmZmVyR2V0UGFn ZShoZWFwQnVmKSkpOwotCUFzc2VydCgoZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMp ID09IGZsYWdzKTsKLQotCS8qIE11c3QgbmV2ZXIgc2V0IGFsbF9mcm96ZW4gYml0IHdpdGhvdXQg YWxzbyBzZXR0aW5nIGFsbF92aXNpYmxlIGJpdCAqLwotCUFzc2VydChmbGFncyAhPSBWSVNJQklM SVRZTUFQX0FMTF9GUk9aRU4pOwotCi0JLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBo ZWFwIHBhZ2UgcGlubmVkLCBpZiBwcmVzZW50ICovCi0JaWYgKEJ1ZmZlcklzVmFsaWQoaGVhcEJ1 ZikgJiYgQnVmZmVyR2V0QmxvY2tOdW1iZXIoaGVhcEJ1ZikgIT0gaGVhcEJsaykKLQkJZWxvZyhF UlJPUiwgIndyb25nIGhlYXAgYnVmZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwot Ci0JQXNzZXJ0KCFCdWZmZXJJc1ZhbGlkKGhlYXBCdWYpIHx8Ci0JCSAgIEJ1ZmZlcklzTG9ja2Vk QnlNZUluTW9kZShoZWFwQnVmLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpKTsKLQotCS8qIENoZWNr IHRoYXQgd2UgaGF2ZSB0aGUgcmlnaHQgVk0gcGFnZSBwaW5uZWQgKi8KLQlpZiAoIUJ1ZmZlcklz VmFsaWQodm1CdWYpIHx8IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZtQnVmKSAhPSBtYXBCbG9jaykK LQkJZWxvZyhFUlJPUiwgIndyb25nIFZNIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9z ZXQiKTsKLQotCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtQnVmKTsKLQltYXAgPSAodWludDggKikg UGFnZUdldENvbnRlbnRzKHBhZ2UpOwotCUxvY2tCdWZmZXIodm1CdWYsIEJVRkZFUl9MT0NLX0VY Q0xVU0lWRSk7Ci0KLQlzdGF0dXMgPSAobWFwW21hcEJ5dGVdID4+IG1hcE9mZnNldCkgJiBWSVNJ QklMSVRZTUFQX1ZBTElEX0JJVFM7Ci0JaWYgKGZsYWdzICE9IHN0YXR1cykKLQl7Ci0JCVNUQVJU X0NSSVRfU0VDVElPTigpOwotCi0JCW1hcFttYXBCeXRlXSB8PSAoZmxhZ3MgPDwgbWFwT2Zmc2V0 KTsKLQkJTWFya0J1ZmZlckRpcnR5KHZtQnVmKTsKLQotCQlpZiAoUmVsYXRpb25OZWVkc1dBTChy ZWwpKQotCQl7Ci0JCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHJlY3B0cikpCi0JCQl7Ci0JCQkJ QXNzZXJ0KCFJblJlY292ZXJ5KTsKLQkJCQlyZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbCwg aGVhcEJ1Ziwgdm1CdWYsIGN1dG9mZl94aWQsIGZsYWdzKTsKLQotCQkJCS8qCi0JCQkJICogSWYg ZGF0YSBjaGVja3N1bXMgYXJlIGVuYWJsZWQgKG9yIHdhbF9sb2dfaGludHM9b24pLCB3ZQotCQkJ CSAqIG5lZWQgdG8gcHJvdGVjdCB0aGUgaGVhcCBwYWdlIGZyb20gYmVpbmcgdG9ybi4KLQkJCQkg KgotCQkJCSAqIElmIG5vdCwgdGhlbiB3ZSBtdXN0ICpub3QqIHVwZGF0ZSB0aGUgaGVhcCBwYWdl J3MgTFNOLiBJbgotCQkJCSAqIHRoaXMgY2FzZSwgdGhlIEZQSSBmb3IgdGhlIGhlYXAgcGFnZSB3 YXMgb21pdHRlZCBmcm9tIHRoZQotCQkJCSAqIFdBTCByZWNvcmQgaW5zZXJ0ZWQgYWJvdmUsIHNv IGl0IHdvdWxkIGJlIGluY29ycmVjdCB0bwotCQkJCSAqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3Mg TFNOLgotCQkJCSAqLwotCQkJCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkpCi0JCQkJewotCQkJ CQlQYWdlCQloZWFwUGFnZSA9IEJ1ZmZlckdldFBhZ2UoaGVhcEJ1Zik7Ci0KLQkJCQkJUGFnZVNl dExTTihoZWFwUGFnZSwgcmVjcHRyKTsKLQkJCQl9Ci0JCQl9Ci0JCQlQYWdlU2V0TFNOKHBhZ2Us IHJlY3B0cik7Ci0JCX0KLQotCQlFTkRfQ1JJVF9TRUNUSU9OKCk7Ci0JfQotCi0JTG9ja0J1ZmZl cih2bUJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKLQlyZXR1cm4gc3RhdHVzOwotfQotCiAvKgog ICogU2V0IFZNICh2aXNpYmlsaXR5IG1hcCkgZmxhZ3MgaW4gdGhlIFZNIGJsb2NrIGluIHZtQnVm LgogICoKQEAgLTM0NCw5ICsyNDAsOSBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWws IEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAogICogcmxvY2F0b3IgaXMgdXNl ZCBvbmx5IGZvciBkZWJ1Z2dpbmcgbWVzc2FnZXMuCiAgKi8KIHVpbnQ4Ci12aXNpYmlsaXR5bWFw X3NldF92bWJpdHMoQmxvY2tOdW1iZXIgaGVhcEJsaywKLQkJCQkJCSBCdWZmZXIgdm1CdWYsIHVp bnQ4IGZsYWdzLAotCQkJCQkJIGNvbnN0IFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKQordmlzaWJp bGl0eW1hcF9zZXQoQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWlu dDggZmxhZ3MsCisJCQkJICBjb25zdCBSZWxGaWxlTG9jYXRvciBybG9jYXRvcikKIHsKIAlCbG9j a051bWJlciBtYXBCbG9jayA9IEhFQVBCTEtfVE9fTUFQQkxPQ0soaGVhcEJsayk7CiAJdWludDMy CQltYXBCeXRlID0gSEVBUEJMS19UT19NQVBCWVRFKGhlYXBCbGspOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv cm1ncmRlc2MvaGVhcGRlc2MuYwppbmRleCBjYTI2ZDFmMGVkMS4uMDg0NjFmZGY1OTMgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCkBAIC0zNDksMTMgKzM0OSw2IEBAIGhl YXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJfQog CQl9CiAJfQotCWVsc2UgaWYgKGluZm8gPT0gWExPR19IRUFQMl9WSVNJQkxFKQotCXsKLQkJeGxf aGVhcF92aXNpYmxlICp4bHJlYyA9ICh4bF9oZWFwX3Zpc2libGUgKikgcmVjOwotCi0JCWFwcGVu ZFN0cmluZ0luZm8oYnVmLCAic25hcHNob3RDb25mbGljdEhvcml6b246ICV1LCBmbGFnczogMHgl MDJYIiwKLQkJCQkJCSB4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sIHhscmVjLT5mbGFn cyk7Ci0JfQogCWVsc2UgaWYgKGluZm8gPT0gWExPR19IRUFQMl9NVUxUSV9JTlNFUlQpCiAJewog CQl4bF9oZWFwX211bHRpX2luc2VydCAqeGxyZWMgPSAoeGxfaGVhcF9tdWx0aV9pbnNlcnQgKikg cmVjOwpAQCAtNDYxLDkgKzQ1NCw2IEBAIGhlYXAyX2lkZW50aWZ5KHVpbnQ4IGluZm8pCiAJCWNh c2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoKIAkJCWlkID0gIlBSVU5FX1ZBQ1VV TV9DTEVBTlVQIjsKIAkJCWJyZWFrOwotCQljYXNlIFhMT0dfSEVBUDJfVklTSUJMRToKLQkJCWlk ID0gIlZJU0lCTEUiOwotCQkJYnJlYWs7CiAJCWNhc2UgWExPR19IRUFQMl9NVUxUSV9JTlNFUlQ6 CiAJCQlpZCA9ICJNVUxUSV9JTlNFUlQiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9kZWNvZGUuYwppbmRleCBjYzAzZjA3MDZlOS4uMmZkZDRhZjkwYTggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtNDU0LDcgKzQ1NCw2IEBA IGhlYXAyX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZm ZXIgKmJ1ZikKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX09OX0FDQ0VTUzoKIAkJY2FzZSBYTE9H X0hFQVAyX1BSVU5FX1ZBQ1VVTV9TQ0FOOgogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVN X0NMRUFOVVA6Ci0JCWNhc2UgWExPR19IRUFQMl9WSVNJQkxFOgogCQljYXNlIFhMT0dfSEVBUDJf TE9DS19VUERBVEVEOgogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFu ZGJ5LmMKaW5kZXggNDIyMmJkYWIwNzguLmM2MTk2NDNlMTIxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv c3RhbmRieS5jCkBAIC00NzUsMTIgKzQ3NSwxMiBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdp dGhTbmFwc2hvdChUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAogCSAqIElm IHdlIGdldCBwYXNzZWQgSW52YWxpZFRyYW5zYWN0aW9uSWQgdGhlbiB3ZSBkbyBub3RoaW5nIChu byBjb25mbGljdCkuCiAJICoKIAkgKiBUaGlzIGNhbiBoYXBwZW4gd2hlbiByZXBsYXlpbmcgYWxy ZWFkeS1hcHBsaWVkIFdBTCByZWNvcmRzIGFmdGVyIGEKLQkgKiBzdGFuZGJ5IGNyYXNoIG9yIHJl c3RhcnQsIG9yIHdoZW4gcmVwbGF5aW5nIGFuIFhMT0dfSEVBUDJfVklTSUJMRQotCSAqIHJlY29y ZCB0aGF0IG1hcmtzIGFzIGZyb3plbiBhIHBhZ2Ugd2hpY2ggd2FzIGFscmVhZHkgYWxsLXZpc2li bGUuICBJdCdzCi0JICogYWxzbyBxdWl0ZSBjb21tb24gd2l0aCByZWNvcmRzIGdlbmVyYXRlZCBk dXJpbmcgaW5kZXggZGVsZXRpb24KLQkgKiAob3JpZ2luYWwgZXhlY3V0aW9uIG9mIHRoZSBkZWxl dGlvbiBjYW4gcmVhc29uIHRoYXQgYSByZWNvdmVyeSBjb25mbGljdAotCSAqIHdoaWNoIGlzIHN1 ZmZpY2llbnQgZm9yIHRoZSBkZWxldGlvbiBvcGVyYXRpb24gbXVzdCB0YWtlIHBsYWNlIGJlZm9y ZQotCSAqIHJlcGxheSBvZiB0aGUgZGVsZXRpb24gcmVjb3JkIGl0c2VsZikuCisJICogc3RhbmRi eSBjcmFzaCBvciByZXN0YXJ0LCBvciB3aGVuIHJlcGxheWluZyBhIHJlY29yZCB0aGF0IG1hcmtz IGFzCisJICogZnJvemVuIGEgcGFnZSB3aGljaCB3YXMgYWxyZWFkeSBtYXJrZWQgYWxsLXZpc2li bGUgaW4gdGhlIHZpc2liaWxpdHkKKwkgKiBtYXAuICBJdCdzIGFsc28gcXVpdGUgY29tbW9uIHdp dGggcmVjb3JkcyBnZW5lcmF0ZWQgZHVyaW5nIGluZGV4CisJICogZGVsZXRpb24gKG9yaWdpbmFs IGV4ZWN1dGlvbiBvZiB0aGUgZGVsZXRpb24gY2FuIHJlYXNvbiB0aGF0IGEgcmVjb3ZlcnkKKwkg KiBjb25mbGljdCB3aGljaCBpcyBzdWZmaWNpZW50IGZvciB0aGUgZGVsZXRpb24gb3BlcmF0aW9u IG11c3QgdGFrZSBwbGFjZQorCSAqIGJlZm9yZSByZXBsYXkgb2YgdGhlIGRlbGV0aW9uIHJlY29y ZCBpdHNlbGYpLgogCSAqLwogCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoc25hcHNob3RDb25m bGljdEhvcml6b24pKQogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtX3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCmluZGV4IDE2 YzJiMmUzYzljLi42OTY3ODE4NzgzMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbV94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKQEAgLTYw LDcgKzYwLDYgQEAKICNkZWZpbmUgWExPR19IRUFQMl9QUlVORV9PTl9BQ0NFU1MJCTB4MTAKICNk ZWZpbmUgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTgkweDIwCiAjZGVmaW5lIFhMT0dfSEVB UDJfUFJVTkVfVkFDVVVNX0NMRUFOVVAJMHgzMAotI2RlZmluZSBYTE9HX0hFQVAyX1ZJU0lCTEUJ CTB4NDAKICNkZWZpbmUgWExPR19IRUFQMl9NVUxUSV9JTlNFUlQgMHg1MAogI2RlZmluZSBYTE9H X0hFQVAyX0xPQ0tfVVBEQVRFRCAweDYwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTkVXX0NJRAkJMHg3 MApAQCAtMjk0LDcgKzI5MywxMyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3BydW5lCiAKICNk ZWZpbmUgU2l6ZU9mSGVhcFBydW5lIChvZmZzZXRvZih4bF9oZWFwX3BydW5lLCBmbGFncykgKyBz aXplb2YodWludDE2KSkKIAotLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNvbmZsaWN0IGR1cmluZyBs b2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KKy8qCisgKiBUbyBoYW5kbGUgcmVjb3Zlcnkg Y29uZmxpY3QgZHVyaW5nIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSwgd2UgbXVzdCBrbm93 CisgKiBpZiB0aGUgdGFibGUgaXMgYSBjYXRhbG9nIHRhYmxlLiBOb3RlIHRoYXQgaW4gdmlzaWJp bGl0eW1hcGRlZnMuaAorICogVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMIGlzIGFsc28g ZGVmaW5lZCBhcyAoMSA8PCAyKS4geGxfaGVhcF9wcnVuZQorICogcmVjb3JkcyBzaG91bGQgdXNl IFhMSFBfSVNfQ0FUQUxPR19SRUwsIG5vdCBWSVNJQklMSVlUTUFQX1hMT0dfQ0FUQUxPR19SRUwg LS0KKyAqIGV2ZW4gaWYgdGhleSBvbmx5IGNvbnRhaW4gdXBkYXRlcyB0byB0aGUgVk0uCisgKi8K ICNkZWZpbmUJCVhMSFBfSVNfQ0FUQUxPR19SRUwJCQkoMSA8PCAxKQogCiAvKgpAQCAtNDQzLDIw ICs0NDgsNiBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX2lucGxhY2UKIAogI2RlZmluZSBNaW5T aXplT2ZIZWFwSW5wbGFjZQkob2Zmc2V0b2YoeGxfaGVhcF9pbnBsYWNlLCBubXNncykgKyBzaXpl b2YoaW50KSkKIAotLyoKLSAqIFRoaXMgaXMgd2hhdCB3ZSBuZWVkIHRvIGtub3cgYWJvdXQgc2V0 dGluZyBhIHZpc2liaWxpdHkgbWFwIGJpdAotICoKLSAqIEJhY2t1cCBibGsgMDogdmlzaWJpbGl0 eSBtYXAgYnVmZmVyCi0gKiBCYWNrdXAgYmxrIDE6IGhlYXAgYnVmZmVyCi0gKi8KLXR5cGVkZWYg c3RydWN0IHhsX2hlYXBfdmlzaWJsZQotewotCVRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGlj dEhvcml6b247Ci0JdWludDgJCWZsYWdzOwotfSB4bF9oZWFwX3Zpc2libGU7Ci0KLSNkZWZpbmUg U2l6ZU9mSGVhcFZpc2libGUgKG9mZnNldG9mKHhsX2hlYXBfdmlzaWJsZSwgZmxhZ3MpICsgc2l6 ZW9mKHVpbnQ4KSkKLQogdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9uZXdfY2lkCiB7CiAJLyoKQEAg LTUwMCwxMSArNDkxLDYgQEAgZXh0ZXJuIHZvaWQgaGVhcDJfZGVzYyhTdHJpbmdJbmZvIGJ1Ziwg WExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmhlYXAyX2lkZW50 aWZ5KHVpbnQ4IGluZm8pOwogZXh0ZXJuIHZvaWQgaGVhcF94bG9nX2xvZ2ljYWxfcmV3cml0ZShY TG9nUmVhZGVyU3RhdGUgKnIpOwogCi1leHRlcm4gWExvZ1JlY1B0ciBsb2dfaGVhcF92aXNpYmxl KFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhlYXBfYnVmZmVyLAotCQkJCQkJCQkgICBCdWZmZXIgdm1f YnVmZmVyLAotCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9u LAotCQkJCQkJCQkgICB1aW50OCB2bWZsYWdzKTsKLQogLyogaW4gaGVhcGRlc2MuYywgc28gaXQg Y2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGZyb250ZW5kL2JhY2tlbmQgY29kZSAqLwogZXh0ZXJuIHZv aWQgaGVhcF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoY2hhciAqY3Vyc29yLCB1 aW50MTYgZmxhZ3MsCiAJCQkJCQkJCQkJCQkgICBpbnQgKm5wbGFucywgeGxocF9mcmVlemVfcGxh biAqKnBsYW5zLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKaW5kZXggYzZmYTM3YmU5Njgu LjA1YmE2Nzg2YjQ3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1h cC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKQEAgLTE1LDcgKzE1 LDYgQEAKICNkZWZpbmUgVklTSUJJTElUWU1BUF9ICiAKICNpbmNsdWRlICJhY2Nlc3MvdmlzaWJp bGl0eW1hcGRlZnMuaCIKLSNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKICNpbmNsdWRlICJz dG9yYWdlL2Jsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWYuaCIKICNpbmNsdWRlICJzdG9y YWdlL3JlbGZpbGVsb2NhdG9yLmgiCkBAIC0zMiwxNSArMzEsOSBAQCBleHRlcm4gYm9vbCB2aXNp YmlsaXR5bWFwX2NsZWFyKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKIGV4dGVy biB2b2lkIHZpc2liaWxpdHltYXBfcGluKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJs aywKIAkJCQkJCQkgIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIGJvb2wgdmlzaWJpbGl0eW1hcF9w aW5fb2soQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIHZtYnVmKTsKLWV4dGVybiB1aW50OCB2 aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsCi0JCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVh cEJsaywgQnVmZmVyIGhlYXBCdWYsCi0JCQkJCQkJICAgWExvZ1JlY1B0ciByZWNwdHIsCi0JCQkJ CQkJICAgQnVmZmVyIHZtQnVmLAotCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwK LQkJCQkJCQkgICB1aW50OCBmbGFncyk7Ci1leHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXRf dm1iaXRzKEJsb2NrTnVtYmVyIGhlYXBCbGssCi0JCQkJCQkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWlu dDggZmxhZ3MsCi0JCQkJCQkJCQkgIGNvbnN0IFJlbEZpbGVMb2NhdG9yIHJsb2NhdG9yKTsKK2V4 dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX3NldChCbG9ja051bWJlciBoZWFwQmxrLAorCQkJCQkJ CSAgIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MsCisJCQkJCQkJICAgY29uc3QgUmVsRmlsZUxv Y2F0b3IgcmxvY2F0b3IpOwogZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhS ZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJu IHZvaWQgdmlzaWJpbGl0eW1hcF9jb3VudChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyICphbGxf dmlzaWJsZSwgQmxvY2tOdW1iZXIgKmFsbF9mcm96ZW4pOwogZXh0ZXJuIEJsb2NrTnVtYmVyIHZp c2liaWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZShSZWxhdGlvbiByZWwsCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy92aXNpYmlsaXR5bWFwZGVmcy5oCmluZGV4IDVhZDVjMDIwODc3Li5lMDFiY2U0Yzk5ZiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKQEAgLTIxLDE0ICsyMSw1IEBACiAj ZGVmaW5lIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTgkweDAyCiAjZGVmaW5lIFZJU0lCSUxJVFlN QVBfVkFMSURfQklUUwkweDAzCS8qIE9SIG9mIGFsbCB2YWxpZCB2aXNpYmlsaXR5bWFwCiAJCQkJ CQkJCQkJCSAqIGZsYWdzIGJpdHMgKi8KLS8qCi0gKiBUbyBkZXRlY3QgcmVjb3ZlcnkgY29uZmxp Y3RzIGR1cmluZyBsb2dpY2FsIGRlY29kaW5nIG9uIGEgc3RhbmRieSwgd2UgbmVlZAotICogdG8g a25vdyBpZiBhIHRhYmxlIGlzIGEgdXNlciBjYXRhbG9nIHRhYmxlLiBGb3IgdGhhdCB3ZSBhZGQg YW4gYWRkaXRpb25hbAotICogYml0IGludG8geGxfaGVhcF92aXNpYmxlLmZsYWdzLCBpbiBhZGRp dGlvbiB0byB0aGUgYWJvdmUuCi0gKgotICogTkI6IFZJU0lCSUxJVFlNQVBfWExPR18qIG1heSBu b3QgYmUgcGFzc2VkIHRvIHZpc2liaWxpdHltYXBfc2V0KCkuCi0gKi8KLSNkZWZpbmUgVklTSUJJ TElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMCTB4MDQKLSNkZWZpbmUgVklTSUJJTElUWU1BUF9YTE9H X1ZBTElEX0JJVFMJKFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyB8IFZJU0lCSUxJVFlNQVBfWExP R19DQVRBTE9HX1JFTCkKIAogI2VuZGlmCQkJCQkJCS8qIFZJU0lCSUxJVFlNQVBERUZTX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggY2YzZjZhN2RhZmQuLmExMzk3MDVkZTAxIDEw MDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNDMwMiw3ICs0MzAyLDYgQEAgeGxfaGVhcF9w cnVuZQogeGxfaGVhcF9yZXdyaXRlX21hcHBpbmcKIHhsX2hlYXBfdHJ1bmNhdGUKIHhsX2hlYXBf dXBkYXRlCi14bF9oZWFwX3Zpc2libGUKIHhsX2ludmFsaWRfcGFnZQogeGxfaW52YWxpZF9wYWdl X2tleQogeGxfaW52YWxpZGF0aW9ucwotLSAKMi40My4wCgo= --0000000000001ceba70645144821 Content-Type: text/x-patch; charset="UTF-8"; name="v23-0008-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Disposition: attachment; filename="v23-0008-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miqm07407 RnJvbSAyMjFhNWRiMmQ4YTdjZWUwNzA1M2MzMGY2MzViZTBiMjdiYWUyMjQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDE4IEp1bCAyMDI1IDE2OjMwOjA0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjMgMDgvMTRdIFJlbmFtZSBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSB0bwog R2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBl OiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhi aXQKClRoZSBmdW5jdGlvbiBpcyBjdXJyZW50bHkgb25seSB1c2VkIHRvIGNoZWNrIHdoZXRoZXIg YSB0dXBsZeKAmXMgeG1heCBpcwp2aXNpYmxlIHRvIGFsbCB0cmFuc2FjdGlvbnMgKGFuZCB0aHVz IHJlbW92YWJsZSkuIFVwY29taW5nIGNoYW5nZXMgd2lsbAphbHNvIHVzZSBpdCB0byB0ZXN0IHdo ZXRoZXIgYSB0dXBsZeKAmXMgeG1pbiBpcyB2aXNpYmxlIHRvIGFsbCB0bwpkZWNpZGUgaWYgYSBw YWdlIGNhbiBiZSBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIHZpc2liaWxpdHkgbWFwLgoKVGhl IG5ldyBuYW1lLCBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoKSwgYmV0dGVyIHJlZmxlY3RzIHRo aXMgYnJvYWRlcgpwdXJwb3NlLgoKUmV2aWV3ZWQtYnk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0Bh bmFyYXplbC5kZT4KUmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFp bC5jb20+ClJldmlld2VkLWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMgfCAgNiArKystLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgICAgfCAxMiArKysrKyst LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgICAgICAgfCAgMiAr LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMgICAgICAgICB8IDE3ICsrKysr KysrLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmggICAgICAgICAgICAgICAg IHwgIDQgKystLQogNSBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJp bGl0eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwppbmRl eCAwNWY2OTQ2ZmU2MC4uNGViYzhhYmRiZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX3Zpc2liaWxpdHkuYwpAQCAtMTQ0Nyw3ICsxNDQ3LDcgQEAgSGVhcFR1cGxlU2F0aXNm aWVzTm9uVmFjdXVtYWJsZShIZWFwVHVwbGUgaHR1cCwgU25hcHNob3Qgc25hcHNob3QsCiAJewog CQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikpOwogCi0JCWlmIChHbG9i YWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoc25hcHNob3QtPnZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQor CQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHNuYXBzaG90LT52aXN0ZXN0LCBkZWFkX2Fm dGVyKSkKIAkJCXJlcyA9IEhFQVBUVVBMRV9ERUFEOwogCX0KIAllbHNlCkBAIC0xNTEyLDggKzE1 MTIsOCBAQCBIZWFwVHVwbGVJc1N1cmVseURlYWQoSGVhcFR1cGxlIGh0dXAsIEdsb2JhbFZpc1N0 YXRlICp2aXN0ZXN0KQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBEZWxldGVyIGNvbW1pdHRlZCwg c28gdHVwbGUgaXMgZGVhZCBpZiB0aGUgWElEIGlzIG9sZCBlbm91Z2guICovCi0JcmV0dXJuIEds b2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0ZXN0LAotCQkJCQkJCQkJICAgSGVhcFR1cGxl SGVhZGVyR2V0UmF3WG1heCh0dXBsZSkpOworCXJldHVybiBHbG9iYWxWaXNYaWRWaXNpYmxlVG9B bGwodmlzdGVzdCwKKwkJCQkJCQkJCUhlYXBUdXBsZUhlYWRlckdldFJhd1htYXgodHVwbGUpKTsK IH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggN2E3NzhhZDNiYWQu LjFhM2M3Y2YxZWY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMjUzLDcg KzI1Myw3IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBi dWZmZXIpCiAJICovCiAJdmlzdGVzdCA9IEdsb2JhbFZpc1Rlc3RGb3IocmVsYXRpb24pOwogCi0J aWYgKCFHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQodmlzdGVzdCwgcHJ1bmVfeGlkKSkKKwlp ZiAoIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LCBwcnVuZV94aWQpKQogCQlyZXR1 cm47CiAKIAkvKgpAQCAtNDg3LDcgKzQ4Nyw3IEBAIHBydW5lX2ZyZWV6ZV9wbGFuKE9pZCByZWxv aWQsIEJ1ZmZlciBidWZmZXIsIFBydW5lU3RhdGUgKnByc3RhdGUsCiAJICogRGV0ZXJtaW5pbmcg SFRTViBvbmx5IG9uY2UgZm9yIGVhY2ggdHVwbGUgaXMgcmVxdWlyZWQgZm9yIGNvcnJlY3RuZXNz LAogCSAqIHRvIGRlYWwgd2l0aCBjYXNlcyB3aGVyZSBydW5uaW5nIEhUU1YgdHdpY2UgY291bGQg cmVzdWx0IGluIGRpZmZlcmVudAogCSAqIHJlc3VsdHMuICBGb3IgZXhhbXBsZSwgUkVDRU5UTFlf REVBRCBjYW4gdHVybiB0byBERUFEIGlmIGFub3RoZXIKLQkgKiBjaGVja2VkIGl0ZW0gY2F1c2Vz IEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoKSB0byB1cGRhdGUgdGhlCisJICogY2hl Y2tlZCBpdGVtIGNhdXNlcyBHbG9iYWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKCkgdG8gdXBkYXRl IHRoZQogCSAqIGhvcml6b24sIG9yIElOU0VSVF9JTl9QUk9HUkVTUyBjYW4gY2hhbmdlIHRvIERF QUQgaWYgdGhlIGluc2VydGluZwogCSAqIHRyYW5zYWN0aW9uIGFib3J0cy4KIAkgKgpAQCAtMTMy NywxMSArMTMyNywxMSBAQCBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0oUHJ1bmVTdGF0ZSAq cHJzdGF0ZSwgSGVhcFR1cGxlIHR1cCwgQnVmZmVyIGJ1ZmZlcikKIAkgKiBEZXRlcm1pbmUgd2hl dGhlciBvciBub3QgdGhlIHR1cGxlIGlzIGNvbnNpZGVyZWQgZGVhZCB3aGVuIGNvbXBhcmVkCiAJ ICogd2l0aCB0aGUgcHJvdmlkZWQgR2xvYmFsVmlzU3RhdGUuIE9uLWFjY2VzcyBwcnVuaW5nIGRv ZXMgbm90IHByb3ZpZGUKIAkgKiBWYWN1dW1DdXRvZmZzLiBBbmQgZm9yIHZhY3V1bSwgZXZlbiBp ZiB0aGUgdHVwbGUncyB4bWF4IGlzIG5vdCBvbGRlcgotCSAqIHRoYW4gT2xkZXN0WG1pbiwgR2xv YmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgY291bGQgZmluZCB0aGUgcm93IGRlYWQKLQkgKiBp ZiB0aGUgR2xvYmFsVmlzU3RhdGUgaGFzIGJlZW4gdXBkYXRlZCBzaW5jZSB0aGUgYmVnaW5uaW5n IG9mIHZhY3V1bWluZworCSAqIHRoYW4gT2xkZXN0WG1pbiwgR2xvYmFsVmlzWGlkVmlzaWJsZVRv QWxsKCkgY291bGQgZmluZCB0aGUgcm93IGRlYWQgaWYKKwkgKiB0aGUgR2xvYmFsVmlzU3RhdGUg aGFzIGJlZW4gdXBkYXRlZCBzaW5jZSB0aGUgYmVnaW5uaW5nIG9mIHZhY3V1bWluZwogCSAqIHRo ZSByZWxhdGlvbi4KIAkgKi8KLQlpZiAoR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHByc3Rh dGUtPnZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQorCWlmIChHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwo cHJzdGF0ZS0+dmlzdGVzdCwgZGVhZF9hZnRlcikpCiAJCXJldHVybiBIRUFQVFVQTEVfREVBRDsK IAogCXJldHVybiByZXM7CkBAIC0xNzkwLDcgKzE3OTAsNyBAQCBoZWFwX3BydW5lX3JlY29yZF91 bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0 TnVtYgogCQkJCS8qCiAJCQkJICogRm9yIG5vdyBhbHdheXMgdXNlIHByc3RhdGUtPmN1dG9mZnMg Zm9yIHRoaXMgdGVzdCwgYmVjYXVzZQogCQkJCSAqIHdlIG9ubHkgdXBkYXRlICdhbGxfdmlzaWJs ZScgYW5kICdhbGxfZnJvemVuJyB3aGVuIGZyZWV6aW5nCi0JCQkJICogaXMgcmVxdWVzdGVkLiBX ZSBjb3VsZCB1c2UgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkCisJCQkJICogaXMgcmVxdWVz dGVkLiBXZSBjb3VsZCB1c2UgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkKIAkJCQkgKiBpbnN0 ZWFkLCBpZiBhIG5vbi1mcmVlemluZyBjYWxsZXIgd2FudGVkIHRvIHNldCB0aGUgVk0gYml0Lgog CQkJCSAqLwogCQkJCUFzc2VydChwcnN0YXRlLT5jdXRvZmZzKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvc3Bn aXN0L3NwZ3ZhY3V1bS5jCmluZGV4IDcxZWYyZTUwMzZmLi4xYzBlYjQyNWVlOSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYworKysgYi9zcmMvYmFja2Vu ZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jCkBAIC01MzYsNyArNTM2LDcgQEAgdmFjdXVtUmVk aXJlY3RBbmRQbGFjZWhvbGRlcihSZWxhdGlvbiBpbmRleCwgUmVsYXRpb24gaGVhcHJlbCwgQnVm ZmVyIGJ1ZmZlcikKIAkJICovCiAJCWlmIChkdC0+dHVwc3RhdGUgPT0gU1BHSVNUX1JFRElSRUNU ICYmCiAJCQkoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGR0LT54aWQpIHx8Ci0JCQkgR2xvYmFsVmlz VGVzdElzUmVtb3ZhYmxlWGlkKHZpc3Rlc3QsIGR0LT54aWQpKSkKKwkJCSBHbG9iYWxWaXNYaWRW aXNpYmxlVG9BbGwodmlzdGVzdCwgZHQtPnhpZCkpKQogCQl7CiAJCQlkdC0+dHVwc3RhdGUgPSBT UEdJU1RfUExBQ0VIT0xERVI7CiAJCQlBc3NlcnQob3BhcXVlLT5uUmVkaXJlY3Rpb24gPiAwKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKaW5kZXggMjAwZjcyYzZlMjUuLjIzNWMzYjU4 NGY2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYworKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwpAQCAtNDE4MSw4ICs0MTgxLDcg QEAgR2xvYmFsVmlzVXBkYXRlKHZvaWQpCiAgKiBTZWUgY29tbWVudCBmb3IgR2xvYmFsVmlzU3Rh dGUgZm9yIGRldGFpbHMuCiAgKi8KIGJvb2wKLUdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxY aWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLAotCQkJCQkJCQlGdWxsVHJhbnNhY3Rpb25JZCBmeGlk KQorR2xvYmFsVmlzRnVsbFhpZFZpc2libGVUb0FsbChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIEZ1 bGxUcmFuc2FjdGlvbklkIGZ4aWQpCiB7CiAJLyoKIAkgKiBJZiBmeGlkIGlzIG9sZGVyIHRoYW4g bWF5YmVfbmVlZGVkIGJvdW5kLCBpdCBkZWZpbml0ZWx5IGlzIHZpc2libGUgdG8KQEAgLTQyMTYs MTQgKzQyMTUsMTQgQEAgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlRnVsbFhpZChHbG9iYWxWaXNT dGF0ZSAqc3RhdGUsCiB9CiAKIC8qCi0gKiBXcmFwcGVyIGFyb3VuZCBHbG9iYWxWaXNUZXN0SXNS ZW1vdmFibGVGdWxsWGlkKCkgZm9yIDMyYml0IHhpZHMuCisgKiBXcmFwcGVyIGFyb3VuZCBHbG9i YWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKCkgZm9yIDMyYml0IHhpZHMuCiAgKgogICogSXQgaXMg Y3J1Y2lhbCB0aGF0IHRoaXMgb25seSBnZXRzIGNhbGxlZCBmb3IgeGlkcyBmcm9tIGEgc291cmNl IHRoYXQKICAqIHByb3RlY3RzIGFnYWluc3QgeGlkIHdyYXBhcm91bmRzIChlLmcuIGZyb20gYSB0 YWJsZSBhbmQgdGh1cyBwcm90ZWN0ZWQgYnkKICAqIHJlbGZyb3plbnhpZCkuCiAgKi8KIGJvb2wK LUdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIFRyYW5z YWN0aW9uSWQgeGlkKQorR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKEdsb2JhbFZpc1N0YXRlICpz dGF0ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCiB7CiAJRnVsbFRyYW5zYWN0aW9uSWQgZnhpZDsKIApA QCAtNDIzNywxMiArNDIzNiwxMiBAQCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoR2xvYmFs VmlzU3RhdGUgKnN0YXRlLCBUcmFuc2FjdGlvbklkIHhpZCkKIAkgKi8KIAlmeGlkID0gRnVsbFhp ZFJlbGF0aXZlVG8oc3RhdGUtPmRlZmluaXRlbHlfbmVlZGVkLCB4aWQpOwogCi0JcmV0dXJuIEds b2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoc3RhdGUsIGZ4aWQpOworCXJldHVybiBHbG9i YWxWaXNGdWxsWGlkVmlzaWJsZVRvQWxsKHN0YXRlLCBmeGlkKTsKIH0KIAogLyoKICAqIENvbnZl bmllbmNlIHdyYXBwZXIgYXJvdW5kIEdsb2JhbFZpc1Rlc3RGb3IoKSBhbmQKLSAqIEdsb2JhbFZp c1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgorICogR2xvYmFs VmlzRnVsbFhpZFZpc2libGVUb0FsbCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCiAgKi8KIGJvb2wK IEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1bGxUcmFuc2Fj dGlvbklkIGZ4aWQpCkBAIC00MjUxLDEyICs0MjUwLDEyIEBAIEdsb2JhbFZpc0NoZWNrUmVtb3Zh YmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQpCiAKIAlzdGF0 ZSA9IEdsb2JhbFZpc1Rlc3RGb3IocmVsKTsKIAotCXJldHVybiBHbG9iYWxWaXNUZXN0SXNSZW1v dmFibGVGdWxsWGlkKHN0YXRlLCBmeGlkKTsKKwlyZXR1cm4gR2xvYmFsVmlzRnVsbFhpZFZpc2li bGVUb0FsbChzdGF0ZSwgZnhpZCk7CiB9CiAKIC8qCiAgKiBDb252ZW5pZW5jZSB3cmFwcGVyIGFy b3VuZCBHbG9iYWxWaXNUZXN0Rm9yKCkgYW5kCi0gKiBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVY aWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgorICogR2xvYmFsVmlzVGVzdElzVmlzaWJsZVhpZCgp LCBzZWUgdGhlaXIgY29tbWVudHMuCiAgKi8KIGJvb2wKIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxl WGlkKFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpCkBAIC00MjY1LDcgKzQyNjQsNyBA QCBHbG9iYWxWaXNDaGVja1JlbW92YWJsZVhpZChSZWxhdGlvbiByZWwsIFRyYW5zYWN0aW9uSWQg eGlkKQogCiAJc3RhdGUgPSBHbG9iYWxWaXNUZXN0Rm9yKHJlbCk7CiAKLQlyZXR1cm4gR2xvYmFs VmlzVGVzdElzUmVtb3ZhYmxlWGlkKHN0YXRlLCB4aWQpOworCXJldHVybiBHbG9iYWxWaXNYaWRW aXNpYmxlVG9BbGwoc3RhdGUsIHhpZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS91dGlscy9zbmFwbWdyLmggYi9zcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmgKaW5kZXggNjA0 YzFmOTAyMTYuLmEwZWEyY2ZjZWEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9zbmFw bWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc25hcG1nci5oCkBAIC0xMDAsOCArMTAwLDgg QEAgZXh0ZXJuIGNoYXIgKkV4cG9ydFNuYXBzaG90KFNuYXBzaG90IHNuYXBzaG90KTsKICAqLwog dHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFsVmlzU3RhdGU7CiBleHRlcm4gR2xv YmFsVmlzU3RhdGUgKkdsb2JhbFZpc1Rlc3RGb3IoUmVsYXRpb24gcmVsKTsKLWV4dGVybiBib29s IEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIFRyYW5z YWN0aW9uSWQgeGlkKTsKLWV4dGVybiBib29sIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZUZ1bGxY aWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlkKTsKK2V4dGVy biBib29sIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIFRy YW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBib29sIEdsb2JhbFZpc0Z1bGxYaWRWaXNpYmxlVG9B bGwoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlkKTsKIGV4dGVy biBib29sIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rp b25JZCB4aWQpOwogZXh0ZXJuIGJvb2wgR2xvYmFsVmlzQ2hlY2tSZW1vdmFibGVGdWxsWGlkKFJl bGF0aW9uIHJlbCwgRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCk7CiAKLS0gCjIuNDMuMAoK --0000000000001ceba70645144821 Content-Type: text/x-patch; charset="UTF-8"; name="v23-0009-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Disposition: attachment; filename="v23-0009-Use-GlobalVisState-in-vacuum-to-determine-page-l.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miqm09318 RnJvbSBjNzVmN2QxMjgxZmFkZjVjNDllMzc1NzdlZjQyZmY5NmI5MmIzZjU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM4OjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjMgMDkvMTRdIFVzZSBHbG9iYWxWaXNTdGF0ZSBpbiB2YWN1dW0gdG8gZGV0ZXJtaW5l IHBhZ2UKIGxldmVsIHZpc2liaWxpdHkKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0 ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQK CkR1cmluZyB2YWN1dW0ncyBmaXJzdCBhbmQgdGhpcmQgcGhhc2VzLCB3ZSBleGFtaW5lIHR1cGxl cycgdmlzaWJpbGl0eQp0byBkZXRlcm1pbmUgaWYgd2UgY2FuIHNldCB0aGUgcGFnZSBhbGwtdmlz aWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCgpQcmV2aW91c2x5LCB0aGlzIGNoZWNrIGNvbXBh cmVkIHR1cGxlIHhtaW5zIGFnYWluc3QgYSBzaW5nbGUgWElEIGNob3NlbiBhdAp0aGUgc3RhcnQg b2YgdmFjdXVtIChPbGRlc3RYbWluKS4gV2Ugbm93IHVzZSBHbG9iYWxWaXNTdGF0ZSwgd2hpY2gg YWxzbwplbmFibGVzIGZ1dHVyZSB3b3JrIHRvIHNldCB0aGUgVk0gZHVyaW5nIG9uLWFjY2VzcyBw cnVuaW5nLCBzaW5jZSBvcmRpbmFyeQpxdWVyaWVzIGhhdmUgYWNjZXNzIHRvIEdsb2JhbFZpc1N0 YXRlIGJ1dCBub3QgT2xkZXN0WG1pbi4KClRoaXMgYWxzbyBiZW5lZml0cyB2YWN1dW0gZGlyZWN0 bHk6IGluIHNvbWUgY2FzZXMsIEdsb2JhbFZpc1N0YXRlIG1heQphZHZhbmNlIGR1cmluZyBhIHZh Y3V1bSwgYWxsb3dpbmcgbW9yZSBwYWdlcyB0byBiZWNvbWUgY29uc2lkZXJlZAphbGwtdmlzaWJs ZS4gQW5kLCBpbiB0aGUgZnV0dXJlLCB3ZSBjb3VsZCBlYXNpbHkgYWRkIGEgaGV1cmlzdGljIHRv CnVwZGF0ZSBHbG9iYWxWaXNTdGF0ZSBtb3JlIGZyZXF1ZW50bHkgZHVyaW5nIHZhY3V1bXMgb2Yg bGFyZ2UgdGFibGVzLiBJbgp0aGUgcmFyZSBjYXNlIHRoYXQgdGhlIEdsb2JhbFZpc1N0YXRlIG1v dmVzIGJhY2t3YXJkLCB2YWN1dW0gZmFsbHMgYmFjawp0byBPbGRlc3RYbWluIHRvIGVuc3VyZSB3 ZSBkb27igJl0IGF0dGVtcHQgdG8gZnJlZXplIGEgZGVhZCB0dXBsZSB0aGF0Cndhc27igJl0IHll dCBwcnVuYWJsZSBhY2NvcmRpbmcgdG8gdGhlIEdsb2JhbFZpc1N0YXRlLgoKQmVjYXVzZSBjb21w YXJpbmcgYSB0cmFuc2FjdGlvbiBJRCBhZ2FpbnN0IEdsb2JhbFZpc1N0YXRlIGlzIG1vcmUKZXhw ZW5zaXZlIHRoYW4gY29tcGFyaW5nIGFnYWluc3QgYSBzaW5nbGUgWElELCB3ZSBkZWZlciB0aGlz IGNoZWNrIHVudGlsCmFmdGVyIHNjYW5uaW5nIGFsbCB0dXBsZXMgb24gdGhlIHBhZ2UuIElmIHZp c2liaWxpdHlfY3V0b2ZmX3hpZCB3YXMKbWFpbnRhaW5lZCwgd2UgcGVyZm9ybSB0aGUgR2xvYmFs VmlzU3RhdGUgY2hlY2sgb25seSBvbmNlIHBlciBwYWdlLgpUaGlzIGlzIHNhZmUgYmVjYXVzZSB2 aXNpYmlsaXR5X2N1dG9mZl94aWQgcmVjb3JkcyB0aGUgbmV3ZXN0IHhtaW4gb24KdGhlIHBhZ2U7 IGlmIGl0IGlzIGdsb2JhbGx5IHZpc2libGUsIHRoZW4gdGhlIGVudGlyZSBwYWdlIGlzIGFsbC12 aXNpYmxlLgoKVGhpcyBhcHByb2FjaCBtYXkgcmVzdWx0IGluIGV4YW1pbmluZyBtb3JlIHR1cGxl IHhtaW5zIHRoYW4gYmVmb3JlLApzaW5jZSB3aXRoIE9sZGVzdFhtaW4gd2UgY291bGQgc29tZXRp bWVzIHJ1bGUgb3V0IHRoZSBwYWdlIGJlaW5nCmFsbC12aXNpYmxlIGVhcmxpZXIuIEhvd2V2ZXIs IHByb2ZpbGluZyBzaG93cyB0aGUgYWRkaXRpb25hbCBjb3N0IGlzIG5vdApzaWduaWZpY2FudC4K ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+ClJldmlld2Vk LWJ5OiBDaGFvIExpIDxsaS5ldmFuLmNoYW9AZ21haWwuY29tPgotLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMgfCAyOCArKysrKysrKysrKysrKwogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgICB8IDQzICsrKysrKysrKy0tLS0t LS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICAgICB8IDEw ICsrLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgICAgICAgIHwgMTEg KysrLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDU4IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCmluZGV4IDRl YmM4YWJkYmViLi5lZGQ1MjlkYzNjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX3Zpc2liaWxpdHkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFw YW1fdmlzaWJpbGl0eS5jCkBAIC0xMTg5LDYgKzExODksMzQgQEAgSGVhcFR1cGxlU2F0aXNmaWVz VmFjdXVtKEhlYXBUdXBsZSBodHVwLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAJcmV0dXJu IHJlczsKIH0KIAorLyoKKyAqIE5lYXJseSB0aGUgc2FtZSBhcyBIZWFwVHVwbGVTYXRpc2ZpZXNW YWN1dW0sIGJ1dCB1c2VzIGEgR2xvYmFsVmlzU3RhdGUgdG8KKyAqIGRldGVybWluZSB3aGV0aGVy IG9yIG5vdCBhIHR1cGxlIGlzIEhFQVBUVVBMRV9ERUFEIE9yCisgKiBIRUFQVFVQTEVfUkVDRU5U TFlfREVBRC4gSXQgc2VydmVzIHRoZSBzYW1lIHB1cnBvc2UgYnV0IGNhbiBiZSB1c2VkIGJ5Cisg KiBjYWxsZXJzIHRoYXQgaGF2ZSBub3QgY2FsY3VsYXRlZCBhIHNpbmdsZSBPbGRlc3RYbWluIHZh bHVlLgorICovCitIVFNWX1Jlc3VsdAorSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtR2xvYmFsVmlz KEhlYXBUdXBsZSBodHVwLCBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKKwkJCQkJCQkJICBCdWZm ZXIgYnVmZmVyKQoreworCVRyYW5zYWN0aW9uSWQgZGVhZF9hZnRlciA9IEludmFsaWRUcmFuc2Fj dGlvbklkOworCUhUU1ZfUmVzdWx0IHJlczsKKworCXJlcyA9IEhlYXBUdXBsZVNhdGlzZmllc1Zh Y3V1bUhvcml6b24oaHR1cCwgYnVmZmVyLCAmZGVhZF9hZnRlcik7CisKKwlpZiAocmVzID09IEhF QVBUVVBMRV9SRUNFTlRMWV9ERUFEKQorCXsKKwkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlk KGRlYWRfYWZ0ZXIpKTsKKworCQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHZpc3Rlc3Qs IGRlYWRfYWZ0ZXIpKQorCQkJcmVzID0gSEVBUFRVUExFX0RFQUQ7CisJfQorCWVsc2UKKwkJQXNz ZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChkZWFkX2FmdGVyKSk7CisKKwlyZXR1cm4gcmVzOwor fQorCiAvKgogICogV29yayBob3JzZSBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtIGFuZCBz aW1pbGFyIHJvdXRpbmVzLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXgg MWEzYzdjZjFlZjUuLmQ4MzZiYmVhZjUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwpAQCAtNDUwLDExICs0NTAsMTIgQEAgcHJ1bmVfZnJlZXplX3NldHVwKFBydW5lRnJlZXplUGFy YW1zICpwYXJhbXMsCiAKIAkvKgogCSAqIFRoZSB2aXNpYmlsaXR5IGN1dG9mZiB4aWQgaXMgdGhl IG5ld2VzdCB4bWluIG9mIGxpdmUsIGNvbW1pdHRlZCB0dXBsZXMKLQkgKiBvbGRlciB0aGFuIE9s ZGVzdFhtaW4gb24gdGhlIHBhZ2UuIFRoaXMgZmllbGQgaXMgb25seSBrZXB0IHVwLXRvLWRhdGUK LQkgKiBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4gQXMgc29vbiBhcyBhIHR1cGxlIGlzIGVu Y291bnRlcmVkIHRoYXQgaXMKLQkgKiBub3QgdmlzaWJsZSB0byBhbGwsIHRoaXMgZmllbGQgaXMg dW5tYWludGFpbmVkLiBBcyBsb25nIGFzIGl0IGlzCi0JICogbWFpbnRhaW5lZCwgaXQgY2FuIGJl IHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uCi0JICogd2hl biB1cGRhdGluZyB0aGUgVk0gYW5kL29yIGZyZWV6aW5nIGFsbCB0aGUgdHVwbGVzIG9uIHRoZSBw YWdlLgorCSAqIG9uIHRoZSBwYWdlIG9sZGVyIHRoYW4gdGhlIHZpc2liaWxpdHkgaG9yaXpvbiBy ZXByZXNlbnRlZCBpbiB0aGUKKwkgKiBHbG9iYWxWaXNTdGF0ZS4gVGhpcyBmaWVsZCBpcyBvbmx5 IGtlcHQgdXAtdG8tZGF0ZSBpZiB0aGUgcGFnZSBpcworCSAqIGFsbC12aXNpYmxlLiBBcyBzb29u IGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQgdGhhdCBpcyBub3QgdmlzaWJsZSB0bworCSAqIGFs bCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIEFzIGxvbmcgYXMgaXQgaXMgbWFpbnRhaW5l ZCwgaXQgY2FuIGJlCisJICogdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNuYXBzaG90IGNvbmZsaWN0 IGhvcml6b24gd2hlbiB1cGRhdGluZyB0aGUgVk0KKwkgKiBhbmQvb3IgZnJlZXppbmcgYWxsIHRo ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCiAJICovCiAJcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZf eGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiB9CkBAIC05ODAsMTQgKzk4MSwxMyBAQCBoZWFw X3BhZ2Vfd2lsbF9zZXRfdmlzKFJlbGF0aW9uIHJlbGF0aW9uLAogICovCiBzdGF0aWMgYm9vbAog aGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJ CSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkgR2xvYmFsVmlzU3RhdGUgKnZpc3Rl c3QsCiAJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKIAkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNp YmlsaXR5X2N1dG9mZl94aWQsCiAJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSkK IHsKIAotCXJldHVybiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUocmVsLCBidWYsCi0J CQkJCQkJCQkJICBPbGRlc3RYbWluLAorCXJldHVybiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zp c2libGUocmVsLCBidWYsIHZpc3Rlc3QsCiAJCQkJCQkJCQkJICBOVUxMLCAwLAogCQkJCQkJCQkJ CSAgYWxsX2Zyb3plbiwKIAkJCQkJCQkJCQkgIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKQEAgLTEw NzgsNiArMTA3OCwxNiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBh cmFtcyAqcGFyYW1zLAogCXBydW5lX2ZyZWV6ZV9wbGFuKFJlbGF0aW9uR2V0UmVsaWQocGFyYW1z LT5yZWxhdGlvbiksCiAJCQkJCSAgYnVmZmVyLCAmcHJzdGF0ZSwgb2ZmX2xvYyk7CiAKKwkvKgor CSAqIEFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZSwgaWYg dGhlIG5ld2VzdCB4bWluCisJICogYW1vbmdzdCB0aGVtIGlzIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5 b25lLCB0aGUgcGFnZSBjYW5ub3QgYmUKKwkgKiBhbGwtdmlzaWJsZS4KKwkgKi8KKwlpZiAocHJz dGF0ZS5hbGxfdmlzaWJsZSAmJgorCQlUcmFuc2FjdGlvbklkSXNOb3JtYWwocHJzdGF0ZS52aXNp YmlsaXR5X2N1dG9mZl94aWQpICYmCisJCSFHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwocHJzdGF0 ZS52aXN0ZXN0LCBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkpCisJCXByc3RhdGUuYWxs X3Zpc2libGUgPSBwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxzZTsKKwogCS8qCiAJICogSWYgY2hl Y2tzdW1zIGFyZSBlbmFibGVkLCBjYWxsaW5nIGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1bSgp IHdoaWxlCiAJICogY2hlY2tpbmcgdHVwbGUgdmlzaWJpbGl0eSBpbmZvcm1hdGlvbiBpbiBwcnVu ZV9mcmVlemVfcGxhbigpIG1heSBoYXZlCkBAIC0xMjU1LDEwICsxMjY1LDkgQEAgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJYm9vbAkJZGVi dWdfYWxsX2Zyb3plbjsKIAogCQlBc3NlcnQocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7Ci0J CUFzc2VydChwcnN0YXRlLmN1dG9mZnMpOwogCiAJCUFzc2VydChoZWFwX3BhZ2VfaXNfYWxsX3Zp c2libGUocGFyYW1zLT5yZWxhdGlvbiwgYnVmZmVyLAotCQkJCQkJCQkJCXByc3RhdGUuY3V0b2Zm cy0+T2xkZXN0WG1pbiwKKwkJCQkJCQkJCQlwcnN0YXRlLnZpc3Rlc3QsCiAJCQkJCQkJCQkJJmRl YnVnX2FsbF9mcm96ZW4sCiAJCQkJCQkJCQkJJmRlYnVnX2N1dG9mZiwgb2ZmX2xvYykpOwogCkBA IC0xNzg3LDIwICsxNzk2LDYgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1h bChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCQkgKi8KIAkJ CQl4bWluID0gSGVhcFR1cGxlSGVhZGVyR2V0WG1pbihodHVwKTsKIAotCQkJCS8qCi0JCQkJICog Rm9yIG5vdyBhbHdheXMgdXNlIHByc3RhdGUtPmN1dG9mZnMgZm9yIHRoaXMgdGVzdCwgYmVjYXVz ZQotCQkJCSAqIHdlIG9ubHkgdXBkYXRlICdhbGxfdmlzaWJsZScgYW5kICdhbGxfZnJvemVuJyB3 aGVuIGZyZWV6aW5nCi0JCQkJICogaXMgcmVxdWVzdGVkLiBXZSBjb3VsZCB1c2UgR2xvYmFsVmlz WGlkVmlzaWJsZVRvQWxsKCkKLQkJCQkgKiBpbnN0ZWFkLCBpZiBhIG5vbi1mcmVlemluZyBjYWxs ZXIgd2FudGVkIHRvIHNldCB0aGUgVk0gYml0LgotCQkJCSAqLwotCQkJCUFzc2VydChwcnN0YXRl LT5jdXRvZmZzKTsKLQkJCQlpZiAoIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWluLCBwcnN0YXRl LT5jdXRvZmZzLT5PbGRlc3RYbWluKSkKLQkJCQl7Ci0JCQkJCXByc3RhdGUtPmFsbF92aXNpYmxl ID0gZmFsc2U7Ci0JCQkJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKLQkJCQkJYnJlYWs7 Ci0JCQkJfQotCiAJCQkJLyogVHJhY2sgbmV3ZXN0IHhtaW4gb24gcGFnZS4gKi8KIAkJCQlpZiAo VHJhbnNhY3Rpb25JZEZvbGxvd3MoeG1pbiwgcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlk KSAmJgogCQkJCQlUcmFuc2FjdGlvbklkSXNOb3JtYWwoeG1pbikpCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKaW5kZXggNWQ4OGExNTkyZTMuLmMwZTEzNTBjYjExIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0yNzM1LDcgKzI3MzUsNyBAQCBsYXp5X3ZhY3V1 bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVy IGJ1ZmZlciwKIAkgKiBkb25lIG91dHNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24uCiAJICovCiAJ aWYgKGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmZmVyLAot CQkJCQkJCQkJICAgdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sCisJCQkJCQkJCQkgICB2YWNy ZWwtPnZpc3Rlc3QsCiAJCQkJCQkJCQkgICBkZWFkb2Zmc2V0cywgbnVtX29mZnNldHMsCiAJCQkJ CQkJCQkgICAmYWxsX2Zyb3plbiwgJnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKIAkJCQkJCQkJCSAg ICZ2YWNyZWwtPm9mZm51bSkpCkBAIC0zNDk1LDcgKzM0OTUsNyBAQCBkZWFkX2l0ZW1zX2NsZWFu dXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogICogUmV0dXJucyB0cnVlIGlmIHRoZSBwYWdlIGlzIGFs bC12aXNpYmxlIG90aGVyIHRoYW4gdGhlIHByb3ZpZGVkCiAgKiBkZWFkb2Zmc2V0cyBhbmQgZmFs c2Ugb3RoZXJ3aXNlLgogICoKLSAqIE9sZGVzdFhtaW4gaXMgdXNlZCB0byBkZXRlcm1pbmUgdmlz aWJpbGl0eS4KKyAqIHZpc3Rlc3QgaXMgdXNlZCB0byBkZXRlcm1pbmUgdmlzaWJpbGl0eS4KICAq CiAgKiBPdXRwdXQgcGFyYW1ldGVyczoKICAqCkBAIC0zNTExLDcgKzM1MTEsNyBAQCBkZWFkX2l0 ZW1zX2NsZWFudXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogICovCiBib29sCiBoZWFwX3BhZ2Vfd291 bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCSAgIFRy YW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkgICBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVz dCwKIAkJCQkJCQkgICBPZmZzZXROdW1iZXIgKmRlYWRvZmZzZXRzLAogCQkJCQkJCSAgIGludCBu ZGVhZG9mZnNldHMsCiAJCQkJCQkJICAgYm9vbCAqYWxsX2Zyb3plbiwKQEAgLTM1ODUsNyArMzU4 NSw3IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZl ciBidWYsCiAKIAkJLyogVmlzaWJpbGl0eSBjaGVja3MgbWF5IGRvIElPIG9yIGFsbG9jYXRlIG1l bW9yeSAqLwogCQlBc3NlcnQoQ3JpdFNlY3Rpb25Db3VudCA9PSAwKTsKLQkJc3dpdGNoIChIZWFw VHVwbGVTYXRpc2ZpZXNWYWN1dW0oJnR1cGxlLCBPbGRlc3RYbWluLCBidWYpKQorCQlzd2l0Y2gg KEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUdsb2JhbFZpcygmdHVwbGUsIHZpc3Rlc3QsIGJ1Zikp CiAJCXsKIAkJCWNhc2UgSEVBUFRVUExFX0xJVkU6CiAJCQkJewpAQCAtMzYwNCw3ICszNjA0LDcg QEAgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1 ZiwKIAkJCQkJICogdGhhdCBldmVyeW9uZSBzZWVzIGl0IGFzIGNvbW1pdHRlZD8KIAkJCQkJICov CiAJCQkJCXhtaW4gPSBIZWFwVHVwbGVIZWFkZXJHZXRYbWluKHR1cGxlLnRfZGF0YSk7Ci0JCQkJ CWlmICghVHJhbnNhY3Rpb25JZFByZWNlZGVzKHhtaW4sIE9sZGVzdFhtaW4pKQorCQkJCQlpZiAo IUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LCB4bWluKSkKIAkJCQkJewogCQkJCQkJ YWxsX3Zpc2libGUgPSBmYWxzZTsKIAkJCQkJCSphbGxfZnJvemVuID0gZmFsc2U7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVh cGFtLmgKaW5kZXggMTRjMWQ5MjYwNGQuLjQ3MDJlYzAwZGVhIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBA IC0yNzgsMTAgKzI3OCw5IEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUGFyYW1zCiAKIAkv KgogCSAqIENvbnRhaW5zIHRoZSBjdXRvZmZzIHVzZWQgZm9yIGZyZWV6aW5nLiBUaGV5IGFyZSBy ZXF1aXJlZCBpZiB0aGUKLQkgKiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQu IGN1dG9mZnMtPk9sZGVzdFhtaW4gaXMgYWxzbyB1c2VkCi0JICogdG8gZGV0ZXJtaW5lIGlmIGRl YWQgdHVwbGVzIGFyZSBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRCBvcgotCSAqIEhFQVBUVVBMRV9E RUFELiBDdXJyZW50bHkgb25seSB2YWN1dW0gcGFzc2VzIGluIGN1dG9mZnMuIFZhY3V1bQotCSAq IGNhbGN1bGF0ZXMgdGhlbSBvbmNlLCBhdCB0aGUgYmVnaW5uaW5nIG9mIHZhY3V1bWluZyB0aGUg cmVsYXRpb24uCisJICogSEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LiBDdXJy ZW50bHkgb25seSB2YWN1dW0gcGFzc2VzIGluCisJICogY3V0b2Zmcy4gVmFjdXVtIGNhbGN1bGF0 ZXMgdGhlbSBvbmNlLCBhdCB0aGUgYmVnaW5uaW5nIG9mIHZhY3V1bWluZyB0aGUKKwkgKiByZWxh dGlvbi4KIAkgKi8KIAlzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2ZmczsKIH0gUHJ1bmVGcmVl emVQYXJhbXM7CkBAIC00NDYsNyArNDQ1LDcgQEAgZXh0ZXJuIHZvaWQgbG9nX2hlYXBfcHJ1bmVf YW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIGV4dGVybiB2b2lk IGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsCiAJCQkJCQkJY29uc3QgVmFjdXVtUGFyYW1z IHBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5KTsKIGV4dGVybiBib29sIGhl YXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCi0J CQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJCQkJCSAgIEdsb2Jh bFZpc1N0YXRlICp2aXN0ZXN0LAogCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNl dHMsCiAJCQkJCQkJCQkJICAgaW50IG5kZWFkb2Zmc2V0cywKIAkJCQkJCQkJCQkgICBib29sICph bGxfZnJvemVuLApAQCAtNDYwLDYgKzQ1OSw4IEBAIGV4dGVybiBUTV9SZXN1bHQgSGVhcFR1cGxl U2F0aXNmaWVzVXBkYXRlKEhlYXBUdXBsZSBodHVwLCBDb21tYW5kSWQgY3VyY2lkLAogCQkJCQkJ CQkJCSAgQnVmZmVyIGJ1ZmZlcik7CiBleHRlcm4gSFRTVl9SZXN1bHQgSGVhcFR1cGxlU2F0aXNm aWVzVmFjdXVtKEhlYXBUdXBsZSBodHVwLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAJCQkJ CQkJCQkJCUJ1ZmZlciBidWZmZXIpOworZXh0ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlz Zmllc1ZhY3V1bUdsb2JhbFZpcyhIZWFwVHVwbGUgaHR1cCwKKwkJCQkJCQkJCQkJCQkgR2xvYmFs VmlzU3RhdGUgKnZpc3Rlc3QsIEJ1ZmZlciBidWZmZXIpOwogZXh0ZXJuIEhUU1ZfUmVzdWx0IEhl YXBUdXBsZVNhdGlzZmllc1ZhY3V1bUhvcml6b24oSGVhcFR1cGxlIGh0dXAsIEJ1ZmZlciBidWZm ZXIsCiAJCQkJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkICpkZWFkX2FmdGVyKTsKIGV4dGVybiB2 b2lkIEhlYXBUdXBsZVNldEhpbnRCaXRzKEhlYXBUdXBsZUhlYWRlciB0dXBsZSwgQnVmZmVyIGJ1 ZmZlciwKLS0gCjIuNDMuMAoK --0000000000001ceba70645144821 Content-Type: text/x-patch; charset="UTF-8"; name="v23-0010-Unset-all_visible-sooner-if-not-freezing.patch" Content-Disposition: attachment; filename="v23-0010-Unset-all_visible-sooner-if-not-freezing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miqm0brh9 RnJvbSAyMzIzNmZkNjlhYmJhNWQ0ODFmZjIyOGQwZmUxNDg2YmE0MGVkZGYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE0IE9jdCAyMDI1IDE1OjIyOjM1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjMgMTAvMTRdIFVuc2V0IGFsbF92aXNpYmxlIHNvb25lciBpZiBub3QgZnJlZXppbmcK TUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCkluIHRoZSBwcnVuZS9mcmVlemUgcGF0 aCwgd2UgY3VycmVudGx5IGRlbGF5IGNsZWFyaW5nIGFsbF92aXNpYmxlIGFuZAphbGxfZnJvemVu IGluIHRoZSBwcmVzZW5jZSBvZiBkZWFkIGl0ZW1zIHRvIGFsbG93IG9wcG9ydHVuaXN0aWMKZnJl ZXppbmcuCgpIb3dldmVyLCBpZiBubyBmcmVlemluZyB3aWxsIGJlIGF0dGVtcHRlZCwgdGhlcmXi gJlzIG5vIG5lZWQgdG8gZGVsYXkuCkNsZWFyaW5nIHRoZSBmbGFncyBlYXJsaWVyIGF2b2lkcyBl eHRyYSBib29ra2VlcGluZyBpbgpoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFs KCkuIFRoaXMgY3VycmVudGx5IGhhcyBubyBydW50aW1lCmVmZmVjdCBiZWNhdXNlIGFsbCBjYWxs ZXJzIHRoYXQgY29uc2lkZXIgc2V0dGluZyB0aGUgVk0gYWxzbyBwcmVwYXJlCmZyZWV6ZSBwbGFu cywgYnV0IHVwY29taW5nIGNoYW5nZXMgd2lsbCBhbGxvdyBvbi1hY2Nlc3MgcHJ1bmluZyB0byBz ZXQKdGhlIFZNIHdpdGhvdXQgZnJlZXppbmcuIFRoZSBleHRyYSBib29ra2VlcGluZyB3YXMgbm90 aWNlYWJsZSBpbiBhCnByb2ZpbGUgb2Ygb24tYWNjZXNzIFZNIHNldHRpbmcuCgpSZXZpZXdlZC1i eTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYyB8IDE1ICsrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQs IDEzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYwppbmRleCBkODM2YmJlYWY1Mi4uMDNiOGRkY2MzOGQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCkBAIC0xNjUzLDggKzE2NTMsMTMgQEAgaGVhcF9wcnVuZV9yZWNvcmRf ZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iZXIgb2ZmbnVtLAogCS8qCiAJICog RGVsaWJlcmF0ZWx5IGRlbGF5IHVuc2V0dGluZyBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB1 bnRpbCBsYXRlcgogCSAqIGR1cmluZyBwcnVuaW5nLiBSZW1vdmFibGUgZGVhZCB0dXBsZXMgc2hv dWxkbid0IHByZWNsdWRlIGZyZWV6aW5nIHRoZQotCSAqIHBhZ2UuCisJICogcGFnZS4gSWYgd2Ug d29uJ3QgYXR0ZW1wdCBmcmVlemluZywganVzdCB1bnNldCBhbGwtdmlzaWJsZSBub3csIHRob3Vn aC4KIAkgKi8KKwlpZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQorCXsKKwkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOworCX0K IAogCS8qIFJlY29yZCB0aGUgZGVhZCBvZmZzZXQgZm9yIHZhY3V1bSAqLwogCXByc3RhdGUtPmRl YWRvZmZzZXRzW3Byc3RhdGUtPmxwZGVhZF9pdGVtcysrXSA9IG9mZm51bTsKQEAgLTE5MTMsOCAr MTkxOCwxNCBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfZGVhZChQYWdlIHBhZ2Us IFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlcgogCSAqIFNpbWlsYXJseSwgZG9uJ3Qg dW5zZXQgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gdW50aWwgbGF0ZXIsIGF0IHRoZQogCSAq IGVuZCBvZiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLiAgVGhpcyB3aWxsIGFsbG93IHVz IHRvIGF0dGVtcHQgdG8KIAkgKiBmcmVlemUgdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFzIGxv bmcgYXMgd2UgdW5zZXQgaXQgYmVmb3JlIHVwZGF0aW5nCi0JICogdGhlIHZpc2liaWxpdHkgbWFw LCB0aGlzIHdpbGwgYmUgY29ycmVjdC4KKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoaXMgd2ls bCBiZSBjb3JyZWN0LiBJZiB3ZSB3b24ndCBhdHRlbXB0IGZyZWV6aW5nLAorCSAqIHRob3VnaCwg anVzdCB1bnNldCBhbGwtdmlzaWJsZSBub3cuCiAJICovCisJaWYgKCFwcnN0YXRlLT5hdHRlbXB0 X2ZyZWV6ZSkKKwl7CisJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCXByc3RhdGUt PmFsbF9mcm96ZW4gPSBmYWxzZTsKKwl9CiAKIAkvKiBSZWNvcmQgdGhlIGRlYWQgb2Zmc2V0IGZv ciB2YWN1dW0gKi8KIAlwcnN0YXRlLT5kZWFkb2Zmc2V0c1twcnN0YXRlLT5scGRlYWRfaXRlbXMr K10gPSBvZmZudW07Ci0tIAoyLjQzLjAKCg== --0000000000001ceba70645144821 Content-Type: text/x-patch; charset="US-ASCII"; name="v23-0011-Track-which-relations-are-modified-by-a-query.patch" Content-Disposition: attachment; filename="v23-0011-Track-which-relations-are-modified-by-a-query.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miqm0mgz10 RnJvbSBiZTBmMjgwNTc4NmJhMGQ0NzExYzM5ZmU0ODk2YTNkNmY1MWZlYmExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MDc6MjQgLTA1MDAKU3ViamVjdDogW1BB VENIIHYyMyAxMS8xNF0gVHJhY2sgd2hpY2ggcmVsYXRpb25zIGFyZSBtb2RpZmllZCBieSBhIHF1 ZXJ5CgpTYXZlIHRoZSByZWxpZHMgaW4gYSBiaXRtYXAgaW4gdGhlIGVzdGF0ZS4gQSBsYXRlciBj b21taXQgd2lsbCBwYXNzIHRoaXMKaW5mb3JtYXRpb24gZG93biB0byBzY2FuIG5vZGVzIHRvIGNv bnRyb2wgd2hldGhlciBvciBub3QgdGhlIHNjYW4gYWxsb3dzCnNldHRpbmcgdGhlIHZpc2liaWxp dHkgbWFwIHdoaWxlIG9uLWFjY2VzcyBwcnVuaW5nLiBXZSBkb24ndCB3YW50IHRvIHNldAp0aGUg dmlzaWJpbGl0eSBtYXAgaWYgdGhlIHF1ZXJ5IGlzIGp1c3QgZ29pbmcgdG8gbW9kaWZ5IHRoZSBw YWdlCmltbWVkaWF0ZWx5IGFmdGVyLgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWlu LmMgIHwgNCArKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyB8IDIgKysKIHNy Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgIHwgNiArKysrKysKIDMgZmlsZXMgY2hhbmdl ZCwgMTIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDI3YzllZWM2 OTdiLi4wNjMwYTVhZjc5ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBAIC05MTYsNiArOTE2 LDEwIEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCQkJCQli cmVhazsKIAkJCX0KIAorCQkJLyogSWYgaXQgaGFzIGEgcm93bWFyaywgdGhlIHJlbGF0aW9uIGlz IG1vZGlmaWVkICovCisJCQllc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyA9IGJtc19hZGRfbWVt YmVyKGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzLAorCQkJCQkJCQkJCQkJCQlyYy0+cnRpKTsK KwogCQkJLyogQ2hlY2sgdGhhdCByZWxhdGlvbiBpcyBhIGxlZ2FsIHRhcmdldCBmb3IgbWFya2lu ZyAqLwogCQkJaWYgKHJlbGF0aW9uKQogCQkJCUNoZWNrVmFsaWRSb3dNYXJrUmVsKHJlbGF0aW9u LCByYy0+bWFya1R5cGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRpbHMuYwppbmRleCBmZGM2NWMyYjQy Yi4uMjhhMDZkY2QyNDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jCkBAIC04OTMsNiArODkz LDggQEAgRXhlY0luaXRSZXN1bHRSZWxhdGlvbihFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbywKIAkJZXN0YXRlLT5lc19yZXN1bHRfcmVsYXRpb25zID0gKFJlc3Vs dFJlbEluZm8gKiopCiAJCQlwYWxsb2MwKGVzdGF0ZS0+ZXNfcmFuZ2VfdGFibGVfc2l6ZSAqIHNp emVvZihSZXN1bHRSZWxJbmZvICopKTsKIAllc3RhdGUtPmVzX3Jlc3VsdF9yZWxhdGlvbnNbcnRp IC0gMV0gPSByZXN1bHRSZWxJbmZvOworCWVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzID0gYm1z X2FkZF9tZW1iZXIoZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMsCisJCQkJCQkJCQkJCQlydGkp OwogCiAJLyoKIAkgKiBTYXZpbmcgaW4gdGhlIGxpc3QgYWxsb3dzIHRvIGF2b2lkIG5lZWRsZXNz bHkgdHJhdmVyc2luZyB0aGUgd2hvbGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggNjRmZjY5OTY0 MzEuLjdmNjUyMmNlYThlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjc2LDYgKzY3NiwxMiBA QCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkJCQkJCQkJCSAqIEV4ZWNEb0luaXRpYWxQcnVuaW5n KCkgKi8KIAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBmcm9tIFF1 ZXJ5RGVzYyAqLwogCisJLyoKKwkgKiBSVCBpbmRleGVzIG9mIHJlbGF0aW9ucyBtb2RpZmllZCBi eSB0aGUgcXVlcnkgZWl0aGVyIHRocm91Z2gKKwkgKiBVUERBVEUvREVMRVRFL0lOU0VSVC9NRVJH RSBvciBTRUxFQ1QgRk9SIFVQREFURQorCSAqLworCUJpdG1hcHNldCAgKmVzX21vZGlmaWVkX3Jl bGlkczsKKwogCUp1bmtGaWx0ZXIgKmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1sZXZlbCBqdW5rIGZp bHRlciwgaWYgYW55ICovCiAKIAkvKiBJZiBxdWVyeSBjYW4gaW5zZXJ0L2RlbGV0ZSB0dXBsZXMs IHRoZSBjb21tYW5kIElEIHRvIG1hcmsgdGhlbSB3aXRoICovCi0tIAoyLjQzLjAKCg== --0000000000001ceba70645144821 Content-Type: text/x-patch; charset="US-ASCII"; name="v23-0012-Pass-down-information-on-table-modification-to-s.patch" Content-Disposition: attachment; filename="v23-0012-Pass-down-information-on-table-modification-to-s.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miqm0sgv11 RnJvbSA4MDQyOTZkZGJiNmIzNTUzZDM3NDkyZDJmNzlkMDM0ZGY3MWZkM2U1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MTI6MTggLTA1MDAKU3ViamVjdDogW1BB VENIIHYyMyAxMi8xNF0gUGFzcyBkb3duIGluZm9ybWF0aW9uIG9uIHRhYmxlIG1vZGlmaWNhdGlv biB0byBzY2FuCiBub2RlCgpQYXNzIGRvd24gaW5mb3JtYXRpb24gdG8gc2VxdWVudGlhbCBzY2Fu LCBpbmRleCBzY2FuLCBhbmQgYml0bWFwIHRhYmxlCnNjYW4gbm9kZXMgb24gd2hldGhlciBvciBu b3QgdGhlIHF1ZXJ5IG1vZGlmaWVzIHRoZSByZWxhdGlvbiBiZWluZwpzY2FubmVkLiBBIGxhdGVy IGNvbW1pdCB3aWxsIHVzZSB0aGlzIGluZm9ybWF0aW9uIHRvIHVwZGF0ZSB0aGUgVk0KZHVyaW5n IG9uLWFjY2VzcyBwcnVuaW5nIG9ubHkgaWYgdGhlIHJlbGF0aW9uIGlzIG5vdCBtb2RpZmllZCBi eSB0aGUKcXVlcnkuCi0tLQogY29udHJpYi9wZ3Jvd2xvY2tzL3Bncm93bG9ja3MuYyAgICAgICAg ICAgfCAgMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jICAgICAgICAgICAgfCAg MyArKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5zZXJ0LmMgICAgICAgIHwgIDMgKyst CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICB8ICA3ICsrKy0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2dlbmFtLmMgICAgICAgICAgfCAgNCArKy0tCiBzcmMv YmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jICAgICAgICB8ICA2ICsrKy0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RhYmxlL3RhYmxlYW0uYyAgICAgICAgfCAgNyArKystLS0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvbnN0cmFpbnQuYyAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L2NvcHl0by5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jICAgICAgICAgIHwgIDQgKystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMu YyAgICAgICAgICAgfCAgNCArKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcu YyAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyAg ICB8ICA4ICsrKy0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5j IHwgIDkgKysrKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMg IHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyAgICAgIHwgMTEg KysrKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyAgICAgICAgfCAy NiArKysrKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRi b3VuZHMuYyAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMgICAg ICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggICAgICAgICAgICAgICAg fCAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgfCAgNiAr KysrKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggICAgICAgICAgICAgIHwgMTkgKysr KysrKysrKy0tLS0tLS0KIDIzIGZpbGVzIGNoYW5nZWQsIDkxIGluc2VydGlvbnMoKyksIDQ0IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdyb3dsb2Nrcy9wZ3Jvd2xvY2tzLmMg Yi9jb250cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jCmluZGV4IGY4ODI2OTMzMmI2Li4yN2Yw MWQ4MDU1ZiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3Jvd2xvY2tzL3Bncm93bG9ja3MuYworKysg Yi9jb250cmliL3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jCkBAIC0xMTQsNyArMTE0LDcgQEAgcGdy b3dsb2NrcyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFt ZShyZWwpKTsKIAogCS8qIFNjYW4gdGhlIHJlbGF0aW9uICovCi0Jc2NhbiA9IHRhYmxlX2JlZ2lu c2NhbihyZWwsIEdldEFjdGl2ZVNuYXBzaG90KCksIDAsIE5VTEwpOworCXNjYW4gPSB0YWJsZV9i ZWdpbnNjYW4ocmVsLCBHZXRBY3RpdmVTbmFwc2hvdCgpLCAwLCBOVUxMLCAwKTsKIAloc2NhbiA9 IChIZWFwU2NhbkRlc2MpIHNjYW47CiAKIAlhdHRpbm1ldGEgPSBUdXBsZURlc2NHZXRBdHRJbk1l dGFkYXRhKHJzaW5mby0+c2V0RGVzYyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv YnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKaW5kZXggY2IzMzMx OTIxY2IuLmI5NjEzNzg3Yjg1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2JyaW4vYnJpbi5jCkBAIC0yODQyLDcgKzI4 NDIsOCBAQCBfYnJpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChCcmluQnVpbGRTdGF0ZSAqc3Rh dGUsCiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gYnJpbnNoYXJlZC0+aXNjb25jdXJyZW50 OwogCiAJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChoZWFwLAotCQkJCQkJCQkJUGFy YWxsZWxUYWJsZVNjYW5Gcm9tQnJpblNoYXJlZChicmluc2hhcmVkKSk7CisJCQkJCQkJCQlQYXJh bGxlbFRhYmxlU2NhbkZyb21CcmluU2hhcmVkKGJyaW5zaGFyZWQpLAorCQkJCQkJCQkJMCk7CiAK IAlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGhlYXAsIGluZGV4LCBpbmRleElu Zm8sIHRydWUsIHRydWUsCiAJCQkJCQkJCQkgICBicmluYnVpbGRDYWxsYmFja1BhcmFsbGVsLCBz dGF0ZSwgc2Nhbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbmluc2Vy dC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwppbmRleCBmODdjNjBhMjMw Yy4uNjQ1Njg4ZjkyNDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2luaW5z ZXJ0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW5pbnNlcnQuYwpAQCAtMjA1OCw3 ICsyMDU4LDggQEAgX2dpbl9wYXJhbGxlbF9zY2FuX2FuZF9idWlsZChHaW5CdWlsZFN0YXRlICpz dGF0ZSwKIAlpbmRleEluZm8tPmlpX0NvbmN1cnJlbnQgPSBnaW5zaGFyZWQtPmlzY29uY3VycmVu dDsKIAogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoaGVhcCwKLQkJCQkJCQkJCVBh cmFsbGVsVGFibGVTY2FuRnJvbUdpbkJ1aWxkU2hhcmVkKGdpbnNoYXJlZCkpOworCQkJCQkJCQkJ UGFyYWxsZWxUYWJsZVNjYW5Gcm9tR2luQnVpbGRTaGFyZWQoZ2luc2hhcmVkKSwKKwkJCQkJCQkJ CTApOwogCiAJcmVsdHVwbGVzID0gdGFibGVfaW5kZXhfYnVpbGRfc2NhbihoZWFwLCBpbmRleCwg aW5kZXhJbmZvLCB0cnVlLCBwcm9ncmVzcywKIAkJCQkJCQkJCSAgIGdpbkJ1aWxkQ2FsbGJhY2tQ YXJhbGxlbCwgc3RhdGUsIHNjYW4pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5k bGVyLmMKaW5kZXggYmNiYWM4NDRiYjYuLmQ3ZmFjOTQ4MjZkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTc5LDEyICs3OSwxMyBAQCBoZWFwYW1fc2xvdF9j YWxsYmFja3MoUmVsYXRpb24gcmVsYXRpb24pCiAgKi8KIAogc3RhdGljIEluZGV4RmV0Y2hUYWJs ZURhdGEgKgotaGVhcGFtX2luZGV4X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCkKK2hlYXBhbV9p bmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWwsIHVpbnQzMiBmbGFncykKIHsKIAlJbmRleEZl dGNoSGVhcERhdGEgKmhzY2FuID0gcGFsbG9jMChzaXplb2YoSW5kZXhGZXRjaEhlYXBEYXRhKSk7 CiAKIAloc2Nhbi0+eHNfYmFzZS5yZWwgPSByZWw7CiAJaHNjYW4tPnhzX2NidWYgPSBJbnZhbGlk QnVmZmVyOworCWhzY2FuLT5tb2RpZmllc19iYXNlX3JlbCA9ICEoZmxhZ3MgJiBTT19ISU5UX1JF TF9SRUFEX09OTFkpOwogCiAJcmV0dXJuICZoc2Nhbi0+eHNfYmFzZTsKIH0KQEAgLTc1Myw3ICs3 NTQsNyBAQCBoZWFwYW1fcmVsYXRpb25fY29weV9mb3JfY2x1c3RlcihSZWxhdGlvbiBPbGRIZWFw LCBSZWxhdGlvbiBOZXdIZWFwLAogCiAJCXRhYmxlU2NhbiA9IE5VTEw7CiAJCWhlYXBTY2FuID0g TlVMTDsKLQkJaW5kZXhTY2FuID0gaW5kZXhfYmVnaW5zY2FuKE9sZEhlYXAsIE9sZEluZGV4LCBT bmFwc2hvdEFueSwgTlVMTCwgMCwgMCk7CisJCWluZGV4U2NhbiA9IGluZGV4X2JlZ2luc2NhbihP bGRIZWFwLCBPbGRJbmRleCwgU25hcHNob3RBbnksIE5VTEwsIDAsIDAsIDApOwogCQlpbmRleF9y ZXNjYW4oaW5kZXhTY2FuLCBOVUxMLCAwLCBOVUxMLCAwKTsKIAl9CiAJZWxzZQpAQCAtNzYyLDcg Kzc2Myw3IEBAIGhlYXBhbV9yZWxhdGlvbl9jb3B5X2Zvcl9jbHVzdGVyKFJlbGF0aW9uIE9sZEhl YXAsIFJlbGF0aW9uIE5ld0hlYXAsCiAJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJP R1JFU1NfQ0xVU1RFUl9QSEFTRSwKIAkJCQkJCQkJCSBQUk9HUkVTU19DTFVTVEVSX1BIQVNFX1NF UV9TQ0FOX0hFQVApOwogCi0JCXRhYmxlU2NhbiA9IHRhYmxlX2JlZ2luc2NhbihPbGRIZWFwLCBT bmFwc2hvdEFueSwgMCwgKFNjYW5LZXkpIE5VTEwpOworCQl0YWJsZVNjYW4gPSB0YWJsZV9iZWdp bnNjYW4oT2xkSGVhcCwgU25hcHNob3RBbnksIDAsIChTY2FuS2V5KSBOVUxMLCAwKTsKIAkJaGVh cFNjYW4gPSAoSGVhcFNjYW5EZXNjKSB0YWJsZVNjYW47CiAJCWluZGV4U2NhbiA9IE5VTEw7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9nZW5hbS5jIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2luZGV4L2dlbmFtLmMKaW5kZXggYzk2OTE3MDg1YzIuLjlkNDI1NTA0ZTFiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaW5kZXgvZ2VuYW0uYwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHN5c3RhYmxlX2Jl Z2luc2NhbihSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCX0KIAogCQlzeXNzY2FuLT5pc2NhbiA9 IGluZGV4X2JlZ2luc2NhbihoZWFwUmVsYXRpb24sIGlyZWwsCi0JCQkJCQkJCQkJIHNuYXBzaG90 LCBOVUxMLCBua2V5cywgMCk7CisJCQkJCQkJCQkJIHNuYXBzaG90LCBOVUxMLCBua2V5cywgMCwg MCk7CiAJCWluZGV4X3Jlc2NhbihzeXNzY2FuLT5pc2NhbiwgaWR4a2V5LCBua2V5cywgTlVMTCwg MCk7CiAJCXN5c3NjYW4tPnNjYW4gPSBOVUxMOwogCkBAIC03MDgsNyArNzA4LDcgQEAgc3lzdGFi bGVfYmVnaW5zY2FuX29yZGVyZWQoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCX0KIAogCXN5c3Nj YW4tPmlzY2FuID0gaW5kZXhfYmVnaW5zY2FuKGhlYXBSZWxhdGlvbiwgaW5kZXhSZWxhdGlvbiwK LQkJCQkJCQkJCSBzbmFwc2hvdCwgTlVMTCwgbmtleXMsIDApOworCQkJCQkJCQkJIHNuYXBzaG90 LCBOVUxMLCBua2V5cywgMCwgMCk7CiAJaW5kZXhfcmVzY2FuKHN5c3NjYW4tPmlzY2FuLCBpZHhr ZXksIG5rZXlzLCBOVUxMLCAwKTsKIAlzeXNzY2FuLT5zY2FuID0gTlVMTDsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy9pbmRleC9pbmRleGFtLmMKaW5kZXggMDQ5MmQ5MmQyM2IuLmI1NTIzY2YyYWIxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKQEAgLTI1Nyw3ICsyNTcsNyBAQCBpbmRleF9iZWdpbnNj YW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCVJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJ CQkJU25hcHNob3Qgc25hcHNob3QsCiAJCQkJSW5kZXhTY2FuSW5zdHJ1bWVudGF0aW9uICppbnN0 cnVtZW50LAotCQkJCWludCBua2V5cywgaW50IG5vcmRlcmJ5cykKKwkJCQlpbnQgbmtleXMsIGlu dCBub3JkZXJieXMsIHVpbnQzMiBmbGFncykKIHsKIAlJbmRleFNjYW5EZXNjIHNjYW47CiAKQEAg LTI4NCw3ICsyODQsNyBAQCBpbmRleF9iZWdpbnNjYW4oUmVsYXRpb24gaGVhcFJlbGF0aW9uLAog CXNjYW4tPmluc3RydW1lbnQgPSBpbnN0cnVtZW50OwogCiAJLyogcHJlcGFyZSB0byBmZXRjaCBp bmRleCBtYXRjaGVzIGZyb20gdGFibGUgKi8KLQlzY2FuLT54c19oZWFwZmV0Y2ggPSB0YWJsZV9p bmRleF9mZXRjaF9iZWdpbihoZWFwUmVsYXRpb24pOworCXNjYW4tPnhzX2hlYXBmZXRjaCA9IHRh YmxlX2luZGV4X2ZldGNoX2JlZ2luKGhlYXBSZWxhdGlvbiwgZmxhZ3MpOwogCiAJcmV0dXJuIHNj YW47CiB9CkBAIC02MTUsNyArNjE1LDcgQEAgaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0 aW9uIGhlYXByZWwsIFJlbGF0aW9uIGluZGV4cmVsLAogCXNjYW4tPmluc3RydW1lbnQgPSBpbnN0 cnVtZW50OwogCiAJLyogcHJlcGFyZSB0byBmZXRjaCBpbmRleCBtYXRjaGVzIGZyb20gdGFibGUg Ki8KLQlzY2FuLT54c19oZWFwZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihoZWFwcmVs KTsKKwlzY2FuLT54c19oZWFwZmV0Y2ggPSB0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihoZWFwcmVs LCAwKTsKIAogCXJldHVybiBzY2FuOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwpp bmRleCA0NTRhZGFlZTdkYy4uMDJhYjAyMzNlNTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9uYnRyZWUvbmJ0c29ydC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0 c29ydC5jCkBAIC0xOTI1LDcgKzE5MjUsNyBAQCBfYnRfcGFyYWxsZWxfc2Nhbl9hbmRfc29ydChC VFNwb29sICpidHNwb29sLCBCVFNwb29sICpidHNwb29sMiwKIAlpbmRleEluZm8gPSBCdWlsZElu ZGV4SW5mbyhidHNwb29sLT5pbmRleCk7CiAJaW5kZXhJbmZvLT5paV9Db25jdXJyZW50ID0gYnRz aGFyZWQtPmlzY29uY3VycmVudDsKIAlzY2FuID0gdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKGJ0 c3Bvb2wtPmhlYXAsCi0JCQkJCQkJCQlQYXJhbGxlbFRhYmxlU2NhbkZyb21CVFNoYXJlZChidHNo YXJlZCkpOworCQkJCQkJCQkJUGFyYWxsZWxUYWJsZVNjYW5Gcm9tQlRTaGFyZWQoYnRzaGFyZWQp LCAwKTsKIAlyZWx0dXBsZXMgPSB0YWJsZV9pbmRleF9idWlsZF9zY2FuKGJ0c3Bvb2wtPmhlYXAs IGJ0c3Bvb2wtPmluZGV4LCBpbmRleEluZm8sCiAJCQkJCQkJCQkgICB0cnVlLCBwcm9ncmVzcywg X2J0X2J1aWxkX2NhbGxiYWNrLAogCQkJCQkJCQkJICAgJmJ1aWxkc3RhdGUsIHNjYW4pOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKaW5kZXggMWUwOTlmZWJkYzguLmRiMmEzMDJhNDg2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKQEAgLTE2MywxMCArMTYzLDExIEBAIHRhYmxl X3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKFJlbGF0aW9uIHJlbCwgUGFyYWxsZWxUYWJsZVNjYW5E ZXNjIHBzY2FuLAogfQogCiBUYWJsZVNjYW5EZXNjCi10YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwo UmVsYXRpb24gcmVsYXRpb24sIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbikKK3RhYmxlX2Jl Z2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNj IHBzY2FuLCB1aW50MzIgZmxhZ3MpCiB7CiAJU25hcHNob3QJc25hcHNob3Q7Ci0JdWludDMyCQlm bGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8CisKKwlmbGFncyB8PSBTT19UWVBFX1NFUVNDQU4gfAog CQlTT19BTExPV19TVFJBVCB8IFNPX0FMTE9XX1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsKIAog CUFzc2VydChSZWxGaWxlTG9jYXRvckVxdWFscyhyZWxhdGlvbi0+cmRfbG9jYXRvciwgcHNjYW4t PnBoc19sb2NhdG9yKSk7CkBAIC0yNDgsNyArMjQ5LDcgQEAgdGFibGVfaW5kZXhfZmV0Y2hfdHVw bGVfY2hlY2soUmVsYXRpb24gcmVsLAogCWJvb2wJCWZvdW5kOwogCiAJc2xvdCA9IHRhYmxlX3Ns b3RfY3JlYXRlKHJlbCwgTlVMTCk7Ci0Jc2NhbiA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKHJl bCk7CisJc2NhbiA9IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKHJlbCwgMCk7CiAJZm91bmQgPSB0 YWJsZV9pbmRleF9mZXRjaF90dXBsZShzY2FuLCB0aWQsIHNuYXBzaG90LCBzbG90LCAmY2FsbF9h Z2FpbiwKIAkJCQkJCQkJCWFsbF9kZWFkKTsKIAl0YWJsZV9pbmRleF9mZXRjaF9lbmQoc2Nhbik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb25zdHJhaW50LmMgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb25zdHJhaW50LmMKaW5kZXggMzQ5N2E4MjIxZjIuLjk3YzgyNzhlMzZk IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb25zdHJhaW50LmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvY29uc3RyYWludC5jCkBAIC0xMDYsNyArMTA2LDcgQEAgdW5pcXVl X2tleV9yZWNoZWNrKFBHX0ZVTkNUSU9OX0FSR1MpCiAJICovCiAJdG1wdGlkID0gY2hlY2t0aWQ7 CiAJewotCQlJbmRleEZldGNoVGFibGVEYXRhICpzY2FuID0gdGFibGVfaW5kZXhfZmV0Y2hfYmVn aW4odHJpZ2RhdGEtPnRnX3JlbGF0aW9uKTsKKwkJSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbiA9 IHRhYmxlX2luZGV4X2ZldGNoX2JlZ2luKHRyaWdkYXRhLT50Z19yZWxhdGlvbiwgMCk7CiAJCWJv b2wJCWNhbGxfYWdhaW4gPSBmYWxzZTsKIAogCQlpZiAoIXRhYmxlX2luZGV4X2ZldGNoX3R1cGxl KHNjYW4sICZ0bXB0aWQsIFNuYXBzaG90U2VsZiwgc2xvdCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKaW5k ZXggY2VmNDUyNTg0ZTUuLjIyYjQ1M2RjNjE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpAQCAtMTE1 Niw3ICsxMTU2LDcgQEAgQ29weVJlbGF0aW9uVG8oQ29weVRvU3RhdGUgY3N0YXRlLCBSZWxhdGlv biByZWwsIFJlbGF0aW9uIHJvb3RfcmVsLCB1aW50NjQgKnByb2MKIAlBdHRyTWFwICAgICptYXAg PSBOVUxMOwogCVR1cGxlVGFibGVTbG90ICpyb290X3Nsb3QgPSBOVUxMOwogCi0Jc2NhbmRlc2Mg PSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBHZXRBY3RpdmVTbmFwc2hvdCgpLCAwLCBOVUxMKTsKKwlz Y2FuZGVzYyA9IHRhYmxlX2JlZ2luc2NhbihyZWwsIEdldEFjdGl2ZVNuYXBzaG90KCksIDAsIE5V TEwsIDApOwogCXNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShyZWwsIE5VTEwpOwogCiAJLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggMDdlNWI5NTc4MmUuLjU4ZGJiZjRkODUxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNjM0NSw3ICs2MzQ1LDcgQEAgQVRSZXdyaXRlVGFi bGUoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBPaWQgT0lETmV3SGVhcCkKIAkJICogY2hlY2tpbmcg YWxsIHRoZSBjb25zdHJhaW50cy4KIAkJICovCiAJCXNuYXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hv dChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKLQkJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihvbGRyZWws IHNuYXBzaG90LCAwLCBOVUxMKTsKKwkJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihvbGRyZWwsIHNu YXBzaG90LCAwLCBOVUxMLCAwKTsKIAogCQkvKgogCQkgKiBTd2l0Y2ggdG8gcGVyLXR1cGxlIG1l bW9yeSBjb250ZXh0IGFuZCByZXNldCBpdCBmb3IgZWFjaCB0dXBsZQpAQCAtMTM3MzAsNyArMTM3 MzAsNyBAQCB2YWxpZGF0ZUZvcmVpZ25LZXlDb25zdHJhaW50KGNoYXIgKmNvbm5hbWUsCiAJICov CiAJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90KCkpOwogCXNs b3QgPSB0YWJsZV9zbG90X2NyZWF0ZShyZWwsIE5VTEwpOwotCXNjYW4gPSB0YWJsZV9iZWdpbnNj YW4ocmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisJc2NhbiA9IHRhYmxlX2JlZ2luc2NhbihyZWws IHNuYXBzaG90LCAwLCBOVUxMLCAwKTsKIAogCXBlclR1cEN4dCA9IEFsbG9jU2V0Q29udGV4dENy ZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKIAkJCQkJCQkJCSAgInZhbGlkYXRlRm9yZWlnbktl eUNvbnN0cmFpbnQiLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKaW5kZXggNDdkNTA0N2ZlOGIuLjA1 NTc1OWNkMzQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKQEAgLTMxNTcsNyArMzE1Nyw3IEBA IHZhbGlkYXRlRG9tYWluTm90TnVsbENvbnN0cmFpbnQoT2lkIGRvbWFpbm9pZCkKIAogCQkvKiBT Y2FuIGFsbCB0dXBsZXMgaW4gdGhpcyByZWxhdGlvbiAqLwogCQlzbmFwc2hvdCA9IFJlZ2lzdGVy U25hcHNob3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7Ci0JCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4o dGVzdHJlbCwgc25hcHNob3QsIDAsIE5VTEwpOworCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHRl c3RyZWwsIHNuYXBzaG90LCAwLCBOVUxMLCAwKTsKIAkJc2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRl KHRlc3RyZWwsIE5VTEwpOwogCQl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xvdChzY2FuLCBG b3J3YXJkU2NhbkRpcmVjdGlvbiwgc2xvdCkpCiAJCXsKQEAgLTMyMzgsNyArMzIzOCw3IEBAIHZh bGlkYXRlRG9tYWluQ2hlY2tDb25zdHJhaW50KE9pZCBkb21haW5vaWQsIGNvbnN0IGNoYXIgKmNj YmluLCBMT0NLTU9ERSBsb2NrbW9kCiAKIAkJLyogU2NhbiBhbGwgdHVwbGVzIGluIHRoaXMgcmVs YXRpb24gKi8KIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdldExhdGVzdFNuYXBzaG90 KCkpOwotCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHRlc3RyZWwsIHNuYXBzaG90LCAwLCBOVUxM KTsKKwkJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbih0ZXN0cmVsLCBzbmFwc2hvdCwgMCwgTlVMTCwg MCk7CiAJCXNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZSh0ZXN0cmVsLCBOVUxMKTsKIAkJd2hpbGUg KHRhYmxlX3NjYW5fZ2V0bmV4dHNsb3Qoc2NhbiwgRm9yd2FyZFNjYW5EaXJlY3Rpb24sIHNsb3Qp KQogCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCmluZGV4IGRkMzIzYzliOWZkLi5i NDFiZmVjYTI0NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5n LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMKQEAgLTgxNiw3ICs4 MTYsNyBAQCBjaGVja19leGNsdXNpb25fb3JfdW5pcXVlX2NvbnN0cmFpbnQoUmVsYXRpb24gaGVh cCwgUmVsYXRpb24gaW5kZXgsCiByZXRyeToKIAljb25mbGljdCA9IGZhbHNlOwogCWZvdW5kX3Nl bGYgPSBmYWxzZTsKLQlpbmRleF9zY2FuID0gaW5kZXhfYmVnaW5zY2FuKGhlYXAsIGluZGV4LCAm RGlydHlTbmFwc2hvdCwgTlVMTCwgaW5kbmtleWF0dHMsIDApOworCWluZGV4X3NjYW4gPSBpbmRl eF9iZWdpbnNjYW4oaGVhcCwgaW5kZXgsICZEaXJ0eVNuYXBzaG90LCBOVUxMLCBpbmRua2V5YXR0 cywgMCwgMCk7CiAJaW5kZXhfcmVzY2FuKGluZGV4X3NjYW4sIHNjYW5rZXlzLCBpbmRua2V5YXR0 cywgTlVMTCwgMCk7CiAKIAl3aGlsZSAoaW5kZXhfZ2V0bmV4dF9zbG90KGluZGV4X3NjYW4sIEZv cndhcmRTY2FuRGlyZWN0aW9uLCBleGlzdGluZ19zbG90KSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1JlcGxpY2F0aW9uLmMKaW5kZXggZGVmMzI3NzRjOTAuLjQ3M2QyMzZlNTUxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYworKysgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwpAQCAtMjA0LDcgKzIwNCw3IEBAIFJlbGF0aW9u RmluZFJlcGxUdXBsZUJ5SW5kZXgoUmVsYXRpb24gcmVsLCBPaWQgaWR4b2lkLAogCXNrZXlfYXR0 b2ZmID0gYnVpbGRfcmVwbGluZGV4X3NjYW5fa2V5KHNrZXksIHJlbCwgaWR4cmVsLCBzZWFyY2hz bG90KTsKIAogCS8qIFN0YXJ0IGFuIGluZGV4IHNjYW4uICovCi0Jc2NhbiA9IGluZGV4X2JlZ2lu c2NhbihyZWwsIGlkeHJlbCwgJnNuYXAsIE5VTEwsIHNrZXlfYXR0b2ZmLCAwKTsKKwlzY2FuID0g aW5kZXhfYmVnaW5zY2FuKHJlbCwgaWR4cmVsLCAmc25hcCwgTlVMTCwgc2tleV9hdHRvZmYsIDAs IDApOwogCiByZXRyeToKIAlmb3VuZCA9IGZhbHNlOwpAQCAtMzgyLDcgKzM4Miw3IEBAIFJlbGF0 aW9uRmluZFJlcGxUdXBsZVNlcShSZWxhdGlvbiByZWwsIExvY2tUdXBsZU1vZGUgbG9ja21vZGUs CiAKIAkvKiBTdGFydCBhIGhlYXAgc2Nhbi4gKi8KIAlJbml0RGlydHlTbmFwc2hvdChzbmFwKTsK LQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJlbCwgJnNuYXAsIDAsIE5VTEwpOworCXNjYW4gPSB0 YWJsZV9iZWdpbnNjYW4ocmVsLCAmc25hcCwgMCwgTlVMTCwgMCk7CiAJc2NhbnNsb3QgPSB0YWJs ZV9zbG90X2NyZWF0ZShyZWwsIE5VTEwpOwogCiByZXRyeToKQEAgLTYwMSw3ICs2MDEsNyBAQCBS ZWxhdGlvbkZpbmREZWxldGVkVHVwbGVJbmZvU2VxKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNs b3QgKnNlYXJjaHNsb3QsCiAJICogbm90IHlldCBjb21taXR0ZWQgb3IgdGhvc2UganVzdCBjb21t aXR0ZWQgcHJpb3IgdG8gdGhlIHNjYW4gYXJlCiAJICogZXhjbHVkZWQgaW4gdXBkYXRlX21vc3Rf cmVjZW50X2RlbGV0aW9uX2luZm8oKS4KIAkgKi8KLQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHJl bCwgU25hcHNob3RBbnksIDAsIE5VTEwpOworCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocmVsLCBT bmFwc2hvdEFueSwgMCwgTlVMTCwgMCk7CiAJc2NhbnNsb3QgPSB0YWJsZV9zbG90X2NyZWF0ZShy ZWwsIE5VTEwpOwogCiAJdGFibGVfcmVzY2FuKHNjYW4sIE5VTEwpOwpAQCAtNjY1LDcgKzY2NSw3 IEBAIFJlbGF0aW9uRmluZERlbGV0ZWRUdXBsZUluZm9CeUluZGV4KFJlbGF0aW9uIHJlbCwgT2lk IGlkeG9pZCwKIAkgKiBub3QgeWV0IGNvbW1pdHRlZCBvciB0aG9zZSBqdXN0IGNvbW1pdHRlZCBw cmlvciB0byB0aGUgc2NhbiBhcmUKIAkgKiBleGNsdWRlZCBpbiB1cGRhdGVfbW9zdF9yZWNlbnRf ZGVsZXRpb25faW5mbygpLgogCSAqLwotCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4ocmVsLCBpZHhy ZWwsIFNuYXBzaG90QW55LCBOVUxMLCBza2V5X2F0dG9mZiwgMCk7CisJc2NhbiA9IGluZGV4X2Jl Z2luc2NhbihyZWwsIGlkeHJlbCwgU25hcHNob3RBbnksIE5VTEwsIHNrZXlfYXR0b2ZmLCAwLCAw KTsKIAogCWluZGV4X3Jlc2NhbihzY2FuLCBza2V5LCBza2V5X2F0dG9mZiwgTlVMTCwgMCk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKaW5kZXggYmYyNGYzZDdm ZTAuLjBkODU0ZGI1MWExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwSGVhcHNjYW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNj YW4uYwpAQCAtMTA1LDExICsxMDUsMTggQEAgQml0bWFwVGFibGVTY2FuU2V0dXAoQml0bWFwSGVh cFNjYW5TdGF0ZSAqbm9kZSkKIAkgKi8KIAlpZiAoIW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVz YykKIAl7CisJCXVpbnQzMgkJZmxhZ3MgPSAwOworCisJCWlmICghYm1zX2lzX21lbWJlcigoKFNj YW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJCSAgIG5vZGUtPnNzLnBz LnN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpKQorCQkJZmxhZ3MgPSBTT19ISU5UX1JFTF9SRUFE X09OTFk7CisKIAkJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0KIAkJCXRhYmxlX2JlZ2lu c2Nhbl9ibShub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sCiAJCQkJCQkJICAgbm9kZS0+c3Mu cHMuc3RhdGUtPmVzX3NuYXBzaG90LAogCQkJCQkJCSAgIDAsCi0JCQkJCQkJICAgTlVMTCk7CisJ CQkJCQkJICAgTlVMTCwKKwkJCQkJCQkgICBmbGFncyk7CiAJfQogCiAJbm9kZS0+c3Muc3NfY3Vy cmVudFNjYW5EZXNjLT5zdC5yc190Ym1pdGVyYXRvciA9IHRibWl0ZXJhdG9yOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4b25seXNjYW4uYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKaW5kZXggZjQ2NGNjYTk1MDcuLjg3YjA0YjFi ODhlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhvbmx5c2Nhbi5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleG9ubHlzY2FuLmMKQEAgLTk0LDcg Kzk0LDcgQEAgSW5kZXhPbmx5TmV4dChJbmRleE9ubHlTY2FuU3RhdGUgKm5vZGUpCiAJCQkJCQkJ CSAgIGVzdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJCQkJCSAgICZub2RlLT5pb3NzX0luc3RydW1l bnQsCiAJCQkJCQkJCSAgIG5vZGUtPmlvc3NfTnVtU2NhbktleXMsCi0JCQkJCQkJCSAgIG5vZGUt Pmlvc3NfTnVtT3JkZXJCeUtleXMpOworCQkJCQkJCQkgICBub2RlLT5pb3NzX051bU9yZGVyQnlL ZXlzLCAwKTsKIAogCQlub2RlLT5pb3NzX1NjYW5EZXNjID0gc2NhbmRlc2M7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVJbmRleHNjYW4uYwppbmRleCBmMzY5MjlkZWVjMy4uOTBmOTI5Y2U3NDEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYworKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKQEAgLTEwMiw2ICsxMDIsMTIgQEAgSW5k ZXhOZXh0KEluZGV4U2NhblN0YXRlICpub2RlKQogCiAJaWYgKHNjYW5kZXNjID09IE5VTEwpCiAJ eworCQl1aW50MzIJCWZsYWdzID0gMDsKKworCQlpZiAoIWJtc19pc19tZW1iZXIoKChTY2FuICop IG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCQkgICBlc3RhdGUtPmVzX21vZGlm aWVkX3JlbGlkcykpCisJCQlmbGFncyA9IFNPX0hJTlRfUkVMX1JFQURfT05MWTsKKwogCQkvKgog CQkgKiBXZSByZWFjaCBoZXJlIGlmIHRoZSBpbmRleCBzY2FuIGlzIG5vdCBwYXJhbGxlbCwgb3Ig aWYgd2UncmUKIAkJICogc2VyaWFsbHkgZXhlY3V0aW5nIGFuIGluZGV4IHNjYW4gdGhhdCB3YXMg cGxhbm5lZCB0byBiZSBwYXJhbGxlbC4KQEAgLTExMSw3ICsxMTcsOCBAQCBJbmRleE5leHQoSW5k ZXhTY2FuU3RhdGUgKm5vZGUpCiAJCQkJCQkJCSAgIGVzdGF0ZS0+ZXNfc25hcHNob3QsCiAJCQkJ CQkJCSAgICZub2RlLT5pc3NfSW5zdHJ1bWVudCwKIAkJCQkJCQkJICAgbm9kZS0+aXNzX051bVNj YW5LZXlzLAotCQkJCQkJCQkgICBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMpOworCQkJCQkJCQkg ICBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMsCisJCQkJCQkJCSAgIGZsYWdzKTsKIAogCQlub2Rl LT5pc3NfU2NhbkRlc2MgPSBzY2FuZGVzYzsKIApAQCAtMjA3LDcgKzIxNCw3IEBAIEluZGV4TmV4 dFdpdGhSZW9yZGVyKEluZGV4U2NhblN0YXRlICpub2RlKQogCQkJCQkJCQkgICBlc3RhdGUtPmVz X3NuYXBzaG90LAogCQkJCQkJCQkgICAmbm9kZS0+aXNzX0luc3RydW1lbnQsCiAJCQkJCQkJCSAg IG5vZGUtPmlzc19OdW1TY2FuS2V5cywKLQkJCQkJCQkJICAgbm9kZS0+aXNzX051bU9yZGVyQnlL ZXlzKTsKKwkJCQkJCQkJICAgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzLCAwKTsKIAogCQlub2Rl LT5pc3NfU2NhbkRlc2MgPSBzY2FuZGVzYzsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVNlcXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMK aW5kZXggOTQwNDdkMjk0MzAuLjRkMGNiYjlkZWU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFz Y2FuLmMKQEAgLTY1LDEzICs2NSwyMCBAQCBTZXFOZXh0KFNlcVNjYW5TdGF0ZSAqbm9kZSkKIAog CWlmIChzY2FuZGVzYyA9PSBOVUxMKQogCXsKKwkJdWludDMyCQlmbGFncyA9IDA7CisKKwkJaWYg KCFibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAor CQkJCQkJICAgZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpKQorCQkJZmxhZ3MgPSBTT19ISU5U X1JFTF9SRUFEX09OTFk7CisKIAkJLyoKIAkJICogV2UgcmVhY2ggaGVyZSBpZiB0aGUgc2NhbiBp cyBub3QgcGFyYWxsZWwsIG9yIGlmIHdlJ3JlIHNlcmlhbGx5CiAJCSAqIGV4ZWN1dGluZyBhIHNj YW4gdGhhdCB3YXMgcGxhbm5lZCB0byBiZSBwYXJhbGxlbC4KIAkJICovCiAJCXNjYW5kZXNjID0g dGFibGVfYmVnaW5zY2FuKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKIAkJCQkJCQkJICAg ZXN0YXRlLT5lc19zbmFwc2hvdCwKLQkJCQkJCQkJICAgMCwgTlVMTCk7CisJCQkJCQkJCSAgIDAs IE5VTEwsIGZsYWdzKTsKKwogCQlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPSBzY2FuZGVz YzsKIAl9CiAKQEAgLTM2NywxNCArMzc0LDIwIEBAIEV4ZWNTZXFTY2FuSW5pdGlhbGl6ZURTTShT ZXFTY2FuU3RhdGUgKm5vZGUsCiB7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBub2RlLT5zcy5wcy5z dGF0ZTsKIAlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47CisJdWludDMyCQlmbGFncyA9IDA7 CiAKIAlwc2NhbiA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBub2RlLT5wc2Nhbl9sZW4p OwogCXRhYmxlX3BhcmFsbGVsc2Nhbl9pbml0aWFsaXplKG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxh dGlvbiwKIAkJCQkJCQkJICBwc2NhbiwKIAkJCQkJCQkJICBlc3RhdGUtPmVzX3NuYXBzaG90KTsK IAlzaG1fdG9jX2luc2VydChwY3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9p ZCwgcHNjYW4pOworCWlmICghYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxh biktPnNjYW5yZWxpZCwKKwkJCQkJICAgZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpKQorCQlm bGFncyA9IFNPX0hJTlRfUkVMX1JFQURfT05MWTsKKwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2Fu RGVzYyA9Ci0JCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVs YXRpb24sIHBzY2FuKTsKKwkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKG5vZGUtPnNzLnNzX2N1 cnJlbnRSZWxhdGlvbiwgcHNjYW4sCisJCQkJCQkJCSBmbGFncyk7CiB9CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K QEAgLTQwNCw4ICs0MTcsMTUgQEAgRXhlY1NlcVNjYW5Jbml0aWFsaXplV29ya2VyKFNlcVNjYW5T dGF0ZSAqbm9kZSwKIAkJCQkJCQlQYXJhbGxlbFdvcmtlckNvbnRleHQgKnB3Y3h0KQogewogCVBh cmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbjsKKwl1aW50MzIJCWZsYWdzID0gMDsKKworCWlmICgh Ym1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJ CQkJICAgbm9kZS0+c3MucHMuc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcykpCisJCWZsYWdzID0g U09fSElOVF9SRUxfUkVBRF9PTkxZOwogCiAJcHNjYW4gPSBzaG1fdG9jX2xvb2t1cChwd2N4dC0+ dG9jLCBub2RlLT5zcy5wcy5wbGFuLT5wbGFuX25vZGVfaWQsIGZhbHNlKTsKIAlub2RlLT5zcy5z c19jdXJyZW50U2NhbkRlc2MgPQotCQl0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwobm9kZS0+c3Mu c3NfY3VycmVudFJlbGF0aW9uLCBwc2Nhbik7CisJCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChu b2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sCisJCQkJCQkJCSBwc2NhbiwKKwkJCQkJCQkJIGZs YWdzKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRz LmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCmluZGV4IDhiYTAzOGM1 ZWY0Li5kM2IzNDBlZTJhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRib3VuZHMuYworKysgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCkBA IC0zMzcwLDcgKzMzNzAsNyBAQCBjaGVja19kZWZhdWx0X3BhcnRpdGlvbl9jb250ZW50cyhSZWxh dGlvbiBwYXJlbnQsIFJlbGF0aW9uIGRlZmF1bHRfcmVsLAogCQllY29udGV4dCA9IEdldFBlclR1 cGxlRXhwckNvbnRleHQoZXN0YXRlKTsKIAkJc25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KEdl dExhdGVzdFNuYXBzaG90KCkpOwogCQl0dXBzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUocGFydF9y ZWwsICZlc3RhdGUtPmVzX3R1cGxlVGFibGUpOwotCQlzY2FuID0gdGFibGVfYmVnaW5zY2FuKHBh cnRfcmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocGFy dF9yZWwsIHNuYXBzaG90LCAwLCBOVUxMLCAwKTsKIAogCQkvKgogCQkgKiBTd2l0Y2ggdG8gcGVy LXR1cGxlIG1lbW9yeSBjb250ZXh0IGFuZCByZXNldCBpdCBmb3IgZWFjaCB0dXBsZQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvc2VsZnVuY3MuYwppbmRleCA1NDBhYTk2MjhkNy4uMjg0MzQxNDZlYmEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9zZWxmdW5jcy5jCkBAIC03MTAwLDcgKzcxMDAsNyBAQCBnZXRfYWN0dWFsX3Zhcmlh YmxlX2VuZHBvaW50KFJlbGF0aW9uIGhlYXBSZWwsCiAKIAlpbmRleF9zY2FuID0gaW5kZXhfYmVn aW5zY2FuKGhlYXBSZWwsIGluZGV4UmVsLAogCQkJCQkJCQkgJlNuYXBzaG90Tm9uVmFjdXVtYWJs ZSwgTlVMTCwKLQkJCQkJCQkJIDEsIDApOworCQkJCQkJCQkgMSwgMCwgMCk7CiAJLyogU2V0IGl0 IHVwIGZvciBpbmRleC1vbmx5IHNjYW4gKi8KIAlpbmRleF9zY2FuLT54c193YW50X2l0dXAgPSB0 cnVlOwogCWluZGV4X3Jlc2NhbihpbmRleF9zY2FuLCBzY2Fua2V5cywgMSwgTlVMTCwgMCk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9nZW5hbS5oCmluZGV4IDkyMDBhMjJiZDlmLi5kMjlkOWU5MDVmYyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgK QEAgLTE3Nyw3ICsxNzcsNyBAQCBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9iZWdpbnNjYW4o UmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkJIFJlbGF0aW9uIGluZGV4UmVsYXRpb24s CiAJCQkJCQkJCQkgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkJCQkgSW5kZXhTY2FuSW5zdHJ1 bWVudGF0aW9uICppbnN0cnVtZW50LAotCQkJCQkJCQkJIGludCBua2V5cywgaW50IG5vcmRlcmJ5 cyk7CisJCQkJCQkJCQkgaW50IG5rZXlzLCBpbnQgbm9yZGVyYnlzLCB1aW50MzIgZmxhZ3MpOwog ZXh0ZXJuIEluZGV4U2NhbkRlc2MgaW5kZXhfYmVnaW5zY2FuX2JpdG1hcChSZWxhdGlvbiBpbmRl eFJlbGF0aW9uLAogCQkJCQkJCQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJCQkJSW5k ZXhTY2FuSW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDQ3 MDJlYzAwZGVhLi5mYzJjODMxNGU5NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMTE5LDYgKzExOSwx MiBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEZldGNoSGVhcERhdGEKIAogCUJ1ZmZlcgkJeHNfY2J1 ZjsJCS8qIGN1cnJlbnQgaGVhcCBidWZmZXIgaW4gc2NhbiwgaWYgYW55ICovCiAJLyogTkI6IGlm IHhzX2NidWYgaXMgbm90IEludmFsaWRCdWZmZXIsIHdlIGhvbGQgYSBwaW4gb24gdGhhdCBidWZm ZXIgKi8KKworCS8qCisJICogU29tZSBvcHRpbWl6YXRpb25zIGNhbiBvbmx5IGJlIHBlcmZvcm1l ZCBpZiB0aGUgcXVlcnkgZG9lcyBub3QgbW9kaWZ5CisJICogdGhlIHVuZGVybHlpbmcgcmVsYXRp b24uIFRyYWNrIHRoYXQgaGVyZS4KKwkgKi8KKwlib29sCQltb2RpZmllc19iYXNlX3JlbDsKIH0g SW5kZXhGZXRjaEhlYXBEYXRhOwogCiAvKiBSZXN1bHQgY29kZXMgZm9yIEhlYXBUdXBsZVNhdGlz Zmllc1ZhY3V1bSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaCBi L3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKaW5kZXggMmZhNzkwYjZiZjUuLmQxMGIxYjAz Y2RiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3NyYy9p bmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTYzLDYgKzYzLDggQEAgdHlwZWRlZiBlbnVtIFNj YW5PcHRpb25zCiAKIAkvKiB1bnJlZ2lzdGVyIHNuYXBzaG90IGF0IHNjYW4gZW5kPyAqLwogCVNP X1RFTVBfU05BUFNIT1QgPSAxIDw8IDksCisJLyogc2V0IGlmIHRoZSBxdWVyeSBkb2Vzbid0IG1v ZGlmeSB0aGUgcmVsICovCisJU09fSElOVF9SRUxfUkVBRF9PTkxZID0gMSA8PCAxMCwKIH0JCQlT Y2FuT3B0aW9uczsKIAogLyoKQEAgLTQyMCw3ICs0MjIsNyBAQCB0eXBlZGVmIHN0cnVjdCBUYWJs ZUFtUm91dGluZQogCSAqCiAJICogVHVwbGVzIGZvciBhbiBpbmRleCBzY2FuIGNhbiB0aGVuIGJl IGZldGNoZWQgdmlhIGluZGV4X2ZldGNoX3R1cGxlLgogCSAqLwotCXN0cnVjdCBJbmRleEZldGNo VGFibGVEYXRhICooKmluZGV4X2ZldGNoX2JlZ2luKSAoUmVsYXRpb24gcmVsKTsKKwlzdHJ1Y3Qg SW5kZXhGZXRjaFRhYmxlRGF0YSAqKCppbmRleF9mZXRjaF9iZWdpbikgKFJlbGF0aW9uIHJlbCwg dWludDMyIGZsYWdzKTsKIAogCS8qCiAJICogUmVzZXQgaW5kZXggZmV0Y2guIFR5cGljYWxseSB0 aGlzIHdpbGwgcmVsZWFzZSBjcm9zcyBpbmRleCBmZXRjaApAQCAtODc0LDkgKzg3Niw5IEBAIGV4 dGVybiBUdXBsZVRhYmxlU2xvdCAqdGFibGVfc2xvdF9jcmVhdGUoUmVsYXRpb24gcmVsYXRpb24s IExpc3QgKipyZWdsaXN0KTsKICAqLwogc3RhdGljIGlubGluZSBUYWJsZVNjYW5EZXNjCiB0YWJs ZV9iZWdpbnNjYW4oUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQlpbnQgbmtl eXMsIFNjYW5LZXlEYXRhICprZXkpCisJCQkJaW50IG5rZXlzLCBTY2FuS2V5RGF0YSAqa2V5LCB1 aW50MzIgZmxhZ3MpCiB7Ci0JdWludDMyCQlmbGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8CisJZmxh Z3MgfD0gU09fVFlQRV9TRVFTQ0FOIHwKIAkJU09fQUxMT1dfU1RSQVQgfCBTT19BTExPV19TWU5D IHwgU09fQUxMT1dfUEFHRU1PREU7CiAKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5zY2FuX2Jl Z2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksIE5VTEwsIGZsYWdzKTsKQEAgLTkxOSw5ICs5 MjEsOSBAQCB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFw c2hvdCwKICAqLwogc3RhdGljIGlubGluZSBUYWJsZVNjYW5EZXNjCiB0YWJsZV9iZWdpbnNjYW5f Ym0oUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkgICBpbnQgbmtleXMsIFNj YW5LZXlEYXRhICprZXkpCisJCQkJICAgaW50IG5rZXlzLCBTY2FuS2V5RGF0YSAqa2V5LCB1aW50 MzIgZmxhZ3MpCiB7Ci0JdWludDMyCQlmbGFncyA9IFNPX1RZUEVfQklUTUFQU0NBTiB8IFNPX0FM TE9XX1BBR0VNT0RFOworCWZsYWdzIHw9IFNPX1RZUEVfQklUTUFQU0NBTiB8IFNPX0FMTE9XX1BB R0VNT0RFOwogCiAJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+c2Nhbl9iZWdpbihyZWwsIHNuYXBz aG90LCBua2V5cywga2V5LAogCQkJCQkJCQkJICAgTlVMTCwgZmxhZ3MpOwpAQCAtMTEyOCw3ICsx MTMwLDggQEAgZXh0ZXJuIHZvaWQgdGFibGVfcGFyYWxsZWxzY2FuX2luaXRpYWxpemUoUmVsYXRp b24gcmVsLAogICogQ2FsbGVyIG11c3QgaG9sZCBhIHN1aXRhYmxlIGxvY2sgb24gdGhlIHJlbGF0 aW9uLgogICovCiBleHRlcm4gVGFibGVTY2FuRGVzYyB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwo UmVsYXRpb24gcmVsYXRpb24sCi0JCQkJCQkJCQkJCSAgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBz Y2FuKTsKKwkJCQkJCQkJCQkJICBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCisJCQkJCQkJ CQkJCSAgdWludDMyIGZsYWdzKTsKIAogLyoKICAqIEJlZ2luIGEgcGFyYWxsZWwgdGlkIHJhbmdl IHNjYW4uIGBwc2NhbmAgbmVlZHMgdG8gaGF2ZSBiZWVuIGluaXRpYWxpemVkCkBAIC0xMTY0LDkg KzExNjcsOSBAQCB0YWJsZV9wYXJhbGxlbHNjYW5fcmVpbml0aWFsaXplKFJlbGF0aW9uIHJlbCwg UGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQogICogVHVwbGVzIGZvciBhbiBpbmRleCBzY2Fu IGNhbiB0aGVuIGJlIGZldGNoZWQgdmlhIHRhYmxlX2luZGV4X2ZldGNoX3R1cGxlKCkuCiAgKi8K IHN0YXRpYyBpbmxpbmUgSW5kZXhGZXRjaFRhYmxlRGF0YSAqCi10YWJsZV9pbmRleF9mZXRjaF9i ZWdpbihSZWxhdGlvbiByZWwpCit0YWJsZV9pbmRleF9mZXRjaF9iZWdpbihSZWxhdGlvbiByZWws IHVpbnQzMiBmbGFncykKIHsKLQlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5pbmRleF9mZXRjaF9i ZWdpbihyZWwpOworCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPmluZGV4X2ZldGNoX2JlZ2luKHJl bCwgZmxhZ3MpOwogfQogCiAvKgotLSAKMi40My4wCgo= --0000000000001ceba70645144821 Content-Type: text/x-patch; charset="US-ASCII"; name="v23-0013-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v23-0013-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miqm0v2y12 RnJvbSA0MjI2MTM3OTVkZWFhZWYyYmRkNDNjZDA3NjdlMDE5Y2JkZDQ0ZjUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgRGVjIDIwMjUgMTU6MjQ6MDggLTA1MDAKU3ViamVjdDogW1BB VENIIHYyMyAxMy8xNF0gQWxsb3cgb24tYWNjZXNzIHBydW5pbmcgdG8gc2V0IHBhZ2VzIGFsbC12 aXNpYmxlCgpNYW55IHF1ZXJpZXMgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyByZWxhdGlv bi4gRm9yIHN1Y2ggcXVlcmllcywgaWYKb24tYWNjZXNzIHBydW5pbmcgb2NjdXJzIGR1cmluZyB0 aGUgc2Nhbiwgd2UgY2FuIGNoZWNrIHdoZXRoZXIgdGhlIHBhZ2UKaGFzIGJlY29tZSBhbGwtdmlz aWJsZSBhbmQgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCBhY2NvcmRpbmdseS4KUHJldmlvdXNs eSwgb25seSB2YWN1dW0gYW5kIENPUFkgRlJFRVpFIG1hcmtlZCBwYWdlcyBhcyBhbGwtdmlzaWJs ZSBvcgphbGwtZnJvemVuLgoKVGhpcyBjb21taXQgaW1wbGVtZW50cyBvbi1hY2Nlc3MgVk0gc2V0 dGluZyBmb3Igc2VxdWVudGlhbCBzY2FucyBhcyB3ZWxsCmFzIGZvciB0aGUgdW5kZXJseWluZyBo ZWFwIHJlbGF0aW9uIGluIGluZGV4IHNjYW5zIGFuZCBiaXRtYXAgaGVhcApzY2Fucy4KCkF1dGhv cjogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdtYWlsLmNvbT4KUmV2aWV3ZWQt Ynk6IEFuZHJlcyBGcmV1bmQgPGFuZHJlc0BhbmFyYXplbC5kZT4KUmV2aWV3ZWQtYnk6IEtpcmls bCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1W N1NPTHhkSzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtLmMgICAgICAgICAgICAgIHwgMTUgKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgMTUgKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMgICAgICAgICAgIHwgNzggKysrKysrKysrKysrKysrKy0tLQogc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICAgIHwgMjQgKysrKystCiAuLi4vdC8w MzVfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsICAgICAgICAgfCAgMyArLQogNSBmaWxlcyBj aGFuZ2VkLCAxMTYgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW0uYwppbmRleCAzYWQ3OGJhNDY5NC4uZWNjMDQzOTBhYzcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL2hlYXBhbS5jCkBAIC01NzAsNiArNTcwLDcgQEAgaGVhcF9wcmVwYXJlX3BhZ2VzY2FuKFRh YmxlU2NhbkRlc2Mgc3NjYW4pCiAJQnVmZmVyCQlidWZmZXIgPSBzY2FuLT5yc19jYnVmOwogCUJs b2NrTnVtYmVyIGJsb2NrID0gc2Nhbi0+cnNfY2Jsb2NrOwogCVNuYXBzaG90CXNuYXBzaG90Owor CUJ1ZmZlcgkgICAqdm1idWZmZXIgPSBOVUxMOwogCVBhZ2UJCXBhZ2U7CiAJaW50CQkJbGluZXM7 CiAJYm9vbAkJYWxsX3Zpc2libGU7CkBAIC01ODQsNyArNTg1LDkgQEAgaGVhcF9wcmVwYXJlX3Bh Z2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4pCiAJLyoKIAkgKiBQcnVuZSBhbmQgcmVwYWlyIGZy YWdtZW50YXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlLCBpZiBwb3NzaWJsZS4KIAkgKi8KLQloZWFw X3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX2Jhc2UucnNfcmQsIGJ1ZmZlcik7CisJaWYgKHNzY2Fu LT5yc19mbGFncyAmIFNPX0hJTlRfUkVMX1JFQURfT05MWSkKKwkJdm1idWZmZXIgPSAmc2Nhbi0+ cnNfdm1idWZmZXI7CisJaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19iYXNlLnJzX3JkLCBi dWZmZXIsIHZtYnVmZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJlIGxvY2sgb24g dGhlIGJ1ZmZlciBjb250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpAQCAtMTI2MSw2ICsxMjY0 LDcgQEAgaGVhcF9iZWdpbnNjYW4oUmVsYXRpb24gcmVsYXRpb24sIFNuYXBzaG90IHNuYXBzaG90 LAogCQkJCQkJCQkJCQkJCQkgIHNpemVvZihUQk1JdGVyYXRlUmVzdWx0KSk7CiAJfQogCisJc2Nh bi0+cnNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJcmV0dXJuIChUYWJsZVNjYW5EZXNj KSBzY2FuOwogfQpAQCAtMTI5OSw2ICsxMzAzLDEyIEBAIGhlYXBfcmVzY2FuKFRhYmxlU2NhbkRl c2Mgc3NjYW4sIFNjYW5LZXkga2V5LCBib29sIHNldF9wYXJhbXMsCiAJCXNjYW4tPnJzX2NidWYg PSBJbnZhbGlkQnVmZmVyOwogCX0KIAorCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4tPnJzX3ZtYnVm ZmVyKSkKKwl7CisJCVJlbGVhc2VCdWZmZXIoc2Nhbi0+cnNfdm1idWZmZXIpOworCQlzY2FuLT5y c192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJfQorCiAJLyoKIAkgKiBTT19UWVBFX0JJVE1B UFNDQU4gd291bGQgYmUgY2xlYW5lZCB1cCBoZXJlLCBidXQgaXQgZG9lcyBub3QgaG9sZCBhbnkK IAkgKiBhZGRpdGlvbmFsIGRhdGEgdnMgYSBub3JtYWwgSGVhcFNjYW4KQEAgLTEzMzEsNiArMTM0 MSw5IEBAIGhlYXBfZW5kc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuKQogCWlmIChCdWZmZXJJc1Zh bGlkKHNjYW4tPnJzX2NidWYpKQogCQlSZWxlYXNlQnVmZmVyKHNjYW4tPnJzX2NidWYpOwogCisJ aWYgKEJ1ZmZlcklzVmFsaWQoc2Nhbi0+cnNfdm1idWZmZXIpKQorCQlSZWxlYXNlQnVmZmVyKHNj YW4tPnJzX3ZtYnVmZmVyKTsKKwogCS8qCiAJICogTXVzdCBmcmVlIHRoZSByZWFkIHN0cmVhbSBi ZWZvcmUgZnJlZWluZyB0aGUgQnVmZmVyQWNjZXNzU3RyYXRlZ3kuCiAJICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBkN2ZhYzk0ODI2ZC4uMjdlMzQ5OGY1 ZjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtODUsNiAr ODUsNyBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfYmVnaW4oUmVsYXRpb24gcmVsLCB1aW50MzIgZmxh Z3MpCiAKIAloc2Nhbi0+eHNfYmFzZS5yZWwgPSByZWw7CiAJaHNjYW4tPnhzX2NidWYgPSBJbnZh bGlkQnVmZmVyOworCWhzY2FuLT54c192bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAJaHNjYW4t Pm1vZGlmaWVzX2Jhc2VfcmVsID0gIShmbGFncyAmIFNPX0hJTlRfUkVMX1JFQURfT05MWSk7CiAK IAlyZXR1cm4gJmhzY2FuLT54c19iYXNlOwpAQCAtMTAwLDYgKzEwMSwxMiBAQCBoZWFwYW1faW5k ZXhfZmV0Y2hfcmVzZXQoSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2NhbikKIAkJUmVsZWFzZUJ1ZmZl cihoc2Nhbi0+eHNfY2J1Zik7CiAJCWhzY2FuLT54c19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAl9 CisKKwlpZiAoQnVmZmVySXNWYWxpZChoc2Nhbi0+eHNfdm1idWZmZXIpKQorCXsKKwkJUmVsZWFz ZUJ1ZmZlcihoc2Nhbi0+eHNfdm1idWZmZXIpOworCQloc2Nhbi0+eHNfdm1idWZmZXIgPSBJbnZh bGlkQnVmZmVyOworCX0KIH0KIAogc3RhdGljIHZvaWQKQEAgLTEzOSw3ICsxNDYsOCBAQCBoZWFw YW1faW5kZXhfZmV0Y2hfdHVwbGUoc3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEgKnNjYW4sCiAJ CSAqIFBydW5lIHBhZ2UsIGJ1dCBvbmx5IGlmIHdlIHdlcmVuJ3QgYWxyZWFkeSBvbiB0aGlzIHBh Z2UKIAkJICovCiAJCWlmIChwcmV2X2J1ZiAhPSBoc2Nhbi0+eHNfY2J1ZikKLQkJCWhlYXBfcGFn ZV9wcnVuZV9vcHQoaHNjYW4tPnhzX2Jhc2UucmVsLCBoc2Nhbi0+eHNfY2J1Zik7CisJCQloZWFw X3BhZ2VfcHJ1bmVfb3B0KGhzY2FuLT54c19iYXNlLnJlbCwgaHNjYW4tPnhzX2NidWYsCisJCQkJ CQkJCWhzY2FuLT5tb2RpZmllc19iYXNlX3JlbCA/IE5VTEwgOiAmaHNjYW4tPnhzX3ZtYnVmZmVy KTsKIAl9CiAKIAkvKiBPYnRhaW4gc2hhcmUtbG9jayBvbiB0aGUgYnVmZmVyIHNvIHdlIGNhbiBl eGFtaW5lIHZpc2liaWxpdHkgKi8KQEAgLTI0NzIsNiArMjQ4MCw3IEBAIEJpdG1hcEhlYXBTY2Fu TmV4dEJsb2NrKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAlUQk1JdGVyYXRlUmVzdWx0ICp0Ym1yZXM7 CiAJT2Zmc2V0TnVtYmVyIG9mZnNldHNbVEJNX01BWF9UVVBMRVNfUEVSX1BBR0VdOwogCWludAkJ CW5vZmZzZXRzID0gLTE7CisJQnVmZmVyCSAgICp2bWJ1ZmZlciA9IE5VTEw7CiAKIAlBc3NlcnQo c2Nhbi0+cnNfZmxhZ3MgJiBTT19UWVBFX0JJVE1BUFNDQU4pOwogCUFzc2VydChoc2Nhbi0+cnNf cmVhZF9zdHJlYW0pOwpAQCAtMjUxOCw3ICsyNTI3LDkgQEAgQml0bWFwSGVhcFNjYW5OZXh0Qmxv Y2soVGFibGVTY2FuRGVzYyBzY2FuLAogCS8qCiAJICogUHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVu dGF0aW9uIGZvciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUuCiAJICovCi0JaGVhcF9wYWdl X3BydW5lX29wdChzY2FuLT5yc19yZCwgYnVmZmVyKTsKKwlpZiAoc2Nhbi0+cnNfZmxhZ3MgJiBT T19ISU5UX1JFTF9SRUFEX09OTFkpCisJCXZtYnVmZmVyID0gJmhzY2FuLT5yc192bWJ1ZmZlcjsK KwloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBidWZmZXIsIHZtYnVmZmVyKTsKIAog CS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZlciBjb250ZW50IHdo aWxlIGV4YW1pbmluZyB0dXBsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCAw M2I4ZGRjYzM4ZC4uMDRmMTAwNTQ0MDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j CkBAIC0yMDUsNyArMjA1LDkgQEAgc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhS ZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJICAgQnVmZmVyIGhlYXBfYnVmLAogCQkJCQkJCQkg ICBCdWZmZXIgdm1idWZmZXIsCiAJCQkJCQkJCSAgIGJvb2wgYmxrX2tub3duX2F2LAotCQkJCQkJ CQkgICBjb25zdCBQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkJCQkgICBQcnVuZVJlYXNvbiBy ZWFzb24sCisJCQkJCQkJCSAgIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLAorCQkJCQkJ CQkgICBQcnVuZVN0YXRlICpwcnN0YXRlLAogCQkJCQkJCQkgICB1aW50OCAqbmV3X3ZtYml0cywK IAkJCQkJCQkJICAgYm9vbCAqZG9fc2V0X3BkX3Zpcyk7CiAKQEAgLTIyMSw5ICsyMjMsMTMgQEAg c3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhSZWxhdGlvbiByZWxhdGlvbiwKICAq IGlmIHRoZXJlJ3Mgbm90IGFueSB1c2UgaW4gcHJ1bmluZy4KICAqCiAgKiBDYWxsZXIgbXVzdCBo YXZlIHBpbiBvbiB0aGUgYnVmZmVyLCBhbmQgbXVzdCAqbm90KiBoYXZlIGEgbG9jayBvbiBpdC4K KyAqCisgKiBJZiB2bWJ1ZmZlciBpcyBub3QgTlVMTCwgaXQgaXMgb2theSBmb3IgcHJ1bmluZyB0 byBzZXQgdGhlIHZpc2liaWxpdHkgbWFwIGlmCisgKiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4g V2Ugd2lsbCB0YWtlIGNhcmUgb2YgcGlubmluZyBhbmQsIGlmIG5lZWRlZCwKKyAqIHJlYWRpbmcg aW4gdGhlIHBhZ2Ugb2YgdGhlIHZpc2liaWxpdHkgbWFwLgogICovCiB2b2lkCi1oZWFwX3BhZ2Vf cHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQoraGVhcF9wYWdlX3By dW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwgQnVmZmVyICp2bWJ1ZmZl cikKIHsKIAlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCVRyYW5zYWN0aW9u SWQgcHJ1bmVfeGlkOwpAQCAtMzA1LDYgKzMxMSwxMyBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQogCQkJCS5jdXRvZmZzID0gTlVMTCwKIAkJ CX07CiAKKwkJCWlmICh2bWJ1ZmZlcikKKwkJCXsKKwkJCQl2aXNpYmlsaXR5bWFwX3BpbihyZWxh dGlvbiwgQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwgdm1idWZmZXIpOworCQkJCXBhcmFt cy5vcHRpb25zIHw9IEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVklTOworCQkJCXBhcmFtcy52bWJ1 ZmZlciA9ICp2bWJ1ZmZlcjsKKwkJCX0KKwogCQkJaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo JnBhcmFtcywgJnByZXN1bHQsICZkdW1teV9vZmZfbG9jLAogCQkJCQkJCQkJICAgTlVMTCwgTlVM TCk7CiAKQEAgLTg2Myw2ICs4NzYsOSBAQCBnZXRfY29uZmxpY3RfeGlkKGJvb2wgZG9fcHJ1bmUs IGJvb2wgZG9fZnJlZXplLCBib29sIGRvX3NldF92bSwgdWludDggbmV3X3ZtYml0cwogICogY29y cnVwdGVkLCBpdCB3aWxsIGZpeCB0aGVtIGJ5IGNsZWFyaW5nIHRoZSBWTSBiaXQgYW5kIHBhZ2Ug aGludC4gVGhpcyBkb2VzCiAgKiBub3QgbmVlZCB0byBiZSBkb25lIGluIGEgY3JpdGljYWwgc2Vj dGlvbi4KICAqCisgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb25seSBhZnRlciBkb19mcmVlemUg aGFzIGJlZW4gZGVjaWRlZCAoYW5kIGRvX3BydW5lCisgKiBoYXMgYmVlbiBzZXQpLCBhcyB0aGVz ZSBmYWN0b3IgaW50byBvdXIgaGV1cmlzdGljLWJhc2VkIGRlY2lzaW9uLgorICoKICAqIFJldHVy bnMgdHJ1ZSBpZiBvbmUgb3IgYm90aCBWTSBiaXRzIHNob3VsZCBiZSBzZXQsIGFsb25nIHdpdGgg dGhlIGRlc2lyZWQKICAqIGZsYWdzIGluICpuZXdfdm1iaXRzLiBBbHNvIGluZGljYXRlcyB2aWEg ZG9fc2V0X3BkX3ZpcyB3aGV0aGVyCiAgKiBQRF9BTExfVklTSUJMRSBzaG91bGQgYmUgc2V0IG9u IHRoZSBoZWFwIHBhZ2UuCkBAIC04NzMsNyArODg5LDkgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3Zp cyhSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJICAgQnVmZmVyIGhlYXBfYnVmLAogCQkJCQkgICBC dWZmZXIgdm1idWZmZXIsCiAJCQkJCSAgIGJvb2wgYmxrX2tub3duX2F2LAotCQkJCQkgICBjb25z dCBQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkgICBQcnVuZVJlYXNvbiByZWFzb24sCisJCQkJ CSAgIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLAorCQkJCQkgICBQcnVuZVN0YXRlICpw cnN0YXRlLAogCQkJCQkgICB1aW50OCAqbmV3X3ZtYml0cywKIAkJCQkJICAgYm9vbCAqZG9fc2V0 X3BkX3ZpcykKIHsKQEAgLTg4OCw2ICs5MDYsMjQgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhS ZWxhdGlvbiByZWxhdGlvbiwKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAorCS8qCisJICogSWYgdGhp cyBpcyBhbiBvbi1hY2Nlc3MgY2FsbCBhbmQgd2UncmUgbm90IGFjdHVhbGx5IHBydW5pbmcsIGF2 b2lkCisJICogc2V0dGluZyB0aGUgdmlzaWJpbGl0eSBtYXAgaWYgaXQgd291bGQgbmV3bHkgZGly dHkgdGhlIGhlYXAgcGFnZSBvciwgaWYKKwkgKiB0aGUgcGFnZSBpcyBhbHJlYWR5IGRpcnR5LCBp ZiBkb2luZyBzbyB3b3VsZCByZXF1aXJlIGluY2x1ZGluZyBhCisJICogZnVsbC1wYWdlIGltYWdl IChGUEkpIG9mIHRoZSBoZWFwIHBhZ2UgaW4gdGhlIFdBTC4gVGhpcyBzaXR1YXRpb24KKwkgKiBz aG91bGQgYmUgcmFyZSwgYXMgb24tYWNjZXNzIHBydW5pbmcgaXMgb25seSBhdHRlbXB0ZWQgd2hl bgorCSAqIHBkX3BydW5lX3hpZCBpcyB2YWxpZC4KKwkgKi8KKwlpZiAocmVhc29uID09IFBSVU5F X09OX0FDQ0VTUyAmJgorCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSAmJgorCQkhZG9fcHJ1bmUgJiYg IWRvX2ZyZWV6ZSAmJgorCQkoIUJ1ZmZlcklzRGlydHkoaGVhcF9idWYpIHx8IFhMb2dDaGVja0J1 ZmZlck5lZWRzQmFja3VwKGhlYXBfYnVmKSkpCisJeworCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9 IGZhbHNlOworCQlwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CisJCXJldHVybiBmYWxzZTsK Kwl9CisKIAkvKgogCSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0IHRoZSB2aXNp YmlsaXR5IG1hcCBwYWdlIGlzIHNldCB3aGlsZQogCSAqIHRoZSBwYWdlLWxldmVsIGJpdCBpcyBj bGVhciwgYnV0IHRoZSByZXZlcnNlIGlzIGFsbG93ZWQgKGlmIGNoZWNrc3VtcwpAQCAtOTIxLDE0 ICs5NTcsMTUgQEAgaGVhcF9wYWdlX3dpbGxfc2V0X3ZpcyhSZWxhdGlvbiByZWxhdGlvbiwKIAkg KiBXQUwtbG9nZ2VkLgogCSAqCiAJICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRoZSB2aXNpYmls aXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKLQkgKiBwYWdlLWxldmVsIGJp dCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgYml0IGdvdAotCSAq IGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxlZCwgc28g d2UgbXVzdCByZWNoZWNrCi0JICogd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1ZGluZyB0 aGF0IHRoZSBWTSBpcyBjb3JydXB0LgorCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93 ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IGluIHZhY3V1bSB0aGUgYml0CisJICogZ290IGNsZWFy ZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxlZCwgc28gd2UgbXVz dAorCSAqIHJlY2hlY2sgd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1ZGluZyB0aGF0IHRo ZSBWTSBpcyBjb3JydXB0LgogCSAqCiAJICogQ2FsbGVycyB3aGljaCBkaWQgbm90IGNoZWNrIHRo ZSB2aXNpYmlsaXR5IG1hcCBhbmQgZGV0ZXJtaW5lCiAJICogYmxrX2tub3duX2F2IHdpbGwgbm90 IGJlIGVsaWdpYmxlIGZvciB0aGlzLCBob3dldmVyIHRoZSBjb3N0IG9mCiAJICogcG90ZW50aWFs bHkgbmVlZGluZyB0byByZWFkIHRoZSB2aXNpYmlsaXR5IG1hcCBmb3IgcGFnZXMgdGhhdCBhcmUg bm90Ci0JICogYWxsLXZpc2libGUgaXMgdG9vIGhpZ2ggdG8ganVzdGlmeSBnZW5lcmFsaXppbmcg dGhlIGNoZWNrLgorCSAqIGFsbC12aXNpYmxlIGlzIHRvbyBoaWdoIHRvIGp1c3RpZnkgZ2VuZXJh bGl6aW5nIHRoZSBjaGVjay4gQSBmdXR1cmUKKwkgKiB2YWN1dW0gd2lsbCBoYXZlIHRvIHRha2Ug Y2FyZSBvZiBmaXhpbmcgdGhlIGNvcnJ1cHRpb24uCiAJICovCiAJZWxzZSBpZiAoYmxrX2tub3du X2F2ICYmICFQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYKIAkJCSB2aXNpYmlsaXR5bWFw X2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBfYmxrLCAmdm1idWZmZXIpICE9IDApCkBAIC0xMTQ5 LDYgKzExODYsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShQcnVuZUZyZWV6ZVBhcmFt cyAqcGFyYW1zLAogCSAqLwogCWRvX3NldF92bSA9IGhlYXBfcGFnZV93aWxsX3NldF92aXMocGFy YW1zLT5yZWxhdGlvbiwKIAkJCQkJCQkJCSAgIGJsb2Nrbm8sIGJ1ZmZlciwgdm1idWZmZXIsIHBh cmFtcy0+YmxrX2tub3duX2F2LAorCQkJCQkJCQkJICAgcGFyYW1zLT5yZWFzb24sIGRvX3BydW5l LCBkb19mcmVlemUsCiAJCQkJCQkJCQkgICAmcHJzdGF0ZSwgJm5ld192bWJpdHMsICZkb19zZXRf cGRfdmlzKTsKIAogCS8qIFdlIHNob3VsZCBvbmx5IHNldCB0aGUgVk0gaWYgUERfQUxMX1ZJU0lC TEUgaXMgc2V0IG9yIHdpbGwgYmUgKi8KQEAgLTEyMjQsMTMgKzEyNjIsMjkgQEAgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoUHJ1bmVGcmVlemVQYXJhbXMgKnBhcmFtcywKIAkJCW9sZF92bWJp dHMgPSB2aXNpYmlsaXR5bWFwX3NldChibG9ja25vLAogCQkJCQkJCQkJCSAgIHZtYnVmZmVyLCBu ZXdfdm1iaXRzLAogCQkJCQkJCQkJCSAgIHBhcmFtcy0+cmVsYXRpb24tPnJkX2xvY2F0b3IpOwot CQkJQXNzZXJ0KG9sZF92bWJpdHMgIT0gbmV3X3ZtYml0cyk7CisKKwkJCS8qCisJCQkgKiBJZiBv bi1hY2Nlc3MgcHJ1bmluZyBzZXQgdGhlIFZNIGluIGJldHdlZW4gd2hlbiB2YWN1dW0gZmlyc3QK KwkJCSAqIGNoZWNrZWQgdGhlIHZpc2liaWxpdHkgbWFwIGFuZCBkZXRlcm1pbmVkIGJsa19rbm93 bl9hdiBhbmQgd2hlbgorCQkJICogd2UgYWN0dWFsbHkgcHJ1bmUgdGhlIHBhZ2UsIHdlIGNvdWxk IGVuZCB1cCB0cnlpbmcgdG8gc2V0IHRoZQorCQkJICogVk0gb25seSB0byBmaW5kIGl0IGlzIGFs cmVhZHkgc2V0LgorCQkJICovCisJCQlpZiAob2xkX3ZtYml0cyA9PSBuZXdfdm1iaXRzKQorCQkJ eworCQkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CisJCQkJLyog VW5zZXQgc28gd2UgZG9uJ3QgZW1pdCBXQUwgc2luY2Ugbm8gY2hhbmdlIG9jY3VyZWQgKi8KKwkJ CQlkb19zZXRfdm0gPSBmYWxzZTsKKwkJCX0KIAkJfQogCiAJCS8qCi0JCSAqIEVtaXQgYSBXQUwg WExPR19IRUFQMl9QUlVORSogcmVjb3JkIHNob3dpbmcgd2hhdCB3ZSBkaWQKKwkJICogRW1pdCBh IFdBTCBYTE9HX0hFQVAyX1BSVU5FKiByZWNvcmQgc2hvd2luZyB3aGF0IHdlIGRpZC4gSWYgd2Ug d2VyZQorCQkgKiBvbmx5IHBsYW5uaW5nIHRvIHVwZGF0ZSB0aGUgVk0sIGFuZCBpdCB0dXJucyBv dXQgdGhhdCBpdCB3YXMKKwkJICogYWxyZWFkeSBzZXQsIHRoZXJlIGlzIG5vIG5lZWQgdG8gZW1p dCBXQUwuIEFzIHN1Y2gsIHdlIG11c3QgY2hlY2sKKwkJICogdGhhdCBzb21lIGNoYW5nZSBpcyBy ZXF1aXJlZCBhZ2Fpbi4KIAkJICovCi0JCWlmIChSZWxhdGlvbk5lZWRzV0FMKHBhcmFtcy0+cmVs YXRpb24pKQorCQlpZiAoUmVsYXRpb25OZWVkc1dBTChwYXJhbXMtPnJlbGF0aW9uKSAmJgorCQkJ KGRvX3BydW5lIHx8IGRvX2ZyZWV6ZSB8fCBkb19zZXRfdm0pKQogCQl7CiAJCQlsb2dfaGVhcF9w cnVuZV9hbmRfZnJlZXplKHBhcmFtcy0+cmVsYXRpb24sIGJ1ZmZlciwKIAkJCQkJCQkJCSAgZG9f c2V0X3ZtID8gdm1idWZmZXIgOiBJbnZhbGlkQnVmZmVyLApAQCAtMjQ0MCw4ICsyNDk0LDggQEAg aGVhcF9sb2dfZnJlZXplX3BsYW4oSGVhcFR1cGxlRnJlZXplICp0dXBsZXMsIGludCBudHVwbGVz LAogICogLSBSZWFwaW5nOiBEdXJpbmcgdmFjdXVtIHBoYXNlIElJSSwgaXRlbXMgdGhhdCBhcmUg YWxyZWFkeSBMUF9ERUFEIGFyZQogICogICBtYXJrZWQgYXMgdW51c2VkLgogICoKLSAqIC0gVk0g dXBkYXRlczogQWZ0ZXIgdmFjdXVtIHBoYXNlcyBJIGFuZCBJSUksIHRoZSBoZWFwIHBhZ2UgbWF5 IGJlIG1hcmtlZAotICogICBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbi4KKyAqIC0gVk0gdXBk YXRlczogQWZ0ZXIgdmFjdXVtIHBoYXNlcyBJIGFuZCBJSUkgYW5kIG9uLWFjY2VzcywgdGhlIGhl YXAgcGFnZQorICogICBtYXkgYmUgbWFya2VkIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuLgog ICoKICAqIFRoZXNlIGNoYW5nZXMgYWxsIGhhcHBlbiB0b2dldGhlciwgc28gd2UgdXNlIGEgc2lu Z2xlIFdBTCByZWNvcmQgZm9yIHRoZW0KICAqIGFsbC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBmYzJj ODMxNGU5Ny4uM2YyYjVlZWRmZmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTk1LDYgKzk1LDEzIEBA IHR5cGVkZWYgc3RydWN0IEhlYXBTY2FuRGVzY0RhdGEKIAkgKi8KIAlQYXJhbGxlbEJsb2NrVGFi bGVTY2FuV29ya2VyRGF0YSAqcnNfcGFyYWxsZWx3b3JrZXJkYXRhOwogCisJLyoKKwkgKiBGb3Ig c2VxdWVudGlhbCBzY2FucyBhbmQgYml0bWFwIGhlYXAgc2NhbnMuIElmIHRoZSByZWxhdGlvbiBp cyBub3QKKwkgKiBiZWluZyBtb2RpZmllZCwgb24tYWNjZXNzIHBydW5pbmcgbWF5IHJlYWQgaW4g dGhlIGN1cnJlbnQgaGVhcCBwYWdlJ3MKKwkgKiBjb3JyZXNwb25kaW5nIFZNIGJsb2NrIHRvIHRo aXMgYnVmZmVyLgorCSAqLworCUJ1ZmZlcgkJcnNfdm1idWZmZXI7CisKIAkvKiB0aGVzZSBmaWVs ZHMgb25seSB1c2VkIGluIHBhZ2UtYXQtYS10aW1lIG1vZGUgYW5kIGZvciBiaXRtYXAgc2NhbnMg Ki8KIAl1aW50MzIJCXJzX2NpbmRleDsJCS8qIGN1cnJlbnQgdHVwbGUncyBpbmRleCBpbiB2aXN0 dXBsZXMgKi8KIAl1aW50MzIJCXJzX250dXBsZXM7CQkvKiBudW1iZXIgb2YgdmlzaWJsZSB0dXBs ZXMgb24gcGFnZSAqLwpAQCAtMTE3LDggKzEyNCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEZl dGNoSGVhcERhdGEKIHsKIAlJbmRleEZldGNoVGFibGVEYXRhIHhzX2Jhc2U7CS8qIEFNIGluZGVw ZW5kZW50IHBhcnQgb2YgdGhlIGRlc2NyaXB0b3IgKi8KIAotCUJ1ZmZlcgkJeHNfY2J1ZjsJCS8q IGN1cnJlbnQgaGVhcCBidWZmZXIgaW4gc2NhbiwgaWYgYW55ICovCi0JLyogTkI6IGlmIHhzX2Ni dWYgaXMgbm90IEludmFsaWRCdWZmZXIsIHdlIGhvbGQgYSBwaW4gb24gdGhhdCBidWZmZXIgKi8K KwkvKgorCSAqIEN1cnJlbnQgaGVhcCBidWZmZXIgaW4gc2NhbiwgaWYgYW55LiBOQjogaWYgeHNf Y2J1ZiBpcyBub3QKKwkgKiBJbnZhbGlkQnVmZmVyLCB3ZSBob2xkIGEgcGluIG9uIHRoYXQgYnVm ZmVyLgorCSAqLworCUJ1ZmZlcgkJeHNfY2J1ZjsKKworCS8qCisJICogRm9yIGluZGV4IHNjYW5z IHRoYXQgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyBoZWFwIHRhYmxlLCBvbi1hY2Nlc3MK KwkgKiBwcnVuaW5nIG1heSByZWFkIGluIHRoZSBjdXJyZW50IGhlYXAgcGFnZSdzIGNvcnJlc3Bv bmRpbmcgVk0gYmxvY2sgdG8KKwkgKiB0aGlzIGJ1ZmZlci4KKwkgKi8KKwlCdWZmZXIJCXhzX3Zt YnVmZmVyOwogCiAJLyoKIAkgKiBTb21lIG9wdGltaXphdGlvbnMgY2FuIG9ubHkgYmUgcGVyZm9y bWVkIGlmIHRoZSBxdWVyeSBkb2VzIG5vdCBtb2RpZnkKQEAgLTQyNSw3ICs0NDIsOCBAQCBleHRl cm4gVHJhbnNhY3Rpb25JZCBoZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMoUmVsYXRpb24gcmVsLAog CQkJCQkJCQkJCQkgIFRNX0luZGV4RGVsZXRlT3AgKmRlbHN0YXRlKTsKIAogLyogaW4gaGVhcC9w cnVuZWhlYXAuYyAqLwotZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcik7CitleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfb3B0 KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQlCdWZmZXIgKnZtYnVm ZmVyKTsKIGV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFBydW5lRnJlZXpl UGFyYW1zICpwYXJhbXMsCiAJCQkJCQkJCQkgICBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwK IAkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqb2ZmX2xvYywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbCBiL3NyYy90ZXN0L3Jl Y292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbAppbmRleCBlYmUyZmFlMTc4 OS4uYmRkOWYwYTYyY2QgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5k YnlfbG9naWNhbF9kZWNvZGluZy5wbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAzNV9zdGFu ZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKQEAgLTI5Niw2ICsyOTYsNyBAQCB3YWxfbGV2ZWwgPSAn bG9naWNhbCcKIG1heF9yZXBsaWNhdGlvbl9zbG90cyA9IDQKIG1heF93YWxfc2VuZGVycyA9IDQK IGF1dG92YWN1dW0gPSBvZmYKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KIH0pOwogJG5vZGVf cHJpbWFyeS0+ZHVtcF9pbmZvOwogJG5vZGVfcHJpbWFyeS0+c3RhcnQ7CkBAIC03NDgsNyArNzQ5 LDcgQEAgY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRoYW5kbGUsCiAkbG9nc3RhcnQgPSAt cyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOwogCiByZWFjdGl2ZV9zbG90c19jaGFuZ2VfaGZzX2Fu ZF93YWl0X2Zvcl94bWlucygnc2hhcmVkX3Jvd19yZW1vdmFsXycsCi0JJ25vX2NvbmZsaWN0Xycs IDAsIDEpOworCSdub19jb25mbGljdF8nLCAxLCAwKTsKIAogIyBUaGlzIHNob3VsZCBub3QgdHJp Z2dlciBhIGNvbmZsaWN0CiB3YWl0X3VudGlsX3ZhY3V1bV9jYW5fcmVtb3ZlKAotLSAKMi40My4w Cgo= --0000000000001ceba70645144821 Content-Type: text/x-patch; charset="UTF-8"; name="v23-0014-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v23-0014-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_miqm0xyd13 RnJvbSA1OWQ1ODE1NjcxNjQyNjY2ODAyMjQwMmQwMzBjZjhkZTdmY2FjOTI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MjMgMTQvMTRdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0Ck1JTUUtVmVyc2lvbjog MS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5z ZmVyLUVuY29kaW5nOiA4Yml0CgpOb3cgdGhhdCB2aXNpYmlsaXR5IG1hcCAoVk0pIHVwZGF0ZXMg Y2FuIG9jY3VyIGR1cmluZyByZWFkLW9ubHkgcXVlcmllcywKaXQgbWFrZXMgc2Vuc2UgdG8gYWxz byBzZXQgdGhlIHBhZ2XigJlzIHBkX3BydW5lX3hpZCBoaW50IGR1cmluZyBpbnNlcnRzLgpUaGlz IGVuYWJsZXMgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0byBydW4gYWZ0ZXIgYSBwYWdl IGlzCmZpbGxlZCB3aXRoIG5ld2x5IGluc2VydGVkIHR1cGxlcyB0aGUgZmlyc3QgdGltZSBpdCBp cyByZWFkLgoKVGhpcyBjaGFuZ2UgYWxzbyBhZGRyZXNzZXMgYSBsb25nLXN0YW5kaW5nIG5vdGUg aW4gaGVhcF9pbnNlcnQoKSBhbmQKaGVhcF9tdWx0aV9pbnNlcnQoKSwgd2hpY2ggb2JzZXJ2ZWQg dGhhdCBzZXR0aW5nIHBkX3BydW5lX3hpZCB3b3VsZApoZWxwIGNsZWFuIHVwIGFib3J0ZWQgaW5z ZXJ0aW9ucyBzb29uZXIuIFdpdGhvdXQgaXQsIHN1Y2ggdHVwbGVzIG1pZ2h0CmxpbmdlciB1bnRp bCBWQUNVVU0sIHdoZXJlYXMgbm93IHRoZXkgY2FuIGJlIHBydW5lZCBlYXJsaWVyLgoKU2V0dGlu ZyBwZF9wcnVuZV94aWQgb24gaW5zZXJ0IGNhbiBjYXVzZSBhIHBhZ2UgdG8gYmUgZGlydGllZCBh bmQKd3JpdHRlbiBvdXQgd2hlbiBpdCBwcmV2aW91c2x5IHdvdWxkIG5vdCBoYXZlIGJlZW4sIGFm ZmV0Y3RpbmcgdGhlCnJlcG9ydGVkIG51bWJlciBvZiBoaXRzIGluIHRoZSBpbmRleC1raWxsdHVw bGVzIGlzb2xhdGlvbiB0ZXN0LiBJdCBpcwp1bmNsZWFyIGlmIHRoaXMgaXMgYSBidWcgaW4gdGhl IHdheSBoaXRzIGFyZSB0cmFja2VkLCBhIGZhdWx0eSB0ZXN0CmV4cGVjdGF0aW9uLCBvciBpZiBz aW1wbHkgdXBkYXRpbmcgdGhlIHRlc3QncyBleHBlY3RlZCBvdXRwdXQgaXMKc3VmZmljaWVudCBy ZW1lZGlhdGlvbi4KCmNpLW9zLW9ubHk6Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMgICAgICAgICAgICAgIHwgMjUgKysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgICAgICAgIHwgMTUgKysrKysrKysrKy0KIC4uLi9t b2R1bGVzL2luZGV4L2V4cGVjdGVkL2tpbGx0dXBsZXMub3V0ICAgICB8ICA2ICsrLS0tCiAzIGZp bGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtLmMKaW5kZXggZWNjMDQzOTBhYzcuLmQ1ZjNmODk3ZGQzIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYwpAQCAtMjExOSw2ICsyMTE5LDcgQEAgaGVhcF9pbnNlcnQoUmVsYXRp b24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJZCBjaWQsCiAJVHJhbnNhY3Rpb25J ZCB4aWQgPSBHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpOwogCUhlYXBUdXBsZQloZWFwdHVwOwog CUJ1ZmZlcgkJYnVmZmVyOworCVBhZ2UJCXBhZ2U7CiAJQnVmZmVyCQl2bWJ1ZmZlciA9IEludmFs aWRCdWZmZXI7CiAJYm9vbAkJYWxsX3Zpc2libGVfY2xlYXJlZCA9IGZhbHNlOwogCkBAIC0yMTc4 LDE1ICsyMTc5LDE5IEBAIGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUg dHVwLCBDb21tYW5kSWQgY2lkLAogCX0KIAogCS8qCi0JICogWFhYIFNob3VsZCB3ZSBzZXQgUGFn ZVNldFBydW5hYmxlIG9uIHRoaXMgcGFnZSA/CisJICogU2V0IHBkX3BydW5lX3hpZCB0byB0cmln Z2VyIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgb25jZSB0aGUgcGFnZQorCSAqIGlzIGZ1 bGwgc28gdGhhdCB3ZSBjYW4gc2V0IHRoZSBwYWdlIGFsbC12aXNpYmxlIGluIHRoZSBWTS4KIAkg KgotCSAqIFRoZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24gbWF5IGV2ZW50dWFsbHkgYWJvcnQgdGh1 cyBtYWtpbmcgdGhpcyB0dXBsZQotCSAqIERFQUQgYW5kIGhlbmNlIGF2YWlsYWJsZSBmb3IgcHJ1 bmluZy4gVGhvdWdoIHdlIGRvbid0IHdhbnQgdG8gb3B0aW1pemUKLQkgKiBmb3IgYWJvcnRzLCBp ZiBubyBvdGhlciB0dXBsZSBpbiB0aGlzIHBhZ2UgaXMgVVBEQVRFZC9ERUxFVEVkLCB0aGUKLQkg KiBhYm9ydGVkIHR1cGxlIHdpbGwgbmV2ZXIgYmUgcHJ1bmVkIHVudGlsIG5leHQgdmFjdXVtIGlz IHRyaWdnZXJlZC4KKwkgKiBTZXR0aW5nIHBkX3BydW5lX3hpZCBpcyBhbHNvIGhhbmR5IGlmIHRo ZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24KKwkgKiBldmVudHVhbGx5IGFib3J0cyBtYWtpbmcgdGhp cyB0dXBsZSBERUFEIGFuZCBoZW5jZSBhdmFpbGFibGUgZm9yCisJICogcHJ1bmluZy4gSWYgbm8g b3RoZXIgdHVwbGUgaW4gdGhpcyBwYWdlIGlzIFVQREFURWQvREVMRVRFZCwgdGhlIGFib3J0ZWQK KwkgKiB0dXBsZSB3b3VsZCBuZXZlciBvdGhlcndpc2UgYmUgcHJ1bmVkIHVudGlsIG5leHQgdmFj dXVtIGlzIHRyaWdnZXJlZC4KIAkgKgotCSAqIElmIHlvdSBkbyBhZGQgUGFnZVNldFBydW5hYmxl IGhlcmUsIGFkZCBpdCBpbiBoZWFwX3hsb2dfaW5zZXJ0IHRvby4KKwkgKiBEb24ndCBzZXQgaXQg aWYgd2UgYXJlIGluIGJvb3RzdHJhcCBtb2RlLCB0aG91Z2guCiAJICovCisJcGFnZSA9IEJ1ZmZl ckdldFBhZ2UoYnVmZmVyKTsKKwlpZiAoVHJhbnNhY3Rpb25JZElzTm9ybWFsKHhpZCkpCisJCVBh Z2VTZXRQcnVuYWJsZShwYWdlLCB4aWQpOwogCiAJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CiAK QEAgLTIxOTYsNyArMjIwMSw2IEBAIGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFw VHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAogCQl4bF9oZWFwX2luc2VydCB4bHJlYzsKIAkJeGxf aGVhcF9oZWFkZXIgeGxoZHI7CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwotCQlQYWdlCQlwYWdlID0g QnVmZmVyR2V0UGFnZShidWZmZXIpOwogCQl1aW50OAkJaW5mbyA9IFhMT0dfSEVBUF9JTlNFUlQ7 CiAJCWludAkJCWJ1ZmZsYWdzID0gMDsKIApAQCAtMjU2MCw4ICsyNTY0LDEzIEBAIGhlYXBfbXVs dGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQg bnR1cGxlcywKIAkJfQogCiAJCS8qCi0JCSAqIFhYWCBTaG91bGQgd2Ugc2V0IFBhZ2VTZXRQcnVu YWJsZSBvbiB0aGlzIHBhZ2UgPyBTZWUgaGVhcF9pbnNlcnQoKQorCQkgKiBTZXQgcGRfcHJ1bmVf eGlkLiBTZWUgaGVhcF9pbnNlcnQoKSBmb3IgbW9yZSBvbiB3aHkgd2UgZG8gdGhpcyB3aGVuCisJ CSAqIGluc2VydGluZyB0dXBsZXMuIFRoaXMgb25seSBtYWtlcyBzZW5zZSBpZiB3ZSBhcmVuJ3Qg YWxyZWFkeQorCQkgKiBzZXR0aW5nIHRoZSBwYWdlIGZyb3plbiBpbiB0aGUgVk0uIFdlIGFsc28g ZG9uJ3Qgc2V0IGl0IGluCisJCSAqIGJvb3RzdHJhcCBtb2RlLgogCQkgKi8KKwkJaWYgKCFhbGxf ZnJvemVuX3NldCAmJiBUcmFuc2FjdGlvbklkSXNOb3JtYWwoeGlkKSkKKwkJCVBhZ2VTZXRQcnVu YWJsZShwYWdlLCB4aWQpOwogCiAJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCBmMGRlMmMxMzZhMC4uY2Y2MmE4ZGY2N2Mg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtNDY1LDYgKzQ2NSwxMiBA QCBoZWFwX3hsb2dfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCiAJCWZyZWVzcGFj ZSA9IFBhZ2VHZXRIZWFwRnJlZVNwYWNlKHBhZ2UpOyAvKiBuZWVkZWQgdG8gdXBkYXRlIEZTTSBi ZWxvdyAqLwogCisJCS8qCisJCSAqIFNldCB0aGUgcGFnZSBwcnVuYWJsZSB0byB0cmlnZ2VyIG9u LWFjY2VzcyBwcnVuaW5nIGxhdGVyIHdoaWNoIG1heQorCQkgKiBzZXQgdGhlIHBhZ2UgYWxsLXZp c2libGUgaW4gdGhlIFZNLgorCQkgKi8KKwkJUGFnZVNldFBydW5hYmxlKHBhZ2UsIFhMb2dSZWNH ZXRYaWQocmVjb3JkKSk7CisKIAkJUGFnZVNldExTTihwYWdlLCBsc24pOwogCiAJCWlmICh4bHJl Yy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NMRUFSRUQpCkBAIC02MTQsOSArNjIw LDE2IEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJ CWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NMRUFSRUQpCiAJCQlQ YWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2UpOwogCi0JCS8qIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9T RVQgaW1wbGllcyB0aGF0IGFsbCB0dXBsZXMgYXJlIHZpc2libGUgKi8KKwkJLyoKKwkJICogWExI X0lOU0VSVF9BTExfRlJPWkVOX1NFVCBpbXBsaWVzIHRoYXQgYWxsIHR1cGxlcyBhcmUgdmlzaWJs ZS4gSWYKKwkJICogd2UgYXJlIG5vdCBzZXR0aW5nIHRoZSBwYWdlIGZyb3plbiwgdGhlbiBzZXQg dGhlIHBhZ2UncyBwcnVuYWJsZQorCQkgKiBoaW50IHNvIHRoYXQgd2UgdHJpZ2dlciBvbi1hY2Nl c3MgcHJ1bmluZyBsYXRlciB3aGljaCBtYXkgc2V0IHRoZQorCQkgKiBwYWdlIGFsbC12aXNpYmxl IGluIHRoZSBWTS4KKwkJICovCiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9G Uk9aRU5fU0VUKQogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJCWVsc2UKKwkJCVBhZ2VT ZXRQcnVuYWJsZShwYWdlLCBYTG9nUmVjR2V0WGlkKHJlY29yZCkpOwogCiAJCU1hcmtCdWZmZXJE aXJ0eShidWZmZXIpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvaW5kZXgvZXhw ZWN0ZWQva2lsbHR1cGxlcy5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2luZGV4L2V4cGVjdGVkL2tp bGx0dXBsZXMub3V0CmluZGV4IGJlN2RkZDc1NmVmLi5iMjlmMjQzNGIwMCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvbW9kdWxlcy9pbmRleC9leHBlY3RlZC9raWxsdHVwbGVzLm91dAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL2luZGV4L2V4cGVjdGVkL2tpbGx0dXBsZXMub3V0CkBAIC01NCw3ICs1NCw3 IEBAIHN0ZXAgZmx1c2g6IFNFTEVDVCBGUk9NIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOwog c3RlcCByZXN1bHQ6IFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgLSBjb3Vu dGVyLmhlYXBfYWNjZXNzZXMgQVMgbmV3X2hlYXBfYWNjZXNzZXMgRlJPTSBjb3VudGVyLCBwZ19z dGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnOwogbmV3 X2hlYXBfYWNjZXNzZXMKIC0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAgICAgMQorICAg ICAgICAgICAgICAgIDIKICgxIHJvdykKIAogc3RlcCBtZWFzdXJlOiBVUERBVEUgY291bnRlciBT RVQgaGVhcF9hY2Nlc3NlcyA9IChTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0 IEZST00gcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1 cGxlJyk7CkBAIC0xMzAsNyArMTMwLDcgQEAgc3RlcCBmbHVzaDogU0VMRUNUIEZST00gcGdfc3Rh dF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBzdGVwIHJlc3VsdDogU0VMRUNUIGhlYXBfYmxrc19yZWFk ICsgaGVhcF9ibGtzX2hpdCAtIGNvdW50ZXIuaGVhcF9hY2Nlc3NlcyBBUyBuZXdfaGVhcF9hY2Nl c3NlcyBGUk9NIGNvdW50ZXIsIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAn a2lsbF9wcmlvcl90dXBsZSc7CiBuZXdfaGVhcF9hY2Nlc3NlcwogLS0tLS0tLS0tLS0tLS0tLS0K LSAgICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAgMgogKDEgcm93KQogCiBzdGVwIG1l YXN1cmU6IFVQREFURSBjb3VudGVyIFNFVCBoZWFwX2FjY2Vzc2VzID0gKFNFTEVDVCBoZWFwX2Js a3NfcmVhZCArIGhlYXBfYmxrc19oaXQgRlJPTSBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSBy ZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnKTsKQEAgLTI4Myw3ICsyODMsNyBAQCBzdGVwIGZs dXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIHN0ZXAgcmVzdWx0 OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IC0gY291bnRlci5oZWFwX2Fj Y2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZST00gY291bnRlciwgcGdfc3RhdGlvX2FsbF90 YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJzsKIG5ld19oZWFwX2FjY2Vz c2VzCiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAg ICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTogVVBEQVRFIGNvdW50ZXIgU0VUIGhlYXBfYWNj ZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCBGUk9NIHBnX3N0 YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZScpOwotLSAK Mi40My4wCgo= --0000000000001ceba70645144821--