<?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>205654</bug_id>
          
          <creation_ts>2019-12-30 21:56:54 -0800</creation_ts>
          <short_desc>Make _callAsyncFunction:withArguments: work with promises</short_desc>
          <delta_ts>2020-01-17 09:28:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>Other</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jbedard</cc>
    
    <cc>saam</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1601956</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-12-30 21:56:54 -0800</bug_when>
    <thetext>Make _callAsyncFunction:withArguments: work with promises</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603279</commentid>
    <comment_count>1</comment_count>
      <attachid>386888</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-06 14:30:25 -0800</bug_when>
    <thetext>Created attachment 386888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603300</commentid>
    <comment_count>2</comment_count>
      <attachid>386888</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-06 14:57:20 -0800</bug_when>
    <thetext>Comment on attachment 386888
Patch

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

r=me

&gt; Source/WTF/wtf/SharedFunction.h:36
&gt; +class SharedFunction&lt;Out(In...)&gt; : public RefCounted&lt;SharedFunction&lt;Out(In...)&gt;&gt; {

I think instead of this we can just use SharedTask

&gt; Source/WebCore/bindings/js/ScriptController.cpp:715
&gt; +    auto thenIdentifier = world.vm().propertyNames-&gt;builtinNames().thenPrivateName();

this should be: &quot;world.vm().propertyNames-&gt;then&quot;.

A test that would catch this is using your own &quot;thenable&quot;

&gt; Source/WebCore/bindings/js/ScriptController.cpp:719
&gt; +    if (!thenFunction.isFunction(world.vm())) {

The right check here is:

CallData ignoredCallData;
if (thenFunction.isObject &amp;&amp; asObject(thenFunction)-&gt;methodTable(vm)-&gt;getCallData(asObject(thenFunction), ignoredCallData) != CallType::None)

I think a test for a callable which does not pass the isFunction() query would be something like this with a Proxy as the &quot;thenFunction&quot;:
let p = new Proxy(function() { 
    print(&quot;this should be called&quot;);
}, { });
let thenable = {then: p};

&gt; Source/WebCore/bindings/js/ScriptController.cpp:740
&gt; +    auto finalizeCount = makeUniqueWithoutFastMallocCheck&lt;unsigned&gt;(0);

nit: can you change makeUnique to just check if T is a primitive?

&gt; Source/WebCore/bindings/js/ScriptController.cpp:747
&gt; +    if (heap) {

these branches are not needed.

&gt; Source/WebCore/bindings/js/ScriptController.cpp:754
&gt; +    if (heap) {

ditto.

&gt; Source/WebCore/bindings/js/ScriptController.cpp:756
&gt; +            finalizeGuard.get()();

instead of getting the heap pointer here, you can just do:

world.vm().heap</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603349</commentid>
    <comment_count>3</comment_count>
      <attachid>386907</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-06 16:03:03 -0800</bug_when>
    <thetext>Created attachment 386907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603589</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-07 08:51:03 -0800</bug_when>
    <thetext>The problem with these test runs is spamming to the console from the AsyncFunction.Promise test affecting later runs.

Damn.

Fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603851</commentid>
    <comment_count>5</comment_count>
      <attachid>387049</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-07 16:07:05 -0800</bug_when>
    <thetext>Created attachment 387049
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603852</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-07 16:07:36 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #4)
&gt; The problem with these test runs is spamming to the console from the
&gt; AsyncFunction.Promise test affecting later runs.
&gt; 
&gt; Damn.
&gt; 
&gt; Fixing.

Nope that wasn&apos;t it.

Accidentally applying the new async behavior to everybody.

Fixed in most recent upload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603951</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-07 21:58:39 -0800</bug_when>
    <thetext>That fixed the collateral damage to other API tests but revealed that the original AsyncFunction tests are now busted.

I can&apos;t quite figure out why, other than verify locally before this patch they work, and with it applied they don&apos;t.

It&apos;s a problem with serialization.

Before my patch, a JSC::JSValue representing &quot;undefined&quot; successfully serializes. Same for  &quot;null&quot;

With my patch, those exact same JSValues do not serialize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603952</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-07 22:04:08 -0800</bug_when>
    <thetext>For the &quot;null&quot; and &quot;undefined&quot; jsvalues,

SerializedScriptValue::create(JSContextRef originContext, JSValueRef apiValue, JSValueRef* exception) succeeds before my patch

It fails after my patch because it has an exception.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603956</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-07 22:12:09 -0800</bug_when>
    <thetext>Here&apos;s the body of SerializedScriptValue::create.

With my patch, an exception occurs in here.
Without my patch, it doesn&apos;t.

RefPtr&lt;SerializedScriptValue&gt; SerializedScriptValue::create(JSContextRef originContext, JSValueRef apiValue, JSValueRef* exception)
{
    JSGlobalObject* lexicalGlobalObject = toJS(originContext);
    VM&amp; vm = lexicalGlobalObject-&gt;vm();
    JSLockHolder locker(vm);
    auto scope = DECLARE_CATCH_SCOPE(vm);

    JSValue value = toJS(lexicalGlobalObject, apiValue);

------&gt; Exception happens in the above line

    auto serializedValue = SerializedScriptValue::create(*lexicalGlobalObject, value);
    if (UNLIKELY(scope.exception())) {
        if (exception)
            *exception = toRef(lexicalGlobalObject, scope.exception()-&gt;value());
        scope.clearException();
        return nullptr;
    }
    ASSERT(serializedValue);
    return serializedValue;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603958</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-07 22:18:39 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #9)
&gt; Here&apos;s the body of SerializedScriptValue::create.
&gt; 
&gt; With my patch, an exception occurs in here.
&gt; Without my patch, it doesn&apos;t.
&gt; 
&gt; RefPtr&lt;SerializedScriptValue&gt; SerializedScriptValue::create(JSContextRef
&gt; originContext, JSValueRef apiValue, JSValueRef* exception)
&gt; {
&gt;     JSGlobalObject* lexicalGlobalObject = toJS(originContext);
&gt;     VM&amp; vm = lexicalGlobalObject-&gt;vm();
&gt;     JSLockHolder locker(vm);
&gt;     auto scope = DECLARE_CATCH_SCOPE(vm);
&gt; 
&gt;     JSValue value = toJS(lexicalGlobalObject, apiValue);
&gt; 
&gt; ------&gt; Exception happens in the above line
&gt; 
&gt;     auto serializedValue =
&gt; SerializedScriptValue::create(*lexicalGlobalObject, value);
&gt;     if (UNLIKELY(scope.exception())) {
&gt;         if (exception)
&gt;             *exception = toRef(lexicalGlobalObject,
&gt; scope.exception()-&gt;value());
&gt;         scope.clearException();
&gt;         return nullptr;
&gt;     }
&gt;     ASSERT(serializedValue);
&gt;     return serializedValue;
&gt; }

Nope, I was wrong - the exception has already occurred the moment you make the DECLARE_CATCH_SCOPE.

This must be because of my patch&apos;s attempt to pull the &quot;then&quot; property from the result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603961</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-07 22:24:56 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #10)
&gt; (In reply to Brady Eidson from comment #9
&gt; 
&gt; Nope, I was wrong - the exception has already occurred the moment you make
&gt; the DECLARE_CATCH_SCOPE.
&gt; 
&gt; This must be because of my patch&apos;s attempt to pull the &quot;then&quot; property from
&gt; the result.

Confirmed. By smattering exception scope checks throughout ScriptController::executeAsynchronousUserAgentScriptInWorld I found it occurs on this line:

    auto thenFunction = result.value().get(&amp;globalObject, thenIdentifier);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603962</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-07 22:26:04 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #11)
&gt; (In reply to Brady Eidson from comment #10)
&gt; &gt; (In reply to Brady Eidson from comment #9
&gt; &gt; 
&gt; &gt; Nope, I was wrong - the exception has already occurred the moment you make
&gt; &gt; the DECLARE_CATCH_SCOPE.
&gt; &gt; 
&gt; &gt; This must be because of my patch&apos;s attempt to pull the &quot;then&quot; property from
&gt; &gt; the result.
&gt; 
&gt; Confirmed. By smattering exception scope checks throughout
&gt; ScriptController::executeAsynchronousUserAgentScriptInWorld I found it
&gt; occurs on this line:
&gt; 
&gt;     auto thenFunction = result.value().get(&amp;globalObject, thenIdentifier);

It appears doing that on a JSNull or JSUndefined throws an exception.

Will try my own fix and make sure Saam takes another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603964</commentid>
    <comment_count>13</comment_count>
      <attachid>387079</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-07 22:38:09 -0800</bug_when>
    <thetext>Created attachment 387079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603965</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-07 22:39:12 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #13)
&gt; Created attachment 387079 [details]
&gt; Patch

Basically added an &quot;isNullOrUndefined()&quot; check on the value before we try to extract &quot;then&quot; from it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603973</commentid>
    <comment_count>15</comment_count>
      <attachid>387079</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-07 22:53:54 -0800</bug_when>
    <thetext>Comment on attachment 387079
Patch

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

&gt; Source/WebCore/bindings/js/ScriptController.cpp:718
&gt; +    auto thenFunction = result.value().get(&amp;globalObject, thenIdentifier);

I think the appropriate check is just to check for exceptions after this (and maybe omit the isUndefinedOrNull, since that&apos;ll just fall out from this).
(Even if result.value() isn&apos;t null or undefined, this &quot;get&quot; may run arbitrary JS code, and can throw. For. example, when it&apos;s a getter).

I think you want to declare a catch scope, and return early (and maybe reject?) if an exception is thrown.

The only other place where an exception might get thrown is your JS function call at the bottom. However, since that&apos;s the final thing in this function, you can call &quot;release&quot; on your exception scope before doing the JS call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603975</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-07 23:12:15 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #15)
&gt; Comment on attachment 387079 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=387079&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptController.cpp:718
&gt; &gt; +    auto thenFunction = result.value().get(&amp;globalObject, thenIdentifier);
&gt; 
&gt; I think the appropriate check is just to check for exceptions after this
&gt; (and maybe omit the isUndefinedOrNull, since that&apos;ll just fall out from
&gt; this).
&gt; (Even if result.value() isn&apos;t null or undefined, this &quot;get&quot; may run
&gt; arbitrary JS code, and can throw. For. example, when it&apos;s a getter).

Okay, but...

&gt; I think you want to declare a catch scope, and return early (and maybe
&gt; reject?) if an exception is thrown.

No, because it&apos;s 100% valid to return null or undefined and pass them back to the UI process.

So if looking up &quot;then&quot; on a real object can run arbitrary JS code and throw an exception, we definitely should pass that back to the UI process as an error.

But looking up &quot;then&quot; on null or undefined should silently fail, and we need to pass back null or undefined to the UI process.

I&apos;m guessing that it&apos;s impossible to detect *why* an exception was thrown in the get() call, and therefore I need to prequalify the value beforehand, like in this patch?

Or is there something else I&apos;m missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604087</commentid>
    <comment_count>17</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-08 07:29:40 -0800</bug_when>
    <thetext>Note: The api-ios failures here are not due to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604165</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-08 11:12:25 -0800</bug_when>
    <thetext>Pow-wow&apos;ed with Keith - Should do an isObject check before doing the get (This is what some of the related ES spec algorithms do)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604171</commentid>
    <comment_count>19</comment_count>
      <attachid>387116</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-08 11:21:48 -0800</bug_when>
    <thetext>Created attachment 387116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604185</commentid>
    <comment_count>20</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-08 11:41:02 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #16)
&gt; (In reply to Saam Barati from comment #15)
&gt; &gt; Comment on attachment 387079 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=387079&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/bindings/js/ScriptController.cpp:718
&gt; &gt; &gt; +    auto thenFunction = result.value().get(&amp;globalObject, thenIdentifier);
&gt; &gt; 
&gt; &gt; I think the appropriate check is just to check for exceptions after this
&gt; &gt; (and maybe omit the isUndefinedOrNull, since that&apos;ll just fall out from
&gt; &gt; this).
&gt; &gt; (Even if result.value() isn&apos;t null or undefined, this &quot;get&quot; may run
&gt; &gt; arbitrary JS code, and can throw. For. example, when it&apos;s a getter).
&gt; 
&gt; Okay, but...
&gt; 
&gt; &gt; I think you want to declare a catch scope, and return early (and maybe
&gt; &gt; reject?) if an exception is thrown.
&gt; 
&gt; No, because it&apos;s 100% valid to return null or undefined and pass them back
&gt; to the UI process.
I see. I didn&apos;t realize that.

What Keith suggested to you seems reasonable to me too.

&gt; 
&gt; So if looking up &quot;then&quot; on a real object can run arbitrary JS code and throw
&gt; an exception, we definitely should pass that back to the UI process as an
&gt; error.
&gt; 
&gt; But looking up &quot;then&quot; on null or undefined should silently fail, and we need
&gt; to pass back null or undefined to the UI process.
&gt; 
&gt; I&apos;m guessing that it&apos;s impossible to detect *why* an exception was thrown in
&gt; the get() call, and therefore I need to prequalify the value beforehand,
&gt; like in this patch?
&gt; 
&gt; Or is there something else I&apos;m missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604186</commentid>
    <comment_count>21</comment_count>
      <attachid>387116</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-01-08 11:41:41 -0800</bug_when>
    <thetext>Comment on attachment 387116
Patch

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

&gt; Source/WebCore/bindings/js/ScriptController.cpp:718
&gt; +    auto thenFunction = result.value().get(&amp;globalObject, thenIdentifier);

I think you still want an exception check after this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604232</commentid>
    <comment_count>22</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-08 12:27:19 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #21)
&gt; Comment on attachment 387116 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=387116&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptController.cpp:718
&gt; &gt; +    auto thenFunction = result.value().get(&amp;globalObject, thenIdentifier);
&gt; 
&gt; I think you still want an exception check after this.

As mentioned, the SerializedScriptValue creator handles this.

It would be nicer to catch the native exception, and I&apos;ll do it in a followup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604262</commentid>
    <comment_count>23</comment_count>
      <attachid>387116</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-08 13:47:25 -0800</bug_when>
    <thetext>Comment on attachment 387116
Patch

Clearing flags on attachment: 387116

Committed r254222: &lt;https://trac.webkit.org/changeset/254222&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604263</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-08 13:47:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604265</commentid>
    <comment_count>25</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-08 13:48:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/58420346&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604660</commentid>
    <comment_count>26</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2020-01-09 09:01:02 -0800</bug_when>
    <thetext>It looks like the changes in https://trac.webkit.org/changeset/254222/webkit

introduced a Timing out API test TestWebKitAPI.AsyncFunction.Promise

https://results.webkit.org/?suite=api-tests&amp;test=TestWebKitAPI.AsyncFunction.Promise

tracked in https://bugs.webkit.org/show_bug.cgi?id=206012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1606029</commentid>
    <comment_count>27</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-13 13:26:42 -0800</bug_when>
    <thetext>(In reply to Truitt Savell from comment #26)
&gt; It looks like the changes in https://trac.webkit.org/changeset/254222/webkit
&gt; 
&gt; introduced a Timing out API test TestWebKitAPI.AsyncFunction.Promise
&gt; 
&gt; https://results.webkit.org/?suite=api-tests&amp;test=TestWebKitAPI.AsyncFunction.
&gt; Promise
&gt; 
&gt; tracked in https://bugs.webkit.org/show_bug.cgi?id=206012

Yet Another Case™ of EWS not agreeing with the bots.

Will take a look in that other bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608033</commentid>
    <comment_count>28</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-01-17 09:28:44 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #27)
&gt; (In reply to Truitt Savell from comment #26)
&gt; &gt; It looks like the changes in https://trac.webkit.org/changeset/254222/webkit
&gt; &gt; 
&gt; &gt; introduced a Timing out API test TestWebKitAPI.AsyncFunction.Promise
&gt; &gt; 
&gt; &gt; https://results.webkit.org/?suite=api-tests&amp;test=TestWebKitAPI.AsyncFunction.
&gt; &gt; Promise
&gt; &gt; 
&gt; &gt; tracked in https://bugs.webkit.org/show_bug.cgi?id=206012
&gt; 
&gt; Yet Another Case™ of EWS not agreeing with the bots.
&gt; 
&gt; Will take a look in that other bug.

It looks like it&apos;s only on Debug builds, EWS tests Release.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386888</attachid>
            <date>2020-01-06 14:30:25 -0800</date>
            <delta_ts>2020-01-06 16:03:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205654-20200106143024.patch</filename>
            <type>text/plain</type>
            <size>13673</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDAyYmVlNWI1ZTk2ZmRhMmYxNTQyYjhm
M2M2MmQyOGZmYjRhZjA5ZTAuLjBlNGYxMjkxOGVkNDgxM2FiMmU4NTdmNzk1MmFiYTlkNjIyNDYw
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDEtMDYgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgX2NhbGxBc3luY0Z1bmN0aW9uOndpdGhBcmd1
bWVudHM6IHdvcmsgd2l0aCBwcm9taXNlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNTY1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogd3RmL1NoYXJlZEZ1bmN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpTaGFyZWRG
dW5jdGlvbjxPdXQpOgorCiAyMDIwLTAxLTA1ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNv
bT4KIAogICAgICAgICBGdXJ0aGVyIHNpbXBsaWZ5IFN0cmluZ0J1aWxkZXIgdXNhZ2UgYnkgc3Rh
bmRhcmRpemluZyBoZXggZm9ybWF0aW5nIHRvIGEgc2luZ2xlIGhleCgpIGZ1bmN0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggM2NhNWY1YTk0MGFjYjI5NWJlOTg2MjRmYWUyMDlkOTRjNTNjYmViYS4uYWYzZDFj
ZGZlNWUzMTNhYTRlODhhMzY3MDY4MDg1Y2MzNDhlNzE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDIwLTAxLTA2ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIF9jYWxsQXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOiB3b3JrIHdpdGgg
cHJvbWlzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDU2NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQpOgorCiAyMDIwLTAxLTA1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04g
KHIyNTI3MjQpOiBVbmFibGUgdG8gdGFwIG9uIHBsYXkgYnV0dG9uIG9uIGdvb2dsZSB2aWRlbyAn
U2VlIHRoZSB0b3Agc2VhcmNoIHRyZW5kcyBvZiAyMDE5JwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDAwNDBjOTczYjNhZTIxMWZlYTRhY2E3YjQwZGYxMmY5
NDBmMDQwZi4uNDJhNmQ0MDFlZWM5Y2FkYzY1ODFiNTI5N2Y5MDc1N2IzYjE5NTliMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzYsNiArMzc2LDcgQEAK
IAkJNTE3RjgyRDUxRkQyMkYyRjAwREEzREVBIC8qIENyb3NzVGhyZWFkVGFza0hhbmRsZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3Jvc3NUaHJlYWRUYXNrSGFu
ZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0Y4MkQ2MUZEMjJGMkYw
MERBM0RFQSAvKiBDcm9zc1RocmVhZFRhc2tIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENyb3NzVGhyZWFkVGFza0hhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE4MkMyMkMxRjJCQzdFNjAwNTlCQTdDIC8qIEluc3RhbmNlQ291bnRlZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnN0YW5jZUNvdW50ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTE4QUJDMEQyM0MzQjI0RDAwNDIwQ0MzIC8qIFNoYXJlZEZ1bmN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZEZ1bmN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjE3NTI0MUYzRDQ4NjAwMEM3NDk1MCAvKiBQZXJzaXN0
ZW50Q29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyc2lzdGVudENv
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjE3NTI1MUYzRDQ4NjAwMEM3
NDk1MCAvKiBQZXJzaXN0ZW50Q29kZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBlcnNpc3RlbnRDb2RlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFG
MTc1MjYxRjNENDg2MDAwQzc0OTUwIC8qIFBlcnNpc3RlbnRDb2RlcnMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyc2lzdGVudENvZGVycy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTcyLDYgKzExNzMsNyBAQAogCQkJCUE4QTQ3MzFBMTUx
QTgyNUIwMDQxMjNGRiAvKiBTZXRGb3JTY29wZS5oICovLAogCQkJCUE4QTQ3MzA4MTUxQTgyNUIw
MDQxMjNGRiAvKiBTSEExLmNwcCAqLywKIAkJCQlBOEE0NzMwOTE1MUE4MjVCMDA0MTIzRkYgLyog
U0hBMS5oICovLAorCQkJCTUxOEFCQzBEMjNDM0IyNEQwMDQyMENDMyAvKiBTaGFyZWRGdW5jdGlv
bi5oICovLAogCQkJCTBGRUIzRENFMUJCNUQ2ODQwMDlEN0FBRCAvKiBTaGFyZWRUYXNrLmggKi8s
CiAJCQkJQThBNDczMEExNTFBODI1QjAwNDEyM0ZGIC8qIFNpbXBsZVN0YXRzLmggKi8sCiAJCQkJ
Nzk1MjEyMDIxRjQyNTg4ODAwQkQ2NDIxIC8qIFNpbmdsZVJvb3RHcmFwaC5oICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvU2hhcmVkRnVuY3Rpb24uaCBiL1NvdXJjZS9XVEYvd3RmL1No
YXJlZEZ1bmN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2JlMzQ0MTBkNmRkMDlhNjU0MWQ3ZTM4YTJiZmYw
YzMyNmUwNTEyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1NoYXJlZEZ1bmN0
aW9uLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFt
ZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBTaGFyZWRGdW5jdGlvbjsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIE91dCwgdHlwZW5hbWUuLi4gSW4+CitjbGFzcyBTaGFyZWRG
dW5jdGlvbjxPdXQoSW4uLi4pPiA6IHB1YmxpYyBSZWZDb3VudGVkPFNoYXJlZEZ1bmN0aW9uPE91
dChJbi4uLik+PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxTaGFyZWRGdW5jdGlvbjxPdXQo
SW4uLi4pPj4gY3JlYXRlKEZ1bmN0aW9uPE91dChJbi4uLik+JiYgZnVuY3Rpb24pCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRGdW5jdGlvbihXVEZNb3ZlKGZ1bmN0
aW9uKSkpOworICAgIH0KKworICAgIE91dCBvcGVyYXRvcigpKEluLi4uIGluKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fZnVuY3Rpb24oc3RkOjpmb3J3YXJkPEluPihpbikuLi4pOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBTaGFyZWRGdW5jdGlvbihGdW5jdGlvbjxPdXQoSW4uLi4p
PiYmIGZ1bmN0aW9uKQorICAgICAgICA6IG1fZnVuY3Rpb24oV1RGTW92ZShmdW5jdGlvbikpCisg
ICAgeworICAgIH0KKworICAgIEZ1bmN0aW9uPE91dChJbi4uLik+IG1fZnVuY3Rpb247Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNpbmcgV1RGOjpTaGFyZWRGdW5jdGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMWZk
MzliMWQ5NGY4MjNjNTk0M2U5MzQwMzhhYWU0YjkxNmRlY2U2YS4uOWNhY2E0YmUyNzAzYjFiZjcw
MGU5NDg3YzY1NGQyM2E0NDExN2FjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU3LDcgKzU3LDkgQEAKICNpbmNsdWRlICJXZWJD
b3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRl
ICJydW50aW1lX3Jvb3QuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CdWlsdGluTmFtZXMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dlci5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXAuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhy
ZWFkaW5nLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNGdW5jdGlvbi5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTSW50ZXJuYWxQcm9taXNlLmg+CkBAIC03MCw2ICs3Miw3IEBA
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1dlYWtHQ01hcElubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2Nv
cGUuaD4KKyNpbmNsdWRlIDx3dGYvU2hhcmVkRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAKQEAgLTY5OSwx
MyArNzAyLDcwIEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVz
ZXJBZ2VudFNjcmlwdEluV29ybGRJbnRlcm5hbChET01XcmFwCiAgICAgcmV0dXJuIGV4ZWN1dGVT
Y3JpcHRJbldvcmxkKHdvcmxkLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIH0KIAotdm9pZCBTY3Jp
cHRDb250cm9sbGVyOjpleGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZChE
T01XcmFwcGVyV29ybGQmIHdvcmxkLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMsIFJlc29sdmVGdW5jdGlvbiYmIHJlc29sdmVGdW5jdGlvbikKK3ZvaWQgU2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBSZXNv
bHZlRnVuY3Rpb24mJiByZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byByZXN1
bHQgPSBleGVjdXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKHdvcmxkLCBXVEZNb3Zl
KHBhcmFtZXRlcnMpKTsKIAotICAgIC8vIEZJWE1FOiBJZiB0aGUgcmVzdWx0IGlzIGEgdGhlbmFi
bGUsIGluc3RhbGwgdGhlIGZ1bGZpbGwvcmVqZWN0IGhhbmRsZXJzIGluc3RlYWQgb2YgcmVzb2x2
aW5nIG5vdy4KKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICByZXNvbHZlQ29tcGxldGlvbkhh
bmRsZXIocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdoZW4gcnVu
bmluZyBKYXZhU2NyaXB0IGFzIGFuIGFzeW5jIGZ1bmN0aW9uLCBhbnkgInRoZW5hYmxlIiBvYmpl
Y3QgZ2V0cyBwcm9taXNlLWxpa2UgYmVoYXZpb3Igb2YgZGVmZXJyZWQgY29tcGxldGlvbi4KKyAg
ICBhdXRvIHRoZW5JZGVudGlmaWVyID0gd29ybGQudm0oKS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS50aGVuUHJpdmF0ZU5hbWUoKTsKKyAgICBhdXRvJiBwcm94eSA9IGpzV2luZG93UHJv
eHkod29ybGQpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpwcm94eS53aW5kb3coKTsKKyAg
ICBhdXRvIHRoZW5GdW5jdGlvbiA9IHJlc3VsdC52YWx1ZSgpLmdldCgmZ2xvYmFsT2JqZWN0LCB0
aGVuSWRlbnRpZmllcik7CisgICAgaWYgKCF0aGVuRnVuY3Rpb24uaXNGdW5jdGlvbih3b3JsZC52
bSgpKSkgeworICAgICAgICByZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gc2hhcmVkUmVzb2x2ZUZ1bmN0aW9uID0gU2hh
cmVkRnVuY3Rpb248dm9pZChWYWx1ZU9yRXhjZXB0aW9uKT46OmNyZWF0ZShbcmVzb2x2ZUNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShyZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIpXShWYWx1ZU9y
RXhjZXB0aW9uIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChyZXNvbHZlQ29tcGxldGlv
bkhhbmRsZXIpCisgICAgICAgICAgICByZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsK
KyAgICAgICAgcmVzb2x2ZUNvbXBsZXRpb25IYW5kbGVyID0gbnVsbHB0cjsKKyAgICB9KTsKKwor
ICAgIGF1dG8qIGZ1bGZpbGxIYW5kbGVyID0gSlNDOjpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVh
dGUod29ybGQudm0oKSwgJmdsb2JhbE9iamVjdCwgMSwgU3RyaW5nIHsgfSwgW3NoYXJlZFJlc29s
dmVGdW5jdGlvbiA9IHNoYXJlZFJlc29sdmVGdW5jdGlvbi5jb3B5UmVmKCldIChKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSogY2FsbEZyYW1lKSBtdXRhYmxlIHsKKyAgICAgICAgc2hhcmVkUmVz
b2x2ZUZ1bmN0aW9uLmdldCgpKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0pOworCisgICAgYXV0byog
cmVqZWN0SGFuZGxlciA9IEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHdvcmxkLnZt
KCksICZnbG9iYWxPYmplY3QsIDEsIFN0cmluZyB7IH0sIFtzaGFyZWRSZXNvbHZlRnVuY3Rpb24g
PSBzaGFyZWRSZXNvbHZlRnVuY3Rpb24uY29weVJlZigpXSAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIG11dGFibGUgeworICAgICAgICBzaGFyZWRS
ZXNvbHZlRnVuY3Rpb24uZ2V0KCkobWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KSB9KSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfSk7CisKKyAg
ICBhdXRvIGZpbmFsaXplQ291bnQgPSBtYWtlVW5pcXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx1
bnNpZ25lZD4oMCk7CisgICAgYXV0byBmaW5hbGl6ZUd1YXJkID0gU2hhcmVkRnVuY3Rpb248dm9p
ZCgpPjo6Y3JlYXRlKFtzaGFyZWRSZXNvbHZlRnVuY3Rpb24gPSBXVEZNb3ZlKHNoYXJlZFJlc29s
dmVGdW5jdGlvbiksIGZpbmFsaXplQ291bnQgPSBXVEZNb3ZlKGZpbmFsaXplQ291bnQpXSgpIHsK
KyAgICAgICAgaWYgKCsrKCpmaW5hbGl6ZUNvdW50KSA9PSAyKQorICAgICAgICAgICAgc2hhcmVk
UmVzb2x2ZUZ1bmN0aW9uLmdldCgpKG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAi
Q29tcGxldGlvbiBoYW5kbGVyIGZvciBmdW5jdGlvbiBjYWxsIGlzIG5vIGxvbmdlciByZWFjaGFi
bGUiX3MgfSkpOworICAgIH0pOworCisgICAgYXV0byogaGVhcCA9IEhlYXA6OmhlYXAoZnVsZmls
bEhhbmRsZXIpOworICAgIGlmIChoZWFwKSB7CisgICAgICAgIGhlYXAtPmFkZEZpbmFsaXplcihm
dWxmaWxsSGFuZGxlciwgW2ZpbmFsaXplR3VhcmQgPSBmaW5hbGl6ZUd1YXJkLmNvcHlSZWYoKV0o
SlNDZWxsKikgeworICAgICAgICAgICAgZmluYWxpemVHdWFyZC5nZXQoKSgpOworICAgICAgICB9
KTsKKyAgICB9CisKKyAgICBoZWFwID0gSGVhcDo6aGVhcChyZWplY3RIYW5kbGVyKTsKKyAgICBp
ZiAoaGVhcCkgeworICAgICAgICBoZWFwLT5hZGRGaW5hbGl6ZXIocmVqZWN0SGFuZGxlciwgW2Zp
bmFsaXplR3VhcmQgPSBXVEZNb3ZlKGZpbmFsaXplR3VhcmQpXShKU0NlbGwqKSB7CisgICAgICAg
ICAgICBmaW5hbGl6ZUd1YXJkLmdldCgpKCk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIEpT
Qzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQo
ZnVsZmlsbEhhbmRsZXIpOworICAgIGFyZ3VtZW50cy5hcHBlbmQocmVqZWN0SGFuZGxlcik7CisK
KyAgICBKU0M6OkNhbGxEYXRhIGNhbGxEYXRhOworICAgIGF1dG8gY2FsbFR5cGUgPSBKU0M6Omdl
dENhbGxEYXRhKHdvcmxkLnZtKCksIHRoZW5GdW5jdGlvbiwgY2FsbERhdGEpOworICAgIEFTU0VS
VChjYWxsVHlwZSAhPSBKU0M6OkNhbGxUeXBlOjpOb25lKTsKIAotICAgIHJlc29sdmVGdW5jdGlv
bihyZXN1bHQpOworICAgIGNhbGwoJmdsb2JhbE9iamVjdCwgdGhlbkZ1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIHJlc3VsdC52YWx1ZSgpLCBhcmd1bWVudHMpOwogfQogCiBFeHBlY3RlZDx2
b2lkLCBFeGNlcHRpb25EZXRhaWxzPiBTY3JpcHRDb250cm9sbGVyOjpzaG91bGRBbGxvd1VzZXJB
Z2VudFNjcmlwdHMoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJmZjliZGI4NmI3N2M2NDljMmZlODY0
MmIzODZiZGExM2M2OWE0YWUuLjdjNjUyMGQyZGQ3MjNiODRkMGU2MzA5NjVlNGNiNDEwYzE0ZWY2
OWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAyMC0wMS0wNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgTWFrZSBfY2FsbEFzeW5jRnVuY3Rpb246d2l0aEFyZ3VtZW50czogd29y
ayB3aXRoIHByb21pc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA1NjU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdCB0aGF0OgorICAgICAgICAtIFJlc29sdmUgcmVzdWx0cyBpbiBzdWNjZXNz
IGhhbmRsZXIgYmVpbmcgY2FsbGVkCisgICAgICAgIC0gUmVqZWN0IHJlc3VsdHMgaW4gZXJyb3Ig
aGFuZGxlciBiZWluZyBjYWxsZWQKKyAgICAgICAgLSBCb3RoIHJlc29sdmUgYW5kIHJlamVjdCBi
ZWNvbWluZyB1bnJlYWNoYWJsZSByZXN1bHRzIGluIHRoZSBlcnJvciBoYW5kbGVyIGJlaW5nIGNh
bGxlZAorICAgICAgICAKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0FzeW5jRnVuY3Rpb24ubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0cnlHQ1Byb21pc2Up
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IAorCiAyMDIwLTAxLTA2ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBJc3N1ZSBtYWNo
IGxvb2t1cCBleHRlbnNpb24gdG8gbGF1bmNoIHNlcnZpY2VzIGRhZW1vbiBmb3IgTWFpbApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0
aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0
aW9uLm1tCmluZGV4IGQxZjk3ZDNkNjk4MjI3YzRmNjBkNDM0YzVlNWE0NTI4MjE5Y2ZhOGMuLjU0
MDc3ZGRhYTYzMDQzZjQwM2VkMmI1NGZmZjNlZmFiMDJlOWM2NjggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0KQEAg
LTE3Nyw1ICsxNzcsNTQgQEAgVEVTVChBc3luY0Z1bmN0aW9uLCBSb3VuZFRyaXApCiAgICAgRVhQ
RUNUX1RSVUUoW3ZhbHVlIGlzRXF1YWw6cmVzdWx0XSk7CiB9CiAKK3N0YXRpYyB2b2lkIHRyeUdD
UHJvbWlzZShXS1dlYlZpZXcgKndlYlZpZXcsIGJvb2wmIGRvbmUpCit7CisgICAgaWYgKGRvbmUp
CisgICAgICAgIHJldHVybjsKKworICAgIE5TU3RyaW5nICpmdW5jdGlvbkJvZHkgPSBAInJldHVy
biBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsgfSkiOworICAgIFt3ZWJW
aWV3IF9jYWxsQXN5bmNGdW5jdGlvbjpmdW5jdGlvbkJvZHkgd2l0aEFyZ3VtZW50czpuaWwgY29t
cGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAg
IEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9UUlVFKGVycm9yICE9IG5pbCk7
CisgICAgICAgIEVYUEVDVF9UUlVFKFtbZXJyb3IgZGVzY3JpcHRpb25dIGNvbnRhaW5zU3RyaW5n
OkAibm8gbG9uZ2VyIHJlYWNoYWJsZSJdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07
CisKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeyB0cnlH
Q1Byb21pc2Uod2ViVmlldywgZG9uZSk7IH0pOworfQorCitURVNUKEFzeW5jRnVuY3Rpb24sIFBy
b21pc2UpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKworICAgIE5T
U3RyaW5nICpmdW5jdGlvbkJvZHkgPSBAInJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNv
bHZlLCByZWplY3QpIHsgc2V0VGltZW91dChmdW5jdGlvbigpeyByZXNvbHZlKDQyKSB9LCAwKTsg
fSkiOworCisgICAgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2NhbGxBc3luY0Z1
bmN0aW9uOmZ1bmN0aW9uQm9keSB3aXRoQXJndW1lbnRzOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpb
Jl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJy
b3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVy
IGNsYXNzXV0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpA
NDJdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBmdW5jdGlvbkJvZHkg
PSBAInJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsgc2V0VGlt
ZW91dChmdW5jdGlvbigpeyByZWplY3QoJ1JlamVjdGVkIScpIH0sIDApOyB9KSI7CisKKyAgICBk
b25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2NhbGxBc3luY0Z1bmN0aW9uOmZ1bmN0aW9uQm9k
eSB3aXRoQXJndW1lbnRzOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNF
cnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoZXJyb3IgIT0gbmlsKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGZ1bmN0aW9uQm9keSA9
IEAicmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeyB9KSI7CisK
KyAgICBkb25lID0gZmFsc2U7CisgICAgdHJ5R0NQcm9taXNlKHdlYlZpZXcuZ2V0KCksIGRvbmUp
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9CisKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386907</attachid>
            <date>2020-01-06 16:03:03 -0800</date>
            <delta_ts>2020-01-07 16:07:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205654-20200106160302.patch</filename>
            <type>text/plain</type>
            <size>9520</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2NhNWY1YTk0MGFjYjI5
NWJlOTg2MjRmYWUyMDlkOTRjNTNjYmViYS4uYzNjNTExM2I1YWI5ODViNjBkOGRlOWUyNjAxMzZi
MjFjMmIzODM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAxLTA2ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIF9jYWxsQXN5bmNG
dW5jdGlvbjp3aXRoQXJndW1lbnRzOiB3b3JrIHdpdGggcHJvbWlzZXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU2NTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlw
dEluV29ybGQpOgorCiAyMDIwLTAxLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNTI3MjQpOiBVbmFibGUgdG8gdGFwIG9u
IHBsYXkgYnV0dG9uIG9uIGdvb2dsZSB2aWRlbyAnU2VlIHRoZSB0b3Agc2VhcmNoIHRyZW5kcyBv
ZiAyMDE5JwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcAppbmRleCAxZmQzOWIxZDk0ZjgyM2M1OTQzZTkzNDAzOGFhZTRiOTE2ZGVjZTZhLi4zMDcw
MmVmMjg2ZTFhOGNiZDcyYTc4YmFiNzU5YjBlOTM4MmRmNmE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTgsNiArNTgsNyBAQAog
I2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAicnVudGltZV9yb290LmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0ludGVybmFsUHJvbWlzZS5oPgpAQCAtNzAsNiArNzEsNyBAQAogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9XZWFrR0NNYXBJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+
CisjaW5jbHVkZSA8d3RmL1NoYXJlZFRhc2suaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAKQEAgLTY5OSwxMyArNzAxLDY3
IEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGRJbnRlcm5hbChET01XcmFwCiAgICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldv
cmxkKHdvcmxkLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIH0KIAotdm9pZCBTY3JpcHRDb250cm9s
bGVyOjpleGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVy
V29ybGQmIHdvcmxkLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIFJlc29s
dmVGdW5jdGlvbiYmIHJlc29sdmVGdW5jdGlvbikKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBSZXNvbHZlRnVuY3Rp
b24mJiByZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byByZXN1bHQgPSBleGVj
dXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKHdvcmxkLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKIAotICAgIC8vIEZJWE1FOiBJZiB0aGUgcmVzdWx0IGlzIGEgdGhlbmFibGUsIGluc3Rh
bGwgdGhlIGZ1bGZpbGwvcmVqZWN0IGhhbmRsZXJzIGluc3RlYWQgb2YgcmVzb2x2aW5nIG5vdy4K
KyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICByZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIocmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdoZW4gcnVubmluZyBKYXZh
U2NyaXB0IGFzIGFuIGFzeW5jIGZ1bmN0aW9uLCBhbnkgInRoZW5hYmxlIiBvYmplY3QgZ2V0cyBw
cm9taXNlLWxpa2UgYmVoYXZpb3Igb2YgZGVmZXJyZWQgY29tcGxldGlvbi4KKyAgICBhdXRvIHRo
ZW5JZGVudGlmaWVyID0gd29ybGQudm0oKS5wcm9wZXJ0eU5hbWVzLT50aGVuOworICAgIGF1dG8m
IHByb3h5ID0ganNXaW5kb3dQcm94eSh3b3JsZCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0g
KnByb3h5LndpbmRvdygpOworICAgIGF1dG8gdGhlbkZ1bmN0aW9uID0gcmVzdWx0LnZhbHVlKCku
Z2V0KCZnbG9iYWxPYmplY3QsIHRoZW5JZGVudGlmaWVyKTsKKworICAgIGlmICghdGhlbkZ1bmN0
aW9uLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgcmVzb2x2ZUNvbXBsZXRpb25IYW5kbGVyKHJlc3Vs
dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IGFzT2JqZWN0KHRoZW5GdW5jdGlvbiktPm1ldGhvZFRhYmxl
KHdvcmxkLnZtKCkpLT5nZXRDYWxsRGF0YShhc09iamVjdCh0aGVuRnVuY3Rpb24pLCBjYWxsRGF0
YSk7CisgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgICAgIHJlc29s
dmVDb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgYXV0byBzaGFyZWRSZXNvbHZlRnVuY3Rpb24gPSBjcmVhdGVTaGFyZWRUYXNrPHZvaWQoVmFs
dWVPckV4Y2VwdGlvbik+KFtyZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHJlc29s
dmVDb21wbGV0aW9uSGFuZGxlcildKFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0KSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKHJlc29sdmVDb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIHJlc29s
dmVDb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOworICAgICAgICByZXNvbHZlQ29tcGxldGlvbkhh
bmRsZXIgPSBudWxscHRyOworICAgIH0pOworCisgICAgYXV0byogZnVsZmlsbEhhbmRsZXIgPSBK
U0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh3b3JsZC52bSgpLCAmZ2xvYmFsT2JqZWN0
LCAxLCBTdHJpbmcgeyB9LCBbc2hhcmVkUmVzb2x2ZUZ1bmN0aW9uID0gc2hhcmVkUmVzb2x2ZUZ1
bmN0aW9uLmNvcHlSZWYoKV0gKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
IG11dGFibGUgeworICAgICAgICBzaGFyZWRSZXNvbHZlRnVuY3Rpb24tPnJ1bihjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICB9KTsKKworICAgIGF1dG8qIHJlamVjdEhhbmRsZXIgPSBKU0M6OkpTTmF0aXZl
U3RkRnVuY3Rpb246OmNyZWF0ZSh3b3JsZC52bSgpLCAmZ2xvYmFsT2JqZWN0LCAxLCBTdHJpbmcg
eyB9LCBbc2hhcmVkUmVzb2x2ZUZ1bmN0aW9uID0gc2hhcmVkUmVzb2x2ZUZ1bmN0aW9uLmNvcHlS
ZWYoKV0gKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSBtdXRhYmxlIHsKKyAgICAgICAgc2hhcmVkUmVzb2x2ZUZ1bmN0aW9uLT5ydW4obWFrZVVuZXhw
ZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJp
bmcoZ2xvYmFsT2JqZWN0KSB9KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgfSk7CisKKyAgICBhdXRvIGZpbmFsaXplQ291bnQgPSBtYWtlVW5p
cXVlV2l0aG91dEZhc3RNYWxsb2NDaGVjazx1bnNpZ25lZD4oMCk7CisgICAgYXV0byBmaW5hbGl6
ZUd1YXJkID0gY3JlYXRlU2hhcmVkVGFzazx2b2lkKCk+KFtzaGFyZWRSZXNvbHZlRnVuY3Rpb24g
PSBXVEZNb3ZlKHNoYXJlZFJlc29sdmVGdW5jdGlvbiksIGZpbmFsaXplQ291bnQgPSBXVEZNb3Zl
KGZpbmFsaXplQ291bnQpXSgpIHsKKyAgICAgICAgaWYgKCsrKCpmaW5hbGl6ZUNvdW50KSA9PSAy
KQorICAgICAgICAgICAgc2hhcmVkUmVzb2x2ZUZ1bmN0aW9uLT5ydW4obWFrZVVuZXhwZWN0ZWQo
RXhjZXB0aW9uRGV0YWlscyB7ICJDb21wbGV0aW9uIGhhbmRsZXIgZm9yIGZ1bmN0aW9uIGNhbGwg
aXMgbm8gbG9uZ2VyIHJlYWNoYWJsZSJfcyB9KSk7CisgICAgfSk7CisKKyAgICB3b3JsZC52bSgp
LmhlYXAuYWRkRmluYWxpemVyKGZ1bGZpbGxIYW5kbGVyLCBbZmluYWxpemVHdWFyZCA9IGZpbmFs
aXplR3VhcmQuY29weVJlZigpXShKU0NlbGwqKSB7CisgICAgICAgIGZpbmFsaXplR3VhcmQtPnJ1
bigpOworICAgIH0pOworICAgIHdvcmxkLnZtKCkuaGVhcC5hZGRGaW5hbGl6ZXIocmVqZWN0SGFu
ZGxlciwgW2ZpbmFsaXplR3VhcmQgPSBmaW5hbGl6ZUd1YXJkLmNvcHlSZWYoKV0oSlNDZWxsKikg
eworICAgICAgICBmaW5hbGl6ZUd1YXJkLT5ydW4oKTsKKyAgICB9KTsKKworICAgIEpTQzo6TWFy
a2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoZnVsZmls
bEhhbmRsZXIpOworICAgIGFyZ3VtZW50cy5hcHBlbmQocmVqZWN0SGFuZGxlcik7CiAKLSAgICBy
ZXNvbHZlRnVuY3Rpb24ocmVzdWx0KTsKKyAgICBjYWxsKCZnbG9iYWxPYmplY3QsIHRoZW5GdW5j
dGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCByZXN1bHQudmFsdWUoKSwgYXJndW1lbnRzKTsKIH0K
IAogRXhwZWN0ZWQ8dm9pZCwgRXhjZXB0aW9uRGV0YWlscz4gU2NyaXB0Q29udHJvbGxlcjo6c2hv
dWxkQWxsb3dVc2VyQWdlbnRTY3JpcHRzKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiZmY5YmRiODZi
NzdjNjQ5YzJmZTg2NDJiMzg2YmRhMTNjNjlhNGFlLi5hODEwYjg3MDVhODdmYmU1YzZlMzliZDY2
ZTIzYmU4YmYxMmY0NzJkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDEtMDYgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgX2NhbGxBc3luY0Z1bmN0aW9uOndpdGhB
cmd1bWVudHM6IHdvcmsgd2l0aCBwcm9taXNlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTY1NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0g
QmFyYXRpLgorCisgICAgICAgIFRlc3QgdGhhdDoKKyAgICAgICAgLSBSZXNvbHZlIHJlc3VsdHMg
aW4gc3VjY2VzcyBoYW5kbGVyIGJlaW5nIGNhbGxlZAorICAgICAgICAtIFJlamVjdCByZXN1bHRz
IGluIGVycm9yIGhhbmRsZXIgYmVpbmcgY2FsbGVkCisgICAgICAgIC0gQm90aCByZXNvbHZlIGFu
ZCByZWplY3QgYmVjb21pbmcgdW5yZWFjaGFibGUgcmVzdWx0cyBpbiB0aGUgZXJyb3IgaGFuZGxl
ciBiZWluZyBjYWxsZWQKKyAgICAgICAgLSBCb3RoIG5hdGl2ZSBQcm9taXNlIG9iamVjdHMgYW5k
IGFyYml0cmFyeSB0aGVuYWJsZXMgd29yaworICAgICAgICAtIEFueSBvYmplY3Qgd2hlcmUgInRo
ZW4iIGlzIGNhbGxhYmxlIC0gZXZlbiBpZiBub3QgYSBmdW5jdGlvbiAtIHdvcmtzCisgICAgICAg
IAorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlv
bi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRyeUdDUHJvbWlzZSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKTogCisKIDIwMjAtMDEtMDYgIFBlciBBcm5lIFZvbGxhbiAgPHB2
b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIElzc3VlIG1hY2ggbG9va3VwIGV4dGVu
c2lvbiB0byBsYXVuY2ggc2VydmljZXMgZGFlbW9uIGZvciBNYWlsCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0KaW5kZXgg
ZDFmOTdkM2Q2OTgyMjdjNGY2MGQ0MzRjNWU1YTQ1MjgyMTljZmE4Yy4uMDljYWZlNDc5NjgyZDcz
ODI4NmQ4ODBiZmViN2RjNjYyM2Y4YWQ4MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbQpAQCAtMTc3LDUgKzE3Nyw3
NSBAQCBURVNUKEFzeW5jRnVuY3Rpb24sIFJvdW5kVHJpcCkKICAgICBFWFBFQ1RfVFJVRShbdmFs
dWUgaXNFcXVhbDpyZXN1bHRdKTsKIH0KIAorc3RhdGljIHZvaWQgdHJ5R0NQcm9taXNlKFdLV2Vi
VmlldyAqd2ViVmlldywgYm9vbCYgZG9uZSkKK3sKKyAgICBpZiAoZG9uZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgTlNTdHJpbmcgKmZ1bmN0aW9uQm9keSA9IEAicmV0dXJuIG5ldyBQcm9taXNl
KGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeyB9KSI7CisgICAgW3dlYlZpZXcgX2NhbGxBc3lu
Y0Z1bmN0aW9uOmZ1bmN0aW9uQm9keSB3aXRoQXJndW1lbnRzOm5pbCBjb21wbGV0aW9uSGFuZGxl
cjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwo
cmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZXJyb3IgIT0gbmlsKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoW1tlcnJvciBkZXNjcmlwdGlvbl0gY29udGFpbnNTdHJpbmc6QCJubyBsb25nZXIg
cmVhY2hhYmxlIl0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57IHRyeUdDUHJvbWlzZSh3ZWJW
aWV3LCBkb25lKTsgfSk7Cit9CisKK1RFU1QoQXN5bmNGdW5jdGlvbiwgUHJvbWlzZSkKK3sKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworCisgICAgTlNTdHJpbmcgKmZ1bmN0
aW9uQm9keSA9IEAicmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkg
eyBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IHJlc29sdmUoNDIpIH0sIDApOyB9KSI7CisKKyAgICBi
b29sIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfY2FsbEFzeW5jRnVuY3Rpb246ZnVuY3Rp
b25Cb2R5IHdpdGhBcmd1bWVudHM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0
LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAg
IEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSk7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkA0Ml0pOworICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGZ1bmN0aW9uQm9keSA9IEAicmV0dXJuIG5l
dyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeyBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCl7IHJlamVjdCgnUmVqZWN0ZWQhJykgfSwgMCk7IH0pIjsKKworICAgIGRvbmUgPSBmYWxzZTsK
KyAgICBbd2ViVmlldyBfY2FsbEFzeW5jRnVuY3Rpb246ZnVuY3Rpb25Cb2R5IHdpdGhBcmd1bWVu
dHM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikg
eworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfVFJVRShlcnJv
ciAhPSBuaWwpOworICAgICAgICBFWFBFQ1RfVFJVRShbW2Vycm9yIGRlc2NyaXB0aW9uXSBjb250
YWluc1N0cmluZzpAIlJlamVjdGVkISJdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGZ1bmN0aW9uQm9k
eSA9IEAibGV0IHAgPSBuZXcgUHJveHkoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7IHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHJlc29sdmUoNDIpOyB9LCAwKTsgfSwgeyB9KTsgcmV0dXJuIHsg
dGhlbjogcCB9OyI7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2NhbGxBc3lu
Y0Z1bmN0aW9uOmZ1bmN0aW9uQm9keSB3aXRoQXJndW1lbnRzOm5pbCBjb21wbGV0aW9uSGFuZGxl
cjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwo
ZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVt
YmVyIGNsYXNzXV0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJl
cjpANDJdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGZ1bmN0aW9uQm9keSA9IEAibGV0IHAgPSBuZXcg
UHJveHkoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHJlamVjdCgnUmVqZWN0ZWQhJyk7IH0sIDApOyB9LCB7IH0pOyByZXR1cm4geyB0aGVuOiBwIH07
IjsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfY2FsbEFzeW5jRnVuY3Rpb246
ZnVuY3Rpb25Cb2R5IHdpdGhBcmd1bWVudHM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQg
cmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShlcnJvciAhPSBuaWwpOworICAgICAgICBFWFBFQ1RfVFJVRShb
W2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAIlJlamVjdGVkISJdKTsKKyAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICB0cnlHQ1Byb21pc2Uod2ViVmlldy5nZXQo
KSwgZG9uZSk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30KKwogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387049</attachid>
            <date>2020-01-07 16:07:05 -0800</date>
            <delta_ts>2020-01-07 22:38:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205654-20200107160704.patch</filename>
            <type>text/plain</type>
            <size>9579</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2NhNWY1YTk0MGFjYjI5
NWJlOTg2MjRmYWUyMDlkOTRjNTNjYmViYS4uYzNjNTExM2I1YWI5ODViNjBkOGRlOWUyNjAxMzZi
MjFjMmIzODM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAxLTA2ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIF9jYWxsQXN5bmNG
dW5jdGlvbjp3aXRoQXJndW1lbnRzOiB3b3JrIHdpdGggcHJvbWlzZXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU2NTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlw
dEluV29ybGQpOgorCiAyMDIwLTAxLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNTI3MjQpOiBVbmFibGUgdG8gdGFwIG9u
IHBsYXkgYnV0dG9uIG9uIGdvb2dsZSB2aWRlbyAnU2VlIHRoZSB0b3Agc2VhcmNoIHRyZW5kcyBv
ZiAyMDE5JwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcAppbmRleCAxZmQzOWIxZDk0ZjgyM2M1OTQzZTkzNDAzOGFhZTRiOTE2ZGVjZTZhLi4xNTU3
ZjQ5ZjhjM2NiYjQ0NTIzNzc3YzhiNjYyYjQ0MTM0YTRjNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTgsNiArNTgsNyBAQAog
I2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAicnVudGltZV9yb290LmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0ludGVybmFsUHJvbWlzZS5oPgpAQCAtNzAsNiArNzEsNyBAQAogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9XZWFrR0NNYXBJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+
CisjaW5jbHVkZSA8d3RmL1NoYXJlZFRhc2suaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAKQEAgLTY5OSwxMyArNzAxLDY3
IEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGRJbnRlcm5hbChET01XcmFwCiAgICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldv
cmxkKHdvcmxkLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIH0KIAotdm9pZCBTY3JpcHRDb250cm9s
bGVyOjpleGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVy
V29ybGQmIHdvcmxkLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIFJlc29s
dmVGdW5jdGlvbiYmIHJlc29sdmVGdW5jdGlvbikKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBSZXNvbHZlRnVuY3Rp
b24mJiByZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byByZXN1bHQgPSBleGVj
dXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKHdvcmxkLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKIAotICAgIC8vIEZJWE1FOiBJZiB0aGUgcmVzdWx0IGlzIGEgdGhlbmFibGUsIGluc3Rh
bGwgdGhlIGZ1bGZpbGwvcmVqZWN0IGhhbmRsZXJzIGluc3RlYWQgb2YgcmVzb2x2aW5nIG5vdy4K
KyAgICBpZiAocGFyYW1ldGVycy5ydW5Bc0FzeW5jRnVuY3Rpb24gPT0gUnVuQXNBc3luY0Z1bmN0
aW9uOjpObyB8fCAhcmVzdWx0KSB7CisgICAgICAgIHJlc29sdmVDb21wbGV0aW9uSGFuZGxlcihy
ZXN1bHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2hlbiBydW5uaW5nIEph
dmFTY3JpcHQgYXMgYW4gYXN5bmMgZnVuY3Rpb24sIGFueSAidGhlbmFibGUiIG9iamVjdCBnZXRz
IHByb21pc2UtbGlrZSBiZWhhdmlvciBvZiBkZWZlcnJlZCBjb21wbGV0aW9uLgorICAgIGF1dG8g
dGhlbklkZW50aWZpZXIgPSB3b3JsZC52bSgpLnByb3BlcnR5TmFtZXMtPnRoZW47CisgICAgYXV0
byYgcHJveHkgPSBqc1dpbmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3Qg
PSAqcHJveHkud2luZG93KCk7CisgICAgYXV0byB0aGVuRnVuY3Rpb24gPSByZXN1bHQudmFsdWUo
KS5nZXQoJmdsb2JhbE9iamVjdCwgdGhlbklkZW50aWZpZXIpOworCisgICAgaWYgKCF0aGVuRnVu
Y3Rpb24uaXNPYmplY3QoKSkgeworICAgICAgICByZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIocmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIENhbGxEYXRhIGNhbGxEYXRhOwor
ICAgIENhbGxUeXBlIGNhbGxUeXBlID0gYXNPYmplY3QodGhlbkZ1bmN0aW9uKS0+bWV0aG9kVGFi
bGUod29ybGQudm0oKSktPmdldENhbGxEYXRhKGFzT2JqZWN0KHRoZW5GdW5jdGlvbiksIGNhbGxE
YXRhKTsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKKyAgICAgICAgcmVz
b2x2ZUNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBhdXRvIHNoYXJlZFJlc29sdmVGdW5jdGlvbiA9IGNyZWF0ZVNoYXJlZFRhc2s8dm9pZChW
YWx1ZU9yRXhjZXB0aW9uKT4oW3Jlc29sdmVDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUocmVz
b2x2ZUNvbXBsZXRpb25IYW5kbGVyKV0oVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQpIG11dGFibGUg
eworICAgICAgICBpZiAocmVzb2x2ZUNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgcmVz
b2x2ZUNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CisgICAgICAgIHJlc29sdmVDb21wbGV0aW9u
SGFuZGxlciA9IG51bGxwdHI7CisgICAgfSk7CisKKyAgICBhdXRvKiBmdWxmaWxsSGFuZGxlciA9
IEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHdvcmxkLnZtKCksICZnbG9iYWxPYmpl
Y3QsIDEsIFN0cmluZyB7IH0sIFtzaGFyZWRSZXNvbHZlRnVuY3Rpb24gPSBzaGFyZWRSZXNvbHZl
RnVuY3Rpb24uY29weVJlZigpXSAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkgbXV0YWJsZSB7CisgICAgICAgIHNoYXJlZFJlc29sdmVGdW5jdGlvbi0+cnVuKGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgIH0pOworCisgICAgYXV0byogcmVqZWN0SGFuZGxlciA9IEpTQzo6SlNOYXRp
dmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHdvcmxkLnZtKCksICZnbG9iYWxPYmplY3QsIDEsIFN0cmlu
ZyB7IH0sIFtzaGFyZWRSZXNvbHZlRnVuY3Rpb24gPSBzaGFyZWRSZXNvbHZlRnVuY3Rpb24uY29w
eVJlZigpXSAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpIG11dGFibGUgeworICAgICAgICBzaGFyZWRSZXNvbHZlRnVuY3Rpb24tPnJ1bihtYWtlVW5l
eHBlY3RlZChFeGNlcHRpb25EZXRhaWxzIHsgY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0
cmluZyhnbG9iYWxPYmplY3QpIH0pKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKKyAgICB9KTsKKworICAgIGF1dG8gZmluYWxpemVDb3VudCA9IG1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPHVuc2lnbmVkPigwKTsKKyAgICBhdXRvIGZpbmFs
aXplR3VhcmQgPSBjcmVhdGVTaGFyZWRUYXNrPHZvaWQoKT4oW3NoYXJlZFJlc29sdmVGdW5jdGlv
biA9IFdURk1vdmUoc2hhcmVkUmVzb2x2ZUZ1bmN0aW9uKSwgZmluYWxpemVDb3VudCA9IFdURk1v
dmUoZmluYWxpemVDb3VudCldKCkgeworICAgICAgICBpZiAoKysoKmZpbmFsaXplQ291bnQpID09
IDIpCisgICAgICAgICAgICBzaGFyZWRSZXNvbHZlRnVuY3Rpb24tPnJ1bihtYWtlVW5leHBlY3Rl
ZChFeGNlcHRpb25EZXRhaWxzIHsgIkNvbXBsZXRpb24gaGFuZGxlciBmb3IgZnVuY3Rpb24gY2Fs
bCBpcyBubyBsb25nZXIgcmVhY2hhYmxlIl9zIH0pKTsKKyAgICB9KTsKKworICAgIHdvcmxkLnZt
KCkuaGVhcC5hZGRGaW5hbGl6ZXIoZnVsZmlsbEhhbmRsZXIsIFtmaW5hbGl6ZUd1YXJkID0gZmlu
YWxpemVHdWFyZC5jb3B5UmVmKCldKEpTQ2VsbCopIHsKKyAgICAgICAgZmluYWxpemVHdWFyZC0+
cnVuKCk7CisgICAgfSk7CisgICAgd29ybGQudm0oKS5oZWFwLmFkZEZpbmFsaXplcihyZWplY3RI
YW5kbGVyLCBbZmluYWxpemVHdWFyZCA9IGZpbmFsaXplR3VhcmQuY29weVJlZigpXShKU0NlbGwq
KSB7CisgICAgICAgIGZpbmFsaXplR3VhcmQtPnJ1bigpOworICAgIH0pOworCisgICAgSlNDOjpN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChmdWxm
aWxsSGFuZGxlcik7CisgICAgYXJndW1lbnRzLmFwcGVuZChyZWplY3RIYW5kbGVyKTsKIAotICAg
IHJlc29sdmVGdW5jdGlvbihyZXN1bHQpOworICAgIGNhbGwoJmdsb2JhbE9iamVjdCwgdGhlbkZ1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHJlc3VsdC52YWx1ZSgpLCBhcmd1bWVudHMpOwog
fQogCiBFeHBlY3RlZDx2b2lkLCBFeGNlcHRpb25EZXRhaWxzPiBTY3JpcHRDb250cm9sbGVyOjpz
aG91bGRBbGxvd1VzZXJBZ2VudFNjcmlwdHMoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJmZjliZGI4
NmI3N2M2NDljMmZlODY0MmIzODZiZGExM2M2OWE0YWUuLmE4MTBiODcwNWE4N2ZiZTVjNmUzOWJk
NjZlMjNiZThiZjEyZjQ3MmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wMS0wNiAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBfY2FsbEFzeW5jRnVuY3Rpb246d2l0
aEFyZ3VtZW50czogd29yayB3aXRoIHByb21pc2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1NjU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2Fh
bSBCYXJhdGkuCisKKyAgICAgICAgVGVzdCB0aGF0OgorICAgICAgICAtIFJlc29sdmUgcmVzdWx0
cyBpbiBzdWNjZXNzIGhhbmRsZXIgYmVpbmcgY2FsbGVkCisgICAgICAgIC0gUmVqZWN0IHJlc3Vs
dHMgaW4gZXJyb3IgaGFuZGxlciBiZWluZyBjYWxsZWQKKyAgICAgICAgLSBCb3RoIHJlc29sdmUg
YW5kIHJlamVjdCBiZWNvbWluZyB1bnJlYWNoYWJsZSByZXN1bHRzIGluIHRoZSBlcnJvciBoYW5k
bGVyIGJlaW5nIGNhbGxlZAorICAgICAgICAtIEJvdGggbmF0aXZlIFByb21pc2Ugb2JqZWN0cyBh
bmQgYXJiaXRyYXJ5IHRoZW5hYmxlcyB3b3JrCisgICAgICAgIC0gQW55IG9iamVjdCB3aGVyZSAi
dGhlbiIgaXMgY2FsbGFibGUgLSBldmVuIGlmIG5vdCBhIGZ1bmN0aW9uIC0gd29ya3MKKyAgICAg
ICAgCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0
aW9uLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dHJ5R0NQcm9taXNlKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOiAKKwogMjAyMC0wMS0wNiAgUGVyIEFybmUgVm9sbGFuICA8
cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gSXNzdWUgbWFjaCBsb29rdXAgZXh0
ZW5zaW9uIHRvIGxhdW5jaCBzZXJ2aWNlcyBkYWVtb24gZm9yIE1haWwKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbQppbmRl
eCBkMWY5N2QzZDY5ODIyN2M0ZjYwZDQzNGM1ZTVhNDUyODIxOWNmYThjLi4wOWNhZmU0Nzk2ODJk
NzM4Mjg2ZDg4MGJmZWI3ZGM2NjIzZjhhZDgwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tCkBAIC0xNzcsNSArMTc3
LDc1IEBAIFRFU1QoQXN5bmNGdW5jdGlvbiwgUm91bmRUcmlwKQogICAgIEVYUEVDVF9UUlVFKFt2
YWx1ZSBpc0VxdWFsOnJlc3VsdF0pOwogfQogCitzdGF0aWMgdm9pZCB0cnlHQ1Byb21pc2UoV0tX
ZWJWaWV3ICp3ZWJWaWV3LCBib29sJiBkb25lKQoreworICAgIGlmIChkb25lKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBOU1N0cmluZyAqZnVuY3Rpb25Cb2R5ID0gQCJyZXR1cm4gbmV3IFByb21p
c2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7IH0pIjsKKyAgICBbd2ViVmlldyBfY2FsbEFz
eW5jRnVuY3Rpb246ZnVuY3Rpb25Cb2R5IHdpdGhBcmd1bWVudHM6bmlsIGNvbXBsZXRpb25IYW5k
bGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVM
TChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfVFJVRShlcnJvciAhPSBuaWwpOworICAgICAgICBF
WFBFQ1RfVFJVRShbW2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAIm5vIGxvbmdl
ciByZWFjaGFibGUiXSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsgdHJ5R0NQcm9taXNlKHdl
YlZpZXcsIGRvbmUpOyB9KTsKK30KKworVEVTVChBc3luY0Z1bmN0aW9uLCBQcm9taXNlKQorewor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisKKyAgICBOU1N0cmluZyAqZnVu
Y3Rpb25Cb2R5ID0gQCJyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0
KSB7IHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgcmVzb2x2ZSg0MikgfSwgMCk7IH0pIjsKKworICAg
IGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNGdW5jdGlvbjpmdW5j
dGlvbkJvZHkgd2l0aEFyZ3VtZW50czpuaWwgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1
bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDQyXSk7CisgICAg
ICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgZnVuY3Rpb25Cb2R5ID0gQCJyZXR1cm4g
bmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7IHNldFRpbWVvdXQoZnVuY3Rp
b24oKXsgcmVqZWN0KCdSZWplY3RlZCEnKSB9LCAwKTsgfSkiOworCisgICAgZG9uZSA9IGZhbHNl
OworICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNGdW5jdGlvbjpmdW5jdGlvbkJvZHkgd2l0aEFyZ3Vt
ZW50czpuaWwgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9y
KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9UUlVFKGVy
cm9yICE9IG5pbCk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtbZXJyb3IgZGVzY3JpcHRpb25dIGNv
bnRhaW5zU3RyaW5nOkAiUmVqZWN0ZWQhIl0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgZnVuY3Rpb25C
b2R5ID0gQCJsZXQgcCA9IG5ldyBQcm94eShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgcmVzb2x2ZSg0Mik7IH0sIDApOyB9LCB7IH0pOyByZXR1cm4g
eyB0aGVuOiBwIH07IjsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfY2FsbEFz
eW5jRnVuY3Rpb246ZnVuY3Rpb25Cb2R5IHdpdGhBcmd1bWVudHM6bmlsIGNvbXBsZXRpb25IYW5k
bGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVM
TChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNO
dW1iZXIgY2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVt
YmVyOkA0Ml0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgZnVuY3Rpb25Cb2R5ID0gQCJsZXQgcCA9IG5l
dyBQcm94eShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgcmVqZWN0KCdSZWplY3RlZCEnKTsgfSwgMCk7IH0sIHsgfSk7IHJldHVybiB7IHRoZW46IHAg
fTsiOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNGdW5jdGlv
bjpmdW5jdGlvbkJvZHkgd2l0aEFyZ3VtZW50czpuaWwgY29tcGxldGlvbkhhbmRsZXI6WyZdIChp
ZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7
CisgICAgICAgIEVYUEVDVF9UUlVFKGVycm9yICE9IG5pbCk7CisgICAgICAgIEVYUEVDVF9UUlVF
KFtbZXJyb3IgZGVzY3JpcHRpb25dIGNvbnRhaW5zU3RyaW5nOkAiUmVqZWN0ZWQhIl0pOworICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIHRyeUdDUHJvbWlzZSh3ZWJWaWV3Lmdl
dCgpLCBkb25lKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCiB9
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387079</attachid>
            <date>2020-01-07 22:38:09 -0800</date>
            <delta_ts>2020-01-08 11:21:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205654-20200107223808.patch</filename>
            <type>text/plain</type>
            <size>9529</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk1ZDEyYTU1NjcxOGI0
MzNiNzc5MDI0ODk4MTE1NWE1YzNiNDZiYy4uOTNjNzgxYTg4NzkyYzgxMGUyYmY2NTM3MzliYzAz
MDY5YThkZDNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAxLTA3ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIF9jYWxsQXN5bmNG
dW5jdGlvbjp3aXRoQXJndW1lbnRzOiB3b3JrIHdpdGggcHJvbWlzZXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU2NTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlw
dEluV29ybGQpOgorCiAyMDIwLTAxLTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgSW50cm9kdWNlIF9XS1Jlc291cmNlTG9hZERlbGVnYXRl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDFmZDM5YjFkOTRmODIzYzU5NDNlOTM0MDM4YWFlNGI5MTZkZWNlNmEuLmZhMDgxNjBkZjBm
Njg5ZTQxNTQ5ZDMzZmVmYzMyOWRmMGFlOGY1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVk
ZSAibnBydW50aW1lX2ltcGwuaCIKICNpbmNsdWRlICJydW50aW1lX3Jvb3QuaCIKICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hl
YXAuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNGdW5jdGlvbi5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTSW50ZXJuYWxQcm9taXNlLmg+CkBAIC03MCw2ICs3MSw3IEBACiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU3Ryb25nSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1dlYWtHQ01hcElubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KKyNpbmNs
dWRlIDx3dGYvU2hhcmVkVGFzay5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KIApAQCAtNjk5LDEzICs3MDEsNjcgQEAgVmFs
dWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlVXNlckFnZW50U2NyaXB0SW5X
b3JsZEludGVybmFsKERPTVdyYXAKICAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdEluV29ybGQod29y
bGQsIFdURk1vdmUocGFyYW1ldGVycykpOwogfQogCi12b2lkIFNjcmlwdENvbnRyb2xsZXI6OmV4
ZWN1dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYg
d29ybGQsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgUmVzb2x2ZUZ1bmN0
aW9uJiYgcmVzb2x2ZUZ1bmN0aW9uKQordm9pZCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlQXN5
bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIFJlc29sdmVGdW5jdGlvbiYmIHJl
c29sdmVDb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIHJlc3VsdCA9IGV4ZWN1dGVVc2Vy
QWdlbnRTY3JpcHRJbldvcmxkSW50ZXJuYWwod29ybGQsIFdURk1vdmUocGFyYW1ldGVycykpOwor
ICAgIAorICAgIGlmIChwYXJhbWV0ZXJzLnJ1bkFzQXN5bmNGdW5jdGlvbiA9PSBSdW5Bc0FzeW5j
RnVuY3Rpb246Ok5vIHx8ICFyZXN1bHQgfHwgcmVzdWx0LnZhbHVlKCkuaXNVbmRlZmluZWRPck51
bGwoKSkgeworICAgICAgICByZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdoZW4gcnVubmluZyBKYXZhU2NyaXB0IGFzIGFu
IGFzeW5jIGZ1bmN0aW9uLCBhbnkgInRoZW5hYmxlIiBvYmplY3QgZ2V0cyBwcm9taXNlLWxpa2Ug
YmVoYXZpb3Igb2YgZGVmZXJyZWQgY29tcGxldGlvbi4KKyAgICBhdXRvIHRoZW5JZGVudGlmaWVy
ID0gd29ybGQudm0oKS5wcm9wZXJ0eU5hbWVzLT50aGVuOworICAgIGF1dG8mIHByb3h5ID0ganNX
aW5kb3dQcm94eSh3b3JsZCk7CisgICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKnByb3h5LndpbmRv
dygpOworCisgICAgYXV0byB0aGVuRnVuY3Rpb24gPSByZXN1bHQudmFsdWUoKS5nZXQoJmdsb2Jh
bE9iamVjdCwgdGhlbklkZW50aWZpZXIpOworICAgIGlmICghdGhlbkZ1bmN0aW9uLmlzT2JqZWN0
KCkpIHsKKyAgICAgICAgcmVzb2x2ZUNvbXBsZXRpb25IYW5kbGVyKHJlc3VsdCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IGFzT2JqZWN0KHRoZW5GdW5jdGlvbiktPm1ldGhvZFRhYmxlKHdvcmxkLnZtKCkp
LT5nZXRDYWxsRGF0YShhc09iamVjdCh0aGVuRnVuY3Rpb24pLCBjYWxsRGF0YSk7CisgICAgaWYg
KGNhbGxUeXBlID09IENhbGxUeXBlOjpOb25lKSB7CisgICAgICAgIHJlc29sdmVDb21wbGV0aW9u
SGFuZGxlcihyZXN1bHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBzaGFy
ZWRSZXNvbHZlRnVuY3Rpb24gPSBjcmVhdGVTaGFyZWRUYXNrPHZvaWQoVmFsdWVPckV4Y2VwdGlv
bik+KFtyZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHJlc29sdmVDb21wbGV0aW9u
SGFuZGxlcildKFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgaWYg
KHJlc29sdmVDb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIHJlc29sdmVDb21wbGV0aW9u
SGFuZGxlcihyZXN1bHQpOworICAgICAgICByZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIgPSBudWxs
cHRyOworICAgIH0pOworCisgICAgYXV0byogZnVsZmlsbEhhbmRsZXIgPSBKU0M6OkpTTmF0aXZl
U3RkRnVuY3Rpb246OmNyZWF0ZSh3b3JsZC52bSgpLCAmZ2xvYmFsT2JqZWN0LCAxLCBTdHJpbmcg
eyB9LCBbc2hhcmVkUmVzb2x2ZUZ1bmN0aW9uID0gc2hhcmVkUmVzb2x2ZUZ1bmN0aW9uLmNvcHlS
ZWYoKV0gKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIG11dGFibGUgewor
ICAgICAgICBzaGFyZWRSZXNvbHZlRnVuY3Rpb24tPnJ1bihjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9
KTsKKworICAgIGF1dG8qIHJlamVjdEhhbmRsZXIgPSBKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246
OmNyZWF0ZSh3b3JsZC52bSgpLCAmZ2xvYmFsT2JqZWN0LCAxLCBTdHJpbmcgeyB9LCBbc2hhcmVk
UmVzb2x2ZUZ1bmN0aW9uID0gc2hhcmVkUmVzb2x2ZUZ1bmN0aW9uLmNvcHlSZWYoKV0gKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSBtdXRhYmxlIHsK
KyAgICAgICAgc2hhcmVkUmVzb2x2ZUZ1bmN0aW9uLT5ydW4obWFrZVVuZXhwZWN0ZWQoRXhjZXB0
aW9uRGV0YWlscyB7IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZ2xvYmFsT2Jq
ZWN0KSB9KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CisgICAgfSk7CisKKyAgICBhdXRvIGZpbmFsaXplQ291bnQgPSBtYWtlVW5pcXVlV2l0aG91dEZh
c3RNYWxsb2NDaGVjazx1bnNpZ25lZD4oMCk7CisgICAgYXV0byBmaW5hbGl6ZUd1YXJkID0gY3Jl
YXRlU2hhcmVkVGFzazx2b2lkKCk+KFtzaGFyZWRSZXNvbHZlRnVuY3Rpb24gPSBXVEZNb3ZlKHNo
YXJlZFJlc29sdmVGdW5jdGlvbiksIGZpbmFsaXplQ291bnQgPSBXVEZNb3ZlKGZpbmFsaXplQ291
bnQpXSgpIHsKKyAgICAgICAgaWYgKCsrKCpmaW5hbGl6ZUNvdW50KSA9PSAyKQorICAgICAgICAg
ICAgc2hhcmVkUmVzb2x2ZUZ1bmN0aW9uLT5ydW4obWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0
YWlscyB7ICJDb21wbGV0aW9uIGhhbmRsZXIgZm9yIGZ1bmN0aW9uIGNhbGwgaXMgbm8gbG9uZ2Vy
IHJlYWNoYWJsZSJfcyB9KSk7CisgICAgfSk7CisKKyAgICB3b3JsZC52bSgpLmhlYXAuYWRkRmlu
YWxpemVyKGZ1bGZpbGxIYW5kbGVyLCBbZmluYWxpemVHdWFyZCA9IGZpbmFsaXplR3VhcmQuY29w
eVJlZigpXShKU0NlbGwqKSB7CisgICAgICAgIGZpbmFsaXplR3VhcmQtPnJ1bigpOworICAgIH0p
OworICAgIHdvcmxkLnZtKCkuaGVhcC5hZGRGaW5hbGl6ZXIocmVqZWN0SGFuZGxlciwgW2ZpbmFs
aXplR3VhcmQgPSBmaW5hbGl6ZUd1YXJkLmNvcHlSZWYoKV0oSlNDZWxsKikgeworICAgICAgICBm
aW5hbGl6ZUd1YXJkLT5ydW4oKTsKKyAgICB9KTsKIAotICAgIC8vIEZJWE1FOiBJZiB0aGUgcmVz
dWx0IGlzIGEgdGhlbmFibGUsIGluc3RhbGwgdGhlIGZ1bGZpbGwvcmVqZWN0IGhhbmRsZXJzIGlu
c3RlYWQgb2YgcmVzb2x2aW5nIG5vdy4KKyAgICBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3VtZW50czsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGZ1bGZpbGxIYW5kbGVyKTsKKyAgICBhcmd1
bWVudHMuYXBwZW5kKHJlamVjdEhhbmRsZXIpOwogCi0gICAgcmVzb2x2ZUZ1bmN0aW9uKHJlc3Vs
dCk7CisgICAgY2FsbCgmZ2xvYmFsT2JqZWN0LCB0aGVuRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxs
RGF0YSwgcmVzdWx0LnZhbHVlKCksIGFyZ3VtZW50cyk7CiB9CiAKIEV4cGVjdGVkPHZvaWQsIEV4
Y2VwdGlvbkRldGFpbHM+IFNjcmlwdENvbnRyb2xsZXI6OnNob3VsZEFsbG93VXNlckFnZW50U2Ny
aXB0cyhEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzcwMmE3ZmQzYzg1YTg5NjVkOWZjYjY3NWM1MTU3
Njk1OThlYmE3MS4uYjgzM2NmYzI5MDcxY2NmM2Q2ZTk4OGIwZGFiNjkzNDQ5ZDYwYjA0MyAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIxIEBACisyMDIwLTAxLTA3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIF9jYWxsQXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOiB3b3JrIHdpdGgg
cHJvbWlzZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDU2NTQKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBU
ZXN0IHRoYXQ6CisgICAgICAgIC0gUmVzb2x2ZSByZXN1bHRzIGluIHN1Y2Nlc3MgaGFuZGxlciBi
ZWluZyBjYWxsZWQKKyAgICAgICAgLSBSZWplY3QgcmVzdWx0cyBpbiBlcnJvciBoYW5kbGVyIGJl
aW5nIGNhbGxlZAorICAgICAgICAtIEJvdGggcmVzb2x2ZSBhbmQgcmVqZWN0IGJlY29taW5nIHVu
cmVhY2hhYmxlIHJlc3VsdHMgaW4gdGhlIGVycm9yIGhhbmRsZXIgYmVpbmcgY2FsbGVkCisgICAg
ICAgIC0gQm90aCBuYXRpdmUgUHJvbWlzZSBvYmplY3RzIGFuZCBhcmJpdHJhcnkgdGhlbmFibGVz
IHdvcmsKKyAgICAgICAgLSBBbnkgb2JqZWN0IHdoZXJlICJ0aGVuIiBpcyBjYWxsYWJsZSAtIGV2
ZW4gaWYgbm90IGEgZnVuY3Rpb24gLSB3b3JrcworICAgICAgICAKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW06CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjp0cnlHQ1Byb21pc2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
IAorCiAyMDIwLTAxLTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgSW50cm9kdWNlIF9XS1Jlc291cmNlTG9hZERlbGVnYXRlCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24u
bW0KaW5kZXggZDFmOTdkM2Q2OTgyMjdjNGY2MGQ0MzRjNWU1YTQ1MjgyMTljZmE4Yy4uMDljYWZl
NDc5NjgyZDczODI4NmQ4ODBiZmViN2RjNjYyM2Y4YWQ4MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbQpAQCAtMTc3
LDUgKzE3Nyw3NSBAQCBURVNUKEFzeW5jRnVuY3Rpb24sIFJvdW5kVHJpcCkKICAgICBFWFBFQ1Rf
VFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsKIH0KIAorc3RhdGljIHZvaWQgdHJ5R0NQcm9t
aXNlKFdLV2ViVmlldyAqd2ViVmlldywgYm9vbCYgZG9uZSkKK3sKKyAgICBpZiAoZG9uZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgTlNTdHJpbmcgKmZ1bmN0aW9uQm9keSA9IEAicmV0dXJuIG5l
dyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeyB9KSI7CisgICAgW3dlYlZpZXcg
X2NhbGxBc3luY0Z1bmN0aW9uOmZ1bmN0aW9uQm9keSB3aXRoQXJndW1lbnRzOm5pbCBjb21wbGV0
aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQ
RUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoZXJyb3IgIT0gbmlsKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoW1tlcnJvciBkZXNjcmlwdGlvbl0gY29udGFpbnNTdHJpbmc6QCJu
byBsb25nZXIgcmVhY2hhYmxlIl0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKwor
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57IHRyeUdDUHJv
bWlzZSh3ZWJWaWV3LCBkb25lKTsgfSk7Cit9CisKK1RFU1QoQXN5bmNGdW5jdGlvbiwgUHJvbWlz
ZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworCisgICAgTlNTdHJp
bmcgKmZ1bmN0aW9uQm9keSA9IEAicmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUs
IHJlamVjdCkgeyBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IHJlc29sdmUoNDIpIH0sIDApOyB9KSI7
CisKKyAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfY2FsbEFzeW5jRnVuY3Rp
b246ZnVuY3Rpb25Cb2R5IHdpdGhBcmd1bWVudHM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAo
aWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7
CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xh
c3NdXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkA0Ml0p
OworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGZ1bmN0aW9uQm9keSA9IEAi
cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeyBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCl7IHJlamVjdCgnUmVqZWN0ZWQhJykgfSwgMCk7IH0pIjsKKworICAgIGRvbmUg
PSBmYWxzZTsKKyAgICBbd2ViVmlldyBfY2FsbEFzeW5jRnVuY3Rpb246ZnVuY3Rpb25Cb2R5IHdp
dGhBcmd1bWVudHM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9y
ICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1Rf
VFJVRShlcnJvciAhPSBuaWwpOworICAgICAgICBFWFBFQ1RfVFJVRShbW2Vycm9yIGRlc2NyaXB0
aW9uXSBjb250YWluc1N0cmluZzpAIlJlamVjdGVkISJdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGZ1
bmN0aW9uQm9keSA9IEAibGV0IHAgPSBuZXcgUHJveHkoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0
KSB7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHJlc29sdmUoNDIpOyB9LCAwKTsgfSwgeyB9KTsg
cmV0dXJuIHsgdGhlbjogcCB9OyI7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcg
X2NhbGxBc3luY0Z1bmN0aW9uOmZ1bmN0aW9uQm9keSB3aXRoQXJndW1lbnRzOm5pbCBjb21wbGV0
aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQ
RUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xh
c3M6W05TTnVtYmVyIGNsYXNzXV0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1
YWxUb051bWJlcjpANDJdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGZ1bmN0aW9uQm9keSA9IEAibGV0
IHAgPSBuZXcgUHJveHkoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7IHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHJlamVjdCgnUmVqZWN0ZWQhJyk7IH0sIDApOyB9LCB7IH0pOyByZXR1cm4geyB0
aGVuOiBwIH07IjsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfY2FsbEFzeW5j
RnVuY3Rpb246ZnVuY3Rpb25Cb2R5IHdpdGhBcmd1bWVudHM6bmlsIGNvbXBsZXRpb25IYW5kbGVy
OlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChy
ZXN1bHQpOworICAgICAgICBFWFBFQ1RfVFJVRShlcnJvciAhPSBuaWwpOworICAgICAgICBFWFBF
Q1RfVFJVRShbW2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAIlJlamVjdGVkISJd
KTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICB0cnlHQ1Byb21pc2Uod2Vi
Vmlldy5nZXQoKSwgZG9uZSk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
K30KKwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387116</attachid>
            <date>2020-01-08 11:21:48 -0800</date>
            <delta_ts>2020-01-08 13:47:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205654-20200108112147.patch</filename>
            <type>text/plain</type>
            <size>9613</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2NhNWY1YTk0MGFjYjI5
NWJlOTg2MjRmYWUyMDlkOTRjNTNjYmViYS4uMTljNzU1ODEzOWJjNzhlZDY5MDVjOTRmMWFhYWEw
MGVkMDY5NWYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAxLTA4ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIF9jYWxsQXN5bmNG
dW5jdGlvbjp3aXRoQXJndW1lbnRzOiB3b3JrIHdpdGggcHJvbWlzZXMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU2NTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBTYWFtIEJhcmF0aS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlw
dEluV29ybGQpOgorCiAyMDIwLTAxLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNTI3MjQpOiBVbmFibGUgdG8gdGFwIG9u
IHBsYXkgYnV0dG9uIG9uIGdvb2dsZSB2aWRlbyAnU2VlIHRoZSB0b3Agc2VhcmNoIHRyZW5kcyBv
ZiAyMDE5JwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVy
LmNwcAppbmRleCAxZmQzOWIxZDk0ZjgyM2M1OTQzZTkzNDAzOGFhZTRiOTE2ZGVjZTZhLi40Njdl
Y2FlMzdiN2FmNWViNmRiM2U2N2ViYTFlMTg2YTA0ZWM2MzZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTgsNiArNTgsNyBAQAog
I2luY2x1ZGUgIm5wcnVudGltZV9pbXBsLmgiCiAjaW5jbHVkZSAicnVudGltZV9yb290LmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9IZWFwLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTRnVuY3Rpb24uaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0ludGVybmFsUHJvbWlzZS5oPgpAQCAtNzAsNiArNzEsNyBAQAogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9XZWFrR0NNYXBJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+
CisjaW5jbHVkZSA8d3RmL1NoYXJlZFRhc2suaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAKQEAgLTY5OSwxMyArNzAxLDY3
IEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVVzZXJBZ2VudFNj
cmlwdEluV29ybGRJbnRlcm5hbChET01XcmFwCiAgICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHRJbldv
cmxkKHdvcmxkLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKIH0KIAotdm9pZCBTY3JpcHRDb250cm9s
bGVyOjpleGVjdXRlQXN5bmNocm9ub3VzVXNlckFnZW50U2NyaXB0SW5Xb3JsZChET01XcmFwcGVy
V29ybGQmIHdvcmxkLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIFJlc29s
dmVGdW5jdGlvbiYmIHJlc29sdmVGdW5jdGlvbikKK3ZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXhl
Y3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3
b3JsZCwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBSZXNvbHZlRnVuY3Rp
b24mJiByZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byByZXN1bHQgPSBleGVj
dXRlVXNlckFnZW50U2NyaXB0SW5Xb3JsZEludGVybmFsKHdvcmxkLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKKyAgICAKKyAgICBpZiAocGFyYW1ldGVycy5ydW5Bc0FzeW5jRnVuY3Rpb24gPT0gUnVu
QXNBc3luY0Z1bmN0aW9uOjpObyB8fCAhcmVzdWx0IHx8ICFyZXN1bHQudmFsdWUoKS5pc09iamVj
dCgpKSB7CisgICAgICAgIHJlc29sdmVDb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2hlbiBydW5uaW5nIEphdmFTY3JpcHQgYXMgYW4g
YXN5bmMgZnVuY3Rpb24sIGFueSAidGhlbmFibGUiIG9iamVjdCBnZXRzIHByb21pc2UtbGlrZSBi
ZWhhdmlvciBvZiBkZWZlcnJlZCBjb21wbGV0aW9uLgorICAgIGF1dG8gdGhlbklkZW50aWZpZXIg
PSB3b3JsZC52bSgpLnByb3BlcnR5TmFtZXMtPnRoZW47CisgICAgYXV0byYgcHJveHkgPSBqc1dp
bmRvd1Byb3h5KHdvcmxkKTsKKyAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAqcHJveHkud2luZG93
KCk7CisKKyAgICBhdXRvIHRoZW5GdW5jdGlvbiA9IHJlc3VsdC52YWx1ZSgpLmdldCgmZ2xvYmFs
T2JqZWN0LCB0aGVuSWRlbnRpZmllcik7CisgICAgaWYgKCF0aGVuRnVuY3Rpb24uaXNPYmplY3Qo
KSkgeworICAgICAgICByZXNvbHZlQ29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gYXNPYmplY3QodGhlbkZ1bmN0aW9uKS0+bWV0aG9kVGFibGUod29ybGQudm0oKSkt
PmdldENhbGxEYXRhKGFzT2JqZWN0KHRoZW5GdW5jdGlvbiksIGNhbGxEYXRhKTsKKyAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKKyAgICAgICAgcmVzb2x2ZUNvbXBsZXRpb25I
YW5kbGVyKHJlc3VsdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHNoYXJl
ZFJlc29sdmVGdW5jdGlvbiA9IGNyZWF0ZVNoYXJlZFRhc2s8dm9pZChWYWx1ZU9yRXhjZXB0aW9u
KT4oW3Jlc29sdmVDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUocmVzb2x2ZUNvbXBsZXRpb25I
YW5kbGVyKV0oVmFsdWVPckV4Y2VwdGlvbiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAo
cmVzb2x2ZUNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgcmVzb2x2ZUNvbXBsZXRpb25I
YW5kbGVyKHJlc3VsdCk7CisgICAgICAgIHJlc29sdmVDb21wbGV0aW9uSGFuZGxlciA9IG51bGxw
dHI7CisgICAgfSk7CisKKyAgICBhdXRvKiBmdWxmaWxsSGFuZGxlciA9IEpTQzo6SlNOYXRpdmVT
dGRGdW5jdGlvbjo6Y3JlYXRlKHdvcmxkLnZtKCksICZnbG9iYWxPYmplY3QsIDEsIFN0cmluZyB7
IH0sIFtzaGFyZWRSZXNvbHZlRnVuY3Rpb24gPSBzaGFyZWRSZXNvbHZlRnVuY3Rpb24uY29weVJl
ZigpXSAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkgbXV0YWJsZSB7Cisg
ICAgICAgIHNoYXJlZFJlc29sdmVGdW5jdGlvbi0+cnVuKGNhbGxGcmFtZS0+YXJndW1lbnQoMCkp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0p
OworCisgICAgYXV0byogcmVqZWN0SGFuZGxlciA9IEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbjo6
Y3JlYXRlKHdvcmxkLnZtKCksICZnbG9iYWxPYmplY3QsIDEsIFN0cmluZyB7IH0sIFtzaGFyZWRS
ZXNvbHZlRnVuY3Rpb24gPSBzaGFyZWRSZXNvbHZlRnVuY3Rpb24uY29weVJlZigpXSAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpIG11dGFibGUgewor
ICAgICAgICBzaGFyZWRSZXNvbHZlRnVuY3Rpb24tPnJ1bihtYWtlVW5leHBlY3RlZChFeGNlcHRp
b25EZXRhaWxzIHsgY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhnbG9iYWxPYmpl
Y3QpIH0pKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICB9KTsKKworICAgIGF1dG8gZmluYWxpemVDb3VudCA9IG1ha2VVbmlxdWVXaXRob3V0RmFz
dE1hbGxvY0NoZWNrPHVuc2lnbmVkPigwKTsKKyAgICBhdXRvIGZpbmFsaXplR3VhcmQgPSBjcmVh
dGVTaGFyZWRUYXNrPHZvaWQoKT4oW3NoYXJlZFJlc29sdmVGdW5jdGlvbiA9IFdURk1vdmUoc2hh
cmVkUmVzb2x2ZUZ1bmN0aW9uKSwgZmluYWxpemVDb3VudCA9IFdURk1vdmUoZmluYWxpemVDb3Vu
dCldKCkgeworICAgICAgICBpZiAoKysoKmZpbmFsaXplQ291bnQpID09IDIpCisgICAgICAgICAg
ICBzaGFyZWRSZXNvbHZlRnVuY3Rpb24tPnJ1bihtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRh
aWxzIHsgIkNvbXBsZXRpb24gaGFuZGxlciBmb3IgZnVuY3Rpb24gY2FsbCBpcyBubyBsb25nZXIg
cmVhY2hhYmxlIl9zIH0pKTsKKyAgICB9KTsKKworICAgIHdvcmxkLnZtKCkuaGVhcC5hZGRGaW5h
bGl6ZXIoZnVsZmlsbEhhbmRsZXIsIFtmaW5hbGl6ZUd1YXJkID0gZmluYWxpemVHdWFyZC5jb3B5
UmVmKCldKEpTQ2VsbCopIHsKKyAgICAgICAgZmluYWxpemVHdWFyZC0+cnVuKCk7CisgICAgfSk7
CisgICAgd29ybGQudm0oKS5oZWFwLmFkZEZpbmFsaXplcihyZWplY3RIYW5kbGVyLCBbZmluYWxp
emVHdWFyZCA9IGZpbmFsaXplR3VhcmQuY29weVJlZigpXShKU0NlbGwqKSB7CisgICAgICAgIGZp
bmFsaXplR3VhcmQtPnJ1bigpOworICAgIH0pOwogCi0gICAgLy8gRklYTUU6IElmIHRoZSByZXN1
bHQgaXMgYSB0aGVuYWJsZSwgaW5zdGFsbCB0aGUgZnVsZmlsbC9yZWplY3QgaGFuZGxlcnMgaW5z
dGVhZCBvZiByZXNvbHZpbmcgbm93LgorICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
dW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBlbmQoZnVsZmlsbEhhbmRsZXIpOworICAgIGFyZ3Vt
ZW50cy5hcHBlbmQocmVqZWN0SGFuZGxlcik7CiAKLSAgICByZXNvbHZlRnVuY3Rpb24ocmVzdWx0
KTsKKyAgICBjYWxsKCZnbG9iYWxPYmplY3QsIHRoZW5GdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxE
YXRhLCByZXN1bHQudmFsdWUoKSwgYXJndW1lbnRzKTsKIH0KIAogRXhwZWN0ZWQ8dm9pZCwgRXhj
ZXB0aW9uRGV0YWlscz4gU2NyaXB0Q29udHJvbGxlcjo6c2hvdWxkQWxsb3dVc2VyQWdlbnRTY3Jp
cHRzKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiZmY5YmRiODZiNzdjNjQ5YzJmZTg2NDJiMzg2YmRh
MTNjNjlhNGFlLi44YTQ4MTZjZGM4OGU3ZjM1YmRhMDRmYWMxYTIzNjBkMGZlOTI4ZWM2IDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMjAtMDEtMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisg
ICAgICAgIE1ha2UgX2NhbGxBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVudHM6IHdvcmsgd2l0aCBw
cm9taXNlcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwNTY1NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgIFRl
c3QgdGhhdDoKKyAgICAgICAgLSBSZXNvbHZlIHJlc3VsdHMgaW4gc3VjY2VzcyBoYW5kbGVyIGJl
aW5nIGNhbGxlZAorICAgICAgICAtIFJlamVjdCByZXN1bHRzIGluIGVycm9yIGhhbmRsZXIgYmVp
bmcgY2FsbGVkCisgICAgICAgIC0gQm90aCByZXNvbHZlIGFuZCByZWplY3QgYmVjb21pbmcgdW5y
ZWFjaGFibGUgcmVzdWx0cyBpbiB0aGUgZXJyb3IgaGFuZGxlciBiZWluZyBjYWxsZWQKKyAgICAg
ICAgLSBCb3RoIG5hdGl2ZSBQcm9taXNlIG9iamVjdHMgYW5kIGFyYml0cmFyeSB0aGVuYWJsZXMg
d29yaworICAgICAgICAtIEFueSBvYmplY3Qgd2hlcmUgInRoZW4iIGlzIGNhbGxhYmxlIC0gZXZl
biBpZiBub3QgYSBmdW5jdGlvbiAtIHdvcmtzCisgICAgICAgIAorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OnRyeUdDUHJvbWlzZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTog
CisKIDIwMjAtMDEtMDYgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtpT1NdIElzc3VlIG1hY2ggbG9va3VwIGV4dGVuc2lvbiB0byBsYXVuY2ggc2Vydmlj
ZXMgZGFlbW9uIGZvciBNYWlsCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0KaW5kZXggZDFmOTdkM2Q2OTgyMjdjNGY2MGQ0
MzRjNWU1YTQ1MjgyMTljZmE4Yy4uMDljYWZlNDc5NjgyZDczODI4NmQ4ODBiZmViN2RjNjYyM2Y4
YWQ4MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9B
c3luY0Z1bmN0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQXN5bmNGdW5jdGlvbi5tbQpAQCAtMTc3LDUgKzE3Nyw3NSBAQCBURVNUKEFzeW5jRnVuY3Rp
b24sIFJvdW5kVHJpcCkKICAgICBFWFBFQ1RfVFJVRShbdmFsdWUgaXNFcXVhbDpyZXN1bHRdKTsK
IH0KIAorc3RhdGljIHZvaWQgdHJ5R0NQcm9taXNlKFdLV2ViVmlldyAqd2ViVmlldywgYm9vbCYg
ZG9uZSkKK3sKKyAgICBpZiAoZG9uZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTlNTdHJpbmcg
KmZ1bmN0aW9uQm9keSA9IEAicmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJl
amVjdCkgeyB9KSI7CisgICAgW3dlYlZpZXcgX2NhbGxBc3luY0Z1bmN0aW9uOmZ1bmN0aW9uQm9k
eSB3aXRoQXJndW1lbnRzOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNF
cnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoZXJyb3IgIT0gbmlsKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW1tlcnJvciBkZXNj
cmlwdGlvbl0gY29udGFpbnNTdHJpbmc6QCJubyBsb25nZXIgcmVhY2hhYmxlIl0pOworICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIF57IHRyeUdDUHJvbWlzZSh3ZWJWaWV3LCBkb25lKTsgfSk7Cit9CisK
K1RFU1QoQXN5bmNGdW5jdGlvbiwgUHJvbWlzZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKV0pOworCisgICAgTlNTdHJpbmcgKmZ1bmN0aW9uQm9keSA9IEAicmV0dXJuIG5l
dyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeyBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCl7IHJlc29sdmUoNDIpIH0sIDApOyB9KSI7CisKKyAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAg
ICBbd2ViVmlldyBfY2FsbEFzeW5jRnVuY3Rpb246ZnVuY3Rpb25Cb2R5IHdpdGhBcmd1bWVudHM6
bmlsIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewor
ICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQg
aXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFty
ZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkA0Ml0pOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxz
ZTsKKworICAgIGZ1bmN0aW9uQm9keSA9IEAicmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJl
c29sdmUsIHJlamVjdCkgeyBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IHJlamVjdCgnUmVqZWN0ZWQh
JykgfSwgMCk7IH0pIjsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfY2FsbEFz
eW5jRnVuY3Rpb246ZnVuY3Rpb25Cb2R5IHdpdGhBcmd1bWVudHM6bmlsIGNvbXBsZXRpb25IYW5k
bGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVM
TChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfVFJVRShlcnJvciAhPSBuaWwpOworICAgICAgICBF
WFBFQ1RfVFJVRShbW2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAIlJlamVjdGVk
ISJdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGZ1bmN0aW9uQm9keSA9IEAibGV0IHAgPSBuZXcgUHJv
eHkoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHJl
c29sdmUoNDIpOyB9LCAwKTsgfSwgeyB9KTsgcmV0dXJuIHsgdGhlbjogcCB9OyI7CisKKyAgICBk
b25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2NhbGxBc3luY0Z1bmN0aW9uOmZ1bmN0aW9uQm9k
eSB3aXRoQXJndW1lbnRzOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNF
cnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBF
Q1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOworICAgICAg
ICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpANDJdKTsKKyAgICAgICAgZG9u
ZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsK
KworICAgIGZ1bmN0aW9uQm9keSA9IEAibGV0IHAgPSBuZXcgUHJveHkoZnVuY3Rpb24ocmVzb2x2
ZSwgcmVqZWN0KSB7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHJlamVjdCgnUmVqZWN0ZWQhJyk7
IH0sIDApOyB9LCB7IH0pOyByZXR1cm4geyB0aGVuOiBwIH07IjsKKworICAgIGRvbmUgPSBmYWxz
ZTsKKyAgICBbd2ViVmlldyBfY2FsbEFzeW5jRnVuY3Rpb246ZnVuY3Rpb25Cb2R5IHdpdGhBcmd1
bWVudHM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJv
cikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBFWFBFQ1RfVFJVRShl
cnJvciAhPSBuaWwpOworICAgICAgICBFWFBFQ1RfVFJVRShbW2Vycm9yIGRlc2NyaXB0aW9uXSBj
b250YWluc1N0cmluZzpAIlJlamVjdGVkISJdKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGRvbmUgPSBm
YWxzZTsKKyAgICB0cnlHQ1Byb21pc2Uod2ViVmlldy5nZXQoKSwgZG9uZSk7CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30KKwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>