<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>238260</bug_id>
          
          <creation_ts>2022-03-23 07:29:24 -0700</creation_ts>
          <short_desc>[css-cascade] Optimize code for deferred properties</short_desc>
          <delta_ts>2022-04-20 09:36:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>238345</dependson>
          <blocked>236199</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Oriol Brufau">obrufau</reporter>
          <assigned_to name="Oriol Brufau">obrufau</assigned_to>
          <cc>darin</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1854162</commentid>
    <comment_count>0</comment_count>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-03-23 07:29:24 -0700</bug_when>
    <thetext>Declarations for deferred properties are just appended to a vector, which can grow huge.
Then StyleBuilder will apply them one by one.

The point of deferred properties is that they should be applied in relative order.
But if a property appears multiple times, we should only care about the last occurrence.

Testcase:

    &lt;!DOCTYPE html&gt;
    &lt;style&gt;
    &lt;/style&gt;
    &lt;div&gt;&lt;/div&gt;
    &lt;script&gt;
    const sheet = document.styleSheets[0];
    for (let i=0; i &lt; 3e6; ++i) {
      sheet.insertRule(`.styled { box-shadow: ${i}px 0px blue }`, i);
    }
    const target = document.querySelector(&quot;div&quot;);
    getComputedStyle(target).boxShadow;
    const t = performance.now();
    target.className = &quot;styled&quot;;
    getComputedStyle(target).boxShadow;
    document.body.prepend(performance.now() - t);
    &lt;/script&gt;

It takes about 2500 ms to compute the new style.

If instead use `.styled { color: rgb(${i},0,0) }`, then it&apos;s about 1600 ms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854166</commentid>
    <comment_count>1</comment_count>
      <attachid>455498</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-03-23 07:47:55 -0700</bug_when>
    <thetext>Created attachment 455498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854168</commentid>
    <comment_count>2</comment_count>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-03-23 07:57:10 -0700</bug_when>
    <thetext>Antti, in bug 236272 comment 9 you argue against having a HashMap. Would an array be better? Though most properties are not deferred.

Also, do you think it&apos;s fine to copy to a vector and sort like in the current patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854214</commentid>
    <comment_count>3</comment_count>
      <attachid>455498</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-23 09:47:22 -0700</bug_when>
    <thetext>Comment on attachment 455498
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=455498&amp;action=review

&gt; Source/WebCore/style/PropertyCascade.h:136
&gt; +    auto keys = m_deferredPropertiesIndices.keys();
&gt; +    auto deferredPropertiesVector = WTF::map(keys, [&amp;](auto id) {
&gt; +        return &amp;m_properties[id];
&gt; +    });
&gt; +    std::sort(deferredPropertiesVector.begin(), deferredPropertiesVector.end(), [&amp;](auto* property1, auto* property2) {
&gt; +        return m_deferredPropertiesIndices.get(property1-&gt;id) &lt; m_deferredPropertiesIndices.get(property2-&gt;id);
&gt; +    });
&gt; +    return deferredPropertiesVector;

This is pretty odd way to achieve this, involving many hash lookups and vector temporaries. The basic improvement would be to copy key-value pairs from m_deferredPropertiesIndices into a vector, sort that based in the index, then traverse it to get the properties in the correct order. That would eliminate all the hash lookups (m_deferredPropertiesIndices.get() calls).

Function could just return the resulting vector and the caller could fetch PropertyCascade::Properties, eliminating the need to construct const PropertyCascade::Property*. And the whole thing could be done with some fixed size PropertyCascade member array instead of a heap allocated vector (there is a fixed number of deferred properties).

Also the HashMap could be replaced with an array, similar to m_properties/m_propertyIsPresent and just traversed in a loop. If there are many more deferred properties that could be more efficient.

Not sure if all these are performance improvements, they should be tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854277</commentid>
    <comment_count>4</comment_count>
      <attachid>455522</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-03-23 11:07:18 -0700</bug_when>
    <thetext>Created attachment 455522
Patch with doubly linked list approach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854278</commentid>
    <comment_count>5</comment_count>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-03-23 11:13:37 -0700</bug_when>
    <thetext>I will try to address your feedback, but if you want to take a look, I have posted another patch that uses a doubly linked list approach to get rid of both the vector and the hashmap. The problem will be that in bug 236199 and bug 238125 this can hurt the performance of reverting deferred properties (e.g. if both box-shadow and -webkit-box-shadow are specified, the linked list will have to be iterated linearly in order to know which property appears last).

(In reply to Antti Koivisto from comment #3)
&gt; Not sure if all these are performance improvements, they should be tested.

What&apos;s the right way to test this, add something in PerformanceTests/CSS/ ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854410</commentid>
    <comment_count>6</comment_count>
      <attachid>455558</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-03-23 14:40:43 -0700</bug_when>
    <thetext>Created attachment 455558
Patch with doubly linked list approach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854452</commentid>
    <comment_count>7</comment_count>
      <attachid>455571</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-03-23 15:52:34 -0700</bug_when>
    <thetext>Created attachment 455571
Patch with array approach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854482</commentid>
    <comment_count>8</comment_count>
      <attachid>455581</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-03-23 16:26:16 -0700</bug_when>
    <thetext>Created attachment 455581
Patch with array approach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854638</commentid>
    <comment_count>9</comment_count>
      <attachid>455581</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-24 03:25:47 -0700</bug_when>
    <thetext>Comment on attachment 455581
Patch with array approach

View in context: https://bugs.webkit.org/attachment.cgi?id=455581&amp;action=review

&gt; Source/WebCore/style/PropertyCascade.cpp:352
&gt; +    for (int id = firstCSSProperty; id &lt;= lastCSSProperty; ++id) {

We could track the lowest and highest deferred property enum value and only traverse that range (and so also skip the whole thing if none are seen). 

How is the performance with your test (vs HashMap for example), maybe with more properties/elements too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854820</commentid>
    <comment_count>10</comment_count>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-03-24 12:52:29 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #9)
&gt; We could track the lowest and highest deferred property enum value and only
&gt; traverse that range (and so also skip the whole thing if none are seen). 

I guess makeprop.pl should sort them at the end, so there would be

1. High priority properties: firstCSSProperty..lastHighPriorityProperty
2. Low priority properties: (lastHighPriorityProperty+1)..lastLowPriorityProperty
3. Deferred properties: (lastLowPriorityProperty+1)..lastCSSProperty

&gt; How is the performance with your test (vs HashMap for example), maybe with
&gt; more properties/elements too?

All the approaches seem to have similar performances. Changing the original test to instead set this style

for (let i=0; i &lt; 1e5; ++i) {
  sheet.insertRule(`.styled { all: initial }`, i);
}

I get:
 - With no patch: ~1950 ms
 - With either patch 455498, 455558 or 455581: 1600-1650 ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855033</commentid>
    <comment_count>11</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-25 00:48:06 -0700</bug_when>
    <thetext>&gt; I guess makeprop.pl should sort them at the end, so there would be
&gt; 
&gt; 1. High priority properties: firstCSSProperty..lastHighPriorityProperty
&gt; 2. Low priority properties:
&gt; (lastHighPriorityProperty+1)..lastLowPriorityProperty
&gt; 3. Deferred properties: (lastLowPriorityProperty+1)..lastCSSProperty

Right, that would also allow allocating minimal sized arrays. 

Here I meant dynamic tracking though (lowest seen and highest seen).

&gt; &gt; How is the performance with your test (vs HashMap for example), maybe with
&gt; &gt; more properties/elements too?

I suppose the real test is Speedometer with all the new deferred properties added. Maybe the array version with lowest/highest tracking seems intuitively good and is similar to how the rest of the code works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855198</commentid>
    <comment_count>12</comment_count>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-03-25 12:21:48 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #11)
&gt; Right, that would also allow allocating minimal sized arrays. 
&gt; 
&gt; Here I meant dynamic tracking though (lowest seen and highest seen).

Ah, got it. That will make simple cases faster.
But a worst case would have CSSPropertyBackgroundClip(56) and CSSPropertyWebkitBoxShadow(450), iterating 395 properties. Sorting deferred properties at the end limits that to 15 properties, or 111 after adding logical+physical properties. So still worth it.

So let&apos;s land the dependencies first, then I will rebase the patch on top of that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856383</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-30 07:30:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/91043401&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862577</commentid>
    <comment_count>14</comment_count>
      <attachid>457902</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-04-19 09:02:14 -0700</bug_when>
    <thetext>Created attachment 457902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862663</commentid>
    <comment_count>15</comment_count>
      <attachid>457902</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-19 11:54:25 -0700</bug_when>
    <thetext>Comment on attachment 457902
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=457902&amp;action=review

Nice work.

Some more suggestions for further tweaking to improve. I know you’ve been working on this for a while now, but when reading it I did have some ideas. A couple are probably too big for you to want to do, but many are small tweaks that can help tidy this up even more.

&gt; Source/WebCore/style/PropertyCascade.cpp:46
&gt; +    , m_deferredPropertiesIndices { }

Would like to obviate this by using std::array, so we can initialize in the class definition instead of in each constructor.

&gt; Source/WebCore/style/PropertyCascade.cpp:58
&gt; +    , m_deferredPropertiesIndices { }

Ditto.

&gt; Source/WebCore/style/PropertyCascade.cpp:144
&gt; +    auto&amp; index = m_deferredPropertiesIndices[id - firstDeferredProperty];

The idiom m_deferredPropertiesIndices[id - firstDeferredProperty] comes 5 times. I think we should add a private inline helper function named deferredPropertyIndex so we don’t need to write &quot;- firstDeferredProperty&quot; each time. This would basically be the hasDeferredProperty function, but with a different return type, and hasDeferredProperty would become a one-liner that uses it.

&gt; Source/WebCore/style/PropertyCascade.cpp:146
&gt; +        memset(property.cssValue, 0, sizeof(property.cssValue));

Not new: Is this really the best idiom for clearing cssValue? Seems a low-level idiom to see right in the middle of this type of code. I would isolate this technique in a function that just does this so we could comment about why it’s the correct idiom and not think about that in code like this.

&gt; Source/WebCore/style/PropertyCascade.cpp:336
&gt; +    auto begin = std::begin(m_sortedDeferredProperties);
&gt; +    auto it = begin;
&gt; +    for (uint16_t id = m_lowestSeenDeferredProperty; id &lt;= m_highestSeenDeferredProperty; ++id) {
&gt; +        if (m_deferredPropertiesIndices[id - firstDeferredProperty]) {
&gt; +            *it = (CSSPropertyID)id;
&gt; +            std::advance(it, 1);
&gt; +            ASSERT(it != std::end(m_sortedDeferredProperties));
&gt; +        }
&gt; +    }

There’s no need to use iterators in an abstract way when what we are coding is concrete, not an abstract algorithm. We can treat these as pointers and write things like:

    *it++ = static_cast&lt;CSSPropertyID&gt;(id);

This is idiomatic and easier to read than use of std::advance. One thing about iterator-based algorithms is that they also work with pointers, which is why it’s so easy to use std::sort here. But this code is working with an array, not a generic algorithm that can work with any container, so doesn’t need to be written in an abstract way unless there is some benefit to doing so.

It’s also not clear why this assertion is correct. The reader has to understand that we are building a sentinel-terminated array, which is not obvious to me.

&gt; Source/WebCore/style/PropertyCascade.cpp:337
&gt; +    *it = CSSPropertyInvalid;

As I said above, terminating the array with a CSSPropertyInvalid sentinel is not an obvious technique. I suggest we add a comment somewhere mentioning that. Worse, it’s part of the *interface* of the PropertyCascade class, which I think is subtle and tricky.

&gt; Source/WebCore/style/PropertyCascade.h:71
&gt; +    const CSSPropertyID* deferredProperties() const { return m_sortedDeferredProperties; }

Not entirely clear that this is a pointer to the beginning of something. Other functions like this return self-explanatory containers that are easy to iterate. This returns something more unusual so might need a less unusual name. Still below.

&gt; Source/WebCore/style/PropertyCascade.h:96
&gt; +    Property m_properties[lastDeferredProperty + 1];

Not entirely obvious why this is the correct size for the array; might need a comment explaining the various ranges of property IDs. Also might want to use a std::array here. See below.

&gt; Source/WebCore/style/PropertyCascade.h:97
&gt;      std::bitset&lt;firstDeferredProperty&gt; m_propertyIsPresent;

Not obvious why &quot;first deferred&quot; is the correct size for the bitset. Requires some thought by the reader. If there was a constant numNormalProperties it would be easier to understand, perhaps.

&gt; Source/WebCore/style/PropertyCascade.h:99
&gt; +    unsigned m_deferredPropertiesIndices[lastDeferredProperty - firstDeferredProperty + 1];

I think the code might turn out a little cleaner if we used std::array here. Coding idioms sometimes end up a little more economical with that. I think the &quot;+ 1&quot; here is pretty easy to understand given the names, number of properties is last - first + 1, but also we could make the code a little more readable using a named constant:

    static constexpr unsigned numDeferredProperties = lastDeferredProperty - firstDeferredProperty + 1;

Might be good for clarity. For example, we could initialize with { } here rather than in the constructor if we used std::array, and call begin and end as member functions instead of calling std::begin, also functions like size, although we might have to call data when working with the array with pointers rather than indexing into it.

Grammatically, this should be m_deferredPropertyIndices, not &quot;properties indices&quot; doubly plural. The word &quot;property&quot; is working here as an adjective.

&gt; Source/WebCore/style/PropertyCascade.h:100
&gt; +    unsigned m_lastIndexForDeferred = 0;

We’ve been using &quot;{ 0 }&quot; syntax for initialization in WebKit. It’s OK to also use &quot;= 0&quot; syntax, but I think it’s nice to be consistent at least within the same class (see &quot;{ true }&quot; above).

&gt; Source/WebCore/style/PropertyCascade.h:101
&gt; +    CSSPropertyID m_sortedDeferredProperties[lastDeferredProperty - firstDeferredProperty + 2];

Same value in using std::array here. Not clear at all why we have + 2 here; the reason is that we terminate the sorted array with CSSPropertyInvalid, but why? This is the kind of trick we normally need to explain.

&gt; Source/WebCore/style/PropertyCascade.h:103
&gt; +    CSSPropertyID m_lowestSeenDeferredProperty = lastDeferredProperty;
&gt; +    CSSPropertyID m_highestSeenDeferredProperty = firstDeferredProperty;

Same &quot;{ }&quot; syntax issue.

&gt; Source/WebCore/style/PropertyCascade.h:122
&gt;      ASSERT(id &gt;= firstDeferredProperty);

Do we also want to assert that the id is in the range of CSSPropertyID, or do we think that the type alone guarantees that enough that we need not bother with an assertion?

&gt; Source/WebCore/style/StyleBuilder.cpp:130
&gt; +    auto it = m_cascade.deferredProperties();
&gt; +    while (*it != CSSPropertyInvalid) {
&gt; +        applyCascadeProperty(m_cascade.deferredProperty(*it));
&gt; +        std::advance(it, 1);
&gt; +    }

Even if you make no other changes to this code, I would write this as a for loop instead:

    for (auto* it = m_cascade.deferredProperties(); *it != CSSPropertyInvalid; ++it)
        applyCascadeProperty(m_cascade.deferredProperty(*it);

But it’s also fun, and cleaner, to try to make such iteration usable in a modern range-based for loop. It’s quirky to have this be a sentinel-terminated array, and to have the caller do the pointer traversal itself. A modern for loop can help make this the business of the class vending the collection. We can create something that returns a range object, something with a begin/end that makes the iteration really clean. Such an object can even incorporate the property lookup. But you may not wish to do that. It would definitely add more code to PropertyCascade. On the other hand, might have the good property of not just exporting functions that return pointers, with many ways to misuse them by accident.

Also, given our function names, this code reads wrong. It reads out of a collection named &quot;deferred properties&quot;, and then calls a function named &quot;deferred property&quot; on each of the deferred properties in that collection. That is not an obvious idiom. We have to decide in the design of the PropertyCascade class whether &quot;property&quot; is our name for a property ID or our name for a property object containing the property value. Once we decide that, then one of these functions might be renamed deferredPropertyIDs (or deferredPropertyIDArrayBegin or whatever) or the other might be renamed deferredPropertyValue.

On the other hand, if we have the function returning a range object for use with a modern for loop that iterates over property values, then it could definitely be proudly named deferredProperties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862682</commentid>
    <comment_count>16</comment_count>
      <attachid>457902</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-04-19 12:33:53 -0700</bug_when>
    <thetext>Comment on attachment 457902
Patch

Thanks for the detailed review!

View in context: https://bugs.webkit.org/attachment.cgi?id=457902&amp;action=review

&gt;&gt; Source/WebCore/style/PropertyCascade.h:97
&gt;&gt;      std::bitset&lt;firstDeferredProperty&gt; m_propertyIsPresent;
&gt; 
&gt; Not obvious why &quot;first deferred&quot; is the correct size for the bitset. Requires some thought by the reader. If there was a constant numNormalProperties it would be easier to understand, perhaps.

Maybe std::bitset&lt;lastLowPriorityProperty + 1&gt; would be clearer?

The problem with numNormalProperties is that I would expect

    static constexpr unsigned numNormalProperties = lastLowPriorityProperty - firstHighPriorityProperty + 1;
    static constexpr unsigned numDeferredProperties = lastDeferredProperty - firstDeferredProperty + 1;

But before the high priority properties there are the special CSSPropertyInvalid and CSSPropertyCustom.

So m_propertyIsPresent could actually be smaller, but then we would need to access m_propertyIsPresent[id - firstHighPriorityProperty].
Not sure if it&apos;s worth it just for 2 properties.
On the other hand, consistency with deferred properties can be good.

&gt;&gt; Source/WebCore/style/PropertyCascade.h:101
&gt;&gt; +    CSSPropertyID m_sortedDeferredProperties[lastDeferredProperty - firstDeferredProperty + 2];
&gt; 
&gt; Same value in using std::array here. Not clear at all why we have + 2 here; the reason is that we terminate the sorted array with CSSPropertyInvalid, but why? This is the kind of trick we normally need to explain.

I guess this could be a +1 instead of +2 but then in sortDeferredProperties() I would have to avoid setting CSSPropertyInvalid if the array is full, and in applyDeferredProperties() stop iterating after numDeferredProperties iterations.

&gt;&gt; Source/WebCore/style/PropertyCascade.h:122
&gt;&gt;      ASSERT(id &gt;= firstDeferredProperty);
&gt; 
&gt; Do we also want to assert that the id is in the range of CSSPropertyID, or do we think that the type alone guarantees that enough that we need not bother with an assertion?

It may be interesting to sort shorthands after deferrend properties (bug 238888), so ASSERT(id &lt;= lastDeferredProperty) could be good I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862780</commentid>
    <comment_count>17</comment_count>
      <attachid>457947</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-04-19 18:04:09 -0700</bug_when>
    <thetext>Created attachment 457947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862786</commentid>
    <comment_count>18</comment_count>
      <attachid>457902</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-04-19 18:16:01 -0700</bug_when>
    <thetext>Comment on attachment 457902
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=457902&amp;action=review

&gt;&gt; Source/WebCore/style/PropertyCascade.cpp:46
&gt;&gt; +    , m_deferredPropertiesIndices { }
&gt; 
&gt; Would like to obviate this by using std::array, so we can initialize in the class definition instead of in each constructor.

Done.

&gt;&gt; Source/WebCore/style/PropertyCascade.cpp:58
&gt;&gt; +    , m_deferredPropertiesIndices { }
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/WebCore/style/PropertyCascade.cpp:144
&gt;&gt; +    auto&amp; index = m_deferredPropertiesIndices[id - firstDeferredProperty];
&gt; 
&gt; The idiom m_deferredPropertiesIndices[id - firstDeferredProperty] comes 5 times. I think we should add a private inline helper function named deferredPropertyIndex so we don’t need to write &quot;- firstDeferredProperty&quot; each time. This would basically be the hasDeferredProperty function, but with a different return type, and hasDeferredProperty would become a one-liner that uses it.

Done.

&gt;&gt; Source/WebCore/style/PropertyCascade.cpp:146
&gt;&gt; +        memset(property.cssValue, 0, sizeof(property.cssValue));
&gt; 
&gt; Not new: Is this really the best idiom for clearing cssValue? Seems a low-level idiom to see right in the middle of this type of code. I would isolate this technique in a function that just does this so we could comment about why it’s the correct idiom and not think about that in code like this.

Done.

&gt;&gt; Source/WebCore/style/PropertyCascade.cpp:336
&gt;&gt; +    }
&gt; 
&gt; There’s no need to use iterators in an abstract way when what we are coding is concrete, not an abstract algorithm. We can treat these as pointers and write things like:
&gt; 
&gt;     *it++ = static_cast&lt;CSSPropertyID&gt;(id);
&gt; 
&gt; This is idiomatic and easier to read than use of std::advance. One thing about iterator-based algorithms is that they also work with pointers, which is why it’s so easy to use std::sort here. But this code is working with an array, not a generic algorithm that can work with any container, so doesn’t need to be written in an abstract way unless there is some benefit to doing so.
&gt; 
&gt; It’s also not clear why this assertion is correct. The reader has to understand that we are building a sentinel-terminated array, which is not obvious to me.

Done.

&gt;&gt; Source/WebCore/style/PropertyCascade.cpp:337
&gt;&gt; +    *it = CSSPropertyInvalid;
&gt; 
&gt; As I said above, terminating the array with a CSSPropertyInvalid sentinel is not an obvious technique. I suggest we add a comment somewhere mentioning that. Worse, it’s part of the *interface* of the PropertyCascade class, which I think is subtle and tricky.

Instead of a sentinel, now I&apos;m storing the number of deferred IDs.

&gt;&gt; Source/WebCore/style/PropertyCascade.h:71
&gt;&gt; +    const CSSPropertyID* deferredProperties() const { return m_sortedDeferredProperties; }
&gt; 
&gt; Not entirely clear that this is a pointer to the beginning of something. Other functions like this return self-explanatory containers that are easy to iterate. This returns something more unusual so might need a less unusual name. Still below.

Changed it to return a WTF::Span&lt;const CSSPropertyID&gt;.

&gt;&gt; Source/WebCore/style/PropertyCascade.h:96
&gt;&gt; +    Property m_properties[lastDeferredProperty + 1];
&gt; 
&gt; Not entirely obvious why this is the correct size for the array; might need a comment explaining the various ranges of property IDs. Also might want to use a std::array here. See below.

Done.

&gt;&gt; Source/WebCore/style/PropertyCascade.h:99
&gt;&gt; +    unsigned m_deferredPropertiesIndices[lastDeferredProperty - firstDeferredProperty + 1];
&gt; 
&gt; I think the code might turn out a little cleaner if we used std::array here. Coding idioms sometimes end up a little more economical with that. I think the &quot;+ 1&quot; here is pretty easy to understand given the names, number of properties is last - first + 1, but also we could make the code a little more readable using a named constant:
&gt; 
&gt;     static constexpr unsigned numDeferredProperties = lastDeferredProperty - firstDeferredProperty + 1;
&gt; 
&gt; Might be good for clarity. For example, we could initialize with { } here rather than in the constructor if we used std::array, and call begin and end as member functions instead of calling std::begin, also functions like size, although we might have to call data when working with the array with pointers rather than indexing into it.
&gt; 
&gt; Grammatically, this should be m_deferredPropertyIndices, not &quot;properties indices&quot; doubly plural. The word &quot;property&quot; is working here as an adjective.

Done.

&gt;&gt; Source/WebCore/style/PropertyCascade.h:100
&gt;&gt; +    unsigned m_lastIndexForDeferred = 0;
&gt; 
&gt; We’ve been using &quot;{ 0 }&quot; syntax for initialization in WebKit. It’s OK to also use &quot;= 0&quot; syntax, but I think it’s nice to be consistent at least within the same class (see &quot;{ true }&quot; above).

Done.

&gt;&gt;&gt; Source/WebCore/style/PropertyCascade.h:101
&gt;&gt;&gt; +    CSSPropertyID m_sortedDeferredProperties[lastDeferredProperty - firstDeferredProperty + 2];
&gt;&gt; 
&gt;&gt; Same value in using std::array here. Not clear at all why we have + 2 here; the reason is that we terminate the sorted array with CSSPropertyInvalid, but why? This is the kind of trick we normally need to explain.
&gt; 
&gt; I guess this could be a +1 instead of +2 but then in sortDeferredProperties() I would have to avoid setting CSSPropertyInvalid if the array is full, and in applyDeferredProperties() stop iterating after numDeferredProperties iterations.

Switched to std::array of size numDeferredProperties.

&gt;&gt; Source/WebCore/style/PropertyCascade.h:103
&gt;&gt; +    CSSPropertyID m_highestSeenDeferredProperty = firstDeferredProperty;
&gt; 
&gt; Same &quot;{ }&quot; syntax issue.

Done.

&gt;&gt; Source/WebCore/style/StyleBuilder.cpp:130
&gt;&gt; +    }
&gt; 
&gt; Even if you make no other changes to this code, I would write this as a for loop instead:
&gt; 
&gt;     for (auto* it = m_cascade.deferredProperties(); *it != CSSPropertyInvalid; ++it)
&gt;         applyCascadeProperty(m_cascade.deferredProperty(*it);
&gt; 
&gt; But it’s also fun, and cleaner, to try to make such iteration usable in a modern range-based for loop. It’s quirky to have this be a sentinel-terminated array, and to have the caller do the pointer traversal itself. A modern for loop can help make this the business of the class vending the collection. We can create something that returns a range object, something with a begin/end that makes the iteration really clean. Such an object can even incorporate the property lookup. But you may not wish to do that. It would definitely add more code to PropertyCascade. On the other hand, might have the good property of not just exporting functions that return pointers, with many ways to misuse them by accident.
&gt; 
&gt; Also, given our function names, this code reads wrong. It reads out of a collection named &quot;deferred properties&quot;, and then calls a function named &quot;deferred property&quot; on each of the deferred properties in that collection. That is not an obvious idiom. We have to decide in the design of the PropertyCascade class whether &quot;property&quot; is our name for a property ID or our name for a property object containing the property value. Once we decide that, then one of these functions might be renamed deferredPropertyIDs (or deferredPropertyIDArrayBegin or whatever) or the other might be renamed deferredPropertyValue.
&gt; 
&gt; On the other hand, if we have the function returning a range object for use with a modern for loop that iterates over property values, then it could definitely be proudly named deferredProperties.

Done, used WTF::Span and renamed to deferredPropertyIDs. WTF::Span needs the size, so added a new member for it instead of using a sentinel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862851</commentid>
    <comment_count>19</comment_count>
      <attachid>457947</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-04-20 01:09:13 -0700</bug_when>
    <thetext>Comment on attachment 457947
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=457947&amp;action=review

&gt; Source/WebCore/style/PropertyCascade.cpp:103
&gt; +    memset(property.cssValue, 0, sizeof(property.cssValue));

Instead of the clunky old memset the call sites can just zero initialize the array with

property.cssValue = { };

&gt; Source/WebCore/style/PropertyCascade.cpp:332
&gt; +    auto begin = m_deferredPropertyIDs.begin();
&gt; +    auto it = begin;

&apos;it&apos; here would be better called &apos;end&apos;.

This might be more readable with explicit pointers rather than &quot;iterators&quot; (which are actually just pointers).

&gt; Source/WebCore/style/PropertyCascade.h:71
&gt; +    const WTF::Span&lt;const CSSPropertyID&gt; deferredPropertyIDs() const;

No need for explicit WTF::

&gt; Source/WebCore/style/PropertyCascade.h:110
&gt; +    static constexpr unsigned numDeferredProperties = lastDeferredProperty - firstDeferredProperty + 1;

deferredPropertyCount

&gt; Source/WebCore/style/PropertyCascade.h:114
&gt; +    unsigned m_numSeenDeferredProperties { 0 };

m_seenDeferredPropertyCount (for example) would read better.

&gt; Source/WebCore/style/PropertyCascade.h:161
&gt; +inline const WTF::Span&lt;const CSSPropertyID&gt; PropertyCascade::deferredPropertyIDs() const
&gt; +{
&gt; +    return WTF::Span(m_deferredPropertyIDs.begin(), m_numSeenDeferredProperties);
&gt;  }

No need for explicit WTF::

Just

return { m_deferredPropertyIDs.begin(), m_numSeenDeferredProperties };

should work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862885</commentid>
    <comment_count>20</comment_count>
      <attachid>457947</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-04-20 04:19:27 -0700</bug_when>
    <thetext>Comment on attachment 457947
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=457947&amp;action=review

&gt;&gt; Source/WebCore/style/PropertyCascade.cpp:103
&gt;&gt; +    memset(property.cssValue, 0, sizeof(property.cssValue));
&gt; 
&gt; Instead of the clunky old memset the call sites can just zero initialize the array with
&gt; 
&gt; property.cssValue = { };

Then I get
    error: assigning to an array from an initializer list

&gt;&gt; Source/WebCore/style/PropertyCascade.cpp:332
&gt;&gt; +    auto it = begin;
&gt; 
&gt; &apos;it&apos; here would be better called &apos;end&apos;.
&gt; 
&gt; This might be more readable with explicit pointers rather than &quot;iterators&quot; (which are actually just pointers).

Done.

&gt;&gt; Source/WebCore/style/PropertyCascade.h:71
&gt;&gt; +    const WTF::Span&lt;const CSSPropertyID&gt; deferredPropertyIDs() const;
&gt; 
&gt; No need for explicit WTF::

Done.

&gt;&gt; Source/WebCore/style/PropertyCascade.h:110
&gt;&gt; +    static constexpr unsigned numDeferredProperties = lastDeferredProperty - firstDeferredProperty + 1;
&gt; 
&gt; deferredPropertyCount

Done.

&gt;&gt; Source/WebCore/style/PropertyCascade.h:114
&gt;&gt; +    unsigned m_numSeenDeferredProperties { 0 };
&gt; 
&gt; m_seenDeferredPropertyCount (for example) would read better.

Done.

&gt;&gt; Source/WebCore/style/PropertyCascade.h:161
&gt;&gt;  }
&gt; 
&gt; No need for explicit WTF::
&gt; 
&gt; Just
&gt; 
&gt; return { m_deferredPropertyIDs.begin(), m_numSeenDeferredProperties };
&gt; 
&gt; should work.

Done. Hopefully this will also address the compile error in windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862886</commentid>
    <comment_count>21</comment_count>
      <attachid>457975</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-04-20 04:19:55 -0700</bug_when>
    <thetext>Created attachment 457975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862890</commentid>
    <comment_count>22</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-04-20 04:54:05 -0700</bug_when>
    <thetext>
&gt; &gt; property.cssValue = { };
&gt; 
&gt; Then I get
&gt;     error: assigning to an array from an initializer list
&gt; 

Ah right, cssValue will also need to be switched to std::array&lt;CSSValue*, 3&gt;.

That would also allow some explicit initialization to be removed (by doing { } initialization in the header).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862892</commentid>
    <comment_count>23</comment_count>
      <attachid>457977</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-04-20 05:06:15 -0700</bug_when>
    <thetext>Created attachment 457977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862893</commentid>
    <comment_count>24</comment_count>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-04-20 05:09:35 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #22)
&gt; Ah right, cssValue will also need to be switched to std::array&lt;CSSValue*, 3&gt;.
&gt; 
&gt; That would also allow some explicit initialization to be removed (by doing {
&gt; } initialization in the header).

Done.

(In reply to Oriol Brufau from comment #20)
&gt; &gt; No need for explicit WTF::
&gt; &gt; 
&gt; &gt; Just
&gt; &gt; 
&gt; &gt; return { m_deferredPropertyIDs.begin(), m_numSeenDeferredProperties };
&gt; &gt; 
&gt; &gt; should work.
&gt; 
&gt; Done. Hopefully this will also address the compile error in windows.

It fails to compile in Windows, now trying

    return Span&lt;const CSSPropertyID&gt;(m_deferredPropertyIDs.begin(), m_seenDeferredPropertyCount);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862897</commentid>
    <comment_count>25</comment_count>
      <attachid>457977</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-04-20 05:24:23 -0700</bug_when>
    <thetext>Comment on attachment 457977
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=457977&amp;action=review

&gt; Source/WebCore/style/PropertyCascade.h:59
&gt; +        std::array&lt;CSSValue*, 3&gt; cssValue { }; // Values for link match states MatchDefault, MatchLink and MatchVisited

Actually maybe it is better to try to do { } initialization here in a separate patch and keep the explicit zeroing (though with = { } syntax). This will end up initialising a bunch of memory we avoided before so in principle it might be a regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862900</commentid>
    <comment_count>26</comment_count>
      <attachid>457978</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-04-20 05:48:04 -0700</bug_when>
    <thetext>Created attachment 457978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862902</commentid>
    <comment_count>27</comment_count>
      <attachid>457978</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-04-20 05:54:56 -0700</bug_when>
    <thetext>Comment on attachment 457978
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=457978&amp;action=review

&gt; Source/WebCore/style/PropertyCascade.h:71
&gt; +    const Span&lt;const CSSPropertyID&gt; deferredPropertyIDs() const;

The first const is not needed (and does nothing).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862906</commentid>
    <comment_count>28</comment_count>
      <attachid>457979</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-04-20 06:04:12 -0700</bug_when>
    <thetext>Created attachment 457979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862915</commentid>
    <comment_count>29</comment_count>
      <attachid>457986</attachid>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-04-20 06:35:26 -0700</bug_when>
    <thetext>Created attachment 457986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862919</commentid>
    <comment_count>30</comment_count>
    <who name="Oriol Brufau">obrufau</who>
    <bug_when>2022-04-20 06:38:30 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #19)
&gt; Comment on attachment 457947 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457947&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/style/PropertyCascade.cpp:332
&gt; &gt; +    auto begin = m_deferredPropertyIDs.begin();
&gt; &gt; +    auto it = begin;
&gt; 
&gt; This might be more readable with explicit pointers rather than &quot;iterators&quot;
&gt; (which are actually just pointers).

If I get it right, on Windows, for std::array, data() returns a pointer, and begin() returns an iterator which is not a pointer.
Below I use std::sort that expects iterators, so I&apos;m using auto again with iterators.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862963</commentid>
    <comment_count>31</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-20 09:36:13 -0700</bug_when>
    <thetext>Committed r293100 (249810@main): &lt;https://commits.webkit.org/249810@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 457986.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455498</attachid>
            <date>2022-03-23 07:47:55 -0700</date>
            <delta_ts>2022-03-23 15:53:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238260-20220323154754.patch</filename>
            <type>text/plain</type>
            <size>6577</size>
            <attacher name="Oriol Brufau">obrufau</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGU4ZDZlYTU3MjdjYzFh
YjVmZjUyNWFjNDI1MjU4OGY0MTQ1MmQzOS4uYTc1MjllNzA0MzJkNTNmZGM2YTA2NTUwZTlkNDhm
MDNmMjA3MGFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIyLTAzLTIzICBPcmlv
bCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1jYXNjYWRlXSBP
cHRpbWl6ZSBjb2RlIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyNjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDU1MgZGVjbGFyYXRpb25zIGZvciBkZWZlcnJl
ZCBwcm9wZXJ0aWVzIHdlcmUganVzdCBhcHBlbmRlZCB0byBhIHZlY3RvciwKKyAgICAgICAgd2hp
Y2ggY291bGQgZ3JvdyBodWdlLiBUaGVuIFN0eWxlQnVpbGRlciB3b3VsZCBhcHBseSB0aGVtIG9u
ZSBieSBvbmUsCisgICAgICAgIGRvaW5nIHVzZWxlc3Mgd29yayBpZiBhIHByb3BlcnR5IGFwcGVh
cmVkIG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgIFRoZSBwb2ludCBvZiBkZWZlcnJlZCBwcm9w
ZXJ0aWVzIGlzIHRoYXQgdGhleSBzaG91bGQgYmUgYXBwbGllZCBpbgorICAgICAgICByZWxhdGl2
ZSBvcmRlci4gQnV0IGlmIGEgcHJvcGVydHkgYXBwZWFycyBtdWx0aXBsZSB0aW1lcywgd2Ugc2hv
dWxkIG9ubHkKKyAgICAgICAgY2FyZSBhYm91dCB0aGUgbGFzdCBvY2N1cnJlbmNlLgorCisgICAg
ICAgIFNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgdmVjdG9yLCBzdG9yZXMgdGhlIFByb3BlcnR5
IGluIHRoZSBzYW1lIGFycmF5CisgICAgICAgIGFzIG5vbi1kZWZlcnJlZCBwcm9wZXJ0aWVzLCBh
bmQga2VlcHMgYSBIYXNoTWFwIHdpdGggdGhlIGxhc3QgaW5kZXgKKyAgICAgICAgZm9yIGVhY2gg
Q1NTUHJvcGVydHlJRC4KKworICAgICAgICBXaGVuIGFwcGx5aW5nIHRoZSBwcm9wZXJ0aWVzLCBh
IHZlY3RvciBpcyBjcmVhdGVkIGFuZCBzb3J0ZWQgYWNjb3JkaW5nCisgICAgICAgIHRvIHRoYXQg
aW5mb3JtYXRpb24uIFRoaXMgY2FuIGhhdmUgc29tZSBvdmVyaGVhZCwgYnV0IHRoZSBzaXplIG9m
IHRoZQorICAgICAgICB2ZWN0b3Igd2lsbCBiZSBsaW1pdGVkIGJ5IHRoZSBudW1iZXIgb2YgcHJv
cGVydGllcyBmb3Igd2hpY2gKKyAgICAgICAgc2hvdWxkQXBwbHlQcm9wZXJ0eUluUGFyc2VPcmRl
ciByZXR1cm5zIHRydWUuIEN1cnJlbnRseSB0aGVyZSBhcmUgb25seQorICAgICAgICAxNSBvZiB0
aGVzZSAoaW4gYnVnIDIzNjE5OSBJIHBsYW4gdG8gYWRkIDk2IG1vcmUsIGJ1dCAxMTEgaXMgc3Rp
bGwgbm90CisgICAgICAgIHRoYXQgYmlnKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2Ug
dGhlcmUgc2hvdWxkIGJlIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIHN0eWxl
L1Byb3BlcnR5Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlD
YXNjYWRlOjpzZXREZWZlcnJlZCk6CisgICAgICAgICogc3R5bGUvUHJvcGVydHlDYXNjYWRlLmg6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpwcm9wZXJ0eSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpkZWZlcnJlZFBy
b3BlcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjogY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2FkZTo6ZGVmZXJyZWRQcm9wZXJ0aWVzIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXI6OmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKToKKwog
MjAyMi0wMy0yMSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBbbWVkaWEtY29udHJvbHNdIHNjcnViYmluZyBvbiBpT1Mgd2hlbiBpbmxpbmUgZG9lcyBub3Qg
d29yawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAKaW5kZXggOTBmZWQ2
MTdhZjc1NmU3NzM4YmM5YjUzNWRkZGExMjhlZTBjMDEyZi4uOWY1NDE1MmEyNWEwZjFiMTNkNDEy
YTI4MzRmMDhjZjVkYTg0OWMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJv
cGVydHlDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2Nh
ZGUuY3BwCkBAIC0xMjgsNiArMTI4LDcgQEAgdm9pZCBQcm9wZXJ0eUNhc2NhZGU6OnNldChDU1NQ
cm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgY3NzVmFsdWUsIGNvbnN0IE1hdGNoZWRQcm8KICAgICB9
CiAKICAgICBBU1NFUlQoIXNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIoaWQpKTsKKyAg
ICBBU1NFUlQoIW1fZGVmZXJyZWRQcm9wZXJ0aWVzSW5kaWNlcy5jb250YWlucyhpZCkpOwogCiAg
ICAgYXV0byYgcHJvcGVydHkgPSBtX3Byb3BlcnRpZXNbaWRdOwogICAgIEFTU0VSVChpZCA8IG1f
cHJvcGVydHlJc1ByZXNlbnQuc2l6ZSgpKTsKQEAgLTE1OSwxMiArMTYwLDEzIEBAIHZvaWQgUHJv
cGVydHlDYXNjYWRlOjpzZXREZWZlcnJlZChDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgY3Nz
VmFsdWUsIGNvbnN0IE1hCiB7CiAgICAgQVNTRVJUKCFDU1NQcm9wZXJ0eTo6aXNEaXJlY3Rpb25B
d2FyZVByb3BlcnR5KGlkKSk7CiAgICAgQVNTRVJUKHNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNl
T3JkZXIoaWQpKTsKKyAgICBBU1NFUlQoIW1fcHJvcGVydHlJc1ByZXNlbnRbaWRdKTsKIAotICAg
IFByb3BlcnR5IHByb3BlcnR5OwotICAgIG1lbXNldChwcm9wZXJ0eS5jc3NWYWx1ZSwgMCwgc2l6
ZW9mKHByb3BlcnR5LmNzc1ZhbHVlKSk7CisgICAgYXV0byYgcHJvcGVydHkgPSBtX3Byb3BlcnRp
ZXNbaWRdOworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9kZWZlcnJlZFByb3BlcnRpZXNJbmRpY2Vz
LnNldChpZCwgbV9jdXJyZW50SW5kZXhGb3JEZWZlcnJlZCsrKTsKKyAgICBpZiAoYWRkUmVzdWx0
LmlzTmV3RW50cnkpCisgICAgICAgIG1lbXNldChwcm9wZXJ0eS5jc3NWYWx1ZSwgMCwgc2l6ZW9m
KHByb3BlcnR5LmNzc1ZhbHVlKSk7CiAgICAgc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eSwg
aWQsIGNzc1ZhbHVlLCBtYXRjaGVkUHJvcGVydGllcywgY2FzY2FkZUxldmVsKTsKLSAgICBtX2Rl
ZmVycmVkUHJvcGVydGllc0luZGljZXMuc2V0KGlkLCBtX2RlZmVycmVkUHJvcGVydGllcy5zaXpl
KCkpOwotICAgIG1fZGVmZXJyZWRQcm9wZXJ0aWVzLmFwcGVuZChwcm9wZXJ0eSk7CiB9CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuaAppbmRleCAzZWU2ZGYzM2Q1Mzk1ZGU1
ZjViOTRhNDNmNjEwMzQ3ODAyMDdlZWZjLi45M2VjZjExMzY0NjdkMzU3ZjYyYjAxZTczM2NjZTQw
NDFjNGJlODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2Nh
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuaApAQCAtNjgs
NyArNjgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJp
bmcmKSBjb25zdDsKICAgICBQcm9wZXJ0eSBjdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmKSBj
b25zdDsKIAotICAgIGNvbnN0IFZlY3RvcjxQcm9wZXJ0eSwgOD4mIGRlZmVycmVkUHJvcGVydGll
cygpIGNvbnN0IHsgcmV0dXJuIG1fZGVmZXJyZWRQcm9wZXJ0aWVzOyB9CisgICAgY29uc3QgVmVj
dG9yPGNvbnN0IFByb3BlcnR5Kj4gY29tcHV0ZVNvcnRlZERlZmVycmVkUHJvcGVydGllcygpIGNv
bnN0OwogICAgIGNvbnN0IEhhc2hNYXA8QXRvbVN0cmluZywgUHJvcGVydHk+JiBjdXN0b21Qcm9w
ZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21Qcm9wZXJ0aWVzOyB9CiAKICAgICBEaXJl
Y3Rpb24gZGlyZWN0aW9uKCkgY29uc3Q7CkBAIC05NSw4ICs5NSw4IEBAIHByaXZhdGU6CiAgICAg
UHJvcGVydHkgbV9wcm9wZXJ0aWVzW251bUNTU1Byb3BlcnRpZXMgKyAyXTsKICAgICBzdGQ6OmJp
dHNldDxudW1DU1NQcm9wZXJ0aWVzICsgMj4gbV9wcm9wZXJ0eUlzUHJlc2VudDsKIAotICAgIFZl
Y3RvcjxQcm9wZXJ0eSwgOD4gbV9kZWZlcnJlZFByb3BlcnRpZXM7CiAgICAgSGFzaE1hcDxDU1NQ
cm9wZXJ0eUlELCB1bnNpZ25lZD4gbV9kZWZlcnJlZFByb3BlcnRpZXNJbmRpY2VzOworICAgIHVu
c2lnbmVkIG1fY3VycmVudEluZGV4Rm9yRGVmZXJyZWQgPSAwOwogCiAgICAgSGFzaE1hcDxBdG9t
U3RyaW5nLCBQcm9wZXJ0eT4gbV9jdXN0b21Qcm9wZXJ0aWVzOwogfTsKQEAgLTEwOSw2ICsxMDks
NyBAQCBpbmxpbmUgYm9vbCBQcm9wZXJ0eUNhc2NhZGU6Omhhc1Byb3BlcnR5KENTU1Byb3BlcnR5
SUQgaWQpIGNvbnN0CiAKIGlubGluZSBjb25zdCBQcm9wZXJ0eUNhc2NhZGU6OlByb3BlcnR5JiBQ
cm9wZXJ0eUNhc2NhZGU6OnByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpIGNvbnN0CiB7CisgICAg
QVNTRVJUKGhhc1Byb3BlcnR5KGlkKSk7CiAgICAgcmV0dXJuIG1fcHJvcGVydGllc1tpZF07CiB9
CiAKQEAgLTEyMCw5ICsxMjEsMTkgQEAgaW5saW5lIGJvb2wgUHJvcGVydHlDYXNjYWRlOjpoYXNE
ZWZlcnJlZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpIGNvbnN0CiBpbmxpbmUgY29uc3QgUHJv
cGVydHlDYXNjYWRlOjpQcm9wZXJ0eSYgUHJvcGVydHlDYXNjYWRlOjpkZWZlcnJlZFByb3BlcnR5
KENTU1Byb3BlcnR5SUQgaWQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc0RlZmVycmVkUHJvcGVy
dHkoaWQpKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fZGVmZXJyZWRQcm9wZXJ0aWVzSW5kaWNl
cy5nZXQoaWQpOwotICAgIEFTU0VSVChpbmRleCA8IG1fZGVmZXJyZWRQcm9wZXJ0aWVzLnNpemUo
KSk7Ci0gICAgcmV0dXJuIG1fZGVmZXJyZWRQcm9wZXJ0aWVzW2luZGV4XTsKKyAgICByZXR1cm4g
bV9wcm9wZXJ0aWVzW2lkXTsKK30KKworaW5saW5lIGNvbnN0IFZlY3Rvcjxjb25zdCBQcm9wZXJ0
eUNhc2NhZGU6OlByb3BlcnR5Kj4gUHJvcGVydHlDYXNjYWRlOjpjb21wdXRlU29ydGVkRGVmZXJy
ZWRQcm9wZXJ0aWVzKCkgY29uc3QKK3sKKyAgICBhdXRvIGtleXMgPSBtX2RlZmVycmVkUHJvcGVy
dGllc0luZGljZXMua2V5cygpOworICAgIGF1dG8gZGVmZXJyZWRQcm9wZXJ0aWVzVmVjdG9yID0g
V1RGOjptYXAoa2V5cywgWyZdKGF1dG8gaWQpIHsKKyAgICAgICAgcmV0dXJuICZtX3Byb3BlcnRp
ZXNbaWRdOworICAgIH0pOworICAgIHN0ZDo6c29ydChkZWZlcnJlZFByb3BlcnRpZXNWZWN0b3Iu
YmVnaW4oKSwgZGVmZXJyZWRQcm9wZXJ0aWVzVmVjdG9yLmVuZCgpLCBbJl0oYXV0byogcHJvcGVy
dHkxLCBhdXRvKiBwcm9wZXJ0eTIpIHsKKyAgICAgICAgcmV0dXJuIG1fZGVmZXJyZWRQcm9wZXJ0
aWVzSW5kaWNlcy5nZXQocHJvcGVydHkxLT5pZCkgPCBtX2RlZmVycmVkUHJvcGVydGllc0luZGlj
ZXMuZ2V0KHByb3BlcnR5Mi0+aWQpOworICAgIH0pOworICAgIHJldHVybiBkZWZlcnJlZFByb3Bl
cnRpZXNWZWN0b3I7CiB9CiAKIGlubGluZSBib29sIFByb3BlcnR5Q2FzY2FkZTo6aGFzQ3VzdG9t
UHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
QnVpbGRlci5jcHAKaW5kZXggNTQzZGMwMmQxMzYxYThhNWExOWNmZmMyMDBmZTExYTdiOGNkZThi
ZC4uOTc5MDhiZGRiMjVmNjUxODNjYmQ5MmNjNTZhOGViNjY4NjgwM2JhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3BwCkBAIC0xMjMsOCArMTIzLDggQEAgdm9pZCBCdWlsZGVy
OjphcHBseUxvd1ByaW9yaXR5UHJvcGVydGllcygpCiAKIHZvaWQgQnVpbGRlcjo6YXBwbHlEZWZl
cnJlZFByb3BlcnRpZXMoKQogewotICAgIGZvciAoYXV0byYgcHJvcGVydHkgOiBtX2Nhc2NhZGUu
ZGVmZXJyZWRQcm9wZXJ0aWVzKCkpCi0gICAgICAgIGFwcGx5Q2FzY2FkZVByb3BlcnR5KHByb3Bl
cnR5KTsKKyAgICBmb3IgKGF1dG8qIHByb3BlcnR5IDogbV9jYXNjYWRlLmNvbXB1dGVTb3J0ZWRE
ZWZlcnJlZFByb3BlcnRpZXMoKSkKKyAgICAgICAgYXBwbHlDYXNjYWRlUHJvcGVydHkoKnByb3Bl
cnR5KTsKIH0KIAogdm9pZCBCdWlsZGVyOjphcHBseVByb3BlcnRpZXMoaW50IGZpcnN0UHJvcGVy
dHksIGludCBsYXN0UHJvcGVydHkpCg==
</data>
<flag name="review"
          id="483512"
          type_id="1"
          status="-"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455522</attachid>
            <date>2022-03-23 11:07:18 -0700</date>
            <delta_ts>2022-03-23 14:41:55 -0700</delta_ts>
            <desc>Patch with doubly linked list approach</desc>
            <filename>bug-238260-20220323190716.patch</filename>
            <type>text/plain</type>
            <size>10579</size>
            <attacher name="Oriol Brufau">obrufau</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI5OTFmYTkzYjc0MWRh
MDc2ZTk4MTFmYTYxMDExZGQ2MzdiNWYyMC4uOGRhYWIzZThmMDM4YWRjMjIzNDZlMjZmZjJmOTQ3
OTIyYzE3ZTBlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIyLTAzLTIzICBPcmlv
bCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1jYXNjYWRlXSBP
cHRpbWl6ZSBjb2RlIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyNjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDU1MgZGVjbGFyYXRpb25zIGZvciBkZWZlcnJl
ZCBwcm9wZXJ0aWVzIHdlcmUganVzdCBhcHBlbmRlZCB0byBhIHZlY3RvciwKKyAgICAgICAgd2hp
Y2ggY291bGQgZ3JvdyBodWdlLiBUaGVuIFN0eWxlQnVpbGRlciB3b3VsZCBhcHBseSB0aGVtIG9u
ZSBieSBvbmUsCisgICAgICAgIGRvaW5nIHVzZWxlc3Mgd29yayBpZiBhIHByb3BlcnR5IGFwcGVh
cmVkIG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgIFRoZSBwb2ludCBvZiBkZWZlcnJlZCBwcm9w
ZXJ0aWVzIGlzIHRoYXQgdGhleSBzaG91bGQgYmUgYXBwbGllZCBpbgorICAgICAgICByZWxhdGl2
ZSBvcmRlci4gQnV0IGlmIGEgcHJvcGVydHkgYXBwZWFycyBtdWx0aXBsZSB0aW1lcywgd2Ugc2hv
dWxkIG9ubHkKKyAgICAgICAgY2FyZSBhYm91dCB0aGUgbGFzdCBvY2N1cnJlbmNlLgorCisgICAg
ICAgIFNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgdmVjdG9yIGFuZCBhIEhhc2hNYXAgdGhhdCB0
cmFja2VkIHRoZSBpbmRpY2VzLgorICAgICAgICBJbnN0ZWFkLCBpdCB1c2VzIGEgZG91Ymx5IGxp
bmtlZCBsaXN0IGFwcHJvYWNoOiB0aGUgUHJvcGVydHkgc3RydWN0IGdldHMKKyAgICAgICAgMiBw
b2ludGVycyB0byB0cmFjayB0aGUgcHJldmlvdXMgYW5kIG5leHQgaXRlbXMsIGFuZCBkZWZlcnJl
ZCBQcm9wZXJ0eQorICAgICAgICBhcmUgc3RvcmVkIGluIHRoZSBzYW1lIGFycmF5IGFzIG5vbi1k
ZWZlcnJlZCBwcm9wZXJ0aWVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGVyZSBz
aG91bGQgYmUgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogc3R5bGUvUHJvcGVy
dHlDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6
OnNldERlZmVycmVkKToKKyAgICAgICAgKiBzdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OnByb3BlcnR5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OmRlZmVycmVkUHJvcGVydHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpkZWZlcnJlZFByb3BlcnRpZXMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlcjo6YXBwbHlEZWZlcnJlZFByb3BlcnRpZXMpOgorCiAyMDIyLTAz
LTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBWaWRlb0Zy
YW1lIGRvZXMgbm90IG5lZWQgdG8gaW5oZXJpdCBmcm9tIE1lZGlhU2FtcGxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcAppbmRleCA5MGZlZDYxN2FmNzU2ZTc3MzhiYzli
NTM1ZGRkYTEyOGVlMGMwMTJmLi5mZTFlNTM1YTRkNzRiOTYwZTIzNTA4OWZkNTAxZTljMjIzOGI3
YjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAKQEAgLTM4LDMw
ICszOCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgU3R5bGUgewogCi1zdGF0
aWMgaW5saW5lIGJvb2wgc2hvdWxkQXBwbHlQcm9wZXJ0eUluUGFyc2VPcmRlcihDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQpCi17Ci0gICAgc3dpdGNoIChwcm9wZXJ0eUlEKSB7Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ2xpcDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdpbjoK
LSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbjoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0QmFja2dyb3VuZFNpemU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRT
aXplOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZToKLSAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVySW1hZ2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU2xp
Y2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJJbWFnZU91dHNldDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2VSZXBlYXQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlV2lkdGg6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdzoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2hh
ZG93OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotfQotCiBQcm9wZXJ0eUNhc2NhZGU6OlByb3BlcnR5Q2FzY2FkZShjb25z
dCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIENhc2NhZGVMZXZlbCBtYXhpbXVtQ2FzY2FkZUxl
dmVsLCBJbmNsdWRlZFByb3BlcnRpZXMgaW5jbHVkZWRQcm9wZXJ0aWVzLCBEaXJlY3Rpb24gZGly
ZWN0aW9uKQogICAgIDogbV9tYXRjaFJlc3VsdChtYXRjaFJlc3VsdCkKICAgICAsIG1faW5jbHVk
ZWRQcm9wZXJ0aWVzKGluY2x1ZGVkUHJvcGVydGllcykKQEAgLTEyNyw3ICsxMDMsNyBAQCB2b2lk
IFByb3BlcnR5Q2FzY2FkZTo6c2V0KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlJiBjc3NWYWx1
ZSwgY29uc3QgTWF0Y2hlZFBybwogICAgICAgICBpZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGly
ZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCwgZGlyZWN0aW9uLnRleHREaXJlY3Rpb24sIGRpcmVjdGlv
bi53cml0aW5nTW9kZSk7CiAgICAgfQogCi0gICAgQVNTRVJUKCFzaG91bGRBcHBseVByb3BlcnR5
SW5QYXJzZU9yZGVyKGlkKSk7CisgICAgQVNTRVJUKCFQcm9wZXJ0eUNhc2NhZGU6OnNob3VsZEFw
cGx5UHJvcGVydHlJblBhcnNlT3JkZXIoaWQpKTsKIAogICAgIGF1dG8mIHByb3BlcnR5ID0gbV9w
cm9wZXJ0aWVzW2lkXTsKICAgICBBU1NFUlQoaWQgPCBtX3Byb3BlcnR5SXNQcmVzZW50LnNpemUo
KSk7CkBAIC0xNTgsMTMgKzEzNCwzMCBAQCB2b2lkIFByb3BlcnR5Q2FzY2FkZTo6c2V0KENTU1By
b3BlcnR5SUQgaWQsIENTU1ZhbHVlJiBjc3NWYWx1ZSwgY29uc3QgTWF0Y2hlZFBybwogdm9pZCBQ
cm9wZXJ0eUNhc2NhZGU6OnNldERlZmVycmVkKENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlJiBj
c3NWYWx1ZSwgY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmIG1hdGNoZWRQcm9wZXJ0aWVzLCBDYXNj
YWRlTGV2ZWwgY2FzY2FkZUxldmVsKQogewogICAgIEFTU0VSVCghQ1NTUHJvcGVydHk6OmlzRGly
ZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCkpOwotICAgIEFTU0VSVChzaG91bGRBcHBseVByb3BlcnR5
SW5QYXJzZU9yZGVyKGlkKSk7CisgICAgQVNTRVJUKFByb3BlcnR5Q2FzY2FkZTo6c2hvdWxkQXBw
bHlQcm9wZXJ0eUluUGFyc2VPcmRlcihpZCkpOwogCi0gICAgUHJvcGVydHkgcHJvcGVydHk7Ci0g
ICAgbWVtc2V0KHByb3BlcnR5LmNzc1ZhbHVlLCAwLCBzaXplb2YocHJvcGVydHkuY3NzVmFsdWUp
KTsKKyAgICBhdXRvJiBwcm9wZXJ0eSA9IG1fcHJvcGVydGllc1tpZF07CisgICAgaWYgKG1fcHJv
cGVydHlJc1ByZXNlbnRbaWRdKSB7CisgICAgICAgIGlmIChQcm9wZXJ0eSogbmV4dCA9IHByb3Bl
cnR5Lm5leHREZWZlcnJlZFByb3BlcnR5KSB7CisgICAgICAgICAgICBQcm9wZXJ0eSogcHJldiA9
IHByb3BlcnR5LnByZXZEZWZlcnJlZFByb3BlcnR5OworICAgICAgICAgICAgaWYgKHByZXYpCisg
ICAgICAgICAgICAgICAgcHJldi0+bmV4dERlZmVycmVkUHJvcGVydHkgPSBuZXh0OworICAgICAg
ICAgICAgbmV4dC0+cHJldkRlZmVycmVkUHJvcGVydHkgPSBwcmV2OworICAgICAgICAgICAgcHJv
cGVydHkucHJldkRlZmVycmVkUHJvcGVydHkgPSBtX2xhc3REZWZlcnJlZFByb3BlcnR5OworICAg
ICAgICAgICAgcHJvcGVydHkubmV4dERlZmVycmVkUHJvcGVydHkgPSBudWxscHRyOworICAgICAg
ICAgICAgbV9sYXN0RGVmZXJyZWRQcm9wZXJ0eSA9ICZwcm9wZXJ0eTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBBU1NFUlQobV9sYXN0RGVmZXJyZWRQcm9wZXJ0eSA9PSAmcHJvcGVydHkp
OworICAgIH0gZWxzZSB7CisgICAgICAgIG1fcHJvcGVydHlJc1ByZXNlbnQuc2V0KGlkKTsKKyAg
ICAgICAgbWVtc2V0KHByb3BlcnR5LmNzc1ZhbHVlLCAwLCBzaXplb2YocHJvcGVydHkuY3NzVmFs
dWUpKTsKKyAgICAgICAgaWYgKCFtX2ZpcnN0RGVmZXJyZWRQcm9wZXJ0eSkKKyAgICAgICAgICAg
IG1fZmlyc3REZWZlcnJlZFByb3BlcnR5ID0gJnByb3BlcnR5OworICAgICAgICBwcm9wZXJ0eS5w
cmV2RGVmZXJyZWRQcm9wZXJ0eSA9IG1fbGFzdERlZmVycmVkUHJvcGVydHk7CisgICAgICAgIHBy
b3BlcnR5Lm5leHREZWZlcnJlZFByb3BlcnR5ID0gbnVsbHB0cjsKKyAgICAgICAgbV9sYXN0RGVm
ZXJyZWRQcm9wZXJ0eSA9ICZwcm9wZXJ0eTsKKyAgICB9CiAgICAgc2V0UHJvcGVydHlJbnRlcm5h
bChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBtYXRjaGVkUHJvcGVydGllcywgY2FzY2FkZUxldmVs
KTsKLSAgICBtX2RlZmVycmVkUHJvcGVydGllc0luZGljZXMuc2V0KGlkLCBtX2RlZmVycmVkUHJv
cGVydGllcy5zaXplKCkpOwotICAgIG1fZGVmZXJyZWRQcm9wZXJ0aWVzLmFwcGVuZChwcm9wZXJ0
eSk7CiB9CiAKIApAQCAtMjExLDcgKzIwNCw3IEBAIGJvb2wgUHJvcGVydHlDYXNjYWRlOjphZGRN
YXRjaChjb25zdCBNYXRjaGVkUHJvcGVydGllcyYgbWF0Y2hlZFByb3BlcnRpZXMsIENhc2NhCiAg
ICAgICAgIGlmIChwcm9wZXJ0eUFsbG93bGlzdCA9PSBQcm9wZXJ0eUFsbG93bGlzdDo6TWFya2Vy
ICYmICFpc1ZhbGlkTWFya2VyU3R5bGVQcm9wZXJ0eShwcm9wZXJ0eUlEKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChzaG91bGRBcHBseVByb3BlcnR5SW5QYXJzZU9yZGVy
KHByb3BlcnR5SUQpKQorICAgICAgICBpZiAoUHJvcGVydHlDYXNjYWRlOjpzaG91bGRBcHBseVBy
b3BlcnR5SW5QYXJzZU9yZGVyKHByb3BlcnR5SUQpKQogICAgICAgICAgICAgc2V0RGVmZXJyZWQo
cHJvcGVydHlJRCwgKmN1cnJlbnQudmFsdWUoKSwgbWF0Y2hlZFByb3BlcnRpZXMsIGNhc2NhZGVM
ZXZlbCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNldChwcm9wZXJ0eUlELCAqY3VycmVu
dC52YWx1ZSgpLCBtYXRjaGVkUHJvcGVydGllcywgY2FzY2FkZUxldmVsKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvUHJvcGVydHlDYXNjYWRlLmgKaW5kZXggM2VlNmRmMzNkNTM5NWRlNWY1Yjk0YTQzZjYx
MDM0NzgwMjA3ZWVmYy4uZmUyNjI3NjUyN2ZhMjMzZDg4OTZhYTc5OTliMjc0ZDMxOWUyZDg1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmgKQEAgLTU3LDYgKzU3LDggQEAg
cHVibGljOgogICAgICAgICBDYXNjYWRlTGF5ZXJQcmlvcml0eSBjYXNjYWRlTGF5ZXJQcmlvcml0
eTsKICAgICAgICAgRnJvbVN0eWxlQXR0cmlidXRlIGZyb21TdHlsZUF0dHJpYnV0ZTsKICAgICAg
ICAgQ1NTVmFsdWUqIGNzc1ZhbHVlWzNdOyAvLyBWYWx1ZXMgZm9yIGxpbmsgbWF0Y2ggc3RhdGVz
IE1hdGNoRGVmYXVsdCwgTWF0Y2hMaW5rIGFuZCBNYXRjaFZpc2l0ZWQKKyAgICAgICAgUHJvcGVy
dHkqIG5leHREZWZlcnJlZFByb3BlcnR5OworICAgICAgICBQcm9wZXJ0eSogcHJldkRlZmVycmVk
UHJvcGVydHk7CiAgICAgfTsKIAogICAgIGJvb2wgaGFzUHJvcGVydHkoQ1NTUHJvcGVydHlJRCkg
Y29uc3Q7CkBAIC02OCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0N1c3RvbVByb3Bl
cnR5KGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIFByb3BlcnR5IGN1c3RvbVByb3BlcnR5KGNv
bnN0IFN0cmluZyYpIGNvbnN0OwogCi0gICAgY29uc3QgVmVjdG9yPFByb3BlcnR5LCA4PiYgZGVm
ZXJyZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9kZWZlcnJlZFByb3BlcnRpZXM7IH0K
KyAgICBjb25zdCBQcm9wZXJ0eSogZmlyc3REZWZlcnJlZFByb3BlcnR5KCkgY29uc3QgeyByZXR1
cm4gbV9maXJzdERlZmVycmVkUHJvcGVydHk7IH0KICAgICBjb25zdCBIYXNoTWFwPEF0b21TdHJp
bmcsIFByb3BlcnR5PiYgY3VzdG9tUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9t
UHJvcGVydGllczsgfQogCiAgICAgRGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0OwpAQCAtODIs
NiArODQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0KENTU1Byb3BlcnR5SUQsIENTU1ZhbHVl
JiwgY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmLCBDYXNjYWRlTGV2ZWwpOwogICAgIHZvaWQgc2V0
RGVmZXJyZWQoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUmLCBjb25zdCBNYXRjaGVkUHJvcGVydGll
cyYsIENhc2NhZGVMZXZlbCk7CiAgICAgc3RhdGljIHZvaWQgc2V0UHJvcGVydHlJbnRlcm5hbChQ
cm9wZXJ0eSYsIENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlJiwgY29uc3QgTWF0Y2hlZFByb3BlcnRp
ZXMmLCBDYXNjYWRlTGV2ZWwpOworICAgIHN0YXRpYyBib29sIHNob3VsZEFwcGx5UHJvcGVydHlJ
blBhcnNlT3JkZXIoQ1NTUHJvcGVydHlJRCk7CiAKICAgICBEaXJlY3Rpb24gcmVzb2x2ZURpcmVj
dGlvbkFuZFdyaXRpbmdNb2RlKERpcmVjdGlvbiBpbmhlcml0ZWREaXJlY3Rpb24pIGNvbnN0Owog
CkBAIC05NSw4ICs5OCw4IEBAIHByaXZhdGU6CiAgICAgUHJvcGVydHkgbV9wcm9wZXJ0aWVzW251
bUNTU1Byb3BlcnRpZXMgKyAyXTsKICAgICBzdGQ6OmJpdHNldDxudW1DU1NQcm9wZXJ0aWVzICsg
Mj4gbV9wcm9wZXJ0eUlzUHJlc2VudDsKIAotICAgIFZlY3RvcjxQcm9wZXJ0eSwgOD4gbV9kZWZl
cnJlZFByb3BlcnRpZXM7Ci0gICAgSGFzaE1hcDxDU1NQcm9wZXJ0eUlELCB1bnNpZ25lZD4gbV9k
ZWZlcnJlZFByb3BlcnRpZXNJbmRpY2VzOworICAgIFByb3BlcnR5KiBtX2ZpcnN0RGVmZXJyZWRQ
cm9wZXJ0eSB7IG51bGxwdHIgfTsKKyAgICBQcm9wZXJ0eSogbV9sYXN0RGVmZXJyZWRQcm9wZXJ0
eSB7IG51bGxwdHIgfTsKIAogICAgIEhhc2hNYXA8QXRvbVN0cmluZywgUHJvcGVydHk+IG1fY3Vz
dG9tUHJvcGVydGllczsKIH07CkBAIC0xMDQsMjUgKzEwNywyNSBAQCBwcml2YXRlOgogaW5saW5l
IGJvb2wgUHJvcGVydHlDYXNjYWRlOjpoYXNQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKSBjb25z
dAogewogICAgIEFTU0VSVChpZCA8IG1fcHJvcGVydHlJc1ByZXNlbnQuc2l6ZSgpKTsKLSAgICBy
ZXR1cm4gbV9wcm9wZXJ0eUlzUHJlc2VudFtpZF07CisgICAgcmV0dXJuIG1fcHJvcGVydHlJc1By
ZXNlbnRbaWRdICYmICFzaG91bGRBcHBseVByb3BlcnR5SW5QYXJzZU9yZGVyKGlkKTsKIH0KIAog
aW5saW5lIGNvbnN0IFByb3BlcnR5Q2FzY2FkZTo6UHJvcGVydHkmIFByb3BlcnR5Q2FzY2FkZTo6
cHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCkgY29uc3QKIHsKKyAgICBBU1NFUlQoaGFzUHJvcGVy
dHkoaWQpKTsKICAgICByZXR1cm4gbV9wcm9wZXJ0aWVzW2lkXTsKIH0KIAogaW5saW5lIGJvb2wg
UHJvcGVydHlDYXNjYWRlOjpoYXNEZWZlcnJlZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fZGVmZXJyZWRQcm9wZXJ0aWVzSW5kaWNlcy5jb250YWlucyhp
ZCk7CisgICAgQVNTRVJUKGlkIDwgbV9wcm9wZXJ0eUlzUHJlc2VudC5zaXplKCkpOworICAgIHJl
dHVybiBtX3Byb3BlcnR5SXNQcmVzZW50W2lkXSAmJiBzaG91bGRBcHBseVByb3BlcnR5SW5QYXJz
ZU9yZGVyKGlkKTsKIH0KIAogaW5saW5lIGNvbnN0IFByb3BlcnR5Q2FzY2FkZTo6UHJvcGVydHkm
IFByb3BlcnR5Q2FzY2FkZTo6ZGVmZXJyZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKSBjb25z
dAogewogICAgIEFTU0VSVChoYXNEZWZlcnJlZFByb3BlcnR5KGlkKSk7Ci0gICAgdW5zaWduZWQg
aW5kZXggPSBtX2RlZmVycmVkUHJvcGVydGllc0luZGljZXMuZ2V0KGlkKTsKLSAgICBBU1NFUlQo
aW5kZXggPCBtX2RlZmVycmVkUHJvcGVydGllcy5zaXplKCkpOwotICAgIHJldHVybiBtX2RlZmVy
cmVkUHJvcGVydGllc1tpbmRleF07CisgICAgcmV0dXJuIG1fcHJvcGVydGllc1tpZF07CiB9CiAK
IGlubGluZSBib29sIFByb3BlcnR5Q2FzY2FkZTo6aGFzQ3VzdG9tUHJvcGVydHkoY29uc3QgU3Ry
aW5nJiBuYW1lKSBjb25zdApAQCAtMTM1LDUgKzEzOCwyOSBAQCBpbmxpbmUgUHJvcGVydHlDYXNj
YWRlOjpQcm9wZXJ0eSBQcm9wZXJ0eUNhc2NhZGU6OmN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmlu
ZyYgbgogICAgIHJldHVybiBtX2N1c3RvbVByb3BlcnRpZXMuZ2V0KG5hbWUpOwogfQogCitpbmxp
bmUgYm9vbCBQcm9wZXJ0eUNhc2NhZGU6OnNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNlT3JkZXIo
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQoreworICAgIHN3aXRjaCAocHJvcGVydHlJRCkgewor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcDoKKyAgICBjYXNlIENTU1By
b3BlcnR5QmFja2dyb3VuZENsaXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91
bmRPcmlnaW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW46CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplOgorICAgIGNhc2UgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kU2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1hZ2U6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJJbWFnZVNsaWNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZToKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VPdXRzZXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlckltYWdlUmVwZWF0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVdpZHRo
OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3c6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJveFNoYWRvdzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
QnVpbGRlci5jcHAKaW5kZXggNTQzZGMwMmQxMzYxYThhNWExOWNmZmMyMDBmZTExYTdiOGNkZThi
ZC4uZDc2ODc3NmQ4NzNlNGIwZWM0MzIxNjEyNjM4OGM3NThlZTIyYmM3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3BwCkBAIC0xMjMsOCArMTIzLDExIEBAIHZvaWQgQnVpbGRl
cjo6YXBwbHlMb3dQcmlvcml0eVByb3BlcnRpZXMoKQogCiB2b2lkIEJ1aWxkZXI6OmFwcGx5RGVm
ZXJyZWRQcm9wZXJ0aWVzKCkKIHsKLSAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogbV9jYXNjYWRl
LmRlZmVycmVkUHJvcGVydGllcygpKQotICAgICAgICBhcHBseUNhc2NhZGVQcm9wZXJ0eShwcm9w
ZXJ0eSk7CisgICAgYXV0byogcHJvcGVydHkgPSBtX2Nhc2NhZGUuZmlyc3REZWZlcnJlZFByb3Bl
cnR5KCk7CisgICAgd2hpbGUgKHByb3BlcnR5KSB7CisgICAgICAgIGFwcGx5Q2FzY2FkZVByb3Bl
cnR5KCpwcm9wZXJ0eSk7CisgICAgICAgIHByb3BlcnR5ID0gcHJvcGVydHktPm5leHREZWZlcnJl
ZFByb3BlcnR5OworICAgIH0KIH0KIAogdm9pZCBCdWlsZGVyOjphcHBseVByb3BlcnRpZXMoaW50
IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJvcGVydHkpCg==
</data>
<flag name="commit-queue"
          id="483572"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455558</attachid>
            <date>2022-03-23 14:40:43 -0700</date>
            <delta_ts>2022-04-19 09:02:06 -0700</delta_ts>
            <desc>Patch with doubly linked list approach</desc>
            <filename>bug-238260-20220323224042.patch</filename>
            <type>text/plain</type>
            <size>10927</size>
            <attacher name="Oriol Brufau">obrufau</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI5OTFmYTkzYjc0MWRh
MDc2ZTk4MTFmYTYxMDExZGQ2MzdiNWYyMC4uOGRhYWIzZThmMDM4YWRjMjIzNDZlMjZmZjJmOTQ3
OTIyYzE3ZTBlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIyLTAzLTIzICBPcmlv
bCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1jYXNjYWRlXSBP
cHRpbWl6ZSBjb2RlIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyNjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDU1MgZGVjbGFyYXRpb25zIGZvciBkZWZlcnJl
ZCBwcm9wZXJ0aWVzIHdlcmUganVzdCBhcHBlbmRlZCB0byBhIHZlY3RvciwKKyAgICAgICAgd2hp
Y2ggY291bGQgZ3JvdyBodWdlLiBUaGVuIFN0eWxlQnVpbGRlciB3b3VsZCBhcHBseSB0aGVtIG9u
ZSBieSBvbmUsCisgICAgICAgIGRvaW5nIHVzZWxlc3Mgd29yayBpZiBhIHByb3BlcnR5IGFwcGVh
cmVkIG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgIFRoZSBwb2ludCBvZiBkZWZlcnJlZCBwcm9w
ZXJ0aWVzIGlzIHRoYXQgdGhleSBzaG91bGQgYmUgYXBwbGllZCBpbgorICAgICAgICByZWxhdGl2
ZSBvcmRlci4gQnV0IGlmIGEgcHJvcGVydHkgYXBwZWFycyBtdWx0aXBsZSB0aW1lcywgd2Ugc2hv
dWxkIG9ubHkKKyAgICAgICAgY2FyZSBhYm91dCB0aGUgbGFzdCBvY2N1cnJlbmNlLgorCisgICAg
ICAgIFNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgdmVjdG9yIGFuZCBhIEhhc2hNYXAgdGhhdCB0
cmFja2VkIHRoZSBpbmRpY2VzLgorICAgICAgICBJbnN0ZWFkLCBpdCB1c2VzIGEgZG91Ymx5IGxp
bmtlZCBsaXN0IGFwcHJvYWNoOiB0aGUgUHJvcGVydHkgc3RydWN0IGdldHMKKyAgICAgICAgMiBw
b2ludGVycyB0byB0cmFjayB0aGUgcHJldmlvdXMgYW5kIG5leHQgaXRlbXMsIGFuZCBkZWZlcnJl
ZCBQcm9wZXJ0eQorICAgICAgICBhcmUgc3RvcmVkIGluIHRoZSBzYW1lIGFycmF5IGFzIG5vbi1k
ZWZlcnJlZCBwcm9wZXJ0aWVzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBzaW5jZSB0aGVyZSBz
aG91bGQgYmUgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogc3R5bGUvUHJvcGVy
dHlDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6
OnNldERlZmVycmVkKToKKyAgICAgICAgKiBzdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OnByb3BlcnR5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OmRlZmVycmVkUHJvcGVydHkg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpkZWZlcnJlZFByb3BlcnRpZXMgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHN0eWxlL1N0eWxlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6QnVpbGRlcjo6YXBwbHlEZWZlcnJlZFByb3BlcnRpZXMpOgorCiAyMDIyLTAz
LTIzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBWaWRlb0Zy
YW1lIGRvZXMgbm90IG5lZWQgdG8gaW5oZXJpdCBmcm9tIE1lZGlhU2FtcGxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcAppbmRleCA5MGZlZDYxN2FmNzU2ZTc3MzhiYzli
NTM1ZGRkYTEyOGVlMGMwMTJmLi5jZjI5NDk0ZTZhNDU5NDMwNDMwMTRkODI4NjdmNDA3MmNjZDYz
MWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAKQEAgLTM4LDMw
ICszOCw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgU3R5bGUgewogCi1zdGF0
aWMgaW5saW5lIGJvb2wgc2hvdWxkQXBwbHlQcm9wZXJ0eUluUGFyc2VPcmRlcihDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQpCi17Ci0gICAgc3dpdGNoIChwcm9wZXJ0eUlEKSB7Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRDbGlwOgotICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ2xpcDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZE9yaWdpbjoK
LSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbjoKLSAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0QmFja2dyb3VuZFNpemU6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRT
aXplOgotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJJbWFnZToKLSAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVySW1hZ2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU2xp
Y2U6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlOgotICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJJbWFnZU91dHNldDoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2VSZXBlYXQ6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlV2lkdGg6Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJveFNoYWRvdzoKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm94U2hh
ZG93OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotfQotCiBQcm9wZXJ0eUNhc2NhZGU6OlByb3BlcnR5Q2FzY2FkZShjb25z
dCBNYXRjaFJlc3VsdCYgbWF0Y2hSZXN1bHQsIENhc2NhZGVMZXZlbCBtYXhpbXVtQ2FzY2FkZUxl
dmVsLCBJbmNsdWRlZFByb3BlcnRpZXMgaW5jbHVkZWRQcm9wZXJ0aWVzLCBEaXJlY3Rpb24gZGly
ZWN0aW9uKQogICAgIDogbV9tYXRjaFJlc3VsdChtYXRjaFJlc3VsdCkKICAgICAsIG1faW5jbHVk
ZWRQcm9wZXJ0aWVzKGluY2x1ZGVkUHJvcGVydGllcykKQEAgLTEyNyw3ICsxMDMsNyBAQCB2b2lk
IFByb3BlcnR5Q2FzY2FkZTo6c2V0KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlJiBjc3NWYWx1
ZSwgY29uc3QgTWF0Y2hlZFBybwogICAgICAgICBpZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGly
ZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCwgZGlyZWN0aW9uLnRleHREaXJlY3Rpb24sIGRpcmVjdGlv
bi53cml0aW5nTW9kZSk7CiAgICAgfQogCi0gICAgQVNTRVJUKCFzaG91bGRBcHBseVByb3BlcnR5
SW5QYXJzZU9yZGVyKGlkKSk7CisgICAgQVNTRVJUKCFQcm9wZXJ0eUNhc2NhZGU6OnNob3VsZEFw
cGx5UHJvcGVydHlJblBhcnNlT3JkZXIoaWQpKTsKIAogICAgIGF1dG8mIHByb3BlcnR5ID0gbV9w
cm9wZXJ0aWVzW2lkXTsKICAgICBBU1NFUlQoaWQgPCBtX3Byb3BlcnR5SXNQcmVzZW50LnNpemUo
KSk7CkBAIC0xNTgsMTMgKzEzNCwzOSBAQCB2b2lkIFByb3BlcnR5Q2FzY2FkZTo6c2V0KENTU1By
b3BlcnR5SUQgaWQsIENTU1ZhbHVlJiBjc3NWYWx1ZSwgY29uc3QgTWF0Y2hlZFBybwogdm9pZCBQ
cm9wZXJ0eUNhc2NhZGU6OnNldERlZmVycmVkKENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlJiBj
c3NWYWx1ZSwgY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmIG1hdGNoZWRQcm9wZXJ0aWVzLCBDYXNj
YWRlTGV2ZWwgY2FzY2FkZUxldmVsKQogewogICAgIEFTU0VSVCghQ1NTUHJvcGVydHk6OmlzRGly
ZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCkpOwotICAgIEFTU0VSVChzaG91bGRBcHBseVByb3BlcnR5
SW5QYXJzZU9yZGVyKGlkKSk7CisgICAgQVNTRVJUKFByb3BlcnR5Q2FzY2FkZTo6c2hvdWxkQXBw
bHlQcm9wZXJ0eUluUGFyc2VPcmRlcihpZCkpOworCisgICAgYXV0byYgcHJvcGVydHkgPSBtX3By
b3BlcnRpZXNbaWRdOworICAgIGlmICghbV9wcm9wZXJ0eUlzUHJlc2VudFtpZF0pIHsKKyAgICAg
ICAgLy8gSW5pdGlhbGl6ZSBwcm9wZXJ0eS4KKyAgICAgICAgbV9wcm9wZXJ0eUlzUHJlc2VudC5z
ZXQoaWQpOworICAgICAgICBtZW1zZXQocHJvcGVydHkuY3NzVmFsdWUsIDAsIHNpemVvZihwcm9w
ZXJ0eS5jc3NWYWx1ZSkpOwogCi0gICAgUHJvcGVydHkgcHJvcGVydHk7Ci0gICAgbWVtc2V0KHBy
b3BlcnR5LmNzc1ZhbHVlLCAwLCBzaXplb2YocHJvcGVydHkuY3NzVmFsdWUpKTsKKyAgICAgICAg
Ly8gSW5zZXJ0IHByb3BlcnR5IGF0IHRoZSBlbmQgb2YgdGhlIGxpbmtlZCBsaXN0LgorICAgICAg
ICBpZiAobV9sYXN0RGVmZXJyZWRQcm9wZXJ0eSkKKyAgICAgICAgICAgIG1fbGFzdERlZmVycmVk
UHJvcGVydHktPm5leHREZWZlcnJlZFByb3BlcnR5ID0gJnByb3BlcnR5OworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX2ZpcnN0RGVmZXJyZWRQcm9wZXJ0eSA9ICZwcm9wZXJ0eTsKKyAgICAg
ICAgcHJvcGVydHkucHJldkRlZmVycmVkUHJvcGVydHkgPSBtX2xhc3REZWZlcnJlZFByb3BlcnR5
OworICAgICAgICBwcm9wZXJ0eS5uZXh0RGVmZXJyZWRQcm9wZXJ0eSA9IG51bGxwdHI7CisgICAg
ICAgIG1fbGFzdERlZmVycmVkUHJvcGVydHkgPSAmcHJvcGVydHk7CisgICAgfSBlbHNlIGlmICgm
cHJvcGVydHkgIT0gbV9sYXN0RGVmZXJyZWRQcm9wZXJ0eSkgeworICAgICAgICAvLyBSZW1vdmUg
cHJvcGVydHkgZnJvbSB0aGUgbGlua2VkIGxpc3QuCisgICAgICAgIFByb3BlcnR5KiBwcmV2ID0g
cHJvcGVydHkucHJldkRlZmVycmVkUHJvcGVydHk7CisgICAgICAgIFByb3BlcnR5KiBuZXh0ID0g
cHJvcGVydHkubmV4dERlZmVycmVkUHJvcGVydHk7CisgICAgICAgIGlmIChwcmV2KQorICAgICAg
ICAgICAgcHJldi0+bmV4dERlZmVycmVkUHJvcGVydHkgPSBuZXh0OworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtX2ZpcnN0RGVmZXJyZWRQcm9wZXJ0eSA9IG5leHQ7CisgICAgICAgIG5leHQt
PnByZXZEZWZlcnJlZFByb3BlcnR5ID0gcHJldjsKKworICAgICAgICAvLyBJbnNlcnQgcHJvcGVy
dHkgYXQgdGhlIGVuZCBvZiB0aGUgbGlua2VkIGxpc3QuCisgICAgICAgIG1fbGFzdERlZmVycmVk
UHJvcGVydHktPm5leHREZWZlcnJlZFByb3BlcnR5ID0gJnByb3BlcnR5OworICAgICAgICBwcm9w
ZXJ0eS5wcmV2RGVmZXJyZWRQcm9wZXJ0eSA9IG1fbGFzdERlZmVycmVkUHJvcGVydHk7CisgICAg
ICAgIHByb3BlcnR5Lm5leHREZWZlcnJlZFByb3BlcnR5ID0gbnVsbHB0cjsKKyAgICAgICAgbV9s
YXN0RGVmZXJyZWRQcm9wZXJ0eSA9ICZwcm9wZXJ0eTsKKyAgICB9CiAgICAgc2V0UHJvcGVydHlJ
bnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBtYXRjaGVkUHJvcGVydGllcywgY2FzY2Fk
ZUxldmVsKTsKLSAgICBtX2RlZmVycmVkUHJvcGVydGllc0luZGljZXMuc2V0KGlkLCBtX2RlZmVy
cmVkUHJvcGVydGllcy5zaXplKCkpOwotICAgIG1fZGVmZXJyZWRQcm9wZXJ0aWVzLmFwcGVuZChw
cm9wZXJ0eSk7CiB9CiAKIApAQCAtMjExLDcgKzIxMyw3IEBAIGJvb2wgUHJvcGVydHlDYXNjYWRl
OjphZGRNYXRjaChjb25zdCBNYXRjaGVkUHJvcGVydGllcyYgbWF0Y2hlZFByb3BlcnRpZXMsIENh
c2NhCiAgICAgICAgIGlmIChwcm9wZXJ0eUFsbG93bGlzdCA9PSBQcm9wZXJ0eUFsbG93bGlzdDo6
TWFya2VyICYmICFpc1ZhbGlkTWFya2VyU3R5bGVQcm9wZXJ0eShwcm9wZXJ0eUlEKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChzaG91bGRBcHBseVByb3BlcnR5SW5QYXJz
ZU9yZGVyKHByb3BlcnR5SUQpKQorICAgICAgICBpZiAoUHJvcGVydHlDYXNjYWRlOjpzaG91bGRB
cHBseVByb3BlcnR5SW5QYXJzZU9yZGVyKHByb3BlcnR5SUQpKQogICAgICAgICAgICAgc2V0RGVm
ZXJyZWQocHJvcGVydHlJRCwgKmN1cnJlbnQudmFsdWUoKSwgbWF0Y2hlZFByb3BlcnRpZXMsIGNh
c2NhZGVMZXZlbCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNldChwcm9wZXJ0eUlELCAq
Y3VycmVudC52YWx1ZSgpLCBtYXRjaGVkUHJvcGVydGllcywgY2FzY2FkZUxldmVsKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5oIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmgKaW5kZXggM2VlNmRmMzNkNTM5NWRlNWY1Yjk0
YTQzZjYxMDM0NzgwMjA3ZWVmYy4uZmUyNjI3NjUyN2ZhMjMzZDg4OTZhYTc5OTliMjc0ZDMxOWUy
ZDg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmgKQEAgLTU3LDYgKzU3
LDggQEAgcHVibGljOgogICAgICAgICBDYXNjYWRlTGF5ZXJQcmlvcml0eSBjYXNjYWRlTGF5ZXJQ
cmlvcml0eTsKICAgICAgICAgRnJvbVN0eWxlQXR0cmlidXRlIGZyb21TdHlsZUF0dHJpYnV0ZTsK
ICAgICAgICAgQ1NTVmFsdWUqIGNzc1ZhbHVlWzNdOyAvLyBWYWx1ZXMgZm9yIGxpbmsgbWF0Y2gg
c3RhdGVzIE1hdGNoRGVmYXVsdCwgTWF0Y2hMaW5rIGFuZCBNYXRjaFZpc2l0ZWQKKyAgICAgICAg
UHJvcGVydHkqIG5leHREZWZlcnJlZFByb3BlcnR5OworICAgICAgICBQcm9wZXJ0eSogcHJldkRl
ZmVycmVkUHJvcGVydHk7CiAgICAgfTsKIAogICAgIGJvb2wgaGFzUHJvcGVydHkoQ1NTUHJvcGVy
dHlJRCkgY29uc3Q7CkBAIC02OCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0N1c3Rv
bVByb3BlcnR5KGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIFByb3BlcnR5IGN1c3RvbVByb3Bl
cnR5KGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCi0gICAgY29uc3QgVmVjdG9yPFByb3BlcnR5LCA4
PiYgZGVmZXJyZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9kZWZlcnJlZFByb3BlcnRp
ZXM7IH0KKyAgICBjb25zdCBQcm9wZXJ0eSogZmlyc3REZWZlcnJlZFByb3BlcnR5KCkgY29uc3Qg
eyByZXR1cm4gbV9maXJzdERlZmVycmVkUHJvcGVydHk7IH0KICAgICBjb25zdCBIYXNoTWFwPEF0
b21TdHJpbmcsIFByb3BlcnR5PiYgY3VzdG9tUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VzdG9tUHJvcGVydGllczsgfQogCiAgICAgRGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0OwpA
QCAtODIsNiArODQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0KENTU1Byb3BlcnR5SUQsIENT
U1ZhbHVlJiwgY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmLCBDYXNjYWRlTGV2ZWwpOwogICAgIHZv
aWQgc2V0RGVmZXJyZWQoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUmLCBjb25zdCBNYXRjaGVkUHJv
cGVydGllcyYsIENhc2NhZGVMZXZlbCk7CiAgICAgc3RhdGljIHZvaWQgc2V0UHJvcGVydHlJbnRl
cm5hbChQcm9wZXJ0eSYsIENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlJiwgY29uc3QgTWF0Y2hlZFBy
b3BlcnRpZXMmLCBDYXNjYWRlTGV2ZWwpOworICAgIHN0YXRpYyBib29sIHNob3VsZEFwcGx5UHJv
cGVydHlJblBhcnNlT3JkZXIoQ1NTUHJvcGVydHlJRCk7CiAKICAgICBEaXJlY3Rpb24gcmVzb2x2
ZURpcmVjdGlvbkFuZFdyaXRpbmdNb2RlKERpcmVjdGlvbiBpbmhlcml0ZWREaXJlY3Rpb24pIGNv
bnN0OwogCkBAIC05NSw4ICs5OCw4IEBAIHByaXZhdGU6CiAgICAgUHJvcGVydHkgbV9wcm9wZXJ0
aWVzW251bUNTU1Byb3BlcnRpZXMgKyAyXTsKICAgICBzdGQ6OmJpdHNldDxudW1DU1NQcm9wZXJ0
aWVzICsgMj4gbV9wcm9wZXJ0eUlzUHJlc2VudDsKIAotICAgIFZlY3RvcjxQcm9wZXJ0eSwgOD4g
bV9kZWZlcnJlZFByb3BlcnRpZXM7Ci0gICAgSGFzaE1hcDxDU1NQcm9wZXJ0eUlELCB1bnNpZ25l
ZD4gbV9kZWZlcnJlZFByb3BlcnRpZXNJbmRpY2VzOworICAgIFByb3BlcnR5KiBtX2ZpcnN0RGVm
ZXJyZWRQcm9wZXJ0eSB7IG51bGxwdHIgfTsKKyAgICBQcm9wZXJ0eSogbV9sYXN0RGVmZXJyZWRQ
cm9wZXJ0eSB7IG51bGxwdHIgfTsKIAogICAgIEhhc2hNYXA8QXRvbVN0cmluZywgUHJvcGVydHk+
IG1fY3VzdG9tUHJvcGVydGllczsKIH07CkBAIC0xMDQsMjUgKzEwNywyNSBAQCBwcml2YXRlOgog
aW5saW5lIGJvb2wgUHJvcGVydHlDYXNjYWRlOjpoYXNQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlk
KSBjb25zdAogewogICAgIEFTU0VSVChpZCA8IG1fcHJvcGVydHlJc1ByZXNlbnQuc2l6ZSgpKTsK
LSAgICByZXR1cm4gbV9wcm9wZXJ0eUlzUHJlc2VudFtpZF07CisgICAgcmV0dXJuIG1fcHJvcGVy
dHlJc1ByZXNlbnRbaWRdICYmICFzaG91bGRBcHBseVByb3BlcnR5SW5QYXJzZU9yZGVyKGlkKTsK
IH0KIAogaW5saW5lIGNvbnN0IFByb3BlcnR5Q2FzY2FkZTo6UHJvcGVydHkmIFByb3BlcnR5Q2Fz
Y2FkZTo6cHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCkgY29uc3QKIHsKKyAgICBBU1NFUlQoaGFz
UHJvcGVydHkoaWQpKTsKICAgICByZXR1cm4gbV9wcm9wZXJ0aWVzW2lkXTsKIH0KIAogaW5saW5l
IGJvb2wgUHJvcGVydHlDYXNjYWRlOjpoYXNEZWZlcnJlZFByb3BlcnR5KENTU1Byb3BlcnR5SUQg
aWQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGVmZXJyZWRQcm9wZXJ0aWVzSW5kaWNlcy5jb250
YWlucyhpZCk7CisgICAgQVNTRVJUKGlkIDwgbV9wcm9wZXJ0eUlzUHJlc2VudC5zaXplKCkpOwor
ICAgIHJldHVybiBtX3Byb3BlcnR5SXNQcmVzZW50W2lkXSAmJiBzaG91bGRBcHBseVByb3BlcnR5
SW5QYXJzZU9yZGVyKGlkKTsKIH0KIAogaW5saW5lIGNvbnN0IFByb3BlcnR5Q2FzY2FkZTo6UHJv
cGVydHkmIFByb3BlcnR5Q2FzY2FkZTo6ZGVmZXJyZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlk
KSBjb25zdAogewogICAgIEFTU0VSVChoYXNEZWZlcnJlZFByb3BlcnR5KGlkKSk7Ci0gICAgdW5z
aWduZWQgaW5kZXggPSBtX2RlZmVycmVkUHJvcGVydGllc0luZGljZXMuZ2V0KGlkKTsKLSAgICBB
U1NFUlQoaW5kZXggPCBtX2RlZmVycmVkUHJvcGVydGllcy5zaXplKCkpOwotICAgIHJldHVybiBt
X2RlZmVycmVkUHJvcGVydGllc1tpbmRleF07CisgICAgcmV0dXJuIG1fcHJvcGVydGllc1tpZF07
CiB9CiAKIGlubGluZSBib29sIFByb3BlcnR5Q2FzY2FkZTo6aGFzQ3VzdG9tUHJvcGVydHkoY29u
c3QgU3RyaW5nJiBuYW1lKSBjb25zdApAQCAtMTM1LDUgKzEzOCwyOSBAQCBpbmxpbmUgUHJvcGVy
dHlDYXNjYWRlOjpQcm9wZXJ0eSBQcm9wZXJ0eUNhc2NhZGU6OmN1c3RvbVByb3BlcnR5KGNvbnN0
IFN0cmluZyYgbgogICAgIHJldHVybiBtX2N1c3RvbVByb3BlcnRpZXMuZ2V0KG5hbWUpOwogfQog
CitpbmxpbmUgYm9vbCBQcm9wZXJ0eUNhc2NhZGU6OnNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNl
T3JkZXIoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQoreworICAgIHN3aXRjaCAocHJvcGVydHlJ
RCkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZ3JvdW5kQ2xpcDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJh
Y2tncm91bmRPcmlnaW46CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW46Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplOgorICAgIGNhc2UgQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kU2l6ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySW1h
Z2U6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlOgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJJbWFnZVNsaWNlOgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJj
ZToKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VPdXRzZXQ6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlckltYWdlUmVwZWF0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFn
ZVdpZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3hTaGFkb3c6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eUJveFNoYWRvdzoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwogfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlQnVpbGRlci5jcHAKaW5kZXggNTQzZGMwMmQxMzYxYThhNWExOWNmZmMyMDBmZTExYTdi
OGNkZThiZC4uZDc2ODc3NmQ4NzNlNGIwZWM0MzIxNjEyNjM4OGM3NThlZTIyYmM3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3BwCkBAIC0xMjMsOCArMTIzLDExIEBAIHZvaWQg
QnVpbGRlcjo6YXBwbHlMb3dQcmlvcml0eVByb3BlcnRpZXMoKQogCiB2b2lkIEJ1aWxkZXI6OmFw
cGx5RGVmZXJyZWRQcm9wZXJ0aWVzKCkKIHsKLSAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogbV9j
YXNjYWRlLmRlZmVycmVkUHJvcGVydGllcygpKQotICAgICAgICBhcHBseUNhc2NhZGVQcm9wZXJ0
eShwcm9wZXJ0eSk7CisgICAgYXV0byogcHJvcGVydHkgPSBtX2Nhc2NhZGUuZmlyc3REZWZlcnJl
ZFByb3BlcnR5KCk7CisgICAgd2hpbGUgKHByb3BlcnR5KSB7CisgICAgICAgIGFwcGx5Q2FzY2Fk
ZVByb3BlcnR5KCpwcm9wZXJ0eSk7CisgICAgICAgIHByb3BlcnR5ID0gcHJvcGVydHktPm5leHRE
ZWZlcnJlZFByb3BlcnR5OworICAgIH0KIH0KIAogdm9pZCBCdWlsZGVyOjphcHBseVByb3BlcnRp
ZXMoaW50IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJvcGVydHkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455571</attachid>
            <date>2022-03-23 15:52:34 -0700</date>
            <delta_ts>2022-03-23 16:20:04 -0700</delta_ts>
            <desc>Patch with array approach</desc>
            <filename>bug-238260-20220323235233.patch</filename>
            <type>text/plain</type>
            <size>8611</size>
            <attacher name="Oriol Brufau">obrufau</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI5OTFmYTkzYjc0MWRh
MDc2ZTk4MTFmYTYxMDExZGQ2MzdiNWYyMC4uMGE0MmM5YjAxYWViZTBjNTQzYTFmNWE0YTQyMTg3
NTk4YTc5NmQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAzLTIzICBPcmlv
bCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1jYXNjYWRlXSBP
cHRpbWl6ZSBjb2RlIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyNjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDU1MgZGVjbGFyYXRpb25zIGZvciBkZWZlcnJl
ZCBwcm9wZXJ0aWVzIHdlcmUganVzdCBhcHBlbmRlZCB0byBhIHZlY3RvciwKKyAgICAgICAgd2hp
Y2ggY291bGQgZ3JvdyBodWdlLiBUaGVuIFN0eWxlQnVpbGRlciB3b3VsZCBhcHBseSB0aGVtIG9u
ZSBieSBvbmUsCisgICAgICAgIGRvaW5nIHVzZWxlc3Mgd29yayBpZiBhIHByb3BlcnR5IGFwcGVh
cmVkIG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgIFRoZSBwb2ludCBvZiBkZWZlcnJlZCBwcm9w
ZXJ0aWVzIGlzIHRoYXQgdGhleSBzaG91bGQgYmUgYXBwbGllZCBpbgorICAgICAgICByZWxhdGl2
ZSBvcmRlci4gQnV0IGlmIGEgcHJvcGVydHkgYXBwZWFycyBtdWx0aXBsZSB0aW1lcywgd2Ugc2hv
dWxkIG9ubHkKKyAgICAgICAgY2FyZSBhYm91dCB0aGUgbGFzdCBvY2N1cnJlbmNlLgorCisgICAg
ICAgIFNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgdmVjdG9yIGFuZCBpbnN0ZWFkIHN0b3JlcyB0
aGUgUHJvcGVydHkgaW4gdGhlCisgICAgICAgIHNhbWUgYXJyYXkgYXMgbm9uLWRlZmVycmVkIHBy
b3BlcnRpZXMuIFRvIHRyYWNrIHRoZSBpbmRpY2VzLCBpdCB1c2VzIGFuCisgICAgICAgIGFycmF5
IGluc3RlYWQgb2YgYSBIYXNoTWFwLgorCisgICAgICAgIFdoZW4gYXBwbHlpbmcgdGhlIHByb3Bl
cnRpZXMsIHRoZSBwcm9wZXJ0eSBJRHMgYXJlIHBsYWNlZCBpbiBhIHZlY3RvciwKKyAgICAgICAg
d2hpY2ggaXMgdGhlbiBzb3J0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIGluZGlj
ZXMuIFRoaXMgY2FuCisgICAgICAgIGhhdmUgc29tZSBvdmVyaGVhZCwgYnV0IHRoZSBzaXplIG9m
IHRoZSB2ZWN0b3Igd2lsbCBiZSBsaW1pdGVkIGJ5IHRoZQorICAgICAgICBudW1iZXIgb2YgcHJv
cGVydGllcyBmb3Igd2hpY2ggc2hvdWxkQXBwbHlQcm9wZXJ0eUluUGFyc2VPcmRlciByZXR1cm5z
CisgICAgICAgIHRydWUuIEN1cnJlbnRseSB0aGVyZSBhcmUgb25seSAxNSBvZiB0aGVzZSAoaW4g
YnVnIDIzNjE5OSBJIHBsYW4gdG8gYWRkCisgICAgICAgIDk2IG1vcmUsIGJ1dCAxMTEgaXMgc3Rp
bGwgbm90IHRoYXQgYmlnKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhlcmUgc2hv
dWxkIGJlIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIHN0eWxlL1Byb3BlcnR5
Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpQ
cm9wZXJ0eUNhc2NhZGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2Fk
ZTo6YnVpbGRDYXNjYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2Nh
ZGU6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpzZXRE
ZWZlcnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpzb3J0
RGVmZXJyZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBzdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OmRlZmVycmVkUHJvcGVy
dGllcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpw
cm9wZXJ0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRl
OjpoYXNEZWZlcnJlZFByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQ
cm9wZXJ0eUNhc2NhZGU6OmRlZmVycmVkUHJvcGVydHkgY29uc3QpOgorICAgICAgICAqIHN0eWxl
L1N0eWxlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlcjo6YXBw
bHlEZWZlcnJlZFByb3BlcnRpZXMpOgorCiAyMDIyLTAzLTIzICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBWaWRlb0ZyYW1lIGRvZXMgbm90IG5lZWQgdG8gaW5o
ZXJpdCBmcm9tIE1lZGlhU2FtcGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Q
cm9wZXJ0eUNhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRl
LmNwcAppbmRleCA5MGZlZDYxN2FmNzU2ZTc3MzhiYzliNTM1ZGRkYTEyOGVlMGMwMTJmLi45NmFm
YTFmMDI5OGZmODc3ZTc4Mjk2YzA2OTY0NjVmNTlkNTg3MzZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAKQEAgLTY3LDYgKzY3LDcgQEAgUHJvcGVydHlDYXNjYWRl
OjpQcm9wZXJ0eUNhc2NhZGUoY29uc3QgTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0LCBDYXNjYWRl
TGV2ZWwgbWEKICAgICAsIG1faW5jbHVkZWRQcm9wZXJ0aWVzKGluY2x1ZGVkUHJvcGVydGllcykK
ICAgICAsIG1fbWF4aW11bUNhc2NhZGVMZXZlbChtYXhpbXVtQ2FzY2FkZUxldmVsKQogICAgICwg
bV9kaXJlY3Rpb24oZGlyZWN0aW9uKQorICAgICwgbV9kZWZlcnJlZFByb3BlcnRpZXNJbmRpY2Vz
KHsgfSkKIHsKICAgICBidWlsZENhc2NhZGUoKTsKIH0KQEAgLTc4LDYgKzc5LDcgQEAgUHJvcGVy
dHlDYXNjYWRlOjpQcm9wZXJ0eUNhc2NhZGUoY29uc3QgUHJvcGVydHlDYXNjYWRlJiBwYXJlbnQs
IENhc2NhZGVMZXZlbCBtYXgKICAgICAsIG1fbWF4aW11bUNhc2NhZGVMYXllclByaW9yaXR5Rm9y
Um9sbGJhY2sobWF4aW11bUNhc2NhZGVMYXllclByaW9yaXR5Rm9yUm9sbGJhY2spCiAgICAgLCBt
X2RpcmVjdGlvbihwYXJlbnQuZGlyZWN0aW9uKCkpCiAgICAgLCBtX2RpcmVjdGlvbklzVW5yZXNv
bHZlZChmYWxzZSkKKyAgICAsIG1fZGVmZXJyZWRQcm9wZXJ0aWVzSW5kaWNlcyh7IH0pCiB7CiAg
ICAgYnVpbGRDYXNjYWRlKCk7CiB9CkBAIC0xMDEsNiArMTAzLDggQEAgdm9pZCBQcm9wZXJ0eUNh
c2NhZGU6OmJ1aWxkQ2FzY2FkZSgpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYWRk
SW1wb3J0YW50TWF0Y2hlcyhjYXNjYWRlTGV2ZWwpOwogICAgIH0KKworICAgIHNvcnREZWZlcnJl
ZFByb3BlcnRpZXMoKTsKIH0KIAogdm9pZCBQcm9wZXJ0eUNhc2NhZGU6OnNldFByb3BlcnR5SW50
ZXJuYWwoUHJvcGVydHkmIHByb3BlcnR5LCBDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgY3Nz
VmFsdWUsIGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJiBtYXRjaGVkUHJvcGVydGllcywgQ2FzY2Fk
ZUxldmVsIGNhc2NhZGVMZXZlbCkKQEAgLTEyOCw2ICsxMzIsNyBAQCB2b2lkIFByb3BlcnR5Q2Fz
Y2FkZTo6c2V0KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlJiBjc3NWYWx1ZSwgY29uc3QgTWF0
Y2hlZFBybwogICAgIH0KIAogICAgIEFTU0VSVCghc2hvdWxkQXBwbHlQcm9wZXJ0eUluUGFyc2VP
cmRlcihpZCkpOworICAgIEFTU0VSVCghaGFzRGVmZXJyZWRQcm9wZXJ0eShpZCkpOwogCiAgICAg
YXV0byYgcHJvcGVydHkgPSBtX3Byb3BlcnRpZXNbaWRdOwogICAgIEFTU0VSVChpZCA8IG1fcHJv
cGVydHlJc1ByZXNlbnQuc2l6ZSgpKTsKQEAgLTE1OSwxMiArMTY0LDEzIEBAIHZvaWQgUHJvcGVy
dHlDYXNjYWRlOjpzZXREZWZlcnJlZChDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgY3NzVmFs
dWUsIGNvbnN0IE1hCiB7CiAgICAgQVNTRVJUKCFDU1NQcm9wZXJ0eTo6aXNEaXJlY3Rpb25Bd2Fy
ZVByb3BlcnR5KGlkKSk7CiAgICAgQVNTRVJUKHNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNlT3Jk
ZXIoaWQpKTsKKyAgICBBU1NFUlQoIWhhc1Byb3BlcnR5KGlkKSk7CiAKLSAgICBQcm9wZXJ0eSBw
cm9wZXJ0eTsKLSAgICBtZW1zZXQocHJvcGVydHkuY3NzVmFsdWUsIDAsIHNpemVvZihwcm9wZXJ0
eS5jc3NWYWx1ZSkpOworICAgIGF1dG8mIHByb3BlcnR5ID0gbV9wcm9wZXJ0aWVzW2lkXTsKKyAg
ICBpZiAoIW1fZGVmZXJyZWRQcm9wZXJ0aWVzSW5kaWNlc1tpZF0pCisgICAgICAgIG1lbXNldChw
cm9wZXJ0eS5jc3NWYWx1ZSwgMCwgc2l6ZW9mKHByb3BlcnR5LmNzc1ZhbHVlKSk7CisgICAgbV9k
ZWZlcnJlZFByb3BlcnRpZXNJbmRpY2VzW2lkXSA9ICsrbV9sYXN0SW5kZXhGb3JEZWZlcnJlZDsK
ICAgICBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5LCBpZCwgY3NzVmFsdWUsIG1hdGNoZWRQ
cm9wZXJ0aWVzLCBjYXNjYWRlTGV2ZWwpOwotICAgIG1fZGVmZXJyZWRQcm9wZXJ0aWVzSW5kaWNl
cy5zZXQoaWQsIG1fZGVmZXJyZWRQcm9wZXJ0aWVzLnNpemUoKSk7Ci0gICAgbV9kZWZlcnJlZFBy
b3BlcnRpZXMuYXBwZW5kKHByb3BlcnR5KTsKIH0KIAogCkBAIC0zMzksNSArMzQ1LDIyIEBAIFBy
b3BlcnR5Q2FzY2FkZTo6RGlyZWN0aW9uIFByb3BlcnR5Q2FzY2FkZTo6ZGlyZWN0aW9uKCkgY29u
c3QKICAgICByZXR1cm4gbV9kaXJlY3Rpb247CiB9CiAKK3ZvaWQgUHJvcGVydHlDYXNjYWRlOjpz
b3J0RGVmZXJyZWRQcm9wZXJ0aWVzKCkKK3sKKyAgICBhdXRvIGJlZ2luID0gc3RkOjpiZWdpbiht
X3NvcnRlZERlZmVycmVkUHJvcGVydGllcyk7CisgICAgYXV0byBpdCA9IGJlZ2luOworICAgIGZv
ciAoaW50IGlkID0gZmlyc3RDU1NQcm9wZXJ0eTsgaWQgPD0gbGFzdENTU1Byb3BlcnR5OyArK2lk
KSB7CisgICAgICAgIGlmIChtX2RlZmVycmVkUHJvcGVydGllc0luZGljZXNbaWRdKSB7CisgICAg
ICAgICAgICAqaXQgPSAoQ1NTUHJvcGVydHlJRClpZDsKKyAgICAgICAgICAgIHN0ZDo6YWR2YW5j
ZShpdCwgMSk7CisgICAgICAgICAgICBBU1NFUlQoaXQgIT0gc3RkOjplbmQobV9zb3J0ZWREZWZl
cnJlZFByb3BlcnRpZXMpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAqaXQgPSBDU1NQcm9wZXJ0
eUludmFsaWQ7CisgICAgc3RkOjpzb3J0KGJlZ2luLCBpdCwgWyZdKGF1dG8gaWQxLCBhdXRvIGlk
MikgeworICAgICAgICByZXR1cm4gbV9kZWZlcnJlZFByb3BlcnRpZXNJbmRpY2VzW2lkMV0gPCBt
X2RlZmVycmVkUHJvcGVydGllc0luZGljZXNbaWQyXTsKKyAgICB9KTsKK30KKwogfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuaAppbmRleCAzZWU2ZGYzM2Q1Mzk1ZGU1ZjVi
OTRhNDNmNjEwMzQ3ODAyMDdlZWZjLi43YzBhYjU2ODk2ZGU0ODY0MjkzNWY5NDMwYWM5MTYwZTVi
NWFmNjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuaApAQCAtNjgsNyAr
NjgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcm
KSBjb25zdDsKICAgICBQcm9wZXJ0eSBjdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmKSBjb25z
dDsKIAotICAgIGNvbnN0IFZlY3RvcjxQcm9wZXJ0eSwgOD4mIGRlZmVycmVkUHJvcGVydGllcygp
IGNvbnN0IHsgcmV0dXJuIG1fZGVmZXJyZWRQcm9wZXJ0aWVzOyB9CisgICAgY29uc3QgQ1NTUHJv
cGVydHlJRCogZGVmZXJyZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zb3J0ZWREZWZl
cnJlZFByb3BlcnRpZXM7IH0KICAgICBjb25zdCBIYXNoTWFwPEF0b21TdHJpbmcsIFByb3BlcnR5
PiYgY3VzdG9tUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tUHJvcGVydGllczsg
fQogCiAgICAgRGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0OwpAQCAtODQsNiArODQsNyBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHNldFByb3BlcnR5SW50ZXJuYWwoUHJvcGVydHkmLCBD
U1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSYsIGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJiwgQ2FzY2Fk
ZUxldmVsKTsKIAogICAgIERpcmVjdGlvbiByZXNvbHZlRGlyZWN0aW9uQW5kV3JpdGluZ01vZGUo
RGlyZWN0aW9uIGluaGVyaXRlZERpcmVjdGlvbikgY29uc3Q7CisgICAgdm9pZCBzb3J0RGVmZXJy
ZWRQcm9wZXJ0aWVzKCk7CiAKICAgICBjb25zdCBNYXRjaFJlc3VsdCYgbV9tYXRjaFJlc3VsdDsK
ICAgICBjb25zdCBJbmNsdWRlZFByb3BlcnRpZXMgbV9pbmNsdWRlZFByb3BlcnRpZXM7CkBAIC05
NSw4ICs5Niw5IEBAIHByaXZhdGU6CiAgICAgUHJvcGVydHkgbV9wcm9wZXJ0aWVzW251bUNTU1By
b3BlcnRpZXMgKyAyXTsKICAgICBzdGQ6OmJpdHNldDxudW1DU1NQcm9wZXJ0aWVzICsgMj4gbV9w
cm9wZXJ0eUlzUHJlc2VudDsKIAotICAgIFZlY3RvcjxQcm9wZXJ0eSwgOD4gbV9kZWZlcnJlZFBy
b3BlcnRpZXM7Ci0gICAgSGFzaE1hcDxDU1NQcm9wZXJ0eUlELCB1bnNpZ25lZD4gbV9kZWZlcnJl
ZFByb3BlcnRpZXNJbmRpY2VzOworICAgIHVuc2lnbmVkIG1fZGVmZXJyZWRQcm9wZXJ0aWVzSW5k
aWNlc1tudW1DU1NQcm9wZXJ0aWVzICsgMl07CisgICAgdW5zaWduZWQgbV9sYXN0SW5kZXhGb3JE
ZWZlcnJlZCA9IDA7CisgICAgQ1NTUHJvcGVydHlJRCBtX3NvcnRlZERlZmVycmVkUHJvcGVydGll
c1tudW1DU1NQcm9wZXJ0aWVzXTsKIAogICAgIEhhc2hNYXA8QXRvbVN0cmluZywgUHJvcGVydHk+
IG1fY3VzdG9tUHJvcGVydGllczsKIH07CkBAIC0xMDksMjAgKzExMSwxOSBAQCBpbmxpbmUgYm9v
bCBQcm9wZXJ0eUNhc2NhZGU6Omhhc1Byb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpIGNvbnN0CiAK
IGlubGluZSBjb25zdCBQcm9wZXJ0eUNhc2NhZGU6OlByb3BlcnR5JiBQcm9wZXJ0eUNhc2NhZGU6
OnByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpIGNvbnN0CiB7CisgICAgQVNTRVJUKGhhc1Byb3Bl
cnR5KGlkKSk7CiAgICAgcmV0dXJuIG1fcHJvcGVydGllc1tpZF07CiB9CiAKIGlubGluZSBib29s
IFByb3BlcnR5Q2FzY2FkZTo6aGFzRGVmZXJyZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKSBj
b25zdAogewotICAgIHJldHVybiBtX2RlZmVycmVkUHJvcGVydGllc0luZGljZXMuY29udGFpbnMo
aWQpOworICAgIHJldHVybiBtX2RlZmVycmVkUHJvcGVydGllc0luZGljZXNbaWRdOwogfQogCiBp
bmxpbmUgY29uc3QgUHJvcGVydHlDYXNjYWRlOjpQcm9wZXJ0eSYgUHJvcGVydHlDYXNjYWRlOjpk
ZWZlcnJlZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhh
c0RlZmVycmVkUHJvcGVydHkoaWQpKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fZGVmZXJyZWRQ
cm9wZXJ0aWVzSW5kaWNlcy5nZXQoaWQpOwotICAgIEFTU0VSVChpbmRleCA8IG1fZGVmZXJyZWRQ
cm9wZXJ0aWVzLnNpemUoKSk7Ci0gICAgcmV0dXJuIG1fZGVmZXJyZWRQcm9wZXJ0aWVzW2luZGV4
XTsKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVzW2lkXTsKIH0KIAogaW5saW5lIGJvb2wgUHJvcGVy
dHlDYXNjYWRlOjpoYXNDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcAppbmRleCA1NDNkYzAyZDEzNjFhOGE1YTE5
Y2ZmYzIwMGZlMTFhN2I4Y2RlOGJkLi5lNmZlZDcxY2QwYWVlMjk5YWQ0YWJkODQ4M2ZlM2Y4ZGJh
NjJlMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAKQEAgLTEyMyw4ICsx
MjMsMTEgQEAgdm9pZCBCdWlsZGVyOjphcHBseUxvd1ByaW9yaXR5UHJvcGVydGllcygpCiAKIHZv
aWQgQnVpbGRlcjo6YXBwbHlEZWZlcnJlZFByb3BlcnRpZXMoKQogewotICAgIGZvciAoYXV0byYg
cHJvcGVydHkgOiBtX2Nhc2NhZGUuZGVmZXJyZWRQcm9wZXJ0aWVzKCkpCi0gICAgICAgIGFwcGx5
Q2FzY2FkZVByb3BlcnR5KHByb3BlcnR5KTsKKyAgICBhdXRvIGl0ID0gbV9jYXNjYWRlLmRlZmVy
cmVkUHJvcGVydGllcygpOworICAgIHdoaWxlICgqaXQgIT0gQ1NTUHJvcGVydHlJbnZhbGlkKSB7
CisgICAgICAgIGFwcGx5Q2FzY2FkZVByb3BlcnR5KG1fY2FzY2FkZS5kZWZlcnJlZFByb3BlcnR5
KCppdCkpOworICAgICAgICBzdGQ6OmFkdmFuY2UoaXQsIDEpOworICAgIH0KIH0KIAogdm9pZCBC
dWlsZGVyOjphcHBseVByb3BlcnRpZXMoaW50IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJvcGVy
dHkpCg==
</data>
<flag name="commit-queue"
          id="483611"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455581</attachid>
            <date>2022-03-23 16:26:16 -0700</date>
            <delta_ts>2022-04-19 09:02:09 -0700</delta_ts>
            <desc>Patch with array approach</desc>
            <filename>bug-238260-20220324002615.patch</filename>
            <type>text/plain</type>
            <size>8609</size>
            <attacher name="Oriol Brufau">obrufau</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI5OTFmYTkzYjc0MWRh
MDc2ZTk4MTFmYTYxMDExZGQ2MzdiNWYyMC4uMGE0MmM5YjAxYWViZTBjNTQzYTFmNWE0YTQyMTg3
NTk4YTc5NmQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIyLTAzLTIzICBPcmlv
bCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1jYXNjYWRlXSBP
cHRpbWl6ZSBjb2RlIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyNjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDU1MgZGVjbGFyYXRpb25zIGZvciBkZWZlcnJl
ZCBwcm9wZXJ0aWVzIHdlcmUganVzdCBhcHBlbmRlZCB0byBhIHZlY3RvciwKKyAgICAgICAgd2hp
Y2ggY291bGQgZ3JvdyBodWdlLiBUaGVuIFN0eWxlQnVpbGRlciB3b3VsZCBhcHBseSB0aGVtIG9u
ZSBieSBvbmUsCisgICAgICAgIGRvaW5nIHVzZWxlc3Mgd29yayBpZiBhIHByb3BlcnR5IGFwcGVh
cmVkIG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgIFRoZSBwb2ludCBvZiBkZWZlcnJlZCBwcm9w
ZXJ0aWVzIGlzIHRoYXQgdGhleSBzaG91bGQgYmUgYXBwbGllZCBpbgorICAgICAgICByZWxhdGl2
ZSBvcmRlci4gQnV0IGlmIGEgcHJvcGVydHkgYXBwZWFycyBtdWx0aXBsZSB0aW1lcywgd2Ugc2hv
dWxkIG9ubHkKKyAgICAgICAgY2FyZSBhYm91dCB0aGUgbGFzdCBvY2N1cnJlbmNlLgorCisgICAg
ICAgIFNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgdmVjdG9yIGFuZCBpbnN0ZWFkIHN0b3JlcyB0
aGUgUHJvcGVydHkgaW4gdGhlCisgICAgICAgIHNhbWUgYXJyYXkgYXMgbm9uLWRlZmVycmVkIHBy
b3BlcnRpZXMuIFRvIHRyYWNrIHRoZSBpbmRpY2VzLCBpdCB1c2VzIGFuCisgICAgICAgIGFycmF5
IGluc3RlYWQgb2YgYSBIYXNoTWFwLgorCisgICAgICAgIFdoZW4gYXBwbHlpbmcgdGhlIHByb3Bl
cnRpZXMsIHRoZSBwcm9wZXJ0eSBJRHMgYXJlIHBsYWNlZCBpbiBhIHZlY3RvciwKKyAgICAgICAg
d2hpY2ggaXMgdGhlbiBzb3J0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIGluZGlj
ZXMuIFRoaXMgY2FuCisgICAgICAgIGhhdmUgc29tZSBvdmVyaGVhZCwgYnV0IHRoZSBzaXplIG9m
IHRoZSB2ZWN0b3Igd2lsbCBiZSBsaW1pdGVkIGJ5IHRoZQorICAgICAgICBudW1iZXIgb2YgcHJv
cGVydGllcyBmb3Igd2hpY2ggc2hvdWxkQXBwbHlQcm9wZXJ0eUluUGFyc2VPcmRlciByZXR1cm5z
CisgICAgICAgIHRydWUuIEN1cnJlbnRseSB0aGVyZSBhcmUgb25seSAxNSBvZiB0aGVzZSAoaW4g
YnVnIDIzNjE5OSBJIHBsYW4gdG8gYWRkCisgICAgICAgIDk2IG1vcmUsIGJ1dCAxMTEgaXMgc3Rp
bGwgbm90IHRoYXQgYmlnKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhlcmUgc2hv
dWxkIGJlIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIHN0eWxlL1Byb3BlcnR5
Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpQ
cm9wZXJ0eUNhc2NhZGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2Fk
ZTo6YnVpbGRDYXNjYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2Nh
ZGU6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpzZXRE
ZWZlcnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpzb3J0
RGVmZXJyZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBzdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OmRlZmVycmVkUHJvcGVy
dGllcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpw
cm9wZXJ0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRl
OjpoYXNEZWZlcnJlZFByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQ
cm9wZXJ0eUNhc2NhZGU6OmRlZmVycmVkUHJvcGVydHkgY29uc3QpOgorICAgICAgICAqIHN0eWxl
L1N0eWxlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlcjo6YXBw
bHlEZWZlcnJlZFByb3BlcnRpZXMpOgorCiAyMDIyLTAzLTIzICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBWaWRlb0ZyYW1lIGRvZXMgbm90IG5lZWQgdG8gaW5o
ZXJpdCBmcm9tIE1lZGlhU2FtcGxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Q
cm9wZXJ0eUNhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRl
LmNwcAppbmRleCA5MGZlZDYxN2FmNzU2ZTc3MzhiYzliNTM1ZGRkYTEyOGVlMGMwMTJmLi5mN2Mz
M2I3YzliZmM0NzI4NGI1ZTQ1NjFlZjllNjE0YjFlNWNkM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAKQEAgLTY3LDYgKzY3LDcgQEAgUHJvcGVydHlDYXNjYWRl
OjpQcm9wZXJ0eUNhc2NhZGUoY29uc3QgTWF0Y2hSZXN1bHQmIG1hdGNoUmVzdWx0LCBDYXNjYWRl
TGV2ZWwgbWEKICAgICAsIG1faW5jbHVkZWRQcm9wZXJ0aWVzKGluY2x1ZGVkUHJvcGVydGllcykK
ICAgICAsIG1fbWF4aW11bUNhc2NhZGVMZXZlbChtYXhpbXVtQ2FzY2FkZUxldmVsKQogICAgICwg
bV9kaXJlY3Rpb24oZGlyZWN0aW9uKQorICAgICwgbV9kZWZlcnJlZFByb3BlcnRpZXNJbmRpY2Vz
IHsgfQogewogICAgIGJ1aWxkQ2FzY2FkZSgpOwogfQpAQCAtNzgsNiArNzksNyBAQCBQcm9wZXJ0
eUNhc2NhZGU6OlByb3BlcnR5Q2FzY2FkZShjb25zdCBQcm9wZXJ0eUNhc2NhZGUmIHBhcmVudCwg
Q2FzY2FkZUxldmVsIG1heAogICAgICwgbV9tYXhpbXVtQ2FzY2FkZUxheWVyUHJpb3JpdHlGb3JS
b2xsYmFjayhtYXhpbXVtQ2FzY2FkZUxheWVyUHJpb3JpdHlGb3JSb2xsYmFjaykKICAgICAsIG1f
ZGlyZWN0aW9uKHBhcmVudC5kaXJlY3Rpb24oKSkKICAgICAsIG1fZGlyZWN0aW9uSXNVbnJlc29s
dmVkKGZhbHNlKQorICAgICwgbV9kZWZlcnJlZFByb3BlcnRpZXNJbmRpY2VzIHsgfQogewogICAg
IGJ1aWxkQ2FzY2FkZSgpOwogfQpAQCAtMTAxLDYgKzEwMyw4IEBAIHZvaWQgUHJvcGVydHlDYXNj
YWRlOjpidWlsZENhc2NhZGUoKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGFkZElt
cG9ydGFudE1hdGNoZXMoY2FzY2FkZUxldmVsKTsKICAgICB9CisKKyAgICBzb3J0RGVmZXJyZWRQ
cm9wZXJ0aWVzKCk7CiB9CiAKIHZvaWQgUHJvcGVydHlDYXNjYWRlOjpzZXRQcm9wZXJ0eUludGVy
bmFsKFByb3BlcnR5JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUmIGNzc1Zh
bHVlLCBjb25zdCBNYXRjaGVkUHJvcGVydGllcyYgbWF0Y2hlZFByb3BlcnRpZXMsIENhc2NhZGVM
ZXZlbCBjYXNjYWRlTGV2ZWwpCkBAIC0xMjgsNiArMTMyLDcgQEAgdm9pZCBQcm9wZXJ0eUNhc2Nh
ZGU6OnNldChDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgY3NzVmFsdWUsIGNvbnN0IE1hdGNo
ZWRQcm8KICAgICB9CiAKICAgICBBU1NFUlQoIXNob3VsZEFwcGx5UHJvcGVydHlJblBhcnNlT3Jk
ZXIoaWQpKTsKKyAgICBBU1NFUlQoIWhhc0RlZmVycmVkUHJvcGVydHkoaWQpKTsKIAogICAgIGF1
dG8mIHByb3BlcnR5ID0gbV9wcm9wZXJ0aWVzW2lkXTsKICAgICBBU1NFUlQoaWQgPCBtX3Byb3Bl
cnR5SXNQcmVzZW50LnNpemUoKSk7CkBAIC0xNTksMTIgKzE2NCwxMyBAQCB2b2lkIFByb3BlcnR5
Q2FzY2FkZTo6c2V0RGVmZXJyZWQoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUmIGNzc1ZhbHVl
LCBjb25zdCBNYQogewogICAgIEFTU0VSVCghQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQ
cm9wZXJ0eShpZCkpOwogICAgIEFTU0VSVChzaG91bGRBcHBseVByb3BlcnR5SW5QYXJzZU9yZGVy
KGlkKSk7CisgICAgQVNTRVJUKCFoYXNQcm9wZXJ0eShpZCkpOwogCi0gICAgUHJvcGVydHkgcHJv
cGVydHk7Ci0gICAgbWVtc2V0KHByb3BlcnR5LmNzc1ZhbHVlLCAwLCBzaXplb2YocHJvcGVydHku
Y3NzVmFsdWUpKTsKKyAgICBhdXRvJiBwcm9wZXJ0eSA9IG1fcHJvcGVydGllc1tpZF07CisgICAg
aWYgKCFtX2RlZmVycmVkUHJvcGVydGllc0luZGljZXNbaWRdKQorICAgICAgICBtZW1zZXQocHJv
cGVydHkuY3NzVmFsdWUsIDAsIHNpemVvZihwcm9wZXJ0eS5jc3NWYWx1ZSkpOworICAgIG1fZGVm
ZXJyZWRQcm9wZXJ0aWVzSW5kaWNlc1tpZF0gPSArK21fbGFzdEluZGV4Rm9yRGVmZXJyZWQ7CiAg
ICAgc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBtYXRjaGVkUHJv
cGVydGllcywgY2FzY2FkZUxldmVsKTsKLSAgICBtX2RlZmVycmVkUHJvcGVydGllc0luZGljZXMu
c2V0KGlkLCBtX2RlZmVycmVkUHJvcGVydGllcy5zaXplKCkpOwotICAgIG1fZGVmZXJyZWRQcm9w
ZXJ0aWVzLmFwcGVuZChwcm9wZXJ0eSk7CiB9CiAKIApAQCAtMzM5LDUgKzM0NSwyMiBAQCBQcm9w
ZXJ0eUNhc2NhZGU6OkRpcmVjdGlvbiBQcm9wZXJ0eUNhc2NhZGU6OmRpcmVjdGlvbigpIGNvbnN0
CiAgICAgcmV0dXJuIG1fZGlyZWN0aW9uOwogfQogCit2b2lkIFByb3BlcnR5Q2FzY2FkZTo6c29y
dERlZmVycmVkUHJvcGVydGllcygpCit7CisgICAgYXV0byBiZWdpbiA9IHN0ZDo6YmVnaW4obV9z
b3J0ZWREZWZlcnJlZFByb3BlcnRpZXMpOworICAgIGF1dG8gaXQgPSBiZWdpbjsKKyAgICBmb3Ig
KGludCBpZCA9IGZpcnN0Q1NTUHJvcGVydHk7IGlkIDw9IGxhc3RDU1NQcm9wZXJ0eTsgKytpZCkg
eworICAgICAgICBpZiAobV9kZWZlcnJlZFByb3BlcnRpZXNJbmRpY2VzW2lkXSkgeworICAgICAg
ICAgICAgKml0ID0gKENTU1Byb3BlcnR5SUQpaWQ7CisgICAgICAgICAgICBzdGQ6OmFkdmFuY2Uo
aXQsIDEpOworICAgICAgICAgICAgQVNTRVJUKGl0ICE9IHN0ZDo6ZW5kKG1fc29ydGVkRGVmZXJy
ZWRQcm9wZXJ0aWVzKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgKml0ID0gQ1NTUHJvcGVydHlJ
bnZhbGlkOworICAgIHN0ZDo6c29ydChiZWdpbiwgaXQsIFsmXShhdXRvIGlkMSwgYXV0byBpZDIp
IHsKKyAgICAgICAgcmV0dXJuIG1fZGVmZXJyZWRQcm9wZXJ0aWVzSW5kaWNlc1tpZDFdIDwgbV9k
ZWZlcnJlZFByb3BlcnRpZXNJbmRpY2VzW2lkMl07CisgICAgfSk7Cit9CisKIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5oIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmgKaW5kZXggM2VlNmRmMzNkNTM5NWRlNWY1Yjk0
YTQzZjYxMDM0NzgwMjA3ZWVmYy4uN2MwYWI1Njg5NmRlNDg2NDI5MzVmOTQzMGFjOTE2MGU1YjVh
ZjYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmgKQEAgLTY4LDcgKzY4
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJikg
Y29uc3Q7CiAgICAgUHJvcGVydHkgY3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJikgY29uc3Q7
CiAKLSAgICBjb25zdCBWZWN0b3I8UHJvcGVydHksIDg+JiBkZWZlcnJlZFByb3BlcnRpZXMoKSBj
b25zdCB7IHJldHVybiBtX2RlZmVycmVkUHJvcGVydGllczsgfQorICAgIGNvbnN0IENTU1Byb3Bl
cnR5SUQqIGRlZmVycmVkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc29ydGVkRGVmZXJy
ZWRQcm9wZXJ0aWVzOyB9CiAgICAgY29uc3QgSGFzaE1hcDxBdG9tU3RyaW5nLCBQcm9wZXJ0eT4m
IGN1c3RvbVByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbVByb3BlcnRpZXM7IH0K
IAogICAgIERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdDsKQEAgLTg0LDYgKzg0LDcgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgdm9pZCBzZXRQcm9wZXJ0eUludGVybmFsKFByb3BlcnR5JiwgQ1NT
UHJvcGVydHlJRCwgQ1NTVmFsdWUmLCBjb25zdCBNYXRjaGVkUHJvcGVydGllcyYsIENhc2NhZGVM
ZXZlbCk7CiAKICAgICBEaXJlY3Rpb24gcmVzb2x2ZURpcmVjdGlvbkFuZFdyaXRpbmdNb2RlKERp
cmVjdGlvbiBpbmhlcml0ZWREaXJlY3Rpb24pIGNvbnN0OworICAgIHZvaWQgc29ydERlZmVycmVk
UHJvcGVydGllcygpOwogCiAgICAgY29uc3QgTWF0Y2hSZXN1bHQmIG1fbWF0Y2hSZXN1bHQ7CiAg
ICAgY29uc3QgSW5jbHVkZWRQcm9wZXJ0aWVzIG1faW5jbHVkZWRQcm9wZXJ0aWVzOwpAQCAtOTUs
OCArOTYsOSBAQCBwcml2YXRlOgogICAgIFByb3BlcnR5IG1fcHJvcGVydGllc1tudW1DU1NQcm9w
ZXJ0aWVzICsgMl07CiAgICAgc3RkOjpiaXRzZXQ8bnVtQ1NTUHJvcGVydGllcyArIDI+IG1fcHJv
cGVydHlJc1ByZXNlbnQ7CiAKLSAgICBWZWN0b3I8UHJvcGVydHksIDg+IG1fZGVmZXJyZWRQcm9w
ZXJ0aWVzOwotICAgIEhhc2hNYXA8Q1NTUHJvcGVydHlJRCwgdW5zaWduZWQ+IG1fZGVmZXJyZWRQ
cm9wZXJ0aWVzSW5kaWNlczsKKyAgICB1bnNpZ25lZCBtX2RlZmVycmVkUHJvcGVydGllc0luZGlj
ZXNbbnVtQ1NTUHJvcGVydGllcyArIDJdOworICAgIHVuc2lnbmVkIG1fbGFzdEluZGV4Rm9yRGVm
ZXJyZWQgPSAwOworICAgIENTU1Byb3BlcnR5SUQgbV9zb3J0ZWREZWZlcnJlZFByb3BlcnRpZXNb
bnVtQ1NTUHJvcGVydGllc107CiAKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIFByb3BlcnR5PiBt
X2N1c3RvbVByb3BlcnRpZXM7CiB9OwpAQCAtMTA5LDIwICsxMTEsMTkgQEAgaW5saW5lIGJvb2wg
UHJvcGVydHlDYXNjYWRlOjpoYXNQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKSBjb25zdAogCiBp
bmxpbmUgY29uc3QgUHJvcGVydHlDYXNjYWRlOjpQcm9wZXJ0eSYgUHJvcGVydHlDYXNjYWRlOjpw
cm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKSBjb25zdAogeworICAgIEFTU0VSVChoYXNQcm9wZXJ0
eShpZCkpOwogICAgIHJldHVybiBtX3Byb3BlcnRpZXNbaWRdOwogfQogCiBpbmxpbmUgYm9vbCBQ
cm9wZXJ0eUNhc2NhZGU6Omhhc0RlZmVycmVkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9kZWZlcnJlZFByb3BlcnRpZXNJbmRpY2VzLmNvbnRhaW5zKGlk
KTsKKyAgICByZXR1cm4gbV9kZWZlcnJlZFByb3BlcnRpZXNJbmRpY2VzW2lkXTsKIH0KIAogaW5s
aW5lIGNvbnN0IFByb3BlcnR5Q2FzY2FkZTo6UHJvcGVydHkmIFByb3BlcnR5Q2FzY2FkZTo6ZGVm
ZXJyZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKSBjb25zdAogewogICAgIEFTU0VSVChoYXNE
ZWZlcnJlZFByb3BlcnR5KGlkKSk7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBtX2RlZmVycmVkUHJv
cGVydGllc0luZGljZXMuZ2V0KGlkKTsKLSAgICBBU1NFUlQoaW5kZXggPCBtX2RlZmVycmVkUHJv
cGVydGllcy5zaXplKCkpOwotICAgIHJldHVybiBtX2RlZmVycmVkUHJvcGVydGllc1tpbmRleF07
CisgICAgcmV0dXJuIG1fcHJvcGVydGllc1tpZF07CiB9CiAKIGlubGluZSBib29sIFByb3BlcnR5
Q2FzY2FkZTo6aGFzQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAKaW5kZXggNTQzZGMwMmQxMzYxYThhNWExOWNm
ZmMyMDBmZTExYTdiOGNkZThiZC4uZTZmZWQ3MWNkMGFlZTI5OWFkNGFiZDg0ODNmZTNmOGRiYTYy
ZTA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3BwCkBAIC0xMjMsOCArMTIz
LDExIEBAIHZvaWQgQnVpbGRlcjo6YXBwbHlMb3dQcmlvcml0eVByb3BlcnRpZXMoKQogCiB2b2lk
IEJ1aWxkZXI6OmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKCkKIHsKLSAgICBmb3IgKGF1dG8mIHBy
b3BlcnR5IDogbV9jYXNjYWRlLmRlZmVycmVkUHJvcGVydGllcygpKQotICAgICAgICBhcHBseUNh
c2NhZGVQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgYXV0byBpdCA9IG1fY2FzY2FkZS5kZWZlcnJl
ZFByb3BlcnRpZXMoKTsKKyAgICB3aGlsZSAoKml0ICE9IENTU1Byb3BlcnR5SW52YWxpZCkgewor
ICAgICAgICBhcHBseUNhc2NhZGVQcm9wZXJ0eShtX2Nhc2NhZGUuZGVmZXJyZWRQcm9wZXJ0eSgq
aXQpKTsKKyAgICAgICAgc3RkOjphZHZhbmNlKGl0LCAxKTsKKyAgICB9CiB9CiAKIHZvaWQgQnVp
bGRlcjo6YXBwbHlQcm9wZXJ0aWVzKGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457902</attachid>
            <date>2022-04-19 09:02:14 -0700</date>
            <delta_ts>2022-04-19 18:04:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238260-20220419180212.patch</filename>
            <type>text/plain</type>
            <size>8711</size>
            <attacher name="Oriol Brufau">obrufau</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3ZmRiMTEwODlkNjhh
MTJhNjJjMjQ2YTUxYzQ0NzA5Yzk0YjNjYS4uOTU1MjVhYTBhODEyYzc3ZDliZTNhM2ZjM2NhOWFl
NWVhOThmNDgyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIyLTA0LTE5ICBPcmlv
bCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1jYXNjYWRlXSBP
cHRpbWl6ZSBjb2RlIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyNjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDU1MgZGVjbGFyYXRpb25zIGZvciBkZWZlcnJl
ZCBwcm9wZXJ0aWVzIHdlcmUganVzdCBhcHBlbmRlZCB0byBhIHZlY3RvciwKKyAgICAgICAgd2hp
Y2ggY291bGQgZ3JvdyBodWdlLiBUaGVuIFN0eWxlQnVpbGRlciB3b3VsZCBhcHBseSB0aGVtIG9u
ZSBieSBvbmUsCisgICAgICAgIGRvaW5nIHVzZWxlc3Mgd29yayBpZiBhIHByb3BlcnR5IGFwcGVh
cmVkIG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgIFRoZSBwb2ludCBvZiBkZWZlcnJlZCBwcm9w
ZXJ0aWVzIGlzIHRoYXQgdGhleSBzaG91bGQgYmUgYXBwbGllZCBpbgorICAgICAgICByZWxhdGl2
ZSBvcmRlci4gQnV0IGlmIGEgcHJvcGVydHkgYXBwZWFycyBtdWx0aXBsZSB0aW1lcywgd2Ugc2hv
dWxkIG9ubHkKKyAgICAgICAgY2FyZSBhYm91dCB0aGUgbGFzdCBvY2N1cnJlbmNlLgorCisgICAg
ICAgIFNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgdmVjdG9yIGFuZCBpbnN0ZWFkIHN0b3JlcyB0
aGUgUHJvcGVydHkgaW4gdGhlCisgICAgICAgIHNhbWUgYXJyYXkgYXMgbm9uLWRlZmVycmVkIHBy
b3BlcnRpZXMuIFRvIHRyYWNrIHRoZSBpbmRpY2VzLCBpdCB1c2VzIGFuCisgICAgICAgIGFycmF5
IGluc3RlYWQgb2YgYSBIYXNoTWFwLgorCisgICAgICAgIFdoZW4gYXBwbHlpbmcgdGhlIHByb3Bl
cnRpZXMsIHRoZSBwcm9wZXJ0eSBJRHMgYXJlIHBsYWNlZCBpbiBhIHZlY3RvciwKKyAgICAgICAg
d2hpY2ggaXMgdGhlbiBzb3J0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIGluZGlj
ZXMuIFRoaXMgY2FuCisgICAgICAgIGhhdmUgc29tZSBvdmVyaGVhZCwgYnV0IHRoZSBzaXplIG9m
IHRoZSB2ZWN0b3Igd2lsbCBiZSBsaW1pdGVkIGJ5IHRoZQorICAgICAgICBudW1iZXIgb2YgZGVm
ZXJyZWQgcHJvcGVydGllcy4gQ3VycmVudGx5IHRoZXJlIGFyZSBvbmx5IDggb2YgdGhlc2UgKGlu
CisgICAgICAgIGJ1ZyAyMzYxOTkgSSBwbGFuIHRvIGFkZCA5NiBtb3JlLCBidXQgMTA0IGlzIHN0
aWxsIG5vdCB0aGF0IGJpZykuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNo
b3VsZCBiZSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBzdHlsZS9Qcm9wZXJ0
eUNhc2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2FkZTo6
UHJvcGVydHlDYXNjYWRlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2Nh
ZGU6OmJ1aWxkQ2FzY2FkZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNj
YWRlOjpzZXREZWZlcnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNj
YWRlOjpzb3J0RGVmZXJyZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBzdHlsZS9Qcm9wZXJ0eUNh
c2NhZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OmRlZmVy
cmVkUHJvcGVydGllcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlD
YXNjYWRlOjpoYXNEZWZlcnJlZFByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OmRlZmVycmVkUHJvcGVydHkgY29uc3QpOgorICAgICAgICAq
IHN0eWxlL1N0eWxlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRl
cjo6YXBwbHlEZWZlcnJlZFByb3BlcnRpZXMpOgorCiAyMDIyLTA0LTE2ICBQaGlsaXBwZSBOb3Jt
YW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXVtXZWJSVENd
IE1pbm9yIGNsZWFudXAgaW4gSW5jb21pbmdTb3VyY2VHU3RyZWFtZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwCmluZGV4IDU4OTg5OGY1ODQ0MWFhZjNlODg3MDAzY2Vh
YTZkMzRiZTg0OTBkYjguLjM5Y2E0YTI1NDFkY2FhNzhkNmM1MTdkZjQ2MjU2MzQ5ZjJiODE4ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcApAQCAtNDMsNiArNDMs
NyBAQCBQcm9wZXJ0eUNhc2NhZGU6OlByb3BlcnR5Q2FzY2FkZShjb25zdCBNYXRjaFJlc3VsdCYg
bWF0Y2hSZXN1bHQsIENhc2NhZGVMZXZlbCBtYQogICAgICwgbV9pbmNsdWRlZFByb3BlcnRpZXMo
aW5jbHVkZWRQcm9wZXJ0aWVzKQogICAgICwgbV9tYXhpbXVtQ2FzY2FkZUxldmVsKG1heGltdW1D
YXNjYWRlTGV2ZWwpCiAgICAgLCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCisgICAgLCBtX2RlZmVy
cmVkUHJvcGVydGllc0luZGljZXMgeyB9CiB7CiAgICAgYnVpbGRDYXNjYWRlKCk7CiB9CkBAIC01
NCw2ICs1NSw3IEBAIFByb3BlcnR5Q2FzY2FkZTo6UHJvcGVydHlDYXNjYWRlKGNvbnN0IFByb3Bl
cnR5Q2FzY2FkZSYgcGFyZW50LCBDYXNjYWRlTGV2ZWwgbWF4CiAgICAgLCBtX21heGltdW1DYXNj
YWRlTGF5ZXJQcmlvcml0eUZvclJvbGxiYWNrKG1heGltdW1DYXNjYWRlTGF5ZXJQcmlvcml0eUZv
clJvbGxiYWNrKQogICAgICwgbV9kaXJlY3Rpb24ocGFyZW50LmRpcmVjdGlvbigpKQogICAgICwg
bV9kaXJlY3Rpb25Jc1VucmVzb2x2ZWQoZmFsc2UpCisgICAgLCBtX2RlZmVycmVkUHJvcGVydGll
c0luZGljZXMgeyB9CiB7CiAgICAgYnVpbGRDYXNjYWRlKCk7CiB9CkBAIC03Nyw2ICs3OSw4IEBA
IHZvaWQgUHJvcGVydHlDYXNjYWRlOjpidWlsZENhc2NhZGUoKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIGFkZEltcG9ydGFudE1hdGNoZXMoY2FzY2FkZUxldmVsKTsKICAgICB9CisK
KyAgICBzb3J0RGVmZXJyZWRQcm9wZXJ0aWVzKCk7CiB9CiAKIHZvaWQgUHJvcGVydHlDYXNjYWRl
OjpzZXRQcm9wZXJ0eUludGVybmFsKFByb3BlcnR5JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHlJRCBp
ZCwgQ1NTVmFsdWUmIGNzc1ZhbHVlLCBjb25zdCBNYXRjaGVkUHJvcGVydGllcyYgbWF0Y2hlZFBy
b3BlcnRpZXMsIENhc2NhZGVMZXZlbCBjYXNjYWRlTGV2ZWwpCkBAIC0xMzYsMTEgKzE0MCwxNSBA
QCB2b2lkIFByb3BlcnR5Q2FzY2FkZTo6c2V0RGVmZXJyZWQoQ1NTUHJvcGVydHlJRCBpZCwgQ1NT
VmFsdWUmIGNzc1ZhbHVlLCBjb25zdCBNYQogICAgIEFTU0VSVCghQ1NTUHJvcGVydHk6OmlzRGly
ZWN0aW9uQXdhcmVQcm9wZXJ0eShpZCkpOwogICAgIEFTU0VSVChpZCA+PSBmaXJzdERlZmVycmVk
UHJvcGVydHkpOwogCi0gICAgUHJvcGVydHkgcHJvcGVydHk7Ci0gICAgbWVtc2V0KHByb3BlcnR5
LmNzc1ZhbHVlLCAwLCBzaXplb2YocHJvcGVydHkuY3NzVmFsdWUpKTsKKyAgICBhdXRvJiBwcm9w
ZXJ0eSA9IG1fcHJvcGVydGllc1tpZF07CisgICAgYXV0byYgaW5kZXggPSBtX2RlZmVycmVkUHJv
cGVydGllc0luZGljZXNbaWQgLSBmaXJzdERlZmVycmVkUHJvcGVydHldOworICAgIGlmICghaW5k
ZXgpIHsKKyAgICAgICAgbWVtc2V0KHByb3BlcnR5LmNzc1ZhbHVlLCAwLCBzaXplb2YocHJvcGVy
dHkuY3NzVmFsdWUpKTsKKyAgICAgICAgbV9sb3dlc3RTZWVuRGVmZXJyZWRQcm9wZXJ0eSA9IHN0
ZDo6bWluKG1fbG93ZXN0U2VlbkRlZmVycmVkUHJvcGVydHksIGlkKTsKKyAgICAgICAgbV9oaWdo
ZXN0U2VlbkRlZmVycmVkUHJvcGVydHkgPSBzdGQ6Om1heChtX2hpZ2hlc3RTZWVuRGVmZXJyZWRQ
cm9wZXJ0eSwgaWQpOworICAgIH0KKyAgICBpbmRleCA9ICsrbV9sYXN0SW5kZXhGb3JEZWZlcnJl
ZDsKICAgICBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5LCBpZCwgY3NzVmFsdWUsIG1hdGNo
ZWRQcm9wZXJ0aWVzLCBjYXNjYWRlTGV2ZWwpOwotICAgIG1fZGVmZXJyZWRQcm9wZXJ0aWVzSW5k
aWNlcy5zZXQoaWQsIG1fZGVmZXJyZWRQcm9wZXJ0aWVzLnNpemUoKSk7Ci0gICAgbV9kZWZlcnJl
ZFByb3BlcnRpZXMuYXBwZW5kKHByb3BlcnR5KTsKIH0KIAogCkBAIC0zMTUsNSArMzIzLDIyIEBA
IFByb3BlcnR5Q2FzY2FkZTo6RGlyZWN0aW9uIFByb3BlcnR5Q2FzY2FkZTo6ZGlyZWN0aW9uKCkg
Y29uc3QKICAgICByZXR1cm4gbV9kaXJlY3Rpb247CiB9CiAKK3ZvaWQgUHJvcGVydHlDYXNjYWRl
Ojpzb3J0RGVmZXJyZWRQcm9wZXJ0aWVzKCkKK3sKKyAgICBhdXRvIGJlZ2luID0gc3RkOjpiZWdp
bihtX3NvcnRlZERlZmVycmVkUHJvcGVydGllcyk7CisgICAgYXV0byBpdCA9IGJlZ2luOworICAg
IGZvciAodWludDE2X3QgaWQgPSBtX2xvd2VzdFNlZW5EZWZlcnJlZFByb3BlcnR5OyBpZCA8PSBt
X2hpZ2hlc3RTZWVuRGVmZXJyZWRQcm9wZXJ0eTsgKytpZCkgeworICAgICAgICBpZiAobV9kZWZl
cnJlZFByb3BlcnRpZXNJbmRpY2VzW2lkIC0gZmlyc3REZWZlcnJlZFByb3BlcnR5XSkgeworICAg
ICAgICAgICAgKml0ID0gKENTU1Byb3BlcnR5SUQpaWQ7CisgICAgICAgICAgICBzdGQ6OmFkdmFu
Y2UoaXQsIDEpOworICAgICAgICAgICAgQVNTRVJUKGl0ICE9IHN0ZDo6ZW5kKG1fc29ydGVkRGVm
ZXJyZWRQcm9wZXJ0aWVzKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgKml0ID0gQ1NTUHJvcGVy
dHlJbnZhbGlkOworICAgIHN0ZDo6c29ydChiZWdpbiwgaXQsIFsmXShhdXRvIGlkMSwgYXV0byBp
ZDIpIHsKKyAgICAgICAgcmV0dXJuIG1fZGVmZXJyZWRQcm9wZXJ0aWVzSW5kaWNlc1tpZDEgLSBm
aXJzdERlZmVycmVkUHJvcGVydHldIDwgbV9kZWZlcnJlZFByb3BlcnRpZXNJbmRpY2VzW2lkMiAt
IGZpcnN0RGVmZXJyZWRQcm9wZXJ0eV07CisgICAgfSk7Cit9CisKIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvUHJvcGVydHlDYXNjYWRlLmgKaW5kZXggNzMwODVhNGRkOGY5NmY2ZGU0ZmViNjAyNjc4
MWQzMjEwMmQ2ZGE1Ny4uNzIwYjIwNDdkNTZkZmIzOTdiYmNkMTA0NWI0NTViYTdmMTg2YWZmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmgKQEAgLTY4LDcgKzY4LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJikgY29uc3Q7
CiAgICAgUHJvcGVydHkgY3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKLSAg
ICBjb25zdCBWZWN0b3I8UHJvcGVydHksIDg+JiBkZWZlcnJlZFByb3BlcnRpZXMoKSBjb25zdCB7
IHJldHVybiBtX2RlZmVycmVkUHJvcGVydGllczsgfQorICAgIGNvbnN0IENTU1Byb3BlcnR5SUQq
IGRlZmVycmVkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc29ydGVkRGVmZXJyZWRQcm9w
ZXJ0aWVzOyB9CiAgICAgY29uc3QgSGFzaE1hcDxBdG9tU3RyaW5nLCBQcm9wZXJ0eT4mIGN1c3Rv
bVByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbVByb3BlcnRpZXM7IH0KIAogICAg
IERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdDsKQEAgLTg0LDYgKzg0LDcgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgdm9pZCBzZXRQcm9wZXJ0eUludGVybmFsKFByb3BlcnR5JiwgQ1NTUHJvcGVy
dHlJRCwgQ1NTVmFsdWUmLCBjb25zdCBNYXRjaGVkUHJvcGVydGllcyYsIENhc2NhZGVMZXZlbCk7
CiAKICAgICBEaXJlY3Rpb24gcmVzb2x2ZURpcmVjdGlvbkFuZFdyaXRpbmdNb2RlKERpcmVjdGlv
biBpbmhlcml0ZWREaXJlY3Rpb24pIGNvbnN0OworICAgIHZvaWQgc29ydERlZmVycmVkUHJvcGVy
dGllcygpOwogCiAgICAgY29uc3QgTWF0Y2hSZXN1bHQmIG1fbWF0Y2hSZXN1bHQ7CiAgICAgY29u
c3QgSW5jbHVkZWRQcm9wZXJ0aWVzIG1faW5jbHVkZWRQcm9wZXJ0aWVzOwpAQCAtOTIsMTEgKzkz
LDE0IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBEaXJlY3Rpb24gbV9kaXJlY3Rpb247CiAgICAg
bXV0YWJsZSBib29sIG1fZGlyZWN0aW9uSXNVbnJlc29sdmVkIHsgdHJ1ZSB9OwogCi0gICAgUHJv
cGVydHkgbV9wcm9wZXJ0aWVzW2ZpcnN0RGVmZXJyZWRQcm9wZXJ0eV07CisgICAgUHJvcGVydHkg
bV9wcm9wZXJ0aWVzW2xhc3REZWZlcnJlZFByb3BlcnR5ICsgMV07CiAgICAgc3RkOjpiaXRzZXQ8
Zmlyc3REZWZlcnJlZFByb3BlcnR5PiBtX3Byb3BlcnR5SXNQcmVzZW50OwogCi0gICAgVmVjdG9y
PFByb3BlcnR5LCA4PiBtX2RlZmVycmVkUHJvcGVydGllczsKLSAgICBIYXNoTWFwPENTU1Byb3Bl
cnR5SUQsIHVuc2lnbmVkPiBtX2RlZmVycmVkUHJvcGVydGllc0luZGljZXM7CisgICAgdW5zaWdu
ZWQgbV9kZWZlcnJlZFByb3BlcnRpZXNJbmRpY2VzW2xhc3REZWZlcnJlZFByb3BlcnR5IC0gZmly
c3REZWZlcnJlZFByb3BlcnR5ICsgMV07CisgICAgdW5zaWduZWQgbV9sYXN0SW5kZXhGb3JEZWZl
cnJlZCA9IDA7CisgICAgQ1NTUHJvcGVydHlJRCBtX3NvcnRlZERlZmVycmVkUHJvcGVydGllc1ts
YXN0RGVmZXJyZWRQcm9wZXJ0eSAtIGZpcnN0RGVmZXJyZWRQcm9wZXJ0eSArIDJdOworICAgIENT
U1Byb3BlcnR5SUQgbV9sb3dlc3RTZWVuRGVmZXJyZWRQcm9wZXJ0eSA9IGxhc3REZWZlcnJlZFBy
b3BlcnR5OworICAgIENTU1Byb3BlcnR5SUQgbV9oaWdoZXN0U2VlbkRlZmVycmVkUHJvcGVydHkg
PSBmaXJzdERlZmVycmVkUHJvcGVydHk7CiAKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIFByb3Bl
cnR5PiBtX2N1c3RvbVByb3BlcnRpZXM7CiB9OwpAQCAtMTE2LDE1ICsxMjAsMTMgQEAgaW5saW5l
IGNvbnN0IFByb3BlcnR5Q2FzY2FkZTo6UHJvcGVydHkmIFByb3BlcnR5Q2FzY2FkZTo6bm9ybWFs
UHJvcGVydHkoQ1NTUHJvcGUKIGlubGluZSBib29sIFByb3BlcnR5Q2FzY2FkZTo6aGFzRGVmZXJy
ZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKSBjb25zdAogewogICAgIEFTU0VSVChpZCA+PSBm
aXJzdERlZmVycmVkUHJvcGVydHkpOwotICAgIHJldHVybiBtX2RlZmVycmVkUHJvcGVydGllc0lu
ZGljZXMuY29udGFpbnMoaWQpOworICAgIHJldHVybiBtX2RlZmVycmVkUHJvcGVydGllc0luZGlj
ZXNbaWQgLSBmaXJzdERlZmVycmVkUHJvcGVydHldOwogfQogCiBpbmxpbmUgY29uc3QgUHJvcGVy
dHlDYXNjYWRlOjpQcm9wZXJ0eSYgUHJvcGVydHlDYXNjYWRlOjpkZWZlcnJlZFByb3BlcnR5KENT
U1Byb3BlcnR5SUQgaWQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc0RlZmVycmVkUHJvcGVydHko
aWQpKTsKLSAgICB1bnNpZ25lZCBpbmRleCA9IG1fZGVmZXJyZWRQcm9wZXJ0aWVzSW5kaWNlcy5n
ZXQoaWQpOwotICAgIEFTU0VSVChpbmRleCA8IG1fZGVmZXJyZWRQcm9wZXJ0aWVzLnNpemUoKSk7
Ci0gICAgcmV0dXJuIG1fZGVmZXJyZWRQcm9wZXJ0aWVzW2luZGV4XTsKKyAgICByZXR1cm4gbV9w
cm9wZXJ0aWVzW2lkXTsKIH0KIAogaW5saW5lIGJvb2wgUHJvcGVydHlDYXNjYWRlOjpoYXNDdXN0
b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVCdWlsZGVyLmNwcAppbmRleCA4NzNhZWNlMjlmNGQ4YjY1YTZmYzAxN2M0ZTQ0MDIyMjYyMGQ5
ZWVhLi40MWQ4NDUyMjkyNGMzZTIxNDU0MzNiYWI4MWIyMTBhOTQyZjQ5ZDEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAKQEAgLTEyMyw4ICsxMjMsMTEgQEAgdm9pZCBCdWls
ZGVyOjphcHBseU5vbkhpZ2hQcmlvcml0eVByb3BlcnRpZXMoKQogCiB2b2lkIEJ1aWxkZXI6OmFw
cGx5RGVmZXJyZWRQcm9wZXJ0aWVzKCkKIHsKLSAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogbV9j
YXNjYWRlLmRlZmVycmVkUHJvcGVydGllcygpKQotICAgICAgICBhcHBseUNhc2NhZGVQcm9wZXJ0
eShwcm9wZXJ0eSk7CisgICAgYXV0byBpdCA9IG1fY2FzY2FkZS5kZWZlcnJlZFByb3BlcnRpZXMo
KTsKKyAgICB3aGlsZSAoKml0ICE9IENTU1Byb3BlcnR5SW52YWxpZCkgeworICAgICAgICBhcHBs
eUNhc2NhZGVQcm9wZXJ0eShtX2Nhc2NhZGUuZGVmZXJyZWRQcm9wZXJ0eSgqaXQpKTsKKyAgICAg
ICAgc3RkOjphZHZhbmNlKGl0LCAxKTsKKyAgICB9CiB9CiAKIHZvaWQgQnVpbGRlcjo6YXBwbHlQ
cm9wZXJ0aWVzKGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457947</attachid>
            <date>2022-04-19 18:04:09 -0700</date>
            <delta_ts>2022-04-20 04:19:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238260-20220420030407.patch</filename>
            <type>text/plain</type>
            <size>11716</size>
            <attacher name="Oriol Brufau">obrufau</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3ZmRiMTEwODlkNjhh
MTJhNjJjMjQ2YTUxYzQ0NzA5Yzk0YjNjYS4uMmI1Y2JjNzMzMzE1MTgyYjNlOGJiMWM4MjEyNTFk
Yjg1ZmU3OTIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIyLTA0LTE5ICBPcmlv
bCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1jYXNjYWRlXSBP
cHRpbWl6ZSBjb2RlIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyNjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICBDU1MgZGVjbGFyYXRpb25zIGZvciBkZWZlcnJlZCBw
cm9wZXJ0aWVzIHdlcmUganVzdCBhcHBlbmRlZCB0byBhIHZlY3RvciwKKyAgICAgICAgd2hpY2gg
Y291bGQgZ3JvdyBodWdlLiBUaGVuIFN0eWxlQnVpbGRlciB3b3VsZCBhcHBseSB0aGVtIG9uZSBi
eSBvbmUsCisgICAgICAgIGRvaW5nIHVzZWxlc3Mgd29yayBpZiBhIHByb3BlcnR5IGFwcGVhcmVk
IG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgIFRoZSBwb2ludCBvZiBkZWZlcnJlZCBwcm9wZXJ0
aWVzIGlzIHRoYXQgdGhleSBzaG91bGQgYmUgYXBwbGllZCBpbgorICAgICAgICByZWxhdGl2ZSBv
cmRlci4gQnV0IGlmIGEgcHJvcGVydHkgYXBwZWFycyBtdWx0aXBsZSB0aW1lcywgd2Ugc2hvdWxk
IG9ubHkKKyAgICAgICAgY2FyZSBhYm91dCB0aGUgbGFzdCBvY2N1cnJlbmNlLgorCisgICAgICAg
IFNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgdmVjdG9yIGFuZCBpbnN0ZWFkIHN0b3JlcyB0aGUg
UHJvcGVydHkgaW4gdGhlCisgICAgICAgIHNhbWUgYXJyYXkgYXMgbm9uLWRlZmVycmVkIHByb3Bl
cnRpZXMuIFRvIHRyYWNrIHRoZSBpbmRpY2VzLCBpdCB1c2VzIGFuCisgICAgICAgIGFycmF5IGlu
c3RlYWQgb2YgYSBIYXNoTWFwLgorCisgICAgICAgIFdoZW4gYXBwbHlpbmcgdGhlIHByb3BlcnRp
ZXMsIHRoZSBwcm9wZXJ0eSBJRHMgYXJlIHBsYWNlZCBpbiBhIHZlY3RvciwKKyAgICAgICAgd2hp
Y2ggaXMgdGhlbiBzb3J0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIGluZGljZXMu
IFRoaXMgY2FuCisgICAgICAgIGhhdmUgc29tZSBvdmVyaGVhZCwgYnV0IHRoZSBzaXplIG9mIHRo
ZSB2ZWN0b3Igd2lsbCBiZSBsaW1pdGVkIGJ5IHRoZQorICAgICAgICBudW1iZXIgb2YgZGVmZXJy
ZWQgcHJvcGVydGllcy4gQ3VycmVudGx5IHRoZXJlIGFyZSBvbmx5IDggb2YgdGhlc2UgKGluCisg
ICAgICAgIGJ1ZyAyMzYxOTkgSSBwbGFuIHRvIGFkZCA5NiBtb3JlLCBidXQgMTA0IGlzIHN0aWxs
IG5vdCB0aGF0IGJpZykuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNob3Vs
ZCBiZSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBzdHlsZS9Qcm9wZXJ0eUNh
c2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2FkZTo6YnVp
bGRDYXNjYWRlKToKKyAgICAgICAgQ2FsbCBzb3J0RGVmZXJyZWRQcm9wZXJ0eUlEcygpLgorCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y2xlYXJDU1NWYWx1ZSk6CisgICAgICAgIE1vdmUgYSBs
b3ctbGV2ZWwgaWRpb20gaW50byBpdHMgb3duIGZ1bmN0aW9uLgorCisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpzZXQpOgorICAgICAgICBVc2UgdGhlIG5ldyBjbGVh
ckNTU1ZhbHVlKCkuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6
OnNldERlZmVycmVkKToKKyAgICAgICAgVXNlIHRoZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGZvciBk
ZWZlcnJlZCBwcm9wZXJ0aWVzLgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlD
YXNjYWRlOjpzb3J0RGVmZXJyZWRQcm9wZXJ0eUlEcyk6CisgICAgICAgIE5ldyBwcml2YXRlIG1l
dGhvZCB0byBzb3J0IHRoZSBkZWZlcnJlZCBwcm9wZXJ0eSBJRHMgYWNjb3JkaW5nIHRvIHRoZWly
CisgICAgICAgIGluZGV4LgorCisgICAgICAgICogc3R5bGUvUHJvcGVydHlDYXNjYWRlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpkZWZlcnJlZFByb3BlcnR5
SW5kZXggY29uc3QpOgorICAgICAgICBOZXcgcHJpdmF0ZSBtZXRob2QgdG8gZ2V0IHRoZSBpbmRl
eCBvZiB0aGUgZGVmZXJyZWQgcHJvcGVydHkuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQ
cm9wZXJ0eUNhc2NhZGU6OnNldERlZmVycmVkUHJvcGVydHlJbmRleCk6CisgICAgICAgIE5ldyBw
cml2YXRlIG1ldGhvZCB0byBzZXQgdGhlIGluZGV4IG9mIGEgZGVmZXJyZWQgcHJvcGVydHkuCisK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6Omhhc0RlZmVycmVkUHJv
cGVydHkgY29uc3QpOgorICAgICAgICBVc2UgdGhlIG5ldyBkYXRhIHN0cnVjdHVyZXMgZm9yIGRl
ZmVycmVkIHByb3BlcnRpZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNh
c2NhZGU6OmRlZmVycmVkUHJvcGVydHkgY29uc3QpOgorICAgICAgICBVc2UgdGhlIG5ldyBkYXRh
IHN0cnVjdHVyZXMgZm9yIGRlZmVycmVkIHByb3BlcnRpZXMuCisKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OmRlZmVycmVkUHJvcGVydHlJRHMgY29uc3QpOgorICAg
ICAgICBOZXcgbWV0aG9kIHRvIGdldCB0aGUgZGVmZXJyZWQgcHJvcGVydHkgSURzIHNvcnRlZCBi
eSB0aGVpciBpbmRleC4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2Fk
ZTo6ZGVmZXJyZWRQcm9wZXJ0aWVzIGNvbnN0KTogRGVsZXRlZC4KKworICAgICAgICAqIHN0eWxl
L1N0eWxlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlcjo6YXBw
bHlEZWZlcnJlZFByb3BlcnRpZXMpOgorICAgICAgICBVc2UgdGhlIG5ldyBkYXRhIHN0cnVjdHVy
ZXMgZm9yIGRlZmVycmVkIHByb3BlcnRpZXMuCisKIDIwMjItMDQtMTYgIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdW1dlYlJUQ10g
TWlub3IgY2xlYW51cCBpbiBJbmNvbWluZ1NvdXJjZUdTdHJlYW1lcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAKaW5kZXggNTg5ODk4ZjU4NDQxYWFmM2U4ODcwMDNjZWFh
NmQzNGJlODQ5MGRiOC4uMjhiMzY0NWIxMjcyNTA2YmQ1Y2U0YjY0YjIyNGU4MWEwNWEwNWQ2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwCkBAIC03Nyw2ICs3Nyw4
IEBAIHZvaWQgUHJvcGVydHlDYXNjYWRlOjpidWlsZENhc2NhZGUoKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIGFkZEltcG9ydGFudE1hdGNoZXMoY2FzY2FkZUxldmVsKTsKICAgICB9
CisKKyAgICBzb3J0RGVmZXJyZWRQcm9wZXJ0eUlEcygpOwogfQogCiB2b2lkIFByb3BlcnR5Q2Fz
Y2FkZTo6c2V0UHJvcGVydHlJbnRlcm5hbChQcm9wZXJ0eSYgcHJvcGVydHksIENTU1Byb3BlcnR5
SUQgaWQsIENTU1ZhbHVlJiBjc3NWYWx1ZSwgY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmIG1hdGNo
ZWRQcm9wZXJ0aWVzLCBDYXNjYWRlTGV2ZWwgY2FzY2FkZUxldmVsKQpAQCAtOTYsNiArOTgsMTEg
QEAgdm9pZCBQcm9wZXJ0eUNhc2NhZGU6OnNldFByb3BlcnR5SW50ZXJuYWwoUHJvcGVydHkmIHBy
b3BlcnR5LCBDU1NQcm9wZXJ0eUlEIGlkLAogICAgICAgICBwcm9wZXJ0eS5jc3NWYWx1ZVttYXRj
aGVkUHJvcGVydGllcy5saW5rTWF0Y2hUeXBlXSA9ICZjc3NWYWx1ZTsKIH0KIAorc3RhdGljIHZv
aWQgY2xlYXJDU1NWYWx1ZShQcm9wZXJ0eUNhc2NhZGU6OlByb3BlcnR5JiBwcm9wZXJ0eSkKK3sK
KyAgICBtZW1zZXQocHJvcGVydHkuY3NzVmFsdWUsIDAsIHNpemVvZihwcm9wZXJ0eS5jc3NWYWx1
ZSkpOworfQorCiB2b2lkIFByb3BlcnR5Q2FzY2FkZTo6c2V0KENTU1Byb3BlcnR5SUQgaWQsIENT
U1ZhbHVlJiBjc3NWYWx1ZSwgY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmIG1hdGNoZWRQcm9wZXJ0
aWVzLCBDYXNjYWRlTGV2ZWwgY2FzY2FkZUxldmVsKQogewogICAgIGlmIChDU1NQcm9wZXJ0eTo6
aXNEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KGlkKSkgewpAQCAtMTE0LDcgKzEyMSw3IEBAIHZvaWQg
UHJvcGVydHlDYXNjYWRlOjpzZXQoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUmIGNzc1ZhbHVl
LCBjb25zdCBNYXRjaGVkUHJvCiAgICAgICAgIGlmICghaGFzVmFsdWUpIHsKICAgICAgICAgICAg
IFByb3BlcnR5IHByb3BlcnR5OwogICAgICAgICAgICAgcHJvcGVydHkuaWQgPSBpZDsKLSAgICAg
ICAgICAgIG1lbXNldChwcm9wZXJ0eS5jc3NWYWx1ZSwgMCwgc2l6ZW9mKHByb3BlcnR5LmNzc1Zh
bHVlKSk7CisgICAgICAgICAgICBjbGVhckNTU1ZhbHVlKHByb3BlcnR5KTsKICAgICAgICAgICAg
IHNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHksIGlkLCBjc3NWYWx1ZSwgbWF0Y2hlZFByb3Bl
cnRpZXMsIGNhc2NhZGVMZXZlbCk7CiAgICAgICAgICAgICBtX2N1c3RvbVByb3BlcnRpZXMuc2V0
KGN1c3RvbVZhbHVlLm5hbWUoKSwgcHJvcGVydHkpOwogICAgICAgICB9IGVsc2UgewpAQCAtMTI2
LDcgKzEzMyw3IEBAIHZvaWQgUHJvcGVydHlDYXNjYWRlOjpzZXQoQ1NTUHJvcGVydHlJRCBpZCwg
Q1NTVmFsdWUmIGNzc1ZhbHVlLCBjb25zdCBNYXRjaGVkUHJvCiAgICAgfQogCiAgICAgaWYgKCFt
X3Byb3BlcnR5SXNQcmVzZW50W2lkXSkKLSAgICAgICAgbWVtc2V0KHByb3BlcnR5LmNzc1ZhbHVl
LCAwLCBzaXplb2YocHJvcGVydHkuY3NzVmFsdWUpKTsKKyAgICAgICAgY2xlYXJDU1NWYWx1ZShw
cm9wZXJ0eSk7CiAgICAgbV9wcm9wZXJ0eUlzUHJlc2VudC5zZXQoaWQpOwogICAgIHNldFByb3Bl
cnR5SW50ZXJuYWwocHJvcGVydHksIGlkLCBjc3NWYWx1ZSwgbWF0Y2hlZFByb3BlcnRpZXMsIGNh
c2NhZGVMZXZlbCk7CiB9CkBAIC0xMzUsMTIgKzE0MiwxNiBAQCB2b2lkIFByb3BlcnR5Q2FzY2Fk
ZTo6c2V0RGVmZXJyZWQoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUmIGNzc1ZhbHVlLCBjb25z
dCBNYQogewogICAgIEFTU0VSVCghQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQcm9wZXJ0
eShpZCkpOwogICAgIEFTU0VSVChpZCA+PSBmaXJzdERlZmVycmVkUHJvcGVydHkpOworICAgIEFT
U0VSVChpZCA8PSBsYXN0RGVmZXJyZWRQcm9wZXJ0eSk7CiAKLSAgICBQcm9wZXJ0eSBwcm9wZXJ0
eTsKLSAgICBtZW1zZXQocHJvcGVydHkuY3NzVmFsdWUsIDAsIHNpemVvZihwcm9wZXJ0eS5jc3NW
YWx1ZSkpOworICAgIGF1dG8mIHByb3BlcnR5ID0gbV9wcm9wZXJ0aWVzW2lkXTsKKyAgICBpZiAo
IWhhc0RlZmVycmVkUHJvcGVydHkoaWQpKSB7CisgICAgICAgIGNsZWFyQ1NTVmFsdWUocHJvcGVy
dHkpOworICAgICAgICBtX2xvd2VzdFNlZW5EZWZlcnJlZFByb3BlcnR5ID0gc3RkOjptaW4obV9s
b3dlc3RTZWVuRGVmZXJyZWRQcm9wZXJ0eSwgaWQpOworICAgICAgICBtX2hpZ2hlc3RTZWVuRGVm
ZXJyZWRQcm9wZXJ0eSA9IHN0ZDo6bWF4KG1faGlnaGVzdFNlZW5EZWZlcnJlZFByb3BlcnR5LCBp
ZCk7CisgICAgfQorICAgIHNldERlZmVycmVkUHJvcGVydHlJbmRleChpZCwgKyttX2xhc3RJbmRl
eEZvckRlZmVycmVkKTsKICAgICBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5LCBpZCwgY3Nz
VmFsdWUsIG1hdGNoZWRQcm9wZXJ0aWVzLCBjYXNjYWRlTGV2ZWwpOwotICAgIG1fZGVmZXJyZWRQ
cm9wZXJ0aWVzSW5kaWNlcy5zZXQoaWQsIG1fZGVmZXJyZWRQcm9wZXJ0aWVzLnNpemUoKSk7Ci0g
ICAgbV9kZWZlcnJlZFByb3BlcnRpZXMuYXBwZW5kKHByb3BlcnR5KTsKIH0KIAogCkBAIC0zMTUs
NSArMzI2LDIwIEBAIFByb3BlcnR5Q2FzY2FkZTo6RGlyZWN0aW9uIFByb3BlcnR5Q2FzY2FkZTo6
ZGlyZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9kaXJlY3Rpb247CiB9CiAKK3ZvaWQgUHJv
cGVydHlDYXNjYWRlOjpzb3J0RGVmZXJyZWRQcm9wZXJ0eUlEcygpCit7CisgICAgYXV0byBiZWdp
biA9IG1fZGVmZXJyZWRQcm9wZXJ0eUlEcy5iZWdpbigpOworICAgIGF1dG8gaXQgPSBiZWdpbjsK
KyAgICBmb3IgKHVpbnQxNl90IGlkID0gbV9sb3dlc3RTZWVuRGVmZXJyZWRQcm9wZXJ0eTsgaWQg
PD0gbV9oaWdoZXN0U2VlbkRlZmVycmVkUHJvcGVydHk7ICsraWQpIHsKKyAgICAgICAgYXV0byBw
cm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpOworICAgICAgICBpZiAo
aGFzRGVmZXJyZWRQcm9wZXJ0eShwcm9wZXJ0eUlEKSkKKyAgICAgICAgICAgICppdCsrID0gcHJv
cGVydHlJRDsKKyAgICB9CisgICAgbV9udW1TZWVuRGVmZXJyZWRQcm9wZXJ0aWVzID0gaXQgLSBi
ZWdpbjsKKyAgICBzdGQ6OnNvcnQoYmVnaW4sIGl0LCBbJl0oYXV0byBpZDEsIGF1dG8gaWQyKSB7
CisgICAgICAgIHJldHVybiBkZWZlcnJlZFByb3BlcnR5SW5kZXgoaWQxKSA8IGRlZmVycmVkUHJv
cGVydHlJbmRleChpZDIpOworICAgIH0pOworfQorCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1By
b3BlcnR5Q2FzY2FkZS5oCmluZGV4IDczMDg1YTRkZDhmOTZmNmRlNGZlYjYwMjY3ODFkMzIxMDJk
NmRhNTcuLmNmOWZmODIwYmFlN2RhODIyYzI2NmIxODRkYTRmNTI0YWJjNGQzNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGhhc0N1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIFBy
b3BlcnR5IGN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCi0gICAgY29uc3Qg
VmVjdG9yPFByb3BlcnR5LCA4PiYgZGVmZXJyZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4g
bV9kZWZlcnJlZFByb3BlcnRpZXM7IH0KKyAgICBjb25zdCBXVEY6OlNwYW48Y29uc3QgQ1NTUHJv
cGVydHlJRD4gZGVmZXJyZWRQcm9wZXJ0eUlEcygpIGNvbnN0OwogICAgIGNvbnN0IEhhc2hNYXA8
QXRvbVN0cmluZywgUHJvcGVydHk+JiBjdXN0b21Qcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4g
bV9jdXN0b21Qcm9wZXJ0aWVzOyB9CiAKICAgICBEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3Q7
CkBAIC04NSw2ICs4NSwxMCBAQCBwcml2YXRlOgogCiAgICAgRGlyZWN0aW9uIHJlc29sdmVEaXJl
Y3Rpb25BbmRXcml0aW5nTW9kZShEaXJlY3Rpb24gaW5oZXJpdGVkRGlyZWN0aW9uKSBjb25zdDsK
IAorICAgIHVuc2lnbmVkIGRlZmVycmVkUHJvcGVydHlJbmRleChDU1NQcm9wZXJ0eUlEKSBjb25z
dDsKKyAgICB2b2lkIHNldERlZmVycmVkUHJvcGVydHlJbmRleChDU1NQcm9wZXJ0eUlELCB1bnNp
Z25lZCk7CisgICAgdm9pZCBzb3J0RGVmZXJyZWRQcm9wZXJ0eUlEcygpOworCiAgICAgY29uc3Qg
TWF0Y2hSZXN1bHQmIG1fbWF0Y2hSZXN1bHQ7CiAgICAgY29uc3QgSW5jbHVkZWRQcm9wZXJ0aWVz
IG1faW5jbHVkZWRQcm9wZXJ0aWVzOwogICAgIGNvbnN0IENhc2NhZGVMZXZlbCBtX21heGltdW1D
YXNjYWRlTGV2ZWw7CkBAIC05MiwxMSArOTYsMjQgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIERp
cmVjdGlvbiBtX2RpcmVjdGlvbjsKICAgICBtdXRhYmxlIGJvb2wgbV9kaXJlY3Rpb25Jc1VucmVz
b2x2ZWQgeyB0cnVlIH07CiAKLSAgICBQcm9wZXJ0eSBtX3Byb3BlcnRpZXNbZmlyc3REZWZlcnJl
ZFByb3BlcnR5XTsKLSAgICBzdGQ6OmJpdHNldDxmaXJzdERlZmVycmVkUHJvcGVydHk+IG1fcHJv
cGVydHlJc1ByZXNlbnQ7Ci0KLSAgICBWZWN0b3I8UHJvcGVydHksIDg+IG1fZGVmZXJyZWRQcm9w
ZXJ0aWVzOwotICAgIEhhc2hNYXA8Q1NTUHJvcGVydHlJRCwgdW5zaWduZWQ+IG1fZGVmZXJyZWRQ
cm9wZXJ0aWVzSW5kaWNlczsKKyAgICAvLyBUaGUgQ1NTUHJvcGVydHlJRCBlbnVtIGlzIHNvcnRl
ZCBsaWtlIHRoaXM6CisgICAgLy8gMS4gQ1NTUHJvcGVydHlJbnZhbGlkIGFuZCBDU1NQcm9wZXJ0
eUN1c3RvbS4KKyAgICAvLyAyLiBOb3JtYWwgcHJvcGVydGllcyAoaGlnaCBwcmlvcml0eSBvbmVz
IGZvbGxvd2VkIGJ5IGxvdyBwcmlvcml0eSBvbmVzKS4KKyAgICAvLyAzLiBEZWZlcnJlZCBwcm9w
ZXJ0aWVzLgorICAgIC8vCisgICAgLy8gJ21fcHJvcGVydGllcycgaXMgdXNlZCBmb3IgYm90aCBu
b3JtYWwgYW5kIGRlZmVycmVkIHByb3BlcnRpZXMsIHNvIGl0IGhhcyBzaXplICdsYXN0RGVmZXJy
ZWRQcm9wZXJ0eSArIDEnLgorICAgIC8vIEl0IGNvdWxkIGFjdHVhbGx5IHVzZSAnbnVtQ1NTUHJv
cGVydGllcycsIGJ1dCB0aGVuIHdlIHdvdWxkIGhhdmUgdG8gc3VidHJhY3QgJ2ZpcnN0Q1NTUHJv
cGVydHknLCB3aGljaCBtYXkgbm90IGJlIHdvcnRoIGl0LgorICAgIC8vICdtX3Byb3BlcnR5SXNQ
cmVzZW50JyBpcyBub3QgdXNlZCBmb3IgZGVmZXJyZWQgcHJvcGVydGllcywgc28gd2Ugb25seSBu
ZWVkIHRvIGNvdmVyIHVwIHRvIHRoZSBsYXN0IGxvdyBwcmlvcml0eSBvbmUuCisgICAgc3RkOjph
cnJheTxQcm9wZXJ0eSwgbGFzdERlZmVycmVkUHJvcGVydHkgKyAxPiBtX3Byb3BlcnRpZXM7Cisg
ICAgc3RkOjpiaXRzZXQ8bGFzdExvd1ByaW9yaXR5UHJvcGVydHkgKyAxPiBtX3Byb3BlcnR5SXNQ
cmVzZW50OworCisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1EZWZlcnJlZFByb3Bl
cnRpZXMgPSBsYXN0RGVmZXJyZWRQcm9wZXJ0eSAtIGZpcnN0RGVmZXJyZWRQcm9wZXJ0eSArIDE7
CisgICAgc3RkOjphcnJheTx1bnNpZ25lZCwgbnVtRGVmZXJyZWRQcm9wZXJ0aWVzPiBtX2RlZmVy
cmVkUHJvcGVydHlJbmRpY2VzIHsgfTsKKyAgICB1bnNpZ25lZCBtX2xhc3RJbmRleEZvckRlZmVy
cmVkIHsgMCB9OworICAgIHN0ZDo6YXJyYXk8Q1NTUHJvcGVydHlJRCwgbnVtRGVmZXJyZWRQcm9w
ZXJ0aWVzPiBtX2RlZmVycmVkUHJvcGVydHlJRHMgeyB9OworICAgIHVuc2lnbmVkIG1fbnVtU2Vl
bkRlZmVycmVkUHJvcGVydGllcyB7IDAgfTsKKyAgICBDU1NQcm9wZXJ0eUlEIG1fbG93ZXN0U2Vl
bkRlZmVycmVkUHJvcGVydHkgeyBsYXN0RGVmZXJyZWRQcm9wZXJ0eSB9OworICAgIENTU1Byb3Bl
cnR5SUQgbV9oaWdoZXN0U2VlbkRlZmVycmVkUHJvcGVydHkgeyBmaXJzdERlZmVycmVkUHJvcGVy
dHkgfTsKIAogICAgIEhhc2hNYXA8QXRvbVN0cmluZywgUHJvcGVydHk+IG1fY3VzdG9tUHJvcGVy
dGllczsKIH07CkBAIC0xMTMsMTggKzEzMCwzNCBAQCBpbmxpbmUgY29uc3QgUHJvcGVydHlDYXNj
YWRlOjpQcm9wZXJ0eSYgUHJvcGVydHlDYXNjYWRlOjpub3JtYWxQcm9wZXJ0eShDU1NQcm9wZQog
ICAgIHJldHVybiBtX3Byb3BlcnRpZXNbaWRdOwogfQogCi1pbmxpbmUgYm9vbCBQcm9wZXJ0eUNh
c2NhZGU6Omhhc0RlZmVycmVkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCkgY29uc3QKK2lubGlu
ZSB1bnNpZ25lZCBQcm9wZXJ0eUNhc2NhZGU6OmRlZmVycmVkUHJvcGVydHlJbmRleChDU1NQcm9w
ZXJ0eUlEIGlkKSBjb25zdAoreworICAgIEFTU0VSVChpZCA+PSBmaXJzdERlZmVycmVkUHJvcGVy
dHkpOworICAgIEFTU0VSVChpZCA8PSBsYXN0RGVmZXJyZWRQcm9wZXJ0eSk7CisgICAgcmV0dXJu
IG1fZGVmZXJyZWRQcm9wZXJ0eUluZGljZXNbaWQgLSBmaXJzdERlZmVycmVkUHJvcGVydHldOwor
fQorCitpbmxpbmUgdm9pZCBQcm9wZXJ0eUNhc2NhZGU6OnNldERlZmVycmVkUHJvcGVydHlJbmRl
eChDU1NQcm9wZXJ0eUlEIGlkLCB1bnNpZ25lZCBpbmRleCkKIHsKICAgICBBU1NFUlQoaWQgPj0g
Zmlyc3REZWZlcnJlZFByb3BlcnR5KTsKLSAgICByZXR1cm4gbV9kZWZlcnJlZFByb3BlcnRpZXNJ
bmRpY2VzLmNvbnRhaW5zKGlkKTsKKyAgICBBU1NFUlQoaWQgPD0gbGFzdERlZmVycmVkUHJvcGVy
dHkpOworICAgIG1fZGVmZXJyZWRQcm9wZXJ0eUluZGljZXNbaWQgLSBmaXJzdERlZmVycmVkUHJv
cGVydHldID0gaW5kZXg7Cit9CisKK2lubGluZSBib29sIFByb3BlcnR5Q2FzY2FkZTo6aGFzRGVm
ZXJyZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKSBjb25zdAoreworICAgIHJldHVybiBkZWZl
cnJlZFByb3BlcnR5SW5kZXgoaWQpOwogfQogCiBpbmxpbmUgY29uc3QgUHJvcGVydHlDYXNjYWRl
OjpQcm9wZXJ0eSYgUHJvcGVydHlDYXNjYWRlOjpkZWZlcnJlZFByb3BlcnR5KENTU1Byb3BlcnR5
SUQgaWQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc0RlZmVycmVkUHJvcGVydHkoaWQpKTsKLSAg
ICB1bnNpZ25lZCBpbmRleCA9IG1fZGVmZXJyZWRQcm9wZXJ0aWVzSW5kaWNlcy5nZXQoaWQpOwot
ICAgIEFTU0VSVChpbmRleCA8IG1fZGVmZXJyZWRQcm9wZXJ0aWVzLnNpemUoKSk7Ci0gICAgcmV0
dXJuIG1fZGVmZXJyZWRQcm9wZXJ0aWVzW2luZGV4XTsKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVz
W2lkXTsKK30KKworaW5saW5lIGNvbnN0IFdURjo6U3Bhbjxjb25zdCBDU1NQcm9wZXJ0eUlEPiBQ
cm9wZXJ0eUNhc2NhZGU6OmRlZmVycmVkUHJvcGVydHlJRHMoKSBjb25zdAoreworICAgIHJldHVy
biBXVEY6OlNwYW4obV9kZWZlcnJlZFByb3BlcnR5SURzLmJlZ2luKCksIG1fbnVtU2VlbkRlZmVy
cmVkUHJvcGVydGllcyk7CiB9CiAKIGlubGluZSBib29sIFByb3BlcnR5Q2FzY2FkZTo6aGFzQ3Vz
dG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlQnVpbGRlci5jcHAKaW5kZXggODczYWVjZTI5ZjRkOGI2NWE2ZmMwMTdjNGU0NDAyMjI2MjBk
OWVlYS4uMzEwMzNlNjk0OTQ1MWU5ZTkyNTA4MTkxMjYwMjQxZTZhODgzZTJlNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3BwCkBAIC0xMjMsOCArMTIzLDggQEAgdm9pZCBCdWls
ZGVyOjphcHBseU5vbkhpZ2hQcmlvcml0eVByb3BlcnRpZXMoKQogCiB2b2lkIEJ1aWxkZXI6OmFw
cGx5RGVmZXJyZWRQcm9wZXJ0aWVzKCkKIHsKLSAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogbV9j
YXNjYWRlLmRlZmVycmVkUHJvcGVydGllcygpKQotICAgICAgICBhcHBseUNhc2NhZGVQcm9wZXJ0
eShwcm9wZXJ0eSk7CisgICAgZm9yIChhdXRvIGlkIDogbV9jYXNjYWRlLmRlZmVycmVkUHJvcGVy
dHlJRHMoKSkKKyAgICAgICAgYXBwbHlDYXNjYWRlUHJvcGVydHkobV9jYXNjYWRlLmRlZmVycmVk
UHJvcGVydHkoaWQpKTsKIH0KIAogdm9pZCBCdWlsZGVyOjphcHBseVByb3BlcnRpZXMoaW50IGZp
cnN0UHJvcGVydHksIGludCBsYXN0UHJvcGVydHkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457975</attachid>
            <date>2022-04-20 04:19:55 -0700</date>
            <delta_ts>2022-04-20 05:28:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238260-20220420131954.patch</filename>
            <type>text/plain</type>
            <size>11723</size>
            <attacher name="Oriol Brufau">obrufau</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3ZmRiMTEwODlkNjhh
MTJhNjJjMjQ2YTUxYzQ0NzA5Yzk0YjNjYS4uMmI1Y2JjNzMzMzE1MTgyYjNlOGJiMWM4MjEyNTFk
Yjg1ZmU3OTIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIyLTA0LTE5ICBPcmlv
bCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1jYXNjYWRlXSBP
cHRpbWl6ZSBjb2RlIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyNjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICBDU1MgZGVjbGFyYXRpb25zIGZvciBkZWZlcnJlZCBw
cm9wZXJ0aWVzIHdlcmUganVzdCBhcHBlbmRlZCB0byBhIHZlY3RvciwKKyAgICAgICAgd2hpY2gg
Y291bGQgZ3JvdyBodWdlLiBUaGVuIFN0eWxlQnVpbGRlciB3b3VsZCBhcHBseSB0aGVtIG9uZSBi
eSBvbmUsCisgICAgICAgIGRvaW5nIHVzZWxlc3Mgd29yayBpZiBhIHByb3BlcnR5IGFwcGVhcmVk
IG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgIFRoZSBwb2ludCBvZiBkZWZlcnJlZCBwcm9wZXJ0
aWVzIGlzIHRoYXQgdGhleSBzaG91bGQgYmUgYXBwbGllZCBpbgorICAgICAgICByZWxhdGl2ZSBv
cmRlci4gQnV0IGlmIGEgcHJvcGVydHkgYXBwZWFycyBtdWx0aXBsZSB0aW1lcywgd2Ugc2hvdWxk
IG9ubHkKKyAgICAgICAgY2FyZSBhYm91dCB0aGUgbGFzdCBvY2N1cnJlbmNlLgorCisgICAgICAg
IFNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgdmVjdG9yIGFuZCBpbnN0ZWFkIHN0b3JlcyB0aGUg
UHJvcGVydHkgaW4gdGhlCisgICAgICAgIHNhbWUgYXJyYXkgYXMgbm9uLWRlZmVycmVkIHByb3Bl
cnRpZXMuIFRvIHRyYWNrIHRoZSBpbmRpY2VzLCBpdCB1c2VzIGFuCisgICAgICAgIGFycmF5IGlu
c3RlYWQgb2YgYSBIYXNoTWFwLgorCisgICAgICAgIFdoZW4gYXBwbHlpbmcgdGhlIHByb3BlcnRp
ZXMsIHRoZSBwcm9wZXJ0eSBJRHMgYXJlIHBsYWNlZCBpbiBhIHZlY3RvciwKKyAgICAgICAgd2hp
Y2ggaXMgdGhlbiBzb3J0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIGluZGljZXMu
IFRoaXMgY2FuCisgICAgICAgIGhhdmUgc29tZSBvdmVyaGVhZCwgYnV0IHRoZSBzaXplIG9mIHRo
ZSB2ZWN0b3Igd2lsbCBiZSBsaW1pdGVkIGJ5IHRoZQorICAgICAgICBudW1iZXIgb2YgZGVmZXJy
ZWQgcHJvcGVydGllcy4gQ3VycmVudGx5IHRoZXJlIGFyZSBvbmx5IDggb2YgdGhlc2UgKGluCisg
ICAgICAgIGJ1ZyAyMzYxOTkgSSBwbGFuIHRvIGFkZCA5NiBtb3JlLCBidXQgMTA0IGlzIHN0aWxs
IG5vdCB0aGF0IGJpZykuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNob3Vs
ZCBiZSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBzdHlsZS9Qcm9wZXJ0eUNh
c2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2FkZTo6YnVp
bGRDYXNjYWRlKToKKyAgICAgICAgQ2FsbCBzb3J0RGVmZXJyZWRQcm9wZXJ0eUlEcygpLgorCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6Y2xlYXJDU1NWYWx1ZSk6CisgICAgICAgIE1vdmUgYSBs
b3ctbGV2ZWwgaWRpb20gaW50byBpdHMgb3duIGZ1bmN0aW9uLgorCisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpzZXQpOgorICAgICAgICBVc2UgdGhlIG5ldyBjbGVh
ckNTU1ZhbHVlKCkuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6
OnNldERlZmVycmVkKToKKyAgICAgICAgVXNlIHRoZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGZvciBk
ZWZlcnJlZCBwcm9wZXJ0aWVzLgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlD
YXNjYWRlOjpzb3J0RGVmZXJyZWRQcm9wZXJ0eUlEcyk6CisgICAgICAgIE5ldyBwcml2YXRlIG1l
dGhvZCB0byBzb3J0IHRoZSBkZWZlcnJlZCBwcm9wZXJ0eSBJRHMgYWNjb3JkaW5nIHRvIHRoZWly
CisgICAgICAgIGluZGV4LgorCisgICAgICAgICogc3R5bGUvUHJvcGVydHlDYXNjYWRlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpkZWZlcnJlZFByb3BlcnR5
SW5kZXggY29uc3QpOgorICAgICAgICBOZXcgcHJpdmF0ZSBtZXRob2QgdG8gZ2V0IHRoZSBpbmRl
eCBvZiB0aGUgZGVmZXJyZWQgcHJvcGVydHkuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQ
cm9wZXJ0eUNhc2NhZGU6OnNldERlZmVycmVkUHJvcGVydHlJbmRleCk6CisgICAgICAgIE5ldyBw
cml2YXRlIG1ldGhvZCB0byBzZXQgdGhlIGluZGV4IG9mIGEgZGVmZXJyZWQgcHJvcGVydHkuCisK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6Omhhc0RlZmVycmVkUHJv
cGVydHkgY29uc3QpOgorICAgICAgICBVc2UgdGhlIG5ldyBkYXRhIHN0cnVjdHVyZXMgZm9yIGRl
ZmVycmVkIHByb3BlcnRpZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNh
c2NhZGU6OmRlZmVycmVkUHJvcGVydHkgY29uc3QpOgorICAgICAgICBVc2UgdGhlIG5ldyBkYXRh
IHN0cnVjdHVyZXMgZm9yIGRlZmVycmVkIHByb3BlcnRpZXMuCisKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OmRlZmVycmVkUHJvcGVydHlJRHMgY29uc3QpOgorICAg
ICAgICBOZXcgbWV0aG9kIHRvIGdldCB0aGUgZGVmZXJyZWQgcHJvcGVydHkgSURzIHNvcnRlZCBi
eSB0aGVpciBpbmRleC4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2Fk
ZTo6ZGVmZXJyZWRQcm9wZXJ0aWVzIGNvbnN0KTogRGVsZXRlZC4KKworICAgICAgICAqIHN0eWxl
L1N0eWxlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6QnVpbGRlcjo6YXBw
bHlEZWZlcnJlZFByb3BlcnRpZXMpOgorICAgICAgICBVc2UgdGhlIG5ldyBkYXRhIHN0cnVjdHVy
ZXMgZm9yIGRlZmVycmVkIHByb3BlcnRpZXMuCisKIDIwMjItMDQtMTYgIFBoaWxpcHBlIE5vcm1h
bmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdW1dlYlJUQ10g
TWlub3IgY2xlYW51cCBpbiBJbmNvbWluZ1NvdXJjZUdTdHJlYW1lcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAKaW5kZXggNTg5ODk4ZjU4NDQxYWFmM2U4ODcwMDNjZWFh
NmQzNGJlODQ5MGRiOC4uNDMwYzU5ZWU0NzgyYjlhYzI3NjBmYjYwYjFmYTk4NDM4OWU3NzhkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwCkBAIC03Nyw2ICs3Nyw4
IEBAIHZvaWQgUHJvcGVydHlDYXNjYWRlOjpidWlsZENhc2NhZGUoKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIGFkZEltcG9ydGFudE1hdGNoZXMoY2FzY2FkZUxldmVsKTsKICAgICB9
CisKKyAgICBzb3J0RGVmZXJyZWRQcm9wZXJ0eUlEcygpOwogfQogCiB2b2lkIFByb3BlcnR5Q2Fz
Y2FkZTo6c2V0UHJvcGVydHlJbnRlcm5hbChQcm9wZXJ0eSYgcHJvcGVydHksIENTU1Byb3BlcnR5
SUQgaWQsIENTU1ZhbHVlJiBjc3NWYWx1ZSwgY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmIG1hdGNo
ZWRQcm9wZXJ0aWVzLCBDYXNjYWRlTGV2ZWwgY2FzY2FkZUxldmVsKQpAQCAtOTYsNiArOTgsMTEg
QEAgdm9pZCBQcm9wZXJ0eUNhc2NhZGU6OnNldFByb3BlcnR5SW50ZXJuYWwoUHJvcGVydHkmIHBy
b3BlcnR5LCBDU1NQcm9wZXJ0eUlEIGlkLAogICAgICAgICBwcm9wZXJ0eS5jc3NWYWx1ZVttYXRj
aGVkUHJvcGVydGllcy5saW5rTWF0Y2hUeXBlXSA9ICZjc3NWYWx1ZTsKIH0KIAorc3RhdGljIHZv
aWQgY2xlYXJDU1NWYWx1ZShQcm9wZXJ0eUNhc2NhZGU6OlByb3BlcnR5JiBwcm9wZXJ0eSkKK3sK
KyAgICBtZW1zZXQocHJvcGVydHkuY3NzVmFsdWUsIDAsIHNpemVvZihwcm9wZXJ0eS5jc3NWYWx1
ZSkpOworfQorCiB2b2lkIFByb3BlcnR5Q2FzY2FkZTo6c2V0KENTU1Byb3BlcnR5SUQgaWQsIENT
U1ZhbHVlJiBjc3NWYWx1ZSwgY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmIG1hdGNoZWRQcm9wZXJ0
aWVzLCBDYXNjYWRlTGV2ZWwgY2FzY2FkZUxldmVsKQogewogICAgIGlmIChDU1NQcm9wZXJ0eTo6
aXNEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KGlkKSkgewpAQCAtMTE0LDcgKzEyMSw3IEBAIHZvaWQg
UHJvcGVydHlDYXNjYWRlOjpzZXQoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUmIGNzc1ZhbHVl
LCBjb25zdCBNYXRjaGVkUHJvCiAgICAgICAgIGlmICghaGFzVmFsdWUpIHsKICAgICAgICAgICAg
IFByb3BlcnR5IHByb3BlcnR5OwogICAgICAgICAgICAgcHJvcGVydHkuaWQgPSBpZDsKLSAgICAg
ICAgICAgIG1lbXNldChwcm9wZXJ0eS5jc3NWYWx1ZSwgMCwgc2l6ZW9mKHByb3BlcnR5LmNzc1Zh
bHVlKSk7CisgICAgICAgICAgICBjbGVhckNTU1ZhbHVlKHByb3BlcnR5KTsKICAgICAgICAgICAg
IHNldFByb3BlcnR5SW50ZXJuYWwocHJvcGVydHksIGlkLCBjc3NWYWx1ZSwgbWF0Y2hlZFByb3Bl
cnRpZXMsIGNhc2NhZGVMZXZlbCk7CiAgICAgICAgICAgICBtX2N1c3RvbVByb3BlcnRpZXMuc2V0
KGN1c3RvbVZhbHVlLm5hbWUoKSwgcHJvcGVydHkpOwogICAgICAgICB9IGVsc2UgewpAQCAtMTI2
LDcgKzEzMyw3IEBAIHZvaWQgUHJvcGVydHlDYXNjYWRlOjpzZXQoQ1NTUHJvcGVydHlJRCBpZCwg
Q1NTVmFsdWUmIGNzc1ZhbHVlLCBjb25zdCBNYXRjaGVkUHJvCiAgICAgfQogCiAgICAgaWYgKCFt
X3Byb3BlcnR5SXNQcmVzZW50W2lkXSkKLSAgICAgICAgbWVtc2V0KHByb3BlcnR5LmNzc1ZhbHVl
LCAwLCBzaXplb2YocHJvcGVydHkuY3NzVmFsdWUpKTsKKyAgICAgICAgY2xlYXJDU1NWYWx1ZShw
cm9wZXJ0eSk7CiAgICAgbV9wcm9wZXJ0eUlzUHJlc2VudC5zZXQoaWQpOwogICAgIHNldFByb3Bl
cnR5SW50ZXJuYWwocHJvcGVydHksIGlkLCBjc3NWYWx1ZSwgbWF0Y2hlZFByb3BlcnRpZXMsIGNh
c2NhZGVMZXZlbCk7CiB9CkBAIC0xMzUsMTIgKzE0MiwxNiBAQCB2b2lkIFByb3BlcnR5Q2FzY2Fk
ZTo6c2V0RGVmZXJyZWQoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUmIGNzc1ZhbHVlLCBjb25z
dCBNYQogewogICAgIEFTU0VSVCghQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQcm9wZXJ0
eShpZCkpOwogICAgIEFTU0VSVChpZCA+PSBmaXJzdERlZmVycmVkUHJvcGVydHkpOworICAgIEFT
U0VSVChpZCA8PSBsYXN0RGVmZXJyZWRQcm9wZXJ0eSk7CiAKLSAgICBQcm9wZXJ0eSBwcm9wZXJ0
eTsKLSAgICBtZW1zZXQocHJvcGVydHkuY3NzVmFsdWUsIDAsIHNpemVvZihwcm9wZXJ0eS5jc3NW
YWx1ZSkpOworICAgIGF1dG8mIHByb3BlcnR5ID0gbV9wcm9wZXJ0aWVzW2lkXTsKKyAgICBpZiAo
IWhhc0RlZmVycmVkUHJvcGVydHkoaWQpKSB7CisgICAgICAgIGNsZWFyQ1NTVmFsdWUocHJvcGVy
dHkpOworICAgICAgICBtX2xvd2VzdFNlZW5EZWZlcnJlZFByb3BlcnR5ID0gc3RkOjptaW4obV9s
b3dlc3RTZWVuRGVmZXJyZWRQcm9wZXJ0eSwgaWQpOworICAgICAgICBtX2hpZ2hlc3RTZWVuRGVm
ZXJyZWRQcm9wZXJ0eSA9IHN0ZDo6bWF4KG1faGlnaGVzdFNlZW5EZWZlcnJlZFByb3BlcnR5LCBp
ZCk7CisgICAgfQorICAgIHNldERlZmVycmVkUHJvcGVydHlJbmRleChpZCwgKyttX2xhc3RJbmRl
eEZvckRlZmVycmVkKTsKICAgICBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5LCBpZCwgY3Nz
VmFsdWUsIG1hdGNoZWRQcm9wZXJ0aWVzLCBjYXNjYWRlTGV2ZWwpOwotICAgIG1fZGVmZXJyZWRQ
cm9wZXJ0aWVzSW5kaWNlcy5zZXQoaWQsIG1fZGVmZXJyZWRQcm9wZXJ0aWVzLnNpemUoKSk7Ci0g
ICAgbV9kZWZlcnJlZFByb3BlcnRpZXMuYXBwZW5kKHByb3BlcnR5KTsKIH0KIAogCkBAIC0zMTUs
NSArMzI2LDIwIEBAIFByb3BlcnR5Q2FzY2FkZTo6RGlyZWN0aW9uIFByb3BlcnR5Q2FzY2FkZTo6
ZGlyZWN0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9kaXJlY3Rpb247CiB9CiAKK3ZvaWQgUHJv
cGVydHlDYXNjYWRlOjpzb3J0RGVmZXJyZWRQcm9wZXJ0eUlEcygpCit7CisgICAgQ1NTUHJvcGVy
dHlJRCogYmVnaW4gPSBtX2RlZmVycmVkUHJvcGVydHlJRHMuYmVnaW4oKTsKKyAgICBDU1NQcm9w
ZXJ0eUlEKiBlbmQgPSBiZWdpbjsKKyAgICBmb3IgKHVpbnQxNl90IGlkID0gbV9sb3dlc3RTZWVu
RGVmZXJyZWRQcm9wZXJ0eTsgaWQgPD0gbV9oaWdoZXN0U2VlbkRlZmVycmVkUHJvcGVydHk7ICsr
aWQpIHsKKyAgICAgICAgYXV0byBwcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJ
RD4oaWQpOworICAgICAgICBpZiAoaGFzRGVmZXJyZWRQcm9wZXJ0eShwcm9wZXJ0eUlEKSkKKyAg
ICAgICAgICAgICplbmQrKyA9IHByb3BlcnR5SUQ7CisgICAgfQorICAgIG1fc2VlbkRlZmVycmVk
UHJvcGVydHlDb3VudCA9IGVuZCAtIGJlZ2luOworICAgIHN0ZDo6c29ydChiZWdpbiwgZW5kLCBb
Jl0oYXV0byBpZDEsIGF1dG8gaWQyKSB7CisgICAgICAgIHJldHVybiBkZWZlcnJlZFByb3BlcnR5
SW5kZXgoaWQxKSA8IGRlZmVycmVkUHJvcGVydHlJbmRleChpZDIpOworICAgIH0pOworfQorCiB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5oCmluZGV4IDczMDg1YTRkZDhm
OTZmNmRlNGZlYjYwMjY3ODFkMzIxMDJkNmRhNTcuLmNkNDk1YzE3NzA2Njk4NmJkMmU5NjA2ZTY1
ZWVjNmM5MDUzN2MzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5
Q2FzY2FkZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5oCkBA
IC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0N1c3RvbVByb3BlcnR5KGNvbnN0
IFN0cmluZyYpIGNvbnN0OwogICAgIFByb3BlcnR5IGN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OwogCi0gICAgY29uc3QgVmVjdG9yPFByb3BlcnR5LCA4PiYgZGVmZXJyZWRQcm9w
ZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9kZWZlcnJlZFByb3BlcnRpZXM7IH0KKyAgICBjb25z
dCBTcGFuPGNvbnN0IENTU1Byb3BlcnR5SUQ+IGRlZmVycmVkUHJvcGVydHlJRHMoKSBjb25zdDsK
ICAgICBjb25zdCBIYXNoTWFwPEF0b21TdHJpbmcsIFByb3BlcnR5PiYgY3VzdG9tUHJvcGVydGll
cygpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tUHJvcGVydGllczsgfQogCiAgICAgRGlyZWN0aW9u
IGRpcmVjdGlvbigpIGNvbnN0OwpAQCAtODUsNiArODUsMTAgQEAgcHJpdmF0ZToKIAogICAgIERp
cmVjdGlvbiByZXNvbHZlRGlyZWN0aW9uQW5kV3JpdGluZ01vZGUoRGlyZWN0aW9uIGluaGVyaXRl
ZERpcmVjdGlvbikgY29uc3Q7CiAKKyAgICB1bnNpZ25lZCBkZWZlcnJlZFByb3BlcnR5SW5kZXgo
Q1NTUHJvcGVydHlJRCkgY29uc3Q7CisgICAgdm9pZCBzZXREZWZlcnJlZFByb3BlcnR5SW5kZXgo
Q1NTUHJvcGVydHlJRCwgdW5zaWduZWQpOworICAgIHZvaWQgc29ydERlZmVycmVkUHJvcGVydHlJ
RHMoKTsKKwogICAgIGNvbnN0IE1hdGNoUmVzdWx0JiBtX21hdGNoUmVzdWx0OwogICAgIGNvbnN0
IEluY2x1ZGVkUHJvcGVydGllcyBtX2luY2x1ZGVkUHJvcGVydGllczsKICAgICBjb25zdCBDYXNj
YWRlTGV2ZWwgbV9tYXhpbXVtQ2FzY2FkZUxldmVsOwpAQCAtOTIsMTEgKzk2LDI0IEBAIHByaXZh
dGU6CiAgICAgbXV0YWJsZSBEaXJlY3Rpb24gbV9kaXJlY3Rpb247CiAgICAgbXV0YWJsZSBib29s
IG1fZGlyZWN0aW9uSXNVbnJlc29sdmVkIHsgdHJ1ZSB9OwogCi0gICAgUHJvcGVydHkgbV9wcm9w
ZXJ0aWVzW2ZpcnN0RGVmZXJyZWRQcm9wZXJ0eV07Ci0gICAgc3RkOjpiaXRzZXQ8Zmlyc3REZWZl
cnJlZFByb3BlcnR5PiBtX3Byb3BlcnR5SXNQcmVzZW50OwotCi0gICAgVmVjdG9yPFByb3BlcnR5
LCA4PiBtX2RlZmVycmVkUHJvcGVydGllczsKLSAgICBIYXNoTWFwPENTU1Byb3BlcnR5SUQsIHVu
c2lnbmVkPiBtX2RlZmVycmVkUHJvcGVydGllc0luZGljZXM7CisgICAgLy8gVGhlIENTU1Byb3Bl
cnR5SUQgZW51bSBpcyBzb3J0ZWQgbGlrZSB0aGlzOgorICAgIC8vIDEuIENTU1Byb3BlcnR5SW52
YWxpZCBhbmQgQ1NTUHJvcGVydHlDdXN0b20uCisgICAgLy8gMi4gTm9ybWFsIHByb3BlcnRpZXMg
KGhpZ2ggcHJpb3JpdHkgb25lcyBmb2xsb3dlZCBieSBsb3cgcHJpb3JpdHkgb25lcykuCisgICAg
Ly8gMy4gRGVmZXJyZWQgcHJvcGVydGllcy4KKyAgICAvLworICAgIC8vICdtX3Byb3BlcnRpZXMn
IGlzIHVzZWQgZm9yIGJvdGggbm9ybWFsIGFuZCBkZWZlcnJlZCBwcm9wZXJ0aWVzLCBzbyBpdCBo
YXMgc2l6ZSAnbGFzdERlZmVycmVkUHJvcGVydHkgKyAxJy4KKyAgICAvLyBJdCBjb3VsZCBhY3R1
YWxseSB1c2UgJ251bUNTU1Byb3BlcnRpZXMnLCBidXQgdGhlbiB3ZSB3b3VsZCBoYXZlIHRvIHN1
YnRyYWN0ICdmaXJzdENTU1Byb3BlcnR5Jywgd2hpY2ggbWF5IG5vdCBiZSB3b3J0aCBpdC4KKyAg
ICAvLyAnbV9wcm9wZXJ0eUlzUHJlc2VudCcgaXMgbm90IHVzZWQgZm9yIGRlZmVycmVkIHByb3Bl
cnRpZXMsIHNvIHdlIG9ubHkgbmVlZCB0byBjb3ZlciB1cCB0byB0aGUgbGFzdCBsb3cgcHJpb3Jp
dHkgb25lLgorICAgIHN0ZDo6YXJyYXk8UHJvcGVydHksIGxhc3REZWZlcnJlZFByb3BlcnR5ICsg
MT4gbV9wcm9wZXJ0aWVzOworICAgIHN0ZDo6Yml0c2V0PGxhc3RMb3dQcmlvcml0eVByb3BlcnR5
ICsgMT4gbV9wcm9wZXJ0eUlzUHJlc2VudDsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgZGVmZXJyZWRQcm9wZXJ0eUNvdW50ID0gbGFzdERlZmVycmVkUHJvcGVydHkgLSBmaXJzdERl
ZmVycmVkUHJvcGVydHkgKyAxOworICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIGRlZmVycmVkUHJv
cGVydHlDb3VudD4gbV9kZWZlcnJlZFByb3BlcnR5SW5kaWNlcyB7IH07CisgICAgdW5zaWduZWQg
bV9sYXN0SW5kZXhGb3JEZWZlcnJlZCB7IDAgfTsKKyAgICBzdGQ6OmFycmF5PENTU1Byb3BlcnR5
SUQsIGRlZmVycmVkUHJvcGVydHlDb3VudD4gbV9kZWZlcnJlZFByb3BlcnR5SURzIHsgfTsKKyAg
ICB1bnNpZ25lZCBtX3NlZW5EZWZlcnJlZFByb3BlcnR5Q291bnQgeyAwIH07CisgICAgQ1NTUHJv
cGVydHlJRCBtX2xvd2VzdFNlZW5EZWZlcnJlZFByb3BlcnR5IHsgbGFzdERlZmVycmVkUHJvcGVy
dHkgfTsKKyAgICBDU1NQcm9wZXJ0eUlEIG1faGlnaGVzdFNlZW5EZWZlcnJlZFByb3BlcnR5IHsg
Zmlyc3REZWZlcnJlZFByb3BlcnR5IH07CiAKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIFByb3Bl
cnR5PiBtX2N1c3RvbVByb3BlcnRpZXM7CiB9OwpAQCAtMTEzLDE4ICsxMzAsMzQgQEAgaW5saW5l
IGNvbnN0IFByb3BlcnR5Q2FzY2FkZTo6UHJvcGVydHkmIFByb3BlcnR5Q2FzY2FkZTo6bm9ybWFs
UHJvcGVydHkoQ1NTUHJvcGUKICAgICByZXR1cm4gbV9wcm9wZXJ0aWVzW2lkXTsKIH0KIAotaW5s
aW5lIGJvb2wgUHJvcGVydHlDYXNjYWRlOjpoYXNEZWZlcnJlZFByb3BlcnR5KENTU1Byb3BlcnR5
SUQgaWQpIGNvbnN0CitpbmxpbmUgdW5zaWduZWQgUHJvcGVydHlDYXNjYWRlOjpkZWZlcnJlZFBy
b3BlcnR5SW5kZXgoQ1NTUHJvcGVydHlJRCBpZCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaWQgPj0g
Zmlyc3REZWZlcnJlZFByb3BlcnR5KTsKKyAgICBBU1NFUlQoaWQgPD0gbGFzdERlZmVycmVkUHJv
cGVydHkpOworICAgIHJldHVybiBtX2RlZmVycmVkUHJvcGVydHlJbmRpY2VzW2lkIC0gZmlyc3RE
ZWZlcnJlZFByb3BlcnR5XTsKK30KKworaW5saW5lIHZvaWQgUHJvcGVydHlDYXNjYWRlOjpzZXRE
ZWZlcnJlZFByb3BlcnR5SW5kZXgoQ1NTUHJvcGVydHlJRCBpZCwgdW5zaWduZWQgaW5kZXgpCiB7
CiAgICAgQVNTRVJUKGlkID49IGZpcnN0RGVmZXJyZWRQcm9wZXJ0eSk7Ci0gICAgcmV0dXJuIG1f
ZGVmZXJyZWRQcm9wZXJ0aWVzSW5kaWNlcy5jb250YWlucyhpZCk7CisgICAgQVNTRVJUKGlkIDw9
IGxhc3REZWZlcnJlZFByb3BlcnR5KTsKKyAgICBtX2RlZmVycmVkUHJvcGVydHlJbmRpY2VzW2lk
IC0gZmlyc3REZWZlcnJlZFByb3BlcnR5XSA9IGluZGV4OworfQorCitpbmxpbmUgYm9vbCBQcm9w
ZXJ0eUNhc2NhZGU6Omhhc0RlZmVycmVkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZGVmZXJyZWRQcm9wZXJ0eUluZGV4KGlkKTsKIH0KIAogaW5saW5lIGNv
bnN0IFByb3BlcnR5Q2FzY2FkZTo6UHJvcGVydHkmIFByb3BlcnR5Q2FzY2FkZTo6ZGVmZXJyZWRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKSBjb25zdAogewogICAgIEFTU0VSVChoYXNEZWZlcnJl
ZFByb3BlcnR5KGlkKSk7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBtX2RlZmVycmVkUHJvcGVydGll
c0luZGljZXMuZ2V0KGlkKTsKLSAgICBBU1NFUlQoaW5kZXggPCBtX2RlZmVycmVkUHJvcGVydGll
cy5zaXplKCkpOwotICAgIHJldHVybiBtX2RlZmVycmVkUHJvcGVydGllc1tpbmRleF07CisgICAg
cmV0dXJuIG1fcHJvcGVydGllc1tpZF07Cit9CisKK2lubGluZSBjb25zdCBTcGFuPGNvbnN0IENT
U1Byb3BlcnR5SUQ+IFByb3BlcnR5Q2FzY2FkZTo6ZGVmZXJyZWRQcm9wZXJ0eUlEcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHsgbV9kZWZlcnJlZFByb3BlcnR5SURzLmJlZ2luKCksIG1fc2VlbkRl
ZmVycmVkUHJvcGVydHlDb3VudCB9OwogfQogCiBpbmxpbmUgYm9vbCBQcm9wZXJ0eUNhc2NhZGU6
Omhhc0N1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZUJ1aWxkZXIuY3BwCmluZGV4IDg3M2FlY2UyOWY0ZDhiNjVhNmZjMDE3YzRlNDQw
MjIyNjIwZDllZWEuLjMxMDMzZTY5NDk0NTFlOWU5MjUwODE5MTI2MDI0MWU2YTg4M2UyZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcApAQCAtMTIzLDggKzEyMyw4IEBAIHZv
aWQgQnVpbGRlcjo6YXBwbHlOb25IaWdoUHJpb3JpdHlQcm9wZXJ0aWVzKCkKIAogdm9pZCBCdWls
ZGVyOjphcHBseURlZmVycmVkUHJvcGVydGllcygpCiB7Ci0gICAgZm9yIChhdXRvJiBwcm9wZXJ0
eSA6IG1fY2FzY2FkZS5kZWZlcnJlZFByb3BlcnRpZXMoKSkKLSAgICAgICAgYXBwbHlDYXNjYWRl
UHJvcGVydHkocHJvcGVydHkpOworICAgIGZvciAoYXV0byBpZCA6IG1fY2FzY2FkZS5kZWZlcnJl
ZFByb3BlcnR5SURzKCkpCisgICAgICAgIGFwcGx5Q2FzY2FkZVByb3BlcnR5KG1fY2FzY2FkZS5k
ZWZlcnJlZFByb3BlcnR5KGlkKSk7CiB9CiAKIHZvaWQgQnVpbGRlcjo6YXBwbHlQcm9wZXJ0aWVz
KGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5KQo=
</data>
<flag name="commit-queue"
          id="486722"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457977</attachid>
            <date>2022-04-20 05:06:15 -0700</date>
            <delta_ts>2022-04-20 05:58:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238260-20220420140613.patch</filename>
            <type>text/plain</type>
            <size>11611</size>
            <attacher name="Oriol Brufau">obrufau</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3ZmRiMTEwODlkNjhh
MTJhNjJjMjQ2YTUxYzQ0NzA5Yzk0YjNjYS4uYzM5Yzk2ZGE4ZTEyODg5YTJhZWY0ODllOTk1ZDUy
MzU3YWNhZDMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIyLTA0LTIwICBPcmlv
bCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1jYXNjYWRlXSBP
cHRpbWl6ZSBjb2RlIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyNjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICBDU1MgZGVjbGFyYXRpb25zIGZvciBkZWZlcnJlZCBw
cm9wZXJ0aWVzIHdlcmUganVzdCBhcHBlbmRlZCB0byBhIHZlY3RvciwKKyAgICAgICAgd2hpY2gg
Y291bGQgZ3JvdyBodWdlLiBUaGVuIFN0eWxlQnVpbGRlciB3b3VsZCBhcHBseSB0aGVtIG9uZSBi
eSBvbmUsCisgICAgICAgIGRvaW5nIHVzZWxlc3Mgd29yayBpZiBhIHByb3BlcnR5IGFwcGVhcmVk
IG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgIFRoZSBwb2ludCBvZiBkZWZlcnJlZCBwcm9wZXJ0
aWVzIGlzIHRoYXQgdGhleSBzaG91bGQgYmUgYXBwbGllZCBpbgorICAgICAgICByZWxhdGl2ZSBv
cmRlci4gQnV0IGlmIGEgcHJvcGVydHkgYXBwZWFycyBtdWx0aXBsZSB0aW1lcywgd2Ugc2hvdWxk
IG9ubHkKKyAgICAgICAgY2FyZSBhYm91dCB0aGUgbGFzdCBvY2N1cnJlbmNlLgorCisgICAgICAg
IFNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgdmVjdG9yIGFuZCBpbnN0ZWFkIHN0b3JlcyB0aGUg
UHJvcGVydHkgaW4gdGhlCisgICAgICAgIHNhbWUgYXJyYXkgYXMgbm9uLWRlZmVycmVkIHByb3Bl
cnRpZXMuIFRvIHRyYWNrIHRoZSBpbmRpY2VzLCBpdCB1c2VzIGFuCisgICAgICAgIGFycmF5IGlu
c3RlYWQgb2YgYSBIYXNoTWFwLgorCisgICAgICAgIFdoZW4gYXBwbHlpbmcgdGhlIHByb3BlcnRp
ZXMsIHRoZSBwcm9wZXJ0eSBJRHMgYXJlIHBsYWNlZCBpbiBhIHZlY3RvciwKKyAgICAgICAgd2hp
Y2ggaXMgdGhlbiBzb3J0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIGluZGljZXMu
IFRoaXMgY2FuCisgICAgICAgIGhhdmUgc29tZSBvdmVyaGVhZCwgYnV0IHRoZSBzaXplIG9mIHRo
ZSB2ZWN0b3Igd2lsbCBiZSBsaW1pdGVkIGJ5IHRoZQorICAgICAgICBudW1iZXIgb2YgZGVmZXJy
ZWQgcHJvcGVydGllcy4gQ3VycmVudGx5IHRoZXJlIGFyZSBvbmx5IDggb2YgdGhlc2UgKGluCisg
ICAgICAgIGJ1ZyAyMzYxOTkgSSBwbGFuIHRvIGFkZCA5NiBtb3JlLCBidXQgMTA0IGlzIHN0aWxs
IG5vdCB0aGF0IGJpZykuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNob3Vs
ZCBiZSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBzdHlsZS9Qcm9wZXJ0eUNh
c2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2FkZTo6YnVp
bGRDYXNjYWRlKToKKyAgICAgICAgQ2FsbCBzb3J0RGVmZXJyZWRQcm9wZXJ0eUlEcygpLgorCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpzZXQpOgorICAgICAgICBS
ZW1vdmUgYSBsb3ctbGV2ZWwgaWRpb20gdGhhdCB3YXMgZXhwbGljaXRseSBpbml0aWFsaXppbmcg
Y3NzVmFsdWUuCisgICAgICAgIE5vdyBpdCdzIGEgc3RkOjphcnJheSBhbmQgaXMgaW5pdGlhbGl6
ZWQgaW4gdGhlIGhlYWRlci4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2Fz
Y2FkZTo6c2V0RGVmZXJyZWQpOgorICAgICAgICBVc2UgdGhlIG5ldyBkYXRhIHN0cnVjdHVyZXMg
Zm9yIGRlZmVycmVkIHByb3BlcnRpZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9w
ZXJ0eUNhc2NhZGU6OnNvcnREZWZlcnJlZFByb3BlcnR5SURzKToKKyAgICAgICAgTmV3IHByaXZh
dGUgbWV0aG9kIHRvIHNvcnQgdGhlIGRlZmVycmVkIHByb3BlcnR5IElEcyBhY2NvcmRpbmcgdG8g
dGhlaXIKKyAgICAgICAgaW5kZXguCisKKyAgICAgICAgKiBzdHlsZS9Qcm9wZXJ0eUNhc2NhZGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OmRlZmVycmVkUHJv
cGVydHlJbmRleCBjb25zdCk6CisgICAgICAgIE5ldyBwcml2YXRlIG1ldGhvZCB0byBnZXQgdGhl
IGluZGV4IG9mIHRoZSBkZWZlcnJlZCBwcm9wZXJ0eS4KKworICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OlByb3BlcnR5Q2FzY2FkZTo6c2V0RGVmZXJyZWRQcm9wZXJ0eUluZGV4KToKKyAgICAgICAg
TmV3IHByaXZhdGUgbWV0aG9kIHRvIHNldCB0aGUgaW5kZXggb2YgYSBkZWZlcnJlZCBwcm9wZXJ0
eS4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2FkZTo6aGFzRGVmZXJy
ZWRQcm9wZXJ0eSBjb25zdCk6CisgICAgICAgIFVzZSB0aGUgbmV3IGRhdGEgc3RydWN0dXJlcyBm
b3IgZGVmZXJyZWQgcHJvcGVydGllcy4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3Bl
cnR5Q2FzY2FkZTo6ZGVmZXJyZWRQcm9wZXJ0eSBjb25zdCk6CisgICAgICAgIFVzZSB0aGUgbmV3
IGRhdGEgc3RydWN0dXJlcyBmb3IgZGVmZXJyZWQgcHJvcGVydGllcy4KKworICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2FkZTo6ZGVmZXJyZWRQcm9wZXJ0eUlEcyBjb25zdCk6
CisgICAgICAgIE5ldyBtZXRob2QgdG8gZ2V0IHRoZSBkZWZlcnJlZCBwcm9wZXJ0eSBJRHMgc29y
dGVkIGJ5IHRoZWlyIGluZGV4LgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlD
YXNjYWRlOjpkZWZlcnJlZFByb3BlcnRpZXMgY29uc3QpOiBEZWxldGVkLgorCisgICAgICAgICog
c3R5bGUvU3R5bGVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVy
OjphcHBseURlZmVycmVkUHJvcGVydGllcyk6CisgICAgICAgIFVzZSB0aGUgbmV3IGRhdGEgc3Ry
dWN0dXJlcyBmb3IgZGVmZXJyZWQgcHJvcGVydGllcy4KKwogMjAyMi0wNC0xNiAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl1bV2Vi
UlRDXSBNaW5vciBjbGVhbnVwIGluIEluY29taW5nU291cmNlR1N0cmVhbWVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcAppbmRleCA1ODk4OThmNTg0NDFhYWYzZTg4NzAw
M2NlYWE2ZDM0YmU4NDkwZGI4Li42Y2NkYmNlODYyODJlYjY4MzdhMTA1YWU2NmY5Y2UwODA0NWM1
Njg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAKQEAgLTc3LDYg
Kzc3LDggQEAgdm9pZCBQcm9wZXJ0eUNhc2NhZGU6OmJ1aWxkQ2FzY2FkZSgpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgYWRkSW1wb3J0YW50TWF0Y2hlcyhjYXNjYWRlTGV2ZWwpOwog
ICAgIH0KKworICAgIHNvcnREZWZlcnJlZFByb3BlcnR5SURzKCk7CiB9CiAKIHZvaWQgUHJvcGVy
dHlDYXNjYWRlOjpzZXRQcm9wZXJ0eUludGVybmFsKFByb3BlcnR5JiBwcm9wZXJ0eSwgQ1NTUHJv
cGVydHlJRCBpZCwgQ1NTVmFsdWUmIGNzc1ZhbHVlLCBjb25zdCBNYXRjaGVkUHJvcGVydGllcyYg
bWF0Y2hlZFByb3BlcnRpZXMsIENhc2NhZGVMZXZlbCBjYXNjYWRlTGV2ZWwpCkBAIC0xMTQsNyAr
MTE2LDYgQEAgdm9pZCBQcm9wZXJ0eUNhc2NhZGU6OnNldChDU1NQcm9wZXJ0eUlEIGlkLCBDU1NW
YWx1ZSYgY3NzVmFsdWUsIGNvbnN0IE1hdGNoZWRQcm8KICAgICAgICAgaWYgKCFoYXNWYWx1ZSkg
ewogICAgICAgICAgICAgUHJvcGVydHkgcHJvcGVydHk7CiAgICAgICAgICAgICBwcm9wZXJ0eS5p
ZCA9IGlkOwotICAgICAgICAgICAgbWVtc2V0KHByb3BlcnR5LmNzc1ZhbHVlLCAwLCBzaXplb2Yo
cHJvcGVydHkuY3NzVmFsdWUpKTsKICAgICAgICAgICAgIHNldFByb3BlcnR5SW50ZXJuYWwocHJv
cGVydHksIGlkLCBjc3NWYWx1ZSwgbWF0Y2hlZFByb3BlcnRpZXMsIGNhc2NhZGVMZXZlbCk7CiAg
ICAgICAgICAgICBtX2N1c3RvbVByb3BlcnRpZXMuc2V0KGN1c3RvbVZhbHVlLm5hbWUoKSwgcHJv
cGVydHkpOwogICAgICAgICB9IGVsc2UgewpAQCAtMTI1LDggKzEyNiw2IEBAIHZvaWQgUHJvcGVy
dHlDYXNjYWRlOjpzZXQoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUmIGNzc1ZhbHVlLCBjb25z
dCBNYXRjaGVkUHJvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIW1fcHJvcGVy
dHlJc1ByZXNlbnRbaWRdKQotICAgICAgICBtZW1zZXQocHJvcGVydHkuY3NzVmFsdWUsIDAsIHNp
emVvZihwcm9wZXJ0eS5jc3NWYWx1ZSkpOwogICAgIG1fcHJvcGVydHlJc1ByZXNlbnQuc2V0KGlk
KTsKICAgICBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5LCBpZCwgY3NzVmFsdWUsIG1hdGNo
ZWRQcm9wZXJ0aWVzLCBjYXNjYWRlTGV2ZWwpOwogfQpAQCAtMTM1LDEyICsxMzQsMTUgQEAgdm9p
ZCBQcm9wZXJ0eUNhc2NhZGU6OnNldERlZmVycmVkKENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVl
JiBjc3NWYWx1ZSwgY29uc3QgTWEKIHsKICAgICBBU1NFUlQoIUNTU1Byb3BlcnR5Ojppc0RpcmVj
dGlvbkF3YXJlUHJvcGVydHkoaWQpKTsKICAgICBBU1NFUlQoaWQgPj0gZmlyc3REZWZlcnJlZFBy
b3BlcnR5KTsKKyAgICBBU1NFUlQoaWQgPD0gbGFzdERlZmVycmVkUHJvcGVydHkpOwogCi0gICAg
UHJvcGVydHkgcHJvcGVydHk7Ci0gICAgbWVtc2V0KHByb3BlcnR5LmNzc1ZhbHVlLCAwLCBzaXpl
b2YocHJvcGVydHkuY3NzVmFsdWUpKTsKKyAgICBhdXRvJiBwcm9wZXJ0eSA9IG1fcHJvcGVydGll
c1tpZF07CisgICAgaWYgKCFoYXNEZWZlcnJlZFByb3BlcnR5KGlkKSkgeworICAgICAgICBtX2xv
d2VzdFNlZW5EZWZlcnJlZFByb3BlcnR5ID0gc3RkOjptaW4obV9sb3dlc3RTZWVuRGVmZXJyZWRQ
cm9wZXJ0eSwgaWQpOworICAgICAgICBtX2hpZ2hlc3RTZWVuRGVmZXJyZWRQcm9wZXJ0eSA9IHN0
ZDo6bWF4KG1faGlnaGVzdFNlZW5EZWZlcnJlZFByb3BlcnR5LCBpZCk7CisgICAgfQorICAgIHNl
dERlZmVycmVkUHJvcGVydHlJbmRleChpZCwgKyttX2xhc3RJbmRleEZvckRlZmVycmVkKTsKICAg
ICBzZXRQcm9wZXJ0eUludGVybmFsKHByb3BlcnR5LCBpZCwgY3NzVmFsdWUsIG1hdGNoZWRQcm9w
ZXJ0aWVzLCBjYXNjYWRlTGV2ZWwpOwotICAgIG1fZGVmZXJyZWRQcm9wZXJ0aWVzSW5kaWNlcy5z
ZXQoaWQsIG1fZGVmZXJyZWRQcm9wZXJ0aWVzLnNpemUoKSk7Ci0gICAgbV9kZWZlcnJlZFByb3Bl
cnRpZXMuYXBwZW5kKHByb3BlcnR5KTsKIH0KIAogCkBAIC0zMTUsNSArMzE3LDIwIEBAIFByb3Bl
cnR5Q2FzY2FkZTo6RGlyZWN0aW9uIFByb3BlcnR5Q2FzY2FkZTo6ZGlyZWN0aW9uKCkgY29uc3QK
ICAgICByZXR1cm4gbV9kaXJlY3Rpb247CiB9CiAKK3ZvaWQgUHJvcGVydHlDYXNjYWRlOjpzb3J0
RGVmZXJyZWRQcm9wZXJ0eUlEcygpCit7CisgICAgQ1NTUHJvcGVydHlJRCogYmVnaW4gPSBtX2Rl
ZmVycmVkUHJvcGVydHlJRHMuYmVnaW4oKTsKKyAgICBDU1NQcm9wZXJ0eUlEKiBlbmQgPSBiZWdp
bjsKKyAgICBmb3IgKHVpbnQxNl90IGlkID0gbV9sb3dlc3RTZWVuRGVmZXJyZWRQcm9wZXJ0eTsg
aWQgPD0gbV9oaWdoZXN0U2VlbkRlZmVycmVkUHJvcGVydHk7ICsraWQpIHsKKyAgICAgICAgYXV0
byBwcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpOworICAgICAgICBp
ZiAoaGFzRGVmZXJyZWRQcm9wZXJ0eShwcm9wZXJ0eUlEKSkKKyAgICAgICAgICAgICplbmQrKyA9
IHByb3BlcnR5SUQ7CisgICAgfQorICAgIG1fc2VlbkRlZmVycmVkUHJvcGVydHlDb3VudCA9IGVu
ZCAtIGJlZ2luOworICAgIHN0ZDo6c29ydChiZWdpbiwgZW5kLCBbJl0oYXV0byBpZDEsIGF1dG8g
aWQyKSB7CisgICAgICAgIHJldHVybiBkZWZlcnJlZFByb3BlcnR5SW5kZXgoaWQxKSA8IGRlZmVy
cmVkUHJvcGVydHlJbmRleChpZDIpOworICAgIH0pOworfQorCiB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1Byb3BlcnR5Q2FzY2FkZS5oCmluZGV4IDczMDg1YTRkZDhmOTZmNmRlNGZlYjYwMjY3ODFk
MzIxMDJkNmRhNTcuLmUwZDAxN2I5ZTI4M2NiNzQ3Mzk3ZmU4YmUwZDA0YjU4OTJkZDBlNmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1
YmxpYzoKICAgICAgICAgU2NvcGVPcmRpbmFsIHN0eWxlU2NvcGVPcmRpbmFsOwogICAgICAgICBD
YXNjYWRlTGF5ZXJQcmlvcml0eSBjYXNjYWRlTGF5ZXJQcmlvcml0eTsKICAgICAgICAgRnJvbVN0
eWxlQXR0cmlidXRlIGZyb21TdHlsZUF0dHJpYnV0ZTsKLSAgICAgICAgQ1NTVmFsdWUqIGNzc1Zh
bHVlWzNdOyAvLyBWYWx1ZXMgZm9yIGxpbmsgbWF0Y2ggc3RhdGVzIE1hdGNoRGVmYXVsdCwgTWF0
Y2hMaW5rIGFuZCBNYXRjaFZpc2l0ZWQKKyAgICAgICAgc3RkOjphcnJheTxDU1NWYWx1ZSosIDM+
IGNzc1ZhbHVlIHsgfTsgLy8gVmFsdWVzIGZvciBsaW5rIG1hdGNoIHN0YXRlcyBNYXRjaERlZmF1
bHQsIE1hdGNoTGluayBhbmQgTWF0Y2hWaXNpdGVkCiAgICAgfTsKIAogICAgIGJvb2wgaGFzTm9y
bWFsUHJvcGVydHkoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CkBAIC02OCw3ICs2OCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc0N1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAg
IFByb3BlcnR5IGN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYpIGNvbnN0OwogCi0gICAgY29u
c3QgVmVjdG9yPFByb3BlcnR5LCA4PiYgZGVmZXJyZWRQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1
cm4gbV9kZWZlcnJlZFByb3BlcnRpZXM7IH0KKyAgICBjb25zdCBTcGFuPGNvbnN0IENTU1Byb3Bl
cnR5SUQ+IGRlZmVycmVkUHJvcGVydHlJRHMoKSBjb25zdDsKICAgICBjb25zdCBIYXNoTWFwPEF0
b21TdHJpbmcsIFByb3BlcnR5PiYgY3VzdG9tUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VzdG9tUHJvcGVydGllczsgfQogCiAgICAgRGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0OwpA
QCAtODUsNiArODUsMTAgQEAgcHJpdmF0ZToKIAogICAgIERpcmVjdGlvbiByZXNvbHZlRGlyZWN0
aW9uQW5kV3JpdGluZ01vZGUoRGlyZWN0aW9uIGluaGVyaXRlZERpcmVjdGlvbikgY29uc3Q7CiAK
KyAgICB1bnNpZ25lZCBkZWZlcnJlZFByb3BlcnR5SW5kZXgoQ1NTUHJvcGVydHlJRCkgY29uc3Q7
CisgICAgdm9pZCBzZXREZWZlcnJlZFByb3BlcnR5SW5kZXgoQ1NTUHJvcGVydHlJRCwgdW5zaWdu
ZWQpOworICAgIHZvaWQgc29ydERlZmVycmVkUHJvcGVydHlJRHMoKTsKKwogICAgIGNvbnN0IE1h
dGNoUmVzdWx0JiBtX21hdGNoUmVzdWx0OwogICAgIGNvbnN0IEluY2x1ZGVkUHJvcGVydGllcyBt
X2luY2x1ZGVkUHJvcGVydGllczsKICAgICBjb25zdCBDYXNjYWRlTGV2ZWwgbV9tYXhpbXVtQ2Fz
Y2FkZUxldmVsOwpAQCAtOTIsMTEgKzk2LDI0IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBEaXJl
Y3Rpb24gbV9kaXJlY3Rpb247CiAgICAgbXV0YWJsZSBib29sIG1fZGlyZWN0aW9uSXNVbnJlc29s
dmVkIHsgdHJ1ZSB9OwogCi0gICAgUHJvcGVydHkgbV9wcm9wZXJ0aWVzW2ZpcnN0RGVmZXJyZWRQ
cm9wZXJ0eV07Ci0gICAgc3RkOjpiaXRzZXQ8Zmlyc3REZWZlcnJlZFByb3BlcnR5PiBtX3Byb3Bl
cnR5SXNQcmVzZW50OwotCi0gICAgVmVjdG9yPFByb3BlcnR5LCA4PiBtX2RlZmVycmVkUHJvcGVy
dGllczsKLSAgICBIYXNoTWFwPENTU1Byb3BlcnR5SUQsIHVuc2lnbmVkPiBtX2RlZmVycmVkUHJv
cGVydGllc0luZGljZXM7CisgICAgLy8gVGhlIENTU1Byb3BlcnR5SUQgZW51bSBpcyBzb3J0ZWQg
bGlrZSB0aGlzOgorICAgIC8vIDEuIENTU1Byb3BlcnR5SW52YWxpZCBhbmQgQ1NTUHJvcGVydHlD
dXN0b20uCisgICAgLy8gMi4gTm9ybWFsIHByb3BlcnRpZXMgKGhpZ2ggcHJpb3JpdHkgb25lcyBm
b2xsb3dlZCBieSBsb3cgcHJpb3JpdHkgb25lcykuCisgICAgLy8gMy4gRGVmZXJyZWQgcHJvcGVy
dGllcy4KKyAgICAvLworICAgIC8vICdtX3Byb3BlcnRpZXMnIGlzIHVzZWQgZm9yIGJvdGggbm9y
bWFsIGFuZCBkZWZlcnJlZCBwcm9wZXJ0aWVzLCBzbyBpdCBoYXMgc2l6ZSAnbGFzdERlZmVycmVk
UHJvcGVydHkgKyAxJy4KKyAgICAvLyBJdCBjb3VsZCBhY3R1YWxseSB1c2UgJ251bUNTU1Byb3Bl
cnRpZXMnLCBidXQgdGhlbiB3ZSB3b3VsZCBoYXZlIHRvIHN1YnRyYWN0ICdmaXJzdENTU1Byb3Bl
cnR5Jywgd2hpY2ggbWF5IG5vdCBiZSB3b3J0aCBpdC4KKyAgICAvLyAnbV9wcm9wZXJ0eUlzUHJl
c2VudCcgaXMgbm90IHVzZWQgZm9yIGRlZmVycmVkIHByb3BlcnRpZXMsIHNvIHdlIG9ubHkgbmVl
ZCB0byBjb3ZlciB1cCB0byB0aGUgbGFzdCBsb3cgcHJpb3JpdHkgb25lLgorICAgIHN0ZDo6YXJy
YXk8UHJvcGVydHksIGxhc3REZWZlcnJlZFByb3BlcnR5ICsgMT4gbV9wcm9wZXJ0aWVzOworICAg
IHN0ZDo6Yml0c2V0PGxhc3RMb3dQcmlvcml0eVByb3BlcnR5ICsgMT4gbV9wcm9wZXJ0eUlzUHJl
c2VudDsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZGVmZXJyZWRQcm9wZXJ0eUNv
dW50ID0gbGFzdERlZmVycmVkUHJvcGVydHkgLSBmaXJzdERlZmVycmVkUHJvcGVydHkgKyAxOwor
ICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIGRlZmVycmVkUHJvcGVydHlDb3VudD4gbV9kZWZlcnJl
ZFByb3BlcnR5SW5kaWNlcyB7IH07CisgICAgdW5zaWduZWQgbV9sYXN0SW5kZXhGb3JEZWZlcnJl
ZCB7IDAgfTsKKyAgICBzdGQ6OmFycmF5PENTU1Byb3BlcnR5SUQsIGRlZmVycmVkUHJvcGVydHlD
b3VudD4gbV9kZWZlcnJlZFByb3BlcnR5SURzIHsgfTsKKyAgICB1bnNpZ25lZCBtX3NlZW5EZWZl
cnJlZFByb3BlcnR5Q291bnQgeyAwIH07CisgICAgQ1NTUHJvcGVydHlJRCBtX2xvd2VzdFNlZW5E
ZWZlcnJlZFByb3BlcnR5IHsgbGFzdERlZmVycmVkUHJvcGVydHkgfTsKKyAgICBDU1NQcm9wZXJ0
eUlEIG1faGlnaGVzdFNlZW5EZWZlcnJlZFByb3BlcnR5IHsgZmlyc3REZWZlcnJlZFByb3BlcnR5
IH07CiAKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIFByb3BlcnR5PiBtX2N1c3RvbVByb3BlcnRp
ZXM7CiB9OwpAQCAtMTEzLDE4ICsxMzAsMzQgQEAgaW5saW5lIGNvbnN0IFByb3BlcnR5Q2FzY2Fk
ZTo6UHJvcGVydHkmIFByb3BlcnR5Q2FzY2FkZTo6bm9ybWFsUHJvcGVydHkoQ1NTUHJvcGUKICAg
ICByZXR1cm4gbV9wcm9wZXJ0aWVzW2lkXTsKIH0KIAotaW5saW5lIGJvb2wgUHJvcGVydHlDYXNj
YWRlOjpoYXNEZWZlcnJlZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpIGNvbnN0CitpbmxpbmUg
dW5zaWduZWQgUHJvcGVydHlDYXNjYWRlOjpkZWZlcnJlZFByb3BlcnR5SW5kZXgoQ1NTUHJvcGVy
dHlJRCBpZCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaWQgPj0gZmlyc3REZWZlcnJlZFByb3BlcnR5
KTsKKyAgICBBU1NFUlQoaWQgPD0gbGFzdERlZmVycmVkUHJvcGVydHkpOworICAgIHJldHVybiBt
X2RlZmVycmVkUHJvcGVydHlJbmRpY2VzW2lkIC0gZmlyc3REZWZlcnJlZFByb3BlcnR5XTsKK30K
KworaW5saW5lIHZvaWQgUHJvcGVydHlDYXNjYWRlOjpzZXREZWZlcnJlZFByb3BlcnR5SW5kZXgo
Q1NTUHJvcGVydHlJRCBpZCwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgQVNTRVJUKGlkID49IGZp
cnN0RGVmZXJyZWRQcm9wZXJ0eSk7Ci0gICAgcmV0dXJuIG1fZGVmZXJyZWRQcm9wZXJ0aWVzSW5k
aWNlcy5jb250YWlucyhpZCk7CisgICAgQVNTRVJUKGlkIDw9IGxhc3REZWZlcnJlZFByb3BlcnR5
KTsKKyAgICBtX2RlZmVycmVkUHJvcGVydHlJbmRpY2VzW2lkIC0gZmlyc3REZWZlcnJlZFByb3Bl
cnR5XSA9IGluZGV4OworfQorCitpbmxpbmUgYm9vbCBQcm9wZXJ0eUNhc2NhZGU6Omhhc0RlZmVy
cmVkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCkgY29uc3QKK3sKKyAgICByZXR1cm4gZGVmZXJy
ZWRQcm9wZXJ0eUluZGV4KGlkKTsKIH0KIAogaW5saW5lIGNvbnN0IFByb3BlcnR5Q2FzY2FkZTo6
UHJvcGVydHkmIFByb3BlcnR5Q2FzY2FkZTo6ZGVmZXJyZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlE
IGlkKSBjb25zdAogewogICAgIEFTU0VSVChoYXNEZWZlcnJlZFByb3BlcnR5KGlkKSk7Ci0gICAg
dW5zaWduZWQgaW5kZXggPSBtX2RlZmVycmVkUHJvcGVydGllc0luZGljZXMuZ2V0KGlkKTsKLSAg
ICBBU1NFUlQoaW5kZXggPCBtX2RlZmVycmVkUHJvcGVydGllcy5zaXplKCkpOwotICAgIHJldHVy
biBtX2RlZmVycmVkUHJvcGVydGllc1tpbmRleF07CisgICAgcmV0dXJuIG1fcHJvcGVydGllc1tp
ZF07Cit9CisKK2lubGluZSBjb25zdCBTcGFuPGNvbnN0IENTU1Byb3BlcnR5SUQ+IFByb3BlcnR5
Q2FzY2FkZTo6ZGVmZXJyZWRQcm9wZXJ0eUlEcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNwYW48
Y29uc3QgQ1NTUHJvcGVydHlJRD4obV9kZWZlcnJlZFByb3BlcnR5SURzLmJlZ2luKCksIG1fc2Vl
bkRlZmVycmVkUHJvcGVydHlDb3VudCk7CiB9CiAKIGlubGluZSBib29sIFByb3BlcnR5Q2FzY2Fk
ZTo6aGFzQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlQnVpbGRlci5jcHAKaW5kZXggODczYWVjZTI5ZjRkOGI2NWE2ZmMwMTdjNGU0
NDAyMjI2MjBkOWVlYS4uMzEwMzNlNjk0OTQ1MWU5ZTkyNTA4MTkxMjYwMjQxZTZhODgzZTJlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3BwCkBAIC0xMjMsOCArMTIzLDggQEAg
dm9pZCBCdWlsZGVyOjphcHBseU5vbkhpZ2hQcmlvcml0eVByb3BlcnRpZXMoKQogCiB2b2lkIEJ1
aWxkZXI6OmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKCkKIHsKLSAgICBmb3IgKGF1dG8mIHByb3Bl
cnR5IDogbV9jYXNjYWRlLmRlZmVycmVkUHJvcGVydGllcygpKQotICAgICAgICBhcHBseUNhc2Nh
ZGVQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgZm9yIChhdXRvIGlkIDogbV9jYXNjYWRlLmRlZmVy
cmVkUHJvcGVydHlJRHMoKSkKKyAgICAgICAgYXBwbHlDYXNjYWRlUHJvcGVydHkobV9jYXNjYWRl
LmRlZmVycmVkUHJvcGVydHkoaWQpKTsKIH0KIAogdm9pZCBCdWlsZGVyOjphcHBseVByb3BlcnRp
ZXMoaW50IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJvcGVydHkpCg==
</data>
<flag name="commit-queue"
          id="486723"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457978</attachid>
            <date>2022-04-20 05:48:04 -0700</date>
            <delta_ts>2022-04-20 06:04:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238260-20220420144803.patch</filename>
            <type>text/plain</type>
            <size>12190</size>
            <attacher name="Oriol Brufau">obrufau</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3ZmRiMTEwODlkNjhh
MTJhNjJjMjQ2YTUxYzQ0NzA5Yzk0YjNjYS4uOGI3NTM2YjUxNjNjN2RkMDBhODYzNmNjNzM2OTZi
OTZhZjg4MzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIyLTA0LTIwICBPcmlv
bCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1jYXNjYWRlXSBP
cHRpbWl6ZSBjb2RlIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyNjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICBDU1MgZGVjbGFyYXRpb25zIGZvciBkZWZlcnJlZCBw
cm9wZXJ0aWVzIHdlcmUganVzdCBhcHBlbmRlZCB0byBhIHZlY3RvciwKKyAgICAgICAgd2hpY2gg
Y291bGQgZ3JvdyBodWdlLiBUaGVuIFN0eWxlQnVpbGRlciB3b3VsZCBhcHBseSB0aGVtIG9uZSBi
eSBvbmUsCisgICAgICAgIGRvaW5nIHVzZWxlc3Mgd29yayBpZiBhIHByb3BlcnR5IGFwcGVhcmVk
IG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgIFRoZSBwb2ludCBvZiBkZWZlcnJlZCBwcm9wZXJ0
aWVzIGlzIHRoYXQgdGhleSBzaG91bGQgYmUgYXBwbGllZCBpbgorICAgICAgICByZWxhdGl2ZSBv
cmRlci4gQnV0IGlmIGEgcHJvcGVydHkgYXBwZWFycyBtdWx0aXBsZSB0aW1lcywgd2Ugc2hvdWxk
IG9ubHkKKyAgICAgICAgY2FyZSBhYm91dCB0aGUgbGFzdCBvY2N1cnJlbmNlLgorCisgICAgICAg
IFNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgdmVjdG9yIGFuZCBpbnN0ZWFkIHN0b3JlcyB0aGUg
UHJvcGVydHkgaW4gdGhlCisgICAgICAgIHNhbWUgYXJyYXkgYXMgbm9uLWRlZmVycmVkIHByb3Bl
cnRpZXMuIFRvIHRyYWNrIHRoZSBpbmRpY2VzLCBpdCB1c2VzIGFuCisgICAgICAgIGFycmF5IGlu
c3RlYWQgb2YgYSBIYXNoTWFwLgorCisgICAgICAgIFdoZW4gYXBwbHlpbmcgdGhlIHByb3BlcnRp
ZXMsIHRoZSBwcm9wZXJ0eSBJRHMgYXJlIHBsYWNlZCBpbiBhIHZlY3RvciwKKyAgICAgICAgd2hp
Y2ggaXMgdGhlbiBzb3J0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIGluZGljZXMu
IFRoaXMgY2FuCisgICAgICAgIGhhdmUgc29tZSBvdmVyaGVhZCwgYnV0IHRoZSBzaXplIG9mIHRo
ZSB2ZWN0b3Igd2lsbCBiZSBsaW1pdGVkIGJ5IHRoZQorICAgICAgICBudW1iZXIgb2YgZGVmZXJy
ZWQgcHJvcGVydGllcy4gQ3VycmVudGx5IHRoZXJlIGFyZSBvbmx5IDggb2YgdGhlc2UgKGluCisg
ICAgICAgIGJ1ZyAyMzYxOTkgSSBwbGFuIHRvIGFkZCA5NiBtb3JlLCBidXQgMTA0IGlzIHN0aWxs
IG5vdCB0aGF0IGJpZykuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNob3Vs
ZCBiZSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBzdHlsZS9Qcm9wZXJ0eUNh
c2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2FkZTo6YnVp
bGRDYXNjYWRlKToKKyAgICAgICAgQ2FsbCBzb3J0RGVmZXJyZWRQcm9wZXJ0eUlEcygpLgorCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6aW5pdGlhbGl6ZUNTU1ZhbHVlKToKKyAgICAgICAgTW92
ZSBhIGxvdy1sZXZlbCBpZGlvbSBpbnRvIGl0cyBvd24gZnVuY3Rpb24uCisKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OnNldCk6CisgICAgICAgIFVzZSB0aGUgbmV3
IGluaXRpYWxpemVDU1NWYWx1ZSgpLgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVy
dHlDYXNjYWRlOjpzZXREZWZlcnJlZCk6CisgICAgICAgIFVzZSB0aGUgbmV3IGRhdGEgc3RydWN0
dXJlcyBmb3IgZGVmZXJyZWQgcHJvcGVydGllcy4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OlByb3BlcnR5Q2FzY2FkZTo6c29ydERlZmVycmVkUHJvcGVydHlJRHMpOgorICAgICAgICBOZXcg
cHJpdmF0ZSBtZXRob2QgdG8gc29ydCB0aGUgZGVmZXJyZWQgcHJvcGVydHkgSURzIGFjY29yZGlu
ZyB0byB0aGVpcgorICAgICAgICBpbmRleC4KKworICAgICAgICAqIHN0eWxlL1Byb3BlcnR5Q2Fz
Y2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2FkZTo6ZGVmZXJy
ZWRQcm9wZXJ0eUluZGV4IGNvbnN0KToKKyAgICAgICAgTmV3IHByaXZhdGUgbWV0aG9kIHRvIGdl
dCB0aGUgaW5kZXggb2YgdGhlIGRlZmVycmVkIHByb3BlcnR5LgorCisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpzZXREZWZlcnJlZFByb3BlcnR5SW5kZXgpOgorICAg
ICAgICBOZXcgcHJpdmF0ZSBtZXRob2QgdG8gc2V0IHRoZSBpbmRleCBvZiBhIGRlZmVycmVkIHBy
b3BlcnR5LgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpoYXNE
ZWZlcnJlZFByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgVXNlIHRoZSBuZXcgZGF0YSBzdHJ1Y3R1
cmVzIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzLgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
UHJvcGVydHlDYXNjYWRlOjpkZWZlcnJlZFByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgVXNlIHRo
ZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzLgorCisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpkZWZlcnJlZFByb3BlcnR5SURzIGNv
bnN0KToKKyAgICAgICAgTmV3IG1ldGhvZCB0byBnZXQgdGhlIGRlZmVycmVkIHByb3BlcnR5IElE
cyBzb3J0ZWQgYnkgdGhlaXIgaW5kZXguCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9w
ZXJ0eUNhc2NhZGU6OmRlZmVycmVkUHJvcGVydGllcyBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAg
ICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXI6OmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgVXNlIHRoZSBuZXcgZGF0
YSBzdHJ1Y3R1cmVzIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzLgorCiAyMDIyLTA0LTE2ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVy
XVtXZWJSVENdIE1pbm9yIGNsZWFudXAgaW4gSW5jb21pbmdTb3VyY2VHU3RyZWFtZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwCmluZGV4IDU4OTg5OGY1ODQ0MWFhZjNl
ODg3MDAzY2VhYTZkMzRiZTg0OTBkYjguLjgyZTMxYWFiZTYwMzM4YTdjNjNmZmJiNGI5MjkwMGY1
ZTA1MWNlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2Fk
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcApAQCAt
NzcsNiArNzcsOCBAQCB2b2lkIFByb3BlcnR5Q2FzY2FkZTo6YnVpbGRDYXNjYWRlKCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBhZGRJbXBvcnRhbnRNYXRjaGVzKGNhc2NhZGVMZXZl
bCk7CiAgICAgfQorCisgICAgc29ydERlZmVycmVkUHJvcGVydHlJRHMoKTsKIH0KIAogdm9pZCBQ
cm9wZXJ0eUNhc2NhZGU6OnNldFByb3BlcnR5SW50ZXJuYWwoUHJvcGVydHkmIHByb3BlcnR5LCBD
U1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgY3NzVmFsdWUsIGNvbnN0IE1hdGNoZWRQcm9wZXJ0
aWVzJiBtYXRjaGVkUHJvcGVydGllcywgQ2FzY2FkZUxldmVsIGNhc2NhZGVMZXZlbCkKQEAgLTk2
LDYgKzk4LDExIEBAIHZvaWQgUHJvcGVydHlDYXNjYWRlOjpzZXRQcm9wZXJ0eUludGVybmFsKFBy
b3BlcnR5JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHlJRCBpZCwKICAgICAgICAgcHJvcGVydHkuY3Nz
VmFsdWVbbWF0Y2hlZFByb3BlcnRpZXMubGlua01hdGNoVHlwZV0gPSAmY3NzVmFsdWU7CiB9CiAK
K3N0YXRpYyB2b2lkIGluaXRpYWxpemVDU1NWYWx1ZShQcm9wZXJ0eUNhc2NhZGU6OlByb3BlcnR5
JiBwcm9wZXJ0eSkKK3sKKyAgICBwcm9wZXJ0eS5jc3NWYWx1ZSA9IHsgfTsKK30KKwogdm9pZCBQ
cm9wZXJ0eUNhc2NhZGU6OnNldChDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgY3NzVmFsdWUs
IGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJiBtYXRjaGVkUHJvcGVydGllcywgQ2FzY2FkZUxldmVs
IGNhc2NhZGVMZXZlbCkKIHsKICAgICBpZiAoQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQ
cm9wZXJ0eShpZCkpIHsKQEAgLTExNCw3ICsxMjEsNyBAQCB2b2lkIFByb3BlcnR5Q2FzY2FkZTo6
c2V0KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlJiBjc3NWYWx1ZSwgY29uc3QgTWF0Y2hlZFBy
bwogICAgICAgICBpZiAoIWhhc1ZhbHVlKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eSBwcm9wZXJ0
eTsKICAgICAgICAgICAgIHByb3BlcnR5LmlkID0gaWQ7Ci0gICAgICAgICAgICBtZW1zZXQocHJv
cGVydHkuY3NzVmFsdWUsIDAsIHNpemVvZihwcm9wZXJ0eS5jc3NWYWx1ZSkpOworICAgICAgICAg
ICAgaW5pdGlhbGl6ZUNTU1ZhbHVlKHByb3BlcnR5KTsKICAgICAgICAgICAgIHNldFByb3BlcnR5
SW50ZXJuYWwocHJvcGVydHksIGlkLCBjc3NWYWx1ZSwgbWF0Y2hlZFByb3BlcnRpZXMsIGNhc2Nh
ZGVMZXZlbCk7CiAgICAgICAgICAgICBtX2N1c3RvbVByb3BlcnRpZXMuc2V0KGN1c3RvbVZhbHVl
Lm5hbWUoKSwgcHJvcGVydHkpOwogICAgICAgICB9IGVsc2UgewpAQCAtMTI2LDcgKzEzMyw3IEBA
IHZvaWQgUHJvcGVydHlDYXNjYWRlOjpzZXQoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUmIGNz
c1ZhbHVlLCBjb25zdCBNYXRjaGVkUHJvCiAgICAgfQogCiAgICAgaWYgKCFtX3Byb3BlcnR5SXNQ
cmVzZW50W2lkXSkKLSAgICAgICAgbWVtc2V0KHByb3BlcnR5LmNzc1ZhbHVlLCAwLCBzaXplb2Yo
cHJvcGVydHkuY3NzVmFsdWUpKTsKKyAgICAgICAgaW5pdGlhbGl6ZUNTU1ZhbHVlKHByb3BlcnR5
KTsKICAgICBtX3Byb3BlcnR5SXNQcmVzZW50LnNldChpZCk7CiAgICAgc2V0UHJvcGVydHlJbnRl
cm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBtYXRjaGVkUHJvcGVydGllcywgY2FzY2FkZUxl
dmVsKTsKIH0KQEAgLTEzNSwxMiArMTQyLDE2IEBAIHZvaWQgUHJvcGVydHlDYXNjYWRlOjpzZXRE
ZWZlcnJlZChDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgY3NzVmFsdWUsIGNvbnN0IE1hCiB7
CiAgICAgQVNTRVJUKCFDU1NQcm9wZXJ0eTo6aXNEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KGlkKSk7
CiAgICAgQVNTRVJUKGlkID49IGZpcnN0RGVmZXJyZWRQcm9wZXJ0eSk7CisgICAgQVNTRVJUKGlk
IDw9IGxhc3REZWZlcnJlZFByb3BlcnR5KTsKIAotICAgIFByb3BlcnR5IHByb3BlcnR5OwotICAg
IG1lbXNldChwcm9wZXJ0eS5jc3NWYWx1ZSwgMCwgc2l6ZW9mKHByb3BlcnR5LmNzc1ZhbHVlKSk7
CisgICAgYXV0byYgcHJvcGVydHkgPSBtX3Byb3BlcnRpZXNbaWRdOworICAgIGlmICghaGFzRGVm
ZXJyZWRQcm9wZXJ0eShpZCkpIHsKKyAgICAgICAgaW5pdGlhbGl6ZUNTU1ZhbHVlKHByb3BlcnR5
KTsKKyAgICAgICAgbV9sb3dlc3RTZWVuRGVmZXJyZWRQcm9wZXJ0eSA9IHN0ZDo6bWluKG1fbG93
ZXN0U2VlbkRlZmVycmVkUHJvcGVydHksIGlkKTsKKyAgICAgICAgbV9oaWdoZXN0U2VlbkRlZmVy
cmVkUHJvcGVydHkgPSBzdGQ6Om1heChtX2hpZ2hlc3RTZWVuRGVmZXJyZWRQcm9wZXJ0eSwgaWQp
OworICAgIH0KKyAgICBzZXREZWZlcnJlZFByb3BlcnR5SW5kZXgoaWQsICsrbV9sYXN0SW5kZXhG
b3JEZWZlcnJlZCk7CiAgICAgc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1Zh
bHVlLCBtYXRjaGVkUHJvcGVydGllcywgY2FzY2FkZUxldmVsKTsKLSAgICBtX2RlZmVycmVkUHJv
cGVydGllc0luZGljZXMuc2V0KGlkLCBtX2RlZmVycmVkUHJvcGVydGllcy5zaXplKCkpOwotICAg
IG1fZGVmZXJyZWRQcm9wZXJ0aWVzLmFwcGVuZChwcm9wZXJ0eSk7CiB9CiAKIApAQCAtMzE1LDUg
KzMyNiwyMCBAQCBQcm9wZXJ0eUNhc2NhZGU6OkRpcmVjdGlvbiBQcm9wZXJ0eUNhc2NhZGU6OmRp
cmVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGlyZWN0aW9uOwogfQogCit2b2lkIFByb3Bl
cnR5Q2FzY2FkZTo6c29ydERlZmVycmVkUHJvcGVydHlJRHMoKQoreworICAgIENTU1Byb3BlcnR5
SUQqIGJlZ2luID0gbV9kZWZlcnJlZFByb3BlcnR5SURzLmJlZ2luKCk7CisgICAgQ1NTUHJvcGVy
dHlJRCogZW5kID0gYmVnaW47CisgICAgZm9yICh1aW50MTZfdCBpZCA9IG1fbG93ZXN0U2VlbkRl
ZmVycmVkUHJvcGVydHk7IGlkIDw9IG1faGlnaGVzdFNlZW5EZWZlcnJlZFByb3BlcnR5OyArK2lk
KSB7CisgICAgICAgIGF1dG8gcHJvcGVydHlJRCA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+
KGlkKTsKKyAgICAgICAgaWYgKGhhc0RlZmVycmVkUHJvcGVydHkocHJvcGVydHlJRCkpCisgICAg
ICAgICAgICAqZW5kKysgPSBwcm9wZXJ0eUlEOworICAgIH0KKyAgICBtX3NlZW5EZWZlcnJlZFBy
b3BlcnR5Q291bnQgPSBlbmQgLSBiZWdpbjsKKyAgICBzdGQ6OnNvcnQoYmVnaW4sIGVuZCwgWyZd
KGF1dG8gaWQxLCBhdXRvIGlkMikgeworICAgICAgICByZXR1cm4gZGVmZXJyZWRQcm9wZXJ0eUlu
ZGV4KGlkMSkgPCBkZWZlcnJlZFByb3BlcnR5SW5kZXgoaWQyKTsKKyAgICB9KTsKK30KKwogfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuaAppbmRleCA3MzA4NWE0ZGQ4Zjk2
ZjZkZTRmZWI2MDI2NzgxZDMyMTAyZDZkYTU3Li5kYWM1MTI1MGQ4M2ZhNWNiMWRiNjFjN2Y0YWZi
YzI0YWNiNjE2YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNh
c2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuaApAQCAt
NTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNjb3BlT3JkaW5hbCBzdHlsZVNjb3BlT3Jk
aW5hbDsKICAgICAgICAgQ2FzY2FkZUxheWVyUHJpb3JpdHkgY2FzY2FkZUxheWVyUHJpb3JpdHk7
CiAgICAgICAgIEZyb21TdHlsZUF0dHJpYnV0ZSBmcm9tU3R5bGVBdHRyaWJ1dGU7Ci0gICAgICAg
IENTU1ZhbHVlKiBjc3NWYWx1ZVszXTsgLy8gVmFsdWVzIGZvciBsaW5rIG1hdGNoIHN0YXRlcyBN
YXRjaERlZmF1bHQsIE1hdGNoTGluayBhbmQgTWF0Y2hWaXNpdGVkCisgICAgICAgIHN0ZDo6YXJy
YXk8Q1NTVmFsdWUqLCAzPiBjc3NWYWx1ZTsgLy8gVmFsdWVzIGZvciBsaW5rIG1hdGNoIHN0YXRl
cyBNYXRjaERlZmF1bHQsIE1hdGNoTGluayBhbmQgTWF0Y2hWaXNpdGVkCiAgICAgfTsKIAogICAg
IGJvb2wgaGFzTm9ybWFsUHJvcGVydHkoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CkBAIC02OCw3ICs2
OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0N1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYp
IGNvbnN0OwogICAgIFByb3BlcnR5IGN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYpIGNvbnN0
OwogCi0gICAgY29uc3QgVmVjdG9yPFByb3BlcnR5LCA4PiYgZGVmZXJyZWRQcm9wZXJ0aWVzKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWZlcnJlZFByb3BlcnRpZXM7IH0KKyAgICBjb25zdCBTcGFuPGNv
bnN0IENTU1Byb3BlcnR5SUQ+IGRlZmVycmVkUHJvcGVydHlJRHMoKSBjb25zdDsKICAgICBjb25z
dCBIYXNoTWFwPEF0b21TdHJpbmcsIFByb3BlcnR5PiYgY3VzdG9tUHJvcGVydGllcygpIGNvbnN0
IHsgcmV0dXJuIG1fY3VzdG9tUHJvcGVydGllczsgfQogCiAgICAgRGlyZWN0aW9uIGRpcmVjdGlv
bigpIGNvbnN0OwpAQCAtODUsNiArODUsMTAgQEAgcHJpdmF0ZToKIAogICAgIERpcmVjdGlvbiBy
ZXNvbHZlRGlyZWN0aW9uQW5kV3JpdGluZ01vZGUoRGlyZWN0aW9uIGluaGVyaXRlZERpcmVjdGlv
bikgY29uc3Q7CiAKKyAgICB1bnNpZ25lZCBkZWZlcnJlZFByb3BlcnR5SW5kZXgoQ1NTUHJvcGVy
dHlJRCkgY29uc3Q7CisgICAgdm9pZCBzZXREZWZlcnJlZFByb3BlcnR5SW5kZXgoQ1NTUHJvcGVy
dHlJRCwgdW5zaWduZWQpOworICAgIHZvaWQgc29ydERlZmVycmVkUHJvcGVydHlJRHMoKTsKKwog
ICAgIGNvbnN0IE1hdGNoUmVzdWx0JiBtX21hdGNoUmVzdWx0OwogICAgIGNvbnN0IEluY2x1ZGVk
UHJvcGVydGllcyBtX2luY2x1ZGVkUHJvcGVydGllczsKICAgICBjb25zdCBDYXNjYWRlTGV2ZWwg
bV9tYXhpbXVtQ2FzY2FkZUxldmVsOwpAQCAtOTIsMTEgKzk2LDI0IEBAIHByaXZhdGU6CiAgICAg
bXV0YWJsZSBEaXJlY3Rpb24gbV9kaXJlY3Rpb247CiAgICAgbXV0YWJsZSBib29sIG1fZGlyZWN0
aW9uSXNVbnJlc29sdmVkIHsgdHJ1ZSB9OwogCi0gICAgUHJvcGVydHkgbV9wcm9wZXJ0aWVzW2Zp
cnN0RGVmZXJyZWRQcm9wZXJ0eV07Ci0gICAgc3RkOjpiaXRzZXQ8Zmlyc3REZWZlcnJlZFByb3Bl
cnR5PiBtX3Byb3BlcnR5SXNQcmVzZW50OwotCi0gICAgVmVjdG9yPFByb3BlcnR5LCA4PiBtX2Rl
ZmVycmVkUHJvcGVydGllczsKLSAgICBIYXNoTWFwPENTU1Byb3BlcnR5SUQsIHVuc2lnbmVkPiBt
X2RlZmVycmVkUHJvcGVydGllc0luZGljZXM7CisgICAgLy8gVGhlIENTU1Byb3BlcnR5SUQgZW51
bSBpcyBzb3J0ZWQgbGlrZSB0aGlzOgorICAgIC8vIDEuIENTU1Byb3BlcnR5SW52YWxpZCBhbmQg
Q1NTUHJvcGVydHlDdXN0b20uCisgICAgLy8gMi4gTm9ybWFsIHByb3BlcnRpZXMgKGhpZ2ggcHJp
b3JpdHkgb25lcyBmb2xsb3dlZCBieSBsb3cgcHJpb3JpdHkgb25lcykuCisgICAgLy8gMy4gRGVm
ZXJyZWQgcHJvcGVydGllcy4KKyAgICAvLworICAgIC8vICdtX3Byb3BlcnRpZXMnIGlzIHVzZWQg
Zm9yIGJvdGggbm9ybWFsIGFuZCBkZWZlcnJlZCBwcm9wZXJ0aWVzLCBzbyBpdCBoYXMgc2l6ZSAn
bGFzdERlZmVycmVkUHJvcGVydHkgKyAxJy4KKyAgICAvLyBJdCBjb3VsZCBhY3R1YWxseSB1c2Ug
J251bUNTU1Byb3BlcnRpZXMnLCBidXQgdGhlbiB3ZSB3b3VsZCBoYXZlIHRvIHN1YnRyYWN0ICdm
aXJzdENTU1Byb3BlcnR5Jywgd2hpY2ggbWF5IG5vdCBiZSB3b3J0aCBpdC4KKyAgICAvLyAnbV9w
cm9wZXJ0eUlzUHJlc2VudCcgaXMgbm90IHVzZWQgZm9yIGRlZmVycmVkIHByb3BlcnRpZXMsIHNv
IHdlIG9ubHkgbmVlZCB0byBjb3ZlciB1cCB0byB0aGUgbGFzdCBsb3cgcHJpb3JpdHkgb25lLgor
ICAgIHN0ZDo6YXJyYXk8UHJvcGVydHksIGxhc3REZWZlcnJlZFByb3BlcnR5ICsgMT4gbV9wcm9w
ZXJ0aWVzOworICAgIHN0ZDo6Yml0c2V0PGxhc3RMb3dQcmlvcml0eVByb3BlcnR5ICsgMT4gbV9w
cm9wZXJ0eUlzUHJlc2VudDsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZGVmZXJy
ZWRQcm9wZXJ0eUNvdW50ID0gbGFzdERlZmVycmVkUHJvcGVydHkgLSBmaXJzdERlZmVycmVkUHJv
cGVydHkgKyAxOworICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIGRlZmVycmVkUHJvcGVydHlDb3Vu
dD4gbV9kZWZlcnJlZFByb3BlcnR5SW5kaWNlcyB7IH07CisgICAgdW5zaWduZWQgbV9sYXN0SW5k
ZXhGb3JEZWZlcnJlZCB7IDAgfTsKKyAgICBzdGQ6OmFycmF5PENTU1Byb3BlcnR5SUQsIGRlZmVy
cmVkUHJvcGVydHlDb3VudD4gbV9kZWZlcnJlZFByb3BlcnR5SURzIHsgfTsKKyAgICB1bnNpZ25l
ZCBtX3NlZW5EZWZlcnJlZFByb3BlcnR5Q291bnQgeyAwIH07CisgICAgQ1NTUHJvcGVydHlJRCBt
X2xvd2VzdFNlZW5EZWZlcnJlZFByb3BlcnR5IHsgbGFzdERlZmVycmVkUHJvcGVydHkgfTsKKyAg
ICBDU1NQcm9wZXJ0eUlEIG1faGlnaGVzdFNlZW5EZWZlcnJlZFByb3BlcnR5IHsgZmlyc3REZWZl
cnJlZFByb3BlcnR5IH07CiAKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIFByb3BlcnR5PiBtX2N1
c3RvbVByb3BlcnRpZXM7CiB9OwpAQCAtMTEzLDE4ICsxMzAsMzQgQEAgaW5saW5lIGNvbnN0IFBy
b3BlcnR5Q2FzY2FkZTo6UHJvcGVydHkmIFByb3BlcnR5Q2FzY2FkZTo6bm9ybWFsUHJvcGVydHko
Q1NTUHJvcGUKICAgICByZXR1cm4gbV9wcm9wZXJ0aWVzW2lkXTsKIH0KIAotaW5saW5lIGJvb2wg
UHJvcGVydHlDYXNjYWRlOjpoYXNEZWZlcnJlZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpIGNv
bnN0CitpbmxpbmUgdW5zaWduZWQgUHJvcGVydHlDYXNjYWRlOjpkZWZlcnJlZFByb3BlcnR5SW5k
ZXgoQ1NTUHJvcGVydHlJRCBpZCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaWQgPj0gZmlyc3REZWZl
cnJlZFByb3BlcnR5KTsKKyAgICBBU1NFUlQoaWQgPD0gbGFzdERlZmVycmVkUHJvcGVydHkpOwor
ICAgIHJldHVybiBtX2RlZmVycmVkUHJvcGVydHlJbmRpY2VzW2lkIC0gZmlyc3REZWZlcnJlZFBy
b3BlcnR5XTsKK30KKworaW5saW5lIHZvaWQgUHJvcGVydHlDYXNjYWRlOjpzZXREZWZlcnJlZFBy
b3BlcnR5SW5kZXgoQ1NTUHJvcGVydHlJRCBpZCwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgQVNT
RVJUKGlkID49IGZpcnN0RGVmZXJyZWRQcm9wZXJ0eSk7Ci0gICAgcmV0dXJuIG1fZGVmZXJyZWRQ
cm9wZXJ0aWVzSW5kaWNlcy5jb250YWlucyhpZCk7CisgICAgQVNTRVJUKGlkIDw9IGxhc3REZWZl
cnJlZFByb3BlcnR5KTsKKyAgICBtX2RlZmVycmVkUHJvcGVydHlJbmRpY2VzW2lkIC0gZmlyc3RE
ZWZlcnJlZFByb3BlcnR5XSA9IGluZGV4OworfQorCitpbmxpbmUgYm9vbCBQcm9wZXJ0eUNhc2Nh
ZGU6Omhhc0RlZmVycmVkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZGVmZXJyZWRQcm9wZXJ0eUluZGV4KGlkKTsKIH0KIAogaW5saW5lIGNvbnN0IFByb3Bl
cnR5Q2FzY2FkZTo6UHJvcGVydHkmIFByb3BlcnR5Q2FzY2FkZTo6ZGVmZXJyZWRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUlEIGlkKSBjb25zdAogewogICAgIEFTU0VSVChoYXNEZWZlcnJlZFByb3BlcnR5
KGlkKSk7Ci0gICAgdW5zaWduZWQgaW5kZXggPSBtX2RlZmVycmVkUHJvcGVydGllc0luZGljZXMu
Z2V0KGlkKTsKLSAgICBBU1NFUlQoaW5kZXggPCBtX2RlZmVycmVkUHJvcGVydGllcy5zaXplKCkp
OwotICAgIHJldHVybiBtX2RlZmVycmVkUHJvcGVydGllc1tpbmRleF07CisgICAgcmV0dXJuIG1f
cHJvcGVydGllc1tpZF07Cit9CisKK2lubGluZSBjb25zdCBTcGFuPGNvbnN0IENTU1Byb3BlcnR5
SUQ+IFByb3BlcnR5Q2FzY2FkZTo6ZGVmZXJyZWRQcm9wZXJ0eUlEcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHsgbV9kZWZlcnJlZFByb3BlcnR5SURzLmRhdGEoKSwgc3RhdGljX2Nhc3Q8c2l6ZV90
PihtX3NlZW5EZWZlcnJlZFByb3BlcnR5Q291bnQpIH07CiB9CiAKIGlubGluZSBib29sIFByb3Bl
cnR5Q2FzY2FkZTo6aGFzQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAKaW5kZXggODczYWVjZTI5ZjRkOGI2NWE2
ZmMwMTdjNGU0NDAyMjI2MjBkOWVlYS4uMzEwMzNlNjk0OTQ1MWU5ZTkyNTA4MTkxMjYwMjQxZTZh
ODgzZTJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3BwCkBAIC0xMjMsOCAr
MTIzLDggQEAgdm9pZCBCdWlsZGVyOjphcHBseU5vbkhpZ2hQcmlvcml0eVByb3BlcnRpZXMoKQog
CiB2b2lkIEJ1aWxkZXI6OmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKCkKIHsKLSAgICBmb3IgKGF1
dG8mIHByb3BlcnR5IDogbV9jYXNjYWRlLmRlZmVycmVkUHJvcGVydGllcygpKQotICAgICAgICBh
cHBseUNhc2NhZGVQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgZm9yIChhdXRvIGlkIDogbV9jYXNj
YWRlLmRlZmVycmVkUHJvcGVydHlJRHMoKSkKKyAgICAgICAgYXBwbHlDYXNjYWRlUHJvcGVydHko
bV9jYXNjYWRlLmRlZmVycmVkUHJvcGVydHkoaWQpKTsKIH0KIAogdm9pZCBCdWlsZGVyOjphcHBs
eVByb3BlcnRpZXMoaW50IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJvcGVydHkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457979</attachid>
            <date>2022-04-20 06:04:12 -0700</date>
            <delta_ts>2022-04-20 07:20:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238260-20220420150411.patch</filename>
            <type>text/plain</type>
            <size>12178</size>
            <attacher name="Oriol Brufau">obrufau</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3ZmRiMTEwODlkNjhh
MTJhNjJjMjQ2YTUxYzQ0NzA5Yzk0YjNjYS4uOGI3NTM2YjUxNjNjN2RkMDBhODYzNmNjNzM2OTZi
OTZhZjg4MzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIyLTA0LTIwICBPcmlv
bCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1jYXNjYWRlXSBP
cHRpbWl6ZSBjb2RlIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyNjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICBDU1MgZGVjbGFyYXRpb25zIGZvciBkZWZlcnJlZCBw
cm9wZXJ0aWVzIHdlcmUganVzdCBhcHBlbmRlZCB0byBhIHZlY3RvciwKKyAgICAgICAgd2hpY2gg
Y291bGQgZ3JvdyBodWdlLiBUaGVuIFN0eWxlQnVpbGRlciB3b3VsZCBhcHBseSB0aGVtIG9uZSBi
eSBvbmUsCisgICAgICAgIGRvaW5nIHVzZWxlc3Mgd29yayBpZiBhIHByb3BlcnR5IGFwcGVhcmVk
IG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgIFRoZSBwb2ludCBvZiBkZWZlcnJlZCBwcm9wZXJ0
aWVzIGlzIHRoYXQgdGhleSBzaG91bGQgYmUgYXBwbGllZCBpbgorICAgICAgICByZWxhdGl2ZSBv
cmRlci4gQnV0IGlmIGEgcHJvcGVydHkgYXBwZWFycyBtdWx0aXBsZSB0aW1lcywgd2Ugc2hvdWxk
IG9ubHkKKyAgICAgICAgY2FyZSBhYm91dCB0aGUgbGFzdCBvY2N1cnJlbmNlLgorCisgICAgICAg
IFNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgdmVjdG9yIGFuZCBpbnN0ZWFkIHN0b3JlcyB0aGUg
UHJvcGVydHkgaW4gdGhlCisgICAgICAgIHNhbWUgYXJyYXkgYXMgbm9uLWRlZmVycmVkIHByb3Bl
cnRpZXMuIFRvIHRyYWNrIHRoZSBpbmRpY2VzLCBpdCB1c2VzIGFuCisgICAgICAgIGFycmF5IGlu
c3RlYWQgb2YgYSBIYXNoTWFwLgorCisgICAgICAgIFdoZW4gYXBwbHlpbmcgdGhlIHByb3BlcnRp
ZXMsIHRoZSBwcm9wZXJ0eSBJRHMgYXJlIHBsYWNlZCBpbiBhIHZlY3RvciwKKyAgICAgICAgd2hp
Y2ggaXMgdGhlbiBzb3J0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIGluZGljZXMu
IFRoaXMgY2FuCisgICAgICAgIGhhdmUgc29tZSBvdmVyaGVhZCwgYnV0IHRoZSBzaXplIG9mIHRo
ZSB2ZWN0b3Igd2lsbCBiZSBsaW1pdGVkIGJ5IHRoZQorICAgICAgICBudW1iZXIgb2YgZGVmZXJy
ZWQgcHJvcGVydGllcy4gQ3VycmVudGx5IHRoZXJlIGFyZSBvbmx5IDggb2YgdGhlc2UgKGluCisg
ICAgICAgIGJ1ZyAyMzYxOTkgSSBwbGFuIHRvIGFkZCA5NiBtb3JlLCBidXQgMTA0IGlzIHN0aWxs
IG5vdCB0aGF0IGJpZykuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNob3Vs
ZCBiZSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBzdHlsZS9Qcm9wZXJ0eUNh
c2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2FkZTo6YnVp
bGRDYXNjYWRlKToKKyAgICAgICAgQ2FsbCBzb3J0RGVmZXJyZWRQcm9wZXJ0eUlEcygpLgorCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6aW5pdGlhbGl6ZUNTU1ZhbHVlKToKKyAgICAgICAgTW92
ZSBhIGxvdy1sZXZlbCBpZGlvbSBpbnRvIGl0cyBvd24gZnVuY3Rpb24uCisKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OnNldCk6CisgICAgICAgIFVzZSB0aGUgbmV3
IGluaXRpYWxpemVDU1NWYWx1ZSgpLgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVy
dHlDYXNjYWRlOjpzZXREZWZlcnJlZCk6CisgICAgICAgIFVzZSB0aGUgbmV3IGRhdGEgc3RydWN0
dXJlcyBmb3IgZGVmZXJyZWQgcHJvcGVydGllcy4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OlByb3BlcnR5Q2FzY2FkZTo6c29ydERlZmVycmVkUHJvcGVydHlJRHMpOgorICAgICAgICBOZXcg
cHJpdmF0ZSBtZXRob2QgdG8gc29ydCB0aGUgZGVmZXJyZWQgcHJvcGVydHkgSURzIGFjY29yZGlu
ZyB0byB0aGVpcgorICAgICAgICBpbmRleC4KKworICAgICAgICAqIHN0eWxlL1Byb3BlcnR5Q2Fz
Y2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2FkZTo6ZGVmZXJy
ZWRQcm9wZXJ0eUluZGV4IGNvbnN0KToKKyAgICAgICAgTmV3IHByaXZhdGUgbWV0aG9kIHRvIGdl
dCB0aGUgaW5kZXggb2YgdGhlIGRlZmVycmVkIHByb3BlcnR5LgorCisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpzZXREZWZlcnJlZFByb3BlcnR5SW5kZXgpOgorICAg
ICAgICBOZXcgcHJpdmF0ZSBtZXRob2QgdG8gc2V0IHRoZSBpbmRleCBvZiBhIGRlZmVycmVkIHBy
b3BlcnR5LgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpoYXNE
ZWZlcnJlZFByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgVXNlIHRoZSBuZXcgZGF0YSBzdHJ1Y3R1
cmVzIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzLgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
UHJvcGVydHlDYXNjYWRlOjpkZWZlcnJlZFByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgVXNlIHRo
ZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzLgorCisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpkZWZlcnJlZFByb3BlcnR5SURzIGNv
bnN0KToKKyAgICAgICAgTmV3IG1ldGhvZCB0byBnZXQgdGhlIGRlZmVycmVkIHByb3BlcnR5IElE
cyBzb3J0ZWQgYnkgdGhlaXIgaW5kZXguCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9w
ZXJ0eUNhc2NhZGU6OmRlZmVycmVkUHJvcGVydGllcyBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAg
ICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXI6OmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgVXNlIHRoZSBuZXcgZGF0
YSBzdHJ1Y3R1cmVzIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzLgorCiAyMDIyLTA0LTE2ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVy
XVtXZWJSVENdIE1pbm9yIGNsZWFudXAgaW4gSW5jb21pbmdTb3VyY2VHU3RyZWFtZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwCmluZGV4IDU4OTg5OGY1ODQ0MWFhZjNl
ODg3MDAzY2VhYTZkMzRiZTg0OTBkYjguLjgyZTMxYWFiZTYwMzM4YTdjNjNmZmJiNGI5MjkwMGY1
ZTA1MWNlNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2Fk
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcApAQCAt
NzcsNiArNzcsOCBAQCB2b2lkIFByb3BlcnR5Q2FzY2FkZTo6YnVpbGRDYXNjYWRlKCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBhZGRJbXBvcnRhbnRNYXRjaGVzKGNhc2NhZGVMZXZl
bCk7CiAgICAgfQorCisgICAgc29ydERlZmVycmVkUHJvcGVydHlJRHMoKTsKIH0KIAogdm9pZCBQ
cm9wZXJ0eUNhc2NhZGU6OnNldFByb3BlcnR5SW50ZXJuYWwoUHJvcGVydHkmIHByb3BlcnR5LCBD
U1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgY3NzVmFsdWUsIGNvbnN0IE1hdGNoZWRQcm9wZXJ0
aWVzJiBtYXRjaGVkUHJvcGVydGllcywgQ2FzY2FkZUxldmVsIGNhc2NhZGVMZXZlbCkKQEAgLTk2
LDYgKzk4LDExIEBAIHZvaWQgUHJvcGVydHlDYXNjYWRlOjpzZXRQcm9wZXJ0eUludGVybmFsKFBy
b3BlcnR5JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHlJRCBpZCwKICAgICAgICAgcHJvcGVydHkuY3Nz
VmFsdWVbbWF0Y2hlZFByb3BlcnRpZXMubGlua01hdGNoVHlwZV0gPSAmY3NzVmFsdWU7CiB9CiAK
K3N0YXRpYyB2b2lkIGluaXRpYWxpemVDU1NWYWx1ZShQcm9wZXJ0eUNhc2NhZGU6OlByb3BlcnR5
JiBwcm9wZXJ0eSkKK3sKKyAgICBwcm9wZXJ0eS5jc3NWYWx1ZSA9IHsgfTsKK30KKwogdm9pZCBQ
cm9wZXJ0eUNhc2NhZGU6OnNldChDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgY3NzVmFsdWUs
IGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJiBtYXRjaGVkUHJvcGVydGllcywgQ2FzY2FkZUxldmVs
IGNhc2NhZGVMZXZlbCkKIHsKICAgICBpZiAoQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQ
cm9wZXJ0eShpZCkpIHsKQEAgLTExNCw3ICsxMjEsNyBAQCB2b2lkIFByb3BlcnR5Q2FzY2FkZTo6
c2V0KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlJiBjc3NWYWx1ZSwgY29uc3QgTWF0Y2hlZFBy
bwogICAgICAgICBpZiAoIWhhc1ZhbHVlKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eSBwcm9wZXJ0
eTsKICAgICAgICAgICAgIHByb3BlcnR5LmlkID0gaWQ7Ci0gICAgICAgICAgICBtZW1zZXQocHJv
cGVydHkuY3NzVmFsdWUsIDAsIHNpemVvZihwcm9wZXJ0eS5jc3NWYWx1ZSkpOworICAgICAgICAg
ICAgaW5pdGlhbGl6ZUNTU1ZhbHVlKHByb3BlcnR5KTsKICAgICAgICAgICAgIHNldFByb3BlcnR5
SW50ZXJuYWwocHJvcGVydHksIGlkLCBjc3NWYWx1ZSwgbWF0Y2hlZFByb3BlcnRpZXMsIGNhc2Nh
ZGVMZXZlbCk7CiAgICAgICAgICAgICBtX2N1c3RvbVByb3BlcnRpZXMuc2V0KGN1c3RvbVZhbHVl
Lm5hbWUoKSwgcHJvcGVydHkpOwogICAgICAgICB9IGVsc2UgewpAQCAtMTI2LDcgKzEzMyw3IEBA
IHZvaWQgUHJvcGVydHlDYXNjYWRlOjpzZXQoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUmIGNz
c1ZhbHVlLCBjb25zdCBNYXRjaGVkUHJvCiAgICAgfQogCiAgICAgaWYgKCFtX3Byb3BlcnR5SXNQ
cmVzZW50W2lkXSkKLSAgICAgICAgbWVtc2V0KHByb3BlcnR5LmNzc1ZhbHVlLCAwLCBzaXplb2Yo
cHJvcGVydHkuY3NzVmFsdWUpKTsKKyAgICAgICAgaW5pdGlhbGl6ZUNTU1ZhbHVlKHByb3BlcnR5
KTsKICAgICBtX3Byb3BlcnR5SXNQcmVzZW50LnNldChpZCk7CiAgICAgc2V0UHJvcGVydHlJbnRl
cm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBtYXRjaGVkUHJvcGVydGllcywgY2FzY2FkZUxl
dmVsKTsKIH0KQEAgLTEzNSwxMiArMTQyLDE2IEBAIHZvaWQgUHJvcGVydHlDYXNjYWRlOjpzZXRE
ZWZlcnJlZChDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgY3NzVmFsdWUsIGNvbnN0IE1hCiB7
CiAgICAgQVNTRVJUKCFDU1NQcm9wZXJ0eTo6aXNEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KGlkKSk7
CiAgICAgQVNTRVJUKGlkID49IGZpcnN0RGVmZXJyZWRQcm9wZXJ0eSk7CisgICAgQVNTRVJUKGlk
IDw9IGxhc3REZWZlcnJlZFByb3BlcnR5KTsKIAotICAgIFByb3BlcnR5IHByb3BlcnR5OwotICAg
IG1lbXNldChwcm9wZXJ0eS5jc3NWYWx1ZSwgMCwgc2l6ZW9mKHByb3BlcnR5LmNzc1ZhbHVlKSk7
CisgICAgYXV0byYgcHJvcGVydHkgPSBtX3Byb3BlcnRpZXNbaWRdOworICAgIGlmICghaGFzRGVm
ZXJyZWRQcm9wZXJ0eShpZCkpIHsKKyAgICAgICAgaW5pdGlhbGl6ZUNTU1ZhbHVlKHByb3BlcnR5
KTsKKyAgICAgICAgbV9sb3dlc3RTZWVuRGVmZXJyZWRQcm9wZXJ0eSA9IHN0ZDo6bWluKG1fbG93
ZXN0U2VlbkRlZmVycmVkUHJvcGVydHksIGlkKTsKKyAgICAgICAgbV9oaWdoZXN0U2VlbkRlZmVy
cmVkUHJvcGVydHkgPSBzdGQ6Om1heChtX2hpZ2hlc3RTZWVuRGVmZXJyZWRQcm9wZXJ0eSwgaWQp
OworICAgIH0KKyAgICBzZXREZWZlcnJlZFByb3BlcnR5SW5kZXgoaWQsICsrbV9sYXN0SW5kZXhG
b3JEZWZlcnJlZCk7CiAgICAgc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1Zh
bHVlLCBtYXRjaGVkUHJvcGVydGllcywgY2FzY2FkZUxldmVsKTsKLSAgICBtX2RlZmVycmVkUHJv
cGVydGllc0luZGljZXMuc2V0KGlkLCBtX2RlZmVycmVkUHJvcGVydGllcy5zaXplKCkpOwotICAg
IG1fZGVmZXJyZWRQcm9wZXJ0aWVzLmFwcGVuZChwcm9wZXJ0eSk7CiB9CiAKIApAQCAtMzE1LDUg
KzMyNiwyMCBAQCBQcm9wZXJ0eUNhc2NhZGU6OkRpcmVjdGlvbiBQcm9wZXJ0eUNhc2NhZGU6OmRp
cmVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGlyZWN0aW9uOwogfQogCit2b2lkIFByb3Bl
cnR5Q2FzY2FkZTo6c29ydERlZmVycmVkUHJvcGVydHlJRHMoKQoreworICAgIENTU1Byb3BlcnR5
SUQqIGJlZ2luID0gbV9kZWZlcnJlZFByb3BlcnR5SURzLmJlZ2luKCk7CisgICAgQ1NTUHJvcGVy
dHlJRCogZW5kID0gYmVnaW47CisgICAgZm9yICh1aW50MTZfdCBpZCA9IG1fbG93ZXN0U2VlbkRl
ZmVycmVkUHJvcGVydHk7IGlkIDw9IG1faGlnaGVzdFNlZW5EZWZlcnJlZFByb3BlcnR5OyArK2lk
KSB7CisgICAgICAgIGF1dG8gcHJvcGVydHlJRCA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+
KGlkKTsKKyAgICAgICAgaWYgKGhhc0RlZmVycmVkUHJvcGVydHkocHJvcGVydHlJRCkpCisgICAg
ICAgICAgICAqZW5kKysgPSBwcm9wZXJ0eUlEOworICAgIH0KKyAgICBtX3NlZW5EZWZlcnJlZFBy
b3BlcnR5Q291bnQgPSBlbmQgLSBiZWdpbjsKKyAgICBzdGQ6OnNvcnQoYmVnaW4sIGVuZCwgWyZd
KGF1dG8gaWQxLCBhdXRvIGlkMikgeworICAgICAgICByZXR1cm4gZGVmZXJyZWRQcm9wZXJ0eUlu
ZGV4KGlkMSkgPCBkZWZlcnJlZFByb3BlcnR5SW5kZXgoaWQyKTsKKyAgICB9KTsKK30KKwogfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmggYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuaAppbmRleCA3MzA4NWE0ZGQ4Zjk2
ZjZkZTRmZWI2MDI2NzgxZDMyMTAyZDZkYTU3Li42M2JmZWJiMWU0Zjk0NDkxZTdhN2UwYmZjZTIz
MGJhZDQ4MWZjMDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNh
c2NhZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuaApAQCAt
NTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNjb3BlT3JkaW5hbCBzdHlsZVNjb3BlT3Jk
aW5hbDsKICAgICAgICAgQ2FzY2FkZUxheWVyUHJpb3JpdHkgY2FzY2FkZUxheWVyUHJpb3JpdHk7
CiAgICAgICAgIEZyb21TdHlsZUF0dHJpYnV0ZSBmcm9tU3R5bGVBdHRyaWJ1dGU7Ci0gICAgICAg
IENTU1ZhbHVlKiBjc3NWYWx1ZVszXTsgLy8gVmFsdWVzIGZvciBsaW5rIG1hdGNoIHN0YXRlcyBN
YXRjaERlZmF1bHQsIE1hdGNoTGluayBhbmQgTWF0Y2hWaXNpdGVkCisgICAgICAgIHN0ZDo6YXJy
YXk8Q1NTVmFsdWUqLCAzPiBjc3NWYWx1ZTsgLy8gVmFsdWVzIGZvciBsaW5rIG1hdGNoIHN0YXRl
cyBNYXRjaERlZmF1bHQsIE1hdGNoTGluayBhbmQgTWF0Y2hWaXNpdGVkCiAgICAgfTsKIAogICAg
IGJvb2wgaGFzTm9ybWFsUHJvcGVydHkoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CkBAIC02OCw3ICs2
OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0N1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYp
IGNvbnN0OwogICAgIFByb3BlcnR5IGN1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYpIGNvbnN0
OwogCi0gICAgY29uc3QgVmVjdG9yPFByb3BlcnR5LCA4PiYgZGVmZXJyZWRQcm9wZXJ0aWVzKCkg
Y29uc3QgeyByZXR1cm4gbV9kZWZlcnJlZFByb3BlcnRpZXM7IH0KKyAgICBTcGFuPGNvbnN0IENT
U1Byb3BlcnR5SUQ+IGRlZmVycmVkUHJvcGVydHlJRHMoKSBjb25zdDsKICAgICBjb25zdCBIYXNo
TWFwPEF0b21TdHJpbmcsIFByb3BlcnR5PiYgY3VzdG9tUHJvcGVydGllcygpIGNvbnN0IHsgcmV0
dXJuIG1fY3VzdG9tUHJvcGVydGllczsgfQogCiAgICAgRGlyZWN0aW9uIGRpcmVjdGlvbigpIGNv
bnN0OwpAQCAtODUsNiArODUsMTAgQEAgcHJpdmF0ZToKIAogICAgIERpcmVjdGlvbiByZXNvbHZl
RGlyZWN0aW9uQW5kV3JpdGluZ01vZGUoRGlyZWN0aW9uIGluaGVyaXRlZERpcmVjdGlvbikgY29u
c3Q7CiAKKyAgICB1bnNpZ25lZCBkZWZlcnJlZFByb3BlcnR5SW5kZXgoQ1NTUHJvcGVydHlJRCkg
Y29uc3Q7CisgICAgdm9pZCBzZXREZWZlcnJlZFByb3BlcnR5SW5kZXgoQ1NTUHJvcGVydHlJRCwg
dW5zaWduZWQpOworICAgIHZvaWQgc29ydERlZmVycmVkUHJvcGVydHlJRHMoKTsKKwogICAgIGNv
bnN0IE1hdGNoUmVzdWx0JiBtX21hdGNoUmVzdWx0OwogICAgIGNvbnN0IEluY2x1ZGVkUHJvcGVy
dGllcyBtX2luY2x1ZGVkUHJvcGVydGllczsKICAgICBjb25zdCBDYXNjYWRlTGV2ZWwgbV9tYXhp
bXVtQ2FzY2FkZUxldmVsOwpAQCAtOTIsMTEgKzk2LDI0IEBAIHByaXZhdGU6CiAgICAgbXV0YWJs
ZSBEaXJlY3Rpb24gbV9kaXJlY3Rpb247CiAgICAgbXV0YWJsZSBib29sIG1fZGlyZWN0aW9uSXNV
bnJlc29sdmVkIHsgdHJ1ZSB9OwogCi0gICAgUHJvcGVydHkgbV9wcm9wZXJ0aWVzW2ZpcnN0RGVm
ZXJyZWRQcm9wZXJ0eV07Ci0gICAgc3RkOjpiaXRzZXQ8Zmlyc3REZWZlcnJlZFByb3BlcnR5PiBt
X3Byb3BlcnR5SXNQcmVzZW50OwotCi0gICAgVmVjdG9yPFByb3BlcnR5LCA4PiBtX2RlZmVycmVk
UHJvcGVydGllczsKLSAgICBIYXNoTWFwPENTU1Byb3BlcnR5SUQsIHVuc2lnbmVkPiBtX2RlZmVy
cmVkUHJvcGVydGllc0luZGljZXM7CisgICAgLy8gVGhlIENTU1Byb3BlcnR5SUQgZW51bSBpcyBz
b3J0ZWQgbGlrZSB0aGlzOgorICAgIC8vIDEuIENTU1Byb3BlcnR5SW52YWxpZCBhbmQgQ1NTUHJv
cGVydHlDdXN0b20uCisgICAgLy8gMi4gTm9ybWFsIHByb3BlcnRpZXMgKGhpZ2ggcHJpb3JpdHkg
b25lcyBmb2xsb3dlZCBieSBsb3cgcHJpb3JpdHkgb25lcykuCisgICAgLy8gMy4gRGVmZXJyZWQg
cHJvcGVydGllcy4KKyAgICAvLworICAgIC8vICdtX3Byb3BlcnRpZXMnIGlzIHVzZWQgZm9yIGJv
dGggbm9ybWFsIGFuZCBkZWZlcnJlZCBwcm9wZXJ0aWVzLCBzbyBpdCBoYXMgc2l6ZSAnbGFzdERl
ZmVycmVkUHJvcGVydHkgKyAxJy4KKyAgICAvLyBJdCBjb3VsZCBhY3R1YWxseSB1c2UgJ251bUNT
U1Byb3BlcnRpZXMnLCBidXQgdGhlbiB3ZSB3b3VsZCBoYXZlIHRvIHN1YnRyYWN0ICdmaXJzdENT
U1Byb3BlcnR5Jywgd2hpY2ggbWF5IG5vdCBiZSB3b3J0aCBpdC4KKyAgICAvLyAnbV9wcm9wZXJ0
eUlzUHJlc2VudCcgaXMgbm90IHVzZWQgZm9yIGRlZmVycmVkIHByb3BlcnRpZXMsIHNvIHdlIG9u
bHkgbmVlZCB0byBjb3ZlciB1cCB0byB0aGUgbGFzdCBsb3cgcHJpb3JpdHkgb25lLgorICAgIHN0
ZDo6YXJyYXk8UHJvcGVydHksIGxhc3REZWZlcnJlZFByb3BlcnR5ICsgMT4gbV9wcm9wZXJ0aWVz
OworICAgIHN0ZDo6Yml0c2V0PGxhc3RMb3dQcmlvcml0eVByb3BlcnR5ICsgMT4gbV9wcm9wZXJ0
eUlzUHJlc2VudDsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZGVmZXJyZWRQcm9w
ZXJ0eUNvdW50ID0gbGFzdERlZmVycmVkUHJvcGVydHkgLSBmaXJzdERlZmVycmVkUHJvcGVydHkg
KyAxOworICAgIHN0ZDo6YXJyYXk8dW5zaWduZWQsIGRlZmVycmVkUHJvcGVydHlDb3VudD4gbV9k
ZWZlcnJlZFByb3BlcnR5SW5kaWNlcyB7IH07CisgICAgdW5zaWduZWQgbV9sYXN0SW5kZXhGb3JE
ZWZlcnJlZCB7IDAgfTsKKyAgICBzdGQ6OmFycmF5PENTU1Byb3BlcnR5SUQsIGRlZmVycmVkUHJv
cGVydHlDb3VudD4gbV9kZWZlcnJlZFByb3BlcnR5SURzIHsgfTsKKyAgICB1bnNpZ25lZCBtX3Nl
ZW5EZWZlcnJlZFByb3BlcnR5Q291bnQgeyAwIH07CisgICAgQ1NTUHJvcGVydHlJRCBtX2xvd2Vz
dFNlZW5EZWZlcnJlZFByb3BlcnR5IHsgbGFzdERlZmVycmVkUHJvcGVydHkgfTsKKyAgICBDU1NQ
cm9wZXJ0eUlEIG1faGlnaGVzdFNlZW5EZWZlcnJlZFByb3BlcnR5IHsgZmlyc3REZWZlcnJlZFBy
b3BlcnR5IH07CiAKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIFByb3BlcnR5PiBtX2N1c3RvbVBy
b3BlcnRpZXM7CiB9OwpAQCAtMTEzLDE4ICsxMzAsMzQgQEAgaW5saW5lIGNvbnN0IFByb3BlcnR5
Q2FzY2FkZTo6UHJvcGVydHkmIFByb3BlcnR5Q2FzY2FkZTo6bm9ybWFsUHJvcGVydHkoQ1NTUHJv
cGUKICAgICByZXR1cm4gbV9wcm9wZXJ0aWVzW2lkXTsKIH0KIAotaW5saW5lIGJvb2wgUHJvcGVy
dHlDYXNjYWRlOjpoYXNEZWZlcnJlZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpIGNvbnN0Citp
bmxpbmUgdW5zaWduZWQgUHJvcGVydHlDYXNjYWRlOjpkZWZlcnJlZFByb3BlcnR5SW5kZXgoQ1NT
UHJvcGVydHlJRCBpZCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaWQgPj0gZmlyc3REZWZlcnJlZFBy
b3BlcnR5KTsKKyAgICBBU1NFUlQoaWQgPD0gbGFzdERlZmVycmVkUHJvcGVydHkpOworICAgIHJl
dHVybiBtX2RlZmVycmVkUHJvcGVydHlJbmRpY2VzW2lkIC0gZmlyc3REZWZlcnJlZFByb3BlcnR5
XTsKK30KKworaW5saW5lIHZvaWQgUHJvcGVydHlDYXNjYWRlOjpzZXREZWZlcnJlZFByb3BlcnR5
SW5kZXgoQ1NTUHJvcGVydHlJRCBpZCwgdW5zaWduZWQgaW5kZXgpCiB7CiAgICAgQVNTRVJUKGlk
ID49IGZpcnN0RGVmZXJyZWRQcm9wZXJ0eSk7Ci0gICAgcmV0dXJuIG1fZGVmZXJyZWRQcm9wZXJ0
aWVzSW5kaWNlcy5jb250YWlucyhpZCk7CisgICAgQVNTRVJUKGlkIDw9IGxhc3REZWZlcnJlZFBy
b3BlcnR5KTsKKyAgICBtX2RlZmVycmVkUHJvcGVydHlJbmRpY2VzW2lkIC0gZmlyc3REZWZlcnJl
ZFByb3BlcnR5XSA9IGluZGV4OworfQorCitpbmxpbmUgYm9vbCBQcm9wZXJ0eUNhc2NhZGU6Omhh
c0RlZmVycmVkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZGVmZXJyZWRQcm9wZXJ0eUluZGV4KGlkKTsKIH0KIAogaW5saW5lIGNvbnN0IFByb3BlcnR5Q2Fz
Y2FkZTo6UHJvcGVydHkmIFByb3BlcnR5Q2FzY2FkZTo6ZGVmZXJyZWRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEIGlkKSBjb25zdAogewogICAgIEFTU0VSVChoYXNEZWZlcnJlZFByb3BlcnR5KGlkKSk7
Ci0gICAgdW5zaWduZWQgaW5kZXggPSBtX2RlZmVycmVkUHJvcGVydGllc0luZGljZXMuZ2V0KGlk
KTsKLSAgICBBU1NFUlQoaW5kZXggPCBtX2RlZmVycmVkUHJvcGVydGllcy5zaXplKCkpOwotICAg
IHJldHVybiBtX2RlZmVycmVkUHJvcGVydGllc1tpbmRleF07CisgICAgcmV0dXJuIG1fcHJvcGVy
dGllc1tpZF07Cit9CisKK2lubGluZSBTcGFuPGNvbnN0IENTU1Byb3BlcnR5SUQ+IFByb3BlcnR5
Q2FzY2FkZTo6ZGVmZXJyZWRQcm9wZXJ0eUlEcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgbV9k
ZWZlcnJlZFByb3BlcnR5SURzLmRhdGEoKSwgc3RhdGljX2Nhc3Q8c2l6ZV90PihtX3NlZW5EZWZl
cnJlZFByb3BlcnR5Q291bnQpIH07CiB9CiAKIGlubGluZSBib29sIFByb3BlcnR5Q2FzY2FkZTo6
aGFzQ3VzdG9tUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlQnVpbGRlci5jcHAKaW5kZXggODczYWVjZTI5ZjRkOGI2NWE2ZmMwMTdjNGU0NDAy
MjI2MjBkOWVlYS4uMzEwMzNlNjk0OTQ1MWU5ZTkyNTA4MTkxMjYwMjQxZTZhODgzZTJlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3BwCkBAIC0xMjMsOCArMTIzLDggQEAgdm9p
ZCBCdWlsZGVyOjphcHBseU5vbkhpZ2hQcmlvcml0eVByb3BlcnRpZXMoKQogCiB2b2lkIEJ1aWxk
ZXI6OmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKCkKIHsKLSAgICBmb3IgKGF1dG8mIHByb3BlcnR5
IDogbV9jYXNjYWRlLmRlZmVycmVkUHJvcGVydGllcygpKQotICAgICAgICBhcHBseUNhc2NhZGVQ
cm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgZm9yIChhdXRvIGlkIDogbV9jYXNjYWRlLmRlZmVycmVk
UHJvcGVydHlJRHMoKSkKKyAgICAgICAgYXBwbHlDYXNjYWRlUHJvcGVydHkobV9jYXNjYWRlLmRl
ZmVycmVkUHJvcGVydHkoaWQpKTsKIH0KIAogdm9pZCBCdWlsZGVyOjphcHBseVByb3BlcnRpZXMo
aW50IGZpcnN0UHJvcGVydHksIGludCBsYXN0UHJvcGVydHkpCg==
</data>
<flag name="commit-queue"
          id="486728"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457986</attachid>
            <date>2022-04-20 06:35:26 -0700</date>
            <delta_ts>2022-04-20 09:36:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238260-20220420153524.patch</filename>
            <type>text/plain</type>
            <size>12137</size>
            <attacher name="Oriol Brufau">obrufau</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3ZmRiMTEwODlkNjhh
MTJhNjJjMjQ2YTUxYzQ0NzA5Yzk0YjNjYS4uOGI3NTM2YjUxNjNjN2RkMDBhODYzNmNjNzM2OTZi
OTZhZjg4MzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIyLTA0LTIwICBPcmlv
bCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+CisKKyAgICAgICAgW2Nzcy1jYXNjYWRlXSBP
cHRpbWl6ZSBjb2RlIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgyNjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICBDU1MgZGVjbGFyYXRpb25zIGZvciBkZWZlcnJlZCBw
cm9wZXJ0aWVzIHdlcmUganVzdCBhcHBlbmRlZCB0byBhIHZlY3RvciwKKyAgICAgICAgd2hpY2gg
Y291bGQgZ3JvdyBodWdlLiBUaGVuIFN0eWxlQnVpbGRlciB3b3VsZCBhcHBseSB0aGVtIG9uZSBi
eSBvbmUsCisgICAgICAgIGRvaW5nIHVzZWxlc3Mgd29yayBpZiBhIHByb3BlcnR5IGFwcGVhcmVk
IG11bHRpcGxlIHRpbWVzLgorCisgICAgICAgIFRoZSBwb2ludCBvZiBkZWZlcnJlZCBwcm9wZXJ0
aWVzIGlzIHRoYXQgdGhleSBzaG91bGQgYmUgYXBwbGllZCBpbgorICAgICAgICByZWxhdGl2ZSBv
cmRlci4gQnV0IGlmIGEgcHJvcGVydHkgYXBwZWFycyBtdWx0aXBsZSB0aW1lcywgd2Ugc2hvdWxk
IG9ubHkKKyAgICAgICAgY2FyZSBhYm91dCB0aGUgbGFzdCBvY2N1cnJlbmNlLgorCisgICAgICAg
IFNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgdmVjdG9yIGFuZCBpbnN0ZWFkIHN0b3JlcyB0aGUg
UHJvcGVydHkgaW4gdGhlCisgICAgICAgIHNhbWUgYXJyYXkgYXMgbm9uLWRlZmVycmVkIHByb3Bl
cnRpZXMuIFRvIHRyYWNrIHRoZSBpbmRpY2VzLCBpdCB1c2VzIGFuCisgICAgICAgIGFycmF5IGlu
c3RlYWQgb2YgYSBIYXNoTWFwLgorCisgICAgICAgIFdoZW4gYXBwbHlpbmcgdGhlIHByb3BlcnRp
ZXMsIHRoZSBwcm9wZXJ0eSBJRHMgYXJlIHBsYWNlZCBpbiBhIHZlY3RvciwKKyAgICAgICAgd2hp
Y2ggaXMgdGhlbiBzb3J0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIGluZGljZXMu
IFRoaXMgY2FuCisgICAgICAgIGhhdmUgc29tZSBvdmVyaGVhZCwgYnV0IHRoZSBzaXplIG9mIHRo
ZSB2ZWN0b3Igd2lsbCBiZSBsaW1pdGVkIGJ5IHRoZQorICAgICAgICBudW1iZXIgb2YgZGVmZXJy
ZWQgcHJvcGVydGllcy4gQ3VycmVudGx5IHRoZXJlIGFyZSBvbmx5IDggb2YgdGhlc2UgKGluCisg
ICAgICAgIGJ1ZyAyMzYxOTkgSSBwbGFuIHRvIGFkZCA5NiBtb3JlLCBidXQgMTA0IGlzIHN0aWxs
IG5vdCB0aGF0IGJpZykuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNob3Vs
ZCBiZSBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBzdHlsZS9Qcm9wZXJ0eUNh
c2NhZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2FkZTo6YnVp
bGRDYXNjYWRlKToKKyAgICAgICAgQ2FsbCBzb3J0RGVmZXJyZWRQcm9wZXJ0eUlEcygpLgorCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6aW5pdGlhbGl6ZUNTU1ZhbHVlKToKKyAgICAgICAgTW92
ZSBhIGxvdy1sZXZlbCBpZGlvbSBpbnRvIGl0cyBvd24gZnVuY3Rpb24uCisKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpQcm9wZXJ0eUNhc2NhZGU6OnNldCk6CisgICAgICAgIFVzZSB0aGUgbmV3
IGluaXRpYWxpemVDU1NWYWx1ZSgpLgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVy
dHlDYXNjYWRlOjpzZXREZWZlcnJlZCk6CisgICAgICAgIFVzZSB0aGUgbmV3IGRhdGEgc3RydWN0
dXJlcyBmb3IgZGVmZXJyZWQgcHJvcGVydGllcy4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OlByb3BlcnR5Q2FzY2FkZTo6c29ydERlZmVycmVkUHJvcGVydHlJRHMpOgorICAgICAgICBOZXcg
cHJpdmF0ZSBtZXRob2QgdG8gc29ydCB0aGUgZGVmZXJyZWQgcHJvcGVydHkgSURzIGFjY29yZGlu
ZyB0byB0aGVpcgorICAgICAgICBpbmRleC4KKworICAgICAgICAqIHN0eWxlL1Byb3BlcnR5Q2Fz
Y2FkZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlByb3BlcnR5Q2FzY2FkZTo6ZGVmZXJy
ZWRQcm9wZXJ0eUluZGV4IGNvbnN0KToKKyAgICAgICAgTmV3IHByaXZhdGUgbWV0aG9kIHRvIGdl
dCB0aGUgaW5kZXggb2YgdGhlIGRlZmVycmVkIHByb3BlcnR5LgorCisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpzZXREZWZlcnJlZFByb3BlcnR5SW5kZXgpOgorICAg
ICAgICBOZXcgcHJpdmF0ZSBtZXRob2QgdG8gc2V0IHRoZSBpbmRleCBvZiBhIGRlZmVycmVkIHBy
b3BlcnR5LgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpoYXNE
ZWZlcnJlZFByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgVXNlIHRoZSBuZXcgZGF0YSBzdHJ1Y3R1
cmVzIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzLgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
UHJvcGVydHlDYXNjYWRlOjpkZWZlcnJlZFByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgVXNlIHRo
ZSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzLgorCisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6UHJvcGVydHlDYXNjYWRlOjpkZWZlcnJlZFByb3BlcnR5SURzIGNv
bnN0KToKKyAgICAgICAgTmV3IG1ldGhvZCB0byBnZXQgdGhlIGRlZmVycmVkIHByb3BlcnR5IElE
cyBzb3J0ZWQgYnkgdGhlaXIgaW5kZXguCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpQcm9w
ZXJ0eUNhc2NhZGU6OmRlZmVycmVkUHJvcGVydGllcyBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAg
ICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkJ1
aWxkZXI6OmFwcGx5RGVmZXJyZWRQcm9wZXJ0aWVzKToKKyAgICAgICAgVXNlIHRoZSBuZXcgZGF0
YSBzdHJ1Y3R1cmVzIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzLgorCiAyMDIyLTA0LTE2ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVy
XVtXZWJSVENdIE1pbm9yIGNsZWFudXAgaW4gSW5jb21pbmdTb3VyY2VHU3RyZWFtZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9Qcm9wZXJ0eUNhc2NhZGUuY3BwCmluZGV4IDU4OTg5OGY1ODQ0MWFhZjNl
ODg3MDAzY2VhYTZkMzRiZTg0OTBkYjguLmQ0MGVmYjI4YjExMGY4ODkwNGM4MmY4NWRhY2FkZGQy
ZGQ2NzVkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2Fk
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmNwcApAQCAt
NzcsNiArNzcsOCBAQCB2b2lkIFByb3BlcnR5Q2FzY2FkZTo6YnVpbGRDYXNjYWRlKCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBhZGRJbXBvcnRhbnRNYXRjaGVzKGNhc2NhZGVMZXZl
bCk7CiAgICAgfQorCisgICAgc29ydERlZmVycmVkUHJvcGVydHlJRHMoKTsKIH0KIAogdm9pZCBQ
cm9wZXJ0eUNhc2NhZGU6OnNldFByb3BlcnR5SW50ZXJuYWwoUHJvcGVydHkmIHByb3BlcnR5LCBD
U1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgY3NzVmFsdWUsIGNvbnN0IE1hdGNoZWRQcm9wZXJ0
aWVzJiBtYXRjaGVkUHJvcGVydGllcywgQ2FzY2FkZUxldmVsIGNhc2NhZGVMZXZlbCkKQEAgLTk2
LDYgKzk4LDExIEBAIHZvaWQgUHJvcGVydHlDYXNjYWRlOjpzZXRQcm9wZXJ0eUludGVybmFsKFBy
b3BlcnR5JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHlJRCBpZCwKICAgICAgICAgcHJvcGVydHkuY3Nz
VmFsdWVbbWF0Y2hlZFByb3BlcnRpZXMubGlua01hdGNoVHlwZV0gPSAmY3NzVmFsdWU7CiB9CiAK
K3N0YXRpYyB2b2lkIGluaXRpYWxpemVDU1NWYWx1ZShQcm9wZXJ0eUNhc2NhZGU6OlByb3BlcnR5
JiBwcm9wZXJ0eSkKK3sKKyAgICBwcm9wZXJ0eS5jc3NWYWx1ZSA9IHsgfTsKK30KKwogdm9pZCBQ
cm9wZXJ0eUNhc2NhZGU6OnNldChDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgY3NzVmFsdWUs
IGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJiBtYXRjaGVkUHJvcGVydGllcywgQ2FzY2FkZUxldmVs
IGNhc2NhZGVMZXZlbCkKIHsKICAgICBpZiAoQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQ
cm9wZXJ0eShpZCkpIHsKQEAgLTExNCw3ICsxMjEsNyBAQCB2b2lkIFByb3BlcnR5Q2FzY2FkZTo6
c2V0KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlJiBjc3NWYWx1ZSwgY29uc3QgTWF0Y2hlZFBy
bwogICAgICAgICBpZiAoIWhhc1ZhbHVlKSB7CiAgICAgICAgICAgICBQcm9wZXJ0eSBwcm9wZXJ0
eTsKICAgICAgICAgICAgIHByb3BlcnR5LmlkID0gaWQ7Ci0gICAgICAgICAgICBtZW1zZXQocHJv
cGVydHkuY3NzVmFsdWUsIDAsIHNpemVvZihwcm9wZXJ0eS5jc3NWYWx1ZSkpOworICAgICAgICAg
ICAgaW5pdGlhbGl6ZUNTU1ZhbHVlKHByb3BlcnR5KTsKICAgICAgICAgICAgIHNldFByb3BlcnR5
SW50ZXJuYWwocHJvcGVydHksIGlkLCBjc3NWYWx1ZSwgbWF0Y2hlZFByb3BlcnRpZXMsIGNhc2Nh
ZGVMZXZlbCk7CiAgICAgICAgICAgICBtX2N1c3RvbVByb3BlcnRpZXMuc2V0KGN1c3RvbVZhbHVl
Lm5hbWUoKSwgcHJvcGVydHkpOwogICAgICAgICB9IGVsc2UgewpAQCAtMTI2LDcgKzEzMyw3IEBA
IHZvaWQgUHJvcGVydHlDYXNjYWRlOjpzZXQoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUmIGNz
c1ZhbHVlLCBjb25zdCBNYXRjaGVkUHJvCiAgICAgfQogCiAgICAgaWYgKCFtX3Byb3BlcnR5SXNQ
cmVzZW50W2lkXSkKLSAgICAgICAgbWVtc2V0KHByb3BlcnR5LmNzc1ZhbHVlLCAwLCBzaXplb2Yo
cHJvcGVydHkuY3NzVmFsdWUpKTsKKyAgICAgICAgaW5pdGlhbGl6ZUNTU1ZhbHVlKHByb3BlcnR5
KTsKICAgICBtX3Byb3BlcnR5SXNQcmVzZW50LnNldChpZCk7CiAgICAgc2V0UHJvcGVydHlJbnRl
cm5hbChwcm9wZXJ0eSwgaWQsIGNzc1ZhbHVlLCBtYXRjaGVkUHJvcGVydGllcywgY2FzY2FkZUxl
dmVsKTsKIH0KQEAgLTEzNSwxMiArMTQyLDE2IEBAIHZvaWQgUHJvcGVydHlDYXNjYWRlOjpzZXRE
ZWZlcnJlZChDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgY3NzVmFsdWUsIGNvbnN0IE1hCiB7
CiAgICAgQVNTRVJUKCFDU1NQcm9wZXJ0eTo6aXNEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KGlkKSk7
CiAgICAgQVNTRVJUKGlkID49IGZpcnN0RGVmZXJyZWRQcm9wZXJ0eSk7CisgICAgQVNTRVJUKGlk
IDw9IGxhc3REZWZlcnJlZFByb3BlcnR5KTsKIAotICAgIFByb3BlcnR5IHByb3BlcnR5OwotICAg
IG1lbXNldChwcm9wZXJ0eS5jc3NWYWx1ZSwgMCwgc2l6ZW9mKHByb3BlcnR5LmNzc1ZhbHVlKSk7
CisgICAgYXV0byYgcHJvcGVydHkgPSBtX3Byb3BlcnRpZXNbaWRdOworICAgIGlmICghaGFzRGVm
ZXJyZWRQcm9wZXJ0eShpZCkpIHsKKyAgICAgICAgaW5pdGlhbGl6ZUNTU1ZhbHVlKHByb3BlcnR5
KTsKKyAgICAgICAgbV9sb3dlc3RTZWVuRGVmZXJyZWRQcm9wZXJ0eSA9IHN0ZDo6bWluKG1fbG93
ZXN0U2VlbkRlZmVycmVkUHJvcGVydHksIGlkKTsKKyAgICAgICAgbV9oaWdoZXN0U2VlbkRlZmVy
cmVkUHJvcGVydHkgPSBzdGQ6Om1heChtX2hpZ2hlc3RTZWVuRGVmZXJyZWRQcm9wZXJ0eSwgaWQp
OworICAgIH0KKyAgICBzZXREZWZlcnJlZFByb3BlcnR5SW5kZXgoaWQsICsrbV9sYXN0SW5kZXhG
b3JEZWZlcnJlZCk7CiAgICAgc2V0UHJvcGVydHlJbnRlcm5hbChwcm9wZXJ0eSwgaWQsIGNzc1Zh
bHVlLCBtYXRjaGVkUHJvcGVydGllcywgY2FzY2FkZUxldmVsKTsKLSAgICBtX2RlZmVycmVkUHJv
cGVydGllc0luZGljZXMuc2V0KGlkLCBtX2RlZmVycmVkUHJvcGVydGllcy5zaXplKCkpOwotICAg
IG1fZGVmZXJyZWRQcm9wZXJ0aWVzLmFwcGVuZChwcm9wZXJ0eSk7CiB9CiAKIApAQCAtMzE1LDUg
KzMyNiwyMCBAQCBQcm9wZXJ0eUNhc2NhZGU6OkRpcmVjdGlvbiBQcm9wZXJ0eUNhc2NhZGU6OmRp
cmVjdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGlyZWN0aW9uOwogfQogCit2b2lkIFByb3Bl
cnR5Q2FzY2FkZTo6c29ydERlZmVycmVkUHJvcGVydHlJRHMoKQoreworICAgIGF1dG8gYmVnaW4g
PSBtX2RlZmVycmVkUHJvcGVydHlJRHMuYmVnaW4oKTsKKyAgICBhdXRvIGVuZCA9IGJlZ2luOwor
ICAgIGZvciAodWludDE2X3QgaWQgPSBtX2xvd2VzdFNlZW5EZWZlcnJlZFByb3BlcnR5OyBpZCA8
PSBtX2hpZ2hlc3RTZWVuRGVmZXJyZWRQcm9wZXJ0eTsgKytpZCkgeworICAgICAgICBhdXRvIHBy
b3BlcnR5SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihpZCk7CisgICAgICAgIGlmICho
YXNEZWZlcnJlZFByb3BlcnR5KHByb3BlcnR5SUQpKQorICAgICAgICAgICAgKmVuZCsrID0gcHJv
cGVydHlJRDsKKyAgICB9CisgICAgbV9zZWVuRGVmZXJyZWRQcm9wZXJ0eUNvdW50ID0gZW5kIC0g
YmVnaW47CisgICAgc3RkOjpzb3J0KGJlZ2luLCBlbmQsIFsmXShhdXRvIGlkMSwgYXV0byBpZDIp
IHsKKyAgICAgICAgcmV0dXJuIGRlZmVycmVkUHJvcGVydHlJbmRleChpZDEpIDwgZGVmZXJyZWRQ
cm9wZXJ0eUluZGV4KGlkMik7CisgICAgfSk7Cit9CisKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1Byb3BlcnR5Q2FzY2FkZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
UHJvcGVydHlDYXNjYWRlLmgKaW5kZXggNzMwODVhNGRkOGY5NmY2ZGU0ZmViNjAyNjc4MWQzMjEw
MmQ2ZGE1Ny4uNzk4M2YxZmQzYjMwYTkwNjJhMDk1MjY1NTA3MGNiZTUwNDk2NmIwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvUHJvcGVydHlDYXNjYWRlLmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGlj
OgogICAgICAgICBTY29wZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWw7CiAgICAgICAgIENhc2Nh
ZGVMYXllclByaW9yaXR5IGNhc2NhZGVMYXllclByaW9yaXR5OwogICAgICAgICBGcm9tU3R5bGVB
dHRyaWJ1dGUgZnJvbVN0eWxlQXR0cmlidXRlOwotICAgICAgICBDU1NWYWx1ZSogY3NzVmFsdWVb
M107IC8vIFZhbHVlcyBmb3IgbGluayBtYXRjaCBzdGF0ZXMgTWF0Y2hEZWZhdWx0LCBNYXRjaExp
bmsgYW5kIE1hdGNoVmlzaXRlZAorICAgICAgICBzdGQ6OmFycmF5PENTU1ZhbHVlKiwgMz4gY3Nz
VmFsdWU7IC8vIFZhbHVlcyBmb3IgbGluayBtYXRjaCBzdGF0ZXMgTWF0Y2hEZWZhdWx0LCBNYXRj
aExpbmsgYW5kIE1hdGNoVmlzaXRlZAogICAgIH07CiAKICAgICBib29sIGhhc05vcm1hbFByb3Bl
cnR5KENTU1Byb3BlcnR5SUQpIGNvbnN0OwpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBoYXNDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBQcm9wZXJ0
eSBjdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmKSBjb25zdDsKIAotICAgIGNvbnN0IFZlY3Rv
cjxQcm9wZXJ0eSwgOD4mIGRlZmVycmVkUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1fZGVm
ZXJyZWRQcm9wZXJ0aWVzOyB9CisgICAgU3Bhbjxjb25zdCBDU1NQcm9wZXJ0eUlEPiBkZWZlcnJl
ZFByb3BlcnR5SURzKCkgY29uc3Q7CiAgICAgY29uc3QgSGFzaE1hcDxBdG9tU3RyaW5nLCBQcm9w
ZXJ0eT4mIGN1c3RvbVByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbVByb3BlcnRp
ZXM7IH0KIAogICAgIERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdDsKQEAgLTg1LDYgKzg1LDEw
IEBAIHByaXZhdGU6CiAKICAgICBEaXJlY3Rpb24gcmVzb2x2ZURpcmVjdGlvbkFuZFdyaXRpbmdN
b2RlKERpcmVjdGlvbiBpbmhlcml0ZWREaXJlY3Rpb24pIGNvbnN0OwogCisgICAgdW5zaWduZWQg
ZGVmZXJyZWRQcm9wZXJ0eUluZGV4KENTU1Byb3BlcnR5SUQpIGNvbnN0OworICAgIHZvaWQgc2V0
RGVmZXJyZWRQcm9wZXJ0eUluZGV4KENTU1Byb3BlcnR5SUQsIHVuc2lnbmVkKTsKKyAgICB2b2lk
IHNvcnREZWZlcnJlZFByb3BlcnR5SURzKCk7CisKICAgICBjb25zdCBNYXRjaFJlc3VsdCYgbV9t
YXRjaFJlc3VsdDsKICAgICBjb25zdCBJbmNsdWRlZFByb3BlcnRpZXMgbV9pbmNsdWRlZFByb3Bl
cnRpZXM7CiAgICAgY29uc3QgQ2FzY2FkZUxldmVsIG1fbWF4aW11bUNhc2NhZGVMZXZlbDsKQEAg
LTkyLDExICs5NiwyNCBAQCBwcml2YXRlOgogICAgIG11dGFibGUgRGlyZWN0aW9uIG1fZGlyZWN0
aW9uOwogICAgIG11dGFibGUgYm9vbCBtX2RpcmVjdGlvbklzVW5yZXNvbHZlZCB7IHRydWUgfTsK
IAotICAgIFByb3BlcnR5IG1fcHJvcGVydGllc1tmaXJzdERlZmVycmVkUHJvcGVydHldOwotICAg
IHN0ZDo6Yml0c2V0PGZpcnN0RGVmZXJyZWRQcm9wZXJ0eT4gbV9wcm9wZXJ0eUlzUHJlc2VudDsK
LQotICAgIFZlY3RvcjxQcm9wZXJ0eSwgOD4gbV9kZWZlcnJlZFByb3BlcnRpZXM7Ci0gICAgSGFz
aE1hcDxDU1NQcm9wZXJ0eUlELCB1bnNpZ25lZD4gbV9kZWZlcnJlZFByb3BlcnRpZXNJbmRpY2Vz
OworICAgIC8vIFRoZSBDU1NQcm9wZXJ0eUlEIGVudW0gaXMgc29ydGVkIGxpa2UgdGhpczoKKyAg
ICAvLyAxLiBDU1NQcm9wZXJ0eUludmFsaWQgYW5kIENTU1Byb3BlcnR5Q3VzdG9tLgorICAgIC8v
IDIuIE5vcm1hbCBwcm9wZXJ0aWVzIChoaWdoIHByaW9yaXR5IG9uZXMgZm9sbG93ZWQgYnkgbG93
IHByaW9yaXR5IG9uZXMpLgorICAgIC8vIDMuIERlZmVycmVkIHByb3BlcnRpZXMuCisgICAgLy8K
KyAgICAvLyAnbV9wcm9wZXJ0aWVzJyBpcyB1c2VkIGZvciBib3RoIG5vcm1hbCBhbmQgZGVmZXJy
ZWQgcHJvcGVydGllcywgc28gaXQgaGFzIHNpemUgJ2xhc3REZWZlcnJlZFByb3BlcnR5ICsgMScu
CisgICAgLy8gSXQgY291bGQgYWN0dWFsbHkgdXNlICdudW1DU1NQcm9wZXJ0aWVzJywgYnV0IHRo
ZW4gd2Ugd291bGQgaGF2ZSB0byBzdWJ0cmFjdCAnZmlyc3RDU1NQcm9wZXJ0eScsIHdoaWNoIG1h
eSBub3QgYmUgd29ydGggaXQuCisgICAgLy8gJ21fcHJvcGVydHlJc1ByZXNlbnQnIGlzIG5vdCB1
c2VkIGZvciBkZWZlcnJlZCBwcm9wZXJ0aWVzLCBzbyB3ZSBvbmx5IG5lZWQgdG8gY292ZXIgdXAg
dG8gdGhlIGxhc3QgbG93IHByaW9yaXR5IG9uZS4KKyAgICBzdGQ6OmFycmF5PFByb3BlcnR5LCBs
YXN0RGVmZXJyZWRQcm9wZXJ0eSArIDE+IG1fcHJvcGVydGllczsKKyAgICBzdGQ6OmJpdHNldDxs
YXN0TG93UHJpb3JpdHlQcm9wZXJ0eSArIDE+IG1fcHJvcGVydHlJc1ByZXNlbnQ7CisKKyAgICBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGRlZmVycmVkUHJvcGVydHlDb3VudCA9IGxhc3REZWZl
cnJlZFByb3BlcnR5IC0gZmlyc3REZWZlcnJlZFByb3BlcnR5ICsgMTsKKyAgICBzdGQ6OmFycmF5
PHVuc2lnbmVkLCBkZWZlcnJlZFByb3BlcnR5Q291bnQ+IG1fZGVmZXJyZWRQcm9wZXJ0eUluZGlj
ZXMgeyB9OworICAgIHVuc2lnbmVkIG1fbGFzdEluZGV4Rm9yRGVmZXJyZWQgeyAwIH07CisgICAg
c3RkOjphcnJheTxDU1NQcm9wZXJ0eUlELCBkZWZlcnJlZFByb3BlcnR5Q291bnQ+IG1fZGVmZXJy
ZWRQcm9wZXJ0eUlEcyB7IH07CisgICAgdW5zaWduZWQgbV9zZWVuRGVmZXJyZWRQcm9wZXJ0eUNv
dW50IHsgMCB9OworICAgIENTU1Byb3BlcnR5SUQgbV9sb3dlc3RTZWVuRGVmZXJyZWRQcm9wZXJ0
eSB7IGxhc3REZWZlcnJlZFByb3BlcnR5IH07CisgICAgQ1NTUHJvcGVydHlJRCBtX2hpZ2hlc3RT
ZWVuRGVmZXJyZWRQcm9wZXJ0eSB7IGZpcnN0RGVmZXJyZWRQcm9wZXJ0eSB9OwogCiAgICAgSGFz
aE1hcDxBdG9tU3RyaW5nLCBQcm9wZXJ0eT4gbV9jdXN0b21Qcm9wZXJ0aWVzOwogfTsKQEAgLTEx
MywxOCArMTMwLDM0IEBAIGlubGluZSBjb25zdCBQcm9wZXJ0eUNhc2NhZGU6OlByb3BlcnR5JiBQ
cm9wZXJ0eUNhc2NhZGU6Om5vcm1hbFByb3BlcnR5KENTU1Byb3BlCiAgICAgcmV0dXJuIG1fcHJv
cGVydGllc1tpZF07CiB9CiAKLWlubGluZSBib29sIFByb3BlcnR5Q2FzY2FkZTo6aGFzRGVmZXJy
ZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkKSBjb25zdAoraW5saW5lIHVuc2lnbmVkIFByb3Bl
cnR5Q2FzY2FkZTo6ZGVmZXJyZWRQcm9wZXJ0eUluZGV4KENTU1Byb3BlcnR5SUQgaWQpIGNvbnN0
Cit7CisgICAgQVNTRVJUKGlkID49IGZpcnN0RGVmZXJyZWRQcm9wZXJ0eSk7CisgICAgQVNTRVJU
KGlkIDw9IGxhc3REZWZlcnJlZFByb3BlcnR5KTsKKyAgICByZXR1cm4gbV9kZWZlcnJlZFByb3Bl
cnR5SW5kaWNlc1tpZCAtIGZpcnN0RGVmZXJyZWRQcm9wZXJ0eV07Cit9CisKK2lubGluZSB2b2lk
IFByb3BlcnR5Q2FzY2FkZTo6c2V0RGVmZXJyZWRQcm9wZXJ0eUluZGV4KENTU1Byb3BlcnR5SUQg
aWQsIHVuc2lnbmVkIGluZGV4KQogewogICAgIEFTU0VSVChpZCA+PSBmaXJzdERlZmVycmVkUHJv
cGVydHkpOwotICAgIHJldHVybiBtX2RlZmVycmVkUHJvcGVydGllc0luZGljZXMuY29udGFpbnMo
aWQpOworICAgIEFTU0VSVChpZCA8PSBsYXN0RGVmZXJyZWRQcm9wZXJ0eSk7CisgICAgbV9kZWZl
cnJlZFByb3BlcnR5SW5kaWNlc1tpZCAtIGZpcnN0RGVmZXJyZWRQcm9wZXJ0eV0gPSBpbmRleDsK
K30KKworaW5saW5lIGJvb2wgUHJvcGVydHlDYXNjYWRlOjpoYXNEZWZlcnJlZFByb3BlcnR5KENT
U1Byb3BlcnR5SUQgaWQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRlZmVycmVkUHJvcGVydHlJbmRl
eChpZCk7CiB9CiAKIGlubGluZSBjb25zdCBQcm9wZXJ0eUNhc2NhZGU6OlByb3BlcnR5JiBQcm9w
ZXJ0eUNhc2NhZGU6OmRlZmVycmVkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCkgY29uc3QKIHsK
ICAgICBBU1NFUlQoaGFzRGVmZXJyZWRQcm9wZXJ0eShpZCkpOwotICAgIHVuc2lnbmVkIGluZGV4
ID0gbV9kZWZlcnJlZFByb3BlcnRpZXNJbmRpY2VzLmdldChpZCk7Ci0gICAgQVNTRVJUKGluZGV4
IDwgbV9kZWZlcnJlZFByb3BlcnRpZXMuc2l6ZSgpKTsKLSAgICByZXR1cm4gbV9kZWZlcnJlZFBy
b3BlcnRpZXNbaW5kZXhdOworICAgIHJldHVybiBtX3Byb3BlcnRpZXNbaWRdOworfQorCitpbmxp
bmUgU3Bhbjxjb25zdCBDU1NQcm9wZXJ0eUlEPiBQcm9wZXJ0eUNhc2NhZGU6OmRlZmVycmVkUHJv
cGVydHlJRHMoKSBjb25zdAoreworICAgIHJldHVybiB7IG1fZGVmZXJyZWRQcm9wZXJ0eUlEcy5k
YXRhKCksIG1fc2VlbkRlZmVycmVkUHJvcGVydHlDb3VudCB9OwogfQogCiBpbmxpbmUgYm9vbCBQ
cm9wZXJ0eUNhc2NhZGU6Omhhc0N1c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3BwCmluZGV4IDg3M2FlY2UyOWY0ZDhi
NjVhNmZjMDE3YzRlNDQwMjIyNjIwZDllZWEuLjMxMDMzZTY5NDk0NTFlOWU5MjUwODE5MTI2MDI0
MWU2YTg4M2UyZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcApAQCAtMTIz
LDggKzEyMyw4IEBAIHZvaWQgQnVpbGRlcjo6YXBwbHlOb25IaWdoUHJpb3JpdHlQcm9wZXJ0aWVz
KCkKIAogdm9pZCBCdWlsZGVyOjphcHBseURlZmVycmVkUHJvcGVydGllcygpCiB7Ci0gICAgZm9y
IChhdXRvJiBwcm9wZXJ0eSA6IG1fY2FzY2FkZS5kZWZlcnJlZFByb3BlcnRpZXMoKSkKLSAgICAg
ICAgYXBwbHlDYXNjYWRlUHJvcGVydHkocHJvcGVydHkpOworICAgIGZvciAoYXV0byBpZCA6IG1f
Y2FzY2FkZS5kZWZlcnJlZFByb3BlcnR5SURzKCkpCisgICAgICAgIGFwcGx5Q2FzY2FkZVByb3Bl
cnR5KG1fY2FzY2FkZS5kZWZlcnJlZFByb3BlcnR5KGlkKSk7CiB9CiAKIHZvaWQgQnVpbGRlcjo6
YXBwbHlQcm9wZXJ0aWVzKGludCBmaXJzdFByb3BlcnR5LCBpbnQgbGFzdFByb3BlcnR5KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>