<?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>236039</bug_id>
          
          <creation_ts>2022-02-02 14:12:54 -0800</creation_ts>
          <short_desc>Implement AbortSignal.timeout()</short_desc>
          <delta_ts>2022-02-04 08:26:38 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Domenic Denicola">d</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ashvayka</cc>
    
    <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1836635</commentid>
    <comment_count>0</comment_count>
    <who name="Domenic Denicola">d</who>
    <bug_when>2022-02-02 14:12:54 -0800</bug_when>
    <thetext>Spec PR/mini-explainer (landed): https://github.com/whatwg/dom/pull/1032

Spec: https://dom.spec.whatwg.org/#dom-abortsignal-timeout

Web platform tests PR (landed): https://github.com/web-platform-tests/wpt/pull/32622</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836661</commentid>
    <comment_count>1</comment_count>
      <attachid>450704</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-02 15:27:51 -0800</bug_when>
    <thetext>Created attachment 450704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836739</commentid>
    <comment_count>2</comment_count>
      <attachid>450704</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-02 18:36:08 -0800</bug_when>
    <thetext>Comment on attachment 450704
Patch

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

&gt; Source/WebCore/dom/AbortSignal.cpp:135
&gt; +    auto* context = scriptExecutionContext();
&gt; +    if (!context || context-&gt;activeDOMObjectsAreStopped())
&gt; +        return;
&gt; +
&gt; +    auto* globalObject = wrapper() ? wrapper()-&gt;globalObject() : nullptr;
&gt; +    if (!globalObject)
&gt; +        return;
&gt; +
&gt; +    auto&amp; vm = globalObject-&gt;vm();
&gt; +    Locker locker { vm.apiLock() };
&gt; +    signalAbort(toJS(globalObject, globalObject, DOMException::create(TimeoutError)));

Annoying we have to write so much custom binding code for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836740</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-02 18:40:42 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 450704 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=450704&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/AbortSignal.cpp:135
&gt; &gt; +    auto* context = scriptExecutionContext();
&gt; &gt; +    if (!context || context-&gt;activeDOMObjectsAreStopped())
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    auto* globalObject = wrapper() ? wrapper()-&gt;globalObject() : nullptr;
&gt; &gt; +    if (!globalObject)
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    auto&amp; vm = globalObject-&gt;vm();
&gt; &gt; +    Locker locker { vm.apiLock() };
&gt; &gt; +    signalAbort(toJS(globalObject, globalObject, DOMException::create(TimeoutError)));
&gt; 
&gt; Annoying we have to write so much custom binding code for this.

Yes. I suspect we may be able to use ActiveDOMObject instead. I&apos;ll look into it in a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836944</commentid>
    <comment_count>4</comment_count>
      <attachid>450771</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-03 08:04:09 -0800</bug_when>
    <thetext>Created attachment 450771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836946</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-03 08:04:50 -0800</bug_when>
    <thetext>Requesting review again because I simplified the patch a bit by leveraging DOMTimer instead of introducing an internal Timer for AbortSignal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836981</commentid>
    <comment_count>6</comment_count>
      <attachid>450771</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-03 09:41:15 -0800</bug_when>
    <thetext>Comment on attachment 450771
Patch

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

&gt; Source/WebCore/dom/AbortSignal.cpp:65
&gt; +        auto* globalObject = context.globalObject();

We should do the jsCast here, not wait until below to do it:

    auto* globalObject = jsCast&lt;JSDOMGlobalObject*&gt;(context.globalObject());

But also, and this is the patch I am working on, ScriptExecutionContext’s globalObject function should return JSDOMGlobalObject* or JSDOMGlobalObject&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836984</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-03 09:46:14 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; Comment on attachment 450771 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=450771&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/AbortSignal.cpp:65
&gt; &gt; +        auto* globalObject = context.globalObject();
&gt; 
&gt; We should do the jsCast here, not wait until below to do it:
&gt; 
&gt;     auto* globalObject = jsCast&lt;JSDOMGlobalObject*&gt;(context.globalObject());
&gt; 
&gt; But also, and this is the patch I am working on, ScriptExecutionContext’s
&gt; globalObject function should return JSDOMGlobalObject* or JSDOMGlobalObject&amp;.

Agreed.

Thanks for reviewing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836988</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-03 09:58:26 -0800</bug_when>
    <thetext>Committed r289058 (?): &lt;https://commits.webkit.org/r289058&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1836989</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-03 09:59:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/88441350&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837197</commentid>
    <comment_count>10</comment_count>
      <attachid>450771</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-02-03 18:16:50 -0800</bug_when>
    <thetext>Comment on attachment 450771
Patch

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

&gt; Source/WebCore/dom/AbortSignal.idl:36
&gt; +    [NewObject, CallWith=ScriptExecutionContext] static AbortSignal timeout([EnforceRange] unsigned long long milliseconds);

Shouldn&apos;t this be `CallWith=RelevantScriptExecutionContext` as step 2 explicitly requires _relevant_?
I believe the difference could be captured by 2 test cases:
  a) timeout() method from detached realm should still abort the signal, and
  b) timeout() method from another realm should create DOMException in signal&apos;s realm.

CallWith values naming is currently quite confusing (my bad). I will rename ScriptExecutionContext =&gt; CurrentScriptExecutionContext soonish.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837428</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-04 08:16:17 -0800</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #10)
&gt; Comment on attachment 450771 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=450771&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/AbortSignal.idl:36
&gt; &gt; +    [NewObject, CallWith=ScriptExecutionContext] static AbortSignal timeout([EnforceRange] unsigned long long milliseconds);
&gt; 
&gt; Shouldn&apos;t this be `CallWith=RelevantScriptExecutionContext` as step 2
&gt; explicitly requires _relevant_?
&gt; I believe the difference could be captured by 2 test cases:
&gt;   a) timeout() method from detached realm should still abort the signal, and
&gt;   b) timeout() method from another realm should create DOMException in
&gt; signal&apos;s realm.
&gt; 
&gt; CallWith values naming is currently quite confusing (my bad). I will rename
&gt; ScriptExecutionContext =&gt; CurrentScriptExecutionContext soonish.

FYI, CallWith=RelevantScriptExecutionContext doesn&apos;t build:
/Volumes/Data/WebKit/OpenSource/WebKitBuild/Debug/DerivedSources/WebCore/JSAbortSignal.cpp:297:23: error: use of undeclared identifier &apos;castedThis&apos;
    auto* context = (*castedThis).globalObject()-&gt;scriptExecutionContext();

Probably because this is a static function.


Note that there is one test that involves a detached iframe (LayoutTests/imported/w3c/web-platform-tests/dom/abort/abort-signal-timeout.html) which seems to be passing with my patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1837432</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-02-04 08:26:38 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #11)
&gt; (In reply to Alexey Shvayka from comment #10)
&gt; &gt; Comment on attachment 450771 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=450771&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/AbortSignal.idl:36
&gt; &gt; &gt; +    [NewObject, CallWith=ScriptExecutionContext] static AbortSignal timeout([EnforceRange] unsigned long long milliseconds);
&gt; &gt; 
&gt; &gt; Shouldn&apos;t this be `CallWith=RelevantScriptExecutionContext` as step 2
&gt; &gt; explicitly requires _relevant_?
&gt; &gt; I believe the difference could be captured by 2 test cases:
&gt; &gt;   a) timeout() method from detached realm should still abort the signal, and
&gt; &gt;   b) timeout() method from another realm should create DOMException in
&gt; &gt; signal&apos;s realm.
&gt; &gt; 
&gt; &gt; CallWith values naming is currently quite confusing (my bad). I will rename
&gt; &gt; ScriptExecutionContext =&gt; CurrentScriptExecutionContext soonish.
&gt; 
&gt; FYI, CallWith=RelevantScriptExecutionContext doesn&apos;t build:
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Debug/DerivedSources/WebCore/
&gt; JSAbortSignal.cpp:297:23: error: use of undeclared identifier &apos;castedThis&apos;
&gt;     auto* context = (*castedThis).globalObject()-&gt;scriptExecutionContext();
&gt; 
&gt; Probably because this is a static function.

Ooh, sorry for the noise, that &quot;signal’s relevant global object&quot; spec wording got me all confused.

The signal is a newly-created object in a static function, it can&apos;t possibly have any other script execution context.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450704</attachid>
            <date>2022-02-02 15:27:51 -0800</date>
            <delta_ts>2022-02-03 08:04:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236039-20220202152750.patch</filename>
            <type>text/plain</type>
            <size>14960</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4OTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5YjJjYWIxYzRmZDc0
MGMyMmYyYWY2YTczY2E1YjdiOWMyOTBlYS4uNzc3Y2ZmYzE4YTFkYjQ2YzAyOWFhMTU4ZGEzOGEy
NDMzOTM2MjIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTAyLTAyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEFib3J0U2ln
bmFsLnRpbWVvdXQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM2MDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IHRoZSBuZXcgQWJvcnRTaWduYWwudGltZW91dCgpIGFzIHBlcjoKKyAg
ICAgICAgLSBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1hYm9ydHNpZ25hbC10aW1l
b3V0CisKKyAgICAgICAgVGVzdDogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20v
YWJvcnQvYWJvcnQtc2lnbmFsLXRpbWVvdXQuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMv
SlNBYm9ydFNpZ25hbEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Fib3J0U2lnbmFs
T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKiBkb20vQWJvcnRT
aWduYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWJvcnRTaWduYWw6OnRpbWVvdXQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWJvcnRTaWduYWw6OkFib3J0U2lnbmFsKToKKyAgICAgICAgKFdlYkNv
cmU6OkFib3J0U2lnbmFsOjpzZXRUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFib3J0U2ln
bmFsOjpkaWRUaW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFib3J0U2lnbmFsOjpldmVudExp
c3RlbmVyc0RpZENoYW5nZSk6CisgICAgICAgICogZG9tL0Fib3J0U2lnbmFsLmg6CisgICAgICAg
ICogZG9tL0Fib3J0U2lnbmFsLmlkbDoKKwogMjAyMi0wMi0wMiAgU2FpZCBBYm91LUhhbGxhd2Eg
IDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIFJlbW92ZSBEaXNwbGF5
TGlzdDo6UmVwbGF5ZXI6OkRlbGVnYXRlIGFuZCBEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsOjpE
ZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBYm9ydFNp
Z25hbEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Fib3J0U2lnbmFs
Q3VzdG9tLmNwcAppbmRleCAwOGM1NzY3OTdkYWY2NGM2MjI5N2U2NTA5OWY1NjUzNjdhZGFmM2Q4
Li40MWUwZjMzNzZiN2YyMDM2NTUyNDU0MTE1MzkwM2VkZThjYWE3NmI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Fib3J0U2lnbmFsQ3VzdG9tLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Fib3J0U2lnbmFsQ3VzdG9tLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0qIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogKgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw2ICs0
Myw5IEBAIGJvb2wgSlNBYm9ydFNpZ25hbE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhCiAgICAgaWYgKGFib3J0U2lnbmFsLmlzRm9s
bG93aW5nU2lnbmFsKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisgICAgaWYgKGFib3J0U2ln
bmFsLmhhc0Fib3J0RXZlbnRMaXN0ZW5lcigpICYmIGFib3J0U2lnbmFsLmhhc0FjdGl2ZVRpbWVv
dXRUaW1lcigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIHJldHVybiB2aXNpdG9yLmNv
bnRhaW5zT3BhcXVlUm9vdCgmYWJvcnRTaWduYWwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQWJvcnRTaWduYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Fib3J0U2ln
bmFsLmNwcAppbmRleCBkNDk3NWY2ZGE0OGZmMjEyZTRiNDQ5NTIzZTFlNGYxMGUyZmUxZjE5Li5k
MmY5NzhiNjcwNDRmZTIyMzU2NDY4N2EzZGQ1MGM4N2RmMmE5N2Q4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQWJvcnRTaWduYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9B
Ym9ydFNpZ25hbC5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0y
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQWJvcnRBbGdvcml0aG0u
aCIKICNpbmNsdWRlICJET01FeGNlcHRpb24uaCIKKyNpbmNsdWRlICJET01UaW1lci5oIgogI2lu
Y2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkpTRE9N
RXhjZXB0aW9uLmgiCkBAIC01MywxNCArNTQsMjUgQEAgUmVmPEFib3J0U2lnbmFsPiBBYm9ydFNp
Z25hbDo6YWJvcnQoSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgU2NyaXB0RXhlY3UK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBYm9ydFNpZ25hbCgmY29udGV4dCwgQWJvcnRlZDo6
WWVzLCByZWFzb24pKTsKIH0KIAorLy8gaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb20t
YWJvcnRzaWduYWwtdGltZW91dAorUmVmPEFib3J0U2lnbmFsPiBBYm9ydFNpZ25hbDo6dGltZW91
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCB1aW50NjRfdCBtaWxsaXNlY29uZHMp
Cit7CisgICAgYXV0byBzaWduYWwgPSBhZG9wdFJlZigqbmV3IEFib3J0U2lnbmFsKCZjb250ZXh0
KSk7CisgICAgc2lnbmFsLT5zZXRUaW1lb3V0KFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMobWls
bGlzZWNvbmRzKSk7CisgICAgcmV0dXJuIHNpZ25hbDsKK30KKwogQWJvcnRTaWduYWw6OkFib3J0
U2lnbmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEFib3J0ZWQgYWJvcnRlZCwg
SlNDOjpKU1ZhbHVlIHJlYXNvbikKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGNv
bnRleHQpCiAgICAgLCBtX2Fib3J0ZWQoYWJvcnRlZCA9PSBBYm9ydGVkOjpZZXMpCisgICAgLCBt
X3RpbWVvdXRUaW1lcigqdGhpcywgJkFib3J0U2lnbmFsOjpkaWRUaW1lb3V0KQogICAgICwgbV9y
ZWFzb24ocmVhc29uKQogewogICAgIEFTU0VSVChyZWFzb24pOwogfQogCitBYm9ydFNpZ25hbDo6
fkFib3J0U2lnbmFsKCkgPSBkZWZhdWx0OworCiAvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5v
cmcvI2Fib3J0c2lnbmFsLXNpZ25hbC1hYm9ydAogdm9pZCBBYm9ydFNpZ25hbDo6c2lnbmFsQWJv
cnQoSlNDOjpKU1ZhbHVlIHJlYXNvbikKIHsKQEAgLTEwMiw2ICsxMTQsMzIgQEAgdm9pZCBBYm9y
dFNpZ25hbDo6c2lnbmFsRm9sbG93KEFib3J0U2lnbmFsJiBzaWduYWwpCiAgICAgfSk7CiB9CiAK
K3ZvaWQgQWJvcnRTaWduYWw6OnNldFRpbWVvdXQoU2Vjb25kcyB0aW1lb3V0KQoreworICAgIEFT
U0VSVCghbV90aW1lb3V0VGltZXIuaXNBY3RpdmUoKSk7CisgICAgbV90aW1lb3V0VGltZXIuc3Rh
cnRPbmVTaG90KHRpbWVvdXQpOworfQorCit2b2lkIEFib3J0U2lnbmFsOjpkaWRUaW1lb3V0KCkK
K3sKKyAgICBhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlm
ICghY29udGV4dCB8fCBjb250ZXh0LT5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB3cmFwcGVyKCkgPyB3cmFw
cGVyKCktPmdsb2JhbE9iamVjdCgpIDogbnVsbHB0cjsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IHZtLmFwaUxvY2soKSB9OworICAgIHNpZ25hbEFib3J0KHRvSlMo
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIERPTUV4Y2VwdGlvbjo6Y3JlYXRlKFRpbWVvdXRF
cnJvcikpKTsKK30KKwordm9pZCBBYm9ydFNpZ25hbDo6ZXZlbnRMaXN0ZW5lcnNEaWRDaGFuZ2Uo
KQoreworICAgIG1faGFzQWJvcnRFdmVudExpc3RlbmVyID0gaGFzRXZlbnRMaXN0ZW5lcnMoZXZl
bnROYW1lcygpLmFib3J0RXZlbnQpOworfQorCiBib29sIEFib3J0U2lnbmFsOjp3aGVuU2lnbmFs
QWJvcnRlZChBYm9ydFNpZ25hbCYgc2lnbmFsLCBSZWY8QWJvcnRBbGdvcml0aG0+JiYgYWxnb3Jp
dGhtKQogewogICAgIGlmIChzaWduYWwuYWJvcnRlZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQWJvcnRTaWduYWwuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BYm9ydFNpZ25h
bC5oCmluZGV4IDRmMjIxYWM5YjcwZWU5ZDNjY2M4ZTA4ZDYxNzkxM2FhNzZkZTM3Y2EuLjNkMjkz
NGQ2NDdiYTZmZjQxODAzODg4YTQyOTIyYzQ0ZGE0NWVkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BYm9ydFNpZ25hbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BYm9ydFNp
Z25hbC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTQzLDggKzQzLDEwIEBAIGNsYXNzIEFib3J0U2lnbmFsIGZpbmFsIDogcHVibGljIFJl
ZkNvdW50ZWQ8QWJvcnRTaWduYWw+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoCiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9FWFBPUlQoQWJvcnRTaWduYWwsIFdFQkNPUkVfRVhQT1JUKTsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPEFib3J0U2lnbmFsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOworICAgIFdFQkNPUkVfRVhQT1JUIH5BYm9ydFNpZ25hbCgpOwogCiAgICAgc3Rh
dGljIFJlZjxBYm9ydFNpZ25hbD4gYWJvcnQoSlNET01HbG9iYWxPYmplY3QmLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgSlNDOjpKU1ZhbHVlIHJlYXNvbik7CisgICAgc3RhdGljIFJlZjxBYm9y
dFNpZ25hbD4gdGltZW91dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgdWludDY0X3QgbWlsbGlz
ZWNvbmRzKTsKIAogICAgIHN0YXRpYyBib29sIHdoZW5TaWduYWxBYm9ydGVkKEFib3J0U2lnbmFs
JiwgUmVmPEFib3J0QWxnb3JpdGhtPiYmKTsKIApAQCAtNTQsNiArNTYsOSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBhYm9ydGVkKCkgY29uc3QgeyByZXR1cm4gbV9hYm9ydGVkOyB9CiAgICAgY29uc3Qg
SlNWYWx1ZUluV3JhcHBlZE9iamVjdCYgcmVhc29uKCkgY29uc3QgeyByZXR1cm4gbV9yZWFzb247
IH0KIAorICAgIGJvb2wgaGFzQWN0aXZlVGltZW91dFRpbWVyKCkgY29uc3QgeyByZXR1cm4gbV90
aW1lb3V0VGltZXIuaXNBY3RpdmUoKTsgfQorICAgIGJvb2wgaGFzQWJvcnRFdmVudExpc3RlbmVy
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNBYm9ydEV2ZW50TGlzdGVuZXI7IH0KKwogICAgIHVzaW5n
IFJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIApAQCAtNjgs
MTYgKzczLDIyIEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBBYm9ydGVkIDogYm9vbCB7IE5v
LCBZZXMgfTsKICAgICBleHBsaWNpdCBBYm9ydFNpZ25hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgQWJvcnRlZCA9IEFib3J0ZWQ6Ok5vLCBKU0M6OkpTVmFsdWUgcmVhc29uID0gSlNDOjpqc1Vu
ZGVmaW5lZCgpKTsKIAorICAgIHZvaWQgc2V0VGltZW91dChTZWNvbmRzKTsKKyAgICB2b2lkIGRp
ZFRpbWVvdXQoKTsKKwogICAgIC8vIEV2ZW50VGFyZ2V0LgogICAgIEV2ZW50VGFyZ2V0SW50ZXJm
YWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWJvcnRTaWdu
YWxFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ29udGV4dERl
c3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogICAgIHZvaWQg
cmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFy
Z2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CisgICAgdm9pZCBldmVudExpc3RlbmVyc0RpZENoYW5n
ZSgpIGZpbmFsOwogICAgIAogICAgIGJvb2wgbV9hYm9ydGVkIHsgZmFsc2UgfTsKICAgICBWZWN0
b3I8QWxnb3JpdGhtPiBtX2FsZ29yaXRobXM7CiAgICAgV2Vha1B0cjxBYm9ydFNpZ25hbD4gbV9m
b2xsb3dpbmdTaWduYWw7CisgICAgVGltZXIgbV90aW1lb3V0VGltZXI7CiAgICAgSlNWYWx1ZUlu
V3JhcHBlZE9iamVjdCBtX3JlYXNvbjsKKyAgICBib29sIG1faGFzQWJvcnRFdmVudExpc3RlbmVy
IHsgZmFsc2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BYm9y
dFNpZ25hbC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWJvcnRTaWduYWwuaWRsCmluZGV4IDU0
NWVlMjUxNjlmYzEyNzhlMmUzYTQ5YjVjMjdlYzMzN2Y5ZDAyNzMuLjU1MmZhMGJhOWIyMzI0Y2Iw
ZWMxZGNkZjRiNzQ3Yjk1MTAyNmM2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9B
Ym9ydFNpZ25hbC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Fib3J0U2lnbmFsLmlkbApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
Myw2ICszMyw4IEBACiAgICAgW1ByaXZhdGVJZGVudGlmaWVyXSBzdGF0aWMgYm9vbGVhbiB3aGVu
U2lnbmFsQWJvcnRlZChBYm9ydFNpZ25hbCBvYmplY3QsIEFib3J0QWxnb3JpdGhtIGFsZ29yaXRo
bSk7CiAKICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0Jkds
b2JhbE9iamVjdF0gc3RhdGljIEFib3J0U2lnbmFsIGFib3J0KG9wdGlvbmFsIGFueSByZWFzb24p
OworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHN0YXRp
YyBBYm9ydFNpZ25hbCB0aW1lb3V0KFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgbG9uZyBt
aWxsaXNlY29uZHMpOworCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gYWJvcnRlZDsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgYW55IHJlYXNvbjsKICAgICBbQ2FsbFdpdGg9R2xvYmFs
T2JqZWN0XSB1bmRlZmluZWQgdGhyb3dJZkFib3J0ZWQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCmluZGV4IDljNTExNzExMTViYWRiZTBhNmViNDJiN2JiZjRkNGIxZDFkZDFkNjMuLjFj
MGNhYWVmOTc1MTc0NzZmNDU4YjZiZDYwZmY0OTRiMDgwYzYzM2MgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIyLTAyLTAyICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEFib3J0U2lnbmFsLnRpbWVv
dXQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
MDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
b3J0IEFib3J0U2lnbmFsLnRpbWVvdXQoKSB0ZXN0cyBmcm9tIHVwc3RyZWFtIFdQVC4KKworICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9kb20vYWJvcnQvQWJvcnRTaWduYWwuYW55LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2Fib3J0L0Fib3J0U2ln
bmFsLmFueS5qczoKKyAgICAgICAgKGFzeW5jX3Rlc3QudC5zaWduYWwub25hYm9ydC50LnN0ZXBf
ZnVuY19kb25lKToKKyAgICAgICAgKGFzeW5jX3Rlc3QudC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5z
aWduYWwub25hYm9ydC50LnN0ZXBfZnVuYyk6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L2RvbS9hYm9ydC9BYm9ydFNpZ25hbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2Fib3J0L2Fib3J0LXNpZ25hbC10aW1lb3V0LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9hYm9ydC9h
Ym9ydC1zaWduYWwtdGltZW91dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvZG9tL2Fib3J0L3czYy1pbXBvcnQubG9nOgorCiAyMDIyLTAyLTAyICBQYXRyaWNrIEdy
aWZmaXMgIDxwZ3JpZmZpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIENTUDogRml4IHJldHVybmVk
IFdlYkFzc2VtYmx5IGVycm9yIHR5cGUgd2hlbiBibG9ja2VkCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9hYm9ydC9BYm9ydFNpZ25h
bC5hbnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9kb20vYWJvcnQvQWJvcnRTaWduYWwuYW55LWV4cGVjdGVkLnR4dAppbmRleCA0YTIx
YjY5NWU5NWIyZmRiMDAyOWJkYTEyODc3MWIyNTkzMzM0YmY3Li4zM2FjZWZlMmI1MTU0MjA0NjRm
YjFkNjVjYmM3MWQ1ZjAyMGM4MGMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9hYm9ydC9BYm9ydFNpZ25hbC5hbnktZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9t
L2Fib3J0L0Fib3J0U2lnbmFsLmFueS1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw3IEBACiAKIFBB
U1MgdGhlIEFib3J0U2lnbmFsLmFib3J0KCkgc3RhdGljIHJldHVybnMgYW4gYWxyZWFkeSBhYm9y
dGVkIHNpZ25hbAogUEFTUyBzaWduYWwgcmV0dXJuZWQgYnkgQWJvcnRTaWduYWwuYWJvcnQoKSBz
aG91bGQgbm90IGZpcmUgYWJvcnQgZXZlbnQKK1BBU1MgQWJvcnRTaWduYWwudGltZW91dCgpIHJl
dHVybnMgYSBub24tYWJvcnRlZCBzaWduYWwKK1BBU1MgU2lnbmFsIHJldHVybmVkIGJ5IEFib3J0
U2lnbmFsLnRpbWVvdXQoKSB0aW1lcyBvdXQKK1BBU1MgQWJvcnRTaWduYWwgdGltZW91dHMgZmly
ZSBpbiBvcmRlcgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2RvbS9hYm9ydC9BYm9ydFNpZ25hbC5hbnkuanMgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9hYm9ydC9BYm9ydFNpZ25hbC5hbnku
anMKaW5kZXggMWQ3ZDc2NzhlYjFhNmUyN2FkYWJiZTBlMzFhZmU1NzRhMzFiYjBlYS4uM2JiZGMx
MWE5MmY5MGQ0ZTJkNGRjOGE1N2NhNTc3NGI0M2RhYzU1NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vYWJvcnQvQWJvcnRTaWduYWwu
YW55LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
ZG9tL2Fib3J0L0Fib3J0U2lnbmFsLmFueS5qcwpAQCAtMTAsMyArMTAsMzEgQEAgYXN5bmNfdGVz
dCh0ID0+IHsKICAgcy5vbmFib3J0ID0gdC51bnJlYWNoZWRfZnVuYygiYWJvcnQgZXZlbnQgaGFu
ZGxlciBjYWxsZWQiKTsKICAgdC5zdGVwX3RpbWVvdXQoKCkgPT4geyB0LmRvbmUoKTsgfSwgMjAw
MCk7CiB9LCAic2lnbmFsIHJldHVybmVkIGJ5IEFib3J0U2lnbmFsLmFib3J0KCkgc2hvdWxkIG5v
dCBmaXJlIGFib3J0IGV2ZW50Iik7CisKK3Rlc3QodCA9PiB7CisgIGNvbnN0IHNpZ25hbCA9IEFi
b3J0U2lnbmFsLnRpbWVvdXQoMCk7CisgIGFzc2VydF90cnVlKHNpZ25hbCBpbnN0YW5jZW9mIEFi
b3J0U2lnbmFsLCAicmV0dXJuZWQgb2JqZWN0IGlzIGFuIEFib3J0U2lnbmFsIik7CisgIGFzc2Vy
dF9mYWxzZShzaWduYWwuYWJvcnRlZCwgInJldHVybmVkIHNpZ25hbCBpcyBub3QgYWxyZWFkeSBh
Ym9ydGVkIik7Cit9LCAiQWJvcnRTaWduYWwudGltZW91dCgpIHJldHVybnMgYSBub24tYWJvcnRl
ZCBzaWduYWwiKTsKKworYXN5bmNfdGVzdCh0ID0+IHsKKyAgY29uc3Qgc2lnbmFsID0gQWJvcnRT
aWduYWwudGltZW91dCg1KTsKKyAgc2lnbmFsLm9uYWJvcnQgPSB0LnN0ZXBfZnVuY19kb25lKCgp
ID0+IHsKKyAgICBhc3NlcnRfdHJ1ZShzaWduYWwuYWJvcnRlZCwgInNpZ25hbCBpcyBhYm9ydGVk
Iik7CisgICAgYXNzZXJ0X3RydWUoc2lnbmFsLnJlYXNvbiBpbnN0YW5jZW9mIERPTUV4Y2VwdGlv
biwgInNpZ25hbC5yZWFzb24gaXMgYSBET01FeGNlcHRpb24iKTsKKyAgICBhc3NlcnRfZXF1YWxz
KHNpZ25hbC5yZWFzb24ubmFtZSwgIlRpbWVvdXRFcnJvciIsICJzaWduYWwucmVhc29uIGlzIGEg
VGltZW91dEVycm9yIik7CisgIH0pOworfSwgIlNpZ25hbCByZXR1cm5lZCBieSBBYm9ydFNpZ25h
bC50aW1lb3V0KCkgdGltZXMgb3V0Iik7CisKK2FzeW5jX3Rlc3QodCA9PiB7CisgIGxldCByZXN1
bHQgPSAiIjsKKyAgZm9yIChjb25zdCB2YWx1ZSBvZiBbIjEiLCAiMiIsICIzIl0pIHsKKyAgICBj
b25zdCBzaWduYWwgPSBBYm9ydFNpZ25hbC50aW1lb3V0KDUpOworICAgIHNpZ25hbC5vbmFib3J0
ID0gdC5zdGVwX2Z1bmMoKCkgPT4geyByZXN1bHQgKz0gdmFsdWU7IH0pOworICB9CisKKyAgY29u
c3Qgc2lnbmFsID0gQWJvcnRTaWduYWwudGltZW91dCg1KTsKKyAgc2lnbmFsLm9uYWJvcnQgPSB0
LnN0ZXBfZnVuY19kb25lKCgpID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdCwgIjEyMyIs
ICJUaW1lb3V0IG9yZGVyIHNob3VsZCBiZSAxMjMiKTsKKyAgfSk7Cit9LCAiQWJvcnRTaWduYWwg
dGltZW91dHMgZmlyZSBpbiBvcmRlciIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vYWJvcnQvQWJvcnRTaWduYWwuYW55Lndvcmtl
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2RvbS9hYm9ydC9BYm9ydFNpZ25hbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCA0
YTIxYjY5NWU5NWIyZmRiMDAyOWJkYTEyODc3MWIyNTkzMzM0YmY3Li4zM2FjZWZlMmI1MTU0MjA0
NjRmYjFkNjVjYmM3MWQ1ZjAyMGM4MGMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9hYm9ydC9BYm9ydFNpZ25hbC5hbnkud29ya2Vy
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2RvbS9hYm9ydC9BYm9ydFNpZ25hbC5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApAQCAt
MSw0ICsxLDcgQEAKIAogUEFTUyB0aGUgQWJvcnRTaWduYWwuYWJvcnQoKSBzdGF0aWMgcmV0dXJu
cyBhbiBhbHJlYWR5IGFib3J0ZWQgc2lnbmFsCiBQQVNTIHNpZ25hbCByZXR1cm5lZCBieSBBYm9y
dFNpZ25hbC5hYm9ydCgpIHNob3VsZCBub3QgZmlyZSBhYm9ydCBldmVudAorUEFTUyBBYm9ydFNp
Z25hbC50aW1lb3V0KCkgcmV0dXJucyBhIG5vbi1hYm9ydGVkIHNpZ25hbAorUEFTUyBTaWduYWwg
cmV0dXJuZWQgYnkgQWJvcnRTaWduYWwudGltZW91dCgpIHRpbWVzIG91dAorUEFTUyBBYm9ydFNp
Z25hbCB0aW1lb3V0cyBmaXJlIGluIG9yZGVyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2Fib3J0L2Fib3J0LXNpZ25hbC10aW1l
b3V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZG9tL2Fib3J0L2Fib3J0LXNpZ25hbC10aW1lb3V0LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yYzliNDM4MGI4ZTkxYzkwNGE2NWY3YTQzZDAyMzU1NjhlZGQwOTA2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20v
YWJvcnQvYWJvcnQtc2lnbmFsLXRpbWVvdXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAor
CitQQVNTIFNpZ25hbCByZXR1cm5lZCBieSBBYm9ydFNpZ25hbC50aW1lb3V0KCkgaXMgbm90IGFi
b3J0ZWQgYWZ0ZXIgZnJhbWUgZGV0YWNoCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2Fib3J0L2Fib3J0LXNpZ25hbC10aW1lb3V0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9h
Ym9ydC9hYm9ydC1zaWduYWwtdGltZW91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhOWMxM2Q2MTQzNGI0
M2M1YzQ3ZTQyNmMzZjZkZjk0ZmJiNjczNzAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9hYm9ydC9hYm9ydC1zaWduYWwt
dGltZW91dC5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBIVE1MPgorPG1ldGEgY2hh
cnNldD11dGYtOD4KKzx0aXRsZT5BYm9ydFNpZ25hbC50aW1lb3V0IGZyYW1lIGRldGFjaDwvdGl0
bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8
aWZyYW1lIGlkPSJpZnJhbWUiPjwvaWZyYW1lPgorPHNjcmlwdD4KKyAgYXN5bmNfdGVzdCh0ID0+
IHsKKyAgICBjb25zdCBzaWduYWwgPSBpZnJhbWUuY29udGVudFdpbmRvdy5BYm9ydFNpZ25hbC50
aW1lb3V0KDUpOworICAgIHNpZ25hbC5vbmFib3J0ID0gdC51bnJlYWNoZWRfZnVuYygiYWJvcnQg
bXVzdCBub3QgZmlyZSIpOworCisgICAgaWZyYW1lLnJlbW92ZSgpOworCisgICAgdC5zdGVwX3Rp
bWVvdXQoKCkgPT4geworICAgICAgYXNzZXJ0X2ZhbHNlKHNpZ25hbC5hYm9ydGVkKTsKKyAgICAg
IHQuZG9uZSgpOworICAgIH0sIDEwKTsKKyAgfSwgIlNpZ25hbCByZXR1cm5lZCBieSBBYm9ydFNp
Z25hbC50aW1lb3V0KCkgaXMgbm90IGFib3J0ZWQgYWZ0ZXIgZnJhbWUgZGV0YWNoIik7Cis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZG9tL2Fib3J0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vYWJvcnQvdzNjLWltcG9ydC5sb2cKaW5kZXggODU4NjJi
YzBiYzk4MTY0ZmJjMzNlZjQ1ODQxN2QyMjQzOWIxYjNhZS4uZDhiMzllODcwYmU2OGFmYjc0ZTI0
NGZlMDZlYmRlZTg5ODY4MjZmZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vYWJvcnQvdzNjLWltcG9ydC5sb2cKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vYWJvcnQvdzNjLWltcG9y
dC5sb2cKQEAgLTE1LDUgKzE1LDYgQEAgTm9uZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBMaXN0IG9mIGZp
bGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2Fi
b3J0L0Fib3J0U2lnbmFsLmFueS5qcworL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZG9tL2Fib3J0L2Fib3J0LXNpZ25hbC10aW1lb3V0Lmh0bWwKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9hYm9ydC9ldmVudC5hbnku
anMKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9hYm9y
dC9yZWFzb24tY29uc3RydWN0b3IuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450771</attachid>
            <date>2022-02-03 08:04:09 -0800</date>
            <delta_ts>2022-02-03 09:41:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236039-20220203080408.patch</filename>
            <type>text/plain</type>
            <size>18607</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc0MmY1NGIyZjVkODFj
ODgzOTA5MjI2ZjQ3NmE0YmJhNjAwMWEwNC4uYWYwYTcwNzkyZWY2NDE4YWVhYTAzZjI4MzllNDlk
MTBjYWMxNDJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIyLTAyLTAzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEFib3J0U2ln
bmFsLnRpbWVvdXQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM2MDM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IHRoZSBuZXcgQWJvcnRTaWduYWwudGltZW91dCgpIGFzIHBlcjoKKyAg
ICAgICAgLSBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1hYm9ydHNpZ25hbC10aW1l
b3V0CisKKyAgICAgICAgVGVzdDogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20v
YWJvcnQvYWJvcnQtc2lnbmFsLXRpbWVvdXQuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMv
SlNBYm9ydFNpZ25hbEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Fib3J0U2lnbmFs
T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKiBkb20vQWJvcnRT
aWduYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWJvcnRTaWduYWw6OnRpbWVvdXQpOgorICAg
ICAgICAoV2ViQ29yZTo6QWJvcnRTaWduYWw6OmV2ZW50TGlzdGVuZXJzRGlkQ2hhbmdlKToKKyAg
ICAgICAgKiBkb20vQWJvcnRTaWduYWwuaDoKKyAgICAgICAgKiBkb20vQWJvcnRTaWduYWwuaWRs
OgorICAgICAgICAqIHBhZ2UvRE9NVGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGlt
ZXI6OkRPTVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjppbnN0YWxsKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpmaXJlZCk6CisgICAgICAgICogcGFnZS9ET01UaW1l
ci5oOgorCiAyMDIyLTAyLTAzICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTEZDXVtJRkNdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy13
cml0aW5nLW1vZGVzL3RleHQtYWxpZ24tdmxyKiB0ZXN0cyBhcmUgZmFpbGluZwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBYm9ydFNpZ25hbEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Fib3J0U2lnbmFsQ3VzdG9tLmNwcAppbmRleCAw
OGM1NzY3OTdkYWY2NGM2MjI5N2U2NTA5OWY1NjUzNjdhZGFmM2Q4Li40MWUwZjMzNzZiN2YyMDM2
NTUyNDU0MTE1MzkwM2VkZThjYWE3NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0Fib3J0U2lnbmFsQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0Fib3J0U2lnbmFsQ3VzdG9tLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0qIENv
cHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyog
Q29weXJpZ2h0IChDKSAyMDE5LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
KgogKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Myw2ICs0Myw5IEBAIGJvb2wgSlNBYm9y
dFNpZ25hbE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhCiAgICAgaWYgKGFib3J0U2lnbmFsLmlzRm9sbG93aW5nU2lnbmFsKCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCisgICAgaWYgKGFib3J0U2lnbmFsLmhhc0Fib3J0RXZlbnRM
aXN0ZW5lcigpICYmIGFib3J0U2lnbmFsLmhhc0FjdGl2ZVRpbWVvdXRUaW1lcigpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKwogICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdCgm
YWJvcnRTaWduYWwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWJvcnRT
aWduYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Fib3J0U2lnbmFsLmNwcAppbmRleCBkNDk3
NWY2ZGE0OGZmMjEyZTRiNDQ5NTIzZTFlNGYxMGUyZmUxZjE5Li5mMGVlZDVhZGJmMTU4YWQ3NWY5
ODc0OTYwNDNiOWYxN2E1ZTNhY2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWJv
cnRTaWduYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BYm9ydFNpZ25hbC5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgs
NiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQWJvcnRBbGdvcml0aG0uaCIKICNpbmNsdWRlICJET01F
eGNlcHRpb24uaCIKKyNpbmNsdWRlICJET01UaW1lci5oIgogI2luY2x1ZGUgIkV2ZW50LmgiCiAj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uLmgiCkBAIC01
Myw2ICs1NCwyNiBAQCBSZWY8QWJvcnRTaWduYWw+IEFib3J0U2lnbmFsOjphYm9ydChKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBTY3JpcHRFeGVjdQogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEFib3J0U2lnbmFsKCZjb250ZXh0LCBBYm9ydGVkOjpZZXMsIHJlYXNvbikpOwogfQog
CisvLyBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1hYm9ydHNpZ25hbC10aW1lb3V0
CitSZWY8QWJvcnRTaWduYWw+IEFib3J0U2lnbmFsOjp0aW1lb3V0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIHVpbnQ2NF90IG1pbGxpc2Vjb25kcykKK3sKKyAgICBhdXRvIHNpZ25h
bCA9IGFkb3B0UmVmKCpuZXcgQWJvcnRTaWduYWwoJmNvbnRleHQpKTsKKyAgICBzaWduYWwtPnNl
dEhhc0FjdGl2ZVRpbWVvdXRUaW1lcih0cnVlKTsKKyAgICBhdXRvIGFjdGlvbiA9IFtzaWduYWxd
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgICAgICBzaWdu
YWwtPnNldEhhc0FjdGl2ZVRpbWVvdXRUaW1lcihmYWxzZSk7CisKKyAgICAgICAgYXV0byogZ2xv
YmFsT2JqZWN0ID0gY29udGV4dC5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgaWYgKCFnbG9iYWxP
YmplY3QpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyB2bS5hcGlMb2NrKCkgfTsKKyAg
ICAgICAgc2lnbmFsLT5zaWduYWxBYm9ydCh0b0pTKGdsb2JhbE9iamVjdCwganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSwgRE9NRXhjZXB0aW9uOjpjcmVhdGUoVGltZW91
dEVycm9yKSkpOworICAgIH07CisgICAgRE9NVGltZXI6Omluc3RhbGwoY29udGV4dCwgV1RGTW92
ZShhY3Rpb24pLCBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKG1pbGxpc2Vjb25kcyksIHRydWUp
OworICAgIHJldHVybiBzaWduYWw7Cit9CisKIEFib3J0U2lnbmFsOjpBYm9ydFNpZ25hbChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBBYm9ydGVkIGFib3J0ZWQsIEpTQzo6SlNWYWx1
ZSByZWFzb24pCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0KQogICAg
ICwgbV9hYm9ydGVkKGFib3J0ZWQgPT0gQWJvcnRlZDo6WWVzKQpAQCAtNjEsNiArODIsOCBAQCBB
Ym9ydFNpZ25hbDo6QWJvcnRTaWduYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
QWJvcnRlZCBhYm9ydGVkLCBKU0M6OgogICAgIEFTU0VSVChyZWFzb24pOwogfQogCitBYm9ydFNp
Z25hbDo6fkFib3J0U2lnbmFsKCkgPSBkZWZhdWx0OworCiAvLyBodHRwczovL2RvbS5zcGVjLndo
YXR3Zy5vcmcvI2Fib3J0c2lnbmFsLXNpZ25hbC1hYm9ydAogdm9pZCBBYm9ydFNpZ25hbDo6c2ln
bmFsQWJvcnQoSlNDOjpKU1ZhbHVlIHJlYXNvbikKIHsKQEAgLTEwMiw2ICsxMjUsMTEgQEAgdm9p
ZCBBYm9ydFNpZ25hbDo6c2lnbmFsRm9sbG93KEFib3J0U2lnbmFsJiBzaWduYWwpCiAgICAgfSk7
CiB9CiAKK3ZvaWQgQWJvcnRTaWduYWw6OmV2ZW50TGlzdGVuZXJzRGlkQ2hhbmdlKCkKK3sKKyAg
ICBtX2hhc0Fib3J0RXZlbnRMaXN0ZW5lciA9IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMo
KS5hYm9ydEV2ZW50KTsKK30KKwogYm9vbCBBYm9ydFNpZ25hbDo6d2hlblNpZ25hbEFib3J0ZWQo
QWJvcnRTaWduYWwmIHNpZ25hbCwgUmVmPEFib3J0QWxnb3JpdGhtPiYmIGFsZ29yaXRobSkKIHsK
ICAgICBpZiAoc2lnbmFsLmFib3J0ZWQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0Fib3J0U2lnbmFsLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWJvcnRTaWduYWwuaAppbmRl
eCA0ZjIyMWFjOWI3MGVlOWQzY2NjOGUwOGQ2MTc5MTNhYTc2ZGUzN2NhLi44MmMwYzY4OTI1M2Y4
MWJiZjgzMmI3NjY2YWQzODUxNTQ1ZTNjM2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQWJvcnRTaWduYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWJvcnRTaWduYWwuaApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
Myw4ICs0MywxMCBAQCBjbGFzcyBBYm9ydFNpZ25hbCBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVk
PEFib3J0U2lnbmFsPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aAogICAgIFdURl9NQUtFX0lTT19B
TExPQ0FURURfRVhQT1JUKEFib3J0U2lnbmFsLCBXRUJDT1JFX0VYUE9SVCk7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxBYm9ydFNpZ25hbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB+QWJvcnRTaWduYWwoKTsKIAogICAgIHN0YXRpYyBSZWY8
QWJvcnRTaWduYWw+IGFib3J0KEpTRE9NR2xvYmFsT2JqZWN0JiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIEpTQzo6SlNWYWx1ZSByZWFzb24pOworICAgIHN0YXRpYyBSZWY8QWJvcnRTaWduYWw+
IHRpbWVvdXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHVpbnQ2NF90IG1pbGxpc2Vjb25kcyk7
CiAKICAgICBzdGF0aWMgYm9vbCB3aGVuU2lnbmFsQWJvcnRlZChBYm9ydFNpZ25hbCYsIFJlZjxB
Ym9ydEFsZ29yaXRobT4mJik7CiAKQEAgLTU0LDYgKzU2LDkgQEAgcHVibGljOgogICAgIGJvb2wg
YWJvcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWJvcnRlZDsgfQogICAgIGNvbnN0IEpTVmFsdWVJ
bldyYXBwZWRPYmplY3QmIHJlYXNvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVhc29uOyB9CiAKKyAg
ICBib29sIGhhc0FjdGl2ZVRpbWVvdXRUaW1lcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZl
VGltZW91dFRpbWVyOyB9CisgICAgYm9vbCBoYXNBYm9ydEV2ZW50TGlzdGVuZXIoKSBjb25zdCB7
IHJldHVybiBtX2hhc0Fib3J0RXZlbnRMaXN0ZW5lcjsgfQorCiAgICAgdXNpbmcgUmVmQ291bnRl
ZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCkBAIC02OCwxNiArNzMsMjEg
QEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIEFib3J0ZWQgOiBib29sIHsgTm8sIFllcyB9Owog
ICAgIGV4cGxpY2l0IEFib3J0U2lnbmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBBYm9ydGVk
ID0gQWJvcnRlZDo6Tm8sIEpTQzo6SlNWYWx1ZSByZWFzb24gPSBKU0M6OmpzVW5kZWZpbmVkKCkp
OwogCisgICAgdm9pZCBzZXRIYXNBY3RpdmVUaW1lb3V0VGltZXIoYm9vbCBoYXNBY3RpdmVUaW1l
b3V0VGltZXIpIHsgbV9oYXNBY3RpdmVUaW1lb3V0VGltZXIgPSBoYXNBY3RpdmVUaW1lb3V0VGlt
ZXI7IH0KKwogICAgIC8vIEV2ZW50VGFyZ2V0LgogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2
ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQWJvcnRTaWduYWxFdmVu
dFRhcmdldEludGVyZmFjZVR5cGU7IH0KICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogICAgIHZvaWQgcmVmRXZl
bnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkg
ZmluYWwgeyBkZXJlZigpOyB9CisgICAgdm9pZCBldmVudExpc3RlbmVyc0RpZENoYW5nZSgpIGZp
bmFsOwogICAgIAogICAgIGJvb2wgbV9hYm9ydGVkIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8QWxn
b3JpdGhtPiBtX2FsZ29yaXRobXM7CiAgICAgV2Vha1B0cjxBYm9ydFNpZ25hbD4gbV9mb2xsb3dp
bmdTaWduYWw7CiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCBtX3JlYXNvbjsKKyAgICBib29s
IG1faGFzQWN0aXZlVGltZW91dFRpbWVyIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzQWJvcnRF
dmVudExpc3RlbmVyIHsgZmFsc2UgfTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9BYm9ydFNpZ25hbC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWJvcnRTaWduYWwu
aWRsCmluZGV4IDU0NWVlMjUxNjlmYzEyNzhlMmUzYTQ5YjVjMjdlYzMzN2Y5ZDAyNzMuLjU1MmZh
MGJhOWIyMzI0Y2IwZWMxZGNkZjRiNzQ3Yjk1MTAyNmM2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BYm9ydFNpZ25hbC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Fib3J0
U2lnbmFsLmlkbApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMyw2ICszMyw4IEBACiAgICAgW1ByaXZhdGVJZGVudGlmaWVyXSBzdGF0aWMg
Ym9vbGVhbiB3aGVuU2lnbmFsQWJvcnRlZChBYm9ydFNpZ25hbCBvYmplY3QsIEFib3J0QWxnb3Jp
dGhtIGFsZ29yaXRobSk7CiAKICAgICBbTmV3T2JqZWN0LCBDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0Jkdsb2JhbE9iamVjdF0gc3RhdGljIEFib3J0U2lnbmFsIGFib3J0KG9wdGlvbmFs
IGFueSByZWFzb24pOworICAgIFtOZXdPYmplY3QsIENhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRdIHN0YXRpYyBBYm9ydFNpZ25hbCB0aW1lb3V0KFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVk
IGxvbmcgbG9uZyBtaWxsaXNlY29uZHMpOworCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gYWJvcnRlZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYW55IHJlYXNvbjsKICAgICBbQ2Fs
bFdpdGg9R2xvYmFsT2JqZWN0XSB1bmRlZmluZWQgdGhyb3dJZkFib3J0ZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01UaW1lci5jcHAKaW5kZXggNjQ1YjY5OWQxMTJmMTE0NWU0MTMwOWJkZTUyMTVjMWIwYjZl
ZTc3Ni4uMjNkNTEyNDAzYWQzZTczMjE1YzFlYjE4NzcwMjk0ZmQyN2QxMDc5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01UaW1lci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBwcml2YXRlOgogCiBib29sIE5l
c3RlZFRpbWVyc01hcDo6aXNUcmFja2luZ05lc3RlZFRpbWVycyA9IGZhbHNlOwogCi1ET01UaW1l
cjo6RE9NVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgc3RkOjp1bmlxdWVf
cHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uLCBTZWNvbmRzIGludGVydmFsLCBib29sIHNpbmds
ZVNob3QpCitET01UaW1lcjo6RE9NVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgRnVuY3Rpb248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+JiYgYWN0aW9uLCBTZWNv
bmRzIGludGVydmFsLCBib29sIHNpbmdsZVNob3QpCiAgICAgOiBTdXNwZW5kYWJsZVRpbWVyQmFz
ZSgmY29udGV4dCkKICAgICAsIG1fbmVzdGluZ0xldmVsKGNvbnRleHQudGltZXJOZXN0aW5nTGV2
ZWwoKSkKICAgICAsIG1fYWN0aW9uKFdURk1vdmUoYWN0aW9uKSkKQEAgLTE3Myw2ICsxNzMsMTQg
QEAgRE9NVGltZXI6OkRPTVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIHN0
ZDo6dW5pcXVlX3B0cjxTY2hlZHVsZWRBY3QKIERPTVRpbWVyOjp+RE9NVGltZXIoKSA9IGRlZmF1
bHQ7CiAKIGludCBET01UaW1lcjo6aW5zdGFsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBzdGQ6OnVuaXF1ZV9wdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24sIFNlY29uZHMgdGlt
ZW91dCwgYm9vbCBzaW5nbGVTaG90KQoreworICAgIGF1dG8gYWN0aW9uRnVuY3Rpb24gPSBbYWN0
aW9uID0gV1RGTW92ZShhY3Rpb24pXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBt
dXRhYmxlIHsKKyAgICAgICAgYWN0aW9uLT5leGVjdXRlKGNvbnRleHQpOworICAgIH07CisgICAg
cmV0dXJuIERPTVRpbWVyOjppbnN0YWxsKGNvbnRleHQsIFdURk1vdmUoYWN0aW9uRnVuY3Rpb24p
LCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKK30KKworaW50IERPTVRpbWVyOjppbnN0YWxsKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYpPiYmIGFjdGlvbiwgU2Vjb25kcyB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpCiB7
CiAgICAgUmVmPERPTVRpbWVyPiB0aW1lciA9IGFkb3B0UmVmKCpuZXcgRE9NVGltZXIoY29udGV4
dCwgV1RGTW92ZShhY3Rpb24pLCB0aW1lb3V0LCBzaW5nbGVTaG90KSk7CiAgICAgdGltZXItPnN1
c3BlbmRJZk5lZWRlZCgpOwpAQCAtMzE2LDcgKzMyNCw3IEBAIHZvaWQgRE9NVGltZXI6OmZpcmVk
KCkKICAgICAgICAgICAgIHVwZGF0ZVRpbWVySW50ZXJ2YWxJZk5lY2Vzc2FyeSgpOwogICAgICAg
ICB9CiAKLSAgICAgICAgbV9hY3Rpb24tPmV4ZWN1dGUoY29udGV4dCk7CisgICAgICAgIG1fYWN0
aW9uKGNvbnRleHQpOwogCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmly
ZVRpbWVyKGNvbnRleHQsIG1fdGltZW91dElkLCBvbmVTaG90KTsKIApAQCAtMzM0LDcgKzM0Miw3
IEBAIHZvaWQgRE9NVGltZXI6OmZpcmVkKCkKICNpZiBFTkFCTEUoQ09OVEVOVF9DSEFOR0VfT0JT
RVJWRVIpCiAgICAgQ29udGVudENoYW5nZU9ic2VydmVyOjpET01UaW1lclNjb3BlIG9ic2Vydmlu
Z1Njb3BlKGR5bmFtaWNEb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksICp0aGlzKTsKICNlbmRp
ZgotICAgIG1fYWN0aW9uLT5leGVjdXRlKGNvbnRleHQpOworICAgIG1fYWN0aW9uKGNvbnRleHQp
OwogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIoY29udGV4dCwg
bV90aW1lb3V0SWQsIG9uZVNob3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVRpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmgKaW5kZXggMTFjZmE3
ZTUwZmVhOTc5ZWRjMjMzMGJhNWY1ZTdhNzU3OTZkOTdlMS4uNzlmZDljZDdmNjJkOWJhMTJmYzhm
NDdkM2VmNDlkYjAxYTRiMWNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01U
aW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuaApAQCAtNTUsNiArNTUs
NyBAQCBwdWJsaWM6CiAgICAgLy8gQ3JlYXRlcyBhIG5ldyB0aW1lciBvd25lZCBieSBzcGVjaWZp
ZWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc3RhcnRzIGl0CiAgICAgLy8gYW5kIHJldHVybnMg
aXRzIElkLgogICAgIHN0YXRpYyBpbnQgaW5zdGFsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
c3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4sIFNlY29uZHMgdGltZW91dCwgYm9vbCBz
aW5nbGVTaG90KTsKKyAgICBzdGF0aWMgaW50IGluc3RhbGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIEZ1bmN0aW9uPHZvaWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpPiYmLCBTZWNvbmRzIHRp
bWVvdXQsIGJvb2wgc2luZ2xlU2hvdCk7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlQnlJZChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgaW50IHRpbWVvdXRJZCk7CiAKICAgICAvLyBOb3RpZnkgdGhh
dCB0aGUgaW50ZXJ2YWwgbWF5IG5lZWQgdXBkYXRpbmcgKGUuZy4gYmVjYXVzZSB0aGUgbWluaW11
bSBpbnRlcnZhbApAQCAtNjQsNyArNjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2Ny
aXB0RGlkSW50ZXJhY3RXaXRoUGx1Z2luKEhUTUxQbHVnSW5FbGVtZW50Jik7CiAKIHByaXZhdGU6
Ci0gICAgRE9NVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIHN0ZDo6dW5pcXVlX3B0cjxT
Y2hlZHVsZWRBY3Rpb24+LCBTZWNvbmRzIGludGVydmFsLCBib29sIHNpbmdsZVNob3QpOworICAg
IERPTVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBGdW5jdGlvbjx2b2lkKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKT4mJiwgU2Vjb25kcyBpbnRlcnZhbCwgYm9vbCBzaW5nbGVTaG90KTsK
ICAgICBmcmllbmQgY2xhc3MgSW50ZXJuYWxzOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU2Vjb25k
cyBpbnRlcnZhbENsYW1wZWRUb01pbmltdW0oKSBjb25zdDsKQEAgLTg4LDcgKzg5LDcgQEAgcHJp
dmF0ZToKIAogICAgIGludCBtX3RpbWVvdXRJZDsKICAgICBpbnQgbV9uZXN0aW5nTGV2ZWw7Ci0g
ICAgc3RkOjp1bmlxdWVfcHRyPFNjaGVkdWxlZEFjdGlvbj4gbV9hY3Rpb247CisgICAgRnVuY3Rp
b248dm9pZChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik+IG1fYWN0aW9uOwogICAgIFNlY29uZHMg
bV9vcmlnaW5hbEludGVydmFsOwogICAgIFRpbWVyVGhyb3R0bGVTdGF0ZSBtX3Rocm90dGxlU3Rh
dGU7CiAgICAgU2Vjb25kcyBtX2N1cnJlbnRUaW1lckludGVydmFsOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKaW5kZXggYzkzNTZhZTJmM2MwNjgxMGM2YjUzZTk1MjU2Y2Q3ZjFmMzNmYzE1
Zi4uMjc1MjUxN2E1MGI3NzcyNDNlNzk0OGI0MWNmYWNhM2ViYjMzOGMzMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjItMDItMDMgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgQWJvcnRTaWduYWwu
dGltZW91dCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzYwMzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbXBvcnQgQWJvcnRTaWduYWwudGltZW91dCgpIHRlc3RzIGZyb20gdXBzdHJlYW0gV1BULgor
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9hYm9ydC9BYm9ydFNpZ25hbC5hbnkt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9kb20vYWJvcnQvQWJv
cnRTaWduYWwuYW55LmpzOgorICAgICAgICAoYXN5bmNfdGVzdC50LnNpZ25hbC5vbmFib3J0LnQu
c3RlcF9mdW5jX2RvbmUpOgorICAgICAgICAoYXN5bmNfdGVzdC50LnN0cmluZ19hcHBlYXJlZF9o
ZXJlLnNpZ25hbC5vbmFib3J0LnQuc3RlcF9mdW5jKToKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvZG9tL2Fib3J0L0Fib3J0U2lnbmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9kb20vYWJvcnQvYWJvcnQtc2lnbmFsLXRpbWVvdXQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2Fi
b3J0L2Fib3J0LXNpZ25hbC10aW1lb3V0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9kb20vYWJvcnQvdzNjLWltcG9ydC5sb2c6CisKIDIwMjItMDItMDMgIEFudG9p
bmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgSW5jb3JyZWN0IEtleWZy
YW1lc0VmZmVjdCBnZW5lcmF0ZWQgZm9yIGJhY2tncm91bmQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2Fib3J0L0Fib3J0U2lnbmFs
LmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2RvbS9hYm9ydC9BYm9ydFNpZ25hbC5hbnktZXhwZWN0ZWQudHh0CmluZGV4IDRhMjFi
Njk1ZTk1YjJmZGIwMDI5YmRhMTI4NzcxYjI1OTMzMzRiZjcuLjMzYWNlZmUyYjUxNTQyMDQ2NGZi
MWQ2NWNiYzcxZDVmMDIwYzgwYzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2Fib3J0L0Fib3J0U2lnbmFsLmFueS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20v
YWJvcnQvQWJvcnRTaWduYWwuYW55LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDcgQEAKIAogUEFT
UyB0aGUgQWJvcnRTaWduYWwuYWJvcnQoKSBzdGF0aWMgcmV0dXJucyBhbiBhbHJlYWR5IGFib3J0
ZWQgc2lnbmFsCiBQQVNTIHNpZ25hbCByZXR1cm5lZCBieSBBYm9ydFNpZ25hbC5hYm9ydCgpIHNo
b3VsZCBub3QgZmlyZSBhYm9ydCBldmVudAorUEFTUyBBYm9ydFNpZ25hbC50aW1lb3V0KCkgcmV0
dXJucyBhIG5vbi1hYm9ydGVkIHNpZ25hbAorUEFTUyBTaWduYWwgcmV0dXJuZWQgYnkgQWJvcnRT
aWduYWwudGltZW91dCgpIHRpbWVzIG91dAorUEFTUyBBYm9ydFNpZ25hbCB0aW1lb3V0cyBmaXJl
IGluIG9yZGVyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvZG9tL2Fib3J0L0Fib3J0U2lnbmFsLmFueS5qcyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2Fib3J0L0Fib3J0U2lnbmFsLmFueS5q
cwppbmRleCAxZDdkNzY3OGViMWE2ZTI3YWRhYmJlMGUzMWFmZTU3NGEzMWJiMGVhLi4zYmJkYzEx
YTkyZjkwZDRlMmQ0ZGM4YTU3Y2E1Nzc0YjQzZGFjNTU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9hYm9ydC9BYm9ydFNpZ25hbC5h
bnkuanMKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9k
b20vYWJvcnQvQWJvcnRTaWduYWwuYW55LmpzCkBAIC0xMCwzICsxMCwzMSBAQCBhc3luY190ZXN0
KHQgPT4gewogICBzLm9uYWJvcnQgPSB0LnVucmVhY2hlZF9mdW5jKCJhYm9ydCBldmVudCBoYW5k
bGVyIGNhbGxlZCIpOwogICB0LnN0ZXBfdGltZW91dCgoKSA9PiB7IHQuZG9uZSgpOyB9LCAyMDAw
KTsKIH0sICJzaWduYWwgcmV0dXJuZWQgYnkgQWJvcnRTaWduYWwuYWJvcnQoKSBzaG91bGQgbm90
IGZpcmUgYWJvcnQgZXZlbnQiKTsKKwordGVzdCh0ID0+IHsKKyAgY29uc3Qgc2lnbmFsID0gQWJv
cnRTaWduYWwudGltZW91dCgwKTsKKyAgYXNzZXJ0X3RydWUoc2lnbmFsIGluc3RhbmNlb2YgQWJv
cnRTaWduYWwsICJyZXR1cm5lZCBvYmplY3QgaXMgYW4gQWJvcnRTaWduYWwiKTsKKyAgYXNzZXJ0
X2ZhbHNlKHNpZ25hbC5hYm9ydGVkLCAicmV0dXJuZWQgc2lnbmFsIGlzIG5vdCBhbHJlYWR5IGFi
b3J0ZWQiKTsKK30sICJBYm9ydFNpZ25hbC50aW1lb3V0KCkgcmV0dXJucyBhIG5vbi1hYm9ydGVk
IHNpZ25hbCIpOworCithc3luY190ZXN0KHQgPT4geworICBjb25zdCBzaWduYWwgPSBBYm9ydFNp
Z25hbC50aW1lb3V0KDUpOworICBzaWduYWwub25hYm9ydCA9IHQuc3RlcF9mdW5jX2RvbmUoKCkg
PT4geworICAgIGFzc2VydF90cnVlKHNpZ25hbC5hYm9ydGVkLCAic2lnbmFsIGlzIGFib3J0ZWQi
KTsKKyAgICBhc3NlcnRfdHJ1ZShzaWduYWwucmVhc29uIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9u
LCAic2lnbmFsLnJlYXNvbiBpcyBhIERPTUV4Y2VwdGlvbiIpOworICAgIGFzc2VydF9lcXVhbHMo
c2lnbmFsLnJlYXNvbi5uYW1lLCAiVGltZW91dEVycm9yIiwgInNpZ25hbC5yZWFzb24gaXMgYSBU
aW1lb3V0RXJyb3IiKTsKKyAgfSk7Cit9LCAiU2lnbmFsIHJldHVybmVkIGJ5IEFib3J0U2lnbmFs
LnRpbWVvdXQoKSB0aW1lcyBvdXQiKTsKKworYXN5bmNfdGVzdCh0ID0+IHsKKyAgbGV0IHJlc3Vs
dCA9ICIiOworICBmb3IgKGNvbnN0IHZhbHVlIG9mIFsiMSIsICIyIiwgIjMiXSkgeworICAgIGNv
bnN0IHNpZ25hbCA9IEFib3J0U2lnbmFsLnRpbWVvdXQoNSk7CisgICAgc2lnbmFsLm9uYWJvcnQg
PSB0LnN0ZXBfZnVuYygoKSA9PiB7IHJlc3VsdCArPSB2YWx1ZTsgfSk7CisgIH0KKworICBjb25z
dCBzaWduYWwgPSBBYm9ydFNpZ25hbC50aW1lb3V0KDUpOworICBzaWduYWwub25hYm9ydCA9IHQu
c3RlcF9mdW5jX2RvbmUoKCkgPT4geworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LCAiMTIzIiwg
IlRpbWVvdXQgb3JkZXIgc2hvdWxkIGJlIDEyMyIpOworICB9KTsKK30sICJBYm9ydFNpZ25hbCB0
aW1lb3V0cyBmaXJlIGluIG9yZGVyIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9hYm9ydC9BYm9ydFNpZ25hbC5hbnkud29ya2Vy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZG9tL2Fib3J0L0Fib3J0U2lnbmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CmluZGV4IDRh
MjFiNjk1ZTk1YjJmZGIwMDI5YmRhMTI4NzcxYjI1OTMzMzRiZjcuLjMzYWNlZmUyYjUxNTQyMDQ2
NGZiMWQ2NWNiYzcxZDVmMDIwYzgwYzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2Fib3J0L0Fib3J0U2lnbmFsLmFueS53b3JrZXIt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZG9tL2Fib3J0L0Fib3J0U2lnbmFsLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0x
LDQgKzEsNyBAQAogCiBQQVNTIHRoZSBBYm9ydFNpZ25hbC5hYm9ydCgpIHN0YXRpYyByZXR1cm5z
IGFuIGFscmVhZHkgYWJvcnRlZCBzaWduYWwKIFBBU1Mgc2lnbmFsIHJldHVybmVkIGJ5IEFib3J0
U2lnbmFsLmFib3J0KCkgc2hvdWxkIG5vdCBmaXJlIGFib3J0IGV2ZW50CitQQVNTIEFib3J0U2ln
bmFsLnRpbWVvdXQoKSByZXR1cm5zIGEgbm9uLWFib3J0ZWQgc2lnbmFsCitQQVNTIFNpZ25hbCBy
ZXR1cm5lZCBieSBBYm9ydFNpZ25hbC50aW1lb3V0KCkgdGltZXMgb3V0CitQQVNTIEFib3J0U2ln
bmFsIHRpbWVvdXRzIGZpcmUgaW4gb3JkZXIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vYWJvcnQvYWJvcnQtc2lnbmFsLXRpbWVv
dXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9kb20vYWJvcnQvYWJvcnQtc2lnbmFsLXRpbWVvdXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJjOWI0MzgwYjhlOTFjOTA0YTY1ZjdhNDNkMDIzNTU2OGVkZDA5MDYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9h
Ym9ydC9hYm9ydC1zaWduYWwtdGltZW91dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisK
K1BBU1MgU2lnbmFsIHJldHVybmVkIGJ5IEFib3J0U2lnbmFsLnRpbWVvdXQoKSBpcyBub3QgYWJv
cnRlZCBhZnRlciBmcmFtZSBkZXRhY2gKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vYWJvcnQvYWJvcnQtc2lnbmFsLXRpbWVvdXQu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2Fi
b3J0L2Fib3J0LXNpZ25hbC10aW1lb3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE5YzEzZDYxNDM0YjQz
YzVjNDdlNDI2YzNmNmRmOTRmYmI2NzM3MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2Fib3J0L2Fib3J0LXNpZ25hbC10
aW1lb3V0Lmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPCFET0NUWVBFIEhUTUw+Cis8bWV0YSBjaGFy
c2V0PXV0Zi04PgorPHRpdGxlPkFib3J0U2lnbmFsLnRpbWVvdXQgZnJhbWUgZGV0YWNoPC90aXRs
ZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxp
ZnJhbWUgaWQ9ImlmcmFtZSI+PC9pZnJhbWU+Cis8c2NyaXB0PgorICBhc3luY190ZXN0KHQgPT4g
eworICAgIGNvbnN0IHNpZ25hbCA9IGlmcmFtZS5jb250ZW50V2luZG93LkFib3J0U2lnbmFsLnRp
bWVvdXQoNSk7CisgICAgc2lnbmFsLm9uYWJvcnQgPSB0LnVucmVhY2hlZF9mdW5jKCJhYm9ydCBt
dXN0IG5vdCBmaXJlIik7CisKKyAgICBpZnJhbWUucmVtb3ZlKCk7CisKKyAgICB0LnN0ZXBfdGlt
ZW91dCgoKSA9PiB7CisgICAgICBhc3NlcnRfZmFsc2Uoc2lnbmFsLmFib3J0ZWQpOworICAgICAg
dC5kb25lKCk7CisgICAgfSwgMTApOworICB9LCAiU2lnbmFsIHJldHVybmVkIGJ5IEFib3J0U2ln
bmFsLnRpbWVvdXQoKSBpcyBub3QgYWJvcnRlZCBhZnRlciBmcmFtZSBkZXRhY2giKTsKKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9kb20vYWJvcnQvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9hYm9ydC93M2MtaW1wb3J0LmxvZwppbmRleCA4NTg2MmJj
MGJjOTgxNjRmYmMzM2VmNDU4NDE3ZDIyNDM5YjFiM2FlLi5kOGIzOWU4NzBiZTY4YWZiNzRlMjQ0
ZmUwNmViZGVlODk4NjgyNmZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9hYm9ydC93M2MtaW1wb3J0LmxvZworKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2RvbS9hYm9ydC93M2MtaW1wb3J0
LmxvZwpAQCAtMTUsNSArMTUsNiBAQCBOb25lCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIExpc3Qgb2YgZmls
ZXM6CiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9kb20vYWJv
cnQvQWJvcnRTaWduYWwuYW55LmpzCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9kb20vYWJvcnQvYWJvcnQtc2lnbmFsLXRpbWVvdXQuaHRtbAogL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2Fib3J0L2V2ZW50LmFueS5q
cwogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZG9tL2Fib3J0
L3JlYXNvbi1jb25zdHJ1Y3Rvci5odG1sCg==
</data>
<flag name="review"
          id="477283"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>