<?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>222408</bug_id>
          
          <creation_ts>2021-02-25 00:15:05 -0800</creation_ts>
          <short_desc>API test for AppHighlights</short_desc>
          <delta_ts>2021-02-27 00:05:16 -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>New Bugs</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="Megan Gardner">megan_gardner</reporter>
          <assigned_to name="Megan Gardner">megan_gardner</assigned_to>
          <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1733242</commentid>
    <comment_count>0</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-02-25 00:15:05 -0800</bug_when>
    <thetext>API test for AppHighlights</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733249</commentid>
    <comment_count>1</comment_count>
      <attachid>421509</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-02-25 00:32:23 -0800</bug_when>
    <thetext>Created attachment 421509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733270</commentid>
    <comment_count>2</comment_count>
      <attachid>421509</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-02-25 02:39:26 -0800</bug_when>
    <thetext>Comment on attachment 421509
Patch

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

&gt; Source/WebCore/Modules/highlight/AppHighlightStorage.cpp:243
&gt; +    if (range)

This should come in the second patch, with a second test that validates it (the current test doesn&apos;t). This patch should just add the testing infrastructure and the basic test.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:40
&gt; +static void waitForConditionWithLogging(BOOL(^condition)(), NSTimeInterval loggingTimeout, NSString *message, ...)

Now that there are two clients, I wonder if we should share it. Not sure where to put it though, maybe Wenson has an idea.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:92
&gt; +        waitForConditionWithLogging([&amp;] () -&gt; BOOL {
&gt; +            return [webView stringByEvaluatingJavaScript:@&quot;internals.numberOfAppHighlights&quot;].intValue == 1;
&gt; +        }, 2, @&quot;Expected Highlights to be populated.&quot;);

This is totally not doing what it&apos;s supposed to. The point was to wait /after you call _restoreAppHighlights/ and ensure that it worked. But you&apos;re waiting beforehand, and it&apos;ll still work because you&apos;re restoring into the same webview you created the highlight in originally (so it has 1 even before restoring)

You should either restore into a second WebView (that&apos;s what I would do, I think), or navigate before restoring (and make sure that the count goes to 0 when you navigate!!).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733352</commentid>
    <comment_count>3</comment_count>
      <attachid>421509</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-25 09:18:45 -0800</bug_when>
    <thetext>Comment on attachment 421509
Patch

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

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:40
&gt;&gt; +static void waitForConditionWithLogging(BOOL(^condition)(), NSTimeInterval loggingTimeout, NSString *message, ...)
&gt; 
&gt; Now that there are two clients, I wonder if we should share it. Not sure where to put it though, maybe Wenson has an idea.

(I suggested `PlatformUtilities.h`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733353</commentid>
    <comment_count>4</comment_count>
      <attachid>421509</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-25 09:28:49 -0800</bug_when>
    <thetext>Comment on attachment 421509
Patch

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

&gt; Source/WebCore/testing/Internals.cpp:5923
&gt; +    auto appHighlightRegister = document-&gt;appHighlightRegisterIfExists();

This seems like it should probably return 0 instead of null dereffing if the `appHighlightRegister` does not exist yet.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:59
&gt; +@interface AppHighlightDelegateImpl : NSObject &lt;_WKAppHighlightDelegate&gt;

Nit - maybe just `AppHighlightDelegate`?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:60
&gt; +@property (nonatomic, copy) void (^storeAppHighlightCallback)(WKWebView *, _WKAppHighlight *, BOOL);

Since this is marked `copy`, this should probably be overridden to set and get from a `BlockPtr&lt;void(WKWebView *, _WKAppHighlight *, BOOL)&gt;`.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:63
&gt; +
&gt; +

Nit - couple of extra newlines here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733439</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-02-25 11:53:18 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #4)
&gt; Comment on attachment 421509 [details]
&gt; Patch
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:59
&gt; &gt; +@interface AppHighlightDelegateImpl : NSObject &lt;_WKAppHighlightDelegate&gt;
&gt; 
&gt; Nit - maybe just `AppHighlightDelegate`?

Agree (this was my name, but it was bad).

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:60
&gt; &gt; +@property (nonatomic, copy) void (^storeAppHighlightCallback)(WKWebView *, _WKAppHighlight *, BOOL);
&gt; 
&gt; Since this is marked `copy`, this should probably be overridden to set and
&gt; get from a `BlockPtr&lt;void(WKWebView *, _WKAppHighlight *, BOOL)&gt;`.

hmm, this is following TestNavigationDelegate. Maybe we have this mistake in many places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1733450</commentid>
    <comment_count>6</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-02-25 12:15:36 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #5)
&gt; (In reply to Wenson Hsieh from comment #4)
&gt; &gt; Comment on attachment 421509 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:59
&gt; &gt; &gt; +@interface AppHighlightDelegateImpl : NSObject &lt;_WKAppHighlightDelegate&gt;
&gt; &gt; 
&gt; &gt; Nit - maybe just `AppHighlightDelegate`?
&gt; 
&gt; Agree (this was my name, but it was bad).
&gt; 
&gt; &gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:60
&gt; &gt; &gt; +@property (nonatomic, copy) void (^storeAppHighlightCallback)(WKWebView *, _WKAppHighlight *, BOOL);
&gt; &gt; 
&gt; &gt; Since this is marked `copy`, this should probably be overridden to set and
&gt; &gt; get from a `BlockPtr&lt;void(WKWebView *, _WKAppHighlight *, BOOL)&gt;`.
&gt; 
&gt; hmm, this is following TestNavigationDelegate. Maybe we have this mistake in
&gt; many places.

Ah, never mind — since the property is synthesized, I think this should be okay (the compiler adds the calls to copy automatically).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734144</commentid>
    <comment_count>7</comment_count>
      <attachid>421736</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-02-26 22:47:28 -0800</bug_when>
    <thetext>Created attachment 421736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734159</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-27 00:04:36 -0800</bug_when>
    <thetext>Committed r273620: &lt;https://commits.webkit.org/r273620&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421736.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1734160</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-27 00:05:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/74822597&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421509</attachid>
            <date>2021-02-25 00:32:23 -0800</date>
            <delta_ts>2021-02-26 22:47:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222408-20210225003222.patch</filename>
            <type>text/plain</type>
            <size>13463</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2YxNDkwNTQxODc1ODNm
YzFkYmIwN2YxNWQ1YmUyNzg3NDUwM2NmMi4uZDU0Mzk0ZTEyYjFiZTUzZDA4NmM5MzQ5MWE2OWI4
NTZmMGJiNzZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTAyLTI1ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQVBJIHRlc3Qg
Zm9yIEFwcEhpZ2hsaWdodHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMjQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3Q6IFRlc3RXZWJLaXRBUEkuQXBwSGlnaGxpZ2h0cy5BcHBIaWdobGlnaHRD
cmVhdGVBbmRSZXN0b3JlCisKKyAgICAgICAgKiBNb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGln
aHRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJl
c3RvcmVBcHBIaWdobGlnaHQpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6bnVtYmVyT2ZBcHBIaWdobGlnaHRzKToKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlk
bDoKKwogMjAyMS0wMi0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW2lPU10gUmVkdWNlIHVzZSBvZiByZXRhaW4vcmVsZWFzZSBpbiBXQUtXaW5kb3cgYW5kIHJl
bW92ZSB1bm5lZWRlZCBtZXRob2RzIGZyb20gdGhhdCBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAppbmRl
eCBlM2YwOGRmYTA5OTczMzM5NmM5Yzg1MjZjZjJlN2E1OTcwNjdkYzg0Li5jMDAzY2NmYjBjMzZh
OGY4YWVkNzIyMmU0MmVlNDcyOTAzYTM4OTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcApAQCAtMjM5LDgg
KzIzOSw5IEBAIGJvb2wgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodChS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
YXV0byByYW5nZSA9IGZpbmRSYW5nZSgqYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLCAqc3Ryb25nRG9j
dW1lbnQpOwotCi0gICAgc3Ryb25nRG9jdW1lbnQtPmFwcEhpZ2hsaWdodFJlZ2lzdGVyKCkuYWRk
QXBwSGlnaGxpZ2h0KFN0YXRpY1JhbmdlOjpjcmVhdGUoKnJhbmdlKSk7CisgICAgCisgICAgaWYg
KHJhbmdlKQorICAgICAgICBzdHJvbmdEb2N1bWVudC0+YXBwSGlnaGxpZ2h0UmVnaXN0ZXIoKS5h
ZGRBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6OmNyZWF0ZSgqcmFuZ2UpKTsKIAogICAgIHJldHVy
biB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDYxZWE5YTE1
YmE5Y2QxOTMzZDgzZTU1MjdkOTk3ZTc0NjY1ZjJlMTAuLjAyNWMyZTc1YzAyZjQ4MWM3OGM4Njdj
NTg1ZDlkZDZkOWZmZDY1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAg
LTEwMSw2ICsxMDEsNyBAQAogI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIK
KyNpbmNsdWRlICJIaWdobGlnaHRSZWdpc3Rlci5oIgogI2luY2x1ZGUgIkhpc3RvcnlDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0
LmgiCkBAIC01OTEzLDYgKzU5MTQsMjAgQEAgYm9vbCBJbnRlcm5hbHM6Omhhc1NhbmRib3hJT0tp
dE9wZW5BY2Nlc3NUb0NsYXNzKGNvbnN0IFN0cmluZyYgcHJvY2VzcywgY29uc3QgU3QKIH0KICNl
bmRpZgogCisjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQordW5zaWduZWQgSW50ZXJuYWxzOjpu
dW1iZXJPZkFwcEhpZ2hsaWdodHMoKQoreworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRl
eHREb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiAwOworICAg
IGF1dG8gYXBwSGlnaGxpZ2h0UmVnaXN0ZXIgPSBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0UmVnaXN0
ZXJJZkV4aXN0cygpOworICAgIHVuc2lnbmVkIG51bUhpZ2hsaWdodHMgPSAwOworICAgIGZvciAo
YXV0byYgaGlnaGxpZ2h0IDogYXBwSGlnaGxpZ2h0UmVnaXN0ZXItPm1hcCgpKQorICAgICAgICBu
dW1IaWdobGlnaHRzICs9IGhpZ2hsaWdodC52YWx1ZS0+cmFuZ2VzRGF0YSgpLnNpemUoKTsKKyAg
ICByZXR1cm4gbnVtSGlnaGxpZ2h0czsKK30KKyNlbmRpZgorCiBib29sIEludGVybmFsczo6c3Vw
cG9ydHNQaWN0dXJlSW5QaWN0dXJlKCkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6c3VwcG9ydHNQ
aWN0dXJlSW5QaWN0dXJlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA3ZWJh
NjU3ODlmOGJmZDJmMjY2YjM3NDM5NjczNTZmNDIwNmJkOWQ4Li5iMzhlYzQ0MzU3ZjVjNDE3MmZk
YzUyNzExNjU2YjBlOWI0MTMyZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAg
LTEwNDcsNiArMTA0NywxMCBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBjcmVhdGVTbGVlcERp
c2FibGVyKGNvbnN0IFN0cmluZyYgcmVhc29uLCBib29sIGRpc3BsYXkpOwogICAgIGJvb2wgZGVz
dHJveVNsZWVwRGlzYWJsZXIodW5zaWduZWQgaWRlbnRpZmllcik7CisgICAgICAgIAorI2lmIEVO
QUJMRShBUFBfSElHSExJR0hUUykKKyAgICB1bnNpZ25lZCBudW1iZXJPZkFwcEhpZ2hsaWdodHMo
KTsKKyNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQlhSKQogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxX
ZWJYUlRlc3Q+PiB4clRlc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRl
eCBkM2M1MzIyYTgyODhiMjljOGU0OGY5MGY2MzI1MGVhOGYzZDc2ZTY5Li5jMmIxZGRkNjNlM2Zi
NTczMjZiZDBmY2U2ZWYzMTkxMDU3MTliZTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCkBAIC05NTcsNiArOTU3LDggQEAgZW51bSBUcmVlVHlwZSB7CiAKICAgICB1bnNpZ25l
ZCBsb25nIGNyZWF0ZVNsZWVwRGlzYWJsZXIoRE9NU3RyaW5nIHJlYXNvbiwgYm9vbGVhbiBkaXNw
bGF5KTsKICAgICBib29sZWFuIGRlc3Ryb3lTbGVlcERpc2FibGVyKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcik7CisgICAgCisgICAgW0NvbmRpdGlvbmFsPUFQUF9ISUdITElHSFRTXSB1bnNpZ25l
ZCBsb25nIG51bWJlck9mQXBwSGlnaGxpZ2h0cygpOwogCiAgICAgW0NvbmRpdGlvbmFsPVdFQlhS
LCBNYXlUaHJvd0V4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmlidXRlIFdlYlhSVGVzdCB4clRlc3Q7
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBm
MmU4YTcyMWNlNDNhM2VkOThhODMzMTBlY2EwZDlmNjJmM2VlZTZiLi5hZjE0YjM0ZDVhMjc2NDhi
OTlhMjJiZDQ2Yjg3NzhmZmExMzU3MjZhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDItMjUgIE1lZ2FuIEdh
cmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KKworICAgICAgICBBUEkgdGVzdCBmb3Ig
QXBwSGlnaGxpZ2h0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjIyNDA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXBwSGln
aGxpZ2h0cy5tbTogQWRkZWQuCisgICAgICAgICh3YWl0Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmcp
OgorICAgICAgICAoLVtBcHBIaWdobGlnaHREZWxlZ2F0ZUltcGwgX3dlYlZpZXc6c3RvcmVBcHBI
aWdobGlnaHQ6aW5OZXdHcm91cDpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
CiAyMDIxLTAyLTI0ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgog
CiAgICAgICAgIEFwcC1ib3VuZCByZXF1ZXN0IHBhcmFtZXRlciBzaG91bGQgYmUgcGFzc2VkIHRv
IG1haW4gcmVzb3VyY2UgcmVxdWVzdHMgbm90IHRoZSBtYWluIGZyYW1lCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDc5Y2FiMjNkOTg0YTNhMzA4YzkwNzA0Nzg0NjczY2I0YzY2ODY2NWMuLmIy
MTc5ZjE2NGUwYTJiMjdjNzg3ZTcwOWMxY2JkZDI4YzgxNzFiYmEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yNDksNiArMjQ5LDcgQEAKIAkJNDQ4MTdBMkYxRjA0ODZCRjAwMDAzODEwIC8q
IFdLUmVxdWVzdEFjdGl2YXRlZEVsZW1lbnRJbmZvLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQ4MTdBMkUxRjA0ODZCRjAwMDAzODEwIC8qIFdLUmVx
dWVzdEFjdGl2YXRlZEVsZW1lbnRJbmZvLm1tICovOyB9OwogCQk0NDhEN0U0NzFFQTZDNTU1MDBF
Q0M3NTYgLyogRW52aXJvbm1lbnRVdGlsaXRpZXNUZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0OEQ3RTQ1MUVBNkM1NTUwMEVDQzc1NiAvKiBF
bnZpcm9ubWVudFV0aWxpdGllc1Rlc3QuY3BwICovOyB9OwogCQk0NEFDOEJDNjIxRDAyNDVBMDBD
QUZCMzQgLyogUmV0YWluUHRyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMDI5QjE2MTQ4NkFENjQwMDgxN0RBOSAvKiBSZXRhaW5QdHIuY3BwICov
OyB9OworCQk0NEMyRkJFMjI1RTc1OTJDMDBBQkM3MkYgLyogV0tBcHBIaWdobGlnaHRzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDMkZCRTEyNUU3
NTkyQzAwQUJDNzJGIC8qIFdLQXBwSGlnaGxpZ2h0cy5tbSAqLzsgfTsKIAkJNDRDRjMxRkQyNDk5
NDFFODAwOUNCNkNCIC8qIENvbnRleHRNZW51QWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Q0YzMUZCMjQ5OTNGNjYwMDlDQjZDQiAvKiBD
b250ZXh0TWVudUFjdGlvbi5jcHAgKi87IH07CiAJCTQ2MTJDMkI5MjEwQTZBQ0UwMEI3ODhBNiAv
KiBMb2FkRmlsZVRoZW5SZWxvYWQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjEyQzJCODIxMEE2QUJGMDBCNzg4QTYgLyogTG9hZEZpbGVUaGVuUmVs
b2FkLm1tICovOyB9OwogCQk0NjI4QzhFOTIzNjdBQkQxMDBCMDczRjAgLyogV0tTZWN1cml0eU9y
aWdpbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjI4QzhFODIzNjdBQkJDMDBCMDczRjAgLyogV0tTZWN1cml0eU9yaWdpbi5jcHAgKi87IH07CkBA
IC0yMDA5LDYgKzIwMTAsNyBAQAogCQk0NDgxN0EyRTFGMDQ4NkJGMDAwMDM4MTAgLyogV0tSZXF1
ZXN0QWN0aXZhdGVkRWxlbWVudEluZm8ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXS1JlcXVlc3RBY3RpdmF0ZWRFbGVtZW50SW5mby5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDQ4RDdFNDUxRUE2QzU1NTAwRUNDNzU2IC8qIEVudmlyb25tZW50
VXRpbGl0aWVzVGVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBF
bnZpcm9ubWVudFV0aWxpdGllc1Rlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NEE2MjJDMTE0QTBFMkI2MDA0ODUxNUIgLyogV1RGU3RyaW5nVXRpbGl0aWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlN0cmluZ1V0aWxpdGllcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0NEMyRkJFMTI1RTc1OTJDMDBBQkM3MkYgLyogV0tBcHBI
aWdobGlnaHRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tB
cHBIaWdobGlnaHRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NENGMzFGQjI0
OTkzRjY2MDA5Q0I2Q0IgLyogQ29udGV4dE1lbnVBY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGV4dE1lbnVBY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjEyQzJCODIxMEE2QUJGMDBCNzg4QTYgLyogTG9hZEZpbGVUaGVu
UmVsb2FkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTG9hZEZp
bGVUaGVuUmVsb2FkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjI4QzhFODIz
NjdBQkJDMDBCMDczRjAgLyogV0tTZWN1cml0eU9yaWdpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS1NlY3VyaXR5T3JpZ2luLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTM0OTMsNiArMzQ5NSw3IEBACiAJCQkJNTEyMEM4M0MxRTY3NTA3OTAw
MjVCMjUwIC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSAqLywKIAkJCQk1QzlFNTY4
NDFERjkxNDNEMDBDOUVFMzMgLyogV2Vic2l0ZVBvbGljaWVzLm1tICovLAogCQkJCTkzMUMyODFD
MjJCQzU1QTcwMDFEOThDNCAvKiBXZWJTUUxCYXNpY3MubW0gKi8sCisJCQkJNDRDMkZCRTEyNUU3
NTkyQzAwQUJDNzJGIC8qIFdLQXBwSGlnaGxpZ2h0cy5tbSAqLywKIAkJCQkyRTVDNzcwNjFGQTcw
MTM2MDA1OTMyQzMgLyogV0tBdHRhY2htZW50VGVzdHMubW0gKi8sCiAJCQkJMUY4MzU3MUExRDNG
RkIwRTAwRTM5NjdCIC8qIFdLQmFja0ZvcndhcmRMaXN0Lm1tICovLAogCQkJCTVDRTM1NEQ4MUU3
MEQ5QzMwMEJFRkUzQiAvKiBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSAqLywKQEAgLTU2NzAs
NiArNTY3Myw3IEBACiAJCQkJN0NDRTdGMUMxQTQxMUFFNjAwNDQ3QzRDIC8qIFdpbGxTZW5kU3Vi
bWl0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDgxQTQxMUE3RTAwNDQ3QzRD
IC8qIFdpbGxTZW5kU3VibWl0RXZlbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VEOTFB
NDExQTdFMDA0NDdDNEMgLyogV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEubW0gaW4gU291cmNl
cyAqLywKKwkJCQk0NEMyRkJFMjI1RTc1OTJDMDBBQkM3MkYgLyogV0tBcHBIaWdobGlnaHRzLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkU1Qzc3MDcxRkE3MDEzNjAwNTkzMkMzIC8qIFdLQXR0YWNo
bWVudFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUY4MzU3MUIxRDNGRkIyMzAwRTM5NjdC
IC8qIFdLQmFja0ZvcndhcmRMaXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMkUxQTQx
MUIxMDAwNDQ3QzRDIC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBUZXN0Lm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
QXBwSGlnaGxpZ2h0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tBcHBIaWdobGlnaHRzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjN2I4NjhlOWM0Zjk0YzBiOTgyYWZmMzUw
ZjgyYzZhNDM4ZWUwYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLQXBwSGlnaGxpZ2h0cy5tbQpAQCAtMCwwICsxLDEwNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgi
CisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisj
aW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9u
RXh0cmFzLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUu
aD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgorI2ltcG9y
dCA8V2ViS2l0L19XS0FwcEhpZ2hsaWdodC5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0FwcEhpZ2hs
aWdodERlbGVnYXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYv
VmVjdG9yLmg+CisKKyNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCisKK3N0YXRpYyB2b2lkIHdh
aXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhCT09MKF5jb25kaXRpb24pKCksIE5TVGltZUludGVy
dmFsIGxvZ2dpbmdUaW1lb3V0LCBOU1N0cmluZyAqbWVzc2FnZSwgLi4uKQoreworICAgIE5TRGF0
ZSAqc3RhcnRUaW1lID0gW05TRGF0ZSBkYXRlXTsKKyAgICBCT09MIGV4Y2VlZGVkTG9nZ2luZ1Rp
bWVvdXQgPSBOTzsKKyAgICB3aGlsZSAoW1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIHJ1bk1v
ZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGUgYmVmb3JlRGF0ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XV0p
IHsKKyAgICAgICAgaWYgKGNvbmRpdGlvbigpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgaWYgKGV4Y2VlZGVkTG9nZ2luZ1RpbWVvdXQgfHwgW1tOU0RhdGUgZGF0ZV0gdGltZUludGVy
dmFsU2luY2VEYXRlOnN0YXJ0VGltZV0gPCBsb2dnaW5nVGltZW91dCkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIHZhX2xpc3QgYXJnczsKKyAgICAgICAgdmFfc3RhcnQoYXJncywg
bWVzc2FnZSk7CisgICAgICAgIE5TTG9ndihtZXNzYWdlLCBhcmdzKTsKKyAgICAgICAgdmFfZW5k
KGFyZ3MpOworICAgICAgICBleGNlZWRlZExvZ2dpbmdUaW1lb3V0ID0gWUVTOworICAgIH0KK30K
KworQGludGVyZmFjZSBBcHBIaWdobGlnaHREZWxlZ2F0ZUltcGwgOiBOU09iamVjdCA8X1dLQXBw
SGlnaGxpZ2h0RGVsZWdhdGU+CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXnN0
b3JlQXBwSGlnaGxpZ2h0Q2FsbGJhY2spKFdLV2ViVmlldyAqLCBfV0tBcHBIaWdobGlnaHQgKiwg
Qk9PTCk7CitAZW5kCisKKworCitAaW1wbGVtZW50YXRpb24gQXBwSGlnaGxpZ2h0RGVsZWdhdGVJ
bXBsCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0b3JlQXBwSGlnaGxp
Z2h0OihfV0tBcHBIaWdobGlnaHQgKiloaWdobGlnaHQgaW5OZXdHcm91cDooQk9PTClpbk5ld0dy
b3VwCit7CisgICAgaWYgKF9zdG9yZUFwcEhpZ2hsaWdodENhbGxiYWNrKQorICAgICAgICBfc3Rv
cmVBcHBIaWdobGlnaHRDYWxsYmFjayh3ZWJWaWV3LCBoaWdobGlnaHQsIGluTmV3R3JvdXApOwor
fQorQGVuZAorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoQXBwSGlnaGxpZ2h0
cywgQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZSkKK3sKKyAgICBXS1dlYlZpZXdDb25maWd1
cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29u
ZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJ
bnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBhdXRvIGRlbGVnYXRl
ID0gYWRvcHROUyhbW0FwcEhpZ2hsaWdodERlbGVnYXRlSW1wbCBhbGxvY10gaW5pdF0pOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bl0pOworICAgIFt3ZWJWaWV3IF9zZXRBcHBIaWdobGlnaHREZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQo
KV07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiVGVzdCJdOwor
ICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5leGVj
Q29tbWFuZCgnU2VsZWN0QWxsJykiXTsKKyAgICBfX2Jsb2NrIEJPT0wgZmluaXNoZWQgPSBOTzsK
KyAgICBbZGVsZWdhdGUgc2V0U3RvcmVBcHBIaWdobGlnaHRDYWxsYmFjazpeKFdLV2ViVmlldyAq
ZGVsZWdhdGVXZWJWaWV3LCBfV0tBcHBIaWdobGlnaHQgKmhpZ2hsaWdodCwgQk9PTCBpbk5ld0dy
b3VwKSB7CisgICAgICAgIEVYUEVDVF9FUShkZWxlZ2F0ZVdlYlZpZXcsIHdlYlZpZXcuZ2V0KCkp
OworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoaGlnaGxpZ2h0KTsKKyAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGhpZ2hsaWdodC50ZXh0LCBAIlRlc3QiKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxM
KGhpZ2hsaWdodC5oaWdobGlnaHQpOworICAgICAgICAKKyAgICAgICAgd2FpdEZvckNvbmRpdGlv
bldpdGhMb2dnaW5nKFsmXSAoKSAtPiBCT09MIHsKKyAgICAgICAgICAgIHJldHVybiBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLm51bWJlck9mQXBwSGln
aGxpZ2h0cyJdLmludFZhbHVlID09IDE7CisgICAgICAgIH0sIDIsIEAiRXhwZWN0ZWQgSGlnaGxp
Z2h0cyB0byBiZSBwb3B1bGF0ZWQuIik7CisgICAgICAgIAorICAgICAgICBbd2ViVmlldyBfcmVz
dG9yZUFwcEhpZ2hsaWdodHM6QFsgaGlnaGxpZ2h0LmhpZ2hsaWdodCBdXTsKKyAgICAgICAgCisg
ICAgICAgIGZpbmlzaGVkID0gWUVTOworICAgIH1dOworICAgIFt3ZWJWaWV3IF9hZGRBcHBIaWdo
bGlnaHRdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOworfQorCit9
CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421736</attachid>
            <date>2021-02-26 22:47:28 -0800</date>
            <delta_ts>2021-02-27 00:04:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222408-20210226224727.patch</filename>
            <type>text/plain</type>
            <size>17255</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczNjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzlmNTYyMTFjNzMwYzY3
M2Y3ZTYzMGUyOTlkM2FjNzAyODE0Yzg2ZC4uZTJjNWRiMjBiNjZlYmMxZGZjMGYxODMyOWRhYzU5
YzcwMjQ1OGQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTAyLTI2ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgQVBJIHRlc3Qg
Zm9yIEFwcEhpZ2hsaWdodHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMjQwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRlc3Q6IFRlc3RXZWJLaXRBUEkuQXBwSGlnaGxpZ2h0cy5BcHBIaWdobGlnaHRD
cmVhdGVBbmRSZXN0b3JlCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Om51bWJlck9mQXBwSGlnaGxpZ2h0cyk6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6
CisKIDIwMjEtMDItMjYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZWR1Y2UgZXhwbGljaXQgdXNhZ2Ugb2YgW29iakMgcmV0YWluXSBpbiBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA2Njk1NDg2MGU0MTJjZWI0OWQ0OTAzN2I0
MzA3M2ViOWZiMjA1NjBlLi4xNGFiNzhlMmYzNDk2OTc3ZjU1NGUyMjIzMDlkNGY3YTAwOGZhMGE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xMDEsNiArMTAxLDcgQEAK
ICNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCisjaW5jbHVkZSAiSGlnaGxp
Z2h0UmVnaXN0ZXIuaCIKICNpbmNsdWRlICJIaXN0b3J5Q29udHJvbGxlci5oIgogI2luY2x1ZGUg
Ikhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgpAQCAtNTkxMyw2ICs1
OTE0LDIyIEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNTYW5kYm94SU9LaXRPcGVuQWNjZXNzVG9DbGFz
cyhjb25zdCBTdHJpbmcmIHByb2Nlc3MsIGNvbnN0IFN0CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShBUFBfSElHSExJR0hUUykKK3Vuc2lnbmVkIEludGVybmFsczo6bnVtYmVyT2ZBcHBIaWdobGln
aHRzKCkKK3sKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKKyAg
ICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gMDsKKyAgICBhdXRvIGFwcEhpZ2hsaWdo
dFJlZ2lzdGVyID0gZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFJlZ2lzdGVySWZFeGlzdHMoKTsKKyAg
ICBpZiAoIWFwcEhpZ2hsaWdodFJlZ2lzdGVyKQorICAgICAgICByZXR1cm4gMDsKKyAgICB1bnNp
Z25lZCBudW1IaWdobGlnaHRzID0gMDsKKyAgICBmb3IgKGF1dG8mIGhpZ2hsaWdodCA6IGFwcEhp
Z2hsaWdodFJlZ2lzdGVyLT5tYXAoKSkKKyAgICAgICAgbnVtSGlnaGxpZ2h0cyArPSBoaWdobGln
aHQudmFsdWUtPnJhbmdlc0RhdGEoKS5zaXplKCk7CisgICAgcmV0dXJuIG51bUhpZ2hsaWdodHM7
Cit9CisjZW5kaWYKKwogYm9vbCBJbnRlcm5hbHM6OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgp
CiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OnN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggN2ViYTY1Nzg5ZjhiZmQyZjI2NmIzNzQzOTY3
MzU2ZjQyMDZiZDlkOC4uYjM4ZWM0NDM1N2Y1YzQxNzJmZGM1MjcxMTY1NmIwZTliNDEzMmY3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC0xMDQ3LDYgKzEwNDcsMTAgQEAgcHVi
bGljOgogCiAgICAgdW5zaWduZWQgY3JlYXRlU2xlZXBEaXNhYmxlcihjb25zdCBTdHJpbmcmIHJl
YXNvbiwgYm9vbCBkaXNwbGF5KTsKICAgICBib29sIGRlc3Ryb3lTbGVlcERpc2FibGVyKHVuc2ln
bmVkIGlkZW50aWZpZXIpOworICAgICAgICAKKyNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCisg
ICAgdW5zaWduZWQgbnVtYmVyT2ZBcHBIaWdobGlnaHRzKCk7CisjZW5kaWYKIAogI2lmIEVOQUJM
RShXRUJYUikKICAgICBFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJUZXN0Pj4geHJUZXN0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggZDNjNTMyMmE4Mjg4YjI5YzhlNDhm
OTBmNjMyNTBlYThmM2Q3NmU2OS4uYzJiMWRkZDYzZTNmYjU3MzI2YmQwZmNlNmVmMzE5MTA1NzE5
YmUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtOTU3LDYgKzk1Nyw4
IEBAIGVudW0gVHJlZVR5cGUgewogCiAgICAgdW5zaWduZWQgbG9uZyBjcmVhdGVTbGVlcERpc2Fi
bGVyKERPTVN0cmluZyByZWFzb24sIGJvb2xlYW4gZGlzcGxheSk7CiAgICAgYm9vbGVhbiBkZXN0
cm95U2xlZXBEaXNhYmxlcih1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOworICAgIAorICAgIFtD
b25kaXRpb25hbD1BUFBfSElHSExJR0hUU10gdW5zaWduZWQgbG9uZyBudW1iZXJPZkFwcEhpZ2hs
aWdodHMoKTsKIAogICAgIFtDb25kaXRpb25hbD1XRUJYUiwgTWF5VGhyb3dFeGNlcHRpb25dIHJl
YWRvbmx5IGF0dHJpYnV0ZSBXZWJYUlRlc3QgeHJUZXN0OwogCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzIzMTM1NWI5ZTE0YTkwMGY0NDRjYWFl
NWUxN2RhNTY1NWYxYzZhZi4uNDc5ZjY5M2IyOTE2NjY3Njg0ZTgzNWNmNzNhYTYxZTc3NmUyN2Ji
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxIEBACisyMDIxLTAyLTI2ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBh
cHBsZS5jb20+CisKKyAgICAgICAgQVBJIHRlc3QgZm9yIEFwcEhpZ2hsaWdodHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjQwOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVV0aWxpdGllcy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tBcHBIaWdobGlnaHRzLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bQXBw
SGlnaGxpZ2h0RGVsZWdhdGUgX3dlYlZpZXc6c3RvcmVBcHBIaWdobGlnaHQ6aW5OZXdHcm91cDpd
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvbWFjL0RyYWdBbmREcm9wVGVzdHNNYWMubW06CisgICAgICAgIChURVNUKToKKyAg
ICAgICAgKHdhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyk6IERlbGV0ZWQuCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKToKKwogMjAy
MS0wMi0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZHVj
ZSBleHBsaWNpdCB1c2FnZSBvZiBbb2JqQyByZXRhaW5dIGluIFdlYktpdApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCmluZGV4IGUyZmI2OTAyNGJiMTQ5ZTAxNTg4NjU2MGZl
NGI0MzhjNjU5YjUxMzkuLmRkNTA4MGNkZGY5YzhjMTc0Y2I5NzJjY2NkODI5YjAzYTJhNGM5Y2Qg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKQEAgLTM1LDYgKzM1LDcg
QEAKICNpZiBVU0UoRk9VTkRBVElPTikKIE9CSkNfQ0xBU1MgTlNTdHJpbmc7CiBPQkpDX0NMQVNT
IE5TRGljdGlvbmFyeTsKK3R5cGVkZWYgZG91YmxlIE5TVGltZUludGVydmFsOwogI2VuZGlmCiAK
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKQEAgLTQ0LDYgKzQ1LDcgQEAgc3RkOjpzdHJpbmcg
dG9TVEQoY29uc3QgY2hhciopOwogI2lmIFVTRShGT1VOREFUSU9OKQogc3RkOjpzdHJpbmcgdG9T
VEQoTlNTdHJpbmcgKik7CiBib29sIGpzb25NYXRjaGVzRXhwZWN0ZWRWYWx1ZXMoTlNTdHJpbmcg
Kmpzb25TdHJpbmcsIE5TRGljdGlvbmFyeSAqZXhwZWN0ZWQpOwordm9pZCB3YWl0Rm9yQ29uZGl0
aW9uV2l0aExvZ2dpbmcoc3RkOjpmdW5jdGlvbjxib29sKCk+JiYsIE5TVGltZUludGVydmFsIGxv
Z2dpbmdUaW1lb3V0LCBOU1N0cmluZyAqbWVzc2FnZSwgLi4uKTsKICNlbmRpZgogCiAjaWYgV0tf
SEFWRV9DX1NQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3OWNhYjIzZDk4NGEzYTMwOGM5
MDcwNDc4NDY3M2NiNGM2Njg2NjVjLi5iMjE3OWYxNjRlMGEyYjI3Yzc4N2U3MDljMWNiZGQyOGM4
MTcxYmJhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjQ5LDYgKzI0OSw3IEBACiAJCTQ0
ODE3QTJGMUYwNDg2QkYwMDAwMzgxMCAvKiBXS1JlcXVlc3RBY3RpdmF0ZWRFbGVtZW50SW5mby5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0ODE3QTJF
MUYwNDg2QkYwMDAwMzgxMCAvKiBXS1JlcXVlc3RBY3RpdmF0ZWRFbGVtZW50SW5mby5tbSAqLzsg
fTsKIAkJNDQ4RDdFNDcxRUE2QzU1NTAwRUNDNzU2IC8qIEVudmlyb25tZW50VXRpbGl0aWVzVGVz
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDhE
N0U0NTFFQTZDNTU1MDBFQ0M3NTYgLyogRW52aXJvbm1lbnRVdGlsaXRpZXNUZXN0LmNwcCAqLzsg
fTsKIAkJNDRBQzhCQzYyMUQwMjQ1QTAwQ0FGQjM0IC8qIFJldGFpblB0ci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAyOUIxNjE0ODZBRDY0MDA4
MTdEQTkgLyogUmV0YWluUHRyLmNwcCAqLzsgfTsKKwkJNDRDMkZCRTIyNUU3NTkyQzAwQUJDNzJG
IC8qIFdLQXBwSGlnaGxpZ2h0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ0QzJGQkUxMjVFNzU5MkMwMEFCQzcyRiAvKiBXS0FwcEhpZ2hsaWdodHMu
bW0gKi87IH07CiAJCTQ0Q0YzMUZEMjQ5OTQxRTgwMDlDQjZDQiAvKiBDb250ZXh0TWVudUFjdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NENG
MzFGQjI0OTkzRjY2MDA5Q0I2Q0IgLyogQ29udGV4dE1lbnVBY3Rpb24uY3BwICovOyB9OwogCQk0
NjEyQzJCOTIxMEE2QUNFMDBCNzg4QTYgLyogTG9hZEZpbGVUaGVuUmVsb2FkLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYxMkMyQjgyMTBBNkFCRjAw
Qjc4OEE2IC8qIExvYWRGaWxlVGhlblJlbG9hZC5tbSAqLzsgfTsKIAkJNDYyOEM4RTkyMzY3QUJE
MTAwQjA3M0YwIC8qIFdLU2VjdXJpdHlPcmlnaW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDYyOEM4RTgyMzY3QUJCQzAwQjA3M0YwIC8qIFdLU2Vj
dXJpdHlPcmlnaW4uY3BwICovOyB9OwpAQCAtMjAwOSw2ICsyMDEwLDcgQEAKIAkJNDQ4MTdBMkUx
RjA0ODZCRjAwMDAzODEwIC8qIFdLUmVxdWVzdEFjdGl2YXRlZEVsZW1lbnRJbmZvLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tSZXF1ZXN0QWN0aXZhdGVkRWxl
bWVudEluZm8ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0OEQ3RTQ1MUVBNkM1
NTUwMEVDQzc1NiAvKiBFbnZpcm9ubWVudFV0aWxpdGllc1Rlc3QuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRW52aXJvbm1lbnRVdGlsaXRpZXNUZXN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBNjIyQzExNEEwRTJCNjAwNDg1MTVCIC8qIFdU
RlN0cmluZ1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXVEZT
dHJpbmdVdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDRDMkZCRTEy
NUU3NTkyQzAwQUJDNzJGIC8qIFdLQXBwSGlnaGxpZ2h0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLQXBwSGlnaGxpZ2h0cy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDRDRjMxRkIyNDk5M0Y2NjAwOUNCNkNCIC8qIENvbnRleHRNZW51QWN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRleHRNZW51
QWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDYxMkMyQjgyMTBBNkFC
RjAwQjc4OEE2IC8qIExvYWRGaWxlVGhlblJlbG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IExvYWRGaWxlVGhlblJlbG9hZC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDYyOEM4RTgyMzY3QUJCQzAwQjA3M0YwIC8qIFdLU2VjdXJpdHlPcmln
aW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tTZWN1cml0eU9y
aWdpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNDkzLDYgKzM0OTUsNyBA
QAogCQkJCTUxMjBDODNDMUU2NzUwNzkwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9t
UGF0aHMubW0gKi8sCiAJCQkJNUM5RTU2ODQxREY5MTQzRDAwQzlFRTMzIC8qIFdlYnNpdGVQb2xp
Y2llcy5tbSAqLywKIAkJCQk5MzFDMjgxQzIyQkM1NUE3MDAxRDk4QzQgLyogV2ViU1FMQmFzaWNz
Lm1tICovLAorCQkJCTQ0QzJGQkUxMjVFNzU5MkMwMEFCQzcyRiAvKiBXS0FwcEhpZ2hsaWdodHMu
bW0gKi8sCiAJCQkJMkU1Qzc3MDYxRkE3MDEzNjAwNTkzMkMzIC8qIFdLQXR0YWNobWVudFRlc3Rz
Lm1tICovLAogCQkJCTFGODM1NzFBMUQzRkZCMEUwMEUzOTY3QiAvKiBXS0JhY2tGb3J3YXJkTGlz
dC5tbSAqLywKIAkJCQk1Q0UzNTREODFFNzBEOUMzMDBCRUZFM0IgLyogV0tDb250ZW50RXh0ZW5z
aW9uU3RvcmUubW0gKi8sCkBAIC01NjcwLDYgKzU2NzMsNyBAQAogCQkJCTdDQ0U3RjFDMUE0MTFB
RTYwMDQ0N0M0QyAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDQ0U3RUQ4MUE0MTFBN0UwMDQ0N0M0QyAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50Lm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0NDRTdFRDkxQTQxMUE3RTAwNDQ3QzRDIC8qIFdpbmRvd2xlc3NXZWJW
aWV3V2l0aE1lZGlhLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNDRDMkZCRTIyNUU3NTkyQzAwQUJD
NzJGIC8qIFdLQXBwSGlnaGxpZ2h0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJFNUM3NzA3MUZB
NzAxMzYwMDU5MzJDMyAvKiBXS0F0dGFjaG1lbnRUZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTFGODM1NzFCMUQzRkZCMjMwMEUzOTY3QiAvKiBXS0JhY2tGb3J3YXJkTGlzdC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RjJFMUE0MTFCMTAwMDQ0N0M0QyAvKiBXS0Jyb3dzaW5nQ29udGV4
dEdyb3VwVGVzdC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXBwSGlnaGxpZ2h0cy5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
MGI1ZjI0ZmQ0ZTZlM2VkYjc4OWQ3ZGI1YzI4ZTg2YWQwZDY5MGMzCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMu
bW0KQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0
TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0
ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJW
aWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2
YXRlRm9yVGVzdGluZy5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0FwcEhpZ2hsaWdodC5oPgorI2lt
cG9ydCA8V2ViS2l0L19XS0FwcEhpZ2hsaWdodERlbGVnYXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisKKyNpZiBFTkFCTEUoQVBQX0hJR0hM
SUdIVFMpCisKK0BpbnRlcmZhY2UgQXBwSGlnaGxpZ2h0RGVsZWdhdGUgOiBOU09iamVjdCA8X1dL
QXBwSGlnaGxpZ2h0RGVsZWdhdGU+CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAo
XnN0b3JlQXBwSGlnaGxpZ2h0Q2FsbGJhY2spKFdLV2ViVmlldyAqLCBfV0tBcHBIaWdobGlnaHQg
KiwgQk9PTCk7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBBcHBIaWdobGlnaHREZWxlZ2F0ZQor
LSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdG9yZUFwcEhpZ2hsaWdodDoo
X1dLQXBwSGlnaGxpZ2h0ICopaGlnaGxpZ2h0IGluTmV3R3JvdXA6KEJPT0wpaW5OZXdHcm91cAor
eworICAgIGlmIChfc3RvcmVBcHBIaWdobGlnaHRDYWxsYmFjaykKKyAgICAgICAgX3N0b3JlQXBw
SGlnaGxpZ2h0Q2FsbGJhY2sod2ViVmlldywgaGlnaGxpZ2h0LCBpbk5ld0dyb3VwKTsKK30KK0Bl
bmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKEFwcEhpZ2hsaWdodHMsIEFw
cEhpZ2hsaWdodENyZWF0ZUFuZFJlc3RvcmUpCit7CisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlv
biAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3Vy
YXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJu
YWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tBcHBIaWdobGlnaHREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2Vi
Vmlld0NyZWF0ZSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0p
OworICAgIGF1dG8gd2ViVmlld1Jlc3RvcmUgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb25dKTsKKyAgICBbd2ViVmlld0NyZWF0ZSBfc2V0QXBwSGlnaGxpZ2h0RGVs
ZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3Q3JlYXRlIHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZzpAIlRlc3QiXTsKKyAgICBbd2ViVmlld0NyZWF0ZSBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NlbGVjdEFsbCcpIl07Cisg
ICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gTk87CisgICAgW2RlbGVnYXRlIHNldFN0b3JlQXBw
SGlnaGxpZ2h0Q2FsbGJhY2s6XihXS1dlYlZpZXcgKmRlbGVnYXRlV2ViVmlldywgX1dLQXBwSGln
aGxpZ2h0ICpoaWdobGlnaHQsIEJPT0wgaW5OZXdHcm91cCkgeworICAgICAgICBFWFBFQ1RfRVEo
ZGVsZWdhdGVXZWJWaWV3LCB3ZWJWaWV3Q3JlYXRlLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX05P
VF9OVUxMKGhpZ2hsaWdodCk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShoaWdobGlnaHQudGV4
dCwgQCJUZXN0Iik7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChoaWdobGlnaHQuaGlnaGxpZ2h0
KTsKKyAgICAgICAgCisgICAgICAgIFt3ZWJWaWV3UmVzdG9yZSBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCJUZXN0Il07CisgICAgICAgIFt3ZWJWaWV3UmVzdG9yZSBfcmVzdG9yZUFwcEhp
Z2hsaWdodHM6QFsgaGlnaGxpZ2h0LmhpZ2hsaWdodCBdXTsKKyAgICAgICAgCisgICAgICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4g
Ym9vbCB7CisgICAgICAgICAgICByZXR1cm4gW3dlYlZpZXdSZXN0b3JlIHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBIaWdobGlnaHRzKCkiXS5pbnRW
YWx1ZSA9PSAxOworICAgICAgICB9LCAyLCBAIkV4cGVjdGVkIEhpZ2hsaWdodHMgdG8gYmUgcG9w
dWxhdGVkLiIpOworICAgICAgICAKKyAgICAgICAgZmluaXNoZWQgPSBZRVM7CisgICAgfV07Cisg
ICAgW3dlYlZpZXdDcmVhdGUgX2FkZEFwcEhpZ2hsaWdodF07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZmaW5pc2hlZCk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9EcmFnQW5kRHJvcFRlc3RzTWFjLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvRHJhZ0FuZERyb3BUZXN0c01hYy5tbQppbmRleCBlOTdk
ZTI0MzBjNGNmZWJkMjNjMjhlZDU4YWU5MWU5YzFkYjRkYjkxLi4yOTk1MjE1NmU5NWIwZmZlN2Ew
OWNmZWMzNGRjOThmYWYxYzUxMTlmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9EcmFnQW5kRHJvcFRlc3RzTWFjLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL0RyYWdBbmREcm9wVGVzdHNNYWMubW0KQEAgLTM0LDI1ICszNCw2IEBACiAKICNp
ZiBFTkFCTEUoRFJBR19TVVBQT1JUKSAmJiBQTEFURk9STShNQUMpCiAKLXN0YXRpYyB2b2lkIHdh
aXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhCT09MKF5jb25kaXRpb24pKCksIE5TVGltZUludGVy
dmFsIGxvZ2dpbmdUaW1lb3V0LCBOU1N0cmluZyAqbWVzc2FnZSwgLi4uKQotewotICAgIE5TRGF0
ZSAqc3RhcnRUaW1lID0gW05TRGF0ZSBkYXRlXTsKLSAgICBCT09MIGV4Y2VlZGVkTG9nZ2luZ1Rp
bWVvdXQgPSBOTzsKLSAgICB3aGlsZSAoW1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIHJ1bk1v
ZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGUgYmVmb3JlRGF0ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XV0p
IHsKLSAgICAgICAgaWYgKGNvbmRpdGlvbigpKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgaWYgKGV4Y2VlZGVkTG9nZ2luZ1RpbWVvdXQgfHwgW1tOU0RhdGUgZGF0ZV0gdGltZUludGVy
dmFsU2luY2VEYXRlOnN0YXJ0VGltZV0gPCBsb2dnaW5nVGltZW91dCkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIHZhX2xpc3QgYXJnczsKLSAgICAgICAgdmFfc3RhcnQoYXJncywg
bWVzc2FnZSk7Ci0gICAgICAgIE5TTG9ndihtZXNzYWdlLCBhcmdzKTsKLSAgICAgICAgdmFfZW5k
KGFyZ3MpOwotICAgICAgICBleGNlZWRlZExvZ2dpbmdUaW1lb3V0ID0gWUVTOwotICAgIH0KLX0K
LQogVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBOdW1iZXJPZlZhbGlkSXRlbXNGb3JEcm9wKQogewog
ICAgIE5TUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtOU1Bhc3RlYm9hcmQgcGFzdGVib2FyZFdp
dGhVbmlxdWVOYW1lXTsKQEAgLTEwMSw3ICs4Miw3IEBAIFRFU1QoRHJhZ0FuZERyb3BUZXN0cywg
RHJhZ0ltYWdlRWxlbWVudEludG9GaWxlVXBsb2FkKQogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkVGVzdFBhZ2VOYW1lZDpAImltYWdlLWFuZC1maWxlLXVwbG9hZCJdOwogICAgIFtzaW11
bGF0b3IgcnVuRnJvbTpOU01ha2VQb2ludCgxMDAsIDEwMCkgdG86TlNNYWtlUG9pbnQoMTAwLCAz
MDApXTsKIAotICAgIHdhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gQk9PTCB7
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFsm
XSAoKSAtPiBib29sIHsKICAgICAgICAgcmV0dXJuIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJpbWFnZWxvYWQudGV4dENvbnRlbnQiXS5ib29sVmFsdWU7CiAgICAgfSwg
MiwgQCJFeHBlY3RlZCBpbWFnZSB0byBmaW5pc2ggbG9hZGluZy4iKTsKICAgICBFWFBFQ1RfRVEo
MSwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImZpbGVjb3VudC50ZXh0
Q29udGVudCJdLmludGVnZXJWYWx1ZSk7CkBAIC0xMTcsNyArOTgsNyBAQCBURVNUKERyYWdBbmRE
cm9wVGVzdHMsIERyYWdQcm9taXNlZEltYWdlRmlsZUludG9GaWxlVXBsb2FkKQogICAgIFtzaW11
bGF0b3Igd3JpdGVQcm9taXNlZEZpbGVzOkBbIGltYWdlVVJMIF1dOwogICAgIFtzaW11bGF0b3Ig
cnVuRnJvbTpOU01ha2VQb2ludCgxMDAsIDEwMCkgdG86TlNNYWtlUG9pbnQoMTAwLCAzMDApXTsK
IAotICAgIHdhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gQk9PTCB7CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFsmXSAoKSAt
PiBib29sIHsKICAgICAgICAgcmV0dXJuIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJpbWFnZWxvYWQudGV4dENvbnRlbnQiXS5ib29sVmFsdWU7CiAgICAgfSwgMiwgQCJF
eHBlY3RlZCBpbWFnZSB0byBmaW5pc2ggbG9hZGluZy4iKTsKICAgICBFWFBFQ1RfRVEoMSwgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImZpbGVjb3VudC50ZXh0Q29udGVu
dCJdLmludGVnZXJWYWx1ZSk7CkBAIC0xMzMsNyArMTE0LDcgQEAgVEVTVChEcmFnQW5kRHJvcFRl
c3RzLCBEcmFnSW1hZ2VGaWxlSW50b0ZpbGVVcGxvYWQpCiAgICAgW3NpbXVsYXRvciB3cml0ZUZp
bGVzOkBbIGltYWdlVVJMIF1dOwogICAgIFtzaW11bGF0b3IgcnVuRnJvbTpOU01ha2VQb2ludCgx
MDAsIDEwMCkgdG86TlNNYWtlUG9pbnQoMTAwLCAzMDApXTsKIAotICAgIHdhaXRGb3JDb25kaXRp
b25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gQk9PTCB7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFsmXSAoKSAtPiBib29sIHsKICAgICAgICAgcmV0
dXJuIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbWFnZWxvYWQudGV4
dENvbnRlbnQiXS5ib29sVmFsdWU7CiAgICAgfSwgMiwgQCJFeHBlY3RlZCBpbWFnZSB0byBmaW5p
c2ggbG9hZGluZy4iKTsKICAgICBFWFBFQ1RfRVEoMSwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImZpbGVjb3VudC50ZXh0Q29udGVudCJdLmludGVnZXJWYWx1ZSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29j
b2EubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2Eu
bW0KaW5kZXggNGEyZmRjNTM1ODQzYjM4N2E3OWQ3MDYxNGNlYTgwNDIwMzg1MzU5My4uZGE4ODdk
ZTk3NTU5ZTE3Njg4NDVjYmIyMDc5ZTU5OThlNDBhMDNlMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQpAQCAtNTQsNiArNTQs
MjUgQEAgYm9vbCBqc29uTWF0Y2hlc0V4cGVjdGVkVmFsdWVzKE5TU3RyaW5nICpqc29uU3RyaW5n
LCBOU0RpY3Rpb25hcnkgKmV4cGVjdGVkKQogICAgIHJldHVybiBbZXhwZWN0ZWQgaXNFcXVhbFRv
RGljdGlvbmFyeTpyZXN1bHRdOwogfQogCit2b2lkIHdhaXRGb3JDb25kaXRpb25XaXRoTG9nZ2lu
ZyhzdGQ6OmZ1bmN0aW9uPGJvb2woKT4mJiBjb25kaXRpb24sIE5TVGltZUludGVydmFsIGxvZ2dp
bmdUaW1lb3V0LCBOU1N0cmluZyAqbWVzc2FnZSwgLi4uKQoreworICAgIE5TRGF0ZSAqc3RhcnRU
aW1lID0gW05TRGF0ZSBkYXRlXTsKKyAgICBCT09MIGV4Y2VlZGVkTG9nZ2luZ1RpbWVvdXQgPSBO
TzsKKyAgICB3aGlsZSAoW1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIHJ1bk1vZGU6TlNEZWZh
dWx0UnVuTG9vcE1vZGUgYmVmb3JlRGF0ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XV0pIHsKKyAgICAg
ICAgaWYgKGNvbmRpdGlvbigpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKGV4
Y2VlZGVkTG9nZ2luZ1RpbWVvdXQgfHwgW1tOU0RhdGUgZGF0ZV0gdGltZUludGVydmFsU2luY2VE
YXRlOnN0YXJ0VGltZV0gPCBsb2dnaW5nVGltZW91dCkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIHZhX2xpc3QgYXJnczsKKyAgICAgICAgdmFfc3RhcnQoYXJncywgbWVzc2FnZSk7
CisgICAgICAgIE5TTG9ndihtZXNzYWdlLCBhcmdzKTsKKyAgICAgICAgdmFfZW5kKGFyZ3MpOwor
ICAgICAgICBleGNlZWRlZExvZ2dpbmdUaW1lb3V0ID0gWUVTOworICAgIH0KK30KKwogTlNTdHJp
bmcgKiBjb25zdCBUZXN0UGx1Z0luQ2xhc3NOYW1lUGFyYW1ldGVyID0gQCJUZXN0UGx1Z0luUHJp
bmNpcGFsQ2xhc3NOYW1lIjsKIAogfSAvLyBuYW1lc3BhY2UgVXRpbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>