<?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>200565</bug_id>
          
          <creation_ts>2019-08-09 01:14:12 -0700</creation_ts>
          <short_desc>XMLHttpRequest: getAllResponseHeaders() sorting</short_desc>
          <delta_ts>2020-03-23 12:32:19 -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>DOM</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anne van Kesteren">annevk</reporter>
          <assigned_to name="Rob Buis">rbuis</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>rbuis</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1559828</commentid>
    <comment_count>0</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2019-08-09 01:14:12 -0700</bug_when>
    <thetext>As discussed in https://github.com/whatwg/xhr/issues/248 getAllResponseHeaders() should sort headers using the ASCII-uppercase header name as key (the end result is still ASCII-lowercase header names). This should not affect the Headers object. 

(Perhaps there can be a Fetch Component for issues like this?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632270</commentid>
    <comment_count>1</comment_count>
      <attachid>394124</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-03-20 14:12:51 -0700</bug_when>
    <thetext>Created attachment 394124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632296</commentid>
    <comment_count>2</comment_count>
      <attachid>394132</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-03-20 14:49:24 -0700</bug_when>
    <thetext>Created attachment 394132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632307</commentid>
    <comment_count>3</comment_count>
      <attachid>394132</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-20 15:00:33 -0700</bug_when>
    <thetext>Comment on attachment 394132
Patch

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

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:822
&gt; +        for (auto&amp; header : m_response.httpHeaderFields())
&gt; +            headers.uncheckedAppend(std::make_pair(header.key.convertToASCIIUppercase(), header.value));
&gt; +
&gt; +        std::sort(headers.begin(), headers.end(), [] (const std::pair&lt;String, String&gt;&amp; x, const std::pair&lt;String, String&gt;&amp; y) {
&gt; +            return WTF::codePointCompareLessThan(x.first, y.first);
&gt; +        });

Seems a little silly that we have to actually make a copy of the string converted to ASCII uppercase just to do *comparison* based on the uppercased letters; should be easy to write a custom codePointCompareLessThan that converts ASCII characters to uppercase one by one as we go. But fine for now, I suppose.

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:832
&gt; +        for (auto&amp; header : headers) {
&gt; +            stringBuilder.append(header.first.convertToASCIILowercase());
&gt; +            stringBuilder.append(&apos;:&apos;);
&gt; +            stringBuilder.append(&apos; &apos;);
&gt; +            stringBuilder.append(header.second);
&gt; +            stringBuilder.append(&apos;\r&apos;);
&gt; +            stringBuilder.append(&apos;\n&apos;);
&gt; +        }

Here’s how to write this in modern code:

    for (auto&amp; header : headers)
        stringBuilder.append(header.first.convertToASCIILowercase(), &quot;: &quot;, header.second, &quot;\r\n&quot;);

It’s not only easier to read than the old code but also more efficient.

If we really wanted to go crazy with optimization we could come up with a manipulator that allows you to append a string and convert it ASCII lowercase in the process of doing the appending without allocating and destroying a string every time. But we probably don’t have it already sitting on the shelf.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632310</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-20 15:07:52 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; If we really wanted to go crazy with optimization we could come up with a
&gt; manipulator that allows you to append a string and convert it ASCII
&gt; lowercase in the process of doing the appending without allocating and
&gt; destroying a string every time. But we probably don’t have it already
&gt; sitting on the shelf.

Let me know if you decide you really want to do that optimization. Want to learn how to write this. It would integrate with string concatenation the way the pad() and PaddingSpecification from StringConcatenate.h does, although much more simply. The actual concatenation would be much like the code in StringTypeAdapter&lt;String, void&gt; except instead of StringView::getCharactersWithUpconvert we&apos;d write a function that calls toASCIIUpper on each character as we go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632482</commentid>
    <comment_count>5</comment_count>
      <attachid>394168</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-03-21 09:39:50 -0700</bug_when>
    <thetext>Created attachment 394168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632509</commentid>
    <comment_count>6</comment_count>
      <attachid>394172</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-03-21 12:01:16 -0700</bug_when>
    <thetext>Created attachment 394172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632525</commentid>
    <comment_count>7</comment_count>
      <attachid>394132</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-03-21 14:07:54 -0700</bug_when>
    <thetext>Comment on attachment 394132
Patch

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

&gt;&gt; Source/WebCore/xml/XMLHttpRequest.cpp:832
&gt;&gt; +        }
&gt; 
&gt; Here’s how to write this in modern code:
&gt; 
&gt;     for (auto&amp; header : headers)
&gt;         stringBuilder.append(header.first.convertToASCIILowercase(), &quot;: &quot;, header.second, &quot;\r\n&quot;);
&gt; 
&gt; It’s not only easier to read than the old code but also more efficient.
&gt; 
&gt; If we really wanted to go crazy with optimization we could come up with a manipulator that allows you to append a string and convert it ASCII lowercase in the process of doing the appending without allocating and destroying a string every time. But we probably don’t have it already sitting on the shelf.

I took a stab at that, let me know what you tihink.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632542</commentid>
    <comment_count>8</comment_count>
      <attachid>394172</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-21 17:16:24 -0700</bug_when>
    <thetext>Comment on attachment 394172
Patch

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

Neat that you did the case conversion manipulator! Nice job, too.

&gt; Source/WTF/wtf/text/StringConcatenate.h:290
&gt; +struct ToASCIICaseConvertor {

Seems like this name should be ASCIICaseConverter or ASCIICaseConversionSpecification. I don’t know why we’d use the unconventional spelling &quot;convertor&quot; instead of the more conventional &quot;converter&quot; and I don’t think the converter converts &quot;to&quot; ASCII case, it converts ASCII case.

&gt; Source/WTF/wtf/text/StringConcatenate.h:299
&gt; +template&lt;StringView::CaseConvertType type&gt;
&gt; +ToASCIICaseConvertor toASCIICase(StringView string)
&gt; +{
&gt; +    return { type, string };
&gt; +}

I think it would be more elegant to have manipulators named &quot;lowercase&quot; and &quot;uppercase&quot; or &quot;lowercased&quot; and &quot;uppercased&quot; rather than toASCIICase&lt;StringView::CaseConvertType::Lower&gt; and toASCIICase&lt;StringView::CaseConvertType::Upper&gt;. The analogy here is with &quot;pad&quot;.

&gt; Source/WTF/wtf/text/StringConcatenate.h:313
&gt; +        WTF_STRINGTYPEADAPTER_COPIED_WTF_STRING();

This is not correct and should be omitted.

&gt; Source/WTF/wtf/text/StringConcatenate.h:317
&gt; +    const ToASCIICaseConvertor&amp; m_toASCIICaseConvertor;

Just m_convertor or m_converter would be a fine name. There’s plenty of context and we don’t need to repeat it all.

&gt; Source/WTF/wtf/text/StringView.cpp:249
&gt; +    static_assert(std::is_same&lt;SourceCharacterType, LChar&gt;::value || std::is_same&lt;SourceCharacterType, UChar&gt;::value);
&gt; +    static_assert(std::is_same&lt;DestinationCharacterType, LChar&gt;::value || std::is_same&lt;DestinationCharacterType, UChar&gt;::value);

Could also static_assert that sizeof(DestinationCharacterType) &lt;= sizeof(SourceCharacterType), since this would not work properly if destination was LChar and source was UChar.

&gt; Source/WTF/wtf/text/StringView.cpp:251
&gt; +        destination[i] = type == StringView::CaseConvertType::Lower ? toASCIILower(source[i]) : toASCIIUpper(source[i]);

Maybe this conditional should go outside the loop? I am not sure the compiler will be smart enough to hoist the branch out of the loop.

&gt; Source/WTF/wtf/text/StringView.h:123
&gt; +    enum class CaseConvertType { Upper, Lower };

It’s quite inelegant that we have this separately in every string class! Should clean that up at some point.

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:818
&gt; +            headers.uncheckedAppend(std::make_pair(header.key.convertToASCIIUppercase(), header.value));

No need to convert to ASCII uppercase. We can write a version of WTF::codePointCompareLessThan that does that as part of the comparison process. I mentioned that in my last review. Did you decide against it, or just miss the comment?

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:821
&gt; +            return WTF::codePointCompareLessThan(x.first, y.first);

Here’s one cut at it:

    unsigned xLength = x.first.length();
    unsigned yLength = y.first.length();
    unsigned commonLength = std::min(xLength, yLength);
    for (unsigned i = 0; i &lt; commonLength; ++i) {
        auto xCharacter = toASCIIUpper(x.first[i]);
        auto yCharacter = toASCIIUpper(y.first[i]);
        if (xCharacter != yCharacter)
            return xCharacter &lt; yCharacter);
    }
    return xLength &lt; yLength;

Could optimize more, but maybe we don’t need to. The big win is not copying the strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632678</commentid>
    <comment_count>9</comment_count>
      <attachid>394227</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-03-22 13:26:02 -0700</bug_when>
    <thetext>Created attachment 394227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632682</commentid>
    <comment_count>10</comment_count>
      <attachid>394227</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-22 13:40:39 -0700</bug_when>
    <thetext>Comment on attachment 394227
Patch

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

&gt; Source/WTF/wtf/text/StringConcatenate.h:290
&gt; +struct ToASCIICaseConverter {

I suggest removing the &quot;To&quot; from this name.

&gt; Source/WTF/wtf/text/StringConcatenate.h:291
&gt; +    StringView::CaseConvertType caseConvertType;

How about just the name &quot;type&quot; for this data member?

&gt; Source/WTF/wtf/text/StringConcatenate.h:306
&gt; +    bool is8Bit() const { return m_converter.string.isNull() || m_converter.string.is8Bit(); }

No need for the isNull check here. Both String::is8Bit and StringView::is8Bit already return true for null strings.

&gt; Source/WTF/wtf/text/StringConcatenate.h:394
&gt;  using WTF::makeString;
&gt;  using WTF::pad;
&gt; +using WTF::lowercase;
&gt; +using WTF::uppercase;

Alphabetical order would put lowercase before makeString, not after pad.

&gt; Source/WTF/wtf/text/StringView.cpp:250
&gt; +    static_assert(std::is_same&lt;DestinationCharacterType, LChar&gt;::value || std::is_same&lt;DestinationCharacterType, UChar&gt;::value);

You didn’t add the static_assert I suggested.

    static_assert(sizeof(DestinationCharacterType) &lt;= sizeof(SourceCharacterType));

Did you try and decide not to?

&gt; Source/WTF/wtf/text/StringView.cpp:251
&gt; +    auto fun = (type == StringView::CaseConvertType::Lower) ? toASCIILower&lt;SourceCharacterType&gt; : toASCIIUpper&lt;SourceCharacterType&gt;;

WebKit coding style says use words, to &quot;function&quot; rather than &quot;fun&quot;.

&gt; Source/WTF/wtf/text/StringView.cpp:406
&gt; +ToASCIICaseConverter lowercase(StringView string)
&gt; +{
&gt; +    return { StringView::CaseConvertType::Lower, string };
&gt; +}
&gt; +
&gt; +ToASCIICaseConverter uppercase(StringView string)
&gt; +{
&gt; +    return { StringView::CaseConvertType::Upper, string };
&gt; +}

I don’t think these will work correctly. We’re returning a reference to the argument, and that argument will be destroyed when the function returns. I think these need to take const StringView&amp; instead of StringView. Also probably should make these inline.

&gt; Source/WTF/wtf/text/WTFString.h:439
&gt; +bool codePointCompareLessThanCaseInsensitive(const String&amp;, const String&amp;);

This name isn’t right.

1) Case insensitive is not the same as ASCII case insensitive.
2) ASCII case insensitive is a way of comparing for equality, not ordering. When doing a code point comparison, it matters whether the ASCII letters are being uppercased or lowercased -- those two orderings are different when letters are mixed with non-letters.

So we need a name that mentions ASCII and mentions uppercasing.

I’d be tempted to just put this function in place in the file using it and not adding it to String.h at all.

&gt; Source/WTF/wtf/text/WTFString.h:614
&gt; +inline bool codePointCompareLessThanCaseInsensitive(const String&amp; a, const String&amp; b)
&gt; +{
&gt; +    unsigned xLength = a.length();
&gt; +    unsigned yLength = b.length();
&gt; +    unsigned commonLength = std::min(xLength, yLength);
&gt; +    for (unsigned i = 0; i &lt; commonLength; ++i) {
&gt; +        auto xCharacter = toASCIIUpper(a[i]);
&gt; +        auto yCharacter = toASCIIUpper(b[i]);
&gt; +        if (xCharacter != yCharacter)
&gt; +            return xCharacter &lt; yCharacter;
&gt; +    }
&gt; +    return xLength &lt; yLength;
&gt; +}

This is a relatively unoptimized function, which I think is fine for what we’re using it for. But it seems wasteful to make it inlined since we aren’t doing the other kinds of optimizations on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632745</commentid>
    <comment_count>11</comment_count>
      <attachid>394242</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-03-23 00:58:50 -0700</bug_when>
    <thetext>Created attachment 394242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632863</commentid>
    <comment_count>12</comment_count>
      <attachid>394227</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-03-23 09:11:12 -0700</bug_when>
    <thetext>Comment on attachment 394227
Patch

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

&gt;&gt; Source/WTF/wtf/text/StringConcatenate.h:290
&gt;&gt; +struct ToASCIICaseConverter {
&gt; 
&gt; I suggest removing the &quot;To&quot; from this name.

Done.

&gt;&gt; Source/WTF/wtf/text/StringConcatenate.h:291
&gt;&gt; +    StringView::CaseConvertType caseConvertType;
&gt; 
&gt; How about just the name &quot;type&quot; for this data member?

Sure, done.

&gt;&gt; Source/WTF/wtf/text/StringConcatenate.h:306
&gt;&gt; +    bool is8Bit() const { return m_converter.string.isNull() || m_converter.string.is8Bit(); }
&gt; 
&gt; No need for the isNull check here. Both String::is8Bit and StringView::is8Bit already return true for null strings.

Done.

&gt;&gt; Source/WTF/wtf/text/StringConcatenate.h:394
&gt;&gt; +using WTF::uppercase;
&gt; 
&gt; Alphabetical order would put lowercase before makeString, not after pad.

Done.

&gt;&gt; Source/WTF/wtf/text/StringView.cpp:250
&gt;&gt; +    static_assert(std::is_same&lt;DestinationCharacterType, LChar&gt;::value || std::is_same&lt;DestinationCharacterType, UChar&gt;::value);
&gt; 
&gt; You didn’t add the static_assert I suggested.
&gt; 
&gt;     static_assert(sizeof(DestinationCharacterType) &lt;= sizeof(SourceCharacterType));
&gt; 
&gt; Did you try and decide not to?

I tried and hit the assert. Let me check one more time...

&gt;&gt; Source/WTF/wtf/text/StringView.cpp:251
&gt;&gt; +    auto fun = (type == StringView::CaseConvertType::Lower) ? toASCIILower&lt;SourceCharacterType&gt; : toASCIIUpper&lt;SourceCharacterType&gt;;
&gt; 
&gt; WebKit coding style says use words, to &quot;function&quot; rather than &quot;fun&quot;.

Can&apos;t we have fun? :) Fixed.

&gt;&gt; Source/WTF/wtf/text/StringView.cpp:406
&gt;&gt; +}
&gt; 
&gt; I don’t think these will work correctly. We’re returning a reference to the argument, and that argument will be destroyed when the function returns. I think these need to take const StringView&amp; instead of StringView. Also probably should make these inline.

Done.

&gt;&gt; Source/WTF/wtf/text/WTFString.h:439
&gt;&gt; +bool codePointCompareLessThanCaseInsensitive(const String&amp;, const String&amp;);
&gt; 
&gt; This name isn’t right.
&gt; 
&gt; 1) Case insensitive is not the same as ASCII case insensitive.
&gt; 2) ASCII case insensitive is a way of comparing for equality, not ordering. When doing a code point comparison, it matters whether the ASCII letters are being uppercased or lowercased -- those two orderings are different when letters are mixed with non-letters.
&gt; 
&gt; So we need a name that mentions ASCII and mentions uppercasing.
&gt; 
&gt; I’d be tempted to just put this function in place in the file using it and not adding it to String.h at all.

I did inline it in the end.

&gt;&gt; Source/WTF/wtf/text/WTFString.h:614
&gt;&gt; +}
&gt; 
&gt; This is a relatively unoptimized function, which I think is fine for what we’re using it for. But it seems wasteful to make it inlined since we aren’t doing the other kinds of optimizations on it.

Okay, not relevant anymore since it got inlined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632864</commentid>
    <comment_count>13</comment_count>
      <attachid>394227</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-23 09:12:44 -0700</bug_when>
    <thetext>Comment on attachment 394227
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/text/StringView.cpp:250
&gt;&gt;&gt; +    static_assert(std::is_same&lt;DestinationCharacterType, LChar&gt;::value || std::is_same&lt;DestinationCharacterType, UChar&gt;::value);
&gt;&gt; 
&gt;&gt; You didn’t add the static_assert I suggested.
&gt;&gt; 
&gt;&gt;     static_assert(sizeof(DestinationCharacterType) &lt;= sizeof(SourceCharacterType));
&gt;&gt; 
&gt;&gt; Did you try and decide not to?
&gt; 
&gt; I tried and hit the assert. Let me check one more time...

Oops, wrote that backwards. It’s &gt;=.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632867</commentid>
    <comment_count>14</comment_count>
      <attachid>394264</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-03-23 09:16:41 -0700</bug_when>
    <thetext>Created attachment 394264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632936</commentid>
    <comment_count>15</comment_count>
      <attachid>394227</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2020-03-23 11:11:27 -0700</bug_when>
    <thetext>Comment on attachment 394227
Patch

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

&gt;&gt;&gt;&gt; Source/WTF/wtf/text/StringView.cpp:250
&gt;&gt;&gt;&gt; +    static_assert(std::is_same&lt;DestinationCharacterType, LChar&gt;::value || std::is_same&lt;DestinationCharacterType, UChar&gt;::value);
&gt;&gt;&gt; 
&gt;&gt;&gt; You didn’t add the static_assert I suggested.
&gt;&gt;&gt; 
&gt;&gt;&gt;     static_assert(sizeof(DestinationCharacterType) &lt;= sizeof(SourceCharacterType));
&gt;&gt;&gt; 
&gt;&gt;&gt; Did you try and decide not to?
&gt;&gt; 
&gt;&gt; I tried and hit the assert. Let me check one more time...
&gt; 
&gt; Oops, wrote that backwards. It’s &gt;=.

Aha! Fixed. Could you do one final check?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632951</commentid>
    <comment_count>16</comment_count>
      <attachid>394264</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-23 11:39:14 -0700</bug_when>
    <thetext>Comment on attachment 394264
Patch

This all looks great</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632970</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-23 12:31:41 -0700</bug_when>
    <thetext>Committed r258866: &lt;https://trac.webkit.org/changeset/258866&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 394264.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632972</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-23 12:32:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/60786515&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394124</attachid>
            <date>2020-03-20 14:12:51 -0700</date>
            <delta_ts>2020-03-20 14:49:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200565-20200320221250.patch</filename>
            <type>text/plain</type>
            <size>4736</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU2M2M2NjgzOThiOTAz
NmIxY2FmMzllMWE0ZGQwNjMxYjkyNTBkOC4uNzc2ZTk1NDIyZjFmNzE2OTY4NjdmYjUxYzZlNmM1
OWNlZmMxNzY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTAzLTIwICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3Q6IGdldEFs
bFJlc3BvbnNlSGVhZGVycygpIHNvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMDU2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNvcnQgaGVhZGVycyB1c2luZyB0aGUgQVNDSUktdXBwZXJjYXNl
IGhlYWRlciBuYW1lIGFzIGtleSBidXQgdXNlIEFTQ0lJLWxvd2VyY2FzZSBoZWFkZXIKKyAgICAg
ICAgbmFtZXMgaW4gdGhlIHN0cmluZyByZXN1bHQuCisKKyAgICAgICAgTmVoYXZpb3IgbWF0Y2hl
cyBGaXJlZm94IGFuZCBDaHJvbWUuCisKKyAgICAgICAgVGVzdDogaW1wb3J0ZWQvd2ViLXBsYXRm
b3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMuaHRtCisKKyAgICAgICAgWzFdIGh0
dHBzOi8veGhyLnNwZWMud2hhdHdnLm9yZy8jZG9tLXhtbGh0dHByZXF1ZXN0LWdldGFsbHJlc3Bv
bnNlaGVhZGVycworCisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0
dHBSZXF1ZXN0OjpnZXRBbGxSZXNwb25zZUhlYWRlcnMgY29uc3QpOgorCiAyMDIwLTAzLTIwICBK
YWNrIExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIE51bGxwdHIgY3Jh
c2ggaW4gUmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3RCaXRmaWVsZHM6OmlzQm94IHdoZW4gY3Vy
cmVudCByZW5kZXJlciBpcyB0aGUgUmVuZGVyVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKaW5kZXggYzZhNWJkNzkwMjgzMTc0NzMyZjViYmE3NzllMGZkYTljNGUyNWM0Ny4u
MjVjNzQ1MTk0ZjdlYWNjYTZjMzMxNmYyNzU3YTlkOGFlMTVjY2YyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC04MTEsMjIgKzgxMSwyNSBAQCBTdHJpbmcgWE1MSHR0
cFJlcXVlc3Q6OmdldEFsbFJlc3BvbnNlSGVhZGVycygpIGNvbnN0CiAgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogCiAgICAgaWYgKCFtX2FsbFJlc3BvbnNlSGVhZGVycykgewotICAgICAg
ICBWZWN0b3I8U3RyaW5nPiBoZWFkZXJzOworICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmlu
ZywgU3RyaW5nPj4gaGVhZGVyczsKICAgICAgICAgaGVhZGVycy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLnNpemUoKSk7CiAKLSAgICAgICAgZm9y
IChhdXRvJiBoZWFkZXIgOiBtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKSkgewotICAgICAg
ICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoaGVhZGVyLmtleS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKLSAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKGhlYWRlci52YWx1ZSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZExpdGVyYWwoIlxyXG4iKTsKLSAgICAgICAgICAgIGhlYWRlcnMudW5jaGVja2Vk
QXBwZW5kKHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3Rk
Ojpzb3J0KGhlYWRlcnMuYmVnaW4oKSwgaGVhZGVycy5lbmQoKSwgV1RGOjpjb2RlUG9pbnRDb21w
YXJlTGVzc1RoYW4pOworICAgICAgICBmb3IgKGF1dG8mIGhlYWRlciA6IG1fcmVzcG9uc2UuaHR0
cEhlYWRlckZpZWxkcygpKQorICAgICAgICAgICAgaGVhZGVycy51bmNoZWNrZWRBcHBlbmQoc3Rk
OjptYWtlX3BhaXIoaGVhZGVyLmtleS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpLCBoZWFkZXIu
dmFsdWUpKTsKKworICAgICAgICBzdGQ6OnNvcnQoaGVhZGVycy5iZWdpbigpLCBoZWFkZXJzLmVu
ZCgpLCBbXSAoY29uc3Qgc3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPiYgeCwgY29uc3Qgc3RkOjpw
YWlyPFN0cmluZywgU3RyaW5nPiYgeSkgeworICAgICAgICAgICAgcmV0dXJuIFdURjo6Y29kZVBv
aW50Q29tcGFyZUxlc3NUaGFuKHguZmlyc3QsIHkuZmlyc3QpOworICAgICAgICB9KTsKIAogICAg
ICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIGZvciAoYXV0byYgaGVh
ZGVyIDogaGVhZGVycykKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGhlYWRlcik7
CisgICAgICAgIGZvciAoYXV0byYgaGVhZGVyIDogaGVhZGVycykgeworICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoaGVhZGVyLmZpcnN0LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkp
OworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJzonKTsKKyAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChoZWFkZXIuc2Vjb25kKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdccicp
OworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgICAgIH0KICAg
ICAgICAgbV9hbGxSZXNwb25zZUhlYWRlcnMgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA5Y2I0YTA3MGRmYzc4ZTVm
YTA0Mjk4YTc5ZWM5ZjU5NTBkNTAwZjRjLi4wMDg2YzkzNDBiMjI2YjQyNWJlNzA1Y2YxZGZlNGJk
NDNmMzU3Mjk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAyMC0wMy0yMCAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFhN
TEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSBzb3J0aW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NjUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgaW1wcm92ZWQgdGVz
dCByZXN1bHQuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3Bv
bnNlaGVhZGVycy1leHBlY3RlZC50eHQ6CisKIDIwMjAtMDMtMTkgIEphdmllciBGZXJuYW5kZXog
IDxqZmVybmFuZGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBDaGFuZ2VzIGlu
IGdyaWQgb3IgZWxlbWVudHMgaW5zaWRlIHRoZSBncmlkIGFmZmVjdHMgbWFyZ2luIG9uIG90aGVy
IGVsZW1lbnRzIGluIHRoZSBncmlkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0
YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dAppbmRleCBhMTBmOWYwMzBmNmY2YzVmNDVh
OGU4MGE0YTYwODc1ZTBlOGE0MzQ5Li40YjAzODFlMjEyZmE5YzY2ZDhkMmU3NTBlYmIyNzY4NjRl
YzhlN2M3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNl
aGVhZGVycy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiAKLUZBSUwgWE1MSHR0cFJlcXVl
c3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhbHNv
LWhlcmU6IE1yLiBQQlxyXG5ld29rOiBsZWdvXHJcbmZvby10ZXN0OiAxLCAyXHJcbl9fY3VzdG9t
OiB0b2tlblxyXG4iIGJ1dCBnb3QgIl9fY3VzdG9tOiB0b2tlblxyXG5hbHNvLWhlcmU6IE1yLiBQ
QlxyXG5ld29rOiBsZWdvXHJcbmZvby10ZXN0OiAxLCAyXHJcbiIKK1BBU1MgWE1MSHR0cFJlcXVl
c3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIAogUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxs
UmVzcG9uc2VIZWFkZXJzKCkgMSAKIFBBU1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNl
SGVhZGVycygpIDIgCiBQQVNTIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMo
KSAzIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394132</attachid>
            <date>2020-03-20 14:49:24 -0700</date>
            <delta_ts>2020-03-21 09:39:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200565-20200320224922.patch</filename>
            <type>text/plain</type>
            <size>8584</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU2M2M2NjgzOThiOTAz
NmIxY2FmMzllMWE0ZGQwNjMxYjkyNTBkOC4uNzc2ZTk1NDIyZjFmNzE2OTY4NjdmYjUxYzZlNmM1
OWNlZmMxNzY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTAzLTIwICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3Q6IGdldEFs
bFJlc3BvbnNlSGVhZGVycygpIHNvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMDU2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNvcnQgaGVhZGVycyB1c2luZyB0aGUgQVNDSUktdXBwZXJjYXNl
IGhlYWRlciBuYW1lIGFzIGtleSBidXQgdXNlIEFTQ0lJLWxvd2VyY2FzZSBoZWFkZXIKKyAgICAg
ICAgbmFtZXMgaW4gdGhlIHN0cmluZyByZXN1bHQuCisKKyAgICAgICAgTmVoYXZpb3IgbWF0Y2hl
cyBGaXJlZm94IGFuZCBDaHJvbWUuCisKKyAgICAgICAgVGVzdDogaW1wb3J0ZWQvd2ViLXBsYXRm
b3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMuaHRtCisKKyAgICAgICAgWzFdIGh0
dHBzOi8veGhyLnNwZWMud2hhdHdnLm9yZy8jZG9tLXhtbGh0dHByZXF1ZXN0LWdldGFsbHJlc3Bv
bnNlaGVhZGVycworCisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0
dHBSZXF1ZXN0OjpnZXRBbGxSZXNwb25zZUhlYWRlcnMgY29uc3QpOgorCiAyMDIwLTAzLTIwICBK
YWNrIExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIE51bGxwdHIgY3Jh
c2ggaW4gUmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3RCaXRmaWVsZHM6OmlzQm94IHdoZW4gY3Vy
cmVudCByZW5kZXJlciBpcyB0aGUgUmVuZGVyVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKaW5kZXggYzZhNWJkNzkwMjgzMTc0NzMyZjViYmE3NzllMGZkYTljNGUyNWM0Ny4u
MjVjNzQ1MTk0ZjdlYWNjYTZjMzMxNmYyNzU3YTlkOGFlMTVjY2YyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC04MTEsMjIgKzgxMSwyNSBAQCBTdHJpbmcgWE1MSHR0
cFJlcXVlc3Q6OmdldEFsbFJlc3BvbnNlSGVhZGVycygpIGNvbnN0CiAgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogCiAgICAgaWYgKCFtX2FsbFJlc3BvbnNlSGVhZGVycykgewotICAgICAg
ICBWZWN0b3I8U3RyaW5nPiBoZWFkZXJzOworICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmlu
ZywgU3RyaW5nPj4gaGVhZGVyczsKICAgICAgICAgaGVhZGVycy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLnNpemUoKSk7CiAKLSAgICAgICAgZm9y
IChhdXRvJiBoZWFkZXIgOiBtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKSkgewotICAgICAg
ICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoaGVhZGVyLmtleS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKLSAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKGhlYWRlci52YWx1ZSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZExpdGVyYWwoIlxyXG4iKTsKLSAgICAgICAgICAgIGhlYWRlcnMudW5jaGVja2Vk
QXBwZW5kKHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3Rk
Ojpzb3J0KGhlYWRlcnMuYmVnaW4oKSwgaGVhZGVycy5lbmQoKSwgV1RGOjpjb2RlUG9pbnRDb21w
YXJlTGVzc1RoYW4pOworICAgICAgICBmb3IgKGF1dG8mIGhlYWRlciA6IG1fcmVzcG9uc2UuaHR0
cEhlYWRlckZpZWxkcygpKQorICAgICAgICAgICAgaGVhZGVycy51bmNoZWNrZWRBcHBlbmQoc3Rk
OjptYWtlX3BhaXIoaGVhZGVyLmtleS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpLCBoZWFkZXIu
dmFsdWUpKTsKKworICAgICAgICBzdGQ6OnNvcnQoaGVhZGVycy5iZWdpbigpLCBoZWFkZXJzLmVu
ZCgpLCBbXSAoY29uc3Qgc3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPiYgeCwgY29uc3Qgc3RkOjpw
YWlyPFN0cmluZywgU3RyaW5nPiYgeSkgeworICAgICAgICAgICAgcmV0dXJuIFdURjo6Y29kZVBv
aW50Q29tcGFyZUxlc3NUaGFuKHguZmlyc3QsIHkuZmlyc3QpOworICAgICAgICB9KTsKIAogICAg
ICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAgIGZvciAoYXV0byYgaGVh
ZGVyIDogaGVhZGVycykKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGhlYWRlcik7
CisgICAgICAgIGZvciAoYXV0byYgaGVhZGVyIDogaGVhZGVycykgeworICAgICAgICAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoaGVhZGVyLmZpcnN0LmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkp
OworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJzonKTsKKyAgICAgICAgICAgIHN0
cmluZ0J1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZChoZWFkZXIuc2Vjb25kKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCdccicp
OworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgICAgIH0KICAg
ICAgICAgbV9hbGxSZXNwb25zZUhlYWRlcnMgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggYzNkZDJlYzA5NDVjODI4NmRhMGUwOTJkMzJkMWYwNTBjMmNiMzI1Ny4u
OGMwZmIzNjZhMWVkODE5NTU4NmU0NzUwMzI3NTgyODhiMDAwYjZiNSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDIwLTAzLTIwICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIHNvcnRpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDU2NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBpbXByb3Zl
ZCB0ZXN0IHJlc3VsdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtaGlnaHNpZXJyYS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy1tb2phdmUvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94
aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dDoKKwogMjAyMC0wMy0yMCAgSmFj
ayBMZWUgIDxzaGloY2hpZWhfbGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBOdWxscHRyIGNyYXNo
IGluIFJlbmRlck9iamVjdDo6UmVuZGVyT2JqZWN0Qml0ZmllbGRzOjppc0JveCB3aGVuIGN1cnJl
bnQgcmVuZGVyZXIgaXMgdGhlIFJlbmRlclZpZXcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CmluZGV4IDljYjRhMDcwZGZjNzhlNWZhMDQyOThhNzllYzlmNTk1MGQ1MDBmNGMuLjAwODZjOTM0
MGIyMjZiNDI1YmU3MDVjZjFkZmU0YmQ0M2YzNTcyOTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTAzLTIwICBSb2IgQnVpcyAgPHJidWlzQGln
YWxpYS5jb20+CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVy
cygpIHNvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMDU2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZSBpbXByb3ZlZCB0ZXN0IHJlc3VsdC4KKworICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dDoKKwogMjAyMC0w
My0xOSAgSmF2aWVyIEZlcm5hbmRleiAgPGpmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbY3NzLWdyaWRdIENoYW5nZXMgaW4gZ3JpZCBvciBlbGVtZW50cyBpbnNpZGUgdGhlIGdyaWQg
YWZmZWN0cyBtYXJnaW4gb24gb3RoZXIgZWxlbWVudHMgaW4gdGhlIGdyaWQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJl
c3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGExMGY5ZjAzMGY2ZjZjNWY0NWE4ZTgwYTRhNjA4NzVlMGU4YTQzNDkuLjRiMDM4MWUyMTJm
YTljNjZkOGQyZTc1MGViYjI3Njg2NGVjOGU3YzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUg
QEAKIAotRkFJTCBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgImFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9v
LXRlc3Q6IDEsIDJcclxuX19jdXN0b206IHRva2VuXHJcbiIgYnV0IGdvdCAiX19jdXN0b206IHRv
a2VuXHJcbmFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9vLXRlc3Q6IDEsIDJc
clxuIgorUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgCiBQQVNT
IFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAxIAogUEFTUyBYTUxIdHRw
UmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgMiAKIFBBU1MgWE1MSHR0cFJlcXVlc3Q6
IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIDMgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3MvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9u
c2VoZWFkZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0
ZWQudHh0CmluZGV4IGExMGY5ZjAzMGY2ZjZjNWY0NWE4ZTgwYTRhNjA4NzVlMGU4YTQzNDkuLjRi
MDM4MWUyMTJmYTljNjZkOGQyZTc1MGViYjI3Njg2NGVjOGU3YzcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2lvcy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9n
ZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25z
ZWhlYWRlcnMtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogCi1GQUlMIFhNTEh0dHBSZXF1
ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYWxz
by1oZXJlOiBNci4gUEJcclxuZXdvazogbGVnb1xyXG5mb28tdGVzdDogMSwgMlxyXG5fX2N1c3Rv
bTogdG9rZW5cclxuIiBidXQgZ290ICJfX2N1c3RvbTogdG9rZW5cclxuYWxzby1oZXJlOiBNci4g
UEJcclxuZXdvazogbGVnb1xyXG5mb28tdGVzdDogMSwgMlxyXG4iCitQQVNTIFhNTEh0dHBSZXF1
ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAKIFBBU1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFs
bFJlc3BvbnNlSGVhZGVycygpIDEgCiBQQVNTIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25z
ZUhlYWRlcnMoKSAyIAogUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCkgMyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1oaWdoc2llcnJhL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtaGlnaHNpZXJyYS9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0
ZWQudHh0CmluZGV4IDViOTA4MWE0Mjg5MDg2NjNkODA5N2M3MDhmMGFmNGQ0NmE3NWVlYmMuLjVj
MzU4Y2NiMmQxMGU0YTEzMTI5NzliZDJkYjQ0MzM5ZmYwZDYwZWQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy1oaWdoc2llcnJhL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLWhpZ2hzaWVycmEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUg
QEAKIAotRkFJTCBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgImFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9v
LXRlc3Q6IDEsIDJcclxuX19jdXN0b206IHRva2VuXHJcbiIgYnV0IGdvdCAiX19jdXN0b206IHRv
a2VuXHJcbmFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9vLXRlc3Q6IDEsIDJc
clxuIgorUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgCiBQQVNT
IFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAxIAogUEFTUyBYTUxIdHRw
UmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgMiAKIFBBU1MgWE1MSHR0cFJlcXVlc3Q6
IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIDMgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtbW9qYXZlL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFs
bHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
bW9qYXZlL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNl
aGVhZGVycy1leHBlY3RlZC50eHQKaW5kZXggNWI5MDgxYTQyODkwODY2M2Q4MDk3YzcwOGYwYWY0
ZDQ2YTc1ZWViYy4uNWMzNThjY2IyZDEwZTRhMTMxMjk3OWJkMmRiNDQzMzlmZjBkNjBlZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLW1vamF2ZS9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1tb2phdmUvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dApAQCAtMSw1
ICsxLDUgQEAKIAotRkFJTCBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkg
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29c
clxuZm9vLXRlc3Q6IDEsIDJcclxuX19jdXN0b206IHRva2VuXHJcbiIgYnV0IGdvdCAiX19jdXN0
b206IHRva2VuXHJcbmFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9vLXRlc3Q6
IDEsIDJcclxuIgorUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkg
CiBQQVNTIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAxIAogUEFTUyBY
TUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgMiAKIFBBU1MgWE1MSHR0cFJl
cXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIDMgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394168</attachid>
            <date>2020-03-21 09:39:50 -0700</date>
            <delta_ts>2020-03-21 12:01:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200565-20200321173948.patch</filename>
            <type>text/plain</type>
            <size>13448</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAwNWI0NjZhYzNkZTc3N2NiYTcxOTg3
ZDUzY2FlZThjYTliZWE1OGIuLjBiNjE4ODRhMzY1Y2Y0NGU5MmU4MDYyMmY5OTBiYThmYmY5YWI0
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDMtMjEgIFJvYiBCdWlzICA8cmJ1aXNAaWdh
bGlhLmNvbT4KKworICAgICAgICBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCkgc29ydGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAwNTY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
QWRkIGEgbmV3IG1hbmlwdWxhdG9yIHRoYXQgY2FuIGVmZmljaWVudGx5IGNvbnZlcnQKKyAgICAg
ICAgU3RyaW5ncyB0byBsb3dlciBvciB1cHBlciBBU0NJSS4KKworICAgICAgICAqIHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg6CisgICAgICAgIChXVEY6OnRvQVNDSUlDYXNlKToKKyAgICAg
ICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6Z2V0Q2hhcmFjdGVy
c1dpdGhBU0NJSUNhc2VJbnRlcm5hbCk6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OmdldENo
YXJhY3RlcnNXaXRoQVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg6CisKIDIwMjAtMDMtMjAgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtDb2NvYV0gRGVueSBhY2Nlc3MgdG8gZGF0YWJhc2UgbWFwcGluZyBzZXJ2
aWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggNTU1MTQ0NzFjNWVjZTc2MDIzMDQxN2I5MmVhNzE3YTI3Nzg2Y2U5
OS4uMDc2ZmFiNzgwOWYyMTc5MmRlY2U5Yjc4MzJkY2NjNWY2MGU2Zjg4ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIzIEBACisyMDIwLTAzLTIxICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+
CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIHNvcnRp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDU2
NQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFNvcnQgaGVh
ZGVycyB1c2luZyB0aGUgQVNDSUktdXBwZXJjYXNlIGhlYWRlciBuYW1lIGFzIGtleSBidXQgdXNl
IEFTQ0lJLWxvd2VyY2FzZSBoZWFkZXIKKyAgICAgICAgbmFtZXMgaW4gdGhlIHN0cmluZyByZXN1
bHQuCisKKyAgICAgICAgTmVoYXZpb3IgbWF0Y2hlcyBGaXJlZm94IGFuZCBDaHJvbWUuCisKKyAg
ICAgICAgVGVzdDogaW1wb3J0ZWQvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25z
ZWhlYWRlcnMuaHRtCisKKyAgICAgICAgWzFdIGh0dHBzOi8veGhyLnNwZWMud2hhdHdnLm9yZy8j
ZG9tLXhtbGh0dHByZXF1ZXN0LWdldGFsbHJlc3BvbnNlaGVhZGVycworCisgICAgICAgICogeG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpz
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpnZXRBbGxSZXNwb25zZUhl
YWRlcnMgY29uc3QpOgorCiAyMDIwLTAzLTIwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNTg2NzkpOiBbIE1hYyBdIGZhc3Qv
c2Nyb2xsaW5nL2Fycm93LWtleS1zY3JvbGwtaW4tcnRsLWRvY3VtZW50Lmh0bWwgaXMgZmFpbGlu
ZyBhbmQgdGltaW5nIG91dApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCmlu
ZGV4IGRjZjUyZGI2NTIwYTZkOWRkMTE2N2Y0MzRlMTQyYzE3M2JiNWU4MTIuLmE0MTZjYzBlZTRl
YjQxNTBiYWRhY2NkZmI2MGYzOGE4OGE3MjAzOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlLmgKQEAgLTI4Nyw2ICsyODcsMzYgQEAgcHJpdmF0ZToKICAgICBJbmRlbnRh
dGlvbjxOPiBtX2luZGVudGF0aW9uOwogfTsKIAorc3RydWN0IFRvQVNDSUlDYXNlQ29udmVydG9y
IHsKKyAgICBTdHJpbmdWaWV3OjpDYXNlQ29udmVydFR5cGUgY2FzZUNvbnZlcnRUeXBlOworICAg
IFN0cmluZ1ZpZXcgc3RyaW5nOworfTsKKwordGVtcGxhdGU8U3RyaW5nVmlldzo6Q2FzZUNvbnZl
cnRUeXBlIHR5cGU+CitUb0FTQ0lJQ2FzZUNvbnZlcnRvciB0b0FTQ0lJQ2FzZShTdHJpbmdWaWV3
IHN0cmluZykKK3sKKyAgICByZXR1cm4geyB0eXBlLCBzdHJpbmcgfTsKK30KKwordGVtcGxhdGU8
PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxUb0FTQ0lJQ2FzZUNvbnZlcnRvciwgdm9pZD4gewor
cHVibGljOgorICAgIFN0cmluZ1R5cGVBZGFwdGVyKGNvbnN0IFRvQVNDSUlDYXNlQ29udmVydG9y
JiB0b0FTQ0lJQ2FzZUNvbnZlcnRvcikKKyAgICAgICAgOiBtX3RvQVNDSUlDYXNlQ29udmVydG9y
IHsgdG9BU0NJSUNhc2VDb252ZXJ0b3IgfQorICAgIHsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3RvQVNDSUlDYXNlQ29udmVydG9yLnN0cmluZy5sZW5n
dGgoKTsgfQorICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gbV90b0FTQ0lJQ2FzZUNv
bnZlcnRvci5zdHJpbmcuaXNOdWxsKCkgfHwgbV90b0FTQ0lJQ2FzZUNvbnZlcnRvci5zdHJpbmcu
aXM4Qml0KCk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIHdy
aXRlVG8oQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRpb24pIGNvbnN0CisgICAgeworICAgICAgICBt
X3RvQVNDSUlDYXNlQ29udmVydG9yLnN0cmluZy5nZXRDaGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZSht
X3RvQVNDSUlDYXNlQ29udmVydG9yLmNhc2VDb252ZXJ0VHlwZSwgZGVzdGluYXRpb24pOworICAg
ICAgICBXVEZfU1RSSU5HVFlQRUFEQVBURVJfQ09QSUVEX1dURl9TVFJJTkcoKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgY29uc3QgVG9BU0NJSUNhc2VDb252ZXJ0b3ImIG1fdG9BU0NJSUNhc2VD
b252ZXJ0b3I7Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdGVyPgogaW5saW5lIGJvb2wg
YXJlOEJpdChBZGFwdGVyIGFkYXB0ZXIpCiB7CkBAIC0zNjQsNiArMzk0LDcgQEAgdXNpbmcgV1RG
OjpJbmRlbnRhdGlvbjsKIHVzaW5nIFdURjo6SW5kZW50YXRpb25TY29wZTsKIHVzaW5nIFdURjo6
bWFrZVN0cmluZzsKIHVzaW5nIFdURjo6cGFkOwordXNpbmcgV1RGOjp0b0FTQ0lJQ2FzZTsKIHVz
aW5nIFdURjo6dHJ5TWFrZVN0cmluZzsKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ09wZXJh
dG9ycy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKaW5kZXggOGQ0Nzk4YTFmMWJlZTYw
MTA2NmRiZTgzM2RmZDBkMDc0MTUxMWM5Ny4uYmQwOWRjNGRlNDhhNGFiMWQyN2Y1YTdjNjQxMWVh
NGQ4ZjI1ODk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0yNDIsNiArMjQy
LDMwIEBAIFN0cmluZyBTdHJpbmdWaWV3Ojpjb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpIGNvbnN0
CiAgICAgcmV0dXJuIGNvbnZlcnRBU0NJSUNhc2U8QVNDSUlDYXNlOjpVcHBlcj4oc3RhdGljX2Nh
c3Q8Y29uc3QgVUNoYXIqPihtX2NoYXJhY3RlcnMpLCBtX2xlbmd0aCk7CiB9CiAKK3RlbXBsYXRl
PHR5cGVuYW1lIERlc3RpbmF0aW9uQ2hhcmFjdGVyVHlwZSwgdHlwZW5hbWUgU291cmNlQ2hhcmFj
dGVyVHlwZT4KK3ZvaWQgZ2V0Q2hhcmFjdGVyc1dpdGhBU0NJSUNhc2VJbnRlcm5hbChTdHJpbmdW
aWV3OjpDYXNlQ29udmVydFR5cGUgdHlwZSwgRGVzdGluYXRpb25DaGFyYWN0ZXJUeXBlKiBkZXN0
aW5hdGlvbiwgY29uc3QgU291cmNlQ2hhcmFjdGVyVHlwZSogc291cmNlLCB1bnNpZ25lZCBsZW5n
dGgpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8U291cmNlQ2hhcmFjdGVyVHlw
ZSwgTENoYXI+Ojp2YWx1ZSB8fCBzdGQ6OmlzX3NhbWU8U291cmNlQ2hhcmFjdGVyVHlwZSwgVUNo
YXI+Ojp2YWx1ZSk7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8RGVzdGluYXRpb25D
aGFyYWN0ZXJUeXBlLCBMQ2hhcj46OnZhbHVlIHx8IHN0ZDo6aXNfc2FtZTxEZXN0aW5hdGlvbkNo
YXJhY3RlclR5cGUsIFVDaGFyPjo6dmFsdWUpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkKKyAgICAgICAgZGVzdGluYXRpb25baV0gPSB0eXBlID09IFN0cmluZ1Zp
ZXc6OkNhc2VDb252ZXJ0VHlwZTo6TG93ZXIgPyB0b0FTQ0lJTG93ZXIoc291cmNlW2ldKSA6IHRv
QVNDSUlVcHBlcihzb3VyY2VbaV0pOworfQorCit2b2lkIFN0cmluZ1ZpZXc6OmdldENoYXJhY3Rl
cnNXaXRoQVNDSUlDYXNlKENhc2VDb252ZXJ0VHlwZSB0eXBlLCBMQ2hhciogZGVzdGluYXRpb24p
IGNvbnN0Cit7CisgICAgQVNTRVJUKGlzOEJpdCgpKTsKKyAgICBnZXRDaGFyYWN0ZXJzV2l0aEFT
Q0lJQ2FzZUludGVybmFsKHR5cGUsIGRlc3RpbmF0aW9uLCBjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0
aCk7Cit9CisKK3ZvaWQgU3RyaW5nVmlldzo6Z2V0Q2hhcmFjdGVyc1dpdGhBU0NJSUNhc2UoQ2Fz
ZUNvbnZlcnRUeXBlIHR5cGUsIFVDaGFyKiBkZXN0aW5hdGlvbikgY29uc3QKK3sKKyAgICBpZiAo
aXM4Qml0KCkpIHsKKyAgICAgICAgZ2V0Q2hhcmFjdGVyc1dpdGhBU0NJSUNhc2VJbnRlcm5hbCh0
eXBlLCBkZXN0aW5hdGlvbiwgY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGdldENoYXJhY3RlcnNXaXRoQVNDSUlDYXNlSW50ZXJuYWwodHlwZSwg
ZGVzdGluYXRpb24sIGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCk7Cit9CisKIFN0cmluZ1ZpZXdX
aXRoVW5kZXJseWluZ1N0cmluZyBub3JtYWxpemVkTkZDKFN0cmluZ1ZpZXcgc3RyaW5nKQogewog
ICAgIC8vIExhdGluLTEgY2hhcmFjdGVycyBhcmUgdW5hZmZlY3RlZCBieSBub3JtYWxpemF0aW9u
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCBiYjE4NjdlYjY3YjYzYjlkOGYyMmMxMzdi
OWI3MDQ3OWZkYjQ4ZTFmLi44N2JkYjlmMmRkZmY4YWY4ZjQwNDhjNjhlMWVhZjVjZDhhYjM1ZjNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtMTIwLDYgKzEyMCwxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBnZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChMQ2hhciopIGNvbnN0OwogICAg
IHZvaWQgZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoVUNoYXIqKSBjb25zdDsKIAorICAgIGVu
dW0gY2xhc3MgQ2FzZUNvbnZlcnRUeXBlIHsgVXBwZXIsIExvd2VyIH07CisgICAgdm9pZCBnZXRD
aGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZShDYXNlQ29udmVydFR5cGUsIExDaGFyKikgY29uc3Q7Cisg
ICAgdm9pZCBnZXRDaGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZShDYXNlQ29udmVydFR5cGUsIFVDaGFy
KikgY29uc3Q7CisKICAgICBTdHJpbmdWaWV3IHN1YnN0cmluZyh1bnNpZ25lZCBzdGFydCwgdW5z
aWduZWQgbGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBjb25z
dDsKICAgICBTdHJpbmdWaWV3IGxlZnQodW5zaWduZWQgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBz
dWJzdHJpbmcoMCwgbGVuZ3RoKTsgfQogICAgIFN0cmluZ1ZpZXcgcmlnaHQodW5zaWduZWQgbGVu
Z3RoKSBjb25zdCB7IHJldHVybiBzdWJzdHJpbmcodGhpcy0+bGVuZ3RoKCkgLSBsZW5ndGgsIGxl
bmd0aCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGM2YTViZDc5
MDI4MzE3NDczMmY1YmJhNzc5ZTBmZGE5YzRlMjVjNDcuLmQzZDgwMzMwODcwYjlmYzYzZDliMDY1
ZDJmMjRkODBkOGRmMTliZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApA
QCAtODExLDIyICs4MTEsMjAgQEAgU3RyaW5nIFhNTEh0dHBSZXF1ZXN0OjpnZXRBbGxSZXNwb25z
ZUhlYWRlcnMoKSBjb25zdAogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIGlm
ICghbV9hbGxSZXNwb25zZUhlYWRlcnMpIHsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gaGVhZGVy
czsKKyAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IGhlYWRlcnM7CiAg
ICAgICAgIGhlYWRlcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3Jlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZHMoKS5zaXplKCkpOwogCi0gICAgICAgIGZvciAoYXV0byYgaGVhZGVyIDogbV9yZXNw
b25zZS5odHRwSGVhZGVyRmllbGRzKCkpIHsKLSAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgc3Ry
aW5nQnVpbGRlcjsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGhlYWRlci5rZXku
Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFw
cGVuZExpdGVyYWwoIjogIik7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChoZWFk
ZXIudmFsdWUpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJcclxu
Iik7Ci0gICAgICAgICAgICBoZWFkZXJzLnVuY2hlY2tlZEFwcGVuZChzdHJpbmdCdWlsZGVyLnRv
U3RyaW5nKCkpOwotICAgICAgICB9Ci0gICAgICAgIHN0ZDo6c29ydChoZWFkZXJzLmJlZ2luKCks
IGhlYWRlcnMuZW5kKCksIFdURjo6Y29kZVBvaW50Q29tcGFyZUxlc3NUaGFuKTsKKyAgICAgICAg
Zm9yIChhdXRvJiBoZWFkZXIgOiBtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKSkKKyAgICAg
ICAgICAgIGhlYWRlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGhlYWRlci5rZXku
Y29udmVydFRvQVNDSUlVcHBlcmNhc2UoKSwgaGVhZGVyLnZhbHVlKSk7CisKKyAgICAgICAgc3Rk
Ojpzb3J0KGhlYWRlcnMuYmVnaW4oKSwgaGVhZGVycy5lbmQoKSwgW10gKGNvbnN0IHN0ZDo6cGFp
cjxTdHJpbmcsIFN0cmluZz4mIHgsIGNvbnN0IHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4mIHkp
IHsKKyAgICAgICAgICAgIHJldHVybiBXVEY6OmNvZGVQb2ludENvbXBhcmVMZXNzVGhhbih4LmZp
cnN0LCB5LmZpcnN0KTsKKyAgICAgICAgfSk7CiAKICAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJp
bmdCdWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGhlYWRlciA6IGhlYWRlcnMpCi0gICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChoZWFkZXIpOworICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQodG9BU0NJSUNhc2U8U3RyaW5nVmlldzo6Q2FzZUNvbnZlcnRUeXBlOjpMb3dl
cj4oaGVhZGVyLmZpcnN0KSwgIjogIiwgaGVhZGVyLnNlY29uZCwgIlxyXG4iKTsKKwogICAgICAg
ICBtX2FsbFJlc3BvbnNlSGVhZGVycyA9IHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA2Y2ZkMTI3NjA2ODc4YzVjZDdmZDhiMDQxZDQyODk5YzVjNGQxZjQwLi5mNjNi
ZTc2NjY4ZTBiZjQ3ZmFmYzJhNDA2Mzg2ZTI0Zjc2MTMyMGIyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMjAtMDMtMjEgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KKworICAgICAgICBY
TUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgc29ydGluZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNTY1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXBkYXRlIGltcHJvdmVkIHRlc3Qg
cmVzdWx0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy1oaWdoc2llcnJhL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxh
dGZvcm0vbWFjLW1vamF2ZS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRh
bGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0OgorCiAyMDIwLTAzLTIwICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpUGFkT1NdIFlhaG9vISBz
ZWFyY2ggcmVzdWx0cyBhcmUgc29tZXRpbWVzIHpvb21lZCBpbiBhIGxpdHRsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMzI4YTI5Y2NjYzViYzRkNDNmMjBlNTE1NjcwYzBlZTFj
YzgyNmJmMS4uYjQ5YWM1ZTRjNGZiNjNmZTc3ZTUzYmVmMDg4MTkyNTBlMGI4MDU5NSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDMtMjEgIFJv
YiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNvbT4KKworICAgICAgICBYTUxIdHRwUmVxdWVzdDogZ2V0
QWxsUmVzcG9uc2VIZWFkZXJzKCkgc29ydGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNTY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgVXBkYXRlIGltcHJvdmVkIHRlc3QgcmVzdWx0LgorCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQu
dHh0OgorCiAyMDIwLTAzLTIwICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgcm91dGluZXMgdG8gY2hlY2sgYWJvdXQ6YmxhbmsgYW5kIGFib3V0OnNyY2Rv
YyBVUkxzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFk
ZXJzLWV4cGVjdGVkLnR4dAppbmRleCBhMTBmOWYwMzBmNmY2YzVmNDVhOGU4MGE0YTYwODc1ZTBl
OGE0MzQ5Li40YjAzODFlMjEyZmE5YzY2ZDhkMmU3NTBlYmIyNzY4NjRlYzhlN2M3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRh
bGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3Rl
ZC50eHQKQEAgLTEsNSArMSw1IEBACiAKLUZBSUwgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3Bv
bnNlSGVhZGVycygpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhbHNvLWhlcmU6IE1yLiBQQlxy
XG5ld29rOiBsZWdvXHJcbmZvby10ZXN0OiAxLCAyXHJcbl9fY3VzdG9tOiB0b2tlblxyXG4iIGJ1
dCBnb3QgIl9fY3VzdG9tOiB0b2tlblxyXG5hbHNvLWhlcmU6IE1yLiBQQlxyXG5ld29rOiBsZWdv
XHJcbmZvby10ZXN0OiAxLCAyXHJcbiIKK1BBU1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3Bv
bnNlSGVhZGVycygpIAogUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCkgMSAKIFBBU1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIDIgCiBQ
QVNTIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAzIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3MvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVz
cG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dAppbmRleCBhMTBmOWYwMzBmNmY2YzVmNDVhOGU4MGE0
YTYwODc1ZTBlOGE0MzQ5Li40YjAzODFlMjEyZmE5YzY2ZDhkMmU3NTBlYmIyNzY4NjRlYzhlN2M3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAK
IAotRkFJTCBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgImFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9vLXRl
c3Q6IDEsIDJcclxuX19jdXN0b206IHRva2VuXHJcbiIgYnV0IGdvdCAiX19jdXN0b206IHRva2Vu
XHJcbmFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9vLXRlc3Q6IDEsIDJcclxu
IgorUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgCiBQQVNTIFhN
TEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAxIAogUEFTUyBYTUxIdHRwUmVx
dWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgMiAKIFBBU1MgWE1MSHR0cFJlcXVlc3Q6IGdl
dEFsbFJlc3BvbnNlSGVhZGVycygpIDMgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtaGlnaHNpZXJyYS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRh
bGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LWhpZ2hzaWVycmEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVz
cG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dAppbmRleCA1YjkwODFhNDI4OTA4NjYzZDgwOTdjNzA4
ZjBhZjRkNDZhNzVlZWJjLi41YzM1OGNjYjJkMTBlNGExMzEyOTc5YmQyZGI0NDMzOWZmMGQ2MGVk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtaGlnaHNpZXJyYS9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1oaWdoc2llcnJhL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3Rl
ZC50eHQKQEAgLTEsNSArMSw1IEBACiAKLUZBSUwgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3Bv
bnNlSGVhZGVycygpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhbHNvLWhlcmU6IE1yLiBQQlxy
XG5ld29rOiBsZWdvXHJcbmZvby10ZXN0OiAxLCAyXHJcbl9fY3VzdG9tOiB0b2tlblxyXG4iIGJ1
dCBnb3QgIl9fY3VzdG9tOiB0b2tlblxyXG5hbHNvLWhlcmU6IE1yLiBQQlxyXG5ld29rOiBsZWdv
XHJcbmZvby10ZXN0OiAxLCAyXHJcbiIKK1BBU1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3Bv
bnNlSGVhZGVycygpIAogUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCkgMSAKIFBBU1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIDIgCiBQ
QVNTIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAzIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLW1vamF2ZS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLW1vamF2ZS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0CmluZGV4IDViOTA4MWE0Mjg5
MDg2NjNkODA5N2M3MDhmMGFmNGQ0NmE3NWVlYmMuLjVjMzU4Y2NiMmQxMGU0YTEzMTI5NzliZDJk
YjQ0MzM5ZmYwZDYwZWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1tb2ph
dmUvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFk
ZXJzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbW9qYXZlL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1l
eHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiAKLUZBSUwgWE1MSHR0cFJlcXVlc3Q6IGdldEFs
bFJlc3BvbnNlSGVhZGVycygpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhbHNvLWhlcmU6IE1y
LiBQQlxyXG5ld29rOiBsZWdvXHJcbmZvby10ZXN0OiAxLCAyXHJcbl9fY3VzdG9tOiB0b2tlblxy
XG4iIGJ1dCBnb3QgIl9fY3VzdG9tOiB0b2tlblxyXG5hbHNvLWhlcmU6IE1yLiBQQlxyXG5ld29r
OiBsZWdvXHJcbmZvby10ZXN0OiAxLCAyXHJcbiIKK1BBU1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFs
bFJlc3BvbnNlSGVhZGVycygpIAogUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VI
ZWFkZXJzKCkgMSAKIFBBU1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygp
IDIgCiBQQVNTIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAzIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394172</attachid>
            <date>2020-03-21 12:01:16 -0700</date>
            <delta_ts>2020-03-22 13:25:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200565-20200321200113.patch</filename>
            <type>text/plain</type>
            <size>13420</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAwNWI0NjZhYzNkZTc3N2NiYTcxOTg3
ZDUzY2FlZThjYTliZWE1OGIuLjBiNjE4ODRhMzY1Y2Y0NGU5MmU4MDYyMmY5OTBiYThmYmY5YWI0
ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDMtMjEgIFJvYiBCdWlzICA8cmJ1aXNAaWdh
bGlhLmNvbT4KKworICAgICAgICBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCkgc29ydGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAwNTY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
QWRkIGEgbmV3IG1hbmlwdWxhdG9yIHRoYXQgY2FuIGVmZmljaWVudGx5IGNvbnZlcnQKKyAgICAg
ICAgU3RyaW5ncyB0byBsb3dlciBvciB1cHBlciBBU0NJSS4KKworICAgICAgICAqIHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg6CisgICAgICAgIChXVEY6OnRvQVNDSUlDYXNlKToKKyAgICAg
ICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFdURjo6Z2V0Q2hhcmFjdGVy
c1dpdGhBU0NJSUNhc2VJbnRlcm5hbCk6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OmdldENo
YXJhY3RlcnNXaXRoQVNDSUlDYXNlIGNvbnN0KToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg6CisKIDIwMjAtMDMtMjAgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtDb2NvYV0gRGVueSBhY2Nlc3MgdG8gZGF0YWJhc2UgbWFwcGluZyBzZXJ2
aWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMThmZmUxMWY3NTQ0NWUwZTAyNDUxMTIyM2FhOTVkNGE5ODg2YTlk
ZS4uZmU5MmM5YWFiYTRiNjRkMWZkOTI4ZThkYzljMzkwODcxNzMwZjM5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIzIEBACisyMDIwLTAzLTIxICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+
CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIHNvcnRp
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDU2
NQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFNvcnQgaGVh
ZGVycyB1c2luZyB0aGUgQVNDSUktdXBwZXJjYXNlIGhlYWRlciBuYW1lIGFzIGtleSBidXQgdXNl
IEFTQ0lJLWxvd2VyY2FzZSBoZWFkZXIKKyAgICAgICAgbmFtZXMgaW4gdGhlIHN0cmluZyByZXN1
bHQuCisKKyAgICAgICAgTmVoYXZpb3IgbWF0Y2hlcyBGaXJlZm94IGFuZCBDaHJvbWUuCisKKyAg
ICAgICAgVGVzdDogaW1wb3J0ZWQvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25z
ZWhlYWRlcnMuaHRtCisKKyAgICAgICAgWzFdIGh0dHBzOi8veGhyLnNwZWMud2hhdHdnLm9yZy8j
ZG9tLXhtbGh0dHByZXF1ZXN0LWdldGFsbHJlc3BvbnNlaGVhZGVycworCisgICAgICAgICogeG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpz
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpnZXRBbGxSZXNwb25zZUhl
YWRlcnMgY29uc3QpOgorCiAyMDIwLTAzLTIxICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4KIAogICAgICAgICBNYWtlIHRoZSBNZWRpYVNhbXBsZTo6dG9KU09OU3RyaW5n
IG1ldGhvZCBnZW5lcmljCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKaW5k
ZXggZGNmNTJkYjY1MjBhNmQ5ZGQxMTY3ZjQzNGUxNDJjMTczYmI1ZTgxMi4uYTQxNmNjMGVlNGVi
NDE1MGJhZGFjY2RmYjYwZjM4YTg4YTcyMDM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGUuaApAQCAtMjg3LDYgKzI4NywzNiBAQCBwcml2YXRlOgogICAgIEluZGVudGF0
aW9uPE4+IG1faW5kZW50YXRpb247CiB9OwogCitzdHJ1Y3QgVG9BU0NJSUNhc2VDb252ZXJ0b3Ig
eworICAgIFN0cmluZ1ZpZXc6OkNhc2VDb252ZXJ0VHlwZSBjYXNlQ29udmVydFR5cGU7CisgICAg
U3RyaW5nVmlldyBzdHJpbmc7Cit9OworCit0ZW1wbGF0ZTxTdHJpbmdWaWV3OjpDYXNlQ29udmVy
dFR5cGUgdHlwZT4KK1RvQVNDSUlDYXNlQ29udmVydG9yIHRvQVNDSUlDYXNlKFN0cmluZ1ZpZXcg
c3RyaW5nKQoreworICAgIHJldHVybiB7IHR5cGUsIHN0cmluZyB9OworfQorCit0ZW1wbGF0ZTw+
IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPFRvQVNDSUlDYXNlQ29udmVydG9yLCB2b2lkPiB7Citw
dWJsaWM6CisgICAgU3RyaW5nVHlwZUFkYXB0ZXIoY29uc3QgVG9BU0NJSUNhc2VDb252ZXJ0b3Im
IHRvQVNDSUlDYXNlQ29udmVydG9yKQorICAgICAgICA6IG1fdG9BU0NJSUNhc2VDb252ZXJ0b3Ig
eyB0b0FTQ0lJQ2FzZUNvbnZlcnRvciB9CisgICAgeworICAgIH0KKworICAgIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9BU0NJSUNhc2VDb252ZXJ0b3Iuc3RyaW5nLmxlbmd0
aCgpOyB9CisgICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX3RvQVNDSUlDYXNlQ29u
dmVydG9yLnN0cmluZy5pc051bGwoKSB8fCBtX3RvQVNDSUlDYXNlQ29udmVydG9yLnN0cmluZy5p
czhCaXQoKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgd3Jp
dGVUbyhDaGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbikgY29uc3QKKyAgICB7CisgICAgICAgIG1f
dG9BU0NJSUNhc2VDb252ZXJ0b3Iuc3RyaW5nLmdldENoYXJhY3RlcnNXaXRoQVNDSUlDYXNlKG1f
dG9BU0NJSUNhc2VDb252ZXJ0b3IuY2FzZUNvbnZlcnRUeXBlLCBkZXN0aW5hdGlvbik7CisgICAg
ICAgIFdURl9TVFJJTkdUWVBFQURBUFRFUl9DT1BJRURfV1RGX1NUUklORygpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBjb25zdCBUb0FTQ0lJQ2FzZUNvbnZlcnRvciYgbV90b0FTQ0lJQ2FzZUNv
bnZlcnRvcjsKK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0ZXI+CiBpbmxpbmUgYm9vbCBh
cmU4Qml0KEFkYXB0ZXIgYWRhcHRlcikKIHsKQEAgLTM2NCw2ICszOTQsNyBAQCB1c2luZyBXVEY6
OkluZGVudGF0aW9uOwogdXNpbmcgV1RGOjpJbmRlbnRhdGlvblNjb3BlOwogdXNpbmcgV1RGOjpt
YWtlU3RyaW5nOwogdXNpbmcgV1RGOjpwYWQ7Cit1c2luZyBXVEY6OnRvQVNDSUlDYXNlOwogdXNp
bmcgV1RGOjp0cnlNYWtlU3RyaW5nOwogCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nT3BlcmF0
b3JzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRleCA4ZDQ3OThhMWYxYmVlNjAx
MDY2ZGJlODMzZGZkMGQwNzQxNTExYzk3Li5iZDA5ZGM0ZGU0OGE0YWIxZDI3ZjVhN2M2NDExZWE0
ZDhmMjU4OTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5jcHAKQEAgLTI0Miw2ICsyNDIs
MzAgQEAgU3RyaW5nIFN0cmluZ1ZpZXc6OmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCkgY29uc3QK
ICAgICByZXR1cm4gY29udmVydEFTQ0lJQ2FzZTxBU0NJSUNhc2U6OlVwcGVyPihzdGF0aWNfY2Fz
dDxjb25zdCBVQ2hhcio+KG1fY2hhcmFjdGVycyksIG1fbGVuZ3RoKTsKIH0KIAordGVtcGxhdGU8
dHlwZW5hbWUgRGVzdGluYXRpb25DaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBTb3VyY2VDaGFyYWN0
ZXJUeXBlPgordm9pZCBnZXRDaGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZUludGVybmFsKFN0cmluZ1Zp
ZXc6OkNhc2VDb252ZXJ0VHlwZSB0eXBlLCBEZXN0aW5hdGlvbkNoYXJhY3RlclR5cGUqIGRlc3Rp
bmF0aW9uLCBjb25zdCBTb3VyY2VDaGFyYWN0ZXJUeXBlKiBzb3VyY2UsIHVuc2lnbmVkIGxlbmd0
aCkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxTb3VyY2VDaGFyYWN0ZXJUeXBl
LCBMQ2hhcj46OnZhbHVlIHx8IHN0ZDo6aXNfc2FtZTxTb3VyY2VDaGFyYWN0ZXJUeXBlLCBVQ2hh
cj46OnZhbHVlKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxEZXN0aW5hdGlvbkNo
YXJhY3RlclR5cGUsIExDaGFyPjo6dmFsdWUgfHwgc3RkOjppc19zYW1lPERlc3RpbmF0aW9uQ2hh
cmFjdGVyVHlwZSwgVUNoYXI+Ojp2YWx1ZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKQorICAgICAgICBkZXN0aW5hdGlvbltpXSA9IHR5cGUgPT0gU3RyaW5nVmll
dzo6Q2FzZUNvbnZlcnRUeXBlOjpMb3dlciA/IHRvQVNDSUlMb3dlcihzb3VyY2VbaV0pIDogdG9B
U0NJSVVwcGVyKHNvdXJjZVtpXSk7Cit9CisKK3ZvaWQgU3RyaW5nVmlldzo6Z2V0Q2hhcmFjdGVy
c1dpdGhBU0NJSUNhc2UoQ2FzZUNvbnZlcnRUeXBlIHR5cGUsIExDaGFyKiBkZXN0aW5hdGlvbikg
Y29uc3QKK3sKKyAgICBBU1NFUlQoaXM4Qml0KCkpOworICAgIGdldENoYXJhY3RlcnNXaXRoQVND
SUlDYXNlSW50ZXJuYWwodHlwZSwgZGVzdGluYXRpb24sIGNoYXJhY3RlcnM4KCksIG1fbGVuZ3Ro
KTsKK30KKwordm9pZCBTdHJpbmdWaWV3OjpnZXRDaGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZShDYXNl
Q29udmVydFR5cGUgdHlwZSwgVUNoYXIqIGRlc3RpbmF0aW9uKSBjb25zdAoreworICAgIGlmIChp
czhCaXQoKSkgeworICAgICAgICBnZXRDaGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZUludGVybmFsKHR5
cGUsIGRlc3RpbmF0aW9uLCBjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgZ2V0Q2hhcmFjdGVyc1dpdGhBU0NJSUNhc2VJbnRlcm5hbCh0eXBlLCBk
ZXN0aW5hdGlvbiwgY2hhcmFjdGVyczE2KCksIG1fbGVuZ3RoKTsKK30KKwogU3RyaW5nVmlld1dp
dGhVbmRlcmx5aW5nU3RyaW5nIG5vcm1hbGl6ZWRORkMoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAg
ICAgLy8gTGF0aW4tMSBjaGFyYWN0ZXJzIGFyZSB1bmFmZmVjdGVkIGJ5IG5vcm1hbGl6YXRpb24u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IGJiMTg2N2ViNjdiNjNiOWQ4ZjIyYzEzN2I5
YjcwNDc5ZmRiNDhlMWYuLjZjZmViZGJhYjdlYTQ1OGUxZDk2ODBkMTMxNjE5MTQ4ZjIxNzlmMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC0xMjAsNiArMTIwLDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIGdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KExDaGFyKikgY29uc3Q7CiAgICAg
dm9pZCBnZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChVQ2hhciopIGNvbnN0OwogCisgICAgZW51
bSBjbGFzcyBDYXNlQ29udmVydFR5cGUgeyBVcHBlciwgTG93ZXIgfTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgdm9pZCBnZXRDaGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZShDYXNlQ29udmVydFR5cGUs
IExDaGFyKikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZ2V0Q2hhcmFjdGVy
c1dpdGhBU0NJSUNhc2UoQ2FzZUNvbnZlcnRUeXBlLCBVQ2hhciopIGNvbnN0OworCiAgICAgU3Ry
aW5nVmlldyBzdWJzdHJpbmcodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgY29uc3Q7CiAgICAgU3RyaW5nVmlldyBs
ZWZ0KHVuc2lnbmVkIGxlbmd0aCkgY29uc3QgeyByZXR1cm4gc3Vic3RyaW5nKDAsIGxlbmd0aCk7
IH0KICAgICBTdHJpbmdWaWV3IHJpZ2h0KHVuc2lnbmVkIGxlbmd0aCkgY29uc3QgeyByZXR1cm4g
c3Vic3RyaW5nKHRoaXMtPmxlbmd0aCgpIC0gbGVuZ3RoLCBsZW5ndGgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBjNmE1YmQ3OTAyODMxNzQ3MzJmNWJiYTc3OWUw
ZmRhOWM0ZTI1YzQ3Li5kM2Q4MDMzMDg3MGI5ZmM2M2Q5YjA2NWQyZjI0ZDgwZDhkZjE5YmRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTgxMSwyMiArODExLDIwIEBA
IFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6Z2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBpZiAoIW1fYWxsUmVzcG9uc2VIZWFk
ZXJzKSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGhlYWRlcnM7CisgICAgICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBoZWFkZXJzOwogICAgICAgICBoZWFkZXJzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuc2l6ZSgpKTsK
IAotICAgICAgICBmb3IgKGF1dG8mIGhlYWRlciA6IG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxk
cygpKSB7Ci0gICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7Ci0gICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChoZWFkZXIua2V5LmNvbnZlcnRUb0FTQ0lJTG93ZXJj
YXNlKCkpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmRMaXRlcmFsKCI6ICIpOwot
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaGVhZGVyLnZhbHVlKTsKLSAgICAgICAg
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiXHJcbiIpOwotICAgICAgICAgICAgaGVh
ZGVycy51bmNoZWNrZWRBcHBlbmQoc3RyaW5nQnVpbGRlci50b1N0cmluZygpKTsKLSAgICAgICAg
fQotICAgICAgICBzdGQ6OnNvcnQoaGVhZGVycy5iZWdpbigpLCBoZWFkZXJzLmVuZCgpLCBXVEY6
OmNvZGVQb2ludENvbXBhcmVMZXNzVGhhbik7CisgICAgICAgIGZvciAoYXV0byYgaGVhZGVyIDog
bV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkpCisgICAgICAgICAgICBoZWFkZXJzLnVuY2hl
Y2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihoZWFkZXIua2V5LmNvbnZlcnRUb0FTQ0lJVXBwZXJj
YXNlKCksIGhlYWRlci52YWx1ZSkpOworCisgICAgICAgIHN0ZDo6c29ydChoZWFkZXJzLmJlZ2lu
KCksIGhlYWRlcnMuZW5kKCksIFtdIChjb25zdCBzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+JiB4
LCBjb25zdCBzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+JiB5KSB7CisgICAgICAgICAgICByZXR1
cm4gV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4oeC5maXJzdCwgeS5maXJzdCk7CisgICAg
ICAgIH0pOwogCiAgICAgICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKICAgICAgICAg
Zm9yIChhdXRvJiBoZWFkZXIgOiBoZWFkZXJzKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmQoaGVhZGVyKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHRvQVNDSUlD
YXNlPFN0cmluZ1ZpZXc6OkNhc2VDb252ZXJ0VHlwZTo6TG93ZXI+KGhlYWRlci5maXJzdCksICI6
ICIsIGhlYWRlci5zZWNvbmQsICJcclxuIik7CisKICAgICAgICAgbV9hbGxSZXNwb25zZUhlYWRl
cnMgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWVjNDExOWVi
ODVmZGVkNWQ1MzE2YmY5NTE2ZDZmNmVmYzI1YTgzZS4uM2FmZTYzNGI5ZGQ2ZGU5NDZkMWNiNDc4
MzRmOTNjN2I0YzJlYzM2NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAzLTIxICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3Q6IGdldEFs
bFJlc3BvbnNlSGVhZGVycygpIHNvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMDU2NQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgorCisgICAgICAgIFVwZGF0ZSBpbXByb3ZlZCB0ZXN0IHJlc3VsdHMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9pb3MvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxs
cmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtaGln
aHNpZXJyYS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25z
ZWhlYWRlcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy1tb2phdmUvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4
cGVjdGVkLnR4dDoKKwogMjAyMC0wMy0yMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIHRlbGVyaWsuY29tOiBQbGFjZWhvbGRlciB0ZXh0IGlzIG1pc2FsaWduZWQg
aW4gc2VhcmNoIHRleHQgYm94CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAzMjhh
MjljY2NjNWJjNGQ0M2YyMGU1MTU2NzBjMGVlMWNjODI2YmYxLi5iNDlhYzVlNGM0ZmI2M2ZlNzdl
NTNiZWYwODgxOTI1MGUwYjgwNTk1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAyMC0wMy0yMSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgor
CisgICAgICAgIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSBzb3J0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NjUK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVcGRhdGUgaW1w
cm92ZWQgdGVzdCByZXN1bHQuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dl
dGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQ6CisKIDIwMjAtMDMtMjAgIHlvdWVubiBm
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCByb3V0aW5lcyB0byBjaGVj
ayBhYm91dDpibGFuayBhbmQgYWJvdXQ6c3JjZG9jIFVSTHMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVh
ZGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0CmluZGV4IGExMGY5
ZjAzMGY2ZjZjNWY0NWE4ZTgwYTRhNjA4NzVlMGU4YTQzNDkuLjRiMDM4MWUyMTJmYTljNjZkOGQy
ZTc1MGViYjI3Njg2NGVjOGU3YzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIv
Z2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIAotRkFJ
TCBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgImFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9vLXRlc3Q6IDEs
IDJcclxuX19jdXN0b206IHRva2VuXHJcbiIgYnV0IGdvdCAiX19jdXN0b206IHRva2VuXHJcbmFs
c28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9vLXRlc3Q6IDEsIDJcclxuIgorUEFT
UyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgCiBQQVNTIFhNTEh0dHBS
ZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAxIAogUEFTUyBYTUxIdHRwUmVxdWVzdDog
Z2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgMiAKIFBBU1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJl
c3BvbnNlSGVhZGVycygpIDMgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGExMGY5ZjAzMGY2ZjZjNWY0NWE4ZTgwYTRhNjA4NzVlMGU4YTQzNDkuLjRiMDM4MWUyMTJm
YTljNjZkOGQyZTc1MGViYjI3Njg2NGVjOGU3YzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNw
b25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMt
ZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogCi1GQUlMIFhNTEh0dHBSZXF1ZXN0OiBnZXRB
bGxSZXNwb25zZUhlYWRlcnMoKSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYWxzby1oZXJlOiBN
ci4gUEJcclxuZXdvazogbGVnb1xyXG5mb28tdGVzdDogMSwgMlxyXG5fX2N1c3RvbTogdG9rZW5c
clxuIiBidXQgZ290ICJfX2N1c3RvbTogdG9rZW5cclxuYWxzby1oZXJlOiBNci4gUEJcclxuZXdv
azogbGVnb1xyXG5mb28tdGVzdDogMSwgMlxyXG4iCitQQVNTIFhNTEh0dHBSZXF1ZXN0OiBnZXRB
bGxSZXNwb25zZUhlYWRlcnMoKSAKIFBBU1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNl
SGVhZGVycygpIDEgCiBQQVNTIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMo
KSAyIAogUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgMyAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1oaWdoc2llcnJhL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtaGlnaHNpZXJyYS9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDViOTA4MWE0Mjg5MDg2NjNkODA5N2M3MDhmMGFmNGQ0NmE3NWVlYmMuLjVjMzU4Y2NiMmQx
MGU0YTEzMTI5NzliZDJkYjQ0MzM5ZmYwZDYwZWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy1oaWdoc2llcnJhL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhy
L2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLWhpZ2hzaWVycmEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIv
Z2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIAotRkFJ
TCBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgImFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9vLXRlc3Q6IDEs
IDJcclxuX19jdXN0b206IHRva2VuXHJcbiIgYnV0IGdvdCAiX19jdXN0b206IHRva2VuXHJcbmFs
c28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9vLXRlc3Q6IDEsIDJcclxuIgorUEFT
UyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgCiBQQVNTIFhNTEh0dHBS
ZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAxIAogUEFTUyBYTUxIdHRwUmVxdWVzdDog
Z2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgMiAKIFBBU1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJl
c3BvbnNlSGVhZGVycygpIDMgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
bW9qYXZlL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNl
aGVhZGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbW9qYXZlL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1l
eHBlY3RlZC50eHQKaW5kZXggNWI5MDgxYTQyODkwODY2M2Q4MDk3YzcwOGYwYWY0ZDQ2YTc1ZWVi
Yy4uNWMzNThjY2IyZDEwZTRhMTMxMjk3OWJkMmRiNDQzMzlmZjBkNjBlZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLW1vamF2ZS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy1tb2phdmUvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAK
IAotRkFJTCBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgImFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9vLXRl
c3Q6IDEsIDJcclxuX19jdXN0b206IHRva2VuXHJcbiIgYnV0IGdvdCAiX19jdXN0b206IHRva2Vu
XHJcbmFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9vLXRlc3Q6IDEsIDJcclxu
IgorUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgCiBQQVNTIFhN
TEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAxIAogUEFTUyBYTUxIdHRwUmVx
dWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgMiAKIFBBU1MgWE1MSHR0cFJlcXVlc3Q6IGdl
dEFsbFJlc3BvbnNlSGVhZGVycygpIDMgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394227</attachid>
            <date>2020-03-22 13:26:02 -0700</date>
            <delta_ts>2020-03-23 00:58:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200565-20200322212600.patch</filename>
            <type>text/plain</type>
            <size>15415</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAwNWI0NjZhYzNkZTc3N2NiYTcxOTg3
ZDUzY2FlZThjYTliZWE1OGIuLmM3OGZkODZlYjYyZmVkNGM5M2EzZDA5NWU2YjhiMjYzYzVjZjc0
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMDMtMjIgIFJvYiBCdWlzICA8cmJ1aXNAaWdh
bGlhLmNvbT4KKworICAgICAgICBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCkgc29ydGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAwNTY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
QWRkIGEgbmV3IG1hbmlwdWxhdG9yIHRoYXQgY2FuIGVmZmljaWVudGx5IGNvbnZlcnQKKyAgICAg
ICAgU3RyaW5ncyB0byBsb3dlciBvciB1cHBlciBBU0NJSS4KKworICAgICAgICAqIHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5jcHA6
CisgICAgICAgIChXVEY6OmdldENoYXJhY3RlcnNXaXRoQVNDSUlDYXNlSW50ZXJuYWwpOgorICAg
ICAgICAoV1RGOjpTdHJpbmdWaWV3OjpnZXRDaGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZSBjb25zdCk6
CisgICAgICAgIChXVEY6Omxvd2VyY2FzZSk6CisgICAgICAgIChXVEY6OnVwcGVyY2FzZSk6Cisg
ICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0
cmluZy5oOgorICAgICAgICAoV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW5DYXNlSW5zZW5z
aXRpdmUpOgorCiAyMDIwLTAzLTIwICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIERlbnkgYWNjZXNzIHRvIGRhdGFiYXNlIG1hcHBpbmcgc2Vy
dmljZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDY2MGNhYzYwMGI3NjdmNTA5OTM2NTFlNzhlNDEyNzYzNmEyMTZh
MjIuLmFlNTAxMmQyYjI1ZDUyZGM5NjgxZmVjNmI0ZTExZWYyZDg0MzhmMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMiBAQAorMjAyMC0wMy0yMiAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29t
PgorCisgICAgICAgIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSBzb3J0
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1
NjUKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBTb3J0IGhl
YWRlcnMgdXNpbmcgdGhlIEFTQ0lJLXVwcGVyY2FzZSBoZWFkZXIgbmFtZSBhcyBrZXkgYnV0IHVz
ZSBBU0NJSS1sb3dlcmNhc2UgaGVhZGVyCisgICAgICAgIG5hbWVzIGluIHRoZSBzdHJpbmcgcmVz
dWx0LgorCisgICAgICAgIE5laGF2aW9yIG1hdGNoZXMgRmlyZWZveCBhbmQgQ2hyb21lLgorCisg
ICAgICAgIFRlc3Q6IGltcG9ydGVkL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9u
c2VoZWFkZXJzLmh0bQorCisgICAgICAgIFsxXSBodHRwczovL3hoci5zcGVjLndoYXR3Zy5vcmcv
I2RvbS14bWxodHRwcmVxdWVzdC1nZXRhbGxyZXNwb25zZWhlYWRlcnMKKworICAgICAgICAqIHht
bC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6
Z2V0QWxsUmVzcG9uc2VIZWFkZXJzIGNvbnN0KToKKwogMjAyMC0wMy0yMSAgU2FpZCBBYm91LUhh
bGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFuIGFuaW1hdGVkIFBO
RyBwbGF5cyB0aGUgZnJhbWVzIG9uZSB0aW1lIG1vcmUgdGhhbiB0aGUgaW1hZ2UgbG9vcENvdW50
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmggYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlLmgKaW5kZXggZGNmNTJkYjY1MjBh
NmQ5ZGQxMTY3ZjQzNGUxNDJjMTczYmI1ZTgxMi4uMjcyMzU2OGJjMjNiNGUzNDA3M2E3YzAwYzlj
YjllZjVkYTc2NTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25j
YXRlbmF0ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaApA
QCAtMjg3LDYgKzI4NywzMiBAQCBwcml2YXRlOgogICAgIEluZGVudGF0aW9uPE4+IG1faW5kZW50
YXRpb247CiB9OwogCitzdHJ1Y3QgVG9BU0NJSUNhc2VDb252ZXJ0ZXIgeworICAgIFN0cmluZ1Zp
ZXc6OkNhc2VDb252ZXJ0VHlwZSBjYXNlQ29udmVydFR5cGU7CisgICAgU3RyaW5nVmlldyBzdHJp
bmc7Cit9OworCitUb0FTQ0lJQ2FzZUNvbnZlcnRlciBsb3dlcmNhc2UoU3RyaW5nVmlldyk7CitU
b0FTQ0lJQ2FzZUNvbnZlcnRlciB1cHBlcmNhc2UoU3RyaW5nVmlldyk7CisKK3RlbXBsYXRlPD4g
Y2xhc3MgU3RyaW5nVHlwZUFkYXB0ZXI8VG9BU0NJSUNhc2VDb252ZXJ0ZXIsIHZvaWQ+IHsKK3B1
YmxpYzoKKyAgICBTdHJpbmdUeXBlQWRhcHRlcihjb25zdCBUb0FTQ0lJQ2FzZUNvbnZlcnRlciYg
Y29udmVydGVyKQorICAgICAgICA6IG1fY29udmVydGVyIHsgY29udmVydGVyIH0KKyAgICB7Cisg
ICAgfQorCisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9jb252ZXJ0ZXIu
c3RyaW5nLmxlbmd0aCgpOyB9CisgICAgYm9vbCBpczhCaXQoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnZlcnRlci5zdHJpbmcuaXNOdWxsKCkgfHwgbV9jb252ZXJ0ZXIuc3RyaW5nLmlzOEJpdCgpOyB9
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB3cml0ZVRvKENoYXJh
Y3RlclR5cGUqIGRlc3RpbmF0aW9uKSBjb25zdAorICAgIHsKKyAgICAgICAgbV9jb252ZXJ0ZXIu
c3RyaW5nLmdldENoYXJhY3RlcnNXaXRoQVNDSUlDYXNlKG1fY29udmVydGVyLmNhc2VDb252ZXJ0
VHlwZSwgZGVzdGluYXRpb24pOworICAgIH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBUb0FTQ0lJ
Q2FzZUNvbnZlcnRlciYgbV9jb252ZXJ0ZXI7Cit9OworCiB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFw
dGVyPgogaW5saW5lIGJvb2wgYXJlOEJpdChBZGFwdGVyIGFkYXB0ZXIpCiB7CkBAIC0zNjQsNiAr
MzkwLDggQEAgdXNpbmcgV1RGOjpJbmRlbnRhdGlvbjsKIHVzaW5nIFdURjo6SW5kZW50YXRpb25T
Y29wZTsKIHVzaW5nIFdURjo6bWFrZVN0cmluZzsKIHVzaW5nIFdURjo6cGFkOwordXNpbmcgV1RG
Ojpsb3dlcmNhc2U7Cit1c2luZyBXVEY6OnVwcGVyY2FzZTsKIHVzaW5nIFdURjo6dHJ5TWFrZVN0
cmluZzsKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ09wZXJhdG9ycy5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nVmlldy5jcHAKaW5kZXggOGQ0Nzk4YTFmMWJlZTYwMTA2NmRiZTgzM2RmZDBkMDc0
MTUxMWM5Ny4uMWI0MWE3MzE0MTNkMzNkYjdmNjA1ZjllZTk4ZGU0MjNmNDg2MWJkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ1ZpZXcuY3BwCkBAIC0zMCw2ICszMCw3IEBAIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogI2luY2x1ZGUg
PG11dGV4PgogI2luY2x1ZGUgPHVuaWNvZGUvdWJyay5oPgogI2luY2x1ZGUgPHVuaWNvZGUvdW5v
cm0yLmg+CisjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CkBAIC0yNDIsNiArMjQzLDMxIEBAIFN0cmluZyBTdHJpbmdWaWV3Ojpjb252ZXJ0VG9BU0NJ
SVVwcGVyY2FzZSgpIGNvbnN0CiAgICAgcmV0dXJuIGNvbnZlcnRBU0NJSUNhc2U8QVNDSUlDYXNl
OjpVcHBlcj4oc3RhdGljX2Nhc3Q8Y29uc3QgVUNoYXIqPihtX2NoYXJhY3RlcnMpLCBtX2xlbmd0
aCk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIERlc3RpbmF0aW9uQ2hhcmFjdGVyVHlwZSwgdHlw
ZW5hbWUgU291cmNlQ2hhcmFjdGVyVHlwZT4KK3ZvaWQgZ2V0Q2hhcmFjdGVyc1dpdGhBU0NJSUNh
c2VJbnRlcm5hbChTdHJpbmdWaWV3OjpDYXNlQ29udmVydFR5cGUgdHlwZSwgRGVzdGluYXRpb25D
aGFyYWN0ZXJUeXBlKiBkZXN0aW5hdGlvbiwgY29uc3QgU291cmNlQ2hhcmFjdGVyVHlwZSogc291
cmNlLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8
U291cmNlQ2hhcmFjdGVyVHlwZSwgTENoYXI+Ojp2YWx1ZSB8fCBzdGQ6OmlzX3NhbWU8U291cmNl
Q2hhcmFjdGVyVHlwZSwgVUNoYXI+Ojp2YWx1ZSk7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X3NhbWU8RGVzdGluYXRpb25DaGFyYWN0ZXJUeXBlLCBMQ2hhcj46OnZhbHVlIHx8IHN0ZDo6aXNf
c2FtZTxEZXN0aW5hdGlvbkNoYXJhY3RlclR5cGUsIFVDaGFyPjo6dmFsdWUpOworICAgIGF1dG8g
ZnVuID0gKHR5cGUgPT0gU3RyaW5nVmlldzo6Q2FzZUNvbnZlcnRUeXBlOjpMb3dlcikgPyB0b0FT
Q0lJTG93ZXI8U291cmNlQ2hhcmFjdGVyVHlwZT4gOiB0b0FTQ0lJVXBwZXI8U291cmNlQ2hhcmFj
dGVyVHlwZT47CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAg
ICAgICBkZXN0aW5hdGlvbltpXSA9IGZ1bihzb3VyY2VbaV0pOworfQorCit2b2lkIFN0cmluZ1Zp
ZXc6OmdldENoYXJhY3RlcnNXaXRoQVNDSUlDYXNlKENhc2VDb252ZXJ0VHlwZSB0eXBlLCBMQ2hh
ciogZGVzdGluYXRpb24pIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzOEJpdCgpKTsKKyAgICBnZXRD
aGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZUludGVybmFsKHR5cGUsIGRlc3RpbmF0aW9uLCBjaGFyYWN0
ZXJzOCgpLCBtX2xlbmd0aCk7Cit9CisKK3ZvaWQgU3RyaW5nVmlldzo6Z2V0Q2hhcmFjdGVyc1dp
dGhBU0NJSUNhc2UoQ2FzZUNvbnZlcnRUeXBlIHR5cGUsIFVDaGFyKiBkZXN0aW5hdGlvbikgY29u
c3QKK3sKKyAgICBpZiAoaXM4Qml0KCkpIHsKKyAgICAgICAgZ2V0Q2hhcmFjdGVyc1dpdGhBU0NJ
SUNhc2VJbnRlcm5hbCh0eXBlLCBkZXN0aW5hdGlvbiwgY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGdldENoYXJhY3RlcnNXaXRoQVNDSUlDYXNl
SW50ZXJuYWwodHlwZSwgZGVzdGluYXRpb24sIGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCk7Cit9
CisKIFN0cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyBub3JtYWxpemVkTkZDKFN0cmluZ1Zp
ZXcgc3RyaW5nKQogewogICAgIC8vIExhdGluLTEgY2hhcmFjdGVycyBhcmUgdW5hZmZlY3RlZCBi
eSBub3JtYWxpemF0aW9uLgpAQCAtMzY5LDQgKzM5NSwxNCBAQCB2b2lkIFN0cmluZ1ZpZXc6OnNl
dFVuZGVybHlpbmdTdHJpbmcoY29uc3QgU3RyaW5nVmlldyYgb3RoZXJTdHJpbmcpCiAKICNlbmRp
ZiAvLyBDSEVDS19TVFJJTkdWSUVXX0xJRkVUSU1FCiAKK1RvQVNDSUlDYXNlQ29udmVydGVyIGxv
d2VyY2FzZShTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICByZXR1cm4geyBTdHJpbmdWaWV3OjpD
YXNlQ29udmVydFR5cGU6Okxvd2VyLCBzdHJpbmcgfTsKK30KKworVG9BU0NJSUNhc2VDb252ZXJ0
ZXIgdXBwZXJjYXNlKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIHJldHVybiB7IFN0cmluZ1Zp
ZXc6OkNhc2VDb252ZXJ0VHlwZTo6VXBwZXIsIHN0cmluZyB9OworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggYmIxODY3ZWI2N2I2M2I5ZDhmMjJj
MTM3YjliNzA0NzlmZGI0OGUxZi4uNmNmZWJkYmFiN2VhNDU4ZTFkOTY4MGQxMzE2MTkxNDhmMjE3
OWYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTEyMCw2ICsxMjAsMTAgQEAgcHVi
bGljOgogICAgIHZvaWQgZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoTENoYXIqKSBjb25zdDsK
ICAgICB2b2lkIGdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KFVDaGFyKikgY29uc3Q7CiAKKyAg
ICBlbnVtIGNsYXNzIENhc2VDb252ZXJ0VHlwZSB7IFVwcGVyLCBMb3dlciB9OworICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2b2lkIGdldENoYXJhY3RlcnNXaXRoQVNDSUlDYXNlKENhc2VDb252ZXJ0
VHlwZSwgTENoYXIqKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBnZXRDaGFy
YWN0ZXJzV2l0aEFTQ0lJQ2FzZShDYXNlQ29udmVydFR5cGUsIFVDaGFyKikgY29uc3Q7CisKICAg
ICBTdHJpbmdWaWV3IHN1YnN0cmluZyh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoID0g
c3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKSBjb25zdDsKICAgICBTdHJpbmdW
aWV3IGxlZnQodW5zaWduZWQgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBzdWJzdHJpbmcoMCwgbGVu
Z3RoKTsgfQogICAgIFN0cmluZ1ZpZXcgcmlnaHQodW5zaWduZWQgbGVuZ3RoKSBjb25zdCB7IHJl
dHVybiBzdWJzdHJpbmcodGhpcy0+bGVuZ3RoKCkgLSBsZW5ndGgsIGxlbmd0aCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5oCmluZGV4IGQ0ODI5MjI4MjI5NmI5YTg1N2I2MTk4MDljNzdiM2E2NjFi
YWIxOGUuLjg5NDIwYzU1Y2Q0MWFkMjRjN2QwNzI2Mzc4ZDk5MTcyNjViZGM1ZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaApAQCAtNDM2LDYgKzQzNiw3IEBAIE5TU3RyaW5nICogbnNTdHJpbmdO
aWxJZkVtcHR5KGNvbnN0IFN0cmluZyYpOwogCiBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNvZGVQ
b2ludENvbXBhcmUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiBib29sIGNvZGVQb2lu
dENvbXBhcmVMZXNzVGhhbihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgY29k
ZVBvaW50Q29tcGFyZUxlc3NUaGFuQ2FzZUluc2Vuc2l0aXZlKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYpOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiB2b2lkIGFwcGVu
ZE51bWJlcihWZWN0b3I8Q2hhcmFjdGVyVHlwZT4mLCB1bnNpZ25lZCBjaGFyIG51bWJlcik7CiAK
QEAgLTU5OCw2ICs1OTksMjAgQEAgaW5saW5lIGJvb2wgY29kZVBvaW50Q29tcGFyZUxlc3NUaGFu
KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKQogICAgIHJldHVybiBjb2RlUG9pbnRD
b21wYXJlKGEuaW1wbCgpLCBiLmltcGwoKSkgPCAwOwogfQogCitpbmxpbmUgYm9vbCBjb2RlUG9p
bnRDb21wYXJlTGVzc1RoYW5DYXNlSW5zZW5zaXRpdmUoY29uc3QgU3RyaW5nJiBhLCBjb25zdCBT
dHJpbmcmIGIpCit7CisgICAgdW5zaWduZWQgeExlbmd0aCA9IGEubGVuZ3RoKCk7CisgICAgdW5z
aWduZWQgeUxlbmd0aCA9IGIubGVuZ3RoKCk7CisgICAgdW5zaWduZWQgY29tbW9uTGVuZ3RoID0g
c3RkOjptaW4oeExlbmd0aCwgeUxlbmd0aCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGNvbW1vbkxlbmd0aDsgKytpKSB7CisgICAgICAgIGF1dG8geENoYXJhY3RlciA9IHRvQVNDSUlV
cHBlcihhW2ldKTsKKyAgICAgICAgYXV0byB5Q2hhcmFjdGVyID0gdG9BU0NJSVVwcGVyKGJbaV0p
OworICAgICAgICBpZiAoeENoYXJhY3RlciAhPSB5Q2hhcmFjdGVyKQorICAgICAgICAgICAgcmV0
dXJuIHhDaGFyYWN0ZXIgPCB5Q2hhcmFjdGVyOworICAgIH0KKyAgICByZXR1cm4geExlbmd0aCA8
IHlMZW5ndGg7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBpbmxpbmUg
dm9pZCBhcHBlbmROdW1iZXIoVmVjdG9yPENoYXJhY3RlclR5cGU+JiB2ZWN0b3IsIHVuc2lnbmVk
IGNoYXIgbnVtYmVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXgg
YzZhNWJkNzkwMjgzMTc0NzMyZjViYmE3NzllMGZkYTljNGUyNWM0Ny4uYjhmYzU5YzVkM2MwY2Jl
YTY0MDRiODk5YjE3ZTI0ZWJkNWMyZWU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCkBAIC04MTEsMjIgKzgxMSwyMCBAQCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OmdldEFs
bFJlc3BvbnNlSGVhZGVycygpIGNvbnN0CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwog
CiAgICAgaWYgKCFtX2FsbFJlc3BvbnNlSGVhZGVycykgewotICAgICAgICBWZWN0b3I8U3RyaW5n
PiBoZWFkZXJzOworICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gaGVh
ZGVyczsKICAgICAgICAgaGVhZGVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcmVzcG9uc2Uu
aHR0cEhlYWRlckZpZWxkcygpLnNpemUoKSk7CiAKLSAgICAgICAgZm9yIChhdXRvJiBoZWFkZXIg
OiBtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKSkgewotICAgICAgICAgICAgU3RyaW5nQnVp
bGRlciBzdHJpbmdCdWlsZGVyOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaGVh
ZGVyLmtleS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKLSAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kTGl0ZXJhbCgiOiAiKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGhlYWRlci52YWx1ZSk7Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVy
YWwoIlxyXG4iKTsKLSAgICAgICAgICAgIGhlYWRlcnMudW5jaGVja2VkQXBwZW5kKHN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgc3RkOjpzb3J0KGhlYWRlcnMu
YmVnaW4oKSwgaGVhZGVycy5lbmQoKSwgV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4pOwor
ICAgICAgICBmb3IgKGF1dG8mIGhlYWRlciA6IG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygp
KQorICAgICAgICAgICAgaGVhZGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIoaGVh
ZGVyLmtleSwgaGVhZGVyLnZhbHVlKSk7CisKKyAgICAgICAgc3RkOjpzb3J0KGhlYWRlcnMuYmVn
aW4oKSwgaGVhZGVycy5lbmQoKSwgW10gKGNvbnN0IHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4m
IHgsIGNvbnN0IHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4mIHkpIHsKKyAgICAgICAgICAgIHJl
dHVybiBXVEY6OmNvZGVQb2ludENvbXBhcmVMZXNzVGhhbkNhc2VJbnNlbnNpdGl2ZSh4LmZpcnN0
LCB5LmZpcnN0KTsKKyAgICAgICAgfSk7CiAKICAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdC
dWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGhlYWRlciA6IGhlYWRlcnMpCi0gICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZChoZWFkZXIpOworICAgICAgICAgICAgc3RyaW5nQnVpbGRl
ci5hcHBlbmQobG93ZXJjYXNlKGhlYWRlci5maXJzdCksICI6ICIsIGhlYWRlci5zZWNvbmQsICJc
clxuIik7CisKICAgICAgICAgbV9hbGxSZXNwb25zZUhlYWRlcnMgPSBzdHJpbmdCdWlsZGVyLnRv
U3RyaW5nKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2Q0MDMzYmUxZmY3YTE0M2RiMzRkZGNiMWU4YTI1
MGE4ZTBiOTE1My4uMjM0NjlkNDEzYTk4OTY1ZGY5OWYzZTQ4MWEyNzlhNDU2Yzc3NTliNiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAzLTIyICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5j
b20+CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIHNv
cnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDU2NQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVwZGF0
ZSBpbXByb3ZlZCB0ZXN0IHJlc3VsdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtaGlnaHNpZXJyYS9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy1tb2phdmUvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dDoKKwogMjAyMC0w
My0yMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFuIGFuaW1hdGVkIFBORyBwbGF5cyB0aGUgZnJhbWVzIG9uZSB0aW1lIG1vcmUgdGhhbiB0
aGUgaW1hZ2UgbG9vcENvdW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAzMjhh
MjljY2NjNWJjNGQ0M2YyMGU1MTU2NzBjMGVlMWNjODI2YmYxLi5hNTlmMzQwMDU2MGViNjQxN2Y3
YzRmZGIwZTA3N2FiMmE1Y2MzMjM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAyMC0wMy0yMiAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgor
CisgICAgICAgIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSBzb3J0aW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NjUK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVcGRhdGUgaW1w
cm92ZWQgdGVzdCByZXN1bHQuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dl
dGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQ6CisKIDIwMjAtMDMtMjAgIHlvdWVubiBm
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCByb3V0aW5lcyB0byBjaGVj
ayBhYm91dDpibGFuayBhbmQgYWJvdXQ6c3JjZG9jIFVSTHMKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVh
ZGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0CmluZGV4IGExMGY5
ZjAzMGY2ZjZjNWY0NWE4ZTgwYTRhNjA4NzVlMGU4YTQzNDkuLjRiMDM4MWUyMTJmYTljNjZkOGQy
ZTc1MGViYjI3Njg2NGVjOGU3YzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIv
Z2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIAotRkFJ
TCBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgImFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9vLXRlc3Q6IDEs
IDJcclxuX19jdXN0b206IHRva2VuXHJcbiIgYnV0IGdvdCAiX19jdXN0b206IHRva2VuXHJcbmFs
c28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9vLXRlc3Q6IDEsIDJcclxuIgorUEFT
UyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgCiBQQVNTIFhNTEh0dHBS
ZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAxIAogUEFTUyBYTUxIdHRwUmVxdWVzdDog
Z2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgMiAKIFBBU1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJl
c3BvbnNlSGVhZGVycygpIDMgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGExMGY5ZjAzMGY2ZjZjNWY0NWE4ZTgwYTRhNjA4NzVlMGU4YTQzNDkuLjRiMDM4MWUyMTJm
YTljNjZkOGQyZTc1MGViYjI3Njg2NGVjOGU3YzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNw
b25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMt
ZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogCi1GQUlMIFhNTEh0dHBSZXF1ZXN0OiBnZXRB
bGxSZXNwb25zZUhlYWRlcnMoKSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiYWxzby1oZXJlOiBN
ci4gUEJcclxuZXdvazogbGVnb1xyXG5mb28tdGVzdDogMSwgMlxyXG5fX2N1c3RvbTogdG9rZW5c
clxuIiBidXQgZ290ICJfX2N1c3RvbTogdG9rZW5cclxuYWxzby1oZXJlOiBNci4gUEJcclxuZXdv
azogbGVnb1xyXG5mb28tdGVzdDogMSwgMlxyXG4iCitQQVNTIFhNTEh0dHBSZXF1ZXN0OiBnZXRB
bGxSZXNwb25zZUhlYWRlcnMoKSAKIFBBU1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNl
SGVhZGVycygpIDEgCiBQQVNTIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMo
KSAyIAogUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgMyAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1oaWdoc2llcnJhL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtaGlnaHNpZXJyYS9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDViOTA4MWE0Mjg5MDg2NjNkODA5N2M3MDhmMGFmNGQ0NmE3NWVlYmMuLjVjMzU4Y2NiMmQx
MGU0YTEzMTI5NzliZDJkYjQ0MzM5ZmYwZDYwZWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy1oaWdoc2llcnJhL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhy
L2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLWhpZ2hzaWVycmEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIv
Z2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIAotRkFJ
TCBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgYXNzZXJ0X2VxdWFsczog
ZXhwZWN0ZWQgImFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9vLXRlc3Q6IDEs
IDJcclxuX19jdXN0b206IHRva2VuXHJcbiIgYnV0IGdvdCAiX19jdXN0b206IHRva2VuXHJcbmFs
c28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9vLXRlc3Q6IDEsIDJcclxuIgorUEFT
UyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgCiBQQVNTIFhNTEh0dHBS
ZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAxIAogUEFTUyBYTUxIdHRwUmVxdWVzdDog
Z2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgMiAKIFBBU1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJl
c3BvbnNlSGVhZGVycygpIDMgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
bW9qYXZlL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNl
aGVhZGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbW9qYXZlL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1l
eHBlY3RlZC50eHQKaW5kZXggNWI5MDgxYTQyODkwODY2M2Q4MDk3YzcwOGYwYWY0ZDQ2YTc1ZWVi
Yy4uNWMzNThjY2IyZDEwZTRhMTMxMjk3OWJkMmRiNDQzMzlmZjBkNjBlZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLW1vamF2ZS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy1tb2phdmUvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAK
IAotRkFJTCBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgYXNzZXJ0X2Vx
dWFsczogZXhwZWN0ZWQgImFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9vLXRl
c3Q6IDEsIDJcclxuX19jdXN0b206IHRva2VuXHJcbiIgYnV0IGdvdCAiX19jdXN0b206IHRva2Vu
XHJcbmFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29cclxuZm9vLXRlc3Q6IDEsIDJcclxu
IgorUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgCiBQQVNTIFhN
TEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAxIAogUEFTUyBYTUxIdHRwUmVx
dWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgMiAKIFBBU1MgWE1MSHR0cFJlcXVlc3Q6IGdl
dEFsbFJlc3BvbnNlSGVhZGVycygpIDMgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394242</attachid>
            <date>2020-03-23 00:58:50 -0700</date>
            <delta_ts>2020-03-23 09:16:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200565-20200323085848.patch</filename>
            <type>text/plain</type>
            <size>14103</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAwNWI0NjZhYzNkZTc3N2NiYTcxOTg3
ZDUzY2FlZThjYTliZWE1OGIuLmJiY2YzZTgwNTFmODJlMzkyNjUwNmE1ZmNhZjNjMDkyN2JkNWMz
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDMtMjMgIFJvYiBCdWlzICA8cmJ1aXNAaWdh
bGlhLmNvbT4KKworICAgICAgICBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCkgc29ydGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAwNTY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
QWRkIGEgbmV3IG1hbmlwdWxhdG9yIHRoYXQgY2FuIGVmZmljaWVudGx5IGNvbnZlcnQKKyAgICAg
ICAgU3RyaW5ncyB0byBsb3dlciBvciB1cHBlciBBU0NJSS4KKworICAgICAgICAqIHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg6CisgICAgICAgIChXVEY6Omxvd2VyY2FzZSk6CisgICAgICAg
IChXVEY6OnVwcGVyY2FzZSk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5jcHA6Cisg
ICAgICAgIChXVEY6OmdldENoYXJhY3RlcnNXaXRoQVNDSUlDYXNlSW50ZXJuYWwpOgorICAgICAg
ICAoV1RGOjpTdHJpbmdWaWV3OjpnZXRDaGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZSBjb25zdCk6Cisg
ICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorCiAyMDIwLTAzLTIwICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIERlbnkgYWNjZXNz
IHRvIGRhdGFiYXNlIG1hcHBpbmcgc2VydmljZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY2MGNhYzYwMGI3Njdm
NTA5OTM2NTFlNzhlNDEyNzYzNmEyMTZhMjIuLmM0Mjg3Y2VmZTJkZWQwNWNhY2ViNDQwYmVkYTkx
NDNiMjllODg3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMC0wMy0yMyAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFhNTEh0dHBSZXF1ZXN0OiBnZXRB
bGxSZXNwb25zZUhlYWRlcnMoKSBzb3J0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NjUKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICBTb3J0IGhlYWRlcnMgdXNpbmcgdGhlIEFTQ0lJLXVwcGVyY2FzZSBo
ZWFkZXIgbmFtZSBhcyBrZXkgYnV0IHVzZSBBU0NJSS1sb3dlcmNhc2UgaGVhZGVyCisgICAgICAg
IG5hbWVzIGluIHRoZSBzdHJpbmcgcmVzdWx0LgorCisgICAgICAgIE5laGF2aW9yIG1hdGNoZXMg
RmlyZWZveCBhbmQgQ2hyb21lLgorCisgICAgICAgIFRlc3Q6IGltcG9ydGVkL3dlYi1wbGF0Zm9y
bS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLmh0bQorCisgICAgICAgIFsxXSBodHRw
czovL3hoci5zcGVjLndoYXR3Zy5vcmcvI2RvbS14bWxodHRwcmVxdWVzdC1nZXRhbGxyZXNwb25z
ZWhlYWRlcnMKKworICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Z2V0QWxsUmVzcG9uc2VIZWFkZXJzIGNvbnN0KToKKwog
MjAyMC0wMy0yMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgog
CiAgICAgICAgIEFuIGFuaW1hdGVkIFBORyBwbGF5cyB0aGUgZnJhbWVzIG9uZSB0aW1lIG1vcmUg
dGhhbiB0aGUgaW1hZ2UgbG9vcENvdW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlLmgKaW5kZXggZGNmNTJkYjY1MjBhNmQ5ZGQxMTY3ZjQzNGUxNDJjMTczYmI1ZTgxMi4uMzdj
Mjg1MDgyODFhNGRiMzczNDQ5OTE0ZmJkNzhhM2VjODQ5YTM4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGUuaApAQCAtMjg3LDYgKzI4NywzOSBAQCBwcml2YXRlOgogICAg
IEluZGVudGF0aW9uPE4+IG1faW5kZW50YXRpb247CiB9OwogCitzdHJ1Y3QgQVNDSUlDYXNlQ29u
dmVydGVyIHsKKyAgICBTdHJpbmdWaWV3OjpDYXNlQ29udmVydFR5cGUgdHlwZTsKKyAgICBTdHJp
bmdWaWV3IHN0cmluZzsKK307CisKK2lubGluZSBBU0NJSUNhc2VDb252ZXJ0ZXIgbG93ZXJjYXNl
KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcpCit7CisgICAgcmV0dXJuIHsgU3RyaW5nVmll
dzo6Q2FzZUNvbnZlcnRUeXBlOjpMb3dlciwgc3RyaW5nVmlldyB9OworfQorCitpbmxpbmUgQVND
SUlDYXNlQ29udmVydGVyIHVwcGVyY2FzZShjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3KQor
eworICAgIHJldHVybiB7IFN0cmluZ1ZpZXc6OkNhc2VDb252ZXJ0VHlwZTo6VXBwZXIsIHN0cmlu
Z1ZpZXcgfTsKK30KKwordGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxBU0NJSUNh
c2VDb252ZXJ0ZXIsIHZvaWQ+IHsKK3B1YmxpYzoKKyAgICBTdHJpbmdUeXBlQWRhcHRlcihjb25z
dCBBU0NJSUNhc2VDb252ZXJ0ZXImIGNvbnZlcnRlcikKKyAgICAgICAgOiBtX2NvbnZlcnRlciB7
IGNvbnZlcnRlciB9CisgICAgeworICAgIH0KKworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udmVydGVyLnN0cmluZy5sZW5ndGgoKTsgfQorICAgIGJvb2wgaXM4Qml0
KCkgY29uc3QgeyByZXR1cm4gbV9jb252ZXJ0ZXIuc3RyaW5nLmlzOEJpdCgpOyB9CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB3cml0ZVRvKENoYXJhY3RlclR5cGUq
IGRlc3RpbmF0aW9uKSBjb25zdAorICAgIHsKKyAgICAgICAgbV9jb252ZXJ0ZXIuc3RyaW5nLmdl
dENoYXJhY3RlcnNXaXRoQVNDSUlDYXNlKG1fY29udmVydGVyLnR5cGUsIGRlc3RpbmF0aW9uKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgQVNDSUlDYXNlQ29udmVydGVyJiBtX2NvbnZl
cnRlcjsKK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0ZXI+CiBpbmxpbmUgYm9vbCBhcmU4
Qml0KEFkYXB0ZXIgYWRhcHRlcikKIHsKQEAgLTM2NCw2ICszOTcsOCBAQCB1c2luZyBXVEY6Oklu
ZGVudGF0aW9uOwogdXNpbmcgV1RGOjpJbmRlbnRhdGlvblNjb3BlOwogdXNpbmcgV1RGOjptYWtl
U3RyaW5nOwogdXNpbmcgV1RGOjpwYWQ7Cit1c2luZyBXVEY6Omxvd2VyY2FzZTsKIHVzaW5nIFdU
Rjo6dHJ5TWFrZVN0cmluZzsKK3VzaW5nIFdURjo6dXBwZXJjYXNlOwogCiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nT3BlcmF0b3JzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRl
eCA4ZDQ3OThhMWYxYmVlNjAxMDY2ZGJlODMzZGZkMGQwNzQxNTExYzk3Li4wZjYwZmE5ZTk3N2Jk
MGI2ZDAwYjAyMjE4ZDNmMDQ5OGU1YTVjNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5j
cHAKQEAgLTMwLDYgKzMwLDcgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8dW5p
Y29kZS91YnJrLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91bm9ybTIuaD4KKyNpbmNsdWRlIDx3dGYv
QVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTI0Miw2ICsyNDMsMzEg
QEAgU3RyaW5nIFN0cmluZ1ZpZXc6OmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCkgY29uc3QKICAg
ICByZXR1cm4gY29udmVydEFTQ0lJQ2FzZTxBU0NJSUNhc2U6OlVwcGVyPihzdGF0aWNfY2FzdDxj
b25zdCBVQ2hhcio+KG1fY2hhcmFjdGVycyksIG1fbGVuZ3RoKTsKIH0KIAordGVtcGxhdGU8dHlw
ZW5hbWUgRGVzdGluYXRpb25DaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBTb3VyY2VDaGFyYWN0ZXJU
eXBlPgordm9pZCBnZXRDaGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZUludGVybmFsKFN0cmluZ1ZpZXc6
OkNhc2VDb252ZXJ0VHlwZSB0eXBlLCBEZXN0aW5hdGlvbkNoYXJhY3RlclR5cGUqIGRlc3RpbmF0
aW9uLCBjb25zdCBTb3VyY2VDaGFyYWN0ZXJUeXBlKiBzb3VyY2UsIHVuc2lnbmVkIGxlbmd0aCkK
K3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxTb3VyY2VDaGFyYWN0ZXJUeXBlLCBM
Q2hhcj46OnZhbHVlIHx8IHN0ZDo6aXNfc2FtZTxTb3VyY2VDaGFyYWN0ZXJUeXBlLCBVQ2hhcj46
OnZhbHVlKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxEZXN0aW5hdGlvbkNoYXJh
Y3RlclR5cGUsIExDaGFyPjo6dmFsdWUgfHwgc3RkOjppc19zYW1lPERlc3RpbmF0aW9uQ2hhcmFj
dGVyVHlwZSwgVUNoYXI+Ojp2YWx1ZSk7CisgICAgYXV0byBjYXNlQ29udmVydCA9ICh0eXBlID09
IFN0cmluZ1ZpZXc6OkNhc2VDb252ZXJ0VHlwZTo6TG93ZXIpID8gdG9BU0NJSUxvd2VyPFNvdXJj
ZUNoYXJhY3RlclR5cGU+IDogdG9BU0NJSVVwcGVyPFNvdXJjZUNoYXJhY3RlclR5cGU+OworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgZGVzdGluYXRp
b25baV0gPSBjYXNlQ29udmVydChzb3VyY2VbaV0pOworfQorCit2b2lkIFN0cmluZ1ZpZXc6Omdl
dENoYXJhY3RlcnNXaXRoQVNDSUlDYXNlKENhc2VDb252ZXJ0VHlwZSB0eXBlLCBMQ2hhciogZGVz
dGluYXRpb24pIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzOEJpdCgpKTsKKyAgICBnZXRDaGFyYWN0
ZXJzV2l0aEFTQ0lJQ2FzZUludGVybmFsKHR5cGUsIGRlc3RpbmF0aW9uLCBjaGFyYWN0ZXJzOCgp
LCBtX2xlbmd0aCk7Cit9CisKK3ZvaWQgU3RyaW5nVmlldzo6Z2V0Q2hhcmFjdGVyc1dpdGhBU0NJ
SUNhc2UoQ2FzZUNvbnZlcnRUeXBlIHR5cGUsIFVDaGFyKiBkZXN0aW5hdGlvbikgY29uc3QKK3sK
KyAgICBpZiAoaXM4Qml0KCkpIHsKKyAgICAgICAgZ2V0Q2hhcmFjdGVyc1dpdGhBU0NJSUNhc2VJ
bnRlcm5hbCh0eXBlLCBkZXN0aW5hdGlvbiwgY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGdldENoYXJhY3RlcnNXaXRoQVNDSUlDYXNlSW50ZXJu
YWwodHlwZSwgZGVzdGluYXRpb24sIGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCk7Cit9CisKIFN0
cmluZ1ZpZXdXaXRoVW5kZXJseWluZ1N0cmluZyBub3JtYWxpemVkTkZDKFN0cmluZ1ZpZXcgc3Ry
aW5nKQogewogICAgIC8vIExhdGluLTEgY2hhcmFjdGVycyBhcmUgdW5hZmZlY3RlZCBieSBub3Jt
YWxpemF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3Lmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCBiYjE4NjdlYjY3YjYzYjlk
OGYyMmMxMzdiOWI3MDQ3OWZkYjQ4ZTFmLi42Y2ZlYmRiYWI3ZWE0NThlMWQ5NjgwZDEzMTYxOTE0
OGYyMTc5ZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtMTIwLDYgKzEyMCwxMCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBnZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChMQ2hhciopIGNv
bnN0OwogICAgIHZvaWQgZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoVUNoYXIqKSBjb25zdDsK
IAorICAgIGVudW0gY2xhc3MgQ2FzZUNvbnZlcnRUeXBlIHsgVXBwZXIsIExvd2VyIH07CisgICAg
V1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZ2V0Q2hhcmFjdGVyc1dpdGhBU0NJSUNhc2UoQ2FzZUNv
bnZlcnRUeXBlLCBMQ2hhciopIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGdl
dENoYXJhY3RlcnNXaXRoQVNDSUlDYXNlKENhc2VDb252ZXJ0VHlwZSwgVUNoYXIqKSBjb25zdDsK
KwogICAgIFN0cmluZ1ZpZXcgc3Vic3RyaW5nKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5n
dGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpIGNvbnN0OwogICAgIFN0
cmluZ1ZpZXcgbGVmdCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0IHsgcmV0dXJuIHN1YnN0cmluZygw
LCBsZW5ndGgpOyB9CiAgICAgU3RyaW5nVmlldyByaWdodCh1bnNpZ25lZCBsZW5ndGgpIGNvbnN0
IHsgcmV0dXJuIHN1YnN0cmluZyh0aGlzLT5sZW5ndGgoKSAtIGxlbmd0aCwgbGVuZ3RoKTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYzZhNWJkNzkwMjgzMTc0NzMy
ZjViYmE3NzllMGZkYTljNGUyNWM0Ny4uMjNjNDMzMmVhMTI5YjdiZDE4OWNkY2NmM2FmYzhhNjE0
ZTcyYzJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC04MTEsMjIg
KzgxMSwyOSBAQCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OmdldEFsbFJlc3BvbnNlSGVhZGVycygp
IGNvbnN0CiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgaWYgKCFtX2FsbFJl
c3BvbnNlSGVhZGVycykgewotICAgICAgICBWZWN0b3I8U3RyaW5nPiBoZWFkZXJzOworICAgICAg
ICBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gaGVhZGVyczsKICAgICAgICAgaGVh
ZGVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygp
LnNpemUoKSk7CiAKLSAgICAgICAgZm9yIChhdXRvJiBoZWFkZXIgOiBtX3Jlc3BvbnNlLmh0dHBI
ZWFkZXJGaWVsZHMoKSkgewotICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVy
OwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoaGVhZGVyLmtleS5jb252ZXJ0VG9B
U0NJSUxvd2VyY2FzZSgpKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kTGl0ZXJh
bCgiOiAiKTsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGhlYWRlci52YWx1ZSk7
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIlxyXG4iKTsKLSAgICAg
ICAgICAgIGhlYWRlcnMudW5jaGVja2VkQXBwZW5kKHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgc3RkOjpzb3J0KGhlYWRlcnMuYmVnaW4oKSwgaGVhZGVycy5l
bmQoKSwgV1RGOjpjb2RlUG9pbnRDb21wYXJlTGVzc1RoYW4pOworICAgICAgICBmb3IgKGF1dG8m
IGhlYWRlciA6IG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpKQorICAgICAgICAgICAgaGVh
ZGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIoaGVhZGVyLmtleSwgaGVhZGVyLnZh
bHVlKSk7CisKKyAgICAgICAgc3RkOjpzb3J0KGhlYWRlcnMuYmVnaW4oKSwgaGVhZGVycy5lbmQo
KSwgW10gKGNvbnN0IHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4mIHgsIGNvbnN0IHN0ZDo6cGFp
cjxTdHJpbmcsIFN0cmluZz4mIHkpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHhMZW5ndGggPSB4
LmZpcnN0Lmxlbmd0aCgpOworICAgICAgICAgICAgdW5zaWduZWQgeUxlbmd0aCA9IHkuZmlyc3Qu
bGVuZ3RoKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBjb21tb25MZW5ndGggPSBzdGQ6Om1pbih4
TGVuZ3RoLCB5TGVuZ3RoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBj
b21tb25MZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGF1dG8geENoYXJhY3RlciA9IHRv
QVNDSUlVcHBlcih4LmZpcnN0W2ldKTsKKyAgICAgICAgICAgICAgICBhdXRvIHlDaGFyYWN0ZXIg
PSB0b0FTQ0lJVXBwZXIoeS5maXJzdFtpXSk7CisgICAgICAgICAgICAgICAgaWYgKHhDaGFyYWN0
ZXIgIT0geUNoYXJhY3RlcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHhDaGFyYWN0ZXIg
PCB5Q2hhcmFjdGVyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHhMZW5ndGgg
PCB5TGVuZ3RoOworICAgICAgICB9KTsKIAogICAgICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1
aWxkZXI7CiAgICAgICAgIGZvciAoYXV0byYgaGVhZGVyIDogaGVhZGVycykKLSAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuYXBwZW5kKGhlYWRlcik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChsb3dlcmNhc2UoaGVhZGVyLmZpcnN0KSwgIjogIiwgaGVhZGVyLnNlY29uZCwgIlxy
XG4iKTsKKwogICAgICAgICBtX2FsbFJlc3BvbnNlSGVhZGVycyA9IHN0cmluZ0J1aWxkZXIudG9T
dHJpbmcoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3ZDQwMzNiZTFmZjdhMTQzZGIzNGRkY2IxZThhMjUw
YThlMGI5MTUzLi4zNTAxNTNlMWY0OGM2NTUyMDVkYWFhZDk0NjZmMzVjNjk1ZmU5MWIxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDMtMjMgIFJvYiBCdWlzICA8cmJ1aXNAaWdhbGlhLmNv
bT4KKworICAgICAgICBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgc29y
dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAw
NTY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVXBkYXRl
IGltcHJvdmVkIHRlc3QgcmVzdWx0cy4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy1oaWdoc2llcnJhL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogcGxhdGZvcm0vbWFjLW1vamF2ZS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0OgorCiAyMDIwLTAz
LTIxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAg
ICAgQW4gYW5pbWF0ZWQgUE5HIHBsYXlzIHRoZSBmcmFtZXMgb25lIHRpbWUgbW9yZSB0aGFuIHRo
ZSBpbWFnZSBsb29wQ291bnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDMyOGEy
OWNjY2M1YmM0ZDQzZjIwZTUxNTY3MGMwZWUxY2M4MjZiZjEuLjUzNDRjMmY3NmZlZTEzZTM3ZDJk
OWIzYWUzN2ExZjE0ODJmMDVlYWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIwLTAzLTIzICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisK
KyAgICAgICAgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIHNvcnRpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDU2NQor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFVwZGF0ZSBpbXBy
b3ZlZCB0ZXN0IHJlc3VsdC4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0
YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dDoKKwogMjAyMC0wMy0yMCAgeW91ZW5uIGZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHJvdXRpbmVzIHRvIGNoZWNr
IGFib3V0OmJsYW5rIGFuZCBhYm91dDpzcmNkb2MgVVJMcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFk
ZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQKaW5kZXggYTEwZjlm
MDMwZjZmNmM1ZjQ1YThlODBhNGE2MDg3NWUwZThhNDM0OS4uNGIwMzgxZTIxMmZhOWM2NmQ4ZDJl
NzUwZWJiMjc2ODY0ZWM4ZTdjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9n
ZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogCi1GQUlM
IFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSBhc3NlcnRfZXF1YWxzOiBl
eHBlY3RlZCAiYWxzby1oZXJlOiBNci4gUEJcclxuZXdvazogbGVnb1xyXG5mb28tdGVzdDogMSwg
MlxyXG5fX2N1c3RvbTogdG9rZW5cclxuIiBidXQgZ290ICJfX2N1c3RvbTogdG9rZW5cclxuYWxz
by1oZXJlOiBNci4gUEJcclxuZXdvazogbGVnb1xyXG5mb28tdGVzdDogMSwgMlxyXG4iCitQQVNT
IFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAKIFBBU1MgWE1MSHR0cFJl
cXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIDEgCiBQQVNTIFhNTEh0dHBSZXF1ZXN0OiBn
ZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAyIAogUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVz
cG9uc2VIZWFkZXJzKCkgMyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQKaW5k
ZXggYTEwZjlmMDMwZjZmNmM1ZjQ1YThlODBhNGE2MDg3NWUwZThhNDM0OS4uNGIwMzgxZTIxMmZh
OWM2NmQ4ZDJlNzUwZWJiMjc2ODY0ZWM4ZTdjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vaW9zL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3Bv
bnNlaGVhZGVycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1l
eHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiAKLUZBSUwgWE1MSHR0cFJlcXVlc3Q6IGdldEFs
bFJlc3BvbnNlSGVhZGVycygpIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJhbHNvLWhlcmU6IE1y
LiBQQlxyXG5ld29rOiBsZWdvXHJcbmZvby10ZXN0OiAxLCAyXHJcbl9fY3VzdG9tOiB0b2tlblxy
XG4iIGJ1dCBnb3QgIl9fY3VzdG9tOiB0b2tlblxyXG5hbHNvLWhlcmU6IE1yLiBQQlxyXG5ld29r
OiBsZWdvXHJcbmZvby10ZXN0OiAxLCAyXHJcbiIKK1BBU1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFs
bFJlc3BvbnNlSGVhZGVycygpIAogUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VI
ZWFkZXJzKCkgMSAKIFBBU1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygp
IDIgCiBQQVNTIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAzIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWhpZ2hzaWVycmEvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1oaWdoc2llcnJhL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQKaW5k
ZXggNWI5MDgxYTQyODkwODY2M2Q4MDk3YzcwOGYwYWY0ZDQ2YTc1ZWViYy4uNWMzNThjY2IyZDEw
ZTRhMTMxMjk3OWJkMmRiNDQzMzlmZjBkNjBlZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLWhpZ2hzaWVycmEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIv
Z2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtaGlnaHNpZXJyYS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9n
ZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogCi1GQUlM
IFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSBhc3NlcnRfZXF1YWxzOiBl
eHBlY3RlZCAiYWxzby1oZXJlOiBNci4gUEJcclxuZXdvazogbGVnb1xyXG5mb28tdGVzdDogMSwg
MlxyXG5fX2N1c3RvbTogdG9rZW5cclxuIiBidXQgZ290ICJfX2N1c3RvbTogdG9rZW5cclxuYWxz
by1oZXJlOiBNci4gUEJcclxuZXdvazogbGVnb1xyXG5mb28tdGVzdDogMSwgMlxyXG4iCitQQVNT
IFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAKIFBBU1MgWE1MSHR0cFJl
cXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIDEgCiBQQVNTIFhNTEh0dHBSZXF1ZXN0OiBn
ZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAyIAogUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVz
cG9uc2VIZWFkZXJzKCkgMyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1t
b2phdmUvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2Vo
ZWFkZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1tb2phdmUvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4
cGVjdGVkLnR4dAppbmRleCA1YjkwODFhNDI4OTA4NjYzZDgwOTdjNzA4ZjBhZjRkNDZhNzVlZWJj
Li41YzM1OGNjYjJkMTBlNGExMzEyOTc5YmQyZGI0NDMzOWZmMGQ2MGVkIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbW9qYXZlL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLW1vamF2ZS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAog
Ci1GQUlMIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiYWxzby1oZXJlOiBNci4gUEJcclxuZXdvazogbGVnb1xyXG5mb28tdGVz
dDogMSwgMlxyXG5fX2N1c3RvbTogdG9rZW5cclxuIiBidXQgZ290ICJfX2N1c3RvbTogdG9rZW5c
clxuYWxzby1oZXJlOiBNci4gUEJcclxuZXdvazogbGVnb1xyXG5mb28tdGVzdDogMSwgMlxyXG4i
CitQQVNTIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAKIFBBU1MgWE1M
SHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIDEgCiBQQVNTIFhNTEh0dHBSZXF1
ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAyIAogUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0
QWxsUmVzcG9uc2VIZWFkZXJzKCkgMyAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394264</attachid>
            <date>2020-03-23 09:16:41 -0700</date>
            <delta_ts>2020-03-23 12:31:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-200565-20200323171639.patch</filename>
            <type>text/plain</type>
            <size>14188</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4ODE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAwNWI0NjZhYzNkZTc3N2NiYTcxOTg3
ZDUzY2FlZThjYTliZWE1OGIuLmJiY2YzZTgwNTFmODJlMzkyNjUwNmE1ZmNhZjNjMDkyN2JkNWMz
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDMtMjMgIFJvYiBCdWlzICA8cmJ1aXNAaWdh
bGlhLmNvbT4KKworICAgICAgICBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
KCkgc29ydGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjAwNTY1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAg
QWRkIGEgbmV3IG1hbmlwdWxhdG9yIHRoYXQgY2FuIGVmZmljaWVudGx5IGNvbnZlcnQKKyAgICAg
ICAgU3RyaW5ncyB0byBsb3dlciBvciB1cHBlciBBU0NJSS4KKworICAgICAgICAqIHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmg6CisgICAgICAgIChXVEY6Omxvd2VyY2FzZSk6CisgICAgICAg
IChXVEY6OnVwcGVyY2FzZSk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5jcHA6Cisg
ICAgICAgIChXVEY6OmdldENoYXJhY3RlcnNXaXRoQVNDSUlDYXNlSW50ZXJuYWwpOgorICAgICAg
ICAoV1RGOjpTdHJpbmdWaWV3OjpnZXRDaGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZSBjb25zdCk6Cisg
ICAgICAgICogd3RmL3RleHQvU3RyaW5nVmlldy5oOgorCiAyMDIwLTAzLTIwICBQZXIgQXJuZSBW
b2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIERlbnkgYWNjZXNz
IHRvIGRhdGFiYXNlIG1hcHBpbmcgc2VydmljZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY2MGNhYzYwMGI3Njdm
NTA5OTM2NTFlNzhlNDEyNzYzNmEyMTZhMjIuLmM0Mjg3Y2VmZTJkZWQwNWNhY2ViNDQwYmVkYTkx
NDNiMjllODg3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMC0wMy0yMyAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFhNTEh0dHBSZXF1ZXN0OiBnZXRB
bGxSZXNwb25zZUhlYWRlcnMoKSBzb3J0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NjUKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICBTb3J0IGhlYWRlcnMgdXNpbmcgdGhlIEFTQ0lJLXVwcGVyY2FzZSBo
ZWFkZXIgbmFtZSBhcyBrZXkgYnV0IHVzZSBBU0NJSS1sb3dlcmNhc2UgaGVhZGVyCisgICAgICAg
IG5hbWVzIGluIHRoZSBzdHJpbmcgcmVzdWx0LgorCisgICAgICAgIE5laGF2aW9yIG1hdGNoZXMg
RmlyZWZveCBhbmQgQ2hyb21lLgorCisgICAgICAgIFRlc3Q6IGltcG9ydGVkL3dlYi1wbGF0Zm9y
bS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLmh0bQorCisgICAgICAgIFsxXSBodHRw
czovL3hoci5zcGVjLndoYXR3Zy5vcmcvI2RvbS14bWxodHRwcmVxdWVzdC1nZXRhbGxyZXNwb25z
ZWhlYWRlcnMKKworICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6Z2V0QWxsUmVzcG9uc2VIZWFkZXJzIGNvbnN0KToKKwog
MjAyMC0wMy0yMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgog
CiAgICAgICAgIEFuIGFuaW1hdGVkIFBORyBwbGF5cyB0aGUgZnJhbWVzIG9uZSB0aW1lIG1vcmUg
dGhhbiB0aGUgaW1hZ2UgbG9vcENvdW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlLmgKaW5kZXggZGNmNTJkYjY1MjBhNmQ5ZGQxMTY3ZjQzNGUxNDJjMTczYmI1ZTgxMi4uMzdj
Mjg1MDgyODFhNGRiMzczNDQ5OTE0ZmJkNzhhM2VjODQ5YTM4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGUuaApAQCAtMjg3LDYgKzI4NywzOSBAQCBwcml2YXRlOgogICAg
IEluZGVudGF0aW9uPE4+IG1faW5kZW50YXRpb247CiB9OwogCitzdHJ1Y3QgQVNDSUlDYXNlQ29u
dmVydGVyIHsKKyAgICBTdHJpbmdWaWV3OjpDYXNlQ29udmVydFR5cGUgdHlwZTsKKyAgICBTdHJp
bmdWaWV3IHN0cmluZzsKK307CisKK2lubGluZSBBU0NJSUNhc2VDb252ZXJ0ZXIgbG93ZXJjYXNl
KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmluZ1ZpZXcpCit7CisgICAgcmV0dXJuIHsgU3RyaW5nVmll
dzo6Q2FzZUNvbnZlcnRUeXBlOjpMb3dlciwgc3RyaW5nVmlldyB9OworfQorCitpbmxpbmUgQVND
SUlDYXNlQ29udmVydGVyIHVwcGVyY2FzZShjb25zdCBTdHJpbmdWaWV3JiBzdHJpbmdWaWV3KQor
eworICAgIHJldHVybiB7IFN0cmluZ1ZpZXc6OkNhc2VDb252ZXJ0VHlwZTo6VXBwZXIsIHN0cmlu
Z1ZpZXcgfTsKK30KKwordGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxBU0NJSUNh
c2VDb252ZXJ0ZXIsIHZvaWQ+IHsKK3B1YmxpYzoKKyAgICBTdHJpbmdUeXBlQWRhcHRlcihjb25z
dCBBU0NJSUNhc2VDb252ZXJ0ZXImIGNvbnZlcnRlcikKKyAgICAgICAgOiBtX2NvbnZlcnRlciB7
IGNvbnZlcnRlciB9CisgICAgeworICAgIH0KKworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udmVydGVyLnN0cmluZy5sZW5ndGgoKTsgfQorICAgIGJvb2wgaXM4Qml0
KCkgY29uc3QgeyByZXR1cm4gbV9jb252ZXJ0ZXIuc3RyaW5nLmlzOEJpdCgpOyB9CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gdm9pZCB3cml0ZVRvKENoYXJhY3RlclR5cGUq
IGRlc3RpbmF0aW9uKSBjb25zdAorICAgIHsKKyAgICAgICAgbV9jb252ZXJ0ZXIuc3RyaW5nLmdl
dENoYXJhY3RlcnNXaXRoQVNDSUlDYXNlKG1fY29udmVydGVyLnR5cGUsIGRlc3RpbmF0aW9uKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgQVNDSUlDYXNlQ29udmVydGVyJiBtX2NvbnZl
cnRlcjsKK307CisKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0ZXI+CiBpbmxpbmUgYm9vbCBhcmU4
Qml0KEFkYXB0ZXIgYWRhcHRlcikKIHsKQEAgLTM2NCw2ICszOTcsOCBAQCB1c2luZyBXVEY6Oklu
ZGVudGF0aW9uOwogdXNpbmcgV1RGOjpJbmRlbnRhdGlvblNjb3BlOwogdXNpbmcgV1RGOjptYWtl
U3RyaW5nOwogdXNpbmcgV1RGOjpwYWQ7Cit1c2luZyBXVEY6Omxvd2VyY2FzZTsKIHVzaW5nIFdU
Rjo6dHJ5TWFrZVN0cmluZzsKK3VzaW5nIFdURjo6dXBwZXJjYXNlOwogCiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nT3BlcmF0b3JzLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmNwcAppbmRl
eCA4ZDQ3OThhMWYxYmVlNjAxMDY2ZGJlODMzZGZkMGQwNzQxNTExYzk3Li5kMTNiYjZjOTFmOWVi
Y2EzMzBkZTUxZGQwNWMyN2UwNTk2YWNhMmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5j
cHAKQEAgLTMwLDYgKzMwLDcgQEAgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8dW5p
Y29kZS91YnJrLmg+CiAjaW5jbHVkZSA8dW5pY29kZS91bm9ybTIuaD4KKyNpbmNsdWRlIDx3dGYv
QVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xv
Y2suaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTI0Miw2ICsyNDMsMzIg
QEAgU3RyaW5nIFN0cmluZ1ZpZXc6OmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCkgY29uc3QKICAg
ICByZXR1cm4gY29udmVydEFTQ0lJQ2FzZTxBU0NJSUNhc2U6OlVwcGVyPihzdGF0aWNfY2FzdDxj
b25zdCBVQ2hhcio+KG1fY2hhcmFjdGVycyksIG1fbGVuZ3RoKTsKIH0KIAordGVtcGxhdGU8dHlw
ZW5hbWUgRGVzdGluYXRpb25DaGFyYWN0ZXJUeXBlLCB0eXBlbmFtZSBTb3VyY2VDaGFyYWN0ZXJU
eXBlPgordm9pZCBnZXRDaGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZUludGVybmFsKFN0cmluZ1ZpZXc6
OkNhc2VDb252ZXJ0VHlwZSB0eXBlLCBEZXN0aW5hdGlvbkNoYXJhY3RlclR5cGUqIGRlc3RpbmF0
aW9uLCBjb25zdCBTb3VyY2VDaGFyYWN0ZXJUeXBlKiBzb3VyY2UsIHVuc2lnbmVkIGxlbmd0aCkK
K3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxTb3VyY2VDaGFyYWN0ZXJUeXBlLCBM
Q2hhcj46OnZhbHVlIHx8IHN0ZDo6aXNfc2FtZTxTb3VyY2VDaGFyYWN0ZXJUeXBlLCBVQ2hhcj46
OnZhbHVlKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxEZXN0aW5hdGlvbkNoYXJh
Y3RlclR5cGUsIExDaGFyPjo6dmFsdWUgfHwgc3RkOjppc19zYW1lPERlc3RpbmF0aW9uQ2hhcmFj
dGVyVHlwZSwgVUNoYXI+Ojp2YWx1ZSk7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRGVzdGlu
YXRpb25DaGFyYWN0ZXJUeXBlKSA+PSBzaXplb2YoU291cmNlQ2hhcmFjdGVyVHlwZSkpOworICAg
IGF1dG8gY2FzZUNvbnZlcnQgPSAodHlwZSA9PSBTdHJpbmdWaWV3OjpDYXNlQ29udmVydFR5cGU6
Okxvd2VyKSA/IHRvQVNDSUlMb3dlcjxTb3VyY2VDaGFyYWN0ZXJUeXBlPiA6IHRvQVNDSUlVcHBl
cjxTb3VyY2VDaGFyYWN0ZXJUeXBlPjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpCisgICAgICAgIGRlc3RpbmF0aW9uW2ldID0gY2FzZUNvbnZlcnQoc291cmNlW2ld
KTsKK30KKwordm9pZCBTdHJpbmdWaWV3OjpnZXRDaGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZShDYXNl
Q29udmVydFR5cGUgdHlwZSwgTENoYXIqIGRlc3RpbmF0aW9uKSBjb25zdAoreworICAgIEFTU0VS
VChpczhCaXQoKSk7CisgICAgZ2V0Q2hhcmFjdGVyc1dpdGhBU0NJSUNhc2VJbnRlcm5hbCh0eXBl
LCBkZXN0aW5hdGlvbiwgY2hhcmFjdGVyczgoKSwgbV9sZW5ndGgpOworfQorCit2b2lkIFN0cmlu
Z1ZpZXc6OmdldENoYXJhY3RlcnNXaXRoQVNDSUlDYXNlKENhc2VDb252ZXJ0VHlwZSB0eXBlLCBV
Q2hhciogZGVzdGluYXRpb24pIGNvbnN0Cit7CisgICAgaWYgKGlzOEJpdCgpKSB7CisgICAgICAg
IGdldENoYXJhY3RlcnNXaXRoQVNDSUlDYXNlSW50ZXJuYWwodHlwZSwgZGVzdGluYXRpb24sIGNo
YXJhY3RlcnM4KCksIG1fbGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBnZXRD
aGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZUludGVybmFsKHR5cGUsIGRlc3RpbmF0aW9uLCBjaGFyYWN0
ZXJzMTYoKSwgbV9sZW5ndGgpOworfQorCiBTdHJpbmdWaWV3V2l0aFVuZGVybHlpbmdTdHJpbmcg
bm9ybWFsaXplZE5GQyhTdHJpbmdWaWV3IHN0cmluZykKIHsKICAgICAvLyBMYXRpbi0xIGNoYXJh
Y3RlcnMgYXJlIHVuYWZmZWN0ZWQgYnkgbm9ybWFsaXphdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmgKaW5kZXggYmIxODY3ZWI2N2I2M2I5ZDhmMjJjMTM3YjliNzA0NzlmZGI0OGUxZi4uNmNm
ZWJkYmFiN2VhNDU4ZTFkOTY4MGQxMzE2MTkxNDhmMjE3OWYwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdWaWV3LmgKQEAgLTEyMCw2ICsxMjAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0Q2hhcmFj
dGVyc1dpdGhVcGNvbnZlcnQoTENoYXIqKSBjb25zdDsKICAgICB2b2lkIGdldENoYXJhY3RlcnNX
aXRoVXBjb252ZXJ0KFVDaGFyKikgY29uc3Q7CiAKKyAgICBlbnVtIGNsYXNzIENhc2VDb252ZXJ0
VHlwZSB7IFVwcGVyLCBMb3dlciB9OworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGdldENo
YXJhY3RlcnNXaXRoQVNDSUlDYXNlKENhc2VDb252ZXJ0VHlwZSwgTENoYXIqKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBnZXRDaGFyYWN0ZXJzV2l0aEFTQ0lJQ2FzZShDYXNl
Q29udmVydFR5cGUsIFVDaGFyKikgY29uc3Q7CisKICAgICBTdHJpbmdWaWV3IHN1YnN0cmluZyh1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoID0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKSBjb25zdDsKICAgICBTdHJpbmdWaWV3IGxlZnQodW5zaWduZWQgbGVuZ3Ro
KSBjb25zdCB7IHJldHVybiBzdWJzdHJpbmcoMCwgbGVuZ3RoKTsgfQogICAgIFN0cmluZ1ZpZXcg
cmlnaHQodW5zaWduZWQgbGVuZ3RoKSBjb25zdCB7IHJldHVybiBzdWJzdHJpbmcodGhpcy0+bGVu
Z3RoKCkgLSBsZW5ndGgsIGxlbmd0aCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCmluZGV4IGM2YTViZDc5MDI4MzE3NDczMmY1YmJhNzc5ZTBmZGE5YzRlMjVjNDcuLjIzYzQz
MzJlYTEyOWI3YmQxODljZGNjZjNhZmM4YTYxNGU3MmMyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcApAQCAtODExLDIyICs4MTEsMjkgQEAgU3RyaW5nIFhNTEh0dHBSZXF1
ZXN0OjpnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSBjb25zdAogICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKIAogICAgIGlmICghbV9hbGxSZXNwb25zZUhlYWRlcnMpIHsKLSAgICAgICAgVmVj
dG9yPFN0cmluZz4gaGVhZGVyczsKKyAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+IGhlYWRlcnM7CiAgICAgICAgIGhlYWRlcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSht
X3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5zaXplKCkpOwogCi0gICAgICAgIGZvciAoYXV0
byYgaGVhZGVyIDogbV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkpIHsKLSAgICAgICAgICAg
IFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLSAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKGhlYWRlci5rZXkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7Ci0gICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZExpdGVyYWwoIjogIik7Ci0gICAgICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChoZWFkZXIudmFsdWUpOwotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJcclxuIik7Ci0gICAgICAgICAgICBoZWFkZXJzLnVuY2hlY2tlZEFwcGVu
ZChzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCkpOwotICAgICAgICB9Ci0gICAgICAgIHN0ZDo6c29y
dChoZWFkZXJzLmJlZ2luKCksIGhlYWRlcnMuZW5kKCksIFdURjo6Y29kZVBvaW50Q29tcGFyZUxl
c3NUaGFuKTsKKyAgICAgICAgZm9yIChhdXRvJiBoZWFkZXIgOiBtX3Jlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZHMoKSkKKyAgICAgICAgICAgIGhlYWRlcnMudW5jaGVja2VkQXBwZW5kKHN0ZDo6bWFr
ZV9wYWlyKGhlYWRlci5rZXksIGhlYWRlci52YWx1ZSkpOworCisgICAgICAgIHN0ZDo6c29ydCho
ZWFkZXJzLmJlZ2luKCksIGhlYWRlcnMuZW5kKCksIFtdIChjb25zdCBzdGQ6OnBhaXI8U3RyaW5n
LCBTdHJpbmc+JiB4LCBjb25zdCBzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+JiB5KSB7CisgICAg
ICAgICAgICB1bnNpZ25lZCB4TGVuZ3RoID0geC5maXJzdC5sZW5ndGgoKTsKKyAgICAgICAgICAg
IHVuc2lnbmVkIHlMZW5ndGggPSB5LmZpcnN0Lmxlbmd0aCgpOworICAgICAgICAgICAgdW5zaWdu
ZWQgY29tbW9uTGVuZ3RoID0gc3RkOjptaW4oeExlbmd0aCwgeUxlbmd0aCk7CisgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29tbW9uTGVuZ3RoOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICBhdXRvIHhDaGFyYWN0ZXIgPSB0b0FTQ0lJVXBwZXIoeC5maXJzdFtpXSk7CisgICAg
ICAgICAgICAgICAgYXV0byB5Q2hhcmFjdGVyID0gdG9BU0NJSVVwcGVyKHkuZmlyc3RbaV0pOwor
ICAgICAgICAgICAgICAgIGlmICh4Q2hhcmFjdGVyICE9IHlDaGFyYWN0ZXIpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB4Q2hhcmFjdGVyIDwgeUNoYXJhY3RlcjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybiB4TGVuZ3RoIDwgeUxlbmd0aDsKKyAgICAgICAgfSk7CiAKICAg
ICAgICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwogICAgICAgICBmb3IgKGF1dG8mIGhl
YWRlciA6IGhlYWRlcnMpCi0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChoZWFkZXIp
OworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQobG93ZXJjYXNlKGhlYWRlci5maXJz
dCksICI6ICIsIGhlYWRlci5zZWNvbmQsICJcclxuIik7CisKICAgICAgICAgbV9hbGxSZXNwb25z
ZUhlYWRlcnMgPSBzdHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggN2Q0
MDMzYmUxZmY3YTE0M2RiMzRkZGNiMWU4YTI1MGE4ZTBiOTE1My4uMzUwMTUzZTFmNDhjNjU1MjA1
ZGFhYWQ5NDY2ZjM1YzY5NWZlOTFiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTAzLTIz
ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgWE1MSHR0cFJlcXVlc3Q6
IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIHNvcnRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMDU2NQorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgorCisgICAgICAgIFVwZGF0ZSBpbXByb3ZlZCB0ZXN0IHJlc3VsdHMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIv
Z2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMtaGlnaHNpZXJyYS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxy
ZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL21hYy1tb2ph
dmUvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFk
ZXJzLWV4cGVjdGVkLnR4dDoKKwogMjAyMC0wMy0yMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJv
dWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFuIGFuaW1hdGVkIFBORyBwbGF5cyB0aGUg
ZnJhbWVzIG9uZSB0aW1lIG1vcmUgdGhhbiB0aGUgaW1hZ2UgbG9vcENvdW50CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAzMjhhMjljY2NjNWJjNGQ0M2YyMGU1MTU2NzBjMGVlMWNj
ODI2YmYxLi41MzQ0YzJmNzZmZWUxM2UzN2QyZDliM2FlMzdhMWYxNDgyZjA1ZWFkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMy0yMyAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFhNTEh0dHBSZXF1ZXN0OiBnZXRB
bGxSZXNwb25zZUhlYWRlcnMoKSBzb3J0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA1NjUKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICBVcGRhdGUgaW1wcm92ZWQgdGVzdCByZXN1bHQuCisKKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50
eHQ6CisKIDIwMjAtMDMtMjAgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCByb3V0aW5lcyB0byBjaGVjayBhYm91dDpibGFuayBhbmQgYWJvdXQ6c3JjZG9j
IFVSTHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRl
cnMtZXhwZWN0ZWQudHh0CmluZGV4IGExMGY5ZjAzMGY2ZjZjNWY0NWE4ZTgwYTRhNjA4NzVlMGU4
YTQzNDkuLjRiMDM4MWUyMTJmYTljNjZkOGQyZTc1MGViYjI3Njg2NGVjOGU3YzcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFs
bHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVk
LnR4dApAQCAtMSw1ICsxLDUgQEAKIAotRkFJTCBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9u
c2VIZWFkZXJzKCkgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFsc28taGVyZTogTXIuIFBCXHJc
bmV3b2s6IGxlZ29cclxuZm9vLXRlc3Q6IDEsIDJcclxuX19jdXN0b206IHRva2VuXHJcbiIgYnV0
IGdvdCAiX19jdXN0b206IHRva2VuXHJcbmFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29c
clxuZm9vLXRlc3Q6IDEsIDJcclxuIgorUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9u
c2VIZWFkZXJzKCkgCiBQQVNTIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMo
KSAxIAogUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgMiAKIFBB
U1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIDMgCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNw
b25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0CmluZGV4IGExMGY5ZjAzMGY2ZjZjNWY0NWE4ZTgwYTRh
NjA4NzVlMGU4YTQzNDkuLjRiMDM4MWUyMTJmYTljNjZkOGQyZTc1MGViYjI3Njg2NGVjOGU3Yzcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3hoci9nZXRhbGxyZXNwb25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAog
Ci1GQUlMIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSBhc3NlcnRfZXF1
YWxzOiBleHBlY3RlZCAiYWxzby1oZXJlOiBNci4gUEJcclxuZXdvazogbGVnb1xyXG5mb28tdGVz
dDogMSwgMlxyXG5fX2N1c3RvbTogdG9rZW5cclxuIiBidXQgZ290ICJfX2N1c3RvbTogdG9rZW5c
clxuYWxzby1oZXJlOiBNci4gUEJcclxuZXdvazogbGVnb1xyXG5mb28tdGVzdDogMSwgMlxyXG4i
CitQQVNTIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAKIFBBU1MgWE1M
SHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIDEgCiBQQVNTIFhNTEh0dHBSZXF1
ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMoKSAyIAogUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0
QWxsUmVzcG9uc2VIZWFkZXJzKCkgMyAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy1oaWdoc2llcnJhL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFs
bHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
aGlnaHNpZXJyYS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNw
b25zZWhlYWRlcnMtZXhwZWN0ZWQudHh0CmluZGV4IDViOTA4MWE0Mjg5MDg2NjNkODA5N2M3MDhm
MGFmNGQ0NmE3NWVlYmMuLjVjMzU4Y2NiMmQxMGU0YTEzMTI5NzliZDJkYjQ0MzM5ZmYwZDYwZWQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1oaWdoc2llcnJhL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWhpZ2hzaWVycmEvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4cGVjdGVk
LnR4dApAQCAtMSw1ICsxLDUgQEAKIAotRkFJTCBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9u
c2VIZWFkZXJzKCkgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFsc28taGVyZTogTXIuIFBCXHJc
bmV3b2s6IGxlZ29cclxuZm9vLXRlc3Q6IDEsIDJcclxuX19jdXN0b206IHRva2VuXHJcbiIgYnV0
IGdvdCAiX19jdXN0b206IHRva2VuXHJcbmFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6IGxlZ29c
clxuZm9vLXRlc3Q6IDEsIDJcclxuIgorUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9u
c2VIZWFkZXJzKCkgCiBQQVNTIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhlYWRlcnMo
KSAxIAogUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgMiAKIFBB
U1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIDMgCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbW9qYXZlL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMveGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtbW9qYXZlL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
eGhyL2dldGFsbHJlc3BvbnNlaGVhZGVycy1leHBlY3RlZC50eHQKaW5kZXggNWI5MDgxYTQyODkw
ODY2M2Q4MDk3YzcwOGYwYWY0ZDQ2YTc1ZWViYy4uNWMzNThjY2IyZDEwZTRhMTMxMjk3OWJkMmRi
NDQzMzlmZjBkNjBlZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLW1vamF2
ZS9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3hoci9nZXRhbGxyZXNwb25zZWhlYWRl
cnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy1tb2phdmUvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy94aHIvZ2V0YWxscmVzcG9uc2VoZWFkZXJzLWV4
cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIAotRkFJTCBYTUxIdHRwUmVxdWVzdDogZ2V0QWxs
UmVzcG9uc2VIZWFkZXJzKCkgYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgImFsc28taGVyZTogTXIu
IFBCXHJcbmV3b2s6IGxlZ29cclxuZm9vLXRlc3Q6IDEsIDJcclxuX19jdXN0b206IHRva2VuXHJc
biIgYnV0IGdvdCAiX19jdXN0b206IHRva2VuXHJcbmFsc28taGVyZTogTXIuIFBCXHJcbmV3b2s6
IGxlZ29cclxuZm9vLXRlc3Q6IDEsIDJcclxuIgorUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxs
UmVzcG9uc2VIZWFkZXJzKCkgCiBQQVNTIFhNTEh0dHBSZXF1ZXN0OiBnZXRBbGxSZXNwb25zZUhl
YWRlcnMoKSAxIAogUEFTUyBYTUxIdHRwUmVxdWVzdDogZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkg
MiAKIFBBU1MgWE1MSHR0cFJlcXVlc3Q6IGdldEFsbFJlc3BvbnNlSGVhZGVycygpIDMgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>