<?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>192841</bug_id>
          
          <creation_ts>2018-12-18 19:22:16 -0800</creation_ts>
          <short_desc>[WPE][GTK] Purge use of g_assert() under TestWebKitAPI</short_desc>
          <delta_ts>2019-01-09 07:32:30 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>aboya</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>lforschler</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1489180</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-18 19:22:16 -0800</bug_when>
    <thetext>The documentation of g_assert() says:

&quot;&quot;&quot;
The macro can be turned off in final releases of code by defining G_DISABLE_ASSERT when compiling the application, so code must not depend on any side effects from expr . Similarly, it must not be used in unit tests, otherwise the unit tests will be ineffective if compiled with G_DISABLE_ASSERT. Use g_assert_true() and related macros in unit tests instead.
&quot;&quot;&quot;

There are separate g_assert_*() macros for use in tests, which we use inconsistently currently. Use them always. This probably wasn&apos;t the best use of my time today, but it&apos;s been annoying me for a while and makes sense to do. We&apos;ll get nicer error messages now when tests fail.

The documentation also says not to use g_assert_not_reached() in tests, but there is no good replacement for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489182</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-18 19:30:35 -0800</bug_when>
    <thetext>Note this will probably break some tests and testing locally is still not practical, so I&apos;ll be responsible for gardening API tests when this lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489186</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-18 19:47:51 -0800</bug_when>
    <thetext>Ah, I thought I was done with this, but hit a problem and won&apos;t have a patch tonight:

../../Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitUserContentManager.cpp:44:61: error: invalid conversion from ‘WebKitUserContentManager*’ {aka ‘_WebKitUserContentManager*’} to ‘guint64’ {aka ‘long unsigned int’} [-fpermissive]
     g_assert_cmphex(webkit_web_view_get_user_content_manager(webView1.get()), ==, userContentManager1.get());
                                                             ^

The macro is defeated by C++ so we&apos;ll need to use g_assert_true() or write our own macro that does the casts for us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489204</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-18 21:23:48 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #1)
&gt; Note this will probably break some tests and testing locally is still not
&gt; practical, so I&apos;ll be responsible for gardening API tests when this lands.

Actually all I have to do is compare before and after results. Before:

Unexpected failures (4)
    /WebKit2Gtk/TestAutomationSession
        /webkit/WebKitAutomationSession/request-session
    /WebKit2Gtk/TestWebKitAccessibility
        /webkit/WebKitAccessibility/atspi-basic-hierarchy
    /WTF/TestWTF
        WTF_DateMath.calculateLocalTimeOffset
        WTF.StringConcatenate_Unsigned

Unexpected timeouts (9)
    /WebKit2Gtk/TestInspector
        /webkit/WebKitWebInspector/custom-container-destroyed
        /webkit/WebKitWebInspector/manual-attach-detach
        /webkit/WebKitWebInspector/default
    /WebKit2Gtk/TestUIClient
        /webkit/WebKitWebView/geolocation-permission-requests
    /WebKit2Gtk/TestWebKitWebContext
        /webkit/WebKitWebContext/uri-scheme
    /WebKit2Gtk/TestWebExtensions
        /webkit/WebKitWebExtension/form-submission-steps
    /WTF/TestWTF
        WTF_WordLock.ManyContendedLongSections
        WTF_WordLock.ContendedShortSection
        WTF_Lock.ContendedShortSection

Unexpected passes (2)
    /WebKit2Gtk/TestWebViewEditor
        /webkit/WebKitWebView/editable/editable
    /WebKit2Gtk/TestUIClient
        /webkit/WebKitWebView/usermedia-enumeratedevices-permission-check


After:

Unexpected failures (11)
    /WebKit2Gtk/TestLoaderClient
        /webkit/WebKitURIResponse/http-headers
    /WebKit2Gtk/TestWebKitUserContentManager
        /webkit/WebKitUserContentManager/script-message-received
        /webkit/WebKitUserContentManager/script-message-in-world-received
    /WebKit2Gtk/TestSSL
        /webkit/WebKitWebView/tls-errors-policy
        /webkit/WebKitWebView/load-failed-with-tls-errors
        /webkit/WebKitWebView/tls-errors-redirect-to-http
        /webkit/WebKitWebView/tls-http-auth
    /WebKit2Gtk/TestAutomationSession
        /webkit/WebKitAutomationSession/request-session
    /WebKit2Gtk/TestWebKitAccessibility
        /webkit/WebKitAccessibility/atspi-basic-hierarchy
    /WTF/TestWTF
        WTF_DateMath.calculateLocalTimeOffset
        WTF.StringConcatenate_Unsigned

Unexpected timeouts (9)
    /WebKit2Gtk/TestInspector
        /webkit/WebKitWebInspector/custom-container-destroyed
        /webkit/WebKitWebInspector/manual-attach-detach
        /webkit/WebKitWebInspector/default
    /WebKit2Gtk/TestUIClient
        /webkit/WebKitWebView/geolocation-permission-requests
    /WebKit2Gtk/TestWebKitWebContext
        /webkit/WebKitWebContext/uri-scheme
    /WebKit2Gtk/TestWebExtensions
        /webkit/WebKitWebExtension/form-submission-steps
    /WTF/TestWTF
        WTF_WordLock.ManyContendedLongSections
        WTF_WordLock.ContendedShortSection
        WTF_Lock.ContendedShortSection

Unexpected passes (2)
    /WebKit2Gtk/TestWebViewEditor
        /webkit/WebKitWebView/editable/editable
    /WebKit2Gtk/TestUIClient
        /webkit/WebKitWebView/usermedia-enumeratedevices-permission-check


So looks like I maybe broke five tests. I&apos;ll upload the patch for early review without r?, need to examine those tests. Note I wound up redefining g_assert_cmphex() and g_assert_nonnull(), and then redefined g_assert_null() as well for good measure. Feels a bit icky but I think it&apos;s nicer than adding new macros; we can of course do that if desired.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489205</commentid>
    <comment_count>4</comment_count>
      <attachid>357651</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-18 21:28:20 -0800</bug_when>
    <thetext>Created attachment 357651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489206</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-18 21:29:01 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #3)
&gt; So looks like I maybe broke five tests.

Seven... 11 - 4 = 7. I can count.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489304</commentid>
    <comment_count>6</comment_count>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2018-12-19 08:06:07 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #0)
&gt; There are separate g_assert_*() macros for use in tests, which we use
&gt; inconsistently currently. Use them always. This probably wasn&apos;t the best use
&gt; of my time today, but it&apos;s been annoying me for a while and makes sense to
&gt; do. We&apos;ll get nicer error messages now when tests fail.

Why are these tests not using gtest assertion macros like multiplatform tests? It seems weird to me to use different assertion macros among platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489328</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-19 09:32:49 -0800</bug_when>
    <thetext>They&apos;re GLib tests using the GLib test framework. They don&apos;t use the gtest framework at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489550</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-19 15:56:15 -0800</bug_when>
    <thetext>OK, I fixed the seven that I broke.

Of course, no guarantees for the tests that were already broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489551</commentid>
    <comment_count>9</comment_count>
      <attachid>357744</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-19 15:56:43 -0800</bug_when>
    <thetext>Created attachment 357744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489651</commentid>
    <comment_count>10</comment_count>
      <attachid>357744</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-19 18:15:33 -0800</bug_when>
    <thetext>Comment on attachment 357744
Patch

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

&gt; Tools/TestWebKitAPI/glib/WebKitGLib/TestUtils.h:45
&gt; +        auto __n1 = reinterpret_cast&lt;intptr_t&gt;(n1);                      \
&gt; +        auto __n2 = reinterpret_cast&lt;intptr_t&gt;(n2);                      \
&gt; +        if (__n1 cmp __n2) ;                                             \
&gt; +        else {                                                           \
&gt; +            g_assertion_message_cmpnum(G_LOG_DOMAIN, __FILE__, __LINE__, \
&gt; +                G_STRFUNC, #n1 &quot; &quot; #cmp &quot; &quot; #n2, (long double)(__n1), #cmp, (long double)(__n2), &apos;x&apos;); \

BTW this is definitely not portable (casting a pointer through an int never is... only the opposite is portable, and then we do a C-style cast to long double... and then to guint64 inside g_assertion_message_cmpnum). So I&apos;m thinking we should probably implement our own assertion_message_cmpptr to use here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489848</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-12-20 08:31:39 -0800</bug_when>
    <thetext>Philip Withnall has suggested g_assert_true(p1 op p2) instead of g_assert_cmphex(p1, op, p2). The disadvantage is that won&apos;t print if one or the other is NULL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491263</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-02 14:34:14 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #11)
&gt; Philip Withnall has suggested g_assert_true(p1 op p2) instead of
&gt; g_assert_cmphex(p1, op, p2). The disadvantage is that won&apos;t print if one or
&gt; the other is NULL.

Switched to this, eliminating the need to redefine g_assert_cmphex().

Also, I can&apos;t reproduce the -Wpointer-arith warnings I was seeing recently. Maybe I had some broken g_assert_nonnull() in an earlier version of the patch. So we don&apos;t need to redefine g_assert_nonnull() anymore either. So we no longer need to add TestUtils.h or redefine any of the GLib macros at all. (I&apos;ll submit the NULL -&gt; nullptr changes to GLib separately.) Much better.

Please review before this goes stale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491264</commentid>
    <comment_count>13</comment_count>
      <attachid>358207</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-02 14:35:15 -0800</bug_when>
    <thetext>Created attachment 358207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492945</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2019-01-09 07:31:04 -0800</bug_when>
    <thetext>Committed r239772: &lt;https://trac.webkit.org/changeset/239772&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492946</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-09 07:32:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/47146154&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357651</attachid>
            <date>2018-12-18 21:28:20 -0800</date>
            <delta_ts>2018-12-19 15:56:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192841-20181218232818.patch</filename>
            <type>text/plain</type>
            <size>477432</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5Mjg2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTdjMDMyNGE4Y2MwMmYxMzg5NmMyZDMyMzE2OWVkMTg5
ZWQ2Nzk2YS4uOGZlY2VkODY1YWI1ZDIwMTE3NmRhMjg1MDc2NjBkZDk3MGI4Y2RiMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1
NCBAQAorMjAxOC0xMi0xOCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW1dQRV1bR1RLXSBQdXJnZSB1c2Ugb2YgZ19hc3NlcnQoKSB1bmRlciBU
ZXN0V2ViS2l0QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTI4NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGVyZSBhcmUgc2VwYXJhdGUgZ19hc3NlcnRfKigpIG1hY3JvcyBmb3IgdXNlIGluIHRl
c3RzLCB3aGljaCB3ZSB1c2UgaW5jb25zaXN0ZW50bHkKKyAgICAgICAgY3VycmVudGx5LiBVc2Ug
dGhlbSBhbHdheXMuIFdlJ2xsIGdldCBuaWNlciBlcnJvciBtZXNzYWdlcyBub3cgd2hlbiB0ZXN0
cyBmYWlsLCBhbmQgdGhlCisgICAgICAgIGFzc2VydGlvbnMgd2lsbCBub3cgcnVuIGR1cmluZyB0
ZXN0cyBldmVuIGlmIEdfRElTQUJMRV9BU1NFUlQgaXMgdXNlZCB3aGVuIGJ1aWxkaW5nLgorCisg
ICAgICAgIFVuZm9ydHVuYXRlbHksIHNvbWUgb2YgdGhlc2UgbWFjcm9zIHdlcmUgd3JpdHRlbiBm
b3IgQyBhbmQgZG8gbm90IHdvcmsgd2VsbCBpbiBDKysuIEFkZCBhCisgICAgICAgIG5ldyBoZWFk
ZXIsIFRlc3RVdGlscy5oLCBhbmQgcmVkZWZpbmUgdGhlbSB0aGVyZS4gV2UgY2FuJ3QgdXNlIFRl
c3RNYWluLmggYW55bW9yZSwgYmVjYXVzZQorICAgICAgICB0aGlzIGZpbGUgaW5jbHVkZXMgVUkg
cHJvY2VzcyBoZWFkZXJzIGFuZCBzbyBjYW4ndCBiZSB1c2VkIGluIHRoZSB3ZWIgcHJvY2VzcyB0
ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlwdENvcmUvZ2xp
Yi9UZXN0SlNDLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
RWRpdG9yVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRXZWJFZGl0b3JUZXN0Ojp0ZXN0U2VsZWN0
aW9uQ2hhbmdlZCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0Zy
YW1lVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRGcmFtZVRlc3Q6OnRlc3RNYWluRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0RnJhbWVUZXN0Ojp0ZXN0VVJJKToKKyAgICAgICAgKFdlYktpdEZyYW1l
VGVzdDo6dGVzdEphdmFTY3JpcHRDb250ZXh0KToKKyAgICAgICAgKFdlYktpdEZyYW1lVGVzdDo6
dGVzdEphdmFTY3JpcHRWYWx1ZXMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdBdXRo
ZW50aWNhdGlvblJlcXVlc3QpOgorICAgICAgICAodGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvbkxv
YWRDYW5jZWxsZWQpOgorICAgICAgICAodGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvbkZhaWx1cmUp
OgorICAgICAgICAodGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblN0b3JhZ2UpOgorICAgICAgICAo
UHJveHlBdXRoZW50aWNhdGlvblRlc3Q6OlByb3h5QXV0aGVudGljYXRpb25UZXN0KToKKyAgICAg
ICAgKHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25Qcm94eSk6CisgICAgICAgICh0ZXN0V2ViVmll
d0F1dGhlbnRpY2F0aW9uUHJveHlIVFRQUyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgICh0ZXN0QXV0
b21hdGlvblNlc3Npb25SZXF1ZXN0U2Vzc2lvbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAodGVzdEJh
Y2tGb3J3YXJkTGlzdE5hdmlnYXRpb24pOgorICAgICAgICAodGVzdFdlYktpdFdlYlZpZXdTZXNz
aW9uU3RhdGUpOgorICAgICAgICAodGVzdFdlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGVXaXRoRm9y
bURhdGEpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29u
c29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoQ29uc29sZU1lc3NhZ2VUZXN0Ojpjb25zb2xlTWVz
c2FnZVJlY2VpdmVkQ2FsbGJhY2spOgorICAgICAgICAodGVzdFdlYktpdENvbnNvbGVNZXNzYWdl
Q29uc29sZUFQSSk6CisgICAgICAgICh0ZXN0V2ViS2l0Q29uc29sZU1lc3NhZ2VKYXZhU2NyaXB0
RXhjZXB0aW9uKToKKyAgICAgICAgKHRlc3RXZWJLaXRDb25zb2xlTWVzc2FnZU5ldHdvcmtFcnJv
cik6CisgICAgICAgICh0ZXN0V2ViS2l0Q29uc29sZU1lc3NhZ2VTZWN1cml0eUVycm9yKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIu
Y3BwOgorICAgICAgICAodGVzdENvb2tpZU1hbmFnZXJBY2NlcHRQb2xpY3kpOgorICAgICAgICAo
dGVzdENvb2tpZU1hbmFnZXJDb29raWVzQ2hhbmdlZCk6CisgICAgICAgICh0ZXN0Q29va2llTWFu
YWdlclBlcnNpc3RlbnRTdG9yYWdlKToKKyAgICAgICAgKHRlc3RDb29raWVNYW5hZ2VyUGVyc2lz
dGVudFN0b3JhZ2VEZWxldGVBbGwpOgorICAgICAgICAodGVzdENvb2tpZU1hbmFnZXJFcGhlbWVy
YWwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0RE9NRWxl
bWVudC5jcHA6CisgICAgICAgICh0ZXN0V2ViS2l0RE9NRWxlbWVudEF1dG9GaWxsKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHA6Cisg
ICAgICAgIChkb3dubG9hZExvY2FsRmlsZVN1Y2Nlc3NmdWxseSk6CisgICAgICAgIChjcmVhdGVG
aWxlQXREZXN0aW5hdGlvbik6CisgICAgICAgICh0ZXN0RG93bmxvYWRPdmVyd3JpdGVEZXN0aW5h
dGlvbkRpc2FsbG93ZWQpOgorICAgICAgICAodGVzdERvd25sb2FkTG9jYWxGaWxlRXJyb3IpOgor
ICAgICAgICAodGVzdERvd25sb2FkUmVtb3RlRmlsZSk6CisgICAgICAgICh0ZXN0RG93bmxvYWRS
ZW1vdGVGaWxlRXJyb3IpOgorICAgICAgICAodGVzdFdlYlZpZXdEb3dubG9hZFVSSSk6CisgICAg
ICAgICh0ZXN0UG9saWN5UmVzcG9uc2VEb3dubG9hZCk6CisgICAgICAgICh0ZXN0UG9saWN5UmVz
cG9uc2VEb3dubG9hZENhbmNlbCk6CisgICAgICAgICh0ZXN0RG93bmxvYWRNSU1FVHlwZSk6Cisg
ICAgICAgIChjb250ZXh0TWVudUNhbGxiYWNrKToKKyAgICAgICAgKHRlc3RDb250ZXh0TWVudURv
d25sb2FkQWN0aW9ucyk6CisgICAgICAgICh0ZXN0QmxvYkRvd25sb2FkKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEVkaXRvci5jcHA6CisgICAgICAgICh0
ZXN0V2ViS2l0V2ViRWRpdG9yU2VsZWN0aW9uQ2hhbmdlZCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RGcmFtZS5jcHA6CisgICAgICAgICh0ZXN0V2ViS2l0
RnJhbWVNYWluRnJhbWUpOgorICAgICAgICAodGVzdFdlYktpdEZyYW1lVVJJKToKKyAgICAgICAg
KHRlc3RXZWJLaXRGcmFtZUphdmFTY3JpcHRDb250ZXh0KToKKyAgICAgICAgKHRlc3RXZWJLaXRG
cmFtZUphdmFTY3JpcHRWYWx1ZXMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKExvYWRTdG9wVHJhY2tpbmdU
ZXN0Ojpsb2FkRmFpbGVkKToKKyAgICAgICAgKHRlc3RXZWJWaWV3VGl0bGUpOgorICAgICAgICAo
dGVzdFVSSVJlcXVlc3RIVFRQSGVhZGVycyk6CisgICAgICAgICh0ZXN0VVJJUmVxdWVzdEhUVFBN
ZXRob2QpOgorICAgICAgICAodGVzdFVSSVJlc3BvbnNlSFRUUEhlYWRlcnMpOgorICAgICAgICAo
dGVzdFJlZGlyZWN0VG9EYXRhVVJJKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdE11bHRpcHJvY2Vzcy5jcHA6CisgICAgICAgICh0ZXN0UHJvY2Vzc1Blcldl
YlZpZXcpOgorICAgICAgICAodGVzdFdlYlByb2Nlc3NMaW1pdCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RSZXNvdXJjZXMuY3BwOgorICAgICAgICAodGVz
dFdlYlZpZXdSZXNvdXJjZXMpOgorICAgICAgICAodGVzdFdlYlJlc291cmNlTG9hZGluZyk6Cisg
ICAgICAgICh0ZXN0V2ViUmVzb3VyY2VTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgICh0ZXN0
V2ViUmVzb3VyY2VHZXREYXRhKToKKyAgICAgICAgKHRlc3RXZWJSZXNvdXJjZUdldERhdGFFcnJv
cik6CisgICAgICAgICh0ZXN0V2ViVmlld1Jlc291cmNlc0hpc3RvcnlDYWNoZSk6CisgICAgICAg
ICh0ZXN0V2ViUmVzb3VyY2VTZW5kUmVxdWVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RTU0wuY3BwOgorICAgICAgICAodGVzdFNTTCk6CisgICAgICAg
ICh0ZXN0SW5zZWN1cmVDb250ZW50KToKKyAgICAgICAgKHRlc3RUTFNFcnJvcnNQb2xpY3kpOgor
ICAgICAgICAodGVzdFRMU0Vycm9yc1JlZGlyZWN0KToKKyAgICAgICAgKHRlc3RUTFNFcnJvcnNI
VFRQQXV0aCk6CisgICAgICAgICh0ZXN0TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMpOgorICAgICAg
ICAodGVzdFN1YnJlc291cmNlTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMpOgorICAgICAgICAoaHR0
cHNTZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RVSUNsaWVudC5jcHA6CisgICAgICAgICh0ZXN0V2ViVmlld0NyZWF0ZU5hdmlnYXRp
b25EYXRhKToKKyAgICAgICAgKHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MpOgorICAgICAg
ICAodGVzdFdlYlZpZXdXaW5kb3dQcm9wZXJ0aWVzKToKKyAgICAgICAgKHRlc3RXZWJWaWV3TW91
c2VUYXJnZXQpOgorICAgICAgICAodGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QpOgorICAg
ICAgICAodGVzdFdlYlZpZXdDb2xvckNob29zZXJSZXF1ZXN0KToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwOgorICAgICAgICAo
dGVzdFdlYkV4dGVuc2lvbkdldFRpdGxlKToKKyAgICAgICAgKHRlc3REb2N1bWVudExvYWRlZFNp
Z25hbCk6CisgICAgICAgICh0ZXN0V2ViS2l0V2ViVmlld1Byb2Nlc3NDcmFzaGVkKToKKyAgICAg
ICAgKHRlc3RXZWJFeHRlbnNpb25XaW5kb3dPYmplY3RDbGVhcmVkKToKKyAgICAgICAgKHRlc3RX
ZWJFeHRlbnNpb25Jc29sYXRlZFdvcmxkKToKKyAgICAgICAgKHBlcm1pc3Npb25SZXF1ZXN0Q2Fs
bGJhY2spOgorICAgICAgICAoZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzQ2FsbGJhY2spOgorICAg
ICAgICAodGVzdFdlYkV4dGVuc2lvbkZvcm1Db250cm9sc0Fzc29jaWF0ZWQpOgorICAgICAgICAo
Rm9ybVN1Ym1pc3Npb25UZXN0OjpGb3JtU3VibWlzc2lvblRlc3QpOgorICAgICAgICAoRm9ybVN1
Ym1pc3Npb25UZXN0Ojp0ZXN0Rm9ybVN1Ym1pc3Npb25SZXN1bHQpOgorICAgICAgICAodGVzdFdl
YkV4dGVuc2lvbkZvcm1TdWJtaXNzaW9uU3RlcHMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KHRlc3ROb3RJbml0aWFsaXplZCk6CisgICAgICAgICh0ZXN0Q2xlYXJEYXRhYmFzZSk6CisgICAg
ICAgICh0ZXN0UHJpdmF0ZUJyb3dzaW5nKToKKyAgICAgICAgKHRlc3RHZXRGYXZpY29uKToKKyAg
ICAgICAgKHRlc3RXZWJWaWV3RmF2aWNvbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgICh0ZXN0
RmluZENvbnRyb2xsZXJUZXh0Rm91bmQpOgorICAgICAgICAodGVzdEZpbmRDb250cm9sbGVyVGV4
dE5vdEZvdW5kKToKKyAgICAgICAgKHRlc3RGaW5kQ29udHJvbGxlck1hdGNoQ291bnQpOgorICAg
ICAgICAodGVzdEZpbmRDb250cm9sbGVyTWF4TWF0Y2hDb3VudCk6CisgICAgICAgICh0ZXN0Rmlu
ZENvbnRyb2xsZXJOZXh0KToKKyAgICAgICAgKHRlc3RGaW5kQ29udHJvbGxlclByZXZpb3VzKToK
KyAgICAgICAgKHRlc3RGaW5kQ29udHJvbGxlckNvdW50ZWRNYXRjaGVzKToKKyAgICAgICAgKHRl
c3RGaW5kQ29udHJvbGxlck9wdGlvbnMpOgorICAgICAgICAodGVzdEZpbmRDb250cm9sbGVySGlk
ZSk6CisgICAgICAgICh0ZXN0RmluZENvbnRyb2xsZXJJbnN0YW5jZSk6CisgICAgICAgICh0ZXN0
RmluZENvbnRyb2xsZXJHZXR0ZXJzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHA6CisgICAgICAgICh0ZXN0TmF2aWdh
dGlvblBvbGljeSk6CisgICAgICAgICh0ZXN0UmVzcG9uc2VQb2xpY3kpOgorICAgICAgICAodGVz
dE5ld1dpbmRvd1BvbGljeSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRTZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgICh0ZXN0U2VjdXJpdHlP
cmlnaW5CYXNpY0NvbnN0cnVjdG9yKToKKyAgICAgICAgKHRlc3RTZWN1cml0eU9yaWdpblVSSUNv
bnN0cnVjdG9yKToKKyAgICAgICAgKHRlc3RTZWN1cml0eU9yaWdpbkRlZmF1bHRQb3J0KToKKyAg
ICAgICAgKHRlc3RTZWN1cml0eU9yaWdpbkZpbGVVUkkpOgorICAgICAgICAodGVzdE9wYXF1ZVNl
Y3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFdlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAgKHRlc3RXZWJLaXRTZXR0aW5ncyk6Cisg
ICAgICAgICh0ZXN0V2ViS2l0U2V0dGluZ3NOZXdXaXRoU2V0dGluZ3MpOgorICAgICAgICAodGVz
dFdlYktpdFNldHRpbmdzVXNlckFnZW50KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHA6CisgICAgICAgICh0
ZXN0V2ViVmlld05ld1dpdGhVc2VyQ29udGVudE1hbmFnZXIpOgorICAgICAgICAoaXNTdHlsZVNo
ZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgpOgorICAgICAgICAoaXNTY3JpcHRJbmplY3RlZEZvclVS
TEF0UGF0aCk6CisgICAgICAgICh0ZXN0VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTdHlsZVNo
ZWV0KToKKyAgICAgICAgKHRlc3RVc2VyQ29udGVudE1hbmFnZXJJbmplY3RlZFNjcmlwdCk6Cisg
ICAgICAgIChVc2VyU2NyaXB0TWVzc2FnZVRlc3Q6OnNjcmlwdE1lc3NhZ2VSZWNlaXZlZCk6Cisg
ICAgICAgIChVc2VyU2NyaXB0TWVzc2FnZVRlc3Q6OndhaXRVbnRpbE1lc3NhZ2VSZWNlaXZlZCk6
CisgICAgICAgIChVc2VyU2NyaXB0TWVzc2FnZVRlc3Q6OnJ1bkphdmFTY3JpcHRGaW5pc2hlZCk6
CisgICAgICAgICh0ZXN0VXNlckNvbnRlbnRNYW5hZ2VyU2NyaXB0TWVzc2FnZVJlY2VpdmVkKToK
KyAgICAgICAgKHRlc3RVc2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNzYWdlSW5Xb3JsZFJlY2Vp
dmVkKToKKyAgICAgICAgKHRlc3RVc2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNzYWdlRnJvbURP
TUJpbmRpbmdzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFdlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAodGVzdFdlYkNvbnRleHREZWZhdWx0KToK
KyAgICAgICAgKHRlc3RXZWJDb250ZXh0RXBoZW1lcmFsKToKKyAgICAgICAgKHRlc3RXZWJDb250
ZXh0R2V0UGx1Z2lucyk6CisgICAgICAgICh0ZXN0V2ViQ29udGV4dFVSSVNjaGVtZSk6CisgICAg
ICAgICh0ZXN0V2ViQ29udGV4dFNwZWxsQ2hlY2tlcik6CisgICAgICAgICh0ZXN0V2ViQ29udGV4
dExhbmd1YWdlcyk6CisgICAgICAgIChjb25zb2xlTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spOgor
ICAgICAgICAodGVzdFdlYkNvbnRleHRTZWN1cml0eUZpbGVYSFIpOgorICAgICAgICAoUHJveHlU
ZXN0OjpQcm94eVRlc3QpOgorICAgICAgICAodGVzdFdlYkNvbnRleHRQcm94eVNldHRpbmdzKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZp
ZXcuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdXZWJDb250ZXh0KToKKyAgICAgICAgKHRlc3RX
ZWJWaWV3V2ViQmFja2VuZCk6CisgICAgICAgICh0ZXN0V2ViVmlld0VwaGVtZXJhbCk6CisgICAg
ICAgICh0ZXN0V2ViVmlld0N1c3RvbUNoYXJzZXQpOgorICAgICAgICAodGVzdFdlYlZpZXdTZXR0
aW5ncyk6CisgICAgICAgICh0ZXN0V2ViVmlld1J1bkphdmFTY3JpcHQpOgorICAgICAgICAodGVz
dFdlYlZpZXdDYW5TaG93TUlNRVR5cGUpOgorICAgICAgICAodGVzdFdlYlZpZXdTdWJtaXRGb3Jt
KToKKyAgICAgICAgKHRlc3RXZWJWaWV3U2F2ZSk6CisgICAgICAgICh0ZXN0V2ViVmlld1BhZ2VW
aXNpYmlsaXR5KToKKyAgICAgICAgKHRlc3RXZWJWaWV3U25hcHNob3QpOgorICAgICAgICAodGVz
dFdlYlZpZXdOb3RpZmljYXRpb24pOgorICAgICAgICAodGVzdFdlYlZpZXdOb3RpZmljYXRpb25J
bml0aWFsUGVybWlzc2lvbkFsbG93ZWQpOgorICAgICAgICAodGVzdFdlYlZpZXdOb3RpZmljYXRp
b25Jbml0aWFsUGVybWlzc2lvbkRpc2FsbG93ZWQpOgorICAgICAgICAodGVzdFdlYlZpZXdJc1Bs
YXlpbmdBdWRpbyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJzaXRlRGF0YVRlc3Q6OldlYnNpdGVEYXRh
VGVzdCk6CisgICAgICAgIChXZWJzaXRlRGF0YVRlc3Q6OnJlbW92ZSk6CisgICAgICAgIChXZWJz
aXRlRGF0YVRlc3Q6OmNsZWFyKToKKyAgICAgICAgKHRlc3RXZWJzaXRlRGF0YUNvbmZpZ3VyYXRp
b24pOgorICAgICAgICAodGVzdFdlYnNpdGVEYXRhRXBoZW1lcmFsKToKKyAgICAgICAgKHRlc3RX
ZWJzaXRlRGF0YUNhY2hlKToKKyAgICAgICAgKHRlc3RXZWJzaXRlRGF0YVN0b3JhZ2UpOgorICAg
ICAgICAodGVzdFdlYnNpdGVEYXRhRGF0YWJhc2VzKToKKyAgICAgICAgKHRlc3RXZWJzaXRlRGF0
YUFwcGNhY2hlKToKKyAgICAgICAgKHRlc3RXZWJzaXRlRGF0YUNvb2tpZXMpOgorICAgICAgICAo
dGVzdFdlYnNpdGVEYXRhRGV2aWNlSWRIYXNoU2FsdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwOgorICAgICAgICAoZW1pdERv
Y3VtZW50TG9hZGVkKToKKyAgICAgICAgKGVtaXRVUklDaGFuZ2VkKToKKyAgICAgICAgKHNlbmRS
ZXF1ZXN0Q2FsbGJhY2spOgorICAgICAgICAoY29udGV4dE1lbnVDYWxsYmFjayk6CisgICAgICAg
IChjb25zb2xlTWVzc2FnZVNlbnRDYWxsYmFjayk6CisgICAgICAgIChlbWl0Rm9ybUNvbnRyb2xz
QXNzb2NpYXRlZCk6CisgICAgICAgIChmb3JtQ29udHJvbHNBc3NvY2lhdGVkQ2FsbGJhY2spOgor
ICAgICAgICAoZW1pdEZvcm1TdWJtaXNzaW9uRXZlbnQpOgorICAgICAgICAod2lsbFN1Ym1pdEZv
cm1DYWxsYmFjayk6CisgICAgICAgICh3aW5kb3dPYmplY3RDbGVhcmVkKToKKyAgICAgICAgKG1l
dGhvZENhbGxDYWxsYmFjayk6CisgICAgICAgIChyZWdpc3RlckdSZXNvdXJjZSk6CisgICAgICAg
ICh3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0aWFsaXplX3dpdGhfdXNlcl9kYXRhKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuY3BwOgor
ICAgICAgICAoY2hlY2tMZWFrcyk6CisgICAgICAgIChXZWJQcm9jZXNzVGVzdDo6Y3JlYXRlKToK
KyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9XZWJQcm9jZXNzVGVzdC5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R3RrL0F1dG9jbGVhbnVwc1Rlc3QuY3BwOgorICAgICAgICAoQXV0b2NsZWFudXBzVGVzdDo6
dGVzdFdlYlByb2Nlc3NBdXRvY2xlYW51cHMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL0RPTUNsaWVudFJlY3RUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdERPTUNs
aWVudFJlY3RUZXN0Ojp0ZXN0RGl2Qm91bmRpbmdDbGllbnRSZWN0UG9zaXRpb24pOgorICAgICAg
ICAoV2ViS2l0RE9NQ2xpZW50UmVjdFRlc3Q6OnRlc3REaXZDbGllbnRSZWN0c1Bvc2l0aW9uQW5k
TGVuZ3RoKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01ET01X
aW5kb3dUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdERPTURPTVdpbmRvd1Rlc3Q6OnRlc3RTaWdu
YWxzKToKKyAgICAgICAgKFdlYktpdERPTURPTVdpbmRvd1Rlc3Q6OnRlc3REaXNwYXRjaEV2ZW50
KToKKyAgICAgICAgKFdlYktpdERPTURPTVdpbmRvd1Rlc3Q6OnRlc3RHZXRDb21wdXRlZFN0eWxl
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlRmlsdGVy
VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRET01Ob2RlRmlsdGVyVGVzdDo6dGVzdFRyZWVXYWxr
ZXIpOgorICAgICAgICAoV2ViS2l0RE9NTm9kZUZpbHRlclRlc3Q6OnRlc3ROb2RlSXRlcmF0b3Ip
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVUZXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdERPTU5vZGVUZXN0Ojp0ZXN0SGllcmFyY2h5TmF2aWdhdGlvbik6
CisgICAgICAgIChXZWJLaXRET01Ob2RlVGVzdDo6dGVzdEluc2VydGlvbik6CisgICAgICAgIChX
ZWJLaXRET01Ob2RlVGVzdDo6dGVzdFRhZ05hbWVzTm9kZUxpc3QpOgorICAgICAgICAoV2ViS2l0
RE9NTm9kZVRlc3Q6OnRlc3RUYWdOYW1lc0hUTUxDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dERPTU5vZGVUZXN0Ojp0ZXN0RE9NQ2FjaGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL0RPTVhQYXRoTlNSZXNvbHZlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0
RE9NWFBhdGhOU1Jlc29sdmVyVGVzdDo6ZXZhbHVhdGVGb29DaGlsZFRleHRBbmRDaGVja1Jlc3Vs
dCk6CisgICAgICAgIChXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJUZXN0Ojp0ZXN0WFBhdGhOU1Jl
c29sdmVyTmF0aXZlKToKKyAgICAgICAgKFdlYktpdERPTVhQYXRoTlNSZXNvbHZlclRlc3Q6OnRl
c3RYUGF0aE5TUmVzb2x2ZXJDdXN0b20pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL1Rlc3RBdXRvY2xlYW51cHMuY3BwOgorICAgICAgICAodGVzdFVJUHJvY2Vzc0F1
dG9jbGVhbnVwcyk6CisgICAgICAgICh0ZXN0V2ViUHJvY2Vzc0F1dG9jbGVhbnVwcyk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdENvbnRleHRNZW51LmNwcDoK
KyAgICAgICAgKHRlc3RDb250ZXh0TWVudVBvcHVsYXRlTWVudSk6CisgICAgICAgICh0ZXN0Q29u
dGV4dE1lbnVEaXNtaXNzZWQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R3RrL1Rlc3RET01DbGllbnRSZWN0LmNwcDoKKyAgICAgICAgKHRlc3RXZWJLaXRET01DbGllbnRS
ZWN0RGl2Qm91bmRpbmdDbGllbnRSZWN0UG9zaXRpb24pOgorICAgICAgICAodGVzdFdlYktpdERP
TUNsaWVudFJlY3REaXZDbGllbnRSZWN0c1Bvc2l0aW9uQW5kTGVuZ3RoKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NRE9NV2luZG93LmNwcDoKKyAgICAg
ICAgKHRlc3RXZWJLaXRET01ET01XaW5kb3dTaWduYWxzKToKKyAgICAgICAgKHRlc3RXZWJLaXRE
T01ET01XaW5kb3dEaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKHRlc3RXZWJLaXRET01ET01XaW5k
b3dHZXRDb21wdXRlZFN0eWxlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEd0ay9UZXN0RE9NTm9kZS5jcHA6CisgICAgICAgICh0ZXN0V2ViS2l0RE9NTm9kZUhpZXJhcmNo
eU5hdmlnYXRpb24pOgorICAgICAgICAodGVzdFdlYktpdERPTU5vZGVJbnNlcnRpb24pOgorICAg
ICAgICAodGVzdFdlYktpdERPTU5vZGVUYWdOYW1lc05vZGVMaXN0KToKKyAgICAgICAgKHRlc3RX
ZWJLaXRET01Ob2RlVGFnTmFtZXNIVE1MQ29sbGVjdGlvbik6CisgICAgICAgICh0ZXN0V2ViS2l0
RE9NT2JqZWN0Q2FjaGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3Rr
L1Rlc3RET01Ob2RlRmlsdGVyLmNwcDoKKyAgICAgICAgKHRlc3RXZWJLaXRET01Ob2RlRmlsdGVy
VHJlZVdhbGtlcik6CisgICAgICAgICh0ZXN0V2ViS2l0RE9NTm9kZUZpbHRlck5vZGVJdGVyYXRv
cik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdERPTVhQYXRo
TlNSZXNvbHZlci5jcHA6CisgICAgICAgICh0ZXN0V2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyTmF0
aXZlKToKKyAgICAgICAgKHRlc3RXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJDdXN0b20pOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RJbnNwZWN0b3IuY3BwOgor
ICAgICAgICAodGVzdEluc3BlY3RvckRlZmF1bHQpOgorICAgICAgICAodGVzdEluc3BlY3Rvck1h
bnVhbEF0dGFjaERldGFjaCk6CisgICAgICAgICh0ZXN0SW5zcGVjdG9yQ3VzdG9tQ29udGFpbmVy
RGVzdHJveWVkKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0
SW5zcGVjdG9yU2VydmVyLmNwcDoKKyAgICAgICAgKHN0YXJ0VGVzdFNlcnZlcik6CisgICAgICAg
ICh0ZXN0SW5zcGVjdG9yU2VydmVyUGFnZUxpc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL1Rlc3RPcHRpb25NZW51LmNwcDoKKyAgICAgICAgKE9wdGlvbk1lbnVU
ZXN0OjpzaG93T3B0aW9uTWVudUNhbGxiYWNrKToKKyAgICAgICAgKE9wdGlvbk1lbnVUZXN0Ojpt
ZW51Q2xvc2VDYWxsYmFjayk6CisgICAgICAgIChPcHRpb25NZW51VGVzdDo6Y2xvc2UpOgorICAg
ICAgICAoT3B0aW9uTWVudVRlc3Q6OmFjdGl2YXRlSXRlbSk6CisgICAgICAgIChPcHRpb25NZW51
VGVzdDo6c2VsZWN0SXRlbSk6CisgICAgICAgICh0ZXN0T3B0aW9uTWVudVNpbXBsZSk6CisgICAg
ICAgICh0ZXN0T3B0aW9uTWVudUdyb3Vwcyk6CisgICAgICAgICh0ZXN0T3B0aW9uTWVudUFjdGl2
YXRlKToKKyAgICAgICAgKHRlc3RPcHRpb25NZW51U2VsZWN0KToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0UHJpbnRpbmcuY3BwOgorICAgICAgICAodGVzdFBy
aW50T3BlcmF0aW9uUHJpbnRTZXR0aW5ncyk6CisgICAgICAgICh3ZWJWaWV3UHJpbnRDYWxsYmFj
ayk6CisgICAgICAgICh0ZXN0UHJpbnRPcGVyYXRpb25QcmludCk6CisgICAgICAgICh0ZXN0UHJp
bnRDdXN0b21XaWRnZXQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3Rr
L1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcDoKKyAgICAgICAgKGNoZWNrQXRzcGlBY2Nlc3Np
YmxlKToKKyAgICAgICAgKHRlc3RBdHNwaUJhc2ljSGllcmFyY2h5KToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0VmVyc2lvbi5jcHA6CisgICAgICAg
ICh0ZXN0V2ViS2l0Q2hlY2tWZXJzaW9uKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHA6CisgICAgICAgICh0ZXN0V2ViVmlld0Vk
aXRvckN1dENvcHlQYXN0ZU5vbkVkaXRhYmxlKToKKyAgICAgICAgKHRlc3RXZWJWaWV3RWRpdG9y
Q3V0Q29weVBhc3RlRWRpdGFibGUpOgorICAgICAgICAodGVzdFdlYlZpZXdFZGl0b3JTZWxlY3RB
bGxOb25FZGl0YWJsZSk6CisgICAgICAgICh0ZXN0V2ViVmlld0VkaXRvclNlbGVjdEFsbEVkaXRh
YmxlKToKKyAgICAgICAgKGxvYWRDb250ZW50c0FuZFRyeVRvQ3V0U2VsZWN0aW9uKToKKyAgICAg
ICAgKHRlc3RXZWJWaWV3RWRpdG9yTm9uRWRpdGFibGUpOgorICAgICAgICAodGVzdFdlYlZpZXdF
ZGl0b3JFZGl0YWJsZSk6CisgICAgICAgICh0ZXN0V2ViVmlld0VkaXRvckVkaXRvclN0YXRlVHlw
aW5nQXR0cmlidXRlcyk6CisgICAgICAgICh0ZXN0V2ViVmlld0VkaXRvckluc2VydEltYWdlKToK
KyAgICAgICAgKHRlc3RXZWJWaWV3RWRpdG9yQ3JlYXRlTGluayk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvTG9hZFRyYWNraW5nVGVzdC5jcHA6CisgICAgICAgIChs
b2FkQ2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAgKGxvYWRGYWlsZWRDYWxsYmFjayk6CisgICAg
ICAgIChsb2FkRmFpbGVkV2l0aFRMU0Vycm9yc0NhbGxiYWNrKToKKyAgICAgICAgKExvYWRUcmFj
a2luZ1Rlc3Q6OkxvYWRUcmFja2luZ1Rlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xp
Yi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcDoKKyAgICAgICAgKHJlZ2lzdGVyR1Jlc291cmNlKToK
KyAgICAgICAgKHJlbW92ZU5vbkVtcHR5RGlyZWN0b3J5KToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5oOgorICAgICAgICAoVGVzdDo6YWRvcHRWaWV3
KToKKyAgICAgICAgKFRlc3Q6On5UZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9UZXN0VXRpbHMuaDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdEJ1cy5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0QnVz
OjpnZXRPckNyZWF0ZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0VGVzdEJ1czo6Y3JlYXRl
UHJveHkpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRl
c3RTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdFNlcnZlcjo6Z2V0V2ViU29ja2V0VVJJ
Rm9yUGF0aCBjb25zdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
V2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OmluaXRpYWxpemVXZWJWaWV3
KToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojpsb2FkVVJJKToKKyAgICAgICAgKFdlYlZpZXdUZXN0
Ojpsb2FkSHRtbCk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6bG9hZFBsYWluVGV4dCk6CisgICAg
ICAgIChXZWJWaWV3VGVzdDo6bG9hZEJ5dGVzKToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojpsb2Fk
UmVxdWVzdCk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAg
ICAgICAoV2ViVmlld1Rlc3Q6OmdvQmFjayk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6Z29Gb3J3
YXJkKToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojpnb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6Cisg
ICAgICAgIChyZXNvdXJjZUdldERhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6
bWFpblJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3Vs
dFRvQ1N0cmluZyk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvTnVt
YmVyKToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9Cb29sZWFuKToK
KyAgICAgICAgKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0SXNOdWxsKToKKyAgICAgICAg
KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0SXNVbmRlZmluZWQpOgorICAgICAgICAob25T
bmFwc2hvdFJlYWR5KToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpydW5XZWJQcm9jZXNzVGVzdCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0
R3RrLmNwcDoKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJWaWV3
KToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3cpOgorICAgICAgICAoV2ViVmll
d1Rlc3Q6OnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCk6CisgICAgICAgIChXZWJWaWV3
VGVzdDo6bW91c2VNb3ZlVG8pOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OmVtaXRQb3B1cE1lbnVT
aWduYWwpOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OmtleVN0cm9rZSk6CisgICAgICAgIChXZWJW
aWV3VGVzdDo6ZG9Nb3VzZUJ1dHRvbkV2ZW50KToKKwogMjAxOC0xMi0xNyAgRGFuaWVsIEJhdGVz
ICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBjb25jYXRlbmF0aW5nIFN0
cmluZ1ZpZXcgd2l0aCBvdGhlciBzdHJpbmcgdHlwZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlwdENvcmUvZ2xpYi9UZXN0SlNDLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlwdENvcmUvZ2xpYi9UZXN0SlNDLmNwcAppbmRleCBm
N2ZhNmFhY2RjMzNkMjBiNzE3YmM2YmUyZDU1MWIyMDViMGYwN2E0Li43ZTM3MmMzMzI0MDlmNjM3
Y2YzM2M0ODQwYWExYzAwMjI4YzYxYTI4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL0phdmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9KYXZhU2NyaXB0Q29yZS9nbGliL1Rlc3RKU0MuY3BwCkBAIC02NTUsNyAr
NjU1LDcgQEAgc3RhdGljIHZvaWQgdGVzdEpTQ0V2YWx1YXRlSW5PYmplY3QoKQogCiAgICAgICAg
IEdSZWZQdHI8SlNDVmFsdWU+IHJvb3RGb28gPSBhZG9wdEdSZWYoanNjX3ZhbHVlX29iamVjdF9n
ZXRfcHJvcGVydHkoZ2xvYmFsT2JqZWN0LmdldCgpLCAiZm9vIikpOwogICAgICAgICBjaGVja2Vy
LndhdGNoKHJvb3RGb28uZ2V0KCkpOwotICAgICAgICBnX2Fzc2VydChqc2NfdmFsdWVfaXNfZnVu
Y3Rpb24ocm9vdEZvby5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9p
c19mdW5jdGlvbihyb290Rm9vLmdldCgpKSk7CiAgICAgICAgIHJlc3VsdCA9IGFkb3B0R1JlZihq
c2NfdmFsdWVfZnVuY3Rpb25fY2FsbChyb290Rm9vLmdldCgpLCBHX1RZUEVfTk9ORSkpOwogICAg
ICAgICBjaGVja2VyLndhdGNoKHJlc3VsdC5nZXQoKSk7CiAgICAgICAgIGdfYXNzZXJ0X3RydWUo
anNjX3ZhbHVlX2lzX251bWJlcihyZXN1bHQuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9FZGl0b3JUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9FZGl0b3JUZXN0LmNwcAppbmRleCBjM2QxN2UzOWEz
NDI3M2ZjNGUxNGQ0NWMxNGYxMDdhZmJiZTk1ZjVhLi41Zjc2M2U0YmJjZGRiOTNmMWQyZDQ2MWFl
OTFhYTNhOTkzZDAwOWQxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvRWRpdG9yVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL0VkaXRvclRlc3QuY3BwCkBAIC0zNiwxMiArMzYsMTIgQEAgcHJpdmF0ZToKICAg
ICAgICAgYm9vbCBzZWxlY3Rpb25DaGFuZ2VkID0gZmFsc2U7CiAKICAgICAgICAgV2ViS2l0V2Vi
RWRpdG9yKiBlZGl0b3IgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvcihwYWdlKTsKLSAgICAg
ICAgZ19hc3NlcnQoV0VCS0lUX0lTX1dFQl9FRElUT1IoZWRpdG9yKSk7CisgICAgICAgIGdfYXNz
ZXJ0X3RydWUoV0VCS0lUX0lTX1dFQl9FRElUT1IoZWRpdG9yKSk7CiAgICAgICAgIGFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZWRpdG9yKSk7CiAgICAgICAg
IGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChlZGl0b3IsICJzZWxlY3Rpb24tY2hhbmdlZCIsIEdf
Q0FMTEJBQ0soc2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKSwgJnNlbGVjdGlvbkNoYW5nZWQpOwog
CiAgICAgICAgIEdSZWZQdHI8SlNDQ29udGV4dD4ganNDb250ZXh0ID0gYWRvcHRHUmVmKHdlYmtp
dF9mcmFtZV9nZXRfanNfY29udGV4dCh3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUocGFn
ZSkpKTsKLSAgICAgICAgZ19hc3NlcnQoSlNDX0lTX0NPTlRFWFQoanNDb250ZXh0LmdldCgpKSk7
CisgICAgICAgIGdfYXNzZXJ0X3RydWUoSlNDX0lTX0NPTlRFWFQoanNDb250ZXh0LmdldCgpKSk7
CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qo
anNDb250ZXh0LmdldCgpKSk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN0ZXBzW10g
PSB7CkBAIC01NiwxMCArNTYsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgR1JlZlB0cjxKU0NWYWx1
ZT4gcmVzdWx0OwogICAgICAgICB1bnNpZ25lZCBpID0gMDsKICAgICAgICAgd2hpbGUgKGNvbnN0
IGNoYXIqIGNvbW1hbmQgPSBzdGVwc1tpKytdKSB7Ci0gICAgICAgICAgICBnX2Fzc2VydCghc2Vs
ZWN0aW9uQ2hhbmdlZCk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZShzZWxlY3Rpb25DaGFu
Z2VkKTsKICAgICAgICAgICAgIHJlc3VsdCA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9ldmFsdWF0
ZShqc0NvbnRleHQuZ2V0KCksIGNvbW1hbmQsIC0xKSk7Ci0gICAgICAgICAgICBnX2Fzc2VydChK
U0NfSVNfVkFMVUUocmVzdWx0LmdldCgpKSk7Ci0gICAgICAgICAgICBnX2Fzc2VydChzZWxlY3Rp
b25DaGFuZ2VkKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUoSlNDX0lTX1ZBTFVFKHJlc3Vs
dC5nZXQoKSkpOworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZShzZWxlY3Rpb25DaGFuZ2VkKTsK
ICAgICAgICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgfQogCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRnJhbWVUZXN0LmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwCmlu
ZGV4IDQ2MWIxY2IyMmZjYmE5NWNkN2Y4Yzc2ZmM3ZmQzYjQ3YTU2ZGI0NzQuLmE1MGFjNjU4NGI3
ODhiM2I3OWMzYjY1YTU5NTU1MGM1NTQ1OGE0NjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwCkBAIC0zMSw4ICszMSw4IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCB0ZXN0TWFpbkZyYW1lKFdlYktpdFdlYlBhZ2UqIHBhZ2UpCiAgICAg
ewogICAgICAgICBXZWJLaXRGcmFtZSogZnJhbWUgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5f
ZnJhbWUocGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19GUkFNRShmcmFtZSkpOwot
ICAgICAgICBnX2Fzc2VydCh3ZWJraXRfZnJhbWVfaXNfbWFpbl9mcmFtZShmcmFtZSkpOworICAg
ICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19GUkFNRShmcmFtZSkpOworICAgICAgICBnX2Fz
c2VydF90cnVlKHdlYmtpdF9mcmFtZV9pc19tYWluX2ZyYW1lKGZyYW1lKSk7CiAKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNDAsNyArNDAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
dGVzdFVSSShXZWJLaXRXZWJQYWdlKiBwYWdlKQogICAgIHsKICAgICAgICAgV2ViS2l0RnJhbWUq
IGZyYW1lID0gd2Via2l0X3dlYl9wYWdlX2dldF9tYWluX2ZyYW1lKHBhZ2UpOwotICAgICAgICBn
X2Fzc2VydChXRUJLSVRfSVNfRlJBTUUoZnJhbWUpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShX
RUJLSVRfSVNfRlJBTUUoZnJhbWUpKTsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93
ZWJfcGFnZV9nZXRfdXJpKHBhZ2UpLCA9PSwgd2Via2l0X2ZyYW1lX2dldF91cmkoZnJhbWUpKTsK
IAogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ5LDE1ICs0OSwxNSBAQCBwcml2YXRlOgogICAg
IGJvb2wgdGVzdEphdmFTY3JpcHRDb250ZXh0KFdlYktpdFdlYlBhZ2UqIHBhZ2UpCiAgICAgewog
ICAgICAgICBXZWJLaXRGcmFtZSogZnJhbWUgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJh
bWUocGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19GUkFNRShmcmFtZSkpOworICAg
ICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19GUkFNRShmcmFtZSkpOwogI2lmIFBMQVRGT1JN
KEdUSykKICAgICAgICAgR19HTlVDX0JFR0lOX0lHTk9SRV9ERVBSRUNBVElPTlM7Ci0gICAgICAg
IGdfYXNzZXJ0KHdlYmtpdF9mcmFtZV9nZXRfamF2YXNjcmlwdF9nbG9iYWxfY29udGV4dChmcmFt
ZSkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKHdlYmtpdF9mcmFtZV9nZXRfamF2YXNjcmlw
dF9nbG9iYWxfY29udGV4dChmcmFtZSkpOwogICAgICAgICBHX0dOVUNfRU5EX0lHTk9SRV9ERVBS
RUNBVElPTlM7CiAjZW5kaWYKIAogICAgICAgICBHUmVmUHRyPEpTQ0NvbnRleHQ+IGpzQ29udGV4
dCA9IGFkb3B0R1JlZih3ZWJraXRfZnJhbWVfZ2V0X2pzX2NvbnRleHQoZnJhbWUpKTsKLSAgICAg
ICAgZ19hc3NlcnQoSlNDX0lTX0NPTlRFWFQoanNDb250ZXh0LmdldCgpKSk7CisgICAgICAgIGdf
YXNzZXJ0X3RydWUoSlNDX0lTX0NPTlRFWFQoanNDb250ZXh0LmdldCgpKSk7CiAgICAgICAgIGFz
c2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoanNDb250ZXh0Lmdl
dCgpKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02Niw2NSArNjYsNjUgQEAgcHJpdmF0
ZToKICAgICBib29sIHRlc3RKYXZhU2NyaXB0VmFsdWVzKFdlYktpdFdlYlBhZ2UqIHBhZ2UpCiAg
ICAgewogICAgICAgICBXZWJLaXRGcmFtZSogZnJhbWUgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X21h
aW5fZnJhbWUocGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19GUkFNRShmcmFtZSkp
OworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19GUkFNRShmcmFtZSkpOwogCiAgICAg
ICAgIEdSZWZQdHI8SlNDQ29udGV4dD4ganNDb250ZXh0ID0gYWRvcHRHUmVmKHdlYmtpdF9mcmFt
ZV9nZXRfanNfY29udGV4dChmcmFtZSkpOwotICAgICAgICBnX2Fzc2VydChKU0NfSVNfQ09OVEVY
VChqc0NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShKU0NfSVNfQ09OVEVY
VChqc0NvbnRleHQuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRl
c3RGaW5pc2hlcyhHX09CSkVDVChqc0NvbnRleHQuZ2V0KCkpKTsKIAogICAgICAgICBXZWJLaXRE
T01Eb2N1bWVudCogZG9jdW1lbnQgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudChw
YWdlKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkp
OworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQp
KTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVD
VChkb2N1bWVudCkpOwogCiAgICAgICAgIEdSZWZQdHI8SlNDVmFsdWU+IGpzRG9jdW1lbnQgPSBh
ZG9wdEdSZWYod2Via2l0X2ZyYW1lX2dldF9qc192YWx1ZV9mb3JfZG9tX29iamVjdChmcmFtZSwg
V0VCS0lUX0RPTV9PQkpFQ1QoZG9jdW1lbnQpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KEpTQ19JU19W
QUxVRShqc0RvY3VtZW50LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoSlNDX0lTX1ZB
TFVFKGpzRG9jdW1lbnQuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hl
blRlc3RGaW5pc2hlcyhHX09CSkVDVChqc0RvY3VtZW50LmdldCgpKSk7Ci0gICAgICAgIGdfYXNz
ZXJ0KGpzY192YWx1ZV9nZXRfY29udGV4dChqc0RvY3VtZW50LmdldCgpKSA9PSBqc0NvbnRleHQu
Z2V0KCkpOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgoanNjX3ZhbHVlX2dldF9jb250ZXh0KGpz
RG9jdW1lbnQuZ2V0KCkpLCA9PSwganNDb250ZXh0LmdldCgpKTsKIAogICAgICAgICBHUmVmUHRy
PEpTQ1ZhbHVlPiB2YWx1ZSA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9nZXRfdmFsdWUoanNDb250
ZXh0LmdldCgpLCAiZG9jdW1lbnQiKSk7Ci0gICAgICAgIGdfYXNzZXJ0KHZhbHVlLmdldCgpID09
IGpzRG9jdW1lbnQuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgodmFsdWUuZ2V0KCks
ID09LCBqc0RvY3VtZW50LmdldCgpKTsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgR19H
TlVDX0JFR0lOX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAgICAgICAgIFdlYktpdERPTUVsZW1lbnQq
IHAgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9lbGVtZW50X2J5X2lkKGRvY3VtZW50LCAicGFy
YWdyYXBoIik7CiAgICAgICAgIEdfR05VQ19FTkRfSUdOT1JFX0RFUFJFQ0FUSU9OUzsKLSAgICAg
ICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19FTEVNRU5UKHApKTsKKyAgICAgICAgZ19hc3NlcnRf
dHJ1ZShXRUJLSVRfRE9NX0lTX0VMRU1FTlQocCkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHApKTsKIAogICAgICAgICBHUmVmUHRyPEpT
Q1ZhbHVlPiBqc1AgPSBhZG9wdEdSZWYod2Via2l0X2ZyYW1lX2dldF9qc192YWx1ZV9mb3JfZG9t
X29iamVjdChmcmFtZSwgV0VCS0lUX0RPTV9PQkpFQ1QocCkpKTsKICNlbHNlCiAgICAgICAgIEdS
ZWZQdHI8SlNDVmFsdWU+IGpzUCA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2ludm9rZV9t
ZXRob2QoanNEb2N1bWVudC5nZXQoKSwgImdldEVsZW1lbnRCeUlkIiwgR19UWVBFX1NUUklORywg
InBhcmFncmFwaCIsIEdfVFlQRV9OT05FKSk7CiAjZW5kaWYKLSAgICAgICAgZ19hc3NlcnQoSlND
X0lTX1ZBTFVFKGpzUC5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKEpTQ19JU19WQUxV
RShqc1AuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5p
c2hlcyhHX09CSkVDVChqc1AuZ2V0KCkpKTsKLSAgICAgICAgZ19hc3NlcnQoanNjX3ZhbHVlX2lz
X29iamVjdChqc1AuZ2V0KCkpKTsKLSAgICAgICAgZ19hc3NlcnQoanNjX3ZhbHVlX2dldF9jb250
ZXh0KGpzUC5nZXQoKSkgPT0ganNDb250ZXh0LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1
ZShqc2NfdmFsdWVfaXNfb2JqZWN0KGpzUC5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF9jbXBo
ZXgoanNjX3ZhbHVlX2dldF9jb250ZXh0KGpzUC5nZXQoKSksID09LCBqc0NvbnRleHQuZ2V0KCkp
OwogCiAgICAgICAgIHZhbHVlID0gYWRvcHRHUmVmKGpzY19jb250ZXh0X2V2YWx1YXRlKGpzQ29u
dGV4dC5nZXQoKSwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJhZ3JhcGgnKSIsIC0xKSk7
Ci0gICAgICAgIGdfYXNzZXJ0KHZhbHVlLmdldCgpID09IGpzUC5nZXQoKSk7CisgICAgICAgIGdf
YXNzZXJ0X2NtcGhleCh2YWx1ZS5nZXQoKSwgPT0sIGpzUC5nZXQoKSk7CiAjaWYgUExBVEZPUk0o
R1RLKQogICAgICAgICB2YWx1ZSA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2ludm9rZV9t
ZXRob2QoanNEb2N1bWVudC5nZXQoKSwgImdldEVsZW1lbnRCeUlkIiwgR19UWVBFX1NUUklORywg
InBhcmFncmFwaCIsIEdfVFlQRV9OT05FKSk7Ci0gICAgICAgIGdfYXNzZXJ0KHZhbHVlLmdldCgp
ID09IGpzUC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGhleCh2YWx1ZS5nZXQoKSwgPT0s
IGpzUC5nZXQoKSk7CiAjZW5kaWYKIAogICAgICAgICB2YWx1ZSA9IGFkb3B0R1JlZihqc2NfdmFs
dWVfb2JqZWN0X2dldF9wcm9wZXJ0eShqc1AuZ2V0KCksICJpbm5lclRleHQiKSk7Ci0gICAgICAg
IGdfYXNzZXJ0KEpTQ19JU19WQUxVRSh2YWx1ZS5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90
cnVlKEpTQ19JU19WQUxVRSh2YWx1ZS5nZXQoKSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHZhbHVlLmdldCgpKSk7Ci0gICAgICAgIGdf
YXNzZXJ0KGpzY192YWx1ZV9pc19zdHJpbmcodmFsdWUuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3Nl
cnRfdHJ1ZShqc2NfdmFsdWVfaXNfc3RyaW5nKHZhbHVlLmdldCgpKSk7CiAgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4gc3RyVmFsdWUoanNjX3ZhbHVlX3RvX3N0cmluZyh2YWx1ZS5nZXQoKSkpOwog
ICAgICAgICBnX2Fzc2VydF9jbXBzdHIoc3RyVmFsdWUuZ2V0KCksID09LCAiVGhpcyBpcyBhIHRl
c3QiKTsKIAogICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiBqc0ltYWdlID0gYWRvcHRHUmVmKGpz
Y192YWx1ZV9vYmplY3RfaW52b2tlX21ldGhvZChqc0RvY3VtZW50LmdldCgpLCAiZ2V0RWxlbWVu
dEJ5SWQiLCBHX1RZUEVfU1RSSU5HLCAiaW1hZ2UiLCBHX1RZUEVfTk9ORSkpOwotICAgICAgICBn
X2Fzc2VydChKU0NfSVNfVkFMVUUoanNJbWFnZS5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90
cnVlKEpTQ19JU19WQUxVRShqc0ltYWdlLmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoanNJbWFnZS5nZXQoKSkpOwotICAgICAg
ICBnX2Fzc2VydChqc2NfdmFsdWVfaXNfb2JqZWN0KGpzSW1hZ2UuZ2V0KCkpKTsKKyAgICAgICAg
Z19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfb2JqZWN0KGpzSW1hZ2UuZ2V0KCkpKTsKIAogICAg
ICAgICBXZWJLaXRET01Ob2RlKiBpbWFnZSA9IHdlYmtpdF9kb21fbm9kZV9mb3JfanNfdmFsdWUo
anNJbWFnZS5nZXQoKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRUxFTUVOVChp
bWFnZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfRUxFTUVOVChpbWFn
ZSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JK
RUNUKGltYWdlKSk7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICBHX0dOVUNfQkVHSU5fSUdO
T1JFX0RFUFJFQ0FUSU9OUzsKLSAgICAgICAgZ19hc3NlcnQod2Via2l0X2RvbV9kb2N1bWVudF9n
ZXRfZWxlbWVudF9ieV9pZChkb2N1bWVudCwgImltYWdlIikgPT0gV0VCS0lUX0RPTV9FTEVNRU5U
KGltYWdlKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJraXRfZG9tX2RvY3VtZW50X2dl
dF9lbGVtZW50X2J5X2lkKGRvY3VtZW50LCAiaW1hZ2UiKSwgPT0sIFdFQktJVF9ET01fRUxFTUVO
VChpbWFnZSkpOwogICAgICAgICBHX0dOVUNfRU5EX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RBdXRoZW50aWNhdGlvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcAppbmRleCA1NmRlZGY3MDQyZmUzZGExMzFhMGM3YTJj
YjNhMmRiNDQ4Y2M4MjhiLi5kNmNjMmZiMjQ3ZTU2MjA2Njk3NzYxMGIyNTY3OWI3ZWQxZGNjOGJh
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1
dGhlbnRpY2F0aW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcApAQCAtMTAzLDkgKzEwMyw5IEBAIHN0YXRpYyB2b2lk
IHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25SZXF1ZXN0KEF1dGhlbnRpY2F0aW9uVGVzdCogdGVz
dCwgZ2NvbnN0cG9pCiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9y
ZXF1ZXN0X2dldF9ob3N0KHJlcXVlc3QpLCA9PSwgc291cF91cmlfZ2V0X2hvc3Qoa1NlcnZlci0+
YmFzZVVSSSgpKSk7CiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfYXV0aGVudGljYXRpb25f
cmVxdWVzdF9nZXRfcG9ydChyZXF1ZXN0KSwgPT0sIHNvdXBfdXJpX2dldF9wb3J0KGtTZXJ2ZXIt
PmJhc2VVUkkoKSkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfYXV0aGVudGljYXRpb25f
cmVxdWVzdF9nZXRfcmVhbG0ocmVxdWVzdCksID09LCAibXkgcmVhbG0iKTsKLSAgICBnX2Fzc2Vy
dCh3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9nZXRfc2NoZW1lKHJlcXVlc3QpID09IFdF
QktJVF9BVVRIRU5USUNBVElPTl9TQ0hFTUVfSFRUUF9CQVNJQyk7Ci0gICAgZ19hc3NlcnQoIXdl
YmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2lzX2Zvcl9wcm94eShyZXF1ZXN0KSk7Ci0gICAg
Z19hc3NlcnQoIXdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2lzX3JldHJ5KHJlcXVlc3Qp
KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0
X3NjaGVtZShyZXF1ZXN0KSwgPT0sIFdFQktJVF9BVVRIRU5USUNBVElPTl9TQ0hFTUVfSFRUUF9C
QVNJQyk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3Rf
aXNfZm9yX3Byb3h5KHJlcXVlc3QpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfYXV0aGVu
dGljYXRpb25fcmVxdWVzdF9pc19yZXRyeShyZXF1ZXN0KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRl
c3RXZWJWaWV3QXV0aGVudGljYXRpb25DYW5jZWwoQXV0aGVudGljYXRpb25UZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
QXV0aGVudGljYXRpb25Mb2FkQ2FuY2VsbGVkKEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2Nv
CiAgICAgd2Via2l0X3dlYl92aWV3X3N0b3BfbG9hZGluZyh0ZXN0LT5tX3dlYlZpZXcpOwogICAg
IC8vIEV4cGVjdCBlbXB0eSBwYWdlLgogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OwotICAgIGdfYXNzZXJ0KHRlc3QtPmF1dGhlbnRpY2F0aW9uQ2FuY2VsbGVkUmVjZWl2ZWQpOwor
ICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+YXV0aGVudGljYXRpb25DYW5jZWxsZWRSZWNlaXZlZCk7
CiAKICAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzLnNpemUoKSwgPT0sIDMp
OwogICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMF0sID09LCBMb2FkVHJh
Y2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRTdGFydGVkKTsKQEAgLTE0NywxMyArMTQ3LDEzIEBA
IHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25GYWlsdXJlKEF1dGhlbnRpY2F0
aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAgICAgLy8gVGVzdCBhdXRoZW50aWNhdGlvbiBmYWls
dXJlcy4KICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9hdXRoLXRl
c3QuaHRtbCIpLmRhdGEoKSk7CiAgICAgV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KiByZXF1
ZXN0ID0gdGVzdC0+d2FpdEZvckF1dGhlbnRpY2F0aW9uUmVxdWVzdCgpOwotICAgIGdfYXNzZXJ0
KCF3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9pc19yZXRyeShyZXF1ZXN0KSk7CisgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfaXNfcmV0cnkocmVx
dWVzdCkpOwogICAgIFdlYktpdENyZWRlbnRpYWwqIGNyZWRlbnRpYWwgPSB3ZWJraXRfY3JlZGVu
dGlhbF9uZXcoYXV0aFRlc3RVc2VybmFtZSwgIndyb25ncGFzc3dvcmQiLCBXRUJLSVRfQ1JFREVO
VElBTF9QRVJTSVNURU5DRV9OT05FKTsKICAgICB3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVz
dF9hdXRoZW50aWNhdGUocmVxdWVzdCwgY3JlZGVudGlhbCk7CiAgICAgd2Via2l0X2NyZWRlbnRp
YWxfZnJlZShjcmVkZW50aWFsKTsKICAgICAvLyBFeHBlY3QgYSBzZWNvbmQgYXV0aGVudGljYXRp
b24gcmVxdWVzdC4KICAgICByZXF1ZXN0ID0gdGVzdC0+d2FpdEZvckF1dGhlbnRpY2F0aW9uUmVx
dWVzdCgpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2lzX3Jl
dHJ5KHJlcXVlc3QpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9y
ZXF1ZXN0X2lzX3JldHJ5KHJlcXVlc3QpKTsKICAgICAvLyBUZXN0IHNlY29uZCBmYWlsdXJlLgog
ICAgIGNyZWRlbnRpYWwgPSB3ZWJraXRfY3JlZGVudGlhbF9uZXcoYXV0aFRlc3RVc2VybmFtZSwg
Indyb25ncGFzc3dvcmQyIiwgV0VCS0lUX0NSRURFTlRJQUxfUEVSU0lTVEVOQ0VfTk9ORSk7CiAg
ICAgd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfYXV0aGVudGljYXRlKHJlcXVlc3QsIGNy
ZWRlbnRpYWwpOwpAQCAtMTk0LDggKzE5NCw4IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0
aGVudGljYXRpb25TdG9yYWdlKEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAg
ICAgR19HTlVDX0VORF9JR05PUkVfREVQUkVDQVRJT05TOwogICAgIHRlc3QtPmxvYWRVUkkoa1Nl
cnZlci0+Z2V0VVJJRm9yUGF0aCgiL2F1dGgtdGVzdC5odG1sIikuZGF0YSgpKTsKICAgICBXZWJL
aXRBdXRoZW50aWNhdGlvblJlcXVlc3QqIHJlcXVlc3QgPSB0ZXN0LT53YWl0Rm9yQXV0aGVudGlj
YXRpb25SZXF1ZXN0KCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1
ZXN0X2dldF9wcm9wb3NlZF9jcmVkZW50aWFsKHJlcXVlc3QpKTsKLSAgICBnX2Fzc2VydCghd2Vi
a2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfY2FuX3NhdmVfY3JlZGVudGlhbHMocmVxdWVzdCkp
OworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3By
b3Bvc2VkX2NyZWRlbnRpYWwocmVxdWVzdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9h
dXRoZW50aWNhdGlvbl9yZXF1ZXN0X2Nhbl9zYXZlX2NyZWRlbnRpYWxzKHJlcXVlc3QpKTsKIAog
ICAgIC8vIElmIFdlYktpdCBoYXMgYmVlbiBjb21waWxlZCB3aXRoIGxpYnNlY3JldCwgYW5kIHBy
aXZhdGUgYnJvd3NpbmcgaXMgZGlzYWJsZWQKICAgICAvLyB0aGVuIGNoZWNrIHRoYXQgY3JlZGVu
dGlhbHMgY2FuIGJlIHNhdmVkLgpAQCAtMjA1LDggKzIwNSw4IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3QXV0aGVudGljYXRpb25TdG9yYWdlKEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pCiAgICAgR19HTlVDX0VORF9JR05PUkVfREVQUkVDQVRJT05TOwogICAgIHRlc3QtPmxv
YWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2F1dGgtdGVzdC5odG1sIikuZGF0YSgpKTsK
ICAgICByZXF1ZXN0ID0gdGVzdC0+d2FpdEZvckF1dGhlbnRpY2F0aW9uUmVxdWVzdCgpOwotICAg
IGdfYXNzZXJ0KCF3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9nZXRfcHJvcG9zZWRfY3Jl
ZGVudGlhbChyZXF1ZXN0KSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X2F1dGhlbnRpY2F0aW9uX3Jl
cXVlc3RfY2FuX3NhdmVfY3JlZGVudGlhbHMocmVxdWVzdCkpOworICAgIGdfYXNzZXJ0X251bGwo
d2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3Byb3Bvc2VkX2NyZWRlbnRpYWwocmVx
dWVzdCkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3Rf
Y2FuX3NhdmVfY3JlZGVudGlhbHMocmVxdWVzdCkpOwogI2VuZGlmCiB9CiAjZW5kaWYKQEAgLTM1
Nyw3ICszNTcsNyBAQCBwdWJsaWM6CiAgICAgUHJveHlBdXRoZW50aWNhdGlvblRlc3QoKQogICAg
IHsKICAgICAgICAgbV9wcm94eVNlcnZlci5ydW4oc2VydmVyQ2FsbGJhY2spOwotICAgICAgICBn
X2Fzc2VydChtX3Byb3h5U2VydmVyLmJhc2VVUkkoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51
bGwobV9wcm94eVNlcnZlci5iYXNlVVJJKCkpOwogICAgICAgICBnUHJveHlTZXJ2ZXJQb3J0ID0g
c291cF91cmlfZ2V0X3BvcnQobV9wcm94eVNlcnZlci5iYXNlVVJJKCkpOwogICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IHByb3h5VVJJKHNvdXBfdXJpX3RvX3N0cmluZyhtX3Byb3h5U2VydmVyLmJh
c2VVUkkoKSwgRkFMU0UpKTsKICAgICAgICAgV2ViS2l0TmV0d29ya1Byb3h5U2V0dGluZ3MqIHNl
dHRpbmdzID0gd2Via2l0X25ldHdvcmtfcHJveHlfc2V0dGluZ3NfbmV3KHByb3h5VVJJLmdldCgp
LCBudWxscHRyKTsKQEAgLTM4Nyw5ICszODcsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1
dGhlbnRpY2F0aW9uUHJveHkoUHJveHlBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25zdAog
ICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9nZXRfaG9z
dChyZXF1ZXN0KSwgPT0sIHNvdXBfdXJpX2dldF9ob3N0KGtTZXJ2ZXItPmJhc2VVUkkoKSkpOwog
ICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3Bv
cnQocmVxdWVzdCksID09LCBzb3VwX3VyaV9nZXRfcG9ydChrU2VydmVyLT5iYXNlVVJJKCkpKTsK
ICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3Jl
YWxtKHJlcXVlc3QpLCA9PSwgIlByb3h5IHJlYWxtIik7Ci0gICAgZ19hc3NlcnQod2Via2l0X2F1
dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3NjaGVtZShyZXF1ZXN0KSA9PSBXRUJLSVRfQVVUSEVO
VElDQVRJT05fU0NIRU1FX0hUVFBfQkFTSUMpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9hdXRoZW50
aWNhdGlvbl9yZXF1ZXN0X2lzX2Zvcl9wcm94eShyZXF1ZXN0KSk7Ci0gICAgZ19hc3NlcnQoIXdl
YmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2lzX3JldHJ5KHJlcXVlc3QpKTsKKyAgICBnX2Fz
c2VydF9jbXBpbnQod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3NjaGVtZShyZXF1
ZXN0KSwgPT0sIFdFQktJVF9BVVRIRU5USUNBVElPTl9TQ0hFTUVfSFRUUF9CQVNJQyk7CisgICAg
Z19hc3NlcnRfdHJ1ZSh3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9pc19mb3JfcHJveHko
cmVxdWVzdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1
ZXN0X2lzX3JldHJ5KHJlcXVlc3QpKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRo
ZW50aWNhdGlvblByb3h5SFRUUFMoUHJveHlBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCkBAIC00MDMsOSArNDAzLDkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRo
ZW50aWNhdGlvblByb3h5SFRUUFMoUHJveHlBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGcKICAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X2hvc3Qo
cmVxdWVzdCksID09LCBzb3VwX3VyaV9nZXRfaG9zdChodHRwc1NlcnZlci0+YmFzZVVSSSgpKSk7
CiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9nZXRf
cG9ydChyZXF1ZXN0KSwgPT0sIHNvdXBfdXJpX2dldF9wb3J0KGh0dHBzU2VydmVyLT5iYXNlVVJJ
KCkpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3Rf
Z2V0X3JlYWxtKHJlcXVlc3QpLCA9PSwgIlByb3h5IHJlYWxtIik7Ci0gICAgZ19hc3NlcnQod2Vi
a2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3NjaGVtZShyZXF1ZXN0KSA9PSBXRUJLSVRf
QVVUSEVOVElDQVRJT05fU0NIRU1FX0hUVFBfQkFTSUMpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9h
dXRoZW50aWNhdGlvbl9yZXF1ZXN0X2lzX2Zvcl9wcm94eShyZXF1ZXN0KSk7Ci0gICAgZ19hc3Nl
cnQoIXdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2lzX3JldHJ5KHJlcXVlc3QpKTsKKyAg
ICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3NjaGVt
ZShyZXF1ZXN0KSwgPT0sIFdFQktJVF9BVVRIRU5USUNBVElPTl9TQ0hFTUVfSFRUUF9CQVNJQyk7
CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9pc19mb3Jf
cHJveHkocmVxdWVzdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9hdXRoZW50aWNhdGlv
bl9yZXF1ZXN0X2lzX3JldHJ5KHJlcXVlc3QpKTsKIH0KIAogdm9pZCBiZWZvcmVBbGwoKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dEF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCAyNTYyY2I0OGRmYWUxOGY1YzkwMjQwZGEzN2Zl
YzE2NDc2YjIzMWUwLi44OWI5ODM1ODBkZjFhODFmMmY4NWExMGU5M2ExM2RjNDI1MTAxM2RjIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dG9t
YXRpb25TZXNzaW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0Q29ubmVjdGlvbihHUmVmUHRyPEdEQnVzQ29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uKQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQoR19JU19EQlVTX0NPTk5FQ1RJT04oY29u
bmVjdGlvbi5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKEdfSVNfREJVU19DT05ORUNU
SU9OKGNvbm5lY3Rpb24uZ2V0KCkpKTsKICAgICAgICAgbV9jb25uZWN0aW9uID0gV1RGTW92ZShj
b25uZWN0aW9uKTsKICAgICAgICAgcmVnaXN0ZXJEQnVzT2JqZWN0KCk7CiAgICAgICAgIGdfbWFp
bl9sb29wX3F1aXQobV9tYWluTG9vcC5nZXQoKSk7CkBAIC0xMzUsOCArMTM1LDggQEAgcHVibGlj
OgogCiAgICAgdm9pZCByZWNlaXZlZE1lc3NhZ2UoZ3VpbnQ2NCBjb25uZWN0aW9uSUQsIGd1aW50
NjQgdGFyZ2V0SUQsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiAgICAgewotICAgICAgICBnX2Fzc2Vy
dChjb25uZWN0aW9uSUQgPT0gbV9jb25uZWN0aW9uSUQpOwotICAgICAgICBnX2Fzc2VydCh0YXJn
ZXRJRCA9PSBtX3RhcmdldC5pZCk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoY29ubmVjdGlv
bklELCA9PSwgbV9jb25uZWN0aW9uSUQpOworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KHRhcmdl
dElELCA9PSwgbV90YXJnZXQuaWQpOwogICAgICAgICBtX21lc3NhZ2UgPSBtZXNzYWdlOwogICAg
ICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3AuZ2V0KCkpOwogICAgIH0KQEAgLTE3MCwx
OSArMTcwLDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fc2Vzc2lvbiA9IHNlc3Npb247
CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qo
bV9zZXNzaW9uKSk7Ci0gICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9u
X2dldF9hcHBsaWNhdGlvbl9pbmZvKHNlc3Npb24pKTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbCh3
ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9hcHBsaWNhdGlvbl9pbmZvKHNlc3Npb24pKTsK
ICAgICAgICAgV2ViS2l0QXBwbGljYXRpb25JbmZvKiBpbmZvID0gd2Via2l0X2FwcGxpY2F0aW9u
X2luZm9fbmV3KCk7CiAgICAgICAgIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3NldF9uYW1lKGlu
Zm8sICJBdXRvbWF0aW9uVGVzdEJyb3dzZXIiKTsKICAgICAgICAgd2Via2l0X2FwcGxpY2F0aW9u
X2luZm9fc2V0X3ZlcnNpb24oaW5mbywgV0VCS0lUX01BSk9SX1ZFUlNJT04sIFdFQktJVF9NSU5P
Ul9WRVJTSU9OLCBXRUJLSVRfTUlDUk9fVkVSU0lPTik7CiAgICAgICAgIHdlYmtpdF9hdXRvbWF0
aW9uX3Nlc3Npb25fc2V0X2FwcGxpY2F0aW9uX2luZm8oc2Vzc2lvbiwgaW5mbyk7CiAgICAgICAg
IHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3VucmVmKGluZm8pOwotICAgICAgICBnX2Fzc2VydCh3
ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9hcHBsaWNhdGlvbl9pbmZvKHNlc3Npb24pID09
IGluZm8pOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lv
bl9nZXRfYXBwbGljYXRpb25faW5mbyhzZXNzaW9uKSwgPT0sIGluZm8pOwogICAgIH0KIAogICAg
IHN0YXRpYyB2b2lkIGF1dG9tYXRpb25TdGFydGVkQ2FsbGJhY2soV2ViS2l0V2ViQ29udGV4dCog
d2ViQ29udGV4dCwgV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24sIEF1dG9tYXRpb25U
ZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQod2ViQ29udGV4dCA9PSB0ZXN0LT5t
X3dlYkNvbnRleHQuZ2V0KCkpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfSVNfQVVUT01BVElP
Tl9TRVNTSU9OKHNlc3Npb24pKTsKKyAgICAgICAgZ19hc3NlcnRfY21waGV4KHdlYkNvbnRleHQs
ID09LCB0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdF
QktJVF9JU19BVVRPTUFUSU9OX1NFU1NJT04oc2Vzc2lvbikpOwogICAgICAgICB0ZXN0LT5hdXRv
bWF0aW9uU3RhcnRlZChzZXNzaW9uKTsKICAgICB9CiAKQEAgLTIwOCw3ICsyMDgsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgICAgIEdSZWZQ
dHI8R1ZhcmlhbnQ+IGNhcGFiaWxpdGllcyA9IGFkb3B0R1JlZihnX2RidXNfY29ubmVjdGlvbl9j
YWxsX2ZpbmlzaChHX0RCVVNfQ09OTkVDVElPTihzb3VyY2UpLCByZXN1bHQsIG51bGxwdHIpKTsK
LSAgICAgICAgICAgICAgICBnX2Fzc2VydChjYXBhYmlsaXRpZXMuZ2V0KCkpOworICAgICAgICAg
ICAgICAgIGdfYXNzZXJ0X25vbm51bGwoY2FwYWJpbGl0aWVzLmdldCgpKTsKICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBicm93c2VyTmFtZTsKICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBicm93c2VyVmVyc2lvbjsKICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfZ2V0KGNhcGFiaWxp
dGllcy5nZXQoKSwgIigmcyZzKSIsICZicm93c2VyTmFtZSwgJmJyb3dzZXJWZXJzaW9uKTsKQEAg
LTIzNCwxMSArMjM0LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmIChtX3RhcmdldC5p
c1BhaXJlZCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZ19hc3NlcnQobV90YXJnZXQu
aWQpOworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KG1fdGFyZ2V0LmlkLCAhPSwgMCk7CiAgICAg
ICAgIGdfZGJ1c19jb25uZWN0aW9uX2NhbGwobV9jb25uZWN0aW9uLmdldCgpLCBudWxscHRyLCAi
L29yZy93ZWJraXQvSW5zcGVjdG9yIiwgIm9yZy53ZWJraXQuSW5zcGVjdG9yIiwKICAgICAgICAg
ICAgICJTZXR1cCIsIGdfdmFyaWFudF9uZXcoIih0dCkiLCBtX2Nvbm5lY3Rpb25JRCwgbV90YXJn
ZXQuaWQpLCBudWxscHRyLCBHX0RCVVNfQ0FMTF9GTEFHU19OT19BVVRPX1NUQVJULCAtMSwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5M
b29wLmdldCgpKTsKLSAgICAgICAgZ19hc3NlcnQobV90YXJnZXQuaXNQYWlyZWQpOworICAgICAg
ICBnX2Fzc2VydF90cnVlKG1fdGFyZ2V0LmlzUGFpcmVkKTsKICAgICB9CiAKICAgICBib29sIGNy
ZWF0ZVRvcExldmVsQnJvd3NpbmdDb250ZXh0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCkBAIC0y
NTEsOCArMjUxLDggQEAgcHVibGljOgogICAgICAgICBzZW5kQ29tbWFuZFRvQmFja2VuZCgiY3Jl
YXRlQnJvd3NpbmdDb250ZXh0Iik7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29w
LmdldCgpKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fc2Vzc2lvbiwg
c2lnbmFsSUQpOwotICAgICAgICBnX2Fzc2VydChtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQpOwot
ICAgICAgICBnX2Fzc2VydCghbV9tZXNzYWdlLmlzTnVsbCgpKTsKKyAgICAgICAgZ19hc3NlcnRf
dHJ1ZShtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSht
X21lc3NhZ2UuaXNOdWxsKCkpOwogICAgICAgICBtX3dlYlZpZXdGb3JBdXRvbWF0aW9uID0gbnVs
bHB0cjsKIAogICAgICAgICBpZiAoc3Ryc3RyKG1fbWVzc2FnZS5kYXRhKCksICJUaGUgcmVtb3Rl
IHNlc3Npb24gZmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyBicm93c2luZyBjb250ZXh0IikpCkBAIC0y
NzcsMzMgKzI3NywzMyBAQCBzdGF0aWMgdm9pZCB0ZXN0QXV0b21hdGlvblNlc3Npb25SZXF1ZXN0
U2Vzc2lvbihBdXRvbWF0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pbgogewogICAgIFN0cmluZyBz
ZXNzaW9uSUQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CiAgICAgLy8gV2ViS2l0QXV0
b21hdGlvblNlc3Npb246OmF1dG9tYXRpb24tc3RhcnRlZCBpcyBuZXZlciBlbWl0dGVkIGlmIGF1
dG9tYXRpb24gaXMgbm90IGVuYWJsZWQuCi0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfY29udGV4
dF9pc19hdXRvbWF0aW9uX2FsbG93ZWQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7CisgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRpb25fYWxsb3dlZCh0
ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkpKTsKICAgICBhdXRvKiBzZXNzaW9uID0gdGVzdC0+cmVx
dWVzdFNlc3Npb24oc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCkpOwotICAgIGdfYXNzZXJ0KCFzZXNz
aW9uKTsKKyAgICBnX2Fzc2VydF9udWxsKHNlc3Npb24pOwogCiAgICAgd2Via2l0X3dlYl9jb250
ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpLCBUUlVF
KTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfaXNfYXV0b21hdGlvbl9hbGxvd2Vk
KHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dl
Yl9jb250ZXh0X2lzX2F1dG9tYXRpb25fYWxsb3dlZCh0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkp
KTsKIAogICAgIC8vIFRoZXJlIGNhbid0IGJlIG1vcmUgdGhhbiBvbmUgY29udGV4dCB3aXRoIGF1
dG9tYXRpb24gZW5hYmxlZAogICAgIEdSZWZQdHI8V2ViS2l0V2ViQ29udGV4dD4gb3RoZXJDb250
ZXh0ID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJfY29udGV4dF9uZXcoKSk7CiAgICAgdGVzdC0+cmVt
b3ZlTG9nRmF0YWxGbGFnKEdfTE9HX0xFVkVMX1dBUk5JTkcpOwogICAgIHdlYmtpdF93ZWJfY29u
dGV4dF9zZXRfYXV0b21hdGlvbl9hbGxvd2VkKG90aGVyQ29udGV4dC5nZXQoKSwgVFJVRSk7CiAg
ICAgdGVzdC0+YWRkTG9nRmF0YWxGbGFnKEdfTE9HX0xFVkVMX1dBUk5JTkcpOwotICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfd2ViX2NvbnRleHRfaXNfYXV0b21hdGlvbl9hbGxvd2VkKG90aGVyQ29udGV4
dC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfY29udGV4dF9pc19hdXRv
bWF0aW9uX2FsbG93ZWQob3RoZXJDb250ZXh0LmdldCgpKSk7CiAKICAgICBzZXNzaW9uID0gdGVz
dC0+cmVxdWVzdFNlc3Npb24oc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCkpOwogICAgIGdfYXNzZXJ0
X2NtcHN0cih3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9pZChzZXNzaW9uKSwgPT0sIHNl
c3Npb25JRC51dGY4KCkuZGF0YSgpKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fdGFy
Z2V0LmlkLCA+LCAwKTsKICAgICBBU1NFUlRfQ01QX0NTVFJJTkcodGVzdC0+bV90YXJnZXQubmFt
ZSwgPT0sIHNlc3Npb25JRC51dGY4KCkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3RhcmdldC5p
c1BhaXJlZCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV90YXJnZXQuaXNQYWlyZWQpOwog
CiAgICAgLy8gV2lsbCBmYWlsIHRvIGNyZWF0ZSBhIGJyb3dzaW5nIGNvbnRleHQgd2hlbiBub3Qg
Y3JlYXRpbmcgYSB3ZWIgdmlldyAob3Igbm90IGhhbmRsaW5nIHRoZSBzaWduYWwpLgotICAgIGdf
YXNzZXJ0KCF0ZXN0LT5jcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4dChudWxscHRyKSk7Cisg
ICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+Y3JlYXRlVG9wTGV2ZWxCcm93c2luZ0NvbnRleHQobnVs
bHB0cikpOwogCiAgICAgLy8gV2lsbCBhbHNvIGZhaWwgaWYgdGhlIHdlYiB2aWV3IGlzIG5vdCBj
b250cm9sbGVkIGJ5IGF1dG9tYXRpb24uCiAgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRW
aWV3KFRlc3Q6OmNyZWF0ZVdlYlZpZXcodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7Ci0gICAg
Z19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2Vi
Vmlldy5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5jcmVhdGVUb3BMZXZlbEJyb3dzaW5n
Q29udGV4dCh3ZWJWaWV3LmdldCgpKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92
aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3LmdldCgpKSk7CisgICAgZ19h
c3NlcnRfZmFsc2UodGVzdC0+Y3JlYXRlVG9wTGV2ZWxCcm93c2luZ0NvbnRleHQod2ViVmlldy5n
ZXQoKSkpOwogCiAgICAgLy8gQW5kIHdpbGwgd29yayB3aXRoIGEgcHJvcGVyIHdlYiB2aWV3Lgog
ICAgIHdlYlZpZXcgPSBUZXN0OjphZG9wdFZpZXcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dF
Ql9WSUVXLApAQCAtMzEzLDggKzMxMyw4IEBAIHN0YXRpYyB2b2lkIHRlc3RBdXRvbWF0aW9uU2Vz
c2lvblJlcXVlc3RTZXNzaW9uKEF1dG9tYXRpb25UZXN0KiB0ZXN0LCBnY29uc3Rwb2luCiAgICAg
ICAgICJ3ZWItY29udGV4dCIsIHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwKICAgICAgICAgImlz
LWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIFRSVUUsCiAgICAgICAgIG51bGxwdHIpKTsKLSAg
ICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdl
YlZpZXcuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5jcmVhdGVUb3BMZXZlbEJyb3dzaW5n
Q29udGV4dCh3ZWJWaWV3LmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3Zp
ZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcuZ2V0KCkpKTsKKyAgICBnX2Fz
c2VydF90cnVlKHRlc3QtPmNyZWF0ZVRvcExldmVsQnJvd3NpbmdDb250ZXh0KHdlYlZpZXcuZ2V0
KCkpKTsKIAogICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9hbGxvd2VkKHRl
c3QtPm1fd2ViQ29udGV4dC5nZXQoKSwgRkFMU0UpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RCYWNrRm9yd2FyZExpc3QuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RCYWNrRm9yd2FyZExpc3QuY3Bw
CmluZGV4IDAzNjNlNGQ2NTdjYjI1ZDY1MmVkMWQyODFhMWNjODdiNTQ5MjMyZmIuLmU4MjhlNzY0
OTY5ZjFlZTU1ZTVhY2RjNDJhZmVhN2U2NjhhMWQ0MTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEJhY2tGb3J3YXJkTGlzdC5j
cHAKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgY2hlY2tJdGVt
KFdlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0sIGNvbnN0IGNoYXIqIHRpdGxlLCBjb25z
dCBjaGFyKiB1cmksIGNvbnN0IGNoYXIqIG9yaWdpbmFsVVJJKQogICAgIHsKLSAgICAgICAgZ19h
c3NlcnQoaXRlbSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoaXRlbSk7CiAgICAgICAgIGdf
YXNzZXJ0X2NtcHN0cih3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9nZXRfdXJpKGl0ZW0p
LCA9PSwgdXJpKTsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9iYWNrX2ZvcndhcmRf
bGlzdF9pdGVtX2dldF90aXRsZShpdGVtKSwgPT0gLCB0aXRsZSk7CiAgICAgICAgIGdfYXNzZXJ0
X2NtcHN0cih3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9nZXRfb3JpZ2luYWxfdXJpKGl0
ZW0pLCA9PSwgb3JpZ2luYWxVUkkpOwpAQCAtNzQsMjEgKzc0LDIxIEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyB2b2lkIGNoZWNrSXRlbUluZGV4KFdlYktpdEJhY2tGb3J3YXJkTGlzdCogbGlzdCkK
ICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfbnRo
X2l0ZW0obGlzdCwgLTEpID09IHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfYmFja19pdGVt
KGxpc3QpKTsKLSAgICAgICAgZ19hc3NlcnQod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9u
dGhfaXRlbShsaXN0LCAwKSA9PSB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2N1cnJlbnRf
aXRlbShsaXN0KSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9n
ZXRfbnRoX2l0ZW0obGlzdCwgMSkgPT0gd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3
YXJkX2l0ZW0obGlzdCkpOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X2JhY2tfZm9y
d2FyZF9saXN0X2dldF9udGhfaXRlbShsaXN0LCAtMSksID09LCB3ZWJraXRfYmFja19mb3J3YXJk
X2xpc3RfZ2V0X2JhY2tfaXRlbShsaXN0KSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJr
aXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X250aF9pdGVtKGxpc3QsIDApLCA9PSwgd2Via2l0X2Jh
Y2tfZm9yd2FyZF9saXN0X2dldF9jdXJyZW50X2l0ZW0obGlzdCkpOworICAgICAgICBnX2Fzc2Vy
dF9jbXBoZXgod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9udGhfaXRlbShsaXN0LCAxKSwg
PT0sIHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfZm9yd2FyZF9pdGVtKGxpc3QpKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgdm9pZCBjaGVja0xpc3QoV2ViS2l0QmFja0ZvcndhcmRMaXN0KiBs
aXN0LCB1bnNpZ25lZCB0eXBlLCBXZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtKiogaXRlbXMsIHVu
c2lnbmVkIG5JdGVtcykKICAgICB7CiAgICAgICAgIEdMaXN0KiBsaXN0SXRlbXMgPSB0eXBlID09
IEJhY2tGb3J3YXJkTGlzdFRlc3Q6OkJhY2t3YXJkID8gd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0
X2dldF9iYWNrX2xpc3QobGlzdCkgOgogICAgICAgICAgICAgd2Via2l0X2JhY2tfZm9yd2FyZF9s
aXN0X2dldF9mb3J3YXJkX2xpc3QobGlzdCk7Ci0gICAgICAgIGdfYXNzZXJ0KGxpc3RJdGVtcyk7
CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobGlzdEl0ZW1zKTsKIAogICAgICAgICB1bnNpZ25l
ZCBpID0gMDsKICAgICAgICAgZm9yIChHTGlzdCogbGlzdEl0ZW0gPSBsaXN0SXRlbXM7IGxpc3RJ
dGVtOyBsaXN0SXRlbSA9IGdfbGlzdF9uZXh0KGxpc3RJdGVtKSwgaSsrKSB7CiAgICAgICAgICAg
ICBnX2Fzc2VydF9jbXB1aW50KGksIDwsIG5JdGVtcyk7Ci0gICAgICAgICAgICBnX2Fzc2VydChs
aXN0SXRlbS0+ZGF0YSA9PSBpdGVtc1tpXSk7CisgICAgICAgICAgICBnX2Fzc2VydF9jbXBoZXgo
bGlzdEl0ZW0tPmRhdGEsID09LCBpdGVtc1tpXSk7CiAgICAgICAgIH0KICAgICAgICAgZ19saXN0
X2ZyZWUobGlzdEl0ZW1zKTsKICAgICB9CkBAIC05OCwyMSArOTgsMjEgQEAgcHVibGljOgogICAg
ICAgICB0ZXN0LT5tX2hhc0NoYW5nZWQgPSB0cnVlOwogCiAgICAgICAgIGlmICh0ZXN0LT5tX2No
YW5nZWRGbGFncyAmIEJhY2tGb3J3YXJkTGlzdFRlc3Q6OkFkZGVkSXRlbSkgewotICAgICAgICAg
ICAgZ19hc3NlcnQoV0VCS0lUX0lTX0JBQ0tfRk9SV0FSRF9MSVNUX0lURU0oYWRkZWRJdGVtKSk7
CisgICAgICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19CQUNLX0ZPUldBUkRfTElTVF9J
VEVNKGFkZGVkSXRlbSkpOwogICAgICAgICAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVk
V2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChhZGRlZEl0ZW0pKTsKICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBnX2Fzc2VydCghYWRkZWRJdGVtKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X251
bGwoYWRkZWRJdGVtKTsKIAogICAgICAgICBpZiAodGVzdC0+bV9jaGFuZ2VkRmxhZ3MgJiBCYWNr
Rm9yd2FyZExpc3RUZXN0OjpSZW1vdmVkSXRlbXMpIHsKLSAgICAgICAgICAgIGdfYXNzZXJ0KHJl
bW92ZWRJdGVtcyk7CisgICAgICAgICAgICBnX2Fzc2VydF9ub25udWxsKHJlbW92ZWRJdGVtcyk7
CiAgICAgICAgICAgICBmb3IgKEdMaXN0KiBpdGVyID0gcmVtb3ZlZEl0ZW1zOyBpdGVyOyBpdGVy
ID0gaXRlci0+bmV4dCkgewotICAgICAgICAgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19CQUNL
X0ZPUldBUkRfTElTVF9JVEVNKGl0ZXItPmRhdGEpKTsKKyAgICAgICAgICAgICAgICBnX2Fzc2Vy
dF90cnVlKFdFQktJVF9JU19CQUNLX0ZPUldBUkRfTElTVF9JVEVNKGl0ZXItPmRhdGEpKTsKICAg
ICAgICAgICAgICAgICBpZiAodGVzdC0+bV9leHBlY3RlZFJlbW92ZWRJdGVtcykKLSAgICAgICAg
ICAgICAgICAgICAgZ19hc3NlcnQoZ19saXN0X2ZpbmQodGVzdC0+bV9leHBlY3RlZFJlbW92ZWRJ
dGVtcywgaXRlci0+ZGF0YSkpOworICAgICAgICAgICAgICAgICAgICBnX2Fzc2VydF9ub25udWxs
KGdfbGlzdF9maW5kKHRlc3QtPm1fZXhwZWN0ZWRSZW1vdmVkSXRlbXMsIGl0ZXItPmRhdGEpKTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGdfYXNzZXJ0KCFy
ZW1vdmVkSXRlbXMpOworICAgICAgICAgICAgZ19hc3NlcnRfbnVsbChyZW1vdmVkSXRlbXMpOwog
ICAgIH0KIAogICAgIEJhY2tGb3J3YXJkTGlzdFRlc3QoKQpAQCAtMTM0LDcgKzEzNCw3IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIG1faGFzQ2hhbmdlZCA9IGZhbHNlOwogICAgICAgICBXZWJW
aWV3VGVzdDo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgICAgIGdfYXNzZXJ0KG1faGFz
Q2hhbmdlZCk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUobV9oYXNDaGFuZ2VkKTsKICAgICB9CiAK
ICAgICB2b2lkIHdhaXRVbnRpbExvYWRGaW5pc2hlZEFuZENoZWNrUmVtb3ZlZEl0ZW1zKEdMaXN0
KiByZW1vdmVkSXRlbXMpCkBAIC0xNTQsNjYgKzE1NCw2NiBAQCBzdGF0aWMgdm9pZCB0ZXN0QmFj
a0ZvcndhcmRMaXN0TmF2aWdhdGlvbihCYWNrRm9yd2FyZExpc3RUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludAogewogICAgIFdlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW1zWzFdOwogCi0gICAg
Z19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19jYW5fZ29fYmFjayh0ZXN0LT5tX3dlYlZpZXcpKTsK
LSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJkKHRlc3QtPm1fd2Vi
VmlldykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19jYW5fZ29fYmFjayh0
ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfY2Fu
X2dvX2ZvcndhcmQodGVzdC0+bV93ZWJWaWV3KSk7CiAKICAgICBnX2Fzc2VydF9jbXB1aW50KHdl
YmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfbGVuZ3RoKHRlc3QtPm1fbGlzdCksID09LCAwKTsK
LSAgICBnX2Fzc2VydCghd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9jdXJyZW50X2l0ZW0o
dGVzdC0+bV9saXN0KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9n
ZXRfYmFja19pdGVtKHRlc3QtPm1fbGlzdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfYmFja19m
b3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKKyAgICBnX2Fzc2Vy
dF9udWxsKHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfY3VycmVudF9pdGVtKHRlc3QtPm1f
bGlzdCkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9i
YWNrX2l0ZW0odGVzdC0+bV9saXN0KSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfYmFja19m
b3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKICAgICBCYWNrRm9y
d2FyZExpc3RUZXN0OjpjaGVja0l0ZW1JbmRleCh0ZXN0LT5tX2xpc3QpOwotICAgIGdfYXNzZXJ0
KCF3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfbGlzdCh0ZXN0LT5tX2xpc3QpKTsK
LSAgICBnX2Fzc2VydCghd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3YXJkX2xpc3Qo
dGVzdC0+bV9saXN0KSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfYmFja19mb3J3YXJkX2xp
c3RfZ2V0X2JhY2tfbGlzdCh0ZXN0LT5tX2xpc3QpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtp
dF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfZm9yd2FyZF9saXN0KHRlc3QtPm1fbGlzdCkpOwogCiAg
ICAgQ1N0cmluZyB1cmlQYWdlMSA9IGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9QYWdlMSIpOwog
ICAgIHRlc3QtPm1fY2hhbmdlZEZsYWdzID0gQmFja0ZvcndhcmRMaXN0VGVzdDo6Q3VycmVudEl0
ZW0gfCBCYWNrRm9yd2FyZExpc3RUZXN0OjpBZGRlZEl0ZW07CiAgICAgdGVzdC0+bG9hZFVSSSh1
cmlQYWdlMS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCi0g
ICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19jYW5fZ29fYmFjayh0ZXN0LT5tX3dlYlZpZXcp
KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJkKHRlc3QtPm1f
d2ViVmlldykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19jYW5fZ29fYmFj
ayh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdf
Y2FuX2dvX2ZvcndhcmQodGVzdC0+bV93ZWJWaWV3KSk7CiAKICAgICBnX2Fzc2VydF9jbXB1aW50
KHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfbGVuZ3RoKHRlc3QtPm1fbGlzdCksID09LCAx
KTsKICAgICBXZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtUGFnZTEgPSB3ZWJraXRfYmFj
a19mb3J3YXJkX2xpc3RfZ2V0X2N1cnJlbnRfaXRlbSh0ZXN0LT5tX2xpc3QpOwogICAgIEJhY2tG
b3J3YXJkTGlzdFRlc3Q6OmNoZWNrSXRlbShpdGVtUGFnZTEsICJQYWdlMSIsIHVyaVBhZ2UxLmRh
dGEoKSwgdXJpUGFnZTEuZGF0YSgpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2JhY2tfZm9yd2Fy
ZF9saXN0X2dldF9iYWNrX2l0ZW0odGVzdC0+bV9saXN0KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtp
dF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfZm9yd2FyZF9pdGVtKHRlc3QtPm1fbGlzdCkpOworICAg
IGdfYXNzZXJ0X251bGwod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2l0ZW0odGVz
dC0+bV9saXN0KSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3Rf
Z2V0X2ZvcndhcmRfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKICAgICBCYWNrRm9yd2FyZExpc3RUZXN0
OjpjaGVja0l0ZW1JbmRleCh0ZXN0LT5tX2xpc3QpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfYmFj
a19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfbGlzdCh0ZXN0LT5tX2xpc3QpKTsKLSAgICBnX2Fzc2Vy
dCghd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3YXJkX2xpc3QodGVzdC0+bV9saXN0
KSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tf
bGlzdCh0ZXN0LT5tX2xpc3QpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9iYWNrX2Zvcndh
cmRfbGlzdF9nZXRfZm9yd2FyZF9saXN0KHRlc3QtPm1fbGlzdCkpOwogCiAgICAgQ1N0cmluZyB1
cmlQYWdlMiA9IGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9QYWdlMiIpOwogICAgIHRlc3QtPm1f
Y2hhbmdlZEZsYWdzID0gQmFja0ZvcndhcmRMaXN0VGVzdDo6Q3VycmVudEl0ZW0gfCBCYWNrRm9y
d2FyZExpc3RUZXN0OjpBZGRlZEl0ZW07CiAgICAgdGVzdC0+bG9hZFVSSSh1cmlQYWdlMi5kYXRh
KCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCi0gICAgZ19hc3NlcnQo
d2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrKHRlc3QtPm1fd2ViVmlldykpOwotICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2ZvcndhcmQodGVzdC0+bV93ZWJWaWV3KSk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2JhY2sodGVzdC0+bV93ZWJW
aWV3KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJk
KHRlc3QtPm1fd2ViVmlldykpOwogCiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfYmFja19m
b3J3YXJkX2xpc3RfZ2V0X2xlbmd0aCh0ZXN0LT5tX2xpc3QpLCA9PSwgMik7CiAgICAgV2ViS2l0
QmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbVBhZ2UyID0gd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0
X2dldF9jdXJyZW50X2l0ZW0odGVzdC0+bV9saXN0KTsKICAgICBCYWNrRm9yd2FyZExpc3RUZXN0
OjpjaGVja0l0ZW0oaXRlbVBhZ2UyLCAiUGFnZTIiLCB1cmlQYWdlMi5kYXRhKCksIHVyaVBhZ2Uy
LmRhdGEoKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNr
X2l0ZW0odGVzdC0+bV9saXN0KSA9PSBpdGVtUGFnZTEpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRf
YmFja19mb3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKKyAgICBn
X2Fzc2VydF9jbXBoZXgod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2l0ZW0odGVz
dC0+bV9saXN0KSwgPT0sIGl0ZW1QYWdlMSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfYmFj
a19mb3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKICAgICBCYWNr
Rm9yd2FyZExpc3RUZXN0OjpjaGVja0l0ZW1JbmRleCh0ZXN0LT5tX2xpc3QpOwogICAgIGl0ZW1z
WzBdID0gaXRlbVBhZ2UxOwogICAgIEJhY2tGb3J3YXJkTGlzdFRlc3Q6OmNoZWNrTGlzdCh0ZXN0
LT5tX2xpc3QsIEJhY2tGb3J3YXJkTGlzdFRlc3Q6OkJhY2t3YXJkLCBpdGVtcywgMSk7Ci0gICAg
Z19hc3NlcnQoIXdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfZm9yd2FyZF9saXN0KHRlc3Qt
Pm1fbGlzdCkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dl
dF9mb3J3YXJkX2xpc3QodGVzdC0+bV9saXN0KSk7CiAKICAgICB0ZXN0LT5tX2NoYW5nZWRGbGFn
cyA9IEJhY2tGb3J3YXJkTGlzdFRlc3Q6OkN1cnJlbnRJdGVtOwogICAgIHRlc3QtPmdvQmFjaygp
OwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCi0gICAgZ19hc3NlcnQoIXdl
YmtpdF93ZWJfdmlld19jYW5fZ29fYmFjayh0ZXN0LT5tX3dlYlZpZXcpKTsKLSAgICBnX2Fzc2Vy
dCh3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2ZvcndhcmQodGVzdC0+bV93ZWJWaWV3KSk7CisgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrKHRlc3QtPm1fd2ViVmll
dykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJkKHRl
c3QtPm1fd2ViVmlldykpOwogCiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfYmFja19mb3J3
YXJkX2xpc3RfZ2V0X2xlbmd0aCh0ZXN0LT5tX2xpc3QpLCA9PSwgMik7Ci0gICAgZ19hc3NlcnQo
aXRlbVBhZ2UxID09IHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfY3VycmVudF9pdGVtKHRl
c3QtPm1fbGlzdCkpOworICAgIGdfYXNzZXJ0X2NtcGhleChpdGVtUGFnZTEsID09LCB3ZWJraXRf
YmFja19mb3J3YXJkX2xpc3RfZ2V0X2N1cnJlbnRfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKICAgICBC
YWNrRm9yd2FyZExpc3RUZXN0OjpjaGVja0l0ZW0od2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dl
dF9jdXJyZW50X2l0ZW0odGVzdC0+bV9saXN0KSwgIlBhZ2UxIiwgdXJpUGFnZTEuZGF0YSgpLCB1
cmlQYWdlMS5kYXRhKCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfYmFja19mb3J3YXJkX2xpc3Rf
Z2V0X2JhY2tfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfYmFja19m
b3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRfaXRlbSh0ZXN0LT5tX2xpc3QpID09IGl0ZW1QYWdlMik7
CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfaXRl
bSh0ZXN0LT5tX2xpc3QpKTsKKyAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X2JhY2tfZm9yd2Fy
ZF9saXN0X2dldF9mb3J3YXJkX2l0ZW0odGVzdC0+bV9saXN0KSwgPT0sIGl0ZW1QYWdlMik7CiAg
ICAgQmFja0ZvcndhcmRMaXN0VGVzdDo6Y2hlY2tJdGVtSW5kZXgodGVzdC0+bV9saXN0KTsKLSAg
ICBnX2Fzc2VydCghd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2xpc3QodGVzdC0+
bV9saXN0KSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0
X2JhY2tfbGlzdCh0ZXN0LT5tX2xpc3QpKTsKICAgICBpdGVtc1swXSA9IGl0ZW1QYWdlMjsKICAg
ICBCYWNrRm9yd2FyZExpc3RUZXN0OjpjaGVja0xpc3QodGVzdC0+bV9saXN0LCBCYWNrRm9yd2Fy
ZExpc3RUZXN0OjpGb3J3YXJkLCBpdGVtcywgMSk7CiAKQEAgLTIyMSwyNCArMjIxLDI0IEBAIHN0
YXRpYyB2b2lkIHRlc3RCYWNrRm9yd2FyZExpc3ROYXZpZ2F0aW9uKEJhY2tGb3J3YXJkTGlzdFRl
c3QqIHRlc3QsIGdjb25zdHBvaW50CiAgICAgdGVzdC0+Z29Gb3J3YXJkKCk7CiAgICAgdGVzdC0+
d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdf
Y2FuX2dvX2JhY2sodGVzdC0+bV93ZWJWaWV3KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJf
dmlld19jYW5fZ29fZm9yd2FyZCh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF90cnVl
KHdlYmtpdF93ZWJfdmlld19jYW5fZ29fYmFjayh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICBnX2Fz
c2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2ZvcndhcmQodGVzdC0+bV93ZWJWaWV3
KSk7CiAKICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRf
bGVuZ3RoKHRlc3QtPm1fbGlzdCksID09LCAyKTsKLSAgICBnX2Fzc2VydChpdGVtUGFnZTIgPT0g
d2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9jdXJyZW50X2l0ZW0odGVzdC0+bV9saXN0KSk7
CisgICAgZ19hc3NlcnRfY21waGV4KGl0ZW1QYWdlMiwgPT0sIHdlYmtpdF9iYWNrX2ZvcndhcmRf
bGlzdF9nZXRfY3VycmVudF9pdGVtKHRlc3QtPm1fbGlzdCkpOwogICAgIEJhY2tGb3J3YXJkTGlz
dFRlc3Q6OmNoZWNrSXRlbSh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2N1cnJlbnRfaXRl
bSh0ZXN0LT5tX2xpc3QpLCAiUGFnZTIiLCB1cmlQYWdlMi5kYXRhKCksIHVyaVBhZ2UyLmRhdGEo
KSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2l0ZW0o
dGVzdC0+bV9saXN0KSA9PSBpdGVtUGFnZTEpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfYmFja19m
b3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKKyAgICBnX2Fzc2Vy
dF9jbXBoZXgod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2l0ZW0odGVzdC0+bV9s
aXN0KSwgPT0sIGl0ZW1QYWdlMSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfYmFja19mb3J3
YXJkX2xpc3RfZ2V0X2ZvcndhcmRfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKICAgICBCYWNrRm9yd2Fy
ZExpc3RUZXN0OjpjaGVja0l0ZW1JbmRleCh0ZXN0LT5tX2xpc3QpOwogICAgIGl0ZW1zWzBdID0g
aXRlbVBhZ2UxOwogICAgIEJhY2tGb3J3YXJkTGlzdFRlc3Q6OmNoZWNrTGlzdCh0ZXN0LT5tX2xp
c3QsIEJhY2tGb3J3YXJkTGlzdFRlc3Q6OkJhY2t3YXJkLCBpdGVtcywgMSk7Ci0gICAgZ19hc3Nl
cnQoIXdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfZm9yd2FyZF9saXN0KHRlc3QtPm1fbGlz
dCkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3
YXJkX2xpc3QodGVzdC0+bV9saXN0KSk7CiAKICAgICB0ZXN0LT5tX2NoYW5nZWRGbGFncyA9IEJh
Y2tGb3J3YXJkTGlzdFRlc3Q6OkN1cnJlbnRJdGVtOwogICAgIHRlc3QtPmdvVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtKGl0ZW1QYWdlMSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7
CiAKLSAgICBnX2Fzc2VydChpdGVtUGFnZTEgPT0gd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dl
dF9jdXJyZW50X2l0ZW0odGVzdC0+bV9saXN0KSk7CisgICAgZ19hc3NlcnRfY21waGV4KGl0ZW1Q
YWdlMSwgPT0sIHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfY3VycmVudF9pdGVtKHRlc3Qt
Pm1fbGlzdCkpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0QmFja0ZvcndhcmRMaXN0TGltaXRBbmRD
YWNoZShCYWNrRm9yd2FyZExpc3RUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMjY1LDE2
ICsyNjUsMTYgQEAgc3RhdGljIHZvaWQgdGVzdEJhY2tGb3J3YXJkTGlzdExpbWl0QW5kQ2FjaGUo
QmFja0ZvcndhcmRMaXN0VGVzdCogdGVzdCwgZ2NvbnN0cG8KIHN0YXRpYyB2b2lkIHRlc3RXZWJL
aXRXZWJWaWV3U2Vzc2lvblN0YXRlKEJhY2tGb3J3YXJkTGlzdFRlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiB7CiAgICAgV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZSogc3RhdGUgPSB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3Nlc3Npb25fc3RhdGUodGVzdC0+bV93ZWJWaWV3KTsKLSAgICBnX2Fzc2Vy
dChzdGF0ZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChzdGF0ZSk7CiAgICAgYXV0byB2aWV3ID0g
VGVzdDo6YWRvcHRWaWV3KFRlc3Q6OmNyZWF0ZVdlYlZpZXcoKSk7CiAgICAgV2ViS2l0QmFja0Zv
cndhcmRMaXN0KiBiZkxpc3QgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tfZm9yd2FyZF9saXN0
KHZpZXcuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2JhY2tfZm9yd2FyZF9s
aXN0X2dldF9sZW5ndGgoYmZMaXN0KSwgPT0sIDApOwogICAgIHdlYmtpdF93ZWJfdmlld19yZXN0
b3JlX3Nlc3Npb25fc3RhdGUodmlldy5nZXQoKSwgc3RhdGUpOwogICAgIGdfYXNzZXJ0X2NtcHVp
bnQod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9sZW5ndGgoYmZMaXN0KSwgPT0sIDApOwog
ICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJfdmlld19zZXNz
aW9uX3N0YXRlX3NlcmlhbGl6ZShzdGF0ZSkpOwotICAgIGdfYXNzZXJ0KGRhdGEpOworICAgIGdf
YXNzZXJ0X25vbm51bGwoZGF0YSk7CiAgICAgc3RhdGUgPSB3ZWJraXRfd2ViX3ZpZXdfc2Vzc2lv
bl9zdGF0ZV9uZXcoZGF0YS5nZXQoKSk7Ci0gICAgZ19hc3NlcnQoc3RhdGUpOworICAgIGdfYXNz
ZXJ0X25vbm51bGwoc3RhdGUpOwogICAgIHZpZXcgPSBUZXN0OjphZG9wdFZpZXcoVGVzdDo6Y3Jl
YXRlV2ViVmlldygpKTsKICAgICBiZkxpc3QgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tfZm9y
d2FyZF9saXN0KHZpZXcuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2JhY2tf
Zm9yd2FyZF9saXN0X2dldF9sZW5ndGgoYmZMaXN0KSwgPT0sIDApOwpAQCAtMzAyLDcgKzMwMiw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlKEJhY2tGb3J3YXJk
TGlzdFRlc3QqIHRlc3QsIGdjb25zdHBvaW50CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlz
aGVkKCk7CiAKICAgICBzdGF0ZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2Vzc2lvbl9zdGF0ZSh0
ZXN0LT5tX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KHN0YXRlKTsKKyAgICBnX2Fzc2VydF9ub25u
dWxsKHN0YXRlKTsKIAogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2JhY2tfZm9yd2FyZF9s
aXN0X2dldF9sZW5ndGgoYmZMaXN0KSwgPT0sIDApOwogICAgIHdlYmtpdF93ZWJfdmlld19yZXN0
b3JlX3Nlc3Npb25fc3RhdGUodmlldy5nZXQoKSwgc3RhdGUpOwpAQCAtMzEzLDEwICszMTMsMTAg
QEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUoQmFja0ZvcndhcmRM
aXN0VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnQKICAgICBCYWNrRm9yd2FyZExpc3RUZXN0OjpjaGVj
a0l0ZW0od2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9udGhfaXRlbShiZkxpc3QsIDEpLCAi
UGFnZTMiLCB1cmlQYWdlMy5kYXRhKCksIHVyaVBhZ2UzLmRhdGEoKSk7CiAKICAgICBkYXRhID0g
YWRvcHRHUmVmKHdlYmtpdF93ZWJfdmlld19zZXNzaW9uX3N0YXRlX3NlcmlhbGl6ZShzdGF0ZSkp
OwotICAgIGdfYXNzZXJ0KGRhdGEpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YSk7CiAgICAg
d2Via2l0X3dlYl92aWV3X3Nlc3Npb25fc3RhdGVfdW5yZWYoc3RhdGUpOwogICAgIHN0YXRlID0g
d2Via2l0X3dlYl92aWV3X3Nlc3Npb25fc3RhdGVfbmV3KGRhdGEuZ2V0KCkpOwotICAgIGdfYXNz
ZXJ0KHN0YXRlKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHN0YXRlKTsKIAogICAgIHZpZXcgPSBU
ZXN0OjphZG9wdFZpZXcoVGVzdDo6Y3JlYXRlV2ViVmlldygpKTsKICAgICBiZkxpc3QgPSB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2JhY2tfZm9yd2FyZF9saXN0KHZpZXcuZ2V0KCkpOwpAQCAtMzMxLDcg
KzMzMSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlKEJhY2tG
b3J3YXJkTGlzdFRlc3QqIHRlc3QsIGdjb25zdHBvaW50CiAKICAgICBzdGF0aWMgY29uc3QgY2hh
ciogaW52YWxpZFNlc3Npb25EYXRhID0gImludmFsaWQgc2Vzc2lvbiBkYXRhIjsKICAgICBkYXRh
ID0gYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3N0YXRpYyhpbnZhbGlkU2Vzc2lvbkRhdGEsIHN0cmxl
bihpbnZhbGlkU2Vzc2lvbkRhdGEpKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19z
ZXNzaW9uX3N0YXRlX25ldyhkYXRhLmdldCgpKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRf
d2ViX3ZpZXdfc2Vzc2lvbl9zdGF0ZV9uZXcoZGF0YS5nZXQoKSkpOwogfQogCiBzdGF0aWMgdm9p
ZCB0ZXN0V2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZVdpdGhGb3JtRGF0YShCYWNrRm9yd2FyZExp
c3RUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMzQ2LDE2ICszNDYsMTYgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGVXaXRoRm9ybURhdGEoQmFja0Zvcndh
cmRMaXN0VGVzdCogdGVzdCwKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAog
ICAgIFdlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUqIHN0YXRlID0gd2Via2l0X3dlYl92aWV3X2dl
dF9zZXNzaW9uX3N0YXRlKHRlc3QtPm1fd2ViVmlldyk7Ci0gICAgZ19hc3NlcnQoc3RhdGUpOwor
ICAgIGdfYXNzZXJ0X25vbm51bGwoc3RhdGUpOwogICAgIGF1dG8gdmlldyA9IFRlc3Q6OmFkb3B0
VmlldyhUZXN0OjpjcmVhdGVXZWJWaWV3KCkpOwogICAgIFdlYktpdEJhY2tGb3J3YXJkTGlzdCog
YmZMaXN0ID0gd2Via2l0X3dlYl92aWV3X2dldF9iYWNrX2ZvcndhcmRfbGlzdCh2aWV3LmdldCgp
KTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfbGVu
Z3RoKGJmTGlzdCksID09LCAwKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfcmVzdG9yZV9zZXNzaW9u
X3N0YXRlKHZpZXcuZ2V0KCksIHN0YXRlKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9i
YWNrX2ZvcndhcmRfbGlzdF9nZXRfbGVuZ3RoKGJmTGlzdCksID09LCAyKTsKICAgICBHUmVmUHRy
PEdCeXRlcz4gZGF0YSA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX3ZpZXdfc2Vzc2lvbl9zdGF0ZV9z
ZXJpYWxpemUoc3RhdGUpKTsKLSAgICBnX2Fzc2VydChkYXRhKTsKKyAgICBnX2Fzc2VydF9ub25u
dWxsKGRhdGEpOwogICAgIHN0YXRlID0gd2Via2l0X3dlYl92aWV3X3Nlc3Npb25fc3RhdGVfbmV3
KGRhdGEuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KHN0YXRlKTsKKyAgICBnX2Fzc2VydF9ub25udWxs
KHN0YXRlKTsKICAgICB2aWV3ID0gVGVzdDo6YWRvcHRWaWV3KFRlc3Q6OmNyZWF0ZVdlYlZpZXco
KSk7CiAgICAgYmZMaXN0ID0gd2Via2l0X3dlYl92aWV3X2dldF9iYWNrX2ZvcndhcmRfbGlzdCh2
aWV3LmdldCgpKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlz
dF9nZXRfbGVuZ3RoKGJmTGlzdCksID09LCAwKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29uc29sZU1lc3NhZ2UuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb25zb2xlTWVzc2FnZS5jcHAKaW5kZXgg
ODY4MTQ5M2MxN2NjOGQ3NTFmZTdkYmI5Y2Y1MWE2NmMwNzU5NjBlZi4uODc4YTFjNjRkZTFkOTJl
MjU1ZTUyNzhhMjQxMjliYjQyYzBhNTFiMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb25zb2xlTWVzc2FnZS5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb25zb2xlTWVzc2FnZS5jcHAKQEAgLTQ3
LDEwICs0NywxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBjb25zb2xlTWVzc2FnZVJl
Y2VpdmVkQ2FsbGJhY2soV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiwgV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdCogbWVzc2FnZSwgQ29uc29sZU1lc3NhZ2VUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAg
ICAgZ19hc3NlcnQobWVzc2FnZSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobWVzc2FnZSk7
CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gbWVzc2FnZVN0cmluZyhXZWJWaWV3VGVzdDo6amF2
YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhtZXNzYWdlKSk7CiAgICAgICAgIEdSZWZQdHI8R1Zhcmlh
bnQ+IHZhcmlhbnQgPSBnX3ZhcmlhbnRfcGFyc2UoR19WQVJJQU5UX1RZUEUoIih1dXN1cykiKSwg
bWVzc2FnZVN0cmluZy5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAg
IGdfYXNzZXJ0KHZhcmlhbnQuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKHZhcmlh
bnQuZ2V0KCkpOwogCiAgICAgICAgIHVuc2lnbmVkIHNvdXJjZSwgbGV2ZWwsIGxpbmVOdW1iZXI7
CiAgICAgICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2VUZXh0OwpAQCAtODYsMzEgKzg2LDMxIEBAIHN0
YXRpYyB2b2lkIHRlc3RXZWJLaXRDb25zb2xlTWVzc2FnZUNvbnNvbGVBUEkoQ29uc29sZU1lc3Nh
Z2VUZXN0KiB0ZXN0LCBnY29uc3RwCiAgICAgQ29uc29sZU1lc3NhZ2VUZXN0OjpDb25zb2xlTWVz
c2FnZSByZWZlcmVuY2VNZXNzYWdlID0geyBDb25zb2xlTWVzc2FnZVRlc3Q6Ok1lc3NhZ2VTb3Vy
Y2U6OkNvbnNvbGVBUEksIENvbnNvbGVNZXNzYWdlVGVzdDo6TWVzc2FnZUxldmVsOjpMb2csICJM
b2cgQ29uc29sZSBNZXNzYWdlIiwgMSwgImh0dHA6Ly9mb28uY29tL2JhciIgfTsKICAgICB0ZXN0
LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHkgb25sb2FkPSdjb25zb2xlLmxvZyhcIkxvZyBDb25zb2xl
IE1lc3NhZ2VcIik7Jz48L2JvZHk+PC9odG1sPiIsICJodHRwOi8vZm9vLmNvbS9iYXIiKTsKICAg
ICB0ZXN0LT53YWl0VW50aWxDb25zb2xlTWVzc2FnZVJlY2VpdmVkKCk7Ci0gICAgZ19hc3NlcnQo
dGVzdC0+bV9jb25zb2xlTWVzc2FnZSA9PSByZWZlcmVuY2VNZXNzYWdlKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKHRlc3QtPm1fY29uc29sZU1lc3NhZ2UgPT0gcmVmZXJlbmNlTWVzc2FnZSk7CiAKICAg
ICByZWZlcmVuY2VNZXNzYWdlLmxldmVsID0gQ29uc29sZU1lc3NhZ2VUZXN0OjpNZXNzYWdlTGV2
ZWw6OkluZm87CiAgICAgcmVmZXJlbmNlTWVzc2FnZS5tZXNzYWdlID0gIkluZm8gQ29uc29sZSBN
ZXNzYWdlIjsKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHkgb25sb2FkPSdjb25zb2xl
LmluZm8oXCJJbmZvIENvbnNvbGUgTWVzc2FnZVwiKTsnPjwvYm9keT48L2h0bWw+IiwgImh0dHA6
Ly9mb28uY29tL2JhciIpOwogICAgIHRlc3QtPndhaXRVbnRpbENvbnNvbGVNZXNzYWdlUmVjZWl2
ZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2NvbnNvbGVNZXNzYWdlID09IHJlZmVyZW5jZU1l
c3NhZ2UpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9jb25zb2xlTWVzc2FnZSA9PSByZWZl
cmVuY2VNZXNzYWdlKTsKIAogICAgIHJlZmVyZW5jZU1lc3NhZ2UubGV2ZWwgPSBDb25zb2xlTWVz
c2FnZVRlc3Q6Ok1lc3NhZ2VMZXZlbDo6V2FybmluZzsKICAgICByZWZlcmVuY2VNZXNzYWdlLm1l
c3NhZ2UgPSAiV2FybmluZyBDb25zb2xlIE1lc3NhZ2UiOwogICAgIHRlc3QtPmxvYWRIdG1sKCI8
aHRtbD48Ym9keSBvbmxvYWQ9J2NvbnNvbGUud2FybihcIldhcm5pbmcgQ29uc29sZSBNZXNzYWdl
XCIpOyc+PC9ib2R5PjwvaHRtbD4iLCAiaHR0cDovL2Zvby5jb20vYmFyIik7CiAgICAgdGVzdC0+
d2FpdFVudGlsQ29uc29sZU1lc3NhZ2VSZWNlaXZlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1f
Y29uc29sZU1lc3NhZ2UgPT0gcmVmZXJlbmNlTWVzc2FnZSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0
ZXN0LT5tX2NvbnNvbGVNZXNzYWdlID09IHJlZmVyZW5jZU1lc3NhZ2UpOwogCiAgICAgcmVmZXJl
bmNlTWVzc2FnZS5sZXZlbCA9IENvbnNvbGVNZXNzYWdlVGVzdDo6TWVzc2FnZUxldmVsOjpFcnJv
cjsKICAgICByZWZlcmVuY2VNZXNzYWdlLm1lc3NhZ2UgPSAiRXJyb3IgQ29uc29sZSBNZXNzYWdl
IjsKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHkgb25sb2FkPSdjb25zb2xlLmVycm9y
KFwiRXJyb3IgQ29uc29sZSBNZXNzYWdlXCIpOyc+PC9ib2R5PjwvaHRtbD4iLCAiaHR0cDovL2Zv
by5jb20vYmFyIik7CiAgICAgdGVzdC0+d2FpdFVudGlsQ29uc29sZU1lc3NhZ2VSZWNlaXZlZCgp
OwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fY29uc29sZU1lc3NhZ2UgPT0gcmVmZXJlbmNlTWVzc2Fn
ZSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2NvbnNvbGVNZXNzYWdlID09IHJlZmVyZW5j
ZU1lc3NhZ2UpOwogCiAgICAgcmVmZXJlbmNlTWVzc2FnZS5sZXZlbCA9IENvbnNvbGVNZXNzYWdl
VGVzdDo6TWVzc2FnZUxldmVsOjpEZWJ1ZzsKICAgICByZWZlcmVuY2VNZXNzYWdlLm1lc3NhZ2Ug
PSAiRGVidWcgQ29uc29sZSBNZXNzYWdlIjsKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJv
ZHkgb25sb2FkPSdjb25zb2xlLmRlYnVnKFwiRGVidWcgQ29uc29sZSBNZXNzYWdlXCIpOyc+PC9i
b2R5PjwvaHRtbD4iLCAiaHR0cDovL2Zvby5jb20vYmFyIik7CiAgICAgdGVzdC0+d2FpdFVudGls
Q29uc29sZU1lc3NhZ2VSZWNlaXZlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fY29uc29sZU1l
c3NhZ2UgPT0gcmVmZXJlbmNlTWVzc2FnZSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2Nv
bnNvbGVNZXNzYWdlID09IHJlZmVyZW5jZU1lc3NhZ2UpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0
V2ViS2l0Q29uc29sZU1lc3NhZ2VKYXZhU2NyaXB0RXhjZXB0aW9uKENvbnNvbGVNZXNzYWdlVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViS2l0Q29uc29sZU1lc3NhZ2VKYXZhU2NyaXB0RXhjZXB0aW9uKENvbnNvbGVNZXNzYWdl
VGVzdCogdGVzdAogICAgICAgICAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6
IGZvbyIsIDEsICJodHRwOi8vZm9vLmNvbS9iYXIiIH07CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxo
dG1sPjxib2R5IG9ubG9hZD0nZm9vKCknPjwvYm9keT48L2h0bWw+IiwgImh0dHA6Ly9mb28uY29t
L2JhciIpOwogICAgIHRlc3QtPndhaXRVbnRpbENvbnNvbGVNZXNzYWdlUmVjZWl2ZWQoKTsKLSAg
ICBnX2Fzc2VydCh0ZXN0LT5tX2NvbnNvbGVNZXNzYWdlID09IHJlZmVyZW5jZU1lc3NhZ2UpOwor
ICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9jb25zb2xlTWVzc2FnZSA9PSByZWZlcmVuY2VNZXNz
YWdlKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFdlYktpdENvbnNvbGVNZXNzYWdlTmV0d29ya0Vy
cm9yKENvbnNvbGVNZXNzYWdlVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTEyOCw3ICsx
MjgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0Q29uc29sZU1lc3NhZ2VOZXR3b3JrRXJyb3Io
Q29uc29sZU1lc3NhZ2VUZXN0KiB0ZXN0LCBnY29ucwogICAgICAgICAiRmFpbGVkIHRvIGxvYWQg
cmVzb3VyY2U6IFRoZSByZXNvdXJjZSBhdCDigJwvb3JnL3dlYmtpdC9nbGliL3Rlc3RzL25vdC1m
b3VuZC5jc3PigJ0gZG9lcyBub3QgZXhpc3QiLCAwLCAicmVzb3VyY2U6Ly8vb3JnL3dlYmtpdC9n
bGliL3Rlc3RzL25vdC1mb3VuZC5jc3MiIH07CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxo
ZWFkPjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nbm90LWZvdW5kLmNzcycgdHlwZT0ndGV4
dC9jc3MnPjwvaGVhZD48Ym9keT48L2JvZHk+PC9odG1sPiIsICJyZXNvdXJjZTovLy9vcmcvd2Vi
a2l0L2dsaWIvdGVzdHMvIik7CiAgICAgdGVzdC0+d2FpdFVudGlsQ29uc29sZU1lc3NhZ2VSZWNl
aXZlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fY29uc29sZU1lc3NhZ2UgPT0gcmVmZXJlbmNl
TWVzc2FnZSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2NvbnNvbGVNZXNzYWdlID09IHJl
ZmVyZW5jZU1lc3NhZ2UpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0Q29uc29sZU1lc3Nh
Z2VTZWN1cml0eUVycm9yKENvbnNvbGVNZXNzYWdlVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
QEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0Q29uc29sZU1lc3NhZ2VT
ZWN1cml0eUVycm9yKENvbnNvbGVNZXNzYWdlVGVzdCogdGVzdCwgZ2NvbgogICAgICAgICAiTm90
IGFsbG93ZWQgdG8gbG9hZCBsb2NhbCByZXNvdXJjZTogZmlsZTovLy9mb28vYmFyL3NvdXJjZS5w
bmciLCAxLCAiaHR0cDovL2Zvby5jb20vYmFyIiB9OwogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRt
bD48Ym9keT48aW1nIHNyYz1cImZpbGU6Ly8vZm9vL2Jhci9zb3VyY2UucG5nXCIvPjwvYm9keT48
L2h0bWw+IiwgImh0dHA6Ly9mb28uY29tL2JhciIpOwogICAgIHRlc3QtPndhaXRVbnRpbENvbnNv
bGVNZXNzYWdlUmVjZWl2ZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2NvbnNvbGVNZXNzYWdl
ID09IHJlZmVyZW5jZU1lc3NhZ2UpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9jb25zb2xl
TWVzc2FnZSA9PSByZWZlcmVuY2VNZXNzYWdlKTsKIH0KIAogdm9pZCBiZWZvcmVBbGwoKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVN
YW5hZ2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29v
a2llTWFuYWdlci5jcHAKaW5kZXggYjA1MTQ1MjRmNzI1OTFmNmNiNTAyOTExMDMxYjdiZmE4YTNh
ZmEwNy4uMTBkZmE2ZmM4ZWJiNTVlNmM3YWRjNjYwODhkZGQyMjFjYjkzYzEwYSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5hZ2Vy
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tp
ZU1hbmFnZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBXZWJWaWV3
VGVzdCgpCiAgICAgICAgICwgbV9jb29raWVNYW5hZ2VyKHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
Y29va2llX21hbmFnZXIod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KG1fd2ViVmlldykpKQog
ICAgIHsKLSAgICAgICAgZ19hc3NlcnQod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9j
b29raWVfbWFuYWdlcih3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dChtX3dlYlZpZXcpKSkgPT0gbV9jb29raWVNYW5h
Z2VyKTsKKyAgICAgICAgZ19hc3NlcnRfY21waGV4KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9nZXRfY29va2llX21hbmFnZXIod2Via2l0X3dlYl9jb250ZXh0X2dldF93ZWJzaXRlX2RhdGFf
bWFuYWdlcih3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQobV93ZWJWaWV3KSkpLCA9PSwgbV9j
b29raWVNYW5hZ2VyKTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX2Nvb2tpZU1hbmFnZXIs
ICJjaGFuZ2VkIiwgR19DQUxMQkFDSyhjb29raWVzQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CiAg
ICAgfQogCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEdVbmlxdWVP
dXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgV2ViS2l0Q29va2llQWNjZXB0UG9saWN5IHBv
bGljeSA9IHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfYWNjZXB0X3BvbGljeV9maW5pc2goV0VC
S0lUX0NPT0tJRV9NQU5BR0VSKG9iamVjdCksIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKTsKLSAg
ICAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9fZXJyb3Io
ZXJyb3IuZ2V0KCkpOwogCiAgICAgICAgIENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0ID0gc3RhdGlj
X2Nhc3Q8Q29va2llTWFuYWdlclRlc3QqPih1c2VyRGF0YSk7CiAgICAgICAgIHRlc3QtPm1fYWNj
ZXB0UG9saWN5ID0gcG9saWN5OwpAQCAtMTE4LDggKzExOCw4IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgYm9vbCBhZGRlZCA9
IHdlYmtpdF9jb29raWVfbWFuYWdlcl9hZGRfY29va2llX2ZpbmlzaChXRUJLSVRfQ09PS0lFX01B
TkFHRVIob2JqZWN0KSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwotICAgICAgICBnX2Fzc2Vy
dCghZXJyb3IuZ2V0KCkpOwotICAgICAgICBnX2Fzc2VydChhZGRlZCk7CisgICAgICAgIGdfYXNz
ZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShhZGRlZCk7
CiAKICAgICAgICAgQ29va2llTWFuYWdlclRlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxDb29raWVN
YW5hZ2VyVGVzdCo+KHVzZXJEYXRhKTsKICAgICAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5t
X21haW5Mb29wKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIEdMaXN0KiBjb29raWVzID0gd2Vi
a2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9jb29raWVzX2ZpbmlzaChXRUJLSVRfQ09PS0lFX01BTkFH
RVIob2JqZWN0KSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwotICAgICAgICBnX2Fzc2VydCgh
ZXJyb3IuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAK
ICAgICAgICAgQ29va2llTWFuYWdlclRlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxDb29raWVNYW5h
Z2VyVGVzdCo+KHVzZXJEYXRhKTsKICAgICAgICAgdGVzdC0+bV9jb29raWVzID0gY29va2llczsK
QEAgLTE1Niw4ICsxNTYsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBHVW5pcXVlT3V0UHRy
PEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIGJvb2wgZGVsZXRlZCA9IHdlYmtpdF9jb29raWVfbWFu
YWdlcl9kZWxldGVfY29va2llX2ZpbmlzaChXRUJLSVRfQ09PS0lFX01BTkFHRVIob2JqZWN0KSwg
cmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwotICAgICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkp
OwotICAgICAgICBnX2Fzc2VydChkZWxldGVkKTsKKyAgICAgICAgZ19hc3NlcnRfbm9fZXJyb3Io
ZXJyb3IuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKGRlbGV0ZWQpOwogCiAgICAgICAg
IENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q29va2llTWFuYWdlclRlc3Qq
Pih1c2VyRGF0YSk7CiAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7
CkBAIC0xODAsNyArMTgwLDcgQEAgcHVibGljOgogICAgICAgICBHX0dOVUNfQkVHSU5fSUdOT1JF
X0RFUFJFQ0FUSU9OUzsKICAgICAgICAgY2hhcioqIGRvbWFpbnMgPSB3ZWJraXRfY29va2llX21h
bmFnZXJfZ2V0X2RvbWFpbnNfd2l0aF9jb29raWVzX2ZpbmlzaChXRUJLSVRfQ09PS0lFX01BTkFH
RVIob2JqZWN0KSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwogICAgICAgICBHX0dOVUNfRU5E
X0lHTk9SRV9ERVBSRUNBVElPTlM7Ci0gICAgICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7Cisg
ICAgICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKIAogICAgICAgICBDb29raWVN
YW5hZ2VyVGVzdCogdGVzdCA9IHN0YXRpY19jYXN0PENvb2tpZU1hbmFnZXJUZXN0Kj4odXNlckRh
dGEpOwogICAgICAgICB0ZXN0LT5tX2RvbWFpbnMgPSBkb21haW5zOwpAQCAtMjUyLDcgKzI1Miw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2VyQWNjZXB0UG9saWN5KENvb2tpZU1hbmFn
ZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyCiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5n
ZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGls
TG9hZEZpbmlzaGVkKCk7CiAgICAgY2hhcioqIGRvbWFpbnMgPSB0ZXN0LT5nZXREb21haW5zKCk7
Ci0gICAgZ19hc3NlcnQoZG9tYWlucyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkb21haW5zKTsK
ICAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChkb21haW5zKSwgPT0sIDEpOwogICAg
IGdfYXNzZXJ0X2NtcHN0cihkb21haW5zWzBdLCA9PSwga0ZpcnN0UGFydHlEb21haW4pOwogICAg
IHRlc3QtPmRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTI2MiwxMCArMjYyLDEwIEBAIHN0YXRpYyB2
b2lkIHRlc3RDb29raWVNYW5hZ2VyQWNjZXB0UG9saWN5KENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyCiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRo
KCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVk
KCk7CiAgICAgZG9tYWlucyA9IHRlc3QtPmdldERvbWFpbnMoKTsKLSAgICBnX2Fzc2VydChkb21h
aW5zKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRvbWFpbnMpOwogICAgIGdfYXNzZXJ0X2NtcGlu
dChnX3N0cnZfbGVuZ3RoKGRvbWFpbnMpLCA9PSwgMik7Ci0gICAgZ19hc3NlcnQodGVzdC0+aGFz
RG9tYWluKGtGaXJzdFBhcnR5RG9tYWluKSk7Ci0gICAgZ19hc3NlcnQodGVzdC0+aGFzRG9tYWlu
KGtUaGlyZFBhcnR5RG9tYWluKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5oYXNEb21haW4o
a0ZpcnN0UGFydHlEb21haW4pKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmhhc0RvbWFpbihr
VGhpcmRQYXJ0eURvbWFpbikpOwogICAgIHRlc3QtPmRlbGV0ZUFsbENvb2tpZXMoKTsKIAogICAg
IHRlc3QtPnNldEFjY2VwdFBvbGljeShXRUJLSVRfQ09PS0lFX1BPTElDWV9BQ0NFUFRfTkVWRVIp
OwpAQCAtMjczLDcgKzI3Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2VyQWNjZXB0
UG9saWN5KENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyCiAgICAgdGVzdC0+
bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CiAg
ICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAgZG9tYWlucyA9IHRlc3QtPmdl
dERvbWFpbnMoKTsKLSAgICBnX2Fzc2VydChkb21haW5zKTsKKyAgICBnX2Fzc2VydF9ub25udWxs
KGRvbWFpbnMpOwogICAgIGdfYXNzZXJ0X2NtcGludChnX3N0cnZfbGVuZ3RoKGRvbWFpbnMpLCA9
PSwgMCk7CiB9CiAKQEAgLTUyMCwxOSArNTIwLDE5IEBAIHN0YXRpYyB2b2lkIHRlc3RDb29raWVN
YW5hZ2VyRGVsZXRlQ29va2llcyhDb29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
CiAKIHN0YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2VyQ29va2llc0NoYW5nZWQoQ29va2llTWFu
YWdlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1f
Y29va2llc0NoYW5nZWQpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPm1fY29va2llc0NoYW5n
ZWQpOwogICAgIHRlc3QtPnNldEFjY2VwdFBvbGljeShXRUJLSVRfQ09PS0lFX1BPTElDWV9BQ0NF
UFRfQUxXQVlTKTsKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9p
bmRleC5odG1sIikuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsK
LSAgICBnX2Fzc2VydCh0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkKTsKKyAgICBnX2Fzc2VydF90cnVl
KHRlc3QtPm1fY29va2llc0NoYW5nZWQpOwogCiAgICAgdGVzdC0+ZGVsZXRlQ29va2llc0ZvckRv
bWFpbihrRmlyc3RQYXJ0eURvbWFpbik7CiAgICAgdGVzdC0+d2FpdFVudGlsQ29va2llc0NoYW5n
ZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKHRlc3QtPm1fY29va2llc0NoYW5nZWQpOwogCiAgICAgdGVzdC0+ZGVsZXRlQWxsQ29v
a2llcygpOwogICAgIHRlc3QtPndhaXRVbnRpbENvb2tpZXNDaGFuZ2VkKCk7Ci0gICAgZ19hc3Nl
cnQodGVzdC0+bV9jb29raWVzQ2hhbmdlZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2Nv
b2tpZXNDaGFuZ2VkKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdENvb2tpZU1hbmFnZXJQZXJzaXN0
ZW50U3RvcmFnZShDb29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTU0
MiwzNCArNTQyLDM0IEBAIHN0YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2VyUGVyc2lzdGVudFN0
b3JhZ2UoQ29va2llTWFuYWdlclRlc3QqIHRlc3QsIGdjb25zdHBvCiAgICAgLy8gVGV4dCBzdG9y
YWdlIHVzaW5nIGEgbmV3IGZpbGUuCiAgICAgdGVzdC0+c2V0UGVyc2lzdGVudFN0b3JhZ2UoV0VC
S0lUX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfVEVYVCk7CiAgICAgY2hhcioqIGRvbWFpbnMg
PSB0ZXN0LT5nZXREb21haW5zKCk7Ci0gICAgZ19hc3NlcnQoZG9tYWlucyk7CisgICAgZ19hc3Nl
cnRfbm9ubnVsbChkb21haW5zKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChk
b21haW5zKSwgPT0sIDApOwogCiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQ
YXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlz
aGVkKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9jb29raWVzQ2hhbmdlZCk7CisgICAgZ19hc3Nl
cnRfdHJ1ZSh0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkKTsKICAgICBkb21haW5zID0gdGVzdC0+Z2V0
RG9tYWlucygpOwotICAgIGdfYXNzZXJ0KGRvbWFpbnMpOworICAgIGdfYXNzZXJ0X25vbm51bGwo
ZG9tYWlucyk7CiAgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9sZW5ndGgoZG9tYWlucyksID09
LCAyKTsKIAogCiAgICAgLy8gU1FMaXRlIHN0b3JhZ2UgdXNpbmcgYSBuZXcgZmlsZS4KICAgICB0
ZXN0LT5zZXRQZXJzaXN0ZW50U3RvcmFnZShXRUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFH
RV9TUUxJVEUpOwogICAgIGRvbWFpbnMgPSB0ZXN0LT5nZXREb21haW5zKCk7Ci0gICAgZ19hc3Nl
cnQoZG9tYWlucyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkb21haW5zKTsKICAgICBnX2Fzc2Vy
dF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChkb21haW5zKSwgPT0sIDApOwogCiAgICAgdGVzdC0+bG9h
ZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CiAgICAg
dGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9jb29r
aWVzQ2hhbmdlZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkKTsK
ICAgICBkb21haW5zID0gdGVzdC0+Z2V0RG9tYWlucygpOwotICAgIGdfYXNzZXJ0KGRvbWFpbnMp
OworICAgIGdfYXNzZXJ0X25vbm51bGwoZG9tYWlucyk7CiAgICAgZ19hc3NlcnRfY21waW50KGdf
c3Rydl9sZW5ndGgoZG9tYWlucyksID09LCAyKTsKIAogICAgIC8vIFRleHQgc3RvcmFnZSB1c2lu
ZyBhbiBleGlzdGluZyBmaWxlLgogICAgIHRlc3QtPnNldFBlcnNpc3RlbnRTdG9yYWdlKFdFQktJ
VF9DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQpOwogICAgIGRvbWFpbnMgPSB0ZXN0LT5n
ZXREb21haW5zKCk7Ci0gICAgZ19hc3NlcnQoZG9tYWlucyk7CisgICAgZ19hc3NlcnRfbm9ubnVs
bChkb21haW5zKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChkb21haW5zKSwg
PT0sIDIpOwogICAgIHRlc3QtPmRlbGV0ZUFsbENvb2tpZXMoKTsKICAgICBnX2Fzc2VydF9jbXBp
bnQoZ19zdHJ2X2xlbmd0aCh0ZXN0LT5nZXREb21haW5zKCkpLCA9PSwgMCk7CkBAIC01NzcsNyAr
NTc3LDcgQEAgc3RhdGljIHZvaWQgdGVzdENvb2tpZU1hbmFnZXJQZXJzaXN0ZW50U3RvcmFnZShD
b29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG8KICAgICAvLyBTUUxpdGUgc3RvcmFnZSB3
aXRoIGFuIGV4aXN0aW5nIGZpbGUuCiAgICAgdGVzdC0+c2V0UGVyc2lzdGVudFN0b3JhZ2UoV0VC
S0lUX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfU1FMSVRFKTsKICAgICBkb21haW5zID0gdGVz
dC0+Z2V0RG9tYWlucygpOwotICAgIGdfYXNzZXJ0KGRvbWFpbnMpOworICAgIGdfYXNzZXJ0X25v
bm51bGwoZG9tYWlucyk7CiAgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9sZW5ndGgoZG9tYWlu
cyksID09LCAyKTsKICAgICB0ZXN0LT5kZWxldGVBbGxDb29raWVzKCk7CiAgICAgZ19hc3NlcnRf
Y21waW50KGdfc3Rydl9sZW5ndGgodGVzdC0+Z2V0RG9tYWlucygpKSwgPT0sIDApOwpAQCAtNTkx
LDcgKzU5MSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2VyUGVyc2lzdGVudFN0b3Jh
Z2VEZWxldGVBbGwoQ29va2llTWFuYWdlclRlc3QqIHRlc3QsCiAgICAgdGltZV90IGV4cGlyZXMg
PSB0aW1lKG51bGxwdHIpICsgNjA7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb29raWVzRmlsZUNv
bnRlbnRzKGdfc3RyZHVwX3ByaW50Zihjb29raWVzRmlsZUZvcm1hdCwgZXhwaXJlcywgZXhwaXJl
cykpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29va2llc0ZpbGUoZ19idWlsZF9maWxlbmFtZShU
ZXN0OjpkYXRhRGlyZWN0b3J5KCksICJjb29raWVzLnR4dCIsIG51bGxwdHIpKTsKLSAgICBnX2Fz
c2VydChnX2ZpbGVfc2V0X2NvbnRlbnRzKGNvb2tpZXNGaWxlLmdldCgpLCBjb29raWVzRmlsZUNv
bnRlbnRzLmdldCgpLCAtMSwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X3RydWUoZ19maWxlX3Nl
dF9jb250ZW50cyhjb29raWVzRmlsZS5nZXQoKSwgY29va2llc0ZpbGVDb250ZW50cy5nZXQoKSwg
LTEsIG51bGxwdHIpKTsKIAogICAgIHRlc3QtPnNldFBlcnNpc3RlbnRTdG9yYWdlKFdFQktJVF9D
T09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQpOwogICAgIHRlc3QtPmRlbGV0ZUFsbENvb2tp
ZXMoKTsKQEAgLTYwMiw5ICs2MDIsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29va2llTWFuYWdlclBl
cnNpc3RlbnRTdG9yYWdlRGVsZXRlQWxsKENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0LAogICAgIHRl
c3QtPm1fY29va2llc0NoYW5nZWQgPSBmYWxzZTsKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXIt
PmdldFVSSUZvclBhdGgoIi9uby1jb29raWVzLmh0bWwiKS5kYXRhKCkpOwogICAgIHRlc3QtPndh
aXRVbnRpbExvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2Nvb2tpZXNDaGFu
Z2VkKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkKTsKICAgICBj
aGFyKiogZG9tYWlucyA9IHRlc3QtPmdldERvbWFpbnMoKTsKLSAgICBnX2Fzc2VydChkb21haW5z
KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRvbWFpbnMpOwogICAgIGdfYXNzZXJ0X2NtcGludChn
X3N0cnZfbGVuZ3RoKGRvbWFpbnMpLCA9PSwgMCk7CiB9CiAKQEAgLTYyMSw3ICs2MjEsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0Q29va2llTWFuYWdlckVwaGVtZXJhbChDb29raWVNYW5hZ2VyVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5zZXRBY2NlcHRQb2xpY3koV0VCS0lUX0NP
T0tJRV9QT0xJQ1lfQUNDRVBUX0FMV0FZUyk7CiAgICAgdGVzdC0+c2V0UGVyc2lzdGVudFN0b3Jh
Z2UoV0VCS0lUX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfVEVYVCk7CiAgICAgY2hhcioqIGRv
bWFpbnMgPSB0ZXN0LT5nZXREb21haW5zKCk7Ci0gICAgZ19hc3NlcnQoZG9tYWlucyk7CisgICAg
Z19hc3NlcnRfbm9ubnVsbChkb21haW5zKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xl
bmd0aChkb21haW5zKSwgPT0sIDApOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRW
aWV3KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywKQEAgLTYzMSwzMCArNjMxLDMw
IEBAIHN0YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2VyRXBoZW1lcmFsKENvb2tpZU1hbmFnZXJU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAgICAid2ViLWNvbnRleHQiLCB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2NvbnRleHQodGVzdC0+bV93ZWJWaWV3KSwKICAgICAgICAgImlzLWVwaGVt
ZXJhbCIsIFRSVUUsCiAgICAgICAgIG51bGxwdHIpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2Vi
X3ZpZXdfaXNfZXBoZW1lcmFsKHdlYlZpZXcuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0
X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2Vi
Vmlldy5nZXQoKSkpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19pc19lcGhl
bWVyYWwod2ViVmlldy5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfY29u
dGV4dF9pc19lcGhlbWVyYWwod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcuZ2V0
KCkpKSk7CiAKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcuZ2V0KCksICJsb2FkLWNoYW5n
ZWQiLCBHX0NBTExCQUNLKGVwaGVtZXJhbFZpZXdsb2FkQ2hhbmdlZCksIHRlc3QpOwogICAgIHdl
YmtpdF93ZWJfdmlld19sb2FkX3VyaSh3ZWJWaWV3LmdldCgpLCBrU2VydmVyLT5nZXRVUklGb3JQ
YXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CiAgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1f
bWFpbkxvb3ApOwogCiAgICAgZG9tYWlucyA9IHRlc3QtPmdldERvbWFpbnMoKTsKLSAgICBnX2Fz
c2VydChkb21haW5zKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRvbWFpbnMpOwogICAgIGdfYXNz
ZXJ0X2NtcGludChnX3N0cnZfbGVuZ3RoKGRvbWFpbnMpLCA9PSwgMCk7CiAKICAgICBhdXRvKiB2
aWV3RGF0YU1hbmFnZXIgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
KHdlYlZpZXcuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFO
QUdFUih2aWV3RGF0YU1hbmFnZXIpKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19XRUJT
SVRFX0RBVEFfTUFOQUdFUih2aWV3RGF0YU1hbmFnZXIpKTsKICAgICB0ZXN0LT5hc3NlcnRPYmpl
Y3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHZpZXdEYXRhTWFuYWdlcikpOwot
ICAgIGdfYXNzZXJ0KHZpZXdEYXRhTWFuYWdlciAhPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyKHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh0ZXN0LT5tX3dl
YlZpZXcpKSk7CisgICAgZ19hc3NlcnRfY21waGV4KHZpZXdEYXRhTWFuYWdlciwgIT0sIHdlYmtp
dF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIod2Via2l0X3dlYl92aWV3X2dl
dF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldykpKTsKICAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0g
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9jb29raWVfbWFuYWdlcih2aWV3RGF0YU1h
bmFnZXIpOwotICAgIGdfYXNzZXJ0KFdFQktJVF9JU19DT09LSUVfTUFOQUdFUihjb29raWVNYW5h
Z2VyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfQ09PS0lFX01BTkFHRVIoY29va2ll
TWFuYWdlcikpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNo
ZXMoR19PQkpFQ1QoY29va2llTWFuYWdlcikpOwotICAgIGdfYXNzZXJ0KGNvb2tpZU1hbmFnZXIg
IT0gdGVzdC0+bV9jb29raWVNYW5hZ2VyKTsKKyAgICBnX2Fzc2VydF9jbXBoZXgoY29va2llTWFu
YWdlciwgIT0sIHRlc3QtPm1fY29va2llTWFuYWdlcik7CiAgICAgR19HTlVDX0JFR0lOX0lHTk9S
RV9ERVBSRUNBVElPTlM7CiAgICAgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9kb21haW5zX3dp
dGhfY29va2llcyhjb29raWVNYW5hZ2VyLCBudWxscHRyLCBbXShHT2JqZWN0KiBvYmplY3QsIEdB
c3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICBhdXRvKiB0
ZXN0ID0gc3RhdGljX2Nhc3Q8Q29va2llTWFuYWdlclRlc3QqPih1c2VyRGF0YSk7CiAgICAgICAg
IEdVbmlxdWVQdHI8Y2hhcio+IGRvbWFpbnMod2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9kb21h
aW5zX3dpdGhfY29va2llc19maW5pc2goV0VCS0lUX0NPT0tJRV9NQU5BR0VSKG9iamVjdCksIHJl
c3VsdCwgbnVsbHB0cikpOwotICAgICAgICBnX2Fzc2VydChkb21haW5zKTsKKyAgICAgICAgZ19h
c3NlcnRfbm9ubnVsbChkb21haW5zKTsKICAgICAgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9s
ZW5ndGgoZG9tYWlucy5nZXQoKSksID09LCAxKTsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKGRv
bWFpbnMuZ2V0KClbMF0sID09LCBrRmlyc3RQYXJ0eURvbWFpbik7CiAgICAgICAgIHRlc3QtPnF1
aXRNYWluTG9vcCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RET01FbGVtZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0RE9NRWxlbWVudC5jcHAKaW5kZXggM2QyODA0NmJmMjQ1NGRkY2M3ZDg4NjQy
MTQ4Yjc3OGViMjhiNmNmZi4uMGI3YmZkYTMyYmNkZDc4MWFlZTJlOWNmZTExMTgwMWQwMTdlNTVi
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RE
T01FbGVtZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdERPTUVsZW1lbnQuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiBzdGF0aWMgdm9pZCB0ZXN0V2Vi
S2l0RE9NRWxlbWVudEF1dG9GaWxsKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ewogICAgIHN0YXRpYyBjb25zdCBnY2hhciogdGVzdEhUTUwgPSAiPGh0bWw+PGJvZHk+PGZvcm0g
YWN0aW9uPScjJz48aW5wdXQgaWQ9J2F1dG8tZmlsbCc+PC9pbnB1dD48L2Zvcm0+PC9ib2R5Pjwv
aHRtbD4iOwotICAgIGdfYXNzZXJ0KHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01F
bGVtZW50IiwgImF1dG8tZmlsbCIsIHRlc3RIVE1MKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0
LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RE9NRWxlbWVudCIsICJhdXRvLWZpbGwiLCB0ZXN0
SFRNTCkpOwogfQogCiB2b2lkIGJlZm9yZUFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAKaW5kZXggNTNmZDQyYWVh
ZGFiMGI0MDk5MDMwZjgwMGFhY2Y5NjI4Y2I5M2JiZi4uZTkzMzkyZjJiNWRmZmU2YjkzYWFlYmJj
OWE3OGQ2ZDM5ZDM0ZWZlMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3REb3dubG9hZHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0RG93bmxvYWRzLmNwcApAQCAtNDQsMTYgKzQ0LDE2IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyB2b2lkIHJlY2VpdmVkUmVzcG9uc2VDYWxsYmFjayhXZWJLaXREb3du
bG9hZCogZG93bmxvYWQsIEdQYXJhbVNwZWMqLCBEb3dubG9hZFRlc3QqIHRlc3QpCiAgICAgewot
ICAgICAgICBnX2Fzc2VydCh3ZWJraXRfZG93bmxvYWRfZ2V0X3Jlc3BvbnNlKGRvd25sb2FkKSk7
CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwod2Via2l0X2Rvd25sb2FkX2dldF9yZXNwb25zZShk
b3dubG9hZCkpOwogICAgICAgICB0ZXN0LT5yZWNlaXZlZFJlc3BvbnNlKGRvd25sb2FkKTsKICAg
ICB9CiAKICAgICBzdGF0aWMgdm9pZCBjcmVhdGVkRGVzdGluYXRpb25DYWxsYmFjayhXZWJLaXRE
b3dubG9hZCogZG93bmxvYWQsIGNvbnN0IGdjaGFyKiBkZXN0aW5hdGlvbiwgRG93bmxvYWRUZXN0
KiB0ZXN0KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQod2Via2l0X2Rvd25sb2FkX2dldF9kZXN0
aW5hdGlvbihkb3dubG9hZCkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKHdlYmtpdF9kb3du
bG9hZF9nZXRfZGVzdGluYXRpb24oZG93bmxvYWQpKTsKICAgICAgICAgZ19hc3NlcnRfY21wc3Ry
KHdlYmtpdF9kb3dubG9hZF9nZXRfZGVzdGluYXRpb24oZG93bmxvYWQpLCA9PSwgZGVzdGluYXRp
b24pOwogICAgICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdf
Zm9yX3VyaShkZXN0aW5hdGlvbikpOwotICAgICAgICBnX2Fzc2VydChnX2ZpbGVfcXVlcnlfZXhp
c3RzKGZpbGUuZ2V0KCksIG51bGxwdHIpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShnX2ZpbGVf
cXVlcnlfZXhpc3RzKGZpbGUuZ2V0KCksIG51bGxwdHIpKTsKICAgICAgICAgdGVzdC0+Y3JlYXRl
ZERlc3RpbmF0aW9uKGRvd25sb2FkLCBkZXN0aW5hdGlvbik7CiAgICAgfQogCkBAIC02OSwxMyAr
NjksMTMgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZmFpbGVkQ2FsbGJhY2soV2ViS2l0
RG93bmxvYWQqIGRvd25sb2FkLCBHRXJyb3IqIGVycm9yLCBEb3dubG9hZFRlc3QqIHRlc3QpCiAg
ICAgewotICAgICAgICBnX2Fzc2VydChlcnJvcik7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwo
ZXJyb3IpOwogCiAgICAgICAgIGNvbnN0IGNoYXIqIGRlc3RpbmF0aW9uVVJJID0gd2Via2l0X2Rv
d25sb2FkX2dldF9kZXN0aW5hdGlvbihkb3dubG9hZCk7CiAgICAgICAgIGlmIChkZXN0aW5hdGlv
blVSSSkgewogICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiB0ZW1wRmlsZVVSSShnX3N0cmNv
bmNhdChkZXN0aW5hdGlvblVSSSwgIi53a2Rvd25sb2FkIiwgbnVsbHB0cikpOwogICAgICAgICAg
ICAgR1JlZlB0cjxHRmlsZT4gdGVtcEZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfdXJp
KHRlbXBGaWxlVVJJLmdldCgpKSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghZ19maWxlX3F1ZXJ5
X2V4aXN0cyh0ZW1wRmlsZS5nZXQoKSwgbnVsbHB0cikpOworICAgICAgICAgICAgZ19hc3NlcnRf
ZmFsc2UoZ19maWxlX3F1ZXJ5X2V4aXN0cyh0ZW1wRmlsZS5nZXQoKSwgbnVsbHB0cikpOwogICAg
ICAgICB9CiAKICAgICAgICAgdGVzdC0+ZmFpbGVkKGRvd25sb2FkLCBlcnJvcik7CkBAIC04Mywx
NCArODMsMTQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGdib29sZWFuIGRlY2lkZURlc3RpbmF0
aW9uQ2FsbGJhY2soV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkLCBjb25zdCBnY2hhciogc3VnZ2Vz
dGVkRmlsZW5hbWUsIERvd25sb2FkVGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0
KHN1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChzdWdnZXN0ZWRG
aWxlbmFtZSk7CiAgICAgICAgIHRlc3QtPmRlY2lkZURlc3RpbmF0aW9uKGRvd25sb2FkLCBzdWdn
ZXN0ZWRGaWxlbmFtZSk7CiAgICAgICAgIHJldHVybiBUUlVFOwogICAgIH0KIAogICAgIHN0YXRp
YyB2b2lkIGRvd25sb2FkU3RhcnRlZENhbGxiYWNrKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQs
IFdlYktpdERvd25sb2FkKiBkb3dubG9hZCwgRG93bmxvYWRUZXN0KiB0ZXN0KQogICAgIHsKLSAg
ICAgICAgZ19hc3NlcnQod2Via2l0X2Rvd25sb2FkX2dldF9yZXF1ZXN0KGRvd25sb2FkKSk7Cisg
ICAgICAgIGdfYXNzZXJ0X25vbm51bGwod2Via2l0X2Rvd25sb2FkX2dldF9yZXF1ZXN0KGRvd25s
b2FkKSk7CiAgICAgICAgIHRlc3QtPnN0YXJ0ZWQoZG93bmxvYWQpOwogICAgICAgICBnX3NpZ25h
bF9jb25uZWN0KGRvd25sb2FkLCAibm90aWZ5OjpyZXNwb25zZSIsIEdfQ0FMTEJBQ0socmVjZWl2
ZWRSZXNwb25zZUNhbGxiYWNrKSwgdGVzdCk7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QoZG93
bmxvYWQsICJjcmVhdGVkLWRlc3RpbmF0aW9uIiwgR19DQUxMQkFDSyhjcmVhdGVkRGVzdGluYXRp
b25DYWxsYmFjayksIHRlc3QpOwpAQCAtMTYyLDEyICsxNjIsMTIgQEAgcHVibGljOgogICAgICAg
ICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IGFkb3B0R1JlZih3ZWJraXRfd2Vi
X2NvbnRleHRfZG93bmxvYWRfdXJpKG1fd2ViQ29udGV4dC5nZXQoKSwgcmVxdWVzdFVSSS5kYXRh
KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09C
SkVDVChkb3dubG9hZC5nZXQoKSkpOwogCi0gICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG93bmxv
YWRfZ2V0X2FsbG93X292ZXJ3cml0ZShkb3dubG9hZC5nZXQoKSkpOworICAgICAgICBnX2Fzc2Vy
dF9mYWxzZSh3ZWJraXRfZG93bmxvYWRfZ2V0X2FsbG93X292ZXJ3cml0ZShkb3dubG9hZC5nZXQo
KSkpOwogICAgICAgICB3ZWJraXRfZG93bmxvYWRfc2V0X2FsbG93X292ZXJ3cml0ZShkb3dubG9h
ZC5nZXQoKSwgbV9hbGxvd092ZXJ3cml0ZSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9kb3du
bG9hZF9nZXRfYWxsb3dfb3ZlcndyaXRlKGRvd25sb2FkLmdldCgpKSA9PSBtX2FsbG93T3Zlcndy
aXRlKTsKKyAgICAgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9kb3dubG9hZF9nZXRfYWxsb3df
b3ZlcndyaXRlKGRvd25sb2FkLmdldCgpKSwgPT0sIG1fYWxsb3dPdmVyd3JpdGUpOwogCiAgICAg
ICAgIFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfZG93bmxvYWRfZ2V0X3JlcXVl
c3QoZG93bmxvYWQuZ2V0KCkpOwotICAgICAgICBnX2Fzc2VydChyZXF1ZXN0KTsKKyAgICAgICAg
Z19hc3NlcnRfbm9ubnVsbChyZXF1ZXN0KTsKICAgICAgICAgQVNTRVJUX0NNUF9DU1RSSU5HKHdl
YmtpdF91cmlfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpLCA9PSwgcmVxdWVzdFVSSSk7CiAKICAg
ICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwpAQCAtMTk5LDcgKzE5OSw3IEBAIHN0
YXRpYyBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZExvY2FsRmlsZVN1Y2Nlc3NmdWxs
eShEb3dubG9hZFRlc3QqIHRlc3QsCiAgICAgR1JlZlB0cjxHRmlsZUluZm8+IHNvdXJjZUluZm8g
PSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2luZm8oc291cmNlLmdldCgpLCBHX0ZJTEVfQVRUUklC
VVRFX1NUQU5EQVJEX1NJWkUsIHN0YXRpY19jYXN0PEdGaWxlUXVlcnlJbmZvRmxhZ3M+KDApLCAw
LCAwKSk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzb3VyY2VVUkkoZ19maWxlX2dldF91cmkoc291
cmNlLmdldCgpKSk7CiAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB0ZXN0
LT5kb3dubG9hZFVSSUFuZFdhaXRVbnRpbEZpbmlzaGVzKHNvdXJjZVVSSS5nZXQoKSk7Ci0gICAg
Z19hc3NlcnQoIXdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsK
KyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQu
Z2V0KCkpKTsKIAogICAgIFZlY3RvcjxEb3dubG9hZFRlc3Q6OkRvd25sb2FkRXZlbnQ+JiBldmVu
dHMgPSB0ZXN0LT5tX2Rvd25sb2FkRXZlbnRzOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMu
c2l6ZSgpLCA9PSwgNSk7CkBAIC0yMTAsMTEgKzIxMCwxMSBAQCBzdGF0aWMgR1JlZlB0cjxXZWJL
aXREb3dubG9hZD4gZG93bmxvYWRMb2NhbEZpbGVTdWNjZXNzZnVsbHkoRG93bmxvYWRUZXN0KiB0
ZXN0LAogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbNF0sID09LCBEb3dubG9hZFRlc3Q6OkZp
bmlzaGVkKTsKIAogICAgIFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfZG93bmxv
YWRfZ2V0X3JlcXVlc3QoZG93bmxvYWQuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KHJlcXVlc3QpOwor
ICAgIGdfYXNzZXJ0X25vbm51bGwocmVxdWVzdCk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtp
dF91cmlfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpLCA9PSwgc291cmNlVVJJLmdldCgpKTsKIAog
ICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2Rvd25sb2FkU2l6ZSwgPT0sIGdfZmlsZV9pbmZv
X2dldF9zaXplKHNvdXJjZUluZm8uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfZG93bmxv
YWRfZ2V0X2Rlc3RpbmF0aW9uKGRvd25sb2FkLmdldCgpKSk7CisgICAgZ19hc3NlcnRfbm9ubnVs
bCh3ZWJraXRfZG93bmxvYWRfZ2V0X2Rlc3RpbmF0aW9uKGRvd25sb2FkLmdldCgpKSk7CiAgICAg
Z19hc3NlcnRfY21wZmxvYXQod2Via2l0X2Rvd25sb2FkX2dldF9lc3RpbWF0ZWRfcHJvZ3Jlc3Mo
ZG93bmxvYWQuZ2V0KCkpLCA9PSwgMSk7CiAKICAgICByZXR1cm4gZG93bmxvYWQ7CkBAIC0yMzMs
OCArMjMzLDggQEAgc3RhdGljIHZvaWQgY3JlYXRlRmlsZUF0RGVzdGluYXRpb24oY29uc3QgY2hh
ciogZmlsZW5hbWUpCiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVf
bmV3X2Zvcl9wYXRoKHBhdGguZ2V0KCkpKTsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7CiAgICAgZ19maWxlX2NyZWF0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIG51
bGxwdHIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoIWVycm9yKTsKLSAgICBnX2Fz
c2VydChnX2ZpbGVfcXVlcnlfZXhpc3RzKGZpbGUuZ2V0KCksIG51bGxwdHIpKTsKKyAgICBnX2Fz
c2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShnX2ZpbGVfcXVl
cnlfZXhpc3RzKGZpbGUuZ2V0KCksIG51bGxwdHIpKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdERv
d25sb2FkT3ZlcndyaXRlRGVzdGluYXRpb25BbGxvd2VkKERvd25sb2FkVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKQEAgLTI3OCw3ICsyNzgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZhaWxl
ZChXZWJLaXREb3dubG9hZCogZG93bmxvYWQsIEdFcnJvciogZXJyb3IpCiAgICAgewotICAgICAg
ICBnX2Fzc2VydChnX2Vycm9yX21hdGNoZXMoZXJyb3IsIFdFQktJVF9ET1dOTE9BRF9FUlJPUiwg
ZXhwZWN0ZWRFcnJvclRvV2ViS2l0RG93bmxvYWRFcnJvcihtX2V4cGVjdGVkRXJyb3IpKSk7Cisg
ICAgICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLCBXRUJLSVRfRE9XTkxPQURfRVJST1IsIGV4cGVj
dGVkRXJyb3JUb1dlYktpdERvd25sb2FkRXJyb3IobV9leHBlY3RlZEVycm9yKSk7CiAgICAgICAg
IERvd25sb2FkVGVzdDo6ZmFpbGVkKGRvd25sb2FkLCBlcnJvcik7CiAgICAgfQogCkBAIC0zMjAs
NyArMzIwLDcgQEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2FkT3ZlcndyaXRlRGVzdGluYXRpb25E
aXNhbGxvd2VkKERvd25sb2FkRXJyb3JUZXN0KiB0ZXN0LAogICAgIEdSZWZQdHI8R0ZpbGU+IHNv
dXJjZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHNvdXJjZVBhdGguZ2V0KCkpKTsK
ICAgICBHVW5pcXVlUHRyPGNoYXI+IHNvdXJjZVVSSShnX2ZpbGVfZ2V0X3VyaShzb3VyY2UuZ2V0
KCkpKTsKICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHRlc3QtPmRvd25s
b2FkVVJJQW5kV2FpdFVudGlsRmluaXNoZXMoc291cmNlVVJJLmdldCgpKTsKLSAgICBnX2Fzc2Vy
dCghd2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOworICAgIGdf
YXNzZXJ0X251bGwod2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkp
OwogCiAgICAgVmVjdG9yPERvd25sb2FkVGVzdDo6RG93bmxvYWRFdmVudD4mIGV2ZW50cyA9IHRl
c3QtPm1fZG93bmxvYWRFdmVudHM7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCks
ID09LCA0KTsKQEAgLTMzNyw3ICszMzcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRMb2Nh
bEZpbGVFcnJvcihEb3dubG9hZEVycm9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAg
ICB0ZXN0LT5tX2V4cGVjdGVkRXJyb3IgPSBEb3dubG9hZEVycm9yVGVzdDo6TmV0d29ya0Vycm9y
OwogICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gdGVzdC0+ZG93bmxvYWRV
UklBbmRXYWl0VW50aWxGaW5pc2hlcygiZmlsZTovLy9mb28vYmFyIik7Ci0gICAgZ19hc3NlcnQo
IXdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKKyAgICBnX2Fz
c2VydF9udWxsKHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsK
IAogICAgIFZlY3RvcjxEb3dubG9hZFRlc3Q6OkRvd25sb2FkRXZlbnQ+JiBldmVudHMgPSB0ZXN0
LT5tX2Rvd25sb2FkRXZlbnRzOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9
PSwgMyk7CkBAIC0zNTIsNyArMzUyLDcgQEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2FkTG9jYWxG
aWxlRXJyb3IoRG93bmxvYWRFcnJvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgR1Jl
ZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHBhdGguZ2V0
KCkpKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHVyaShnX2ZpbGVfZ2V0X3VyaShmaWxlLmdldCgp
KSk7CiAgICAgZG93bmxvYWQgPSB0ZXN0LT5kb3dubG9hZFVSSUFuZFdhaXRVbnRpbEZpbmlzaGVz
KHVyaS5nZXQoKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXco
ZG93bmxvYWQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9kb3dubG9hZF9nZXRf
d2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKIAogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMu
c2l6ZSgpLCA9PSwgNCk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1swXSwgPT0sIERvd25s
b2FkVGVzdDo6U3RhcnRlZCk7CkBAIC0zNjUsNyArMzY1LDcgQEAgc3RhdGljIHZvaWQgdGVzdERv
d25sb2FkTG9jYWxGaWxlRXJyb3IoRG93bmxvYWRFcnJvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiAKICAgICB0ZXN0LT5tX2V4cGVjdGVkRXJyb3IgPSBEb3dubG9hZEVycm9yVGVzdDo6RG93
bmxvYWRDYW5jZWxsZWQ7CiAgICAgZG93bmxvYWQgPSB0ZXN0LT5kb3dubG9hZFVSSUFuZFdhaXRV
bnRpbEZpbmlzaGVzKHVyaS5nZXQoKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9kb3dubG9hZF9n
ZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9k
b3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKIAogICAgIGdfYXNzZXJ0X2Nt
cGludChldmVudHMuc2l6ZSgpLCA9PSwgNCk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1sw
XSwgPT0sIERvd25sb2FkVGVzdDo6U3RhcnRlZCk7CkBAIC00MzgsNyArNDM4LDcgQEAgc3RhdGlj
IHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVz
c2FnZSwgY29uc3QgY2hhcioKIHN0YXRpYyB2b2lkIHRlc3REb3dubG9hZFJlbW90ZUZpbGUoRG93
bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIEdSZWZQdHI8V2ViS2l0RG93
bmxvYWQ+IGRvd25sb2FkID0gdGVzdC0+ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcyhr
U2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC5wZGYiKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtp
dF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9u
dWxsKHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKIAogICAg
IFZlY3RvcjxEb3dubG9hZFRlc3Q6OkRvd25sb2FkRXZlbnQ+JiBldmVudHMgPSB0ZXN0LT5tX2Rv
d25sb2FkRXZlbnRzOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgNSk7
CkBAIC00NTAsMTMgKzQ1MCwxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRSZW1vdGVGaWxl
KERvd25sb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBldmVudHMuY2xlYXIoKTsK
IAogICAgIFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfZG93bmxvYWRfZ2V0X3Jl
cXVlc3QoZG93bmxvYWQuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KHJlcXVlc3QpOworICAgIGdfYXNz
ZXJ0X25vbm51bGwocmVxdWVzdCk7CiAgICAgQVNTRVJUX0NNUF9DU1RSSU5HKHdlYmtpdF91cmlf
cmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpLCA9PSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rl
c3QucGRmIikpOwogCiAgICAgYXV0byBoZWFkZXJzID0gd2Via2l0X3VyaV9yZXF1ZXN0X2dldF9o
dHRwX2hlYWRlcnMocmVxdWVzdCk7CiAgICAgZ19hc3NlcnRfbm9ubnVsbChzb3VwX21lc3NhZ2Vf
aGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJVc2VyLUFnZW50IikpOwogCi0gICAgZ19hc3NlcnQo
d2Via2l0X2Rvd25sb2FkX2dldF9kZXN0aW5hdGlvbihkb3dubG9hZC5nZXQoKSkpOworICAgIGdf
YXNzZXJ0X25vbm51bGwod2Via2l0X2Rvd25sb2FkX2dldF9kZXN0aW5hdGlvbihkb3dubG9hZC5n
ZXQoKSkpOwogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF9kb3dubG9hZF9nZXRfZXN0aW1h
dGVkX3Byb2dyZXNzKGRvd25sb2FkLmdldCgpKSwgPT0sIDEpOwogICAgIEdVbmlxdWVQdHI8Y2hh
cj4gZXhwZWN0ZWRGaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzLnBkZiIsIGtTZXJ2ZXJTdWdn
ZXN0ZWRGaWxlbmFtZSkpOwogICAgIHRlc3QtPmNoZWNrRGVzdGluYXRpb25BbmREZWxldGVGaWxl
KGRvd25sb2FkLmdldCgpLCBleHBlY3RlZEZpbGVuYW1lLmdldCgpKTsKQEAgLTQ2Niw3ICs0NjYs
NyBAQCBzdGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRSZW1vdGVGaWxlRXJyb3IoRG93bmxvYWRFcnJv
clRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgdGVzdC0+bV9leHBlY3RlZEVycm9y
ID0gRG93bmxvYWRFcnJvclRlc3Q6Ok5ldHdvcmtFcnJvcjsKICAgICBHUmVmUHRyPFdlYktpdERv
d25sb2FkPiBkb3dubG9hZCA9IHRlc3QtPmRvd25sb2FkVVJJQW5kV2FpdFVudGlsRmluaXNoZXMo
a1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2ZvbyIpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2Rv
d25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X251bGwo
d2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOwogCiAgICAgVmVj
dG9yPERvd25sb2FkVGVzdDo6RG93bmxvYWRFdmVudD4mIGV2ZW50cyA9IHRlc3QtPm1fZG93bmxv
YWRFdmVudHM7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCA0KTsKQEAg
LTQ4MSw3ICs0ODEsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRSZW1vdGVGaWxlRXJyb3Io
RG93bmxvYWRFcnJvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICB0ZXN0LT5tX2V4
cGVjdGVkRXJyb3IgPSBEb3dubG9hZEVycm9yVGVzdDo6SW52YWxpZERlc3RpbmF0aW9uOwogICAg
IGRvd25sb2FkID0gdGVzdC0+ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcyhrU2VydmVy
LT5nZXRVUklGb3JQYXRoKCIvdGVzdC5wZGYiKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9kb3du
bG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdl
YmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKIAogICAgIGdfYXNz
ZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgNCk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2
ZW50c1swXSwgPT0sIERvd25sb2FkVGVzdDo6U3RhcnRlZCk7CkBAIC00OTQsNyArNDk0LDcgQEAg
c3RhdGljIHZvaWQgdGVzdERvd25sb2FkUmVtb3RlRmlsZUVycm9yKERvd25sb2FkRXJyb3JUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogCiAgICAgdGVzdC0+bV9leHBlY3RlZEVycm9yID0gRG93
bmxvYWRFcnJvclRlc3Q6OkRvd25sb2FkQ2FuY2VsbGVkOwogICAgIGRvd25sb2FkID0gdGVzdC0+
ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcyhrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIv
Y2FuY2VsLWFmdGVyLWRlc3RpbmF0aW9uIikpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG93bmxv
YWRfZ2V0X3dlYl92aWV3KGRvd25sb2FkLmdldCgpKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJr
aXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25sb2FkLmdldCgpKSk7CiAKICAgICBnX2Fzc2Vy
dF9jbXBpbnQoZXZlbnRzLnNpemUoKSwgPT0sIDQpOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVu
dHNbMF0sID09LCBEb3dubG9hZFRlc3Q6OlN0YXJ0ZWQpOwpAQCAtNTA2LDcgKzUwNiw3IEBAIHN0
YXRpYyB2b2lkIHRlc3REb3dubG9hZFJlbW90ZUZpbGVFcnJvcihEb3dubG9hZEVycm9yVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAvLyBDaGVjayB0aGUgaW50ZXJtZWRpYXRlIGZpbGUg
aXMgZGVsZXRlZCB3aGVuIHRoZSBkb3dubG9hZCBpcyBjYW5jZWxsZWQuCiAgICAgR1VuaXF1ZVB0
cjxjaGFyPiBpbnRlcm1lZGlhdGVVUkkoZ19zdHJkdXBfcHJpbnRmKCIlcy53a2Rvd25sb2FkIiwg
d2Via2l0X2Rvd25sb2FkX2dldF9kZXN0aW5hdGlvbihkb3dubG9hZC5nZXQoKSkpKTsKICAgICBH
UmVmUHRyPEdGaWxlPiBpbnRlcm1lZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9y
X3VyaShpbnRlcm1lZGlhdGVVUkkuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCghZ19maWxlX3F1ZXJ5
X2V4aXN0cyhpbnRlcm1lZGlhdGVGaWxlLmdldCgpLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRf
ZmFsc2UoZ19maWxlX3F1ZXJ5X2V4aXN0cyhpbnRlcm1lZGlhdGVGaWxlLmdldCgpLCBudWxscHRy
KSk7CiB9CiAKIGNsYXNzIFdlYlZpZXdEb3dubG9hZFRlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7
CkBAIC01MzYsNyArNTM2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9kb3dubG9hZCA9
IDA7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKLSAgICAgICAgZ19hc3Nl
cnQobV9kb3dubG9hZC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobV9kb3dubG9h
ZC5nZXQoKSk7CiAgICAgfQogCiAgICAgc3RhdGljIGdib29sZWFuIGRvd25sb2FkRGVjaWRlRGVz
dGluYXRpb25DYWxsYmFjayhXZWJLaXREb3dubG9hZCogZG93bmxvYWQsIGNvbnN0IGdjaGFyKiBz
dWdnZXN0ZWRGaWxlbmFtZSwgV2ViVmlld0Rvd25sb2FkVGVzdCogdGVzdCkKQEAgLTU2OCwxMCAr
NTY4LDEwIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RG93bmxvYWRVUkkoV2ViVmlld0Rvd25s
b2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBHUmVmUHRyPFdlYktpdERvd25sb2Fk
PiBkb3dubG9hZCA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX3ZpZXdfZG93bmxvYWRfdXJpKHRlc3Qt
Pm1fd2ViVmlldywga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QucGRmIikuZGF0YSgpKSk7
CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVD
VChkb3dubG9hZC5nZXQoKSkpOwogICAgIHRlc3QtPndhaXRVbnRpbERvd25sb2FkU3RhcnRlZCgp
OwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fd2ViVmlldyA9PSB3ZWJraXRfZG93bmxvYWRfZ2V0X3dl
Yl92aWV3KGRvd25sb2FkLmdldCgpKSk7CisgICAgZ19hc3NlcnRfY21waGV4KHRlc3QtPm1fd2Vi
VmlldywgPT0sIHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsK
IAogICAgIFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfZG93bmxvYWRfZ2V0X3Jl
cXVlc3QoZG93bmxvYWQuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KHJlcXVlc3QpOworICAgIGdfYXNz
ZXJ0X25vbm51bGwocmVxdWVzdCk7CiAgICAgQVNTRVJUX0NNUF9DU1RSSU5HKHdlYmtpdF91cmlf
cmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpLCA9PSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rl
c3QucGRmIikpOwogCiAgICAgYXV0byBoZWFkZXJzID0gd2Via2l0X3VyaV9yZXF1ZXN0X2dldF9o
dHRwX2hlYWRlcnMocmVxdWVzdCk7CkBAIC02MjUsMTAgKzYyNSwxMCBAQCBzdGF0aWMgdm9pZCB0
ZXN0UG9saWN5UmVzcG9uc2VEb3dubG9hZChQb2xpY3lSZXNwb25zZURvd25sb2FkVGVzdCogdGVz
dCwgZ2NvbnN0cAogICAgIHRlc3QtPndhaXRVbnRpbERvd25sb2FkU3RhcnRlZCgpOwogCiAgICAg
V2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCA9IHdlYmtpdF9kb3dubG9hZF9nZXRfcmVxdWVzdCh0
ZXN0LT5tX2Rvd25sb2FkLmdldCgpKTsKLSAgICBnX2Fzc2VydChyZXF1ZXN0KTsKKyAgICBnX2Fz
c2VydF9ub25udWxsKHJlcXVlc3QpOwogICAgIEFTU0VSVF9DTVBfQ1NUUklORyh3ZWJraXRfdXJp
X3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSwgPT0sIHJlcXVlc3RVUkkpOwogCi0gICAgZ19hc3Nl
cnQodGVzdC0+bV93ZWJWaWV3ID09IHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcodGVzdC0+
bV9kb3dubG9hZC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2NtcGhleCh0ZXN0LT5tX3dlYlZpZXcs
ID09LCB3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KHRlc3QtPm1fZG93bmxvYWQuZ2V0KCkp
KTsKIAogICAgIGF1dG8gaGVhZGVycyA9IHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfaHR0cF9oZWFk
ZXJzKHJlcXVlc3QpOwogICAgIGdfYXNzZXJ0X25vbm51bGwoc291cF9tZXNzYWdlX2hlYWRlcnNf
Z2V0X29uZShoZWFkZXJzLCAiVXNlci1BZ2VudCIpKTsKQEAgLTY0NywxMCArNjQ3LDEwIEBAIHN0
YXRpYyB2b2lkIHRlc3RQb2xpY3lSZXNwb25zZURvd25sb2FkQ2FuY2VsKFBvbGljeVJlc3BvbnNl
RG93bmxvYWRUZXN0KiB0ZXN0LCBnCiAgICAgdGVzdC0+d2FpdFVudGlsRG93bmxvYWRTdGFydGVk
KCk7CiAKICAgICBXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X2Rvd25sb2FkX2dl
dF9yZXF1ZXN0KHRlc3QtPm1fZG93bmxvYWQuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KHJlcXVlc3Qp
OworICAgIGdfYXNzZXJ0X25vbm51bGwocmVxdWVzdCk7CiAgICAgQVNTRVJUX0NNUF9DU1RSSU5H
KHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpLCA9PSwgcmVxdWVzdFVSSSk7CiAK
LSAgICBnX2Fzc2VydCh0ZXN0LT5tX3dlYlZpZXcgPT0gd2Via2l0X2Rvd25sb2FkX2dldF93ZWJf
dmlldyh0ZXN0LT5tX2Rvd25sb2FkLmdldCgpKSk7CisgICAgZ19hc3NlcnRfY21waGV4KHRlc3Qt
Pm1fd2ViVmlldywgPT0sIHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcodGVzdC0+bV9kb3du
bG9hZC5nZXQoKSkpOwogCiAgICAgYXV0byBoZWFkZXJzID0gd2Via2l0X3VyaV9yZXF1ZXN0X2dl
dF9odHRwX2hlYWRlcnMocmVxdWVzdCk7CiAgICAgZ19hc3NlcnRfbm9ubnVsbChzb3VwX21lc3Nh
Z2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJVc2VyLUFnZW50IikpOwpAQCAtNjYwLDcgKzY2
MCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RQb2xpY3lSZXNwb25zZURvd25sb2FkQ2FuY2VsKFBvbGlj
eVJlc3BvbnNlRG93bmxvYWRUZXN0KiB0ZXN0LCBnCiBzdGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRN
SU1FVHlwZShEb3dubG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgR1JlZlB0
cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB0ZXN0LT5kb3dubG9hZFVSSUFuZFdhaXRVbnRp
bEZpbmlzaGVzKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi91bmtub3duIikpOwotICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25sb2FkLmdldCgpKSk7CisgICAg
Z19hc3NlcnRfbnVsbCh3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25sb2FkLmdldCgp
KSk7CiAKICAgICBWZWN0b3I8RG93bmxvYWRUZXN0OjpEb3dubG9hZEV2ZW50PiYgZXZlbnRzID0g
dGVzdC0+bV9kb3dubG9hZEV2ZW50czsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNpemUo
KSwgPT0sIDUpOwpAQCAtNjgyLDcgKzY4Miw3IEBAIHN0YXRpYyB2b2lkIHRlc3REb3dubG9hZE1J
TUVUeXBlKERvd25sb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBXRUJLSVRfSVNf
VVJJX1JFU1BPTlNFKHJlc3BvbnNlKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3VyaV9y
ZXNwb25zZV9nZXRfbWltZV90eXBlKHJlc3BvbnNlKSwgPT0sICJhcHBsaWNhdGlvbi9wZGYiKTsK
IAotICAgIGdfYXNzZXJ0KHdlYmtpdF9kb3dubG9hZF9nZXRfZGVzdGluYXRpb24oZG93bmxvYWQu
Z2V0KCkpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHdlYmtpdF9kb3dubG9hZF9nZXRfZGVzdGlu
YXRpb24oZG93bmxvYWQuZ2V0KCkpKTsKICAgICBnX2Fzc2VydF9jbXBmbG9hdCh3ZWJraXRfZG93
bmxvYWRfZ2V0X2VzdGltYXRlZF9wcm9ncmVzcyhkb3dubG9hZC5nZXQoKSksID09LCAxKTsKICAg
ICBHVW5pcXVlUHRyPGNoYXI+IGV4cGVjdGVkRmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcy5w
ZGYiLCBrU2VydmVyU3VnZ2VzdGVkRmlsZW5hbWUpKTsKICAgICB0ZXN0LT5jaGVja0Rlc3RpbmF0
aW9uQW5kRGVsZXRlRmlsZShkb3dubG9hZC5nZXQoKSwgZXhwZWN0ZWRGaWxlbmFtZS5nZXQoKSk7
CkBAIC02OTEsMTkgKzY5MSwxOSBAQCBzdGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRNSU1FVHlwZShE
b3dubG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAjaWYgUExBVEZPUk0oR1RLKQogc3Rh
dGljIGdib29sZWFuIGNvbnRleHRNZW51Q2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywg
V2ViS2l0Q29udGV4dE1lbnUqIGNvbnRleHRNZW51LCBHZGtFdmVudCosIFdlYktpdEhpdFRlc3RS
ZXN1bHQqIGhpdFRlc3RSZXN1bHQsIFdlYlZpZXdEb3dubG9hZFRlc3QqIHRlc3QpCiB7Ci0gICAg
Z19hc3NlcnQoV0VCS0lUX0lTX0hJVF9URVNUX1JFU1VMVChoaXRUZXN0UmVzdWx0KSk7Ci0gICAg
Z19hc3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJl
c3VsdCkpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX0hJVF9URVNUX1JFU1VMVChoaXRU
ZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2Nv
bnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7CiAgICAgR0xpc3QqIGl0ZW1zID0gd2Via2l0
X2NvbnRleHRfbWVudV9nZXRfaXRlbXMoY29udGV4dE1lbnUpOwogICAgIEdSZWZQdHI8V2ViS2l0
Q29udGV4dE1lbnVJdGVtPiBjb250ZXh0TWVudUl0ZW07CiAgICAgZm9yIChHTGlzdCogbCA9IGl0
ZW1zOyBsOyBsID0gZ19saXN0X25leHQobCkpIHsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lT
X0NPTlRFWFRfTUVOVV9JVEVNKGwtPmRhdGEpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJL
SVRfSVNfQ09OVEVYVF9NRU5VX0lURU0obC0+ZGF0YSkpOwogICAgICAgICBhdXRvKiBpdGVtID0g
V0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGwtPmRhdGEpOwogICAgICAgICBpZiAod2Via2l0X2Nv
bnRleHRfbWVudV9pdGVtX2dldF9zdG9ja19hY3Rpb24oaXRlbSkgPT0gV0VCS0lUX0NPTlRFWFRf
TUVOVV9BQ1RJT05fRE9XTkxPQURfTElOS19UT19ESVNLKSB7CiAgICAgICAgICAgICBjb250ZXh0
TWVudUl0ZW0gPSBpdGVtOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgZ19hc3NlcnQoY29udGV4dE1lbnVJdGVtLmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxs
KGNvbnRleHRNZW51SXRlbS5nZXQoKSk7CiAgICAgd2Via2l0X2NvbnRleHRfbWVudV9yZW1vdmVf
YWxsKGNvbnRleHRNZW51KTsKICAgICB3ZWJraXRfY29udGV4dF9tZW51X2FwcGVuZChjb250ZXh0
TWVudSwgY29udGV4dE1lbnVJdGVtLmdldCgpKTsKICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsK
QEAgLTczNiw3ICs3MzYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29udGV4dE1lbnVEb3dubG9hZEFj
dGlvbnMoV2ViVmlld0Rvd25sb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbgogICAgIH0sIHRlc3Qp
OwogICAgIHRlc3QtPndhaXRVbnRpbERvd25sb2FkU3RhcnRlZCgpOwogCi0gICAgZ19hc3NlcnQo
dGVzdC0+bV93ZWJWaWV3ID09IHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcodGVzdC0+bV9k
b3dubG9hZC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2NtcGhleCh0ZXN0LT5tX3dlYlZpZXcsID09
LCB3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KHRlc3QtPm1fZG93bmxvYWQuZ2V0KCkpKTsK
IAogICAgIFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfZG93bmxvYWRfZ2V0X3Jl
cXVlc3QodGVzdC0+bV9kb3dubG9hZC5nZXQoKSk7CiAgICAgV0VCS0lUX0lTX1VSSV9SRVFVRVNU
KHJlcXVlc3QpOwpAQCAtNzc1LDcgKzc3NSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RCbG9iRG93bmxv
YWQoV2ViVmlld0Rvd25sb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB9LCB0ZXN0
KTsKICAgICB0ZXN0LT53YWl0VW50aWxEb3dubG9hZFN0YXJ0ZWQoKTsKIAotICAgIGdfYXNzZXJ0
KHRlc3QtPm1fd2ViVmlldyA9PSB3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KHRlc3QtPm1f
ZG93bmxvYWQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBoZXgodGVzdC0+bV93ZWJWaWV3LCA9
PSwgd2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyh0ZXN0LT5tX2Rvd25sb2FkLmdldCgpKSk7
CiAgICAgdGVzdC0+d2FpdFVudGlsRG93bmxvYWRGaW5pc2hlZCgpOwogCiAgICAgR1JlZlB0cjxH
RmlsZT4gZG93bmxvYWRGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3VyaSh3ZWJraXRf
ZG93bmxvYWRfZ2V0X2Rlc3RpbmF0aW9uKHRlc3QtPm1fZG93bmxvYWQuZ2V0KCkpKSk7CkBAIC03
ODMsNyArNzgzLDcgQEAgc3RhdGljIHZvaWQgdGVzdEJsb2JEb3dubG9hZChXZWJWaWV3RG93bmxv
YWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZG93bmxv
YWRQYXRoKGdfZmlsZV9nZXRfcGF0aChkb3dubG9hZEZpbGUuZ2V0KCkpKTsKICAgICBHVW5pcXVl
T3V0UHRyPGNoYXI+IGRvd25sb2FkQ29udGVudHM7CiAgICAgZ3NpemUgZG93bmxvYWRDb250ZW50
c0xlbmd0aDsKLSAgICBnX2Fzc2VydChnX2ZpbGVfZ2V0X2NvbnRlbnRzKGRvd25sb2FkUGF0aC5n
ZXQoKSwgJmRvd25sb2FkQ29udGVudHMub3V0UHRyKCksICZkb3dubG9hZENvbnRlbnRzTGVuZ3Ro
LCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShnX2ZpbGVfZ2V0X2NvbnRlbnRzKGRvd25s
b2FkUGF0aC5nZXQoKSwgJmRvd25sb2FkQ29udGVudHMub3V0UHRyKCksICZkb3dubG9hZENvbnRl
bnRzTGVuZ3RoLCBudWxscHRyKSk7CiAgICAgZ19hc3NlcnRfY21waW50KGdfZmlsZV9pbmZvX2dl
dF9zaXplKGRvd25sb2FkRmlsZUluZm8uZ2V0KCkpLCA9PSwgZG93bmxvYWRDb250ZW50c0xlbmd0
aCk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGRvd25sb2FkQ29udGVudHMuZ2V0KCksID09LCAiSGVs
bG8gd29ybGQiKTsKICAgICBnX2ZpbGVfZGVsZXRlKGRvd25sb2FkRmlsZS5nZXQoKSwgbnVsbHB0
ciwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdEVkaXRvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdEVkaXRvci5jcHAKaW5kZXggNThiZTUzZTNiZWQ0ZWVjZGZlZDg2NjgwYjhhMmRmMzQ0
ODk4MDA3ZC4uM2Y2YWIyNDViZDlhZjhkYTM1OTk5NjE0MTQxZjBmMzUzN2I1OTdkMSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RFZGl0b3IuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0RWRpdG9yLmNw
cApAQCAtMjQsNyArMjQsNyBAQAogc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYkVkaXRvclNlbGVj
dGlvbkNoYW5nZWQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgc3Rh
dGljIGNvbnN0IGdjaGFyKiB0ZXN0SFRNTCA9ICI8aHRtbD48Ym9keT5BbGwgd29yayBhbmQgbm8g
cGxheSBtYWtlIEphY2sgYSBkdWxsIGJveS48L2JvZHk+PC9odG1sPiI7Ci0gICAgZ19hc3NlcnQo
dGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdFdlYkVkaXRvciIsICJzZWxlY3Rpb24tY2hh
bmdlZCIsIHRlc3RIVE1MKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5ydW5XZWJQcm9jZXNz
VGVzdCgiV2ViS2l0V2ViRWRpdG9yIiwgInNlbGVjdGlvbi1jaGFuZ2VkIiwgdGVzdEhUTUwpKTsK
IH0KIAogdm9pZCBiZWZvcmVBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RGcmFtZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdEZyYW1lLmNwcAppbmRleCA2ZjMzNzI5YjE4MDE5NTc4OTZkMjQzMjIw
M2QxZWQ2YjAxNDFlNDk0Li5mNmQyOTdmMmU0OWU4YjQyZWUzODNiMTgyZWQ0ZDhiODQ3NTE1MTVm
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEZy
YW1lLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEZy
YW1lLmNwcApAQCAtMjMsMjMgKzIzLDIzIEBACiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRGcmFt
ZU1haW5GcmFtZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBnX2Fz
c2VydCh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RnJhbWUiLCAibWFpbi1mcmFtZSIp
KTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRGcmFt
ZSIsICJtYWluLWZyYW1lIikpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RnJhbWVVUkko
V2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgZ19hc3NlcnQodGVzdC0+
cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdEZyYW1lIiwgInVyaSIpKTsKKyAgICBnX2Fzc2VydF90
cnVlKHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRGcmFtZSIsICJ1cmkiKSk7CiB9CiAK
IHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRGcmFtZUphdmFTY3JpcHRDb250ZXh0KFdlYlZpZXdUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIGdfYXNzZXJ0KHRlc3QtPnJ1bldlYlByb2Nl
c3NUZXN0KCJXZWJLaXRGcmFtZSIsICJqYXZhc2NyaXB0LWNvbnRleHQiKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZSh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RnJhbWUiLCAiamF2YXNjcmlw
dC1jb250ZXh0IikpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RnJhbWVKYXZhU2NyaXB0
VmFsdWVzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHN0YXRpYyBj
b25zdCBjaGFyKiB0ZXN0SFRNTCA9ICI8aHRtbD48Ym9keT48cCBpZD0ncGFyYWdyYXBoJz5UaGlz
IGlzIGEgdGVzdDwvcD48aW1nIGlkPSdpbWFnZScgc3JjPSdmb28ucG5nJz48L2JvZHk+PC9odG1s
PiI7Ci0gICAgZ19hc3NlcnQodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdEZyYW1lIiwg
ImphdmFzY3JpcHQtdmFsdWVzIiwgdGVzdEhUTUwpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3Qt
PnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRGcmFtZSIsICJqYXZhc2NyaXB0LXZhbHVlcyIsIHRl
c3RIVE1MKSk7CiB9CiAKIHZvaWQgYmVmb3JlQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcAppbmRleCBi
ZjM3MmE1NjBhMDg5MjYyNjdjZDY0NmJjOGMzMWFmODcyN2M1ZjZkLi5kNDgzNTAxZWMyZjEzNmQz
OWE5YzUwNjBiNjJkMGViMjI0OTg4YTBkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdExvYWRlckNsaWVudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwCkBAIC0xMzUsNyAr
MTM1LDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChjb25z
dCBnY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yKiBlcnJvcikKICAgICB7Ci0gICAgICAgIGdfYXNz
ZXJ0KGdfZXJyb3JfbWF0Y2hlcyhlcnJvciwgV0VCS0lUX05FVFdPUktfRVJST1IsIFdFQktJVF9O
RVRXT1JLX0VSUk9SX0NBTkNFTExFRCkpOworICAgICAgICBnX2Fzc2VydF9lcnJvcihlcnJvciwg
V0VCS0lUX05FVFdPUktfRVJST1IsIFdFQktJVF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCk7CiAg
ICAgICAgIExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRGYWlsZWQoZmFpbGluZ1VSSSwgZXJyb3IpOwog
ICAgIH0KIH07CkBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIHZvaWQgdGVzdExvYWRDYW5jZWxs
ZWQoTG9hZFN0b3BUcmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3VGl0bGUoTG9hZFRyYWNraW5nVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKIHsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2dldF90aXRsZSh0ZXN0LT5tX3dl
YlZpZXcpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJfdmlld19nZXRfdGl0bGUodGVz
dC0+bV93ZWJWaWV3KSk7CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxoZWFkPjx0aXRsZT5X
ZWxjb21lIHRvIFdlYktpdC1HVEsrITwvdGl0bGU+PC9oZWFkPjwvaHRtbD4iLCAwKTsKICAgICB0
ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0
X3dlYl92aWV3X2dldF90aXRsZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgIldlbGNvbWUgdG8gV2Vi
S2l0LUdUSyshIik7CkBAIC0yNTMsNyArMjUzLDcgQEAgcHVibGljOgogICAgIFZpZXdVUklUcmFj
a2luZ1Rlc3QoKQogICAgICAgICA6IG1fY3VycmVudFVSSSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Vy
aShtX3dlYlZpZXcpKQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQobV9jdXJyZW50VVJJLmlzTnVs
bCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2N1cnJlbnRVUkkuaXNOdWxsKCkpOwogICAg
ICAgICBtX2N1cnJlbnRVUklMaXN0Lmdyb3cobV9jdXJyZW50VVJJTGlzdC5jYXBhY2l0eSgpKTsK
ICAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJub3RpZnk6OnVyaSIsIEdfQ0FM
TEJBQ0sodXJpQ2hhbmdlZCksIHRoaXMpOwogICAgIH0KQEAgLTI5Miw3ICsyOTIsNyBAQCBwdWJs
aWM6CiAgICAgICAgIGlmIChwYXRoKQogICAgICAgICAgICAgQVNTRVJUX0NNUF9DU1RSSU5HKG1f
Y3VycmVudFVSSUxpc3Rbc3RhdGVdLCA9PSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aChwYXRoKSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdfYXNzZXJ0KG1fY3VycmVudFVSSUxpc3Rbc3Rh
dGVdLmlzTnVsbCgpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUobV9jdXJyZW50VVJJTGlz
dFtzdGF0ZV0uaXNOdWxsKCkpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTM2MiwxNiArMzYyLDE2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGJlZ2luTG9hZCgpCiAgICAgewogICAgICAgICAvLyBOZXcg
bG9hZCwgbG9hZC1zdGFydGVkIGhhc24ndCBiZWVuIGVtaXR0ZWQgeWV0LgotICAgICAgICBnX2Fz
c2VydChtX2xvYWRFdmVudHMuaXNFbXB0eSgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2xv
YWRFdmVudHMuaXNFbXB0eSgpKTsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJf
dmlld19nZXRfdXJpKG1fd2ViVmlldyksID09LCBtX2FjdGl2ZVVSSS5kYXRhKCkpOwogICAgIH0K
IAogICAgIHZvaWQgZW5kTG9hZCgpCiAgICAgewogICAgICAgICAvLyBMb2FkIGZpbmlzaCwgbG9h
ZC1maW5pc2hlZCBhbmQgbG9hZC1mYWlsZWQgaGF2ZW4ndCBiZWVuIGVtaXR0ZWQgeWV0LgotICAg
ICAgICBnX2Fzc2VydCghbV9sb2FkRXZlbnRzLmlzRW1wdHkoKSk7Ci0gICAgICAgIGdfYXNzZXJ0
KCFtX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZpbmlzaGVkKSk7
Ci0gICAgICAgIGdfYXNzZXJ0KCFtX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVz
dDo6TG9hZEZhaWxlZCkpOworICAgICAgICBnX2Fzc2VydF9mYWxzZShtX2xvYWRFdmVudHMuaXNF
bXB0eSgpKTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2UobV9sb2FkRXZlbnRzLmNvbnRhaW5zKExv
YWRUcmFja2luZ1Rlc3Q6OkxvYWRGaW5pc2hlZCkpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSht
X2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZhaWxlZCkpOwogICAg
IH0KIH07CiAKQEAgLTQzMCw3ICs0MzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZWludGVy
cHJldF9jYXN0PEdEQnVzU2lnbmFsQ2FsbGJhY2s+KHdlYlBhZ2VVUklDaGFuZ2VkQ2FsbGJhY2sp
LAogICAgICAgICAgICAgdGhpcywKICAgICAgICAgICAgIDApOwotICAgICAgICBnX2Fzc2VydCht
X3VyaUNoYW5nZWRTaWduYWxJRCk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQobV91cmlDaGFu
Z2VkU2lnbmFsSUQsICE9LCAwKTsKIAogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmll
dywgIm5vdGlmeTo6dXJpIiwgR19DQUxMQkFDSyh3ZWJWaWV3VVJJQ2hhbmdlZCksIHRoaXMpOwog
ICAgIH0KQEAgLTQ5OCw5ICs0OTgsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViUGFnZVVSSShXZWJQ
YWdlVVJJVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHN0YXRpYyB2b2lkIHRlc3RVUklSZXF1
ZXN0SFRUUEhlYWRlcnMoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAg
R1JlZlB0cjxXZWJLaXRVUklSZXF1ZXN0PiB1cmlSZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdF91
cmlfcmVxdWVzdF9uZXcoImZpbGU6Ly8vZm9vL2JhciIpKTsKLSAgICBnX2Fzc2VydCh1cmlSZXF1
ZXN0LmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHVyaVJlcXVlc3QuZ2V0KCkpOwogICAg
IGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X3VyaSh1cmlSZXF1ZXN0Lmdl
dCgpKSwgPT0sICJmaWxlOi8vL2Zvby9iYXIiKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3VyaV9y
ZXF1ZXN0X2dldF9odHRwX2hlYWRlcnModXJpUmVxdWVzdC5nZXQoKSkpOworICAgIGdfYXNzZXJ0
X251bGwod2Via2l0X3VyaV9yZXF1ZXN0X2dldF9odHRwX2hlYWRlcnModXJpUmVxdWVzdC5nZXQo
KSkpOwogCiAgICAgLy8gTG9hZCBhIHJlcXVlc3Qgd2l0aCBubyBEbyBOb3QgVHJhY2sgaGVhZGVy
LgogICAgIHdlYmtpdF91cmlfcmVxdWVzdF9zZXRfdXJpKHVyaVJlcXVlc3QuZ2V0KCksIGtTZXJ2
ZXItPmdldFVSSUZvclBhdGgoIi9kby1ub3QtdHJhY2staGVhZGVyIikuZGF0YSgpKTsKQEAgLTUx
MCwxOCArNTEwLDE4IEBAIHN0YXRpYyB2b2lkIHRlc3RVUklSZXF1ZXN0SFRUUEhlYWRlcnMoV2Vi
Vmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgc2l6ZV90IG1haW5SZXNvdXJjZURh
dGFTaXplID0gMDsKICAgICBjb25zdCBjaGFyKiBtYWluUmVzb3VyY2VEYXRhID0gdGVzdC0+bWFp
blJlc291cmNlRGF0YShtYWluUmVzb3VyY2VEYXRhU2l6ZSk7CiAgICAgZ19hc3NlcnRfY21waW50
KG1haW5SZXNvdXJjZURhdGFTaXplLCA9PSwgc3RybGVuKGtETlRIZWFkZXJOb3RQcmVzZW50KSk7
Ci0gICAgZ19hc3NlcnQoIXN0cm5jbXAobWFpblJlc291cmNlRGF0YSwga0ROVEhlYWRlck5vdFBy
ZXNlbnQsIG1haW5SZXNvdXJjZURhdGFTaXplKSk7CisgICAgZ19hc3NlcnRfY21waW50KHN0cm5j
bXAobWFpblJlc291cmNlRGF0YSwga0ROVEhlYWRlck5vdFByZXNlbnQsIG1haW5SZXNvdXJjZURh
dGFTaXplKSwgPT0sIDApOwogCiAgICAgLy8gQWRkIHRoZSBEbyBOb3QgVHJhY2sgaGVhZGVyIGFu
ZCBsb2FkIHRoZSByZXF1ZXN0IGFnYWluLgogICAgIFNvdXBNZXNzYWdlSGVhZGVycyogaGVhZGVy
cyA9IHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfaHR0cF9oZWFkZXJzKHVyaVJlcXVlc3QuZ2V0KCkp
OwotICAgIGdfYXNzZXJ0KGhlYWRlcnMpOworICAgIGdfYXNzZXJ0X25vbm51bGwoaGVhZGVycyk7
CiAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKGhlYWRlcnMsICJETlQiLCAiMSIpOwog
ICAgIHRlc3QtPmxvYWRSZXF1ZXN0KHVyaVJlcXVlc3QuZ2V0KCkpOwogICAgIHRlc3QtPndhaXRV
bnRpbExvYWRGaW5pc2hlZCgpOwogCiAgICAgbWFpblJlc291cmNlRGF0YSA9IHRlc3QtPm1haW5S
ZXNvdXJjZURhdGEobWFpblJlc291cmNlRGF0YVNpemUpOwogICAgIGdfYXNzZXJ0X2NtcGludCht
YWluUmVzb3VyY2VEYXRhU2l6ZSwgPT0sIDEpOwotICAgIGdfYXNzZXJ0KCFzdHJuY21wKG1haW5S
ZXNvdXJjZURhdGEsICIxIiwgbWFpblJlc291cmNlRGF0YVNpemUpKTsKKyAgICBnX2Fzc2VydF9j
bXBpbnQoc3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCAiMSIsIG1haW5SZXNvdXJjZURhdGFTaXpl
KSwgPT0sIDApOwogCiAgICAgLy8gTG9hZCBhIFVSSSBmb3Igd2hpY2ggdGhlIHdlYiBleHRlbnNp
b24gd2lsbCBhZGQgdGhlIERvIE5vdCBUcmFjayBoZWFkZXIuCiAgICAgdGVzdC0+bG9hZFVSSShr
U2VydmVyLT5nZXRVUklGb3JQYXRoKCIvYWRkLWRvLW5vdC10cmFjay1oZWFkZXIiKS5kYXRhKCkp
OwpAQCAtNTI5LDE1ICs1MjksMTUgQEAgc3RhdGljIHZvaWQgdGVzdFVSSVJlcXVlc3RIVFRQSGVh
ZGVycyhXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIG1haW5SZXNvdXJj
ZURhdGEgPSB0ZXN0LT5tYWluUmVzb3VyY2VEYXRhKG1haW5SZXNvdXJjZURhdGFTaXplKTsKICAg
ICBnX2Fzc2VydF9jbXBpbnQobWFpblJlc291cmNlRGF0YVNpemUsID09LCAxKTsKLSAgICBnX2Fz
c2VydCghc3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCAiMSIsIG1haW5SZXNvdXJjZURhdGFTaXpl
KSk7CisgICAgZ19hc3NlcnRfY21waW50KHN0cm5jbXAobWFpblJlc291cmNlRGF0YSwgIjEiLCBt
YWluUmVzb3VyY2VEYXRhU2l6ZSksID09LCAwKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFVSSVJl
cXVlc3RIVFRQTWV0aG9kKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAg
IEdSZWZQdHI8V2ViS2l0VVJJUmVxdWVzdD4gdXJpUmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJraXRf
dXJpX3JlcXVlc3RfbmV3KCJmaWxlOi8vL2Zvby9iYXIiKSk7Ci0gICAgZ19hc3NlcnQodXJpUmVx
dWVzdC5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbCh1cmlSZXF1ZXN0LmdldCgpKTsKICAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkodXJpUmVxdWVzdC5n
ZXQoKSksID09LCAiZmlsZTovLy9mb28vYmFyIik7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF91cmlf
cmVxdWVzdF9nZXRfaHR0cF9tZXRob2QodXJpUmVxdWVzdC5nZXQoKSkpOworICAgIGdfYXNzZXJ0
X251bGwod2Via2l0X3VyaV9yZXF1ZXN0X2dldF9odHRwX21ldGhvZCh1cmlSZXF1ZXN0LmdldCgp
KSk7CiAKICAgICB3ZWJraXRfdXJpX3JlcXVlc3Rfc2V0X3VyaSh1cmlSZXF1ZXN0LmdldCgpLCBr
U2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaHR0cC1nZXQtbWV0aG9kIikuZGF0YSgpKTsKICAgICB0
ZXN0LT5sb2FkUmVxdWVzdCh1cmlSZXF1ZXN0LmdldCgpKTsKQEAgLTU1MSwxOSArNTUxLDE5IEBA
IHN0YXRpYyB2b2lkIHRlc3RVUklSZXNwb25zZUhUVFBIZWFkZXJzKFdlYlZpZXdUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT5ObyBIVFRQ
IGhlYWRlcnM8L2JvZHk+PC9odG1sPiIsICJmaWxlOi8vLyIpOwogICAgIHRlc3QtPndhaXRVbnRp
bExvYWRGaW5pc2hlZCgpOwogICAgIFdlYktpdFdlYlJlc291cmNlKiByZXNvdXJjZSA9IHdlYmtp
dF93ZWJfdmlld19nZXRfbWFpbl9yZXNvdXJjZSh0ZXN0LT5tX3dlYlZpZXcpOwotICAgIGdfYXNz
ZXJ0KFdFQktJVF9JU19XRUJfUkVTT1VSQ0UocmVzb3VyY2UpKTsKKyAgICBnX2Fzc2VydF90cnVl
KFdFQktJVF9JU19XRUJfUkVTT1VSQ0UocmVzb3VyY2UpKTsKICAgICBXZWJLaXRVUklSZXNwb25z
ZSogcmVzcG9uc2UgPSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9yZXNwb25zZShyZXNvdXJjZSk7
Ci0gICAgZ19hc3NlcnQoV0VCS0lUX0lTX1VSSV9SRVNQT05TRShyZXNwb25zZSkpOwotICAgIGdf
YXNzZXJ0KCF3ZWJraXRfdXJpX3Jlc3BvbnNlX2dldF9odHRwX2hlYWRlcnMocmVzcG9uc2UpKTsK
KyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19VUklfUkVTUE9OU0UocmVzcG9uc2UpKTsKKyAg
ICBnX2Fzc2VydF9udWxsKHdlYmtpdF91cmlfcmVzcG9uc2VfZ2V0X2h0dHBfaGVhZGVycyhyZXNw
b25zZSkpOwogCiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaGVh
ZGVycyIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAg
cmVzb3VyY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fcmVzb3VyY2UodGVzdC0+bV93ZWJW
aWV3KTsKLSAgICBnX2Fzc2VydChXRUJLSVRfSVNfV0VCX1JFU09VUkNFKHJlc291cmNlKSk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfV0VCX1JFU09VUkNFKHJlc291cmNlKSk7CiAgICAg
cmVzcG9uc2UgPSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9yZXNwb25zZShyZXNvdXJjZSk7Ci0g
ICAgZ19hc3NlcnQoV0VCS0lUX0lTX1VSSV9SRVNQT05TRShyZXNwb25zZSkpOworICAgIGdfYXNz
ZXJ0X3RydWUoV0VCS0lUX0lTX1VSSV9SRVNQT05TRShyZXNwb25zZSkpOwogICAgIFNvdXBNZXNz
YWdlSGVhZGVycyogaGVhZGVycyA9IHdlYmtpdF91cmlfcmVzcG9uc2VfZ2V0X2h0dHBfaGVhZGVy
cyhyZXNwb25zZSk7Ci0gICAgZ19hc3NlcnQoaGVhZGVycyk7CisgICAgZ19hc3NlcnRfbnVsbCho
ZWFkZXJzKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X29u
ZShoZWFkZXJzLCAiRm9vIiksID09LCAiYmFyIik7CiB9CiAKQEAgLTU3Niw3ICs1NzYsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0UmVkaXJlY3RUb0RhdGFVUkkoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAgICAgc2l6ZV90IG1haW5SZXNvdXJjZURhdGFTaXplID0gMDsKICAgICBjb25z
dCBjaGFyKiBtYWluUmVzb3VyY2VEYXRhID0gdGVzdC0+bWFpblJlc291cmNlRGF0YShtYWluUmVz
b3VyY2VEYXRhU2l6ZSk7CiAgICAgZ19hc3NlcnRfY21waW50KG1haW5SZXNvdXJjZURhdGFTaXpl
LCA9PSwgc3RybGVuKGV4cGVjdGVkRGF0YSkpOwotICAgIGdfYXNzZXJ0KCFzdHJuY21wKG1haW5S
ZXNvdXJjZURhdGEsIGV4cGVjdGVkRGF0YSwgbWFpblJlc291cmNlRGF0YVNpemUpKTsKKyAgICBn
X2Fzc2VydF9jbXBpbnQoc3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCBleHBlY3RlZERhdGEsIG1h
aW5SZXNvdXJjZURhdGFTaXplKSwgPT0sIDApOwogfQogCiBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxs
YmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFy
KiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9pbnRlcikKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9j
ZXNzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlw
cm9jZXNzLmNwcAppbmRleCBiOWI4MTczM2Y3OWQ1ZmY5NWY4Mjk0ZWNlYzAwZDE1MGNhMDc4MzA4
Li44Nzg5NzcyYTBhZDA5MTQ5M2ZhMDNiMDUzMmQ4YjlmZTJkNGNkODg1IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE11bHRpcHJvY2Vzcy5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RNdWx0aXByb2Nl
c3MuY3BwCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG51bGxwdHIsCiAg
ICAgICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLAogICAgICAgICAgICAgLTEsIG51bGxw
dHIsIG51bGxwdHIpKTsKLSAgICAgICAgZ19hc3NlcnQocmVzdWx0KTsKKyAgICAgICAgZ19hc3Nl
cnRfbm9ubnVsbChyZXN1bHQpOwogCiAgICAgICAgIGd1aW50MzIgaWRlbnRpZmllciA9IDA7CiAg
ICAgICAgIGdfdmFyaWFudF9nZXQocmVzdWx0LmdldCgpLCAiKHUpIiwgJmlkZW50aWZpZXIpOwpA
QCAtMTIyLDggKzEyMiw4IEBAIHN0YXRpYyB2b2lkIHRlc3RQcm9jZXNzUGVyV2ViVmlldyhNdWx0
aXByb2Nlc3NUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bVZpZXdzOyBpKyspIHsKICAgICAgICAgdGVzdC0+bG9hZFdlYlZpZXdBbmRX
YWl0VW50aWxMb2FkZWQoaSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfVklFVyh0
ZXN0LT5tX3dlYlZpZXdzW2ldLmdldCgpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KHRlc3QtPm1fd2Vi
Vmlld0J1c05hbWVzW2ldKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfV0VCX1ZJ
RVcodGVzdC0+bV93ZWJWaWV3c1tpXS5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxs
KHRlc3QtPm1fd2ViVmlld0J1c05hbWVzW2ldKTsKICAgICB9CiAKICAgICBnX2Fzc2VydF9jbXB1
aW50KHRlc3QtPm1faW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNTaWduYWxDb3VudCwgPT0sIG51bVZp
ZXdzKTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJLaXRXZWJWaWV3KiB2
aWV3Q3JlYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgewotICAgICAgICBnX2Fzc2Vy
dCh3ZWJWaWV3ID09IG1fd2ViVmlldyk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJWaWV3
LCA9PSwgbV93ZWJWaWV3KTsKIAogICAgICAgICBhdXRvKiBuZXdXZWJWaWV3ID0gVGVzdDo6Y3Jl
YXRlV2ViVmlldyh3ZWJWaWV3KTsKICNpZiBQTEFURk9STShHVEspCkBAIC0yMTAsMTMgKzIxMCwx
MyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHZpZXdSZWFkeVRvU2hvdyhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQobV93ZWJWaWV3ICE9IHdlYlZpZXcpOwor
ICAgICAgICBnX2Fzc2VydF9jbXBoZXgobV93ZWJWaWV3LCAhPSwgd2ViVmlldyk7CiAgICAgICAg
IG1fd2ViVmlld0V2ZW50cy5hcHBlbmQoUmVhZHlUb1Nob3cpOwogICAgIH0KIAogICAgIHZvaWQg
dmlld0Nsb3NlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgewotICAgICAgICBnX2Fzc2Vy
dChtX3dlYlZpZXcgIT0gd2ViVmlldyk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGhleChtX3dlYlZp
ZXcsICE9LCB3ZWJWaWV3KTsKIAogICAgICAgICBtX3dlYlZpZXdFdmVudHMuYXBwZW5kKENsb3Nl
KTsKICAgICAgICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7CkBAIC0yNTgsNyArMjU4LDcgQEAg
c3RhdGljIHZvaWQgdGVzdFdlYlByb2Nlc3NMaW1pdChNdWx0aXByb2Nlc3NUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogICAgIC8vIENyZWF0ZSB0d28gd2ViIHZpZXdzIGJ1dCB0aGVyZSBzaG91
bGQgYmUgb25seSBvbmUgd2ViIHByb2Nlc3MuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bVZpZXdzOyBpKyspIHsKICAgICAgICAgdGVzdC0+bG9hZFdlYlZpZXdBbmRXYWl0VW50aWxM
b2FkZWQoaSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfVklFVyh0ZXN0LT5tX3dl
YlZpZXdzW2ldLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1dFQl9W
SUVXKHRlc3QtPm1fd2ViVmlld3NbaV0uZ2V0KCkpKTsKICAgICB9CiAKICAgICBnX2Fzc2VydF9j
bXB1aW50KHRlc3QtPm1faW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNTaWduYWxDb3VudCwgPT0sIDEp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RS
ZXNvdXJjZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RS
ZXNvdXJjZXMuY3BwCmluZGV4IDM0NzA3MjBmNTdkYjBlOTk5MzM4YzhlZDQ1NWRjMDk2YmMwODEz
ZjAuLjY1ZWYwZmQ1ODc3MjAyOTc3NDMxZTRkZGNhNWViYmE4MDRlODZjZDMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0UmVzb3VyY2VzLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFJlc291cmNlcy5j
cHAKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VS
ZWNlaXZlZFJlc3BvbnNlQ2FsbGJhY2soV2ViS2l0V2ViUmVzb3VyY2UqIHJlc291cmNlLCBHUGFy
YW1TcGVjKiwgUmVzb3VyY2VzVGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KHdl
YmtpdF93ZWJfcmVzb3VyY2VfZ2V0X3Jlc3BvbnNlKHJlc291cmNlKSk7CisgICAgICAgIGdfYXNz
ZXJ0X25vbm51bGwod2Via2l0X3dlYl9yZXNvdXJjZV9nZXRfcmVzcG9uc2UocmVzb3VyY2UpKTsK
ICAgICAgICAgdGVzdC0+cmVzb3VyY2VSZWNlaXZlZFJlc3BvbnNlKHJlc291cmNlKTsKICAgICB9
CiAKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VG
YWlsZWRDYWxsYmFjayhXZWJLaXRXZWJSZXNvdXJjZSogcmVzb3VyY2UsIEdFcnJvciogZXJyb3Is
IFJlc291cmNlc1Rlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBnX2Fzc2VydChlcnJvcik7Cisg
ICAgICAgIGdfYXNzZXJ0X25vbm51bGwoZXJyb3IpOwogICAgICAgICB0ZXN0LT5yZXNvdXJjZUZh
aWxlZChyZXNvdXJjZSwgZXJyb3IpOwogICAgIH0KIApAQCAtMTY0LDggKzE2NCw4IEBAIHB1Ymxp
YzoKICAgICAgICAgc2l6ZV90IGRhdGFTaXplOwogICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJv
cj4gZXJyb3I7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSB3ZWJraXRfd2ViX3Jlc291
cmNlX2dldF9kYXRhX2ZpbmlzaChXRUJLSVRfV0VCX1JFU09VUkNFKG9iamVjdCksIHJlc3VsdCwg
JmRhdGFTaXplLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0
KCkpOwotICAgICAgICBnX2Fzc2VydChkYXRhKTsKKyAgICAgICAgZ19hc3NlcnRfbm9fZXJyb3Io
ZXJyb3IuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKGRhdGEpOwogICAgICAgICBn
X2Fzc2VydF9jbXBpbnQoZGF0YVNpemUsID4sIDApOwogCiAgICAgICAgIFJlc291cmNlc1Rlc3Qq
IHRlc3QgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZXNUZXN0Kj4odXNlckRhdGEpOwpAQCAtMTgzLDIw
ICsxODMsMjAgQEAgcHVibGljOgogICAgICAgICBjb25zdCBjaGFyKiB1cmkgPSB3ZWJraXRfd2Vi
X3Jlc291cmNlX2dldF91cmkocmVzb3VyY2UpOwogICAgICAgICBpZiAodXJpID09IGtTZXJ2ZXIt
PmdldFVSSUZvclBhdGgoIi8iKSkgewogICAgICAgICAgICAgZ19hc3NlcnRfY21waW50KG1fcmVz
b3VyY2VEYXRhU2l6ZSwgPT0sIHN0cmxlbihrSW5kZXhIdG1sKSk7Ci0gICAgICAgICAgICBnX2Fz
c2VydCghc3RybmNtcChtX3Jlc291cmNlRGF0YS5nZXQoKSwga0luZGV4SHRtbCwgbV9yZXNvdXJj
ZURhdGFTaXplKSk7CisgICAgICAgICAgICBnX2Fzc2VydF9jbXBpbnQoc3RybmNtcChtX3Jlc291
cmNlRGF0YS5nZXQoKSwga0luZGV4SHRtbCwgbV9yZXNvdXJjZURhdGFTaXplKSwgPT0sIDApOwog
ICAgICAgICB9IGVsc2UgaWYgKHVyaSA9PSBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvc3R5bGUu
Y3NzIikpIHsKICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcGludChtX3Jlc291cmNlRGF0YVNpemUs
ID09LCBzdHJsZW4oa1N0eWxlQ1NTKSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghc3RybmNtcCht
X3Jlc291cmNlRGF0YS5nZXQoKSwga1N0eWxlQ1NTLCBtX3Jlc291cmNlRGF0YVNpemUpKTsKKyAg
ICAgICAgICAgIGdfYXNzZXJ0X2NtcGludChzdHJuY21wKG1fcmVzb3VyY2VEYXRhLmdldCgpLCBr
U3R5bGVDU1MsIG1fcmVzb3VyY2VEYXRhU2l6ZSksID09LCAwKTsKICAgICAgICAgfSBlbHNlIGlm
ICh1cmkgPT0ga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2phdmFzY3JpcHQuanMiKSkgewogICAg
ICAgICAgICAgZ19hc3NlcnRfY21waW50KG1fcmVzb3VyY2VEYXRhU2l6ZSwgPT0sIHN0cmxlbihr
SmF2YXNjcmlwdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQoIXN0cm5jbXAobV9yZXNvdXJjZURh
dGEuZ2V0KCksIGtKYXZhc2NyaXB0LCBtX3Jlc291cmNlRGF0YVNpemUpKTsKKyAgICAgICAgICAg
IGdfYXNzZXJ0X2NtcGludChzdHJuY21wKG1fcmVzb3VyY2VEYXRhLmdldCgpLCBrSmF2YXNjcmlw
dCwgbV9yZXNvdXJjZURhdGFTaXplKSwgPT0sIDApOwogICAgICAgICB9IGVsc2UgaWYgKHVyaSA9
PSBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvYmxhbmsuaWNvIikpIHsKICAgICAgICAgICAgIEdV
bmlxdWVQdHI8Y2hhcj4gZmlsZVBhdGgoZ19idWlsZF9maWxlbmFtZShUZXN0OjpnZXRSZXNvdXJj
ZXNEaXIoKS5kYXRhKCksICJibGFuay5pY28iLCBudWxscHRyKSk7CiAgICAgICAgICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGNvbnRlbnRzOwogICAgICAgICAgICAgZ3NpemUgY29udGVudHNMZW5n
dGg7CiAgICAgICAgICAgICBnX2ZpbGVfZ2V0X2NvbnRlbnRzKGZpbGVQYXRoLmdldCgpLCAmY29u
dGVudHMub3V0UHRyKCksICZjb250ZW50c0xlbmd0aCwgbnVsbHB0cik7CiAgICAgICAgICAgICBn
X2Fzc2VydF9jbXBpbnQobV9yZXNvdXJjZURhdGFTaXplLCA9PSwgY29udGVudHNMZW5ndGgpOwot
ICAgICAgICAgICAgZ19hc3NlcnQoIW1lbWNtcChtX3Jlc291cmNlRGF0YS5nZXQoKSwgY29udGVu
dHMuZ2V0KCksIGNvbnRlbnRzTGVuZ3RoKSk7CisgICAgICAgICAgICBnX2Fzc2VydF9jbXBtZW0o
bV9yZXNvdXJjZURhdGEuZ2V0KCksIGNvbnRlbnRzTGVuZ3RoLCBjb250ZW50cy5nZXQoKSwgY29u
dGVudHNMZW5ndGgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGdfYXNzZXJ0X25vdF9y
ZWFjaGVkKCk7CiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CkBAIC0yMTIsMjYgKzIx
MiwyNiBAQCBwdWJsaWM6CiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Jlc291cmNlcyhSZXNvdXJj
ZXNUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIC8vIE5vdGhpbmcgbG9hZGVkIHll
dCwgdGhlcmUgc2hvdWxuZCd0IGJlIHJlc291cmNlcy4KLSAgICBnX2Fzc2VydCghd2Via2l0X3dl
Yl92aWV3X2dldF9tYWluX3Jlc291cmNlKHRlc3QtPm1fd2ViVmlldykpOwotICAgIGdfYXNzZXJ0
KCF0ZXN0LT5zdWJyZXNvdXJjZXMoKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X21haW5fcmVzb3VyY2UodGVzdC0+bV93ZWJWaWV3KSk7CisgICAgZ19hc3NlcnRfbnVs
bCh0ZXN0LT5zdWJyZXNvdXJjZXMoKSk7CiAKICAgICAvLyBMb2FkIHNpbXBsZSBwYWdlIHdpdGhv
dXQgc3VicmVzb3VyY2VzLgogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT5UZXN0aW5n
IFdlYktpdEdUSys8L2JvZHk+PC9odG1sPiIsIDApOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOwogICAgIFdlYktpdFdlYlJlc291cmNlKiByZXNvdXJjZSA9IHdlYmtpdF93ZWJf
dmlld19nZXRfbWFpbl9yZXNvdXJjZSh0ZXN0LT5tX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KHJl
c291cmNlKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHJlc291cmNlKTsKICAgICBnX2Fzc2VydF9j
bXBzdHIod2Via2l0X3dlYl92aWV3X2dldF91cmkodGVzdC0+bV93ZWJWaWV3KSwgPT0sIHdlYmtp
dF93ZWJfcmVzb3VyY2VfZ2V0X3VyaShyZXNvdXJjZSkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5z
dWJyZXNvdXJjZXMoKSk7CisgICAgZ19hc3NlcnRfbnVsbCh0ZXN0LT5zdWJyZXNvdXJjZXMoKSk7
CiAKICAgICAvLyBMb2FkIHNpbXBsZSBwYWdlIHdpdGggc3VicmVzb3VyY2VzLgogICAgIHRlc3Qt
PmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CiAgICAgdGVzdC0+
d2FpdFVudGlsUmVzb3VyY2VzTG9hZGVkKDQpOwogCiAgICAgcmVzb3VyY2UgPSB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X21haW5fcmVzb3VyY2UodGVzdC0+bV93ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChy
ZXNvdXJjZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChyZXNvdXJjZSk7CiAgICAgZ19hc3NlcnRf
Y21wc3RyKHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHRlc3QtPm1fd2ViVmlldyksID09LCB3ZWJr
aXRfd2ViX3Jlc291cmNlX2dldF91cmkocmVzb3VyY2UpKTsKICAgICBHTGlzdCogc3VicmVzb3Vy
Y2VzID0gdGVzdC0+c3VicmVzb3VyY2VzKCk7Ci0gICAgZ19hc3NlcnQoc3VicmVzb3VyY2VzKTsK
KyAgICBnX2Fzc2VydF9ub25udWxsKHN1YnJlc291cmNlcyk7CiAgICAgZ19hc3NlcnRfY21waW50
KGdfbGlzdF9sZW5ndGgoc3VicmVzb3VyY2VzKSwgPT0sIDMpOwogCiAjaWYgMApAQCAtMzE1LDcg
KzMxNSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBpZiAoIW1fbG9hZEV2ZW50cy5jb250YWlucyhG
YWlsZWQpKSB7CiAgICAgICAgICAgICBXZWJLaXRVUklSZXNwb25zZSogcmVzcG9uc2UgPSB3ZWJr
aXRfd2ViX3Jlc291cmNlX2dldF9yZXNwb25zZShtX3Jlc291cmNlLmdldCgpKTsKLSAgICAgICAg
ICAgIGdfYXNzZXJ0KHJlc3BvbnNlKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X25vbm51bGwocmVz
cG9uc2UpOwogICAgICAgICAgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF91cmlfcmVzcG9uc2Vf
Z2V0X2NvbnRlbnRfbGVuZ3RoKHJlc3BvbnNlKSwgPT0sIG1fcmVzb3VyY2VEYXRhUmVjZWl2ZWQp
OwogICAgICAgICB9CiAgICAgICAgIG1fbG9hZEV2ZW50cy5hcHBlbmQoRmluaXNoZWQpOwpAQCAt
MzM4LDcgKzMzOCw3IEBAIHB1YmxpYzoKICAgICBXZWJLaXRVUklSZXNwb25zZSogd2FpdFVudGls
UmVzb3VyY2VMb2FkRmluaXNoZWRBbmRSZXR1cm5VUklSZXNwb25zZSgpCiAgICAgewogICAgICAg
ICB3YWl0VW50aWxSZXNvdXJjZUxvYWRGaW5pc2hlZCgpOwotICAgICAgICBnX2Fzc2VydChtX3Jl
c291cmNlKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChtX3Jlc291cmNlKTsKICAgICAgICAg
cmV0dXJuIHdlYmtpdF93ZWJfcmVzb3VyY2VfZ2V0X3Jlc3BvbnNlKG1fcmVzb3VyY2UuZ2V0KCkp
OwogICAgIH0KIApAQCAtMzUxLDcgKzM1MSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJSZXNvdXJj
ZUxvYWRpbmcoU2luZ2xlUmVzb3VyY2VMb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsK
ICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9qYXZhc2NyaXB0Lmh0
bWwiKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbFJlc291cmNlTG9hZEZpbmlzaGVkKCk7
Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9yZXNvdXJjZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbCh0
ZXN0LT5tX3Jlc291cmNlKTsKICAgICBWZWN0b3I8U2luZ2xlUmVzb3VyY2VMb2FkVGVzdDo6TG9h
ZEV2ZW50cz4mIGV2ZW50cyA9IHRlc3QtPm1fbG9hZEV2ZW50czsKICAgICBnX2Fzc2VydF9jbXBp
bnQoZXZlbnRzLnNpemUoKSwgPT0sIDUpOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMF0s
ID09LCBTaW5nbGVSZXNvdXJjZUxvYWRUZXN0OjpTdGFydGVkKTsKQEAgLTM2Myw3ICszNjMsNyBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViUmVzb3VyY2VMb2FkaW5nKFNpbmdsZVJlc291cmNlTG9hZFRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdl
dFVSSUZvclBhdGgoIi9yZWRpcmVjdGVkLWNzcy5odG1sIikuZGF0YSgpKTsKICAgICB0ZXN0LT53
YWl0VW50aWxSZXNvdXJjZUxvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fcmVz
b3VyY2UpOworICAgIGdfYXNzZXJ0X25vbm51bGwodGVzdC0+bV9yZXNvdXJjZSk7CiAgICAgZ19h
c3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCA2KTsKICAgICBnX2Fzc2VydF9jbXBpbnQo
ZXZlbnRzWzBdLCA9PSwgU2luZ2xlUmVzb3VyY2VMb2FkVGVzdDo6U3RhcnRlZCk7CiAgICAgZ19h
c3NlcnRfY21waW50KGV2ZW50c1sxXSwgPT0sIFNpbmdsZVJlc291cmNlTG9hZFRlc3Q6OlNlbnRS
ZXF1ZXN0KTsKQEAgLTM3NSw3ICszNzUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViUmVzb3VyY2VM
b2FkaW5nKFNpbmdsZVJlc291cmNlTG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAg
ICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbnZhbGlkLWNzcy5odG1s
IikuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxSZXNvdXJjZUxvYWRGaW5pc2hlZCgpOwot
ICAgIGdfYXNzZXJ0KHRlc3QtPm1fcmVzb3VyY2UpOworICAgIGdfYXNzZXJ0X25vbm51bGwodGVz
dC0+bV9yZXNvdXJjZSk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCA0
KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwgU2luZ2xlUmVzb3VyY2VMb2Fk
VGVzdDo6U3RhcnRlZCk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1sxXSwgPT0sIFNpbmds
ZVJlc291cmNlTG9hZFRlc3Q6OlNlbnRSZXF1ZXN0KTsKQEAgLTQ0MCw3ICs0NDAsNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViUmVzb3VyY2VTdWdnZXN0ZWRGaWxlbmFtZShTaW5nbGVSZXNvdXJjZUxv
YWRUZXN0KiB0ZXN0LCBnY29ucwogCiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklG
b3JQYXRoKCIvaW1hZ2UuaHRtbCIpLmRhdGEoKSk7CiAgICAgcmVzcG9uc2UgPSB0ZXN0LT53YWl0
VW50aWxSZXNvdXJjZUxvYWRGaW5pc2hlZEFuZFJldHVyblVSSVJlc3BvbnNlKCk7Ci0gICAgZ19h
c3NlcnQoIXdlYmtpdF91cmlfcmVzcG9uc2VfZ2V0X3N1Z2dlc3RlZF9maWxlbmFtZShyZXNwb25z
ZSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3VyaV9yZXNwb25zZV9nZXRfc3VnZ2VzdGVk
X2ZpbGVuYW1lKHJlc3BvbnNlKSk7CiB9CiAKIGNsYXNzIFJlc291cmNlVVJJVHJhY2tpbmdUZXN0
OiBwdWJsaWMgU2luZ2xlUmVzb3VyY2VMb2FkVGVzdCB7CkBAIC00NTQsNyArNDU0LDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIHZvaWQgdXJpQ2hhbmdlZChXZWJLaXRXZWJSZXNvdXJjZSogcmVz
b3VyY2UsIEdQYXJhbVNwZWMqLCBSZXNvdXJjZVVSSVRyYWNraW5nVGVzdCogdGVzdCkKICAgICB7
Ci0gICAgICAgIGdfYXNzZXJ0KHJlc291cmNlID09IHRlc3QtPm1fcmVzb3VyY2UuZ2V0KCkpOwor
ICAgICAgICBnX2Fzc2VydF9jbXBoZXgocmVzb3VyY2UsID09LCB0ZXN0LT5tX3Jlc291cmNlLmdl
dCgpKTsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwg
IT0sIHdlYmtpdF93ZWJfcmVzb3VyY2VfZ2V0X3VyaSh0ZXN0LT5tX3Jlc291cmNlLmdldCgpKSk7
CiAgICAgICAgIHRlc3QtPm1fYWN0aXZlVVJJID0gd2Via2l0X3dlYl9yZXNvdXJjZV9nZXRfdXJp
KHRlc3QtPm1fcmVzb3VyY2UuZ2V0KCkpOwogICAgIH0KQEAgLTUyOCw3ICs1MjgsNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViUmVzb3VyY2VHZXREYXRhKFJlc291cmNlc1Rlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAgICAgdGVzdC0+d2FpdFVudGlsUmVzb3VyY2VzTG9hZGVkKDQpOwogCiAgICAg
V2ViS2l0V2ViUmVzb3VyY2UqIHJlc291cmNlID0gd2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jl
c291cmNlKHRlc3QtPm1fd2ViVmlldyk7Ci0gICAgZ19hc3NlcnQocmVzb3VyY2UpOworICAgIGdf
YXNzZXJ0X25vbm51bGwocmVzb3VyY2UpOwogICAgIHRlc3QtPmNoZWNrUmVzb3VyY2VEYXRhKHJl
c291cmNlKTsKIAogICAgIEdMaXN0KiBzdWJyZXNvdXJjZXMgPSB0ZXN0LT5zdWJyZXNvdXJjZXMo
KTsKQEAgLTU1OCw3ICs1NTgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViUmVzb3VyY2VHZXREYXRh
RXJyb3IoVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAgICAgc2l6ZV90IGRhdGFTaXpl
OwogICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIGF1dG8qIGRh
dGEgPSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9kYXRhX2ZpbmlzaChXRUJLSVRfV0VCX1JFU09V
UkNFKHNvdXJjZSksIHJlc3VsdCwgJmRhdGFTaXplLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgICAg
ICBnX2Fzc2VydCghZGF0YSk7CisgICAgICAgIGdfYXNzZXJ0X251bGwoZGF0YSk7CiAgICAgICAg
IGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNF
TExFRCk7CiAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQoc3RhdGljX2Nhc3Q8R01haW5Mb29wKj4o
dXNlckRhdGEpKTsKICAgICB9LCBtYWluTG9vcC5nZXQoKSk7CkBAIC01NzIsMjYgKzU3MiwyNiBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Jlc291cmNlc0hpc3RvcnlDYWNoZShTaW5nbGVSZXNv
dXJjZUxvYWRUZXN0KiB0ZXN0LCBnY29ucwogICAgIHRlc3QtPmxvYWRVUkkoamF2YXNjcmlwdFVS
SS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbFJlc291cmNlTG9hZEZpbmlzaGVkKCk7CiAg
ICAgV2ViS2l0V2ViUmVzb3VyY2UqIHJlc291cmNlID0gd2Via2l0X3dlYl92aWV3X2dldF9tYWlu
X3Jlc291cmNlKHRlc3QtPm1fd2ViVmlldyk7Ci0gICAgZ19hc3NlcnQocmVzb3VyY2UpOworICAg
IGdfYXNzZXJ0X25vbm51bGwocmVzb3VyY2UpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRf
d2ViX3Jlc291cmNlX2dldF91cmkocmVzb3VyY2UpLCA9PSwgamF2YXNjcmlwdFVSSS5kYXRhKCkp
OwogCiAgICAgQ1N0cmluZyBzaW1wbGVTdHlsZUNTU1VSSSA9IGtTZXJ2ZXItPmdldFVSSUZvclBh
dGgoIi9zaW1wbGUtc3R5bGUtY3NzLmh0bWwiKTsKICAgICB0ZXN0LT5sb2FkVVJJKHNpbXBsZVN0
eWxlQ1NTVVJJLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsUmVzb3VyY2VMb2FkRmluaXNo
ZWQoKTsKICAgICByZXNvdXJjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9yZXNvdXJjZSh0
ZXN0LT5tX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KHJlc291cmNlKTsKKyAgICBnX2Fzc2VydF9u
b25udWxsKHJlc291cmNlKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9yZXNvdXJj
ZV9nZXRfdXJpKHJlc291cmNlKSwgPT0sIHNpbXBsZVN0eWxlQ1NTVVJJLmRhdGEoKSk7CiAKICAg
ICB0ZXN0LT5nb0JhY2soKTsKICAgICB0ZXN0LT53YWl0VW50aWxSZXNvdXJjZUxvYWRGaW5pc2hl
ZCgpOwogICAgIHJlc291cmNlID0gd2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jlc291cmNlKHRl
c3QtPm1fd2ViVmlldyk7Ci0gICAgZ19hc3NlcnQocmVzb3VyY2UpOworICAgIGdfYXNzZXJ0X25v
bm51bGwocmVzb3VyY2UpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX3Jlc291cmNl
X2dldF91cmkocmVzb3VyY2UpLCA9PSwgamF2YXNjcmlwdFVSSS5kYXRhKCkpOwogCiAgICAgdGVz
dC0+Z29Gb3J3YXJkKCk7CiAgICAgdGVzdC0+d2FpdFVudGlsUmVzb3VyY2VMb2FkRmluaXNoZWQo
KTsKICAgICByZXNvdXJjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9yZXNvdXJjZSh0ZXN0
LT5tX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KHJlc291cmNlKTsKKyAgICBnX2Fzc2VydF9ub25u
dWxsKHJlc291cmNlKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9yZXNvdXJjZV9n
ZXRfdXJpKHJlc291cmNlKSwgPT0sIHNpbXBsZVN0eWxlQ1NTVVJJLmRhdGEoKSk7CiB9CiAKQEAg
LTY0OSw3ICs2NDksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViUmVzb3VyY2VTZW5kUmVxdWVzdChT
ZW5kUmVxdWVzdFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+c2V0RXhwZWN0
ZWROZXdSZXNvdXJjZVVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvamF2YXNjcmlwdC5qcyIp
KTsKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoInJlbGF0aXZlLWph
dmFzY3JpcHQuaHRtbCIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsUmVzb3VyY2VMb2Fk
RmluaXNoZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3Jlc291cmNlKTsKKyAgICBnX2Fzc2Vy
dF9ub25udWxsKHRlc3QtPm1fcmVzb3VyY2UpOwogCiAgICAgVmVjdG9yPFNpbmdsZVJlc291cmNl
TG9hZFRlc3Q6OkxvYWRFdmVudHM+JiBldmVudHMgPSB0ZXN0LT5tX2xvYWRFdmVudHM7CiAgICAg
Z19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCA1KTsKQEAgLTY2NCw3ICs2NjQsNyBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViUmVzb3VyY2VTZW5kUmVxdWVzdChTZW5kUmVxdWVzdFRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+c2V0RXhwZWN0ZWRDYW5jZWxsZWRSZXNv
dXJjZVVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvY2FuY2VsLXRoaXMuanMiKSk7CiAgICAg
dGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvcmVzb3VyY2UtdG8tY2FuY2Vs
Lmh0bWwiKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbFJlc291cmNlTG9hZEZpbmlzaGVk
KCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9yZXNvdXJjZSk7CisgICAgZ19hc3NlcnRfbm9ubnVs
bCh0ZXN0LT5tX3Jlc291cmNlKTsKIAogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgp
LCA9PSwgMyk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1swXSwgPT0sIFNpbmdsZVJlc291
cmNlTG9hZFRlc3Q6OlN0YXJ0ZWQpOwpAQCAtNjc3LDcgKzY3Nyw3IEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJSZXNvdXJjZVNlbmRSZXF1ZXN0KFNlbmRSZXF1ZXN0VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKICAgICB0ZXN0LT5zZXRFeHBlY3RlZE5ld1Jlc291cmNlVVJJQWZ0ZXJSZWRpcmVjdGlv
bihrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvamF2YXNjcmlwdC1hZnRlci1yZWRpcmVjdGlvbi5q
cyIpKTsKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoInJlZGlyZWN0
ZWQtamF2YXNjcmlwdC5odG1sIikuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxSZXNvdXJj
ZUxvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fcmVzb3VyY2UpOworICAgIGdf
YXNzZXJ0X25vbm51bGwodGVzdC0+bV9yZXNvdXJjZSk7CiAKICAgICBnX2Fzc2VydF9jbXBpbnQo
ZXZlbnRzLnNpemUoKSwgPT0sIDYpOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMF0sID09
LCBTaW5nbGVSZXNvdXJjZUxvYWRUZXN0OjpTdGFydGVkKTsKQEAgLTY5Myw3ICs2OTMsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViUmVzb3VyY2VTZW5kUmVxdWVzdChTZW5kUmVxdWVzdFRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+c2V0RXhwZWN0ZWRDYW5jZWxsZWRSZXNvdXJj
ZVVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvcmVkaXJlY3RlZC10by1jYW5jZWwuanMiKSk7
CiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvcmVkaXJlY3RlZC10
by1jYW5jZWwuaHRtbCIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsUmVzb3VyY2VMb2Fk
RmluaXNoZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3Jlc291cmNlKTsKKyAgICBnX2Fzc2Vy
dF9ub25udWxsKHRlc3QtPm1fcmVzb3VyY2UpOwogCiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50
cy5zaXplKCksID09LCA0KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwgU2lu
Z2xlUmVzb3VyY2VMb2FkVGVzdDo6U3RhcnRlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAKaW5kZXggNzBlNjA2Yjk4NzIxMDZiYTdjMDNj
NGE5YzdhODA1MmNlNjZjY2I2My4uNjZjNzg2MzUxYWRlZGE1NjliZjdlNDJkMjQzNmZjOTg4NDI0
ZWM0NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RTU0wuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
U1NMLmNwcApAQCAtNzIsMTkgKzcyLDE4IEBAIHN0YXRpYyB2b2lkIHRlc3RTU0woU1NMVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIHRlc3QtPmxvYWRVUkkoa0h0dHBzU2VydmVyLT5n
ZXRVUklGb3JQYXRoKCIvIikuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNo
ZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2NlcnRpZmljYXRlKTsKKyAgICBnX2Fzc2VydF9u
b25udWxsKHRlc3QtPm1fY2VydGlmaWNhdGUpOwogICAgIC8vIFNlbGYtc2lnbmVkIGNlcnRpZmlj
YXRlIGhhcyBhIG51bGxwdHIgaXNzdWVyLgotICAgIGdfYXNzZXJ0KCFnX3Rsc19jZXJ0aWZpY2F0
ZV9nZXRfaXNzdWVyKHRlc3QtPm1fY2VydGlmaWNhdGUuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9u
dWxsKGdfdGxzX2NlcnRpZmljYXRlX2dldF9pc3N1ZXIodGVzdC0+bV9jZXJ0aWZpY2F0ZS5nZXQo
KSkpOwogICAgIC8vIFdlIGFsd2F5cyBleHBlY3QgZXJyb3JzIGJlY2F1c2Ugd2UgYXJlIHVzaW5n
IGEgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUsCiAgICAgLy8gYnV0IG9ubHkgR19UTFNfQ0VSVElG
SUNBVEVfVU5LTk9XTl9DQSBmbGFncyBzaG91bGQgYmUgcHJlc2VudC4KLSAgICBnX2Fzc2VydCh0
ZXN0LT5tX3Rsc0Vycm9ycyk7CiAgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX3Rsc0Vycm9y
cywgPT0sIEdfVExTX0NFUlRJRklDQVRFX1VOS05PV05fQ0EpOwogCiAgICAgLy8gTm9uIEhUVFBT
IGxvYWRzIHNob3VsZG4ndCBoYXZlIGEgY2VydGlmaWNhdGUgbm9yIGVycm9ycy4KICAgICB0ZXN0
LT5sb2FkSHRtbChpbmRleEhUTUwsIDApOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hl
ZCgpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2NlcnRpZmljYXRlKTsKLSAgICBnX2Fzc2VydCgh
dGVzdC0+bV90bHNFcnJvcnMpOworICAgIGdfYXNzZXJ0X251bGwodGVzdC0+bV9jZXJ0aWZpY2F0
ZSk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX3Rsc0Vycm9ycywgPT0sIDApOwogCiAg
ICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF90bHNfZXJyb3JzX3BvbGljeShjb250ZXh0LCBvcmln
aW5hbFBvbGljeSk7CiB9CkBAIC0xMDIsNyArMTAxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHZvaWQgaW5zZWN1cmVDb250ZW50RGV0ZWN0ZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudCBldmVudCwgSW5zZWN1cmVDb250ZW50VGVz
dCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYlZpZXcgPT0gdGVzdC0+bV93ZWJW
aWV3KTsKKyAgICAgICAgZ19hc3NlcnRfY21waGV4KHdlYlZpZXcsID09LCB0ZXN0LT5tX3dlYlZp
ZXcpOwogCiAgICAgICAgIGlmIChldmVudCA9PSBXRUJLSVRfSU5TRUNVUkVfQ09OVEVOVF9SVU4p
CiAgICAgICAgICAgICB0ZXN0LT5tX2luc2VjdXJlQ29udGVudFJ1biA9IHRydWU7CkBAIC0xMjQs
MTAgKzEyMywxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0SW5zZWN1cmVDb250ZW50KEluc2VjdXJlQ29u
dGVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bG9hZFVSSShrSHR0cHNT
ZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbnNlY3VyZS1jb250ZW50LyIpLmRhdGEoKSk7CiAgICAg
dGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCghdGVzdC0+bV9p
bnNlY3VyZUNvbnRlbnRSdW4pOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPm1faW5zZWN1cmVD
b250ZW50UnVuKTsKICAgICAvLyBJbWFnZXMgYXJlIGN1cnJlbnRseSBhbHdheXMgZGlzcGxheWVk
LCBldmVuIGJ5cGFzc2luZyBtaXhlZCBjb250ZW50IHNldHRpbmdzLiBDaGVjawogICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI0NjkKLSAgICBnX2Fzc2Vy
dCh0ZXN0LT5tX2luc2VjdXJlQ29udGVudERpc3BsYXllZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0
ZXN0LT5tX2luc2VjdXJlQ29udGVudERpc3BsYXllZCk7CiAKICAgICB3ZWJraXRfd2ViX2NvbnRl
eHRfc2V0X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRleHQsIG9yaWdpbmFsUG9saWN5KTsKIH0KQEAg
LTEzOCwyNiArMTM3LDI2IEBAIHN0YXRpYyB2b2lkIHRlc3RUTFNFcnJvcnNQb2xpY3koU1NMVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0
ID0gd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldyk7CiAgICAgLy8g
VExTIGVycm9ycyBhcmUgdHJlYXRlZCBhcyB0cmFuc3BvcnQgZmFpbHVyZXMgYnkgZGVmYXVsdC4K
LSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Rsc19lcnJvcnNfcG9saWN5KGNv
bnRleHQpID09IFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMKTsKKyAgICBnX2Fzc2VydF9j
bXBpbnQod2Via2l0X3dlYl9jb250ZXh0X2dldF90bHNfZXJyb3JzX3BvbGljeShjb250ZXh0KSwg
PT0sIFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMKTsKIAogICAgIGFzc2VydElmU1NMUmVx
dWVzdFByb2Nlc3NlZCA9IHRydWU7CiAgICAgdGVzdC0+bG9hZFVSSShrSHR0cHNTZXJ2ZXItPmdl
dFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hl
ZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fbG9hZEZhaWxlZCk7Ci0gICAgZ19hc3NlcnQodGVz
dC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9h
ZEZhaWxlZCkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9h
ZFRyYWNraW5nVGVzdDo6TG9hZENvbW1pdHRlZCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+
bV9sb2FkRmFpbGVkKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fbG9hZEV2ZW50cy5jb250
YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRGYWlsZWQpKTsKKyAgICBnX2Fz
c2VydF9mYWxzZSh0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6
TG9hZENvbW1pdHRlZCkpOwogICAgIGFzc2VydElmU1NMUmVxdWVzdFByb2Nlc3NlZCA9IGZhbHNl
OwogCiAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF90bHNfZXJyb3JzX3BvbGljeShjb250ZXh0
LCBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfSUdOT1JFKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRf
d2ViX2NvbnRleHRfZ2V0X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRleHQpID09IFdFQktJVF9UTFNf
RVJST1JTX1BPTElDWV9JR05PUkUpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfd2ViX2Nv
bnRleHRfZ2V0X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRleHQpLCA9PSwgV0VCS0lUX1RMU19FUlJP
UlNfUE9MSUNZX0lHTk9SRSk7CiAKICAgICB0ZXN0LT5tX2xvYWRGYWlsZWQgPSBmYWxzZTsKICAg
ICB0ZXN0LT5sb2FkVVJJKGtIdHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7
CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQoIXRlc3Qt
Pm1fbG9hZEZhaWxlZCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV9sb2FkRmFpbGVkKTsK
IAogICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGxzX2Vycm9yc19wb2xpY3koY29udGV4dCwg
V0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0ZBSUwpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJf
Y29udGV4dF9nZXRfdGxzX2Vycm9yc19wb2xpY3koY29udGV4dCkgPT0gV0VCS0lUX1RMU19FUlJP
UlNfUE9MSUNZX0ZBSUwpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfd2ViX2NvbnRleHRf
Z2V0X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRleHQpLCA9PSwgV0VCS0lUX1RMU19FUlJPUlNfUE9M
SUNZX0ZBSUwpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0VExTRXJyb3JzUmVkaXJlY3QoU1NMVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTE2OSw5ICsxNjgsOSBAQCBzdGF0aWMgdm9pZCB0
ZXN0VExTRXJyb3JzUmVkaXJlY3QoU1NMVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBh
c3NlcnRJZlNTTFJlcXVlc3RQcm9jZXNzZWQgPSB0cnVlOwogICAgIHRlc3QtPmxvYWRVUkkoa0h0
dHBzU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvcmVkaXJlY3QiKS5kYXRhKCkpOwogICAgIHRlc3Qt
PndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fbG9hZEZhaWxl
ZCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2lu
Z1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZEZhaWxlZCkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2xv
YWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6TG9hZENvbW1pdHRlZCkpOworICAg
IGdfYXNzZXJ0X3RydWUodGVzdC0+bV9sb2FkRmFpbGVkKTsKKyAgICBnX2Fzc2VydF90cnVlKHRl
c3QtPm1fbG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExv
YWRGYWlsZWQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFp
bnMoTG9hZFRyYWNraW5nVGVzdDo6TG9hZENvbW1pdHRlZCkpOwogICAgIGFzc2VydElmU1NMUmVx
dWVzdFByb2Nlc3NlZCA9IGZhbHNlOwogCiAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF90bHNf
ZXJyb3JzX3BvbGljeShjb250ZXh0LCBvcmlnaW5hbFBvbGljeSk7CkBAIC0xOTQsOSArMTkzLDkg
QEAgc3RhdGljIHZvaWQgdGVzdFRMU0Vycm9yc0hUVFBBdXRoKFNTTFRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAgICAgZ19zaWduYWxfY29ubmVjdCh0ZXN0LT5tX3dlYlZpZXcsICJhdXRoZW50
aWNhdGUiLCBHX0NBTExCQUNLKHdlYlZpZXdBdXRoZW50aWNhdGlvbkNhbGxiYWNrKSwgTlVMTCk7
CiAgICAgdGVzdC0+bG9hZFVSSShrSHR0cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9hdXRoIiku
ZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLSAgICBnX2Fzc2Vy
dCh0ZXN0LT5tX2xvYWRGYWlsZWQpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fbG9hZEV2ZW50cy5j
b250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRGYWlsZWQpKTsKLSAgICBn
X2Fzc2VydCghdGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6Okxv
YWRDb21taXR0ZWQpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fbG9hZEZhaWxlZCk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5n
VGVzdDo6UHJvdmlzaW9uYWxMb2FkRmFpbGVkKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+
bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRDb21taXR0ZWQpKTsK
ICAgICBhc3NlcnRJZlNTTFJlcXVlc3RQcm9jZXNzZWQgPSBmYWxzZTsKIAogICAgIHdlYmtpdF93
ZWJfY29udGV4dF9zZXRfdGxzX2Vycm9yc19wb2xpY3koY29udGV4dCwgb3JpZ2luYWxQb2xpY3kp
OwpAQCAtMjUxLDcgKzI1MCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RMb2FkRmFpbGVkV2l0aFRMU0Vy
cm9ycyhUTFNFcnJvcnNUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIC8vIFRoZSBsb2Fk
LWZhaWxlZC13aXRoLXRscy1lcnJvcnMgc2lnbmFsIHNob3VsZCBiZSBlbWl0dGVkIHdoZW4gdGhl
cmUgaXMgYSBUTFMgZmFpbHVyZS4KICAgICB0ZXN0LT5sb2FkVVJJKGtIdHRwc1NlcnZlci0+Z2V0
VVJJRm9yUGF0aCgiL3Rlc3QtdGxzLyIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9h
ZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQoR19JU19UTFNfQ0VSVElGSUNBVEUodGVzdC0+Y2Vy
dGlmaWNhdGUoKSkpOworICAgIGdfYXNzZXJ0X3RydWUoR19JU19UTFNfQ0VSVElGSUNBVEUodGVz
dC0+Y2VydGlmaWNhdGUoKSkpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+dGxzRXJyb3Jz
KCksID09LCBHX1RMU19DRVJUSUZJQ0FURV9VTktOT1dOX0NBKTsKICAgICBnX2Fzc2VydF9jbXBz
dHIodGVzdC0+aG9zdCgpLCA9PSwgc291cF91cmlfZ2V0X2hvc3Qoa0h0dHBzU2VydmVyLT5iYXNl
VVJJKCkpKTsKICAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzBdLCA9PSwg
TG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk7CkBAIC0zMzUsNyArMzM0
LDcgQEAgc3RhdGljIHZvaWQgdGVzdFN1YnJlc291cmNlTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMo
VExTU3VicmVzb3VyY2VUZXN0KiB0ZXN0LCBnY28KICAgICBhc3NlcnRJZlNTTFJlcXVlc3RQcm9j
ZXNzZWQgPSB0cnVlOwogICAgIHRlc3QtPmxvYWRVUkkoa0h0dHBTZXJ2ZXItPmdldFVSSUZvclBh
dGgoIi8iKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbFN1YnJlc291cmNlTG9hZEZhaWwo
KTsKLSAgICBnX2Fzc2VydChHX0lTX1RMU19DRVJUSUZJQ0FURSh0ZXN0LT5tX2NlcnRpZmljYXRl
LmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShHX0lTX1RMU19DRVJUSUZJQ0FURSh0ZXN0LT5t
X2NlcnRpZmljYXRlLmdldCgpKSk7CiAgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX3Rsc0Vy
cm9ycywgPT0sIEdfVExTX0NFUlRJRklDQVRFX1VOS05PV05fQ0EpOwogICAgIGFzc2VydElmU1NM
UmVxdWVzdFByb2Nlc3NlZCA9IGZhbHNlOwogfQpAQCAtNDQ5LDcgKzQ0OCw3IEBAIHN0YXRpYyB2
b2lkIGh0dHBzU2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSog
bWVzc2FnZSwgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGdfYXNzZXJ0KCFh
c3NlcnRJZlNTTFJlcXVlc3RQcm9jZXNzZWQpOworICAgIGdfYXNzZXJ0X2ZhbHNlKGFzc2VydElm
U1NMUmVxdWVzdFByb2Nlc3NlZCk7CiAKICAgICBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi8iKSkg
ewogICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19P
Syk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFVJQ2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
VUlDbGllbnQuY3BwCmluZGV4IGU1YjZhODllODQ1NWZjM2I1M2I4MDBmMmIwMDg0OGRlN2IxMmYx
ZTMuLjUwMWE5NTRiMGNiNjFjYjYzNmQ0ZjcxYjhhZDEyOWE5ZWIxOWQ0OTggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3Bw
CkBAIC0xNDcsNyArMTQ3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgZ19hc3NlcnRfY21wc3Ry
KHdlYmtpdF9zY3JpcHRfZGlhbG9nX2dldF9tZXNzYWdlKGRpYWxvZyksID09LCBrQWxlcnREaWFs
b2dNZXNzYWdlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdFQktJVF9TQ1JJ
UFRfRElBTE9HX0NPTkZJUk06Ci0gICAgICAgICAgICBnX2Fzc2VydChtX3NjcmlwdERpYWxvZ0Nv
bmZpcm1lZCk7CisgICAgICAgICAgICBnX2Fzc2VydF90cnVlKG1fc2NyaXB0RGlhbG9nQ29uZmly
bWVkKTsKICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2NyaXB0X2RpYWxvZ19n
ZXRfbWVzc2FnZShkaWFsb2cpLCA9PSwgImNvbmZpcm1lZCIpOwogCiAgICAgICAgICAgICBicmVh
azsKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBtb3VzZVRh
cmdldENoYW5nZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RS
ZXN1bHQsIGd1aW50IG1vZGlmaWVycywgVUlDbGllbnRUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAg
ICAgZ19hc3NlcnQoV0VCS0lUX0lTX0hJVF9URVNUX1JFU1VMVChoaXRUZXN0UmVzdWx0KSk7Cisg
ICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX0hJVF9URVNUX1JFU1VMVChoaXRUZXN0UmVz
dWx0KSk7CiAgICAgICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNo
ZXMoR19PQkpFQ1QoaGl0VGVzdFJlc3VsdCkpOwogCiAgICAgICAgIHRlc3QtPm1fbW91c2VUYXJn
ZXRIaXRUZXN0UmVzdWx0ID0gaGl0VGVzdFJlc3VsdDsKQEAgLTIyMywxMyArMjIzLDEzIEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBnYm9vbGVhbiBwZXJtaXNzaW9uUmVxdWVzdGVkKFdlYktpdFdl
YlZpZXcqLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCwgVUlDbGllbnRUZXN0KiB0
ZXN0KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX1BFUk1JU1NJT05fUkVRVUVT
VChyZXF1ZXN0KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1BFUk1JU1NJT05f
UkVRVUVTVChyZXF1ZXN0KSk7CiAgICAgICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdo
ZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocmVxdWVzdCkpOwogCiAgICAgICAgIGlmICh0ZXN0LT5t
X3ZlcmlmeU1lZGlhVHlwZXMgJiYgV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFV
RVNUKHJlcXVlc3QpKSB7CiAgICAgICAgICAgICBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdCogdXNlck1lZGlhUmVxdWVzdCA9IFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVR
VUVTVChyZXF1ZXN0KTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF91c2VyX21lZGlhX3Bl
cm1pc3Npb25faXNfZm9yX2F1ZGlvX2RldmljZSh1c2VyTWVkaWFSZXF1ZXN0KSA9PSB0ZXN0LT5t
X2V4cGVjdGVkQXVkaW9NZWRpYSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfdXNlcl9t
ZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl92aWRlb19kZXZpY2UodXNlck1lZGlhUmVxdWVzdCkgPT0g
dGVzdC0+bV9leHBlY3RlZFZpZGVvTWVkaWEpOworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3
ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19kZXZpY2UodXNlck1lZGlh
UmVxdWVzdCkgPT0gdGVzdC0+bV9leHBlY3RlZEF1ZGlvTWVkaWEpOworICAgICAgICAgICAgZ19h
c3NlcnRfdHJ1ZSh3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl92aWRlb19kZXZp
Y2UodXNlck1lZGlhUmVxdWVzdCkgPT0gdGVzdC0+bV9leHBlY3RlZFZpZGVvTWVkaWEpOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMpCkBA
IC0zMjcsOCArMzI3LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJLaXRXZWJWaWV3KiB2
aWV3Q3JlYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24q
IG5hdmlnYXRpb24pCiAgICAgewotICAgICAgICBnX2Fzc2VydCh3ZWJWaWV3ID09IG1fd2ViVmll
dyk7Ci0gICAgICAgIGdfYXNzZXJ0KG5hdmlnYXRpb24pOworICAgICAgICBnX2Fzc2VydF9jbXBo
ZXgod2ViVmlldywgPT0sIG1fd2ViVmlldyk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobmF2
aWdhdGlvbik7CiAKICAgICAgICAgYXV0byogbmV3V2ViVmlldyA9IFRlc3Q6OmNyZWF0ZVdlYlZp
ZXcod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcpKTsKICNpZiBQTEFURk9STShH
VEspCkBAIC0zMzgsNyArMzM4LDcgQEAgcHVibGljOgogICAgICAgICBtX3dlYlZpZXdFdmVudHMu
YXBwZW5kKENyZWF0ZSk7CiAKICAgICAgICAgV2ViS2l0V2luZG93UHJvcGVydGllcyogd2luZG93
UHJvcGVydGllcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X3Byb3BlcnRpZXMoV0VCS0lU
X1dFQl9WSUVXKG5ld1dlYlZpZXcpKTsKLSAgICAgICAgZ19hc3NlcnQod2luZG93UHJvcGVydGll
cyk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwod2luZG93UHJvcGVydGllcyk7CiAgICAgICAg
IGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2luZG93UHJv
cGVydGllcykpOwogICAgICAgICBtX3dpbmRvd1Byb3BlcnRpZXNDaGFuZ2VkLmNsZWFyKCk7CiAK
QEAgLTM1MSwxMCArMzUxLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB2aWV3UmVh
ZHlUb1Nob3coV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0
KHdlYlZpZXcgIT0gbV93ZWJWaWV3KTsKKyAgICAgICAgZ19hc3NlcnRfY21waGV4KHdlYlZpZXcs
ICE9LCBtX3dlYlZpZXcpOwogCiAgICAgICAgIFdlYktpdFdpbmRvd1Byb3BlcnRpZXMqIHdpbmRv
d1Byb3BlcnRpZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19wcm9wZXJ0aWVzKHdlYlZp
ZXcpOwotICAgICAgICBnX2Fzc2VydCh3aW5kb3dQcm9wZXJ0aWVzKTsKKyAgICAgICAgZ19hc3Nl
cnRfbm9ubnVsbCh3aW5kb3dQcm9wZXJ0aWVzKTsKICAgICAgICAgaWYgKCFtX3dpbmRvd1Byb3Bl
cnRpZXMuaXNOdWxsKCkpCiAgICAgICAgICAgICBXaW5kb3dQcm9wZXJ0aWVzKHdpbmRvd1Byb3Bl
cnRpZXMpLmFzc2VydEVxdWFsKG1fd2luZG93UHJvcGVydGllcyk7CiAKQEAgLTM2Myw3ICszNjMs
NyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlld0Nsb3NlKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcpCiAgICAgewotICAgICAgICBnX2Fzc2VydCh3ZWJWaWV3ICE9IG1fd2ViVmlldyk7
CisgICAgICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJWaWV3LCAhPSwgbV93ZWJWaWV3KTsKIAogICAg
ICAgICBtX3dlYlZpZXdFdmVudHMuYXBwZW5kKENsb3NlKTsKICAgICAgICAgZ19vYmplY3RfdW5y
ZWYod2ViVmlldyk7CkBAIC00MjIsOCArNDIyLDggQEAgcHVibGljOgogCiAgICAgV2ViS2l0V2Vi
Vmlldyogdmlld0NyZWF0ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXROYXZpZ2F0aW9u
QWN0aW9uKiBuYXZpZ2F0aW9uKQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQobmF2aWdhdGlvbik7
Ci0gICAgICAgIGdfYXNzZXJ0KCFtX25hdmlnYXRpb24pOworICAgICAgICBnX2Fzc2VydF9ub25u
dWxsKG5hdmlnYXRpb24pOworICAgICAgICBnX2Fzc2VydF9udWxsKG1fbmF2aWdhdGlvbik7CiAg
ICAgICAgIG1fbmF2aWdhdGlvbiA9IHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9jb3B5KG5hdmln
YXRpb24pOwogICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3ApOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKQEAgLTQ2NSw3ICs0NjUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmll
d0NyZWF0ZU5hdmlnYXRpb25EYXRhKENyZWF0ZU5hdmlnYXRpb25EYXRhVGVzdCogdGVzdCwgZ2Nv
bgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBidXR0b24gMS4KICAgICBnX2Fzc2VydF9j
bXB1aW50KHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfbW91c2VfYnV0dG9uKHRlc3QtPm1f
bmF2aWdhdGlvbiksID09LCAwKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9uYXZpZ2F0
aW9uX2FjdGlvbl9nZXRfbW9kaWZpZXJzKHRlc3QtPm1fbmF2aWdhdGlvbiksID09LCAwKTsKLSAg
ICBnX2Fzc2VydCh3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25faXNfdXNlcl9nZXN0dXJlKHRlc3Qt
Pm1fbmF2aWdhdGlvbikpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X25hdmlnYXRpb25fYWN0
aW9uX2lzX3VzZXJfZ2VzdHVyZSh0ZXN0LT5tX25hdmlnYXRpb24pKTsKIAogICAgIC8vIENsaWNr
IG9uIGEgbGluay4KICAgICB0ZXN0LT5jbGlja0FuZFdhaXRVbnRpbE1haW5Mb29wRmluaXNoZXMo
MjEsIDIxKTsKQEAgLTQ3Myw3ICs0NzMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NyZWF0
ZU5hdmlnYXRpb25EYXRhKENyZWF0ZU5hdmlnYXRpb25EYXRhVGVzdCogdGVzdCwgZ2NvbgogICAg
IGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X25hdmlnYXRpb25fYWN0aW9uX2dldF9uYXZpZ2F0aW9u
X3R5cGUodGVzdC0+bV9uYXZpZ2F0aW9uKSwgPT0sIFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfTElO
S19DTElDS0VEKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlv
bl9nZXRfbW91c2VfYnV0dG9uKHRlc3QtPm1fbmF2aWdhdGlvbiksID09LCAxKTsKICAgICBnX2Fz
c2VydF9jbXB1aW50KHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfbW9kaWZpZXJzKHRlc3Qt
Pm1fbmF2aWdhdGlvbiksID09LCAwKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfbmF2aWdhdGlvbl9h
Y3Rpb25faXNfdXNlcl9nZXN0dXJlKHRlc3QtPm1fbmF2aWdhdGlvbikpOworICAgIGdfYXNzZXJ0
X3RydWUod2Via2l0X25hdmlnYXRpb25fYWN0aW9uX2lzX3VzZXJfZ2VzdHVyZSh0ZXN0LT5tX25h
dmlnYXRpb24pKTsKIAogICAgIC8vIE5vIHVzZXIgaW50ZXJhY3Rpb24uCiAgICAgdGVzdC0+bG9h
ZEhUTUwoIjxodG1sPjxib2R5IG9uTG9hZD1cIndpbmRvdy5vcGVuKCk7XCI+PC9odG1sPiIpOwpA
QCAtNDgzLDcgKzQ4Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Q3JlYXRlTmF2aWdhdGlv
bkRhdGEoQ3JlYXRlTmF2aWdhdGlvbkRhdGFUZXN0KiB0ZXN0LCBnY29uCiAgICAgZ19hc3NlcnRf
Y21wdWludCh3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X25hdmlnYXRpb25fdHlwZSh0ZXN0
LT5tX25hdmlnYXRpb24pLCA9PSwgV0VCS0lUX05BVklHQVRJT05fVFlQRV9PVEhFUik7CiAgICAg
Z19hc3NlcnRfY21wdWludCh3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X21vdXNlX2J1dHRv
bih0ZXN0LT5tX25hdmlnYXRpb24pLCA9PSwgMCk7CiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJr
aXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X21vZGlmaWVycyh0ZXN0LT5tX25hdmlnYXRpb24pLCA9
PSwgMCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9pc191c2VyX2dl
c3R1cmUodGVzdC0+bV9uYXZpZ2F0aW9uKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X25h
dmlnYXRpb25fYWN0aW9uX2lzX3VzZXJfZ2VzdHVyZSh0ZXN0LT5tX25hdmlnYXRpb24pKTsKIH0K
ICNlbmRpZiAvLyBQTEFURk9STShHVEspCiAKQEAgLTUwMywxMyArNTAzLDEzIEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyB2b2lkIGRpYWxvZ1J1bkFzTW9kYWxDYWxsYmFjayhXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBNb2RhbERpYWxvZ3NUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAgZ19hc3Nl
cnQod2ViVmlldyAhPSB0ZXN0LT5tX3dlYlZpZXcpOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgo
d2ViVmlldywgIT0sIHRlc3QtPm1fd2ViVmlldyk7CiAgICAgICAgIHRlc3QtPm1fd2ViVmlld0V2
ZW50cy5hcHBlbmQoUnVuQXNNb2RhbCk7CiAgICAgfQogCiAgICAgV2ViS2l0V2ViVmlldyogdmll
d0NyZWF0ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXROYXZpZ2F0aW9uQWN0aW9uKiBu
YXZpZ2F0aW9uKQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQod2ViVmlldyA9PSBtX3dlYlZpZXcp
OworICAgICAgICBnX2Fzc2VydF9jbXBoZXgod2ViVmlldywgPT0sIG1fd2ViVmlldyk7CiAKICAg
ICAgICAgYXV0byogbmV3V2ViVmlldyA9IFVJQ2xpZW50VGVzdDo6dmlld0NyZWF0ZSh3ZWJWaWV3
LCBuYXZpZ2F0aW9uKTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3LCAicnVu
LWFzLW1vZGFsIiwgR19DQUxMQkFDSyhkaWFsb2dSdW5Bc01vZGFsQ2FsbGJhY2spLCB0aGlzKTsK
QEAgLTUxOCw3ICs1MTgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHZpZXdSZWFkeVRvU2hvdyhX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQod2ViVmlldyAh
PSBtX3dlYlZpZXcpOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgod2ViVmlldywgIT0sIG1fd2Vi
Vmlldyk7CiAgICAgICAgIG1fd2ViVmlld0V2ZW50cy5hcHBlbmQoUmVhZHlUb1Nob3cpOwogICAg
IH0KIH07CkBAIC02MTMsNyArNjEzLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdKYXZhU2Ny
aXB0RGlhbG9ncyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+
bV9zY3JpcHREaWFsb2dDb25maXJtZWQgPSBmYWxzZTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfcmVs
b2FkKHRlc3QtPm1fd2ViVmlldyk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7
Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9zY3JpcHREaWFsb2dDb25maXJtZWQpOworICAgIGdfYXNz
ZXJ0X3RydWUodGVzdC0+bV9zY3JpcHREaWFsb2dDb25maXJtZWQpOwogI2VuZGlmCiAKICAgICAv
LyBOYXZpZ2F0aW9uIHNob3VsZCB0cmlnZ2VyIG9uYmVmb3JldW5sb2FkLgpAQCAtNjIxLDcgKzYy
MSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MoVUlDbGllbnRU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPm1fc2NyaXB0RGlhbG9nQ29uZmly
bWVkID0gZmFsc2U7CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjwvaHRtbD4iLCBudWxscHRy
KTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0
LT5tX3NjcmlwdERpYWxvZ0NvbmZpcm1lZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3Nj
cmlwdERpYWxvZ0NvbmZpcm1lZCk7CiAKICAgICAvLyBUcnkgY2xvc2Ugc2hvdWxkIHRyaWdnZXIg
b25iZWZvcmV1bmxvYWQuCiAgICAgdGVzdC0+bV9zY3JpcHREaWFsb2dDb25maXJtZWQgPSBmYWxz
ZTsKQEAgLTYyOSw3ICs2MjksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0phdmFTY3JpcHRE
aWFsb2dzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT53YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICB0ZXN0LT5zaW11bGF0ZVVzZXJJbnRlcmFjdGlvbigp
OwogICAgIHRlc3QtPnRyeUNsb3NlQW5kV2FpdFVudGlsQ2xvc2VkKCk7Ci0gICAgZ19hc3NlcnQo
dGVzdC0+bV9zY3JpcHREaWFsb2dDb25maXJtZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+
bV9zY3JpcHREaWFsb2dDb25maXJtZWQpOwogCiAgICAgLy8gVHJ5IGNsb3NlIG9uIGEgcGFnZSB3
aXRoIG5vIHVubG9hZCBoYW5kbGVycyBzaG91bGQgbm90IHRyaWdnZXIgb25iZWZvcmV1bmxvYWQs
CiAgICAgLy8gYnV0IHNob3VsZCBhY3R1YWxseSBjbG9zZSB0aGUgcGFnZS4KQEAgLTYzNywxMCAr
NjM3LDEwIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MoVUlDbGll
bnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48
Ym9keT48L2JvZHk+PC9odG1sPiIsIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOwogICAgIC8vIFdlIGdvdCBhIG9uYmVmb3JldW5sb2FkIG9mIHRoZSBwcmV2aW91
cyBwYWdlLgotICAgIGdfYXNzZXJ0KHRlc3QtPm1fc2NyaXB0RGlhbG9nQ29uZmlybWVkKTsKKyAg
ICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fc2NyaXB0RGlhbG9nQ29uZmlybWVkKTsKICAgICB0ZXN0
LT5tX3NjcmlwdERpYWxvZ0NvbmZpcm1lZCA9IGZhbHNlOwogICAgIHRlc3QtPnRyeUNsb3NlQW5k
V2FpdFVudGlsQ2xvc2VkKCk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1fc2NyaXB0RGlhbG9nQ29u
ZmlybWVkKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5tX3NjcmlwdERpYWxvZ0NvbmZpcm1l
ZCk7CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogfQogCkBAIC02NjEsNyArNjYxLDcgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdXaW5kb3dQcm9wZXJ0aWVzKFVJQ2xpZW50VGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKICAgICAgICAgImxvY2F0aW9uYmFyLXZpc2libGUiLCAibWVudWJhci12
aXNpYmxlIiwgInN0YXR1c2Jhci12aXNpYmxlIiwgInRvb2xiYXItdmlzaWJsZSIsICJzY3JvbGxi
YXJzLXZpc2libGUiCiAgICAgfTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEdfTl9FTEVN
RU5UUyhwcm9wZXJ0aWVzQ2hhbmdlZCk7ICsraSkKLSAgICAgICAgZ19hc3NlcnQodGVzdC0+bV93
aW5kb3dQcm9wZXJ0aWVzQ2hhbmdlZC5jb250YWlucyhwcm9wZXJ0aWVzQ2hhbmdlZFtpXSkpOwor
ICAgICAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fd2luZG93UHJvcGVydGllc0NoYW5nZWQuY29u
dGFpbnMocHJvcGVydGllc0NoYW5nZWRbaV0pKTsKIAogICAgIFZlY3RvcjxVSUNsaWVudFRlc3Q6
OldlYlZpZXdFdmVudHM+JiBldmVudHMgPSB0ZXN0LT5tX3dlYlZpZXdFdmVudHM7CiAgICAgZ19h
c3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCAzKTsKQEAgLTY5OSw5MCArNjk5LDkwIEBA
IHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3TW91c2VUYXJnZXQoVUlDbGllbnRUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogCiAgICAgLy8gTW92ZSBvdmVyIGxpbmsuCiAgICAgV2ViS2l0SGl0VGVz
dFJlc3VsdCogaGl0VGVzdFJlc3VsdCA9IHRlc3QtPm1vdmVNb3VzZUFuZFdhaXRVbnRpbE1vdXNl
VGFyZ2V0Q2hhbmdlZCgxLCAxKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9o
aXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19h
c3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVz
dWx0KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19l
ZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0
X3RydWUod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3Vs
dCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9p
c19pbWFnZShoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2Vy
dF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVz
dFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29u
dGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3
ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9saW5rX3VyaShoaXRUZXN0UmVzdWx0KSwgPT0sICJo
dHRwOi8vd3d3LndlYmtpdGd0ay5vcmcvIik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9o
aXRfdGVzdF9yZXN1bHRfZ2V0X2xpbmtfdGl0bGUoaGl0VGVzdFJlc3VsdCksID09LCAiV2ViS2l0
R1RLKyBUaXRsZSIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2dldF9saW5rX2xhYmVsKGhpdFRlc3RSZXN1bHQpLCA9PSwgIldlYktpdEdUSysgV2Vic2l0ZSIp
OwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX21vdXNlVGFyZ2V0TW9kaWZpZXJzKTsKKyAgICBnX2Fz
c2VydF9jbXB1aW50KHRlc3QtPm1fbW91c2VUYXJnZXRNb2RpZmllcnMsID09LCAwKTsKIAogICAg
IC8vIE1vdmUgb3V0IG9mIHRoZSBsaW5rLgogICAgIGhpdFRlc3RSZXN1bHQgPSB0ZXN0LT5tb3Zl
TW91c2VBbmRXYWl0VW50aWxNb3VzZVRhcmdldENoYW5nZWQoMCwgMCk7Ci0gICAgZ19hc3NlcnQo
IXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsK
LSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhp
dFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250
ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fz
c2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0
UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1fbW91c2VUYXJnZXRNb2RpZmllcnMpOwor
ICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5r
KGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVz
dWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNl
KHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7
CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2Vk
aXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fz
c2VydF9jbXB1aW50KHRlc3QtPm1fbW91c2VUYXJnZXRNb2RpZmllcnMsID09LCAwKTsKIAogICAg
IC8vIE1vdmUgb3ZlciBpbWFnZSB3aXRoIEdES19DT05UUk9MX01BU0suCiAgICAgaGl0VGVzdFJl
c3VsdCA9IHRlc3QtPm1vdmVNb3VzZUFuZFdhaXRVbnRpbE1vdXNlVGFyZ2V0Q2hhbmdlZCgxLCAx
MCwgR0RLX0NPTlRST0xfTUFTSyk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdf
YXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJl
c3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNf
ZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2Vy
dCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3Njcm9sbGJhcihoaXRUZXN0UmVz
dWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0
X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2Vy
dF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJl
c3VsdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4
dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7Cisg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3Njcm9s
bGJhcihoaXRUZXN0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9oaXRfdGVz
dF9yZXN1bHRfZ2V0X2ltYWdlX3VyaShoaXRUZXN0UmVzdWx0KSwgPT0sICJmaWxlOi8vLzB4ZGVh
ZGJlZWYiKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX21vdXNlVGFyZ2V0TW9kaWZpZXJzICYgR0RL
X0NPTlRST0xfTUFTSyk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX21vdXNlVGFyZ2V0TW9k
aWZpZXJzICYgR0RLX0NPTlRST0xfTUFTSyk7CiAKICAgICAvLyBNb3ZlIG92ZXIgaW1hZ2UgbGlu
ay4KICAgICBoaXRUZXN0UmVzdWx0ID0gdGVzdC0+bW92ZU1vdXNlQW5kV2FpdFVudGlsTW91c2VU
YXJnZXRDaGFuZ2VkKDEsIDIwKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X2hp
dF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fz
c2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1
bHQpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2Vk
aXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9jb250ZXh0X2lzX3Njcm9sbGJhcihoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQo
IXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3Vs
dCkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lz
X2xpbmsoaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2hpdF90ZXN0
X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9m
YWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3Vs
dCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9p
c19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hp
dF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3Njcm9sbGJhcihoaXRUZXN0UmVzdWx0KSk7CisgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlv
bihoaXRUZXN0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfZ2V0X2xpbmtfdXJpKGhpdFRlc3RSZXN1bHQpLCA9PSwgImh0dHA6Ly93d3cud2Via2l0
Z3RrLm9yZy9sb2dvIik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfZ2V0X2ltYWdlX3VyaShoaXRUZXN0UmVzdWx0KSwgPT0sICJmaWxlOi8vLzB4ZGVhZGJlZWYi
KTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfbGlua190
aXRsZShoaXRUZXN0UmVzdWx0KSwgPT0sICJXZWJLaXRHVEsrIExvZ28iKTsKLSAgICBnX2Fzc2Vy
dCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfbGlua19sYWJlbChoaXRUZXN0UmVzdWx0KSk7
Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1fbW91c2VUYXJnZXRNb2RpZmllcnMpOworICAgIGdfYXNz
ZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2xpbmtfbGFiZWwoaGl0VGVzdFJl
c3VsdCkpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9tb3VzZVRhcmdldE1vZGlmaWVy
cywgPT0sIDApOwogCiAgICAgLy8gTW92ZSBvdmVyIG1lZGlhLgogICAgIGhpdFRlc3RSZXN1bHQg
PSB0ZXN0LT5tb3ZlTW91c2VBbmRXYWl0VW50aWxNb3VzZVRhcmdldENoYW5nZWQoMSwgMTAwKTsK
LSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0
VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRl
eHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9oaXRfdGVz
dF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQo
IXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0
KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zY3Jv
bGxiYXIoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVz
dWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9m
YWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0
KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lz
X2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9oaXRfdGVz
dF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RS
ZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRl
eHRfaXNfc2Nyb2xsYmFyKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsK
ICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfbWVkaWFfdXJp
KGhpdFRlc3RSZXN1bHQpLCA9PSwgImZpbGU6Ly8vbW92aWUub2dnIik7Ci0gICAgZ19hc3NlcnQo
IXRlc3QtPm1fbW91c2VUYXJnZXRNb2RpZmllcnMpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVz
dC0+bV9tb3VzZVRhcmdldE1vZGlmaWVycywgPT0sIDApOwogCiAgICAgLy8gTW92ZXIgb3ZlciBp
bnB1dC4KICAgICBoaXRUZXN0UmVzdWx0ID0gdGVzdC0+bW92ZU1vdXNlQW5kV2FpdFVudGlsTW91
c2VUYXJnZXRDaGFuZ2VkKDUsIDM1KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOwotICAg
IGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVz
dFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRf
aXNfc2Nyb2xsYmFyKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RS
ZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+bV9tb3VzZVRhcmdldE1vZGlmaWVycyk7Cisg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmso
aGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfY29udGV4dF9pc19pbWFnZShoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uo
d2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsK
KyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2Ny
b2xsYmFyKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9oaXRfdGVz
dF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3Nl
cnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRU
ZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX21vdXNlVGFyZ2V0TW9k
aWZpZXJzLCA9PSwgMCk7CiAKICAgICAvLyBNb3ZlIG92ZXIgc2Nyb2xsYmFyLgogICAgIGhpdFRl
c3RSZXN1bHQgPSB0ZXN0LT5tb3ZlTW91c2VBbmRXYWl0VW50aWxNb3VzZVRhcmdldENoYW5nZWQo
Z3RrX3dpZGdldF9nZXRfYWxsb2NhdGVkX3dpZHRoKEdUS19XSURHRVQodGVzdC0+bV93ZWJWaWV3
KSkgLSA0LCA1KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0
X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3
ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOwot
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUo
aGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29u
dGV4dF9pc19zY3JvbGxiYXIoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKLSAg
ICBnX2Fzc2VydCghdGVzdC0+bV9tb3VzZVRhcmdldE1vZGlmaWVycyk7CisgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3Vs
dCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9p
c19pbWFnZShoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2Vy
dF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVz
dFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250
ZXh0X2lzX3Njcm9sbGJhcihoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7
CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX21vdXNlVGFyZ2V0TW9kaWZpZXJzLCA9PSwg
MCk7CiAKICAgICAvLyBNb3ZlIG92ZXIgc2VsZWN0aW9uLgogICAgIGhpdFRlc3RSZXN1bHQgPSB0
ZXN0LT5tb3ZlTW91c2VBbmRXYWl0VW50aWxNb3VzZVRhcmdldENoYW5nZWQoMiwgMTQ1KTsKLSAg
ICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVz
dFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRf
aXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3
ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkp
OwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2Nyb2xs
YmFyKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghdGVz
dC0+bV9tb3VzZVRhcmdldE1vZGlmaWVycyk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hp
dF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNz
ZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZShoaXRUZXN0
UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250
ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAg
IGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zY3JvbGxi
YXIoaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRf
Y21wdWludCh0ZXN0LT5tX21vdXNlVGFyZ2V0TW9kaWZpZXJzLCA9PSwgMCk7CiB9CiAjZW5kaWYg
Ly8gUExBVEZPUk0oR1RLKQogCkBAIC05OTUsMTYgKzk5NSwxNiBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld0ZpbGVDaG9vc2VyUmVxdWVzdChGaWxlQ2hvb3NlclRlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiAgICAgdGVzdC0+bG9hZEh0bWwoc2ltcGxlRmlsZVVwbG9hZEhUTUwuZ2V0KCksIDAp
OwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIFdlYktpdEZpbGVDaG9v
c2VyUmVxdWVzdCogZmlsZUNob29zZXJSZXF1ZXN0ID0gdGVzdC0+Y2xpY2tNb3VzZUJ1dHRvbkFu
ZFdhaXRGb3JGaWxlQ2hvb3NlclJlcXVlc3QoNSwgNSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9m
aWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfc2VsZWN0X211bHRpcGxlKGZpbGVDaG9vc2VyUmVxdWVz
dCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRf
c2VsZWN0X211bHRpcGxlKGZpbGVDaG9vc2VyUmVxdWVzdCkpOwogCiAgICAgY29uc3QgZ2NoYXIq
IGNvbnN0KiBtaW1lVHlwZXMgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X21pbWVf
dHlwZXMoZmlsZUNob29zZXJSZXF1ZXN0KTsKLSAgICBnX2Fzc2VydCghbWltZVR5cGVzKTsKKyAg
ICBnX2Fzc2VydF9udWxsKG1pbWVUeXBlcyk7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIEd0a0Zp
bGVGaWx0ZXIqIGZpbHRlciA9IHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfbWltZV90
eXBlc19maWx0ZXIoZmlsZUNob29zZXJSZXF1ZXN0KTsKLSAgICBnX2Fzc2VydCghZmlsdGVyKTsK
KyAgICBnX2Fzc2VydF9udWxsKGZpbHRlcik7CiAjZW5kaWYKICAgICBjb25zdCBnY2hhciogY29u
c3QqIHNlbGVjdGVkRmlsZXMgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X3NlbGVj
dGVkX2ZpbGVzKGZpbGVDaG9vc2VyUmVxdWVzdCk7Ci0gICAgZ19hc3NlcnQoIXNlbGVjdGVkRmls
ZXMpOworICAgIGdfYXNzZXJ0X251bGwoc2VsZWN0ZWRGaWxlcyk7CiAgICAgd2Via2l0X2ZpbGVf
Y2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbChmaWxlQ2hvb3NlclJlcXVlc3QpOwogCiAgICAgLy8gTXVs
dGlwbGUgc2VsZWN0aW9ucyBhbGxvd2VkLCBubyBNSU1FIGZpbHRlcmluZywgc29tZSBwcmUtc2Vs
ZWN0ZWQgZmlsZXMuCkBAIC0xMDEyLDE2ICsxMDEyLDE2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3RmlsZUNob29zZXJSZXF1ZXN0KEZpbGVDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKICAgICB0ZXN0LT5sb2FkSHRtbChtdWx0aXBsZVNlbGVjdGlvbkZpbGVVcGxvYWRIVE1MLmdl
dCgpLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICBmaWxlQ2hv
b3NlclJlcXVlc3QgPSB0ZXN0LT5jbGlja01vdXNlQnV0dG9uQW5kV2FpdEZvckZpbGVDaG9vc2Vy
UmVxdWVzdCg1LCA1KTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3Rf
Z2V0X3NlbGVjdF9tdWx0aXBsZShmaWxlQ2hvb3NlclJlcXVlc3QpKTsKKyAgICBnX2Fzc2VydF90
cnVlKHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfc2VsZWN0X211bHRpcGxlKGZpbGVD
aG9vc2VyUmVxdWVzdCkpOwogCiAgICAgbWltZVR5cGVzID0gd2Via2l0X2ZpbGVfY2hvb3Nlcl9y
ZXF1ZXN0X2dldF9taW1lX3R5cGVzKGZpbGVDaG9vc2VyUmVxdWVzdCk7Ci0gICAgZ19hc3NlcnQo
IW1pbWVUeXBlcyk7CisgICAgZ19hc3NlcnRfbnVsbChtaW1lVHlwZXMpOwogI2lmIFBMQVRGT1JN
KEdUSykKICAgICBmaWx0ZXIgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X21pbWVf
dHlwZXNfZmlsdGVyKGZpbGVDaG9vc2VyUmVxdWVzdCk7Ci0gICAgZ19hc3NlcnQoIWZpbHRlcik7
CisgICAgZ19hc3NlcnRfbnVsbChmaWx0ZXIpOwogI2VuZGlmCiAgICAgc2VsZWN0ZWRGaWxlcyA9
IHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfc2VsZWN0ZWRfZmlsZXMoZmlsZUNob29z
ZXJSZXF1ZXN0KTsKLSAgICBnX2Fzc2VydCghc2VsZWN0ZWRGaWxlcyk7CisgICAgZ19hc3NlcnRf
bnVsbChzZWxlY3RlZEZpbGVzKTsKIAogICAgIC8vIFNlbGVjdCBzb21lIGZpbGVzLgogICAgIGNv
bnN0IGdjaGFyKiBmaWxlc1RvU2VsZWN0WzRdID0geyAiL2ZvbyIsICIvZm9vL2JhciIsICIvZm9v
L2Jhci9iYXoiLCAwIH07CkBAIC0xMDI5LDIxICsxMDI5LDIxIEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3RmlsZUNob29zZXJSZXF1ZXN0KEZpbGVDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKIAogICAgIC8vIENoZWNrIHRoZSBmaWxlcyB0aGF0IGhhdmUgYmVlbiBqdXN0IHNlbGVj
dGVkLgogICAgIHNlbGVjdGVkRmlsZXMgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0
X3NlbGVjdGVkX2ZpbGVzKGZpbGVDaG9vc2VyUmVxdWVzdCk7Ci0gICAgZ19hc3NlcnQoc2VsZWN0
ZWRGaWxlcyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChzZWxlY3RlZEZpbGVzKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIoc2VsZWN0ZWRGaWxlc1swXSwgPT0sICIvZm9vIik7CiAgICAgZ19hc3NlcnRf
Y21wc3RyKHNlbGVjdGVkRmlsZXNbMV0sID09LCAiL2Zvby9iYXIiKTsKICAgICBnX2Fzc2VydF9j
bXBzdHIoc2VsZWN0ZWRGaWxlc1syXSwgPT0sICIvZm9vL2Jhci9iYXoiKTsKLSAgICBnX2Fzc2Vy
dCghc2VsZWN0ZWRGaWxlc1szXSk7CisgICAgZ19hc3NlcnRfbnVsbChzZWxlY3RlZEZpbGVzWzNd
KTsKIAogICAgIC8vIFBlcmZvcm0gYW5vdGhlciByZXF1ZXN0IHRvIGNoZWNrIGlmIHRoZSBsaXN0
IG9mIGZpbGVzIHNlbGVjdGVkCiAgICAgLy8gaW4gdGhlIHByZXZpb3VzIHN0ZXAgYXBwZWFycyBu
b3cgYXMgcGFydCBvZiB0aGUgbmV3IHJlcXVlc3QuCiAgICAgZmlsZUNob29zZXJSZXF1ZXN0ID0g
dGVzdC0+Y2xpY2tNb3VzZUJ1dHRvbkFuZFdhaXRGb3JGaWxlQ2hvb3NlclJlcXVlc3QoNSwgNSk7
CiAgICAgc2VsZWN0ZWRGaWxlcyA9IHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfc2Vs
ZWN0ZWRfZmlsZXMoZmlsZUNob29zZXJSZXF1ZXN0KTsKLSAgICBnX2Fzc2VydChzZWxlY3RlZEZp
bGVzKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHNlbGVjdGVkRmlsZXMpOwogICAgIGdfYXNzZXJ0
X2NtcHN0cihzZWxlY3RlZEZpbGVzWzBdLCA9PSwgIi9mb28iKTsKICAgICBnX2Fzc2VydF9jbXBz
dHIoc2VsZWN0ZWRGaWxlc1sxXSwgPT0sICIvZm9vL2JhciIpOwogICAgIGdfYXNzZXJ0X2NtcHN0
cihzZWxlY3RlZEZpbGVzWzJdLCA9PSwgIi9mb28vYmFyL2JheiIpOwotICAgIGdfYXNzZXJ0KCFz
ZWxlY3RlZEZpbGVzWzNdKTsKKyAgICBnX2Fzc2VydF9udWxsKHNlbGVjdGVkRmlsZXNbM10pOwog
ICAgIHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwoZmlsZUNob29zZXJSZXF1ZXN0
KTsKIAogICAgIC8vIE11bHRpcGxlIHNlbGVjdGlvbnMgbm90IGFsbG93ZWQsIG9ubHkgYWNjZXB0
IGltYWdlcywgYXVkaW8gYW5kIHZpZGVvIGZpbGVzLi4KQEAgLTEwNTEsMjUgKzEwNTEsMjUgQEAg
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QoRmlsZUNob29zZXJUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPmxvYWRIdG1sKG1pbWVGaWx0ZXJlZEZp
bGVVcGxvYWRIVE1MLmdldCgpLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQo
KTsKICAgICBmaWxlQ2hvb3NlclJlcXVlc3QgPSB0ZXN0LT5jbGlja01vdXNlQnV0dG9uQW5kV2Fp
dEZvckZpbGVDaG9vc2VyUmVxdWVzdCg1LCA1KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2ZpbGVf
Y2hvb3Nlcl9yZXF1ZXN0X2dldF9zZWxlY3RfbXVsdGlwbGUoZmlsZUNob29zZXJSZXF1ZXN0KSk7
CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2dldF9zZWxl
Y3RfbXVsdGlwbGUoZmlsZUNob29zZXJSZXF1ZXN0KSk7CiAKICAgICBtaW1lVHlwZXMgPSB3ZWJr
aXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X21pbWVfdHlwZXMoZmlsZUNob29zZXJSZXF1ZXN0
KTsKLSAgICBnX2Fzc2VydChtaW1lVHlwZXMpOworICAgIGdfYXNzZXJ0X25vbm51bGwobWltZVR5
cGVzKTsKICAgICBnX2Fzc2VydF9jbXBzdHIobWltZVR5cGVzWzBdLCA9PSwgImF1ZGlvLyoiKTsK
ICAgICBnX2Fzc2VydF9jbXBzdHIobWltZVR5cGVzWzFdLCA9PSwgInZpZGVvLyoiKTsKICAgICBn
X2Fzc2VydF9jbXBzdHIobWltZVR5cGVzWzJdLCA9PSwgImltYWdlLyoiKTsKLSAgICBnX2Fzc2Vy
dCghbWltZVR5cGVzWzNdKTsKKyAgICBnX2Fzc2VydF9udWxsKG1pbWVUeXBlc1szXSk7CiAKICNp
ZiBQTEFURk9STShHVEspCiAgICAgZmlsdGVyID0gd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0
X2dldF9taW1lX3R5cGVzX2ZpbHRlcihmaWxlQ2hvb3NlclJlcXVlc3QpOwotICAgIGdfYXNzZXJ0
KEdUS19JU19GSUxFX0ZJTFRFUihmaWx0ZXIpKTsKLSAgICBnX2Fzc2VydChjaGVja01pbWVUeXBl
Rm9yRmlsdGVyKGZpbHRlciwgImF1ZGlvLyoiKSk7Ci0gICAgZ19hc3NlcnQoY2hlY2tNaW1lVHlw
ZUZvckZpbHRlcihmaWx0ZXIsICJ2aWRlby8qIikpOwotICAgIGdfYXNzZXJ0KGNoZWNrTWltZVR5
cGVGb3JGaWx0ZXIoZmlsdGVyLCAiaW1hZ2UvKiIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEdUS19J
U19GSUxFX0ZJTFRFUihmaWx0ZXIpKTsKKyAgICBnX2Fzc2VydF90cnVlKGNoZWNrTWltZVR5cGVG
b3JGaWx0ZXIoZmlsdGVyLCAiYXVkaW8vKiIpKTsKKyAgICBnX2Fzc2VydF90cnVlKGNoZWNrTWlt
ZVR5cGVGb3JGaWx0ZXIoZmlsdGVyLCAidmlkZW8vKiIpKTsKKyAgICBnX2Fzc2VydF90cnVlKGNo
ZWNrTWltZVR5cGVGb3JGaWx0ZXIoZmlsdGVyLCAiaW1hZ2UvKiIpKTsKICNlbmRpZgogCiAgICAg
c2VsZWN0ZWRGaWxlcyA9IHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfc2VsZWN0ZWRf
ZmlsZXMoZmlsZUNob29zZXJSZXF1ZXN0KTsKLSAgICBnX2Fzc2VydCghc2VsZWN0ZWRGaWxlcyk7
CisgICAgZ19hc3NlcnRfbnVsbChzZWxlY3RlZEZpbGVzKTsKICAgICB3ZWJraXRfZmlsZV9jaG9v
c2VyX3JlcXVlc3RfY2FuY2VsKGZpbGVDaG9vc2VyUmVxdWVzdCk7CiB9CiAjZW5kaWYgLy8gUExB
VEZPUk0oR1RLKQpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZv
aWQgcmVxdWVzdEZpbmlzaGVkQ2FsbGJhY2soV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVx
dWVzdCwgQ29sb3JDaG9vc2VyVGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KHRl
c3QtPm1fcmVxdWVzdC5nZXQoKSA9PSByZXF1ZXN0KTsKKyAgICAgICAgZ19hc3NlcnRfY21waGV4
KHRlc3QtPm1fcmVxdWVzdC5nZXQoKSwgPT0sIHJlcXVlc3QpOwogICAgICAgICB0ZXN0LT5tX3Jl
cXVlc3QgPSBudWxscHRyOwogICAgICAgICBpZiAoZ19tYWluX2xvb3BfaXNfcnVubmluZyh0ZXN0
LT5tX21haW5Mb29wKSkKICAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWlu
TG9vcCk7CkBAIC0xMTAwLDcgKzExMDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJ1bkNvbG9y
Q2hvb3NlcihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQogICAgIHsKLSAgICAg
ICAgZ19hc3NlcnQoV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVChyZXF1ZXN0KSk7Cisg
ICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVChyZXF1
ZXN0KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19P
QkpFQ1QocmVxdWVzdCkpOwogICAgICAgICBtX3JlcXVlc3QgPSByZXF1ZXN0OwogICAgICAgICBn
X3NpZ25hbF9jb25uZWN0KHJlcXVlc3QsICJmaW5pc2hlZCIsIEdfQ0FMTEJBQ0socmVxdWVzdEZp
bmlzaGVkQ2FsbGJhY2spLCB0aGlzKTsKQEAgLTExMDksMjMgKzExMDksMjMgQEAgcHVibGljOgog
CiAgICAgdm9pZCBmaW5pc2hSZXF1ZXN0KCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KG1fcmVx
dWVzdC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobV9yZXF1ZXN0LmdldCgpKTsK
ICAgICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9maW5pc2gobV9yZXF1ZXN0Lmdl
dCgpKTsKLSAgICAgICAgZ19hc3NlcnQoIW1fcmVxdWVzdCk7CisgICAgICAgIGdfYXNzZXJ0X251
bGwobV9yZXF1ZXN0KTsKICAgICB9CiAKICAgICB2b2lkIGNhbmNlbFJlcXVlc3QoKQogICAgIHsK
LSAgICAgICAgZ19hc3NlcnQobV9yZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9u
bnVsbChtX3JlcXVlc3QuZ2V0KCkpOwogICAgICAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1
ZXN0X2NhbmNlbChtX3JlcXVlc3QuZ2V0KCkpOwotICAgICAgICBnX2Fzc2VydCghbV9yZXF1ZXN0
KTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbChtX3JlcXVlc3QpOwogICAgIH0KIAogICAgIFdlYktp
dENvbG9yQ2hvb3NlclJlcXVlc3QqIGNsaWNrTW91c2VCdXR0b25BbmRXYWl0Rm9yQ29sb3JDaG9v
c2VyUmVxdWVzdChpbnQgeCwgaW50IHkpCiAgICAgewogICAgICAgICBjbGlja01vdXNlQnV0dG9u
KHgsIHkpOwogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7Ci0gICAgICAgIGdf
YXNzZXJ0KG1fcmVxdWVzdC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobV9yZXF1
ZXN0LmdldCgpKTsKICAgICAgICAgcmV0dXJuIG1fcmVxdWVzdC5nZXQoKTsKICAgICB9CiAKQEAg
LTExNDcsMTMgKzExNDcsMTMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDb2xvckNob29zZXJS
ZXF1ZXN0KENvbG9yQ2hvb3NlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIKICAgICBHZGtSR0JB
IHJnYmExOwogICAgIEdka1JHQkEgcmdiYTIgPSB7IDAuLCAwLiwgMC4sIDEuIH07CiAgICAgd2Vi
a2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfcmdiYShyZXF1ZXN0LCAmcmdiYTEpOwotICAg
IGdfYXNzZXJ0KGdka19yZ2JhX2VxdWFsKCZyZ2JhMSwgJnJnYmEyKSk7CisgICAgZ19hc3NlcnRf
dHJ1ZShnZGtfcmdiYV9lcXVhbCgmcmdiYTEsICZyZ2JhMikpOwogCiAgICAgLy8gU2V0IGEgZGlm
ZmVyZW50IGNvbG9yLgogICAgIHJnYmEyLmdyZWVuID0gMTsKICAgICB3ZWJraXRfY29sb3JfY2hv
b3Nlcl9yZXF1ZXN0X3NldF9yZ2JhKHJlcXVlc3QsICZyZ2JhMik7CiAgICAgd2Via2l0X2NvbG9y
X2Nob29zZXJfcmVxdWVzdF9nZXRfcmdiYShyZXF1ZXN0LCAmcmdiYTEpOwotICAgIGdfYXNzZXJ0
KGdka19yZ2JhX2VxdWFsKCZyZ2JhMSwgJnJnYmEyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShnZGtf
cmdiYV9lcXVhbCgmcmdiYTEsICZyZ2JhMikpOwogCiAgICAgR2RrUmVjdGFuZ2xlIHJlY3Q7CiAg
ICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfZWxlbWVudF9yZWN0YW5nbGUocmVx
dWVzdCwgJnJlY3QpOwpAQCAtMTE3Miw3ICsxMTcyLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZp
ZXdDb2xvckNob29zZXJSZXF1ZXN0KENvbG9yQ2hvb3NlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIKIAogICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X3JnYmEocmVxdWVzdCwg
JnJnYmExKTsKICAgICBHZGtSR0JBIHJnYmEzID0geyAxLiwgMC4sIDEuLCAxLiB9OwotICAgIGdf
YXNzZXJ0KGdka19yZ2JhX2VxdWFsKCZyZ2JhMSwgJnJnYmEzKSk7CisgICAgZ19hc3NlcnRfdHJ1
ZShnZGtfcmdiYV9lcXVhbCgmcmdiYTEsICZyZ2JhMykpOwogCiAgICAgdGVzdC0+Y2FuY2VsUmVx
dWVzdCgpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKaW5kZXggOThmYTcyNDEyZDZhNDJiMTg3ZWVl
NzE1NTNiNWVmMjM3ZjhjNmMxMC4uOTgxMGE0ZDFkZDg1YWY0YzE0MGFjZDBmNDkwYTY2YmM5MmQ3
YmZkMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyB2b2lk
IHRlc3RXZWJFeHRlbnNpb25HZXRUaXRsZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKICAgICAgICAgZ192YXJpYW50X25ldygiKHQpIiwgd2Via2l0X3dlYl92aWV3X2dldF9wYWdl
X2lkKHRlc3QtPm1fd2ViVmlldykpLAogICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLAog
ICAgICAgICAtMSwgMCwgMCkpOwotICAgIGdfYXNzZXJ0KHJlc3VsdCk7CisgICAgZ19hc3NlcnRf
bm9ubnVsbChyZXN1bHQpOwogCiAgICAgY29uc3QgY2hhciogdGl0bGU7CiAgICAgZ192YXJpYW50
X2dldChyZXN1bHQuZ2V0KCksICIoJnMpIiwgJnRpdGxlKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0RG9jdW1lbnRMb2FkZWRTaWduYWwoV2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0RCdXNTaWduYWxDYWxsYmFj
az4oZG9jdW1lbnRMb2FkZWRDYWxsYmFjayksCiAgICAgICAgIHRlc3QsCiAgICAgICAgIDApOwot
ICAgIGdfYXNzZXJ0KGlkKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KGlkLCAhPSwgMCk7CiAKICAg
ICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGhlYWQ+PHRpdGxlPldlYktpdEdUSysgV2ViIEV4dGVu
c2lvbnMgVGVzdDwvdGl0bGU+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+IiwgMCk7CiAgICAg
Z19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHN0
YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJWaWV3UHJvY2Vzc0NyYXNoZWQoV2ViVmlld1Rlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgICAgIDAsCiAgICAgICAgIEdfREJVU19DQUxMX0ZMQUdT
X05PTkUsCiAgICAgICAgIC0xLCAwLCAwKSk7Ci0gICAgZ19hc3NlcnQoIXJlc3VsdCk7CisgICAg
Z19hc3NlcnRfbnVsbChyZXN1bHQpOwogICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5M
b29wKTsKICAgICB0ZXN0LT5tX2V4cGVjdGVkV2ViUHJvY2Vzc0NyYXNoID0gZmFsc2U7CiB9CkBA
IC0xNzUsOCArMTc1LDggQEAgc3RhdGljIHZvaWQgdGVzdFdlYkV4dGVuc2lvbldpbmRvd09iamVj
dENsZWFyZWQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIKIAogICAgIEdVbmlxdWVP
dXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2Ny
aXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5k
b3cuZWNobygnRm9vJyk7IiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2Ny
aXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X25v
bm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0
KCkpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFz
Y3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2Nt
cHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJGb28iKTsKIH0KQEAgLTIxMCw3ICsyMTAsNyBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0ZWRXb3JsZChXZWJWaWV3VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBzdHIoc2NyaXB0RGlhbG9nUmVz
dWx0LmdldCgpLCA9PSwgIk1haW4gV29ybGQiKTsKIAogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1
bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmlu
aXNoZWQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MIiwgMCk7
Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChq
YXZhc2NyaXB0UmVzdWx0KTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZp
ZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAg
ICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiRm9vIik7CiAKQEAgLTIz
Myw3ICsyMzMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0ZWRXb3JsZChX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIC8vIENoZWNrIHRoYXQgJ3Rv
cC5mb28nIGRlZmluZWQgaW4gbWFpbiB3b3JsZCBpcyBub3QgdmlzaWJsZSBpbiBpc29sYXRlZCB3
b3JsZC4KICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRV
bnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRN
TCIsIDApOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25v
bm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgdmFsdWVTdHJpbmcucmVzZXQoV2ViVmlld1Rl
c3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdf
YXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJ1bmRlZmluZWQiKTsKIApAQCAt
MjQ4LDcgKzI0OCw3IEBAIHN0YXRpYyBnYm9vbGVhbiBwZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNr
KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzCiAKICAgICB0ZXN0LT5hc3Nl
cnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJlcXVlc3QpKTsKICAg
ICBXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KiBtaXNz
aW5nUGx1Z2luc1JlcXVlc3QgPSBXRUJLSVRfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNf
UEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9pbnN0YWxs
X21pc3NpbmdfbWVkaWFfcGx1Z2luc19wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X2Rlc2NyaXB0aW9u
KG1pc3NpbmdQbHVnaW5zUmVxdWVzdCkpOworICAgIGdfYXNzZXJ0X25vbm51bGwod2Via2l0X2lu
c3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfZGVzY3Jp
cHRpb24obWlzc2luZ1BsdWdpbnNSZXF1ZXN0KSk7CiAgICAgd2Via2l0X3Blcm1pc3Npb25fcmVx
dWVzdF9kZW55KHJlcXVlc3QpOwogICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOwogCkBAIC0yNzgs
NyArMjc4LDcgQEAgc3RhdGljIHZvaWQgZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzQ2FsbGJhY2so
R0RCdXNDb25uZWN0aW9uKiwgY29uc3QgY2hhciosIGNvbnMKIHsKICAgICBjb25zdCBjaGFyKiBm
b3JtSWRzOwogICAgIGdfdmFyaWFudF9nZXQocmVzdWx0LCAiKCZzKSIsICZmb3JtSWRzKTsKLSAg
ICBnX2Fzc2VydCghZ19zdHJjbXAwKGZvcm1JZHMsIEZPUk1fSUQgRk9STTJfSUQpIHx8ICFnX3N0
cmNtcDAoZm9ybUlkcywgRk9STTJfSUQgRk9STV9JRCkgfHwgIWdfc3RyY21wMChmb3JtSWRzLCBJ
TlBVVF9JRCkpOworICAgIGdfYXNzZXJ0X3RydWUoIWdfc3RyY21wMChmb3JtSWRzLCBGT1JNX0lE
IEZPUk0yX0lEKSB8fCAhZ19zdHJjbXAwKGZvcm1JZHMsIEZPUk0yX0lEIEZPUk1fSUQpIHx8ICFn
X3N0cmNtcDAoZm9ybUlkcywgSU5QVVRfSUQpKTsKIAogICAgIHRlc3QtPnF1aXRNYWluTG9vcCgp
OwogfQpAQCAtMjk5LDcgKzI5OSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJFeHRlbnNpb25Gb3Jt
Q29udHJvbHNBc3NvY2lhdGVkKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2luCiAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8R0RCdXNTaWduYWxDYWxsYmFjaz4oZGlkQXNzb2NpYXRlRm9ybUNv
bnRyb2xzQ2FsbGJhY2spLAogICAgICAgICB0ZXN0LAogICAgICAgICBudWxscHRyKTsKLSAgICBn
X2Fzc2VydChpZCk7CisgICAgZ19hc3NlcnRfY21wdWludChpZCwgIT0sIDApOwogCiAgICAgdGVz
dC0+bG9hZEh0bWwoIjwhRE9DVFlQRSBodG1sPjxoZWFkPjx0aXRsZT5XZWJLaXRHVEsrIFdlYiBF
eHRlbnNpb25zIFRlc3Q8L3RpdGxlPjwvaGVhZD48ZGl2IGlkPVwicGxhY2Vob2xkZXJcIi8+Iiwg
MCk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CkBAIC0zNTQsNyArMzU0LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHREJ1c1NpZ25hbENhbGxi
YWNrPih3aWxsU2VuZERPTUV2ZW50Q2FsbGJhY2spLAogICAgICAgICAgICAgdGhpcywKICAgICAg
ICAgICAgIG51bGxwdHIpOwotICAgICAgICBnX2Fzc2VydChtX3dpbGxTZW5kRE9NRXZlbnRDYWxs
YmFja0lEKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChtX3dpbGxTZW5kRE9NRXZlbnRDYWxs
YmFja0lELCAhPSwgMCk7CiAKICAgICAgICAgbV93aWxsQ29tcGxldGVDYWxsYmFja0lEID0gZ19k
YnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3N1YnNjcmliZShjb25uZWN0aW9uLAogICAgICAgICAgICAg
bnVsbHB0ciwKQEAgLTM2Niw3ICszNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZWludGVy
cHJldF9jYXN0PEdEQnVzU2lnbmFsQ2FsbGJhY2s+KHdpbGxDb21wbGV0ZUNhbGxiYWNrKSwKICAg
ICAgICAgICAgIHRoaXMsCiAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgZ19hc3NlcnQo
bV93aWxsQ29tcGxldGVDYWxsYmFja0lEKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChtX3dp
bGxDb21wbGV0ZUNhbGxiYWNrSUQsICE9LCAwKTsKICAgICB9CiAKICAgICB+Rm9ybVN1Ym1pc3Np
b25UZXN0KCkKQEAgLTM4OCw4ICszODgsOCBAQCBwdWJsaWM6CiAgICAgICAgIGdfYXNzZXJ0X2Nt
cHN0cihmb3JtSUQsID09LCBGT1JNX1NVQk1JU1NJT05fVEVTVF9JRCk7CiAgICAgICAgIGdfYXNz
ZXJ0X2NtcHN0cihjb25jYXRlbmF0ZWRUZXh0RmllbGROYW1lcywgPT0sICJmb28sYmFyLCIpOwog
ICAgICAgICBnX2Fzc2VydF9jbXBzdHIoY29uY2F0ZW5hdGVkVGV4dEZpZWxkVmFsdWVzLCA9PSwg
ImZpcnN0LHNlY29uZCwiKTsKLSAgICAgICAgZ19hc3NlcnQoIXRhcmdldEZyYW1lSXNNYWluRnJh
bWUpOwotICAgICAgICBnX2Fzc2VydChzb3VyY2VGcmFtZUlzTWFpbkZyYW1lKTsKKyAgICAgICAg
Z19hc3NlcnRfZmFsc2UodGFyZ2V0RnJhbWVJc01haW5GcmFtZSk7CisgICAgICAgIGdfYXNzZXJ0
X3RydWUoc291cmNlRnJhbWVJc01haW5GcmFtZSk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQg
d2lsbFNlbmRET01FdmVudENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiosIGNvbnN0IGNoYXIqLCBj
b25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBHVmFyaWFudCogcmVzdWx0LCBG
b3JtU3VibWlzc2lvblRlc3QqIHRlc3QpCkBAIC00MzQsMTYgKzQzNCwxNiBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViRXh0ZW5zaW9uRm9ybVN1Ym1pc3Npb25TdGVwcyhGb3JtU3VibWlzc2lvblRlc3Qq
IHRlc3QsIGdjb25zdAogICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGb3JtU3Vi
bWl0dGVkKHN1Ym1pdEZvcm1TY3JpcHQpOwogICAgIC8vIFN1Ym1pdCBtdXN0IG5vdCBiZSBlbWl0
dGVkIHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkIHZpYSBKUy4KICAgICAvLyBodHRwczovL2Rl
dmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEZvcm1FbGVtZW50L3N1
Ym1pdAotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3dpbGxTZW5kRE9NRXZlbnRDYWxsYmFja0V4ZWN1
dGVkKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3dpbGxDb21wbGV0ZUNhbGxiYWNrRXhlY3V0ZWQp
OworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPm1fd2lsbFNlbmRET01FdmVudENhbGxiYWNrRXhl
Y3V0ZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV93aWxsQ29tcGxldGVDYWxsYmFja0V4
ZWN1dGVkKTsKICAgICB0ZXN0LT5tX3dpbGxDb21wbGV0ZUNhbGxiYWNrRXhlY3V0ZWQgPSBmYWxz
ZTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBtYW51YWxseVN1Ym1pdEZvcm1TY3JpcHQgPQog
ICAgICAgICAidmFyIGJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3VibWl0X2J1
dHRvblwiKTsiCiAgICAgICAgICJidXR0b24uY2xpY2soKTsiOwogICAgIHRlc3QtPnJ1bkphdmFT
Y3JpcHRBbmRXYWl0VW50aWxGb3JtU3VibWl0dGVkKG1hbnVhbGx5U3VibWl0Rm9ybVNjcmlwdCk7
Ci0gICAgZ19hc3NlcnQodGVzdC0+bV93aWxsU2VuZERPTUV2ZW50Q2FsbGJhY2tFeGVjdXRlZCk7
Ci0gICAgZ19hc3NlcnQodGVzdC0+bV93aWxsQ29tcGxldGVDYWxsYmFja0V4ZWN1dGVkKTsKKyAg
ICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fd2lsbFNlbmRET01FdmVudENhbGxiYWNrRXhlY3V0ZWQp
OworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV93aWxsQ29tcGxldGVDYWxsYmFja0V4ZWN1dGVk
KTsKICAgICB0ZXN0LT5tX3dpbGxTZW5kRE9NRXZlbnRDYWxsYmFja0V4ZWN1dGVkID0gZmFsc2U7
CiAgICAgdGVzdC0+bV93aWxsQ29tcGxldGVDYWxsYmFja0V4ZWN1dGVkID0gZmFsc2U7CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
RmF2aWNvbkRhdGFiYXNlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCAyNWViYzRiOTEzNjhmYjAxNTll
NmE0MGUwMDRkMGMzNGQzZDAxYWM4Li40MGVjNzIxNDEyYjM3ZTRmN2JmOGJhNGZkMTEzZDFkZTVi
N2JlMThhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCkBAIC02NSw3ICs2
NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCB2aWV3RmF2aWNvbkNoYW5nZWRDYWxsYmFj
ayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHUGFyYW1TcGVjKiBwc3BlYywgZ3BvaW50ZXIgZGF0
YSkKICAgICB7CiAgICAgICAgIEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3QgPSBzdGF0aWNfY2Fz
dDxGYXZpY29uRGF0YWJhc2VUZXN0Kj4oZGF0YSk7Ci0gICAgICAgIGdfYXNzZXJ0KHRlc3QtPm1f
d2ViVmlldyA9PSB3ZWJWaWV3KTsKKyAgICAgICAgZ19hc3NlcnRfY21waGV4KHRlc3QtPm1fd2Vi
VmlldywgPT0sIHdlYlZpZXcpOwogICAgICAgICB0ZXN0LT5tX2Zhdmljb25Ob3RpZmljYXRpb25S
ZWNlaXZlZCA9IHRydWU7CiAgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOwogICAgIH0KQEAg
LTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdhaXRVbnRpbEZhdmljb25VUklD
aGFuZ2VkKCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KCFtX3dhaXRpbmdGb3JGYXZpY29uVVJJ
KTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2UobV93YWl0aW5nRm9yRmF2aWNvblVSSSk7CiAgICAg
ICAgIG1fZmF2aWNvblVSSSA9IENTdHJpbmcoKTsKICAgICAgICAgbV93YWl0aW5nRm9yRmF2aWNv
blVSSSA9IHRydWU7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKQEAgLTE1
NCw4ICsxNTQsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0Tm90SW5pdGlhbGl6ZWQoRmF2aWNvbkRhdGFi
YXNlVGVzdCogdGVzdCkKIHsKICAgICAvLyBUcnkgdG8gcmV0cmlldmUgYSB2YWxpZCBmYXZpY29u
IGZyb20gYSBub3QgaW5pdGlhbGl6ZWQgZGF0YWJhc2UuCiAgICAgdGVzdC0+Z2V0RmF2aWNvbkZv
clBhZ2VVUklBbmRXYWl0VW50aWxSZWFkeShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvZm9vIiku
ZGF0YSgpKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+bV9mYXZpY29uKTsKLSAgICBnX2Fzc2VydCh0
ZXN0LT5tX2Vycm9yKTsKKyAgICBnX2Fzc2VydF9udWxsKHRlc3QtPm1fZmF2aWNvbik7CisgICAg
Z19hc3NlcnRfbm9ubnVsbCh0ZXN0LT5tX2Vycm9yKTsKICAgICBnX2Fzc2VydF9jbXBpbnQodGVz
dC0+bV9lcnJvci0+Y29kZSwgPT0sIFdFQktJVF9GQVZJQ09OX0RBVEFCQVNFX0VSUk9SX05PVF9J
TklUSUFMSVpFRCk7CiB9CiAjZW5kaWYKQEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMgdm9pZCB0
ZXN0Q2xlYXJEYXRhYmFzZShGYXZpY29uRGF0YWJhc2VUZXN0KiB0ZXN0KQogICAgIHdlYmtpdF9m
YXZpY29uX2RhdGFiYXNlX2NsZWFyKGRhdGFiYXNlKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4g
aWNvblVSSSh3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbl91cmkoZGF0YWJhc2Us
IGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9mb28iKS5kYXRhKCkpKTsKLSAgICBnX2Fzc2VydCgh
aWNvblVSSSk7CisgICAgZ19hc3NlcnRfbnVsbChpY29uVVJJKTsKIH0KIAogc3RhdGljIHZvaWQg
ZXBoZW1lcmFsVmlld0xvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExv
YWRFdmVudCBsb2FkRXZlbnQsIFdlYlZpZXdUZXN0KiB0ZXN0KQpAQCAtMTk2LDggKzE5Niw4IEBA
IHN0YXRpYyB2b2lkIHRlc3RQcml2YXRlQnJvd3NpbmcoRmF2aWNvbkRhdGFiYXNlVGVzdCogdGVz
dCkKIAogICAgIC8vIEFuIGVwaGVtZXJhbCB3ZWIgdmlldyBzaG91bGQgbm90IHdyaXRlIHRvIHRo
ZSBkYXRhYmFzZS4KICAgICB0ZXN0LT5nZXRGYXZpY29uRm9yUGFnZVVSSUFuZFdhaXRVbnRpbFJl
YWR5KGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9mb28iKS5kYXRhKCkpOwotICAgIGdfYXNzZXJ0
KCF0ZXN0LT5tX2Zhdmljb24pOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXJyb3IpOworICAgIGdf
YXNzZXJ0X251bGwodGVzdC0+bV9mYXZpY29uKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHRlc3Qt
Pm1fZXJyb3IpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0R2V0RmF2aWNvbihGYXZpY29uRGF0YWJh
c2VUZXN0KiB0ZXN0KQpAQCAtMjEwLDkgKzIxMCw5IEBAIHN0YXRpYyB2b2lkIHRlc3RHZXRGYXZp
Y29uKEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3QpCiAKICAgICAvLyBDaGVjayB0aGUgQVBJIHJl
dHJpZXZpbmcgYSB2YWxpZCBmYXZpY29uLgogICAgIHRlc3QtPmdldEZhdmljb25Gb3JQYWdlVVJJ
QW5kV2FpdFVudGlsUmVhZHkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2ZvbyIpLmRhdGEoKSk7
Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9mYXZpY29uKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHRl
c3QtPm1fZmF2aWNvbik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fZmF2aWNvblVSSS5k
YXRhKCksID09LCBmYXZpY29uVVJJLmRhdGEoKSk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1fZXJy
b3IpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKHRlc3QtPm1fZXJyb3IuZ2V0KCkpOwogCiAgICAg
Ly8gQ2hlY2sgdGhhdCB3aWR0aCBhbmQgaGVpZ2h0IG1hdGNoIHRob3NlIGZyb20gYmxhbmsuaWNv
ICgxNngxNiBmYXZpY29uKS4KICAgICBnX2Fzc2VydF9jbXBpbnQoY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9nZXRfd2lkdGgodGVzdC0+bV9mYXZpY29uKSwgPT0sIDE2KTsKQEAgLTIyNiwxMCArMjI2LDEw
IEBAIHN0YXRpYyB2b2lkIHRlc3RHZXRGYXZpY29uKEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3Qp
CiAgICAgdGVzdC0+d2FpdFVudGlsRmF2aWNvbkNoYW5nZWQoKTsKICAgICB0ZXN0LT53YWl0VW50
aWxGYXZpY29uQ2hhbmdlZCgpOwogICAgIHRlc3QtPmdldEZhdmljb25Gb3JQYWdlVVJJQW5kV2Fp
dFVudGlsUmVhZHkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2JhciIpLmRhdGEoKSk7Ci0gICAg
Z19hc3NlcnQodGVzdC0+bV9mYXZpY29uKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHRlc3QtPm1f
ZmF2aWNvbik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fZmF2aWNvblVSSS5kYXRhKCks
ID09LCBmYXZpY29uVVJJLmRhdGEoKSk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9mYXZpY29uID09
IGZhdmljb24pOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2Vycm9yKTsKKyAgICBnX2Fzc2VydF9j
bXBoZXgodGVzdC0+bV9mYXZpY29uLCA9PSwgZmF2aWNvbik7CisgICAgZ19hc3NlcnRfbm9fZXJy
b3IodGVzdC0+bV9lcnJvci5nZXQoKSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KGZhdmlj
b24pOwogCiAgICAgLy8gQ2hlY2sgdGhlIEFQSSByZXRyaWV2aW5nIGFuIGludmFsaWQgZmF2aWNv
bi4gRmF2aWNvbiBjaGFuZ2VzIG9ubHkgb25jZSB0byByZXNldCBpdCwgdGhlbgpAQCAtMjM5LDgg
KzIzOSw4IEBAIHN0YXRpYyB2b2lkIHRlc3RHZXRGYXZpY29uKEZhdmljb25EYXRhYmFzZVRlc3Qq
IHRlc3QpCiAgICAgdGVzdC0+d2FpdFVudGlsRmF2aWNvblVSSUNoYW5nZWQoKTsKIAogICAgIHRl
c3QtPmdldEZhdmljb25Gb3JQYWdlVVJJQW5kV2FpdFVudGlsUmVhZHkoa1NlcnZlci0+Z2V0VVJJ
Rm9yUGF0aCgiL25vZmF2aWNvbiIpLmRhdGEoKSk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1fZmF2
aWNvbik7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9lcnJvcik7CisgICAgZ19hc3NlcnRfbnVsbCh0
ZXN0LT5tX2Zhdmljb24pOworICAgIGdfYXNzZXJ0X25vbm51bGwodGVzdC0+bV9lcnJvcik7CiB9
CiAKIHN0YXRpYyB2b2lkIHRlc3RHZXRGYXZpY29uVVJJKEZhdmljb25EYXRhYmFzZVRlc3QqIHRl
c3QpCkBAIC0yNTcsMTcgKzI1NywxNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0Zhdmljb24o
RmF2aWNvbkRhdGFiYXNlVGVzdCogdGVzdCkKICAgICB0ZXN0LT5tX2Zhdmljb25VUkkgPSBDU3Ry
aW5nKCk7CiAKICAgICBjYWlyb19zdXJmYWNlX3QqIGljb25Gcm9tV2ViVmlldyA9IHdlYmtpdF93
ZWJfdmlld19nZXRfZmF2aWNvbih0ZXN0LT5tX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KCFpY29u
RnJvbVdlYlZpZXcpOworICAgIGdfYXNzZXJ0X251bGwoaWNvbkZyb21XZWJWaWV3KTsKIAogICAg
IHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2ZvbyIpLmRhdGEoKSk7CiAg
ICAgdGVzdC0+d2FpdFVudGlsRmF2aWNvbkNoYW5nZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5t
X2Zhdmljb25Ob3RpZmljYXRpb25SZWNlaXZlZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5t
X2Zhdmljb25Ob3RpZmljYXRpb25SZWNlaXZlZCk7CiAgICAgLy8gVGhlIGljb24gaXMga25vd24g
YW5kIGhhc24ndCBjaGFuZ2VkIGluIHRoZSBkYXRhYmFzZSwgc28gbm90aWZ5OjpmYXZpY29uIGlz
IGVtaXR0ZWQKICAgICAvLyBidXQgV2ViS2l0RmF2aWNvbkRhdGFiYXNlOjppY29uLWNoYW5nZWQg
aXNuJ3QuCi0gICAgZ19hc3NlcnQodGVzdC0+bV9mYXZpY29uVVJJLmlzTnVsbCgpKTsKKyAgICBn
X2Fzc2VydF90cnVlKHRlc3QtPm1fZmF2aWNvblVSSS5pc051bGwoKSk7CiAKICAgICBpY29uRnJv
bVdlYlZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Zhdmljb24odGVzdC0+bV93ZWJWaWV3KTsK
LSAgICBnX2Fzc2VydChpY29uRnJvbVdlYlZpZXcpOworICAgIGdfYXNzZXJ0X25vbm51bGwoaWNv
bkZyb21XZWJWaWV3KTsKICAgICBnX2Fzc2VydF9jbXB1aW50KGNhaXJvX2ltYWdlX3N1cmZhY2Vf
Z2V0X3dpZHRoKGljb25Gcm9tV2ViVmlldyksID09LCAxNik7CiAgICAgZ19hc3NlcnRfY21wdWlu
dChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoaWNvbkZyb21XZWJWaWV3KSwgPT0sIDE2
KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0V2ViS2l0RmluZENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RXZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKaW5kZXggNzY1OGY1OTU5OWRk
YjhkM2FmZmM4MTg1MjdmYTQ2NDU1MjdlZjFlOC4uNDgwYTM0YjcxYjBjZmRkNzhmNjVjZWJhODIw
YmFjMjdhZmU3YWU2MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RXZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKQEAgLTk4
LDcgKzk4LDcgQEAgc3RhdGljIHZvaWQgdGVzdEZpbmRDb250cm9sbGVyVGV4dEZvdW5kKEZpbmRD
b250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5maW5kKCJ0ZXN0
aW5nIiwgV0VCS0lUX0ZJTkRfT1BUSU9OU19OT05FLCAxKTsKICAgICB0ZXN0LT53YWl0VW50aWxG
aW5kRmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0KHRlc3QtPm1fdGV4dEZvdW5kKTsKKyAgICBn
X2Fzc2VydF90cnVlKHRlc3QtPm1fdGV4dEZvdW5kKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdEZp
bmRDb250cm9sbGVyVGV4dE5vdEZvdW5kKEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKQEAgLTEwOSw3ICsxMDksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0RmluZENvbnRyb2xs
ZXJUZXh0Tm90Rm91bmQoRmluZENvbnRyb2xsZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludAogICAg
IHRlc3QtPmZpbmQoIm5vdEZvdW5kIiwgV0VCS0lUX0ZJTkRfT1BUSU9OU19OT05FLCAxKTsKICAg
ICB0ZXN0LT53YWl0VW50aWxGaW5kRmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0KCF0ZXN0LT5t
X3RleHRGb3VuZCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV90ZXh0Rm91bmQpOwogfQog
CiBzdGF0aWMgdm9pZCB0ZXN0RmluZENvbnRyb2xsZXJNYXRjaENvdW50KEZpbmRDb250cm9sbGVy
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTEyMCw4ICsxMjAsOCBAQCBzdGF0aWMgdm9p
ZCB0ZXN0RmluZENvbnRyb2xsZXJNYXRjaENvdW50KEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcgogICAgIHRlc3QtPmZpbmQoInRlc3RpbmciLCBXRUJLSVRfRklORF9PUFRJ
T05TX05PTkUsIDIpOwogICAgIHRlc3QtPndhaXRVbnRpbEZpbmRGaW5pc2hlZCgpOwogCi0gICAg
Z19hc3NlcnQodGVzdC0+bV9tYXRjaENvdW50ID09IDIpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1f
dGV4dEZvdW5kKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fbWF0Y2hDb3VudCwgPT0s
IDIpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV90ZXh0Rm91bmQpOwogfQogCiBzdGF0aWMg
dm9pZCB0ZXN0RmluZENvbnRyb2xsZXJNYXhNYXRjaENvdW50KEZpbmRDb250cm9sbGVyVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTEzMiw4ICsxMzIsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0
RmluZENvbnRyb2xsZXJNYXhNYXRjaENvdW50KEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbgogICAgIHRlc3QtPmZpbmQoInRlc3RpbmciLCBXRUJLSVRfRklORF9PUFRJT05TX05P
TkUsIDEpOwogICAgIHRlc3QtPndhaXRVbnRpbEZpbmRGaW5pc2hlZCgpOwogCi0gICAgZ19hc3Nl
cnQodGVzdC0+bV9tYXRjaENvdW50ID09IEdfTUFYVUlOVCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+
bV90ZXh0Rm91bmQpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9tYXRjaENvdW50LCA9
PSwgR19NQVhVSU5UKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fdGV4dEZvdW5kKTsKIH0K
IAogc3RhdGljIHZvaWQgdGVzdEZpbmRDb250cm9sbGVyTmV4dChGaW5kQ29udHJvbGxlclRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC0xNDQsMjIgKzE0NCwyMiBAQCBzdGF0aWMgdm9pZCB0
ZXN0RmluZENvbnRyb2xsZXJOZXh0KEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKICAgICB0ZXN0LT5maW5kKCJ0ZXN0aW5nIiwgV0VCS0lUX0ZJTkRfT1BUSU9OU19OT05F
LCAyKTsKICAgICB0ZXN0LT53YWl0VW50aWxGaW5kRmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0
KHRlc3QtPm1fdGV4dEZvdW5kKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX21hdGNoQ291bnQgPT0g
Mik7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3RleHRGb3VuZCk7CisgICAgZ19hc3NlcnRf
Y21wdWludCh0ZXN0LT5tX21hdGNoQ291bnQsID09LCAyKTsKIAogICAgIHdlYmtpdF9maW5kX2Nv
bnRyb2xsZXJfc2VhcmNoX25leHQodGVzdC0+bV9maW5kQ29udHJvbGxlci5nZXQoKSk7CiAgICAg
dGVzdC0+d2FpdFVudGlsRmluZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3Rl
eHRGb3VuZCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9tYXRjaENvdW50ID09IDEpOwotICAgIGdf
YXNzZXJ0KCEod2Via2l0X2ZpbmRfY29udHJvbGxlcl9nZXRfb3B0aW9ucyh0ZXN0LT5tX2ZpbmRD
b250cm9sbGVyLmdldCgpKSAmIFdFQktJVF9GSU5EX09QVElPTlNfQkFDS1dBUkRTKSk7CisgICAg
Z19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3RleHRGb3VuZCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0
ZXN0LT5tX21hdGNoQ291bnQsID09LCAxKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfZmlu
ZF9jb250cm9sbGVyX2dldF9vcHRpb25zKHRlc3QtPm1fZmluZENvbnRyb2xsZXIuZ2V0KCkpICYg
V0VCS0lUX0ZJTkRfT1BUSU9OU19CQUNLV0FSRFMpOwogCiAgICAgd2Via2l0X2ZpbmRfY29udHJv
bGxlcl9zZWFyY2hfbmV4dCh0ZXN0LT5tX2ZpbmRDb250cm9sbGVyLmdldCgpKTsKICAgICB0ZXN0
LT53YWl0VW50aWxGaW5kRmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3RleHRG
b3VuZCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9tYXRjaENvdW50ID09IDEpOwotICAgIGdfYXNz
ZXJ0KCEod2Via2l0X2ZpbmRfY29udHJvbGxlcl9nZXRfb3B0aW9ucyh0ZXN0LT5tX2ZpbmRDb250
cm9sbGVyLmdldCgpKSAmIFdFQktJVF9GSU5EX09QVElPTlNfQkFDS1dBUkRTKSk7CisgICAgZ19h
c3NlcnRfZmFsc2UodGVzdC0+bV90ZXh0Rm91bmQpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVz
dC0+bV9tYXRjaENvdW50LCA9PSwgMSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2ZpbmRf
Y29udHJvbGxlcl9nZXRfb3B0aW9ucyh0ZXN0LT5tX2ZpbmRDb250cm9sbGVyLmdldCgpKSAmIFdF
QktJVF9GSU5EX09QVElPTlNfQkFDS1dBUkRTKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdEZpbmRD
b250cm9sbGVyUHJldmlvdXMoRmluZENvbnRyb2xsZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQpAQCAtMTcwLDIyICsxNzAsMjIgQEAgc3RhdGljIHZvaWQgdGVzdEZpbmRDb250cm9sbGVyUHJl
dmlvdXMoRmluZENvbnRyb2xsZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3Qt
PmZpbmQoInRlc3RpbmciLCBXRUJLSVRfRklORF9PUFRJT05TX05PTkUsIDIpOwogICAgIHRlc3Qt
PndhaXRVbnRpbEZpbmRGaW5pc2hlZCgpOwogCi0gICAgZ19hc3NlcnQodGVzdC0+bV9tYXRjaENv
dW50ID09IDIpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fdGV4dEZvdW5kKTsKKyAgICBnX2Fzc2Vy
dF9jbXB1aW50KHRlc3QtPm1fbWF0Y2hDb3VudCwgPT0sIDIpOworICAgIGdfYXNzZXJ0X3RydWUo
dGVzdC0+bV90ZXh0Rm91bmQpOwogCiAgICAgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9zZWFyY2hf
bmV4dCh0ZXN0LT5tX2ZpbmRDb250cm9sbGVyLmdldCgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxG
aW5kRmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0KHRlc3QtPm1fdGV4dEZvdW5kKTsKLSAgICBn
X2Fzc2VydCh0ZXN0LT5tX21hdGNoQ291bnQgPT0gMSk7Ci0gICAgZ19hc3NlcnQoISh3ZWJraXRf
ZmluZF9jb250cm9sbGVyX2dldF9vcHRpb25zKHRlc3QtPm1fZmluZENvbnRyb2xsZXIuZ2V0KCkp
ICYgV0VCS0lUX0ZJTkRfT1BUSU9OU19CQUNLV0FSRFMpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRl
c3QtPm1fdGV4dEZvdW5kKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fbWF0Y2hDb3Vu
dCwgPT0sIDEpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfZ2V0
X29wdGlvbnModGVzdC0+bV9maW5kQ29udHJvbGxlci5nZXQoKSkgJiBXRUJLSVRfRklORF9PUFRJ
T05TX0JBQ0tXQVJEUyk7CiAKICAgICB3ZWJraXRfZmluZF9jb250cm9sbGVyX3NlYXJjaF9wcmV2
aW91cyh0ZXN0LT5tX2ZpbmRDb250cm9sbGVyLmdldCgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxG
aW5kRmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0KHRlc3QtPm1fdGV4dEZvdW5kKTsKLSAgICBn
X2Fzc2VydCh0ZXN0LT5tX21hdGNoQ291bnQgPT0gMSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X2Zp
bmRfY29udHJvbGxlcl9nZXRfb3B0aW9ucyh0ZXN0LT5tX2ZpbmRDb250cm9sbGVyLmdldCgpKSAm
IFdFQktJVF9GSU5EX09QVElPTlNfQkFDS1dBUkRTKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3Qt
Pm1fdGV4dEZvdW5kKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fbWF0Y2hDb3VudCwg
PT0sIDEpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2ZpbmRfY29udHJvbGxlcl9nZXRfb3B0
aW9ucyh0ZXN0LT5tX2ZpbmRDb250cm9sbGVyLmdldCgpKSAmIFdFQktJVF9GSU5EX09QVElPTlNf
QkFDS1dBUkRTKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdEZpbmRDb250cm9sbGVyQ291bnRlZE1h
dGNoZXMoRmluZENvbnRyb2xsZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMTk2LDE3
ICsxOTYsMTcgQEAgc3RhdGljIHZvaWQgdGVzdEZpbmRDb250cm9sbGVyQ291bnRlZE1hdGNoZXMo
RmluZENvbnRyb2xsZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2kKICAgICB0ZXN0LT5jb3VudCgidGVz
dGluZyIsIFdFQktJVF9GSU5EX09QVElPTlNfTk9ORSwgMik7CiAgICAgdGVzdC0+d2FpdFVudGls
RmluZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX21hdGNoQ291bnQgPT0gMik7
CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX21hdGNoQ291bnQsID09LCAyKTsKIAogICAg
IHRlc3QtPmNvdW50KCJmaXJzdCIsIFdFQktJVF9GSU5EX09QVElPTlNfTk9ORSwgMik7CiAgICAg
dGVzdC0+d2FpdFVudGlsRmluZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX21h
dGNoQ291bnQgPT0gMSk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX21hdGNoQ291bnQs
ID09LCAxKTsKIAogICAgIHRlc3QtPmNvdW50KCJub3RGb3VuZCIsIFdFQktJVF9GSU5EX09QVElP
TlNfTk9ORSwgMik7CiAgICAgdGVzdC0+d2FpdFVudGlsRmluZEZpbmlzaGVkKCk7CiAKLSAgICBn
X2Fzc2VydCghdGVzdC0+bV9tYXRjaENvdW50KTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3Qt
Pm1fbWF0Y2hDb3VudCwgPT0sIDApOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0RmluZENvbnRyb2xs
ZXJPcHRpb25zKEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTIx
Nyw0NCArMjE3LDQ0IEBAIHN0YXRpYyB2b2lkIHRlc3RGaW5kQ29udHJvbGxlck9wdGlvbnMoRmlu
ZENvbnRyb2xsZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPmZpbmQoIlRl
c3RpbmciLCBXRUJLSVRfRklORF9PUFRJT05TX05PTkUsIDIpOwogICAgIHRlc3QtPndhaXRVbnRp
bEZpbmRGaW5pc2hlZCgpOwogCi0gICAgZ19hc3NlcnQoIXRlc3QtPm1fdGV4dEZvdW5kKTsKKyAg
ICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5tX3RleHRGb3VuZCk7CiAKICAgICB0ZXN0LT5maW5kKCJU
ZXN0aW5nIiwgV0VCS0lUX0ZJTkRfT1BUSU9OU19DQVNFX0lOU0VOU0lUSVZFLCAyKTsKICAgICB0
ZXN0LT53YWl0VW50aWxGaW5kRmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0KHRlc3QtPm1fdGV4
dEZvdW5kKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fdGV4dEZvdW5kKTsKIAogICAgIHRl
c3QtPmZpbmQoImVzdGluZyIsIFdFQktJVF9GSU5EX09QVElPTlNfTk9ORSwgMik7CiAgICAgdGVz
dC0+d2FpdFVudGlsRmluZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3RleHRG
b3VuZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3RleHRGb3VuZCk7CiAKICAgICB0ZXN0
LT5maW5kKCJlc3RpbmciLCBXRUJLSVRfRklORF9PUFRJT05TX0FUX1dPUkRfU1RBUlRTLCAyKTsK
ICAgICB0ZXN0LT53YWl0VW50aWxGaW5kRmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0KCF0ZXN0
LT5tX3RleHRGb3VuZCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV90ZXh0Rm91bmQpOwog
CiAgICAgdGVzdC0+ZmluZCgiSGFsZiIsIFdFQktJVF9GSU5EX09QVElPTlNfQVRfV09SRF9TVEFS
VFMsIDIpOwogICAgIHRlc3QtPndhaXRVbnRpbEZpbmRGaW5pc2hlZCgpOwogCi0gICAgZ19hc3Nl
cnQoIXRlc3QtPm1fdGV4dEZvdW5kKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5tX3RleHRG
b3VuZCk7CiAKICAgICB0ZXN0LT5maW5kKCJIYWxmIiwgV0VCS0lUX0ZJTkRfT1BUSU9OU19BVF9X
T1JEX1NUQVJUUyB8IFdFQktJVF9GSU5EX09QVElPTlNfVFJFQVRfTUVESUFMX0NBUElUQUxfQVNf
V09SRF9TVEFSVCwgMik7CiAgICAgdGVzdC0+d2FpdFVudGlsRmluZEZpbmlzaGVkKCk7CiAKLSAg
ICBnX2Fzc2VydCh0ZXN0LT5tX3RleHRGb3VuZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5t
X3RleHRGb3VuZCk7CiAKICAgICB0ZXN0LT5maW5kKCJ0ZXN0aW5nIiwgV0VCS0lUX0ZJTkRfT1BU
SU9OU19XUkFQX0FST1VORCwgMyk7CiAgICAgdGVzdC0+d2FpdFVudGlsRmluZEZpbmlzaGVkKCk7
Ci0gICAgZ19hc3NlcnQodGVzdC0+bV90ZXh0Rm91bmQpOworICAgIGdfYXNzZXJ0X3RydWUodGVz
dC0+bV90ZXh0Rm91bmQpOwogCiAgICAgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9zZWFyY2hfbmV4
dCh0ZXN0LT5tX2ZpbmRDb250cm9sbGVyLmdldCgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxGaW5k
RmluaXNoZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3RleHRGb3VuZCk7CisgICAgZ19hc3Nl
cnRfdHJ1ZSh0ZXN0LT5tX3RleHRGb3VuZCk7CiAKICAgICB3ZWJraXRfZmluZF9jb250cm9sbGVy
X3NlYXJjaF9uZXh0KHRlc3QtPm1fZmluZENvbnRyb2xsZXIuZ2V0KCkpOwogICAgIHRlc3QtPndh
aXRVbnRpbEZpbmRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fdGV4dEZvdW5kKTsK
KyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fdGV4dEZvdW5kKTsKIH0KIAogLy8gVE9ETzogUmV3
cml0ZSB0aGlzIHRlc3QgdG8gYXZvaWQgdXNpbmcgc25hcHNob3RzIHNvIGl0IGNhbiBiZSByZS1l
bmFibGVkCkBAIC0yNjksMTYgKzI2OSwxNiBAQCBzdGF0aWMgdm9pZCB0ZXN0RmluZENvbnRyb2xs
ZXJIaWRlKEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIGNh
aXJvX3N1cmZhY2VfdCogb3JpZ2luYWxTdXJmYWNlID0gY2Fpcm9fc3VyZmFjZV9yZWZlcmVuY2Uo
CiAgICAgICAgIHRlc3QtPmdldFNuYXBzaG90QW5kV2FpdFVudGlsUmVhZHkoV0VCS0lUX1NOQVBT
SE9UX1JFR0lPTl9GVUxMX0RPQ1VNRU5ULCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FKSk7
Ci0gICAgZ19hc3NlcnQob3JpZ2luYWxTdXJmYWNlKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKG9y
aWdpbmFsU3VyZmFjZSk7CiAKICAgICB0ZXN0LT5maW5kKCJ0ZXN0aW5nIiwgV0VCS0lUX0ZJTkRf
T1BUSU9OU19OT05FLCAxKTsKICAgICB0ZXN0LT53YWl0VW50aWxGaW5kRmluaXNoZWQoKTsKLSAg
ICBnX2Fzc2VydCh0ZXN0LT5tX3RleHRGb3VuZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5t
X3RleHRGb3VuZCk7CiAKICAgICBjYWlyb19zdXJmYWNlX3QqIGhpZ2hsaWdodFN1cmZhY2UgPSBj
YWlyb19zdXJmYWNlX3JlZmVyZW5jZSgKICAgICAgICAgdGVzdC0+Z2V0U25hcHNob3RBbmRXYWl0
VW50aWxSZWFkeShXRUJLSVRfU05BUFNIT1RfUkVHSU9OX0ZVTExfRE9DVU1FTlQsIFdFQktJVF9T
TkFQU0hPVF9PUFRJT05TX05PTkUpKTsKLSAgICBnX2Fzc2VydChoaWdobGlnaHRTdXJmYWNlKTsK
LSAgICBnX2Fzc2VydCghVGVzdDo6Y2Fpcm9TdXJmYWNlc0VxdWFsKG9yaWdpbmFsU3VyZmFjZSwg
aGlnaGxpZ2h0U3VyZmFjZSkpOworICAgIGdfYXNzZXJ0X25vbm51bGwoaGlnaGxpZ2h0U3VyZmFj
ZSk7CisgICAgZ19hc3NlcnRfZmFsc2UoVGVzdDo6Y2Fpcm9TdXJmYWNlc0VxdWFsKG9yaWdpbmFs
U3VyZmFjZSwgaGlnaGxpZ2h0U3VyZmFjZSkpOwogCiAgICAgV2ViS2l0RmluZENvbnRyb2xsZXIq
IGZpbmRDb250cm9sbGVyID0gd2Via2l0X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xsZXIodGVz
dC0+bV93ZWJWaWV3KTsKICAgICB3ZWJraXRfZmluZF9jb250cm9sbGVyX3NlYXJjaF9maW5pc2go
ZmluZENvbnRyb2xsZXIpOwpAQCAtMjg2LDggKzI4Niw4IEBAIHN0YXRpYyB2b2lkIHRlc3RGaW5k
Q29udHJvbGxlckhpZGUoRmluZENvbnRyb2xsZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
CiAgICAgY2Fpcm9fc3VyZmFjZV90KiB1bmhpZ2hsaWdodFN1cmZhY2UgPSBjYWlyb19zdXJmYWNl
X3JlZmVyZW5jZSgKICAgICAgICAgdGVzdC0+Z2V0U25hcHNob3RBbmRXYWl0VW50aWxSZWFkeShX
RUJLSVRfU05BUFNIT1RfUkVHSU9OX0ZVTExfRE9DVU1FTlQsIFdFQktJVF9TTkFQU0hPVF9PUFRJ
T05TX05PTkUpKTsKLSAgICBnX2Fzc2VydCh1bmhpZ2hsaWdodFN1cmZhY2UpOwotICAgIGdfYXNz
ZXJ0KFRlc3Q6OmNhaXJvU3VyZmFjZXNFcXVhbChvcmlnaW5hbFN1cmZhY2UsIHVuaGlnaGxpZ2h0
U3VyZmFjZSkpOworICAgIGdfYXNzZXJ0X25vbm51bGwodW5oaWdobGlnaHRTdXJmYWNlKTsKKyAg
ICBnX2Fzc2VydF90cnVlKFRlc3Q6OmNhaXJvU3VyZmFjZXNFcXVhbChvcmlnaW5hbFN1cmZhY2Us
IHVuaGlnaGxpZ2h0U3VyZmFjZSkpOwogCiAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KG9yaWdp
bmFsU3VyZmFjZSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KGhpZ2hsaWdodFN1cmZhY2Up
OwpAQCAtMzAwLDcgKzMwMCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RGaW5kQ29udHJvbGxlckluc3Rh
bmNlKEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBXZWJLaXRG
aW5kQ29udHJvbGxlciogZmluZENvbnRyb2xsZXIxID0gd2Via2l0X3dlYl92aWV3X2dldF9maW5k
X2NvbnRyb2xsZXIodGVzdC0+bV93ZWJWaWV3KTsKICAgICBXZWJLaXRGaW5kQ29udHJvbGxlciog
ZmluZENvbnRyb2xsZXIyID0gd2Via2l0X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xsZXIodGVz
dC0+bV93ZWJWaWV3KTsKIAotICAgIGdfYXNzZXJ0KGZpbmRDb250cm9sbGVyMSA9PSBmaW5kQ29u
dHJvbGxlcjIpOworICAgIGdfYXNzZXJ0X2NtcGhleChmaW5kQ29udHJvbGxlcjEsID09LCBmaW5k
Q29udHJvbGxlcjIpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0RmluZENvbnRyb2xsZXJHZXR0ZXJz
KEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTMxMSwxMCArMzEx
LDEwIEBAIHN0YXRpYyB2b2lkIHRlc3RGaW5kQ29udHJvbGxlckdldHRlcnMoRmluZENvbnRyb2xs
ZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIFdlYktpdEZpbmRDb250cm9sbGVyKiBm
aW5kQ29udHJvbGxlciA9IHdlYmtpdF93ZWJfdmlld19nZXRfZmluZF9jb250cm9sbGVyKHRlc3Qt
Pm1fd2ViVmlldyk7CiAKICAgICB3ZWJraXRfZmluZF9jb250cm9sbGVyX3NlYXJjaChmaW5kQ29u
dHJvbGxlciwgc2VhcmNoVGV4dCwgZmluZE9wdGlvbnMsIG1heE1hdGNoQ291bnQpOwotICAgIGdf
YXNzZXJ0KHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfZ2V0X3dlYl92aWV3KGZpbmRDb250cm9sbGVy
KSA9PSB0ZXN0LT5tX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KCFnX3N0cmNtcDAod2Via2l0X2Zp
bmRfY29udHJvbGxlcl9nZXRfc2VhcmNoX3RleHQoZmluZENvbnRyb2xsZXIpLCBzZWFyY2hUZXh0
KSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X2ZpbmRfY29udHJvbGxlcl9nZXRfbWF4X21hdGNoX2Nv
dW50KGZpbmRDb250cm9sbGVyKSA9PSBtYXhNYXRjaENvdW50KTsKLSAgICBnX2Fzc2VydCh3ZWJr
aXRfZmluZF9jb250cm9sbGVyX2dldF9vcHRpb25zKGZpbmRDb250cm9sbGVyKSA9PSBmaW5kT3B0
aW9ucyk7CisgICAgZ19hc3NlcnRfY21waGV4KHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfZ2V0X3dl
Yl92aWV3KGZpbmRDb250cm9sbGVyKSwgPT0sIHRlc3QtPm1fd2ViVmlldyk7CisgICAgZ19hc3Nl
cnRfY21wc3RyKHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfZ2V0X3NlYXJjaF90ZXh0KGZpbmRDb250
cm9sbGVyKSwgPT0sIHNlYXJjaFRleHQpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2Zp
bmRfY29udHJvbGxlcl9nZXRfbWF4X21hdGNoX2NvdW50KGZpbmRDb250cm9sbGVyKSwgPT0sIG1h
eE1hdGNoQ291bnQpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2ZpbmRfY29udHJvbGxl
cl9nZXRfb3B0aW9ucyhmaW5kQ29udHJvbGxlciksID09LCBmaW5kT3B0aW9ucyk7CiB9CiAKIHZv
aWQgYmVmb3JlQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcAppbmRleCBhOWZkOWRl
MzNiZDFmNTQ2NjM0YWMzMTAyY2Y3MGU0ODVmMzU0MzMzLi43NjliY2M4OTE2YmI5YjFjMWFmZTI5
ZDZiYzIwOWRkNDMyODAxNmE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwCkBAIC0x
MjIsNyArMTIyLDcgQEAgc3RhdGljIHZvaWQgdGVzdE5hdmlnYXRpb25Qb2xpY3koUG9saWN5Q2xp
ZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0
X25hdmlnYXRpb25fYWN0aW9uX2dldF9tb3VzZV9idXR0b24obmF2aWdhdGlvbkFjdGlvbiksID09
LCAwKTsKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X25hdmlnYXRpb25fYWN0aW9uX2dldF9t
b2RpZmllcnMobmF2aWdhdGlvbkFjdGlvbiksID09LCAwKTsKICAgICBnX2Fzc2VydF9mYWxzZSh3
ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25faXNfcmVkaXJlY3QobmF2aWdhdGlvbkFjdGlvbikpOwot
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fZ2V0X2ZyYW1l
X25hbWUoZGVjaXNpb24pKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9uYXZpZ2F0aW9uX3Bv
bGljeV9kZWNpc2lvbl9nZXRfZnJhbWVfbmFtZShkZWNpc2lvbikpOwogICAgIFdlYktpdFVSSVJl
cXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3JlcXVlc3QobmF2
aWdhdGlvbkFjdGlvbik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF91cmlfcmVxdWVzdF9n
ZXRfdXJpKHJlcXVlc3QpLCA9PSwgImh0dHA6Ly93ZWJraXRndGsub3JnLyIpOwogCkBAIC0xNDEs
NyArMTQxLDcgQEAgc3RhdGljIHZvaWQgdGVzdE5hdmlnYXRpb25Qb2xpY3koUG9saWN5Q2xpZW50
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBkZWNpc2lvbiA9IFdFQktJVF9OQVZJR0FU
SU9OX1BPTElDWV9ERUNJU0lPTih0ZXN0LT5tX3ByZXZpb3VzUG9saWN5RGVjaXNpb24uZ2V0KCkp
OwogICAgIG5hdmlnYXRpb25BY3Rpb24gPSB3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNp
b25fZ2V0X25hdmlnYXRpb25fYWN0aW9uKGRlY2lzaW9uKTsKICAgICBnX2Fzc2VydF90cnVlKHdl
YmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9pc19yZWRpcmVjdChuYXZpZ2F0aW9uQWN0aW9uKSk7Ci0g
ICAgZ19hc3NlcnQoIXdlYmtpdF9uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9nZXRfZnJhbWVf
bmFtZShkZWNpc2lvbikpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X25hdmlnYXRpb25fcG9s
aWN5X2RlY2lzaW9uX2dldF9mcmFtZV9uYW1lKGRlY2lzaW9uKSk7CiAgICAgcmVxdWVzdCA9IHdl
YmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfcmVxdWVzdChuYXZpZ2F0aW9uQWN0aW9uKTsKICAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCksID09
LCBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvIikuZGF0YSgpKTsKIApAQCAtMTc0LDEyICsxNzQs
MTIgQEAgc3RhdGljIHZvaWQgdGVzdFJlc3BvbnNlUG9saWN5KFBvbGljeUNsaWVudFRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICBXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uKiBk
ZWNpc2lvbiA9IFdFQktJVF9SRVNQT05TRV9QT0xJQ1lfREVDSVNJT04odGVzdC0+bV9wcmV2aW91
c1BvbGljeURlY2lzaW9uLmdldCgpKTsKICAgICBXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0ID0g
d2Via2l0X3Jlc3BvbnNlX3BvbGljeV9kZWNpc2lvbl9nZXRfcmVxdWVzdChkZWNpc2lvbik7Ci0g
ICAgZ19hc3NlcnQoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKFdFQktJVF9JU19VUklfUkVRVUVTVChyZXF1ZXN0KSk7CiAgICAgQVNTRVJUX0NNUF9D
U1RSSU5HKHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpLCA9PSwga1NlcnZlci0+
Z2V0VVJJRm9yUGF0aCgiLyIpKTsKICAgICBXZWJLaXRVUklSZXNwb25zZSogcmVzcG9uc2UgPSB3
ZWJraXRfcmVzcG9uc2VfcG9saWN5X2RlY2lzaW9uX2dldF9yZXNwb25zZShkZWNpc2lvbik7Ci0g
ICAgZ19hc3NlcnQoV0VCS0lUX0lTX1VSSV9SRVNQT05TRShyZXNwb25zZSkpOworICAgIGdfYXNz
ZXJ0X3RydWUoV0VCS0lUX0lTX1VSSV9SRVNQT05TRShyZXNwb25zZSkpOwogICAgIEFTU0VSVF9D
TVBfQ1NUUklORyh3ZWJraXRfdXJpX3Jlc3BvbnNlX2dldF91cmkocmVzcG9uc2UpLCA9PSwga1Nl
cnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdf
Y2FuX3Nob3dfbWltZV90eXBlKHRlc3QtPm1fd2ViVmlldywgd2Via2l0X3VyaV9yZXNwb25zZV9n
ZXRfbWltZV90eXBlKHJlc3BvbnNlKSkgPT0KKyAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3dl
Yl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZSh0ZXN0LT5tX3dlYlZpZXcsIHdlYmtpdF91cmlfcmVz
cG9uc2VfZ2V0X21pbWVfdHlwZShyZXNwb25zZSkpLCA9PSwKICAgICAgICAgd2Via2l0X3Jlc3Bv
bnNlX3BvbGljeV9kZWNpc2lvbl9pc19taW1lX3R5cGVfc3VwcG9ydGVkKGRlY2lzaW9uKSk7CiAK
ICAgICB0ZXN0LT5tX3Jlc3BvbmRUb1BvbGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHkgPSB0cnVl
OwpAQCAtMjM1LDcgKzIzNSw3IEBAIHN0YXRpYyB2b2lkIHRlc3ROZXdXaW5kb3dQb2xpY3koUG9s
aWN5Q2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5tX3BvbGljeURl
Y2lzaW9uUmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0OjpVc2U7CiAgICAgdGVzdC0+bG9hZEh0
bWwod2luZG93T3BlbmluZ0hUTUwsICJodHRwOi8vd2Via2l0Z3RrLm9yZy8iKTsKICAgICB0ZXN0
LT53YWl0KDEpOwotICAgIGdfYXNzZXJ0KGRhdGEudHJpZWRUb09wZW5XaW5kb3cpOworICAgIGdf
YXNzZXJ0X3RydWUoZGF0YS50cmllZFRvT3BlbldpbmRvdyk7CiAKICAgICBXZWJLaXROYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uID0gV0VCS0lUX05BVklHQVRJT05fUE9MSUNZX0RF
Q0lTSU9OKHRlc3QtPm1fcHJldmlvdXNQb2xpY3lEZWNpc2lvbi5nZXQoKSk7CiAgICAgZ19hc3Nl
cnRfY21wc3RyKHdlYmtpdF9uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9nZXRfZnJhbWVfbmFt
ZShkZWNpc2lvbiksID09LCAiX2JsYW5rIik7CkBAIC0yNDcsNyArMjQ3LDcgQEAgc3RhdGljIHZv
aWQgdGVzdE5ld1dpbmRvd1BvbGljeShQb2xpY3lDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQogICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25SZXNwb25zZSA9IFBvbGljeUNsaWVudFRl
c3Q6Oklnbm9yZTsKICAgICB0ZXN0LT5sb2FkSHRtbCh3aW5kb3dPcGVuaW5nSFRNTCwgImh0dHA6
Ly93ZWJraXRndGsub3JnLyIpOwogICAgIHRlc3QtPndhaXQoLjIpOwotICAgIGdfYXNzZXJ0KCFk
YXRhLnRyaWVkVG9PcGVuV2luZG93KTsKKyAgICBnX2Fzc2VydF9mYWxzZShkYXRhLnRyaWVkVG9P
cGVuV2luZG93KTsKIH0KIAogc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciog
c2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJs
ZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNlY3VyaXR5T3JpZ2luLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2VjdXJpdHlP
cmlnaW4uY3BwCmluZGV4IDFiYWZkN2UyZGI1ODhlZmM5MTcyNGVjZDhkNjg0Yjk3ZDlmMjVjOTEu
LjVkYzc0Yzc3OWJlZjMzZTFhNDdmMzhiZTc5MWI5YTM2YTc2NjMwNDkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2VjdXJpdHlPcmln
aW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vi
S2l0U2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0yNSwxMDUgKzI1LDEwNSBAQAogc3RhdGljIHZvaWQg
dGVzdFNlY3VyaXR5T3JpZ2luQmFzaWNDb25zdHJ1Y3RvcihUZXN0KiwgZ2NvbnN0cG9pbnRlcikK
IHsKICAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29y
aWdpbl9uZXcoImh0dHAiLCAiMTI3LjAuMC4xIiwgMTIzNCk7Ci0gICAgZ19hc3NlcnQob3JpZ2lu
KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKG9yaWdpbik7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBh
c1N0cmluZyh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3RvX3N0cmluZyhvcmlnaW4pKTsKICAgICBn
X2Fzc2VydF9jbXBzdHIoYXNTdHJpbmcuZ2V0KCksID09LCAiaHR0cDovLzEyNy4wLjAuMToxMjM0
Iik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3Rv
Y29sKG9yaWdpbiksID09LCAiaHR0cCIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdpbiksID09LCAiMTI3LjAuMC4xIik7CiAgICAgZ19h
c3NlcnRfY21waW50KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQob3JpZ2luKSwgPT0s
IDEyMzQpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1ZShv
cmlnaW4pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29w
YXF1ZShvcmlnaW4pKTsKICAgICB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKG9yaWdpbik7
CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RTZWN1cml0eU9yaWdpblVSSUNvbnN0cnVjdG9yKFRlc3Qq
LCBnY29uc3Rwb2ludGVyKQogewogICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3
ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJpKCJodHRwOi8vMTI3LjAuMC4xOjEyMzQi
KTsKLSAgICBnX2Fzc2VydChvcmlnaW4pOworICAgIGdfYXNzZXJ0X25vbm51bGwob3JpZ2luKTsK
ICAgICBHVW5pcXVlUHRyPGNoYXI+IGFzU3RyaW5nKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdG9f
c3RyaW5nKG9yaWdpbikpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihhc1N0cmluZy5nZXQoKSwgPT0s
ICJodHRwOi8vMTI3LjAuMC4xOjEyMzQiKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wob3JpZ2luKSwgPT0sICJodHRwIik7CiAgICAgZ19h
c3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0s
ICIxMjcuMC4wLjEiKTsKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdp
bl9nZXRfcG9ydChvcmlnaW4pLCA9PSwgMTIzNCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1
cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdpbikpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdpbikpOwogICAgIHdlYmtpdF9zZWN1cml0
eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKIAogICAgIG9yaWdpbiA9IHdlYmtpdF9zZWN1cml0eV9v
cmlnaW5fbmV3X2Zvcl91cmkoImh0dHA6Ly8xMjcuMC4wLjE6MTIzNC90aGlzL3BhdGgvP3Nob3Vs
ZD1iZSNpZ25vcmVkIik7Ci0gICAgZ19hc3NlcnQob3JpZ2luKTsKKyAgICBnX2Fzc2VydF9ub25u
dWxsKG9yaWdpbik7CiAgICAgYXNTdHJpbmcucmVzZXQod2Via2l0X3NlY3VyaXR5X29yaWdpbl90
b19zdHJpbmcob3JpZ2luKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGFzU3RyaW5nLmdldCgpLCA9
PSwgImh0dHA6Ly8xMjcuMC4wLjE6MTIzNCIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRf
c2VjdXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbChvcmlnaW4pLCA9PSwgImh0dHAiKTsKICAgICBn
X2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pLCA9
PSwgIjEyNy4wLjAuMSIpOwogICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX2dldF9wb3J0KG9yaWdpbiksID09LCAxMjM0KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CiAgICAgd2Via2l0X3NlY3Vy
aXR5X29yaWdpbl91bnJlZihvcmlnaW4pOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0U2VjdXJpdHlP
cmlnaW5EZWZhdWx0UG9ydChUZXN0KiwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBXZWJLaXRTZWN1
cml0eU9yaWdpbiogb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXcoImh0dHAiLCAi
MTI3LjAuMC4xIiwgMCk7Ci0gICAgZ19hc3NlcnQob3JpZ2luKTsKKyAgICBnX2Fzc2VydF9ub25u
dWxsKG9yaWdpbik7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBhc1N0cmluZyh3ZWJraXRfc2VjdXJp
dHlfb3JpZ2luX3RvX3N0cmluZyhvcmlnaW4pKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoYXNTdHJp
bmcuZ2V0KCksID09LCAiaHR0cDovLzEyNy4wLjAuMSIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3
ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbChvcmlnaW4pLCA9PSwgImh0dHAiKTsK
ICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmln
aW4pLCA9PSwgIjEyNy4wLjAuMSIpOwogICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJp
dHlfb3JpZ2luX2dldF9wb3J0KG9yaWdpbiksID09LCAwKTsKLSAgICBnX2Fzc2VydCghd2Via2l0
X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uo
d2Via2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CiAgICAgd2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl91bnJlZihvcmlnaW4pOwogCiAgICAgb3JpZ2luID0gd2Via2l0X3NlY3Vy
aXR5X29yaWdpbl9uZXcoImh0dHAiLCAiMTI3LjAuMC4xIiwgODApOwotICAgIGdfYXNzZXJ0KG9y
aWdpbik7CisgICAgZ19hc3NlcnRfbm9ubnVsbChvcmlnaW4pOwogICAgIGFzU3RyaW5nLnJlc2V0
KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdG9fc3RyaW5nKG9yaWdpbikpOwogICAgIGdfYXNzZXJ0
X2NtcHN0cihhc1N0cmluZy5nZXQoKSwgPT0sICJodHRwOi8vMTI3LjAuMC4xIik7CiAgICAgZ19h
c3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiks
ID09LCAiaHR0cCIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X2dldF9ob3N0KG9yaWdpbiksID09LCAiMTI3LjAuMC4xIik7CiAgICAgZ19hc3NlcnRfY21waW50
KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQob3JpZ2luKSwgPT0sIDApOwotICAgIGdf
YXNzZXJ0KCF3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1ZShvcmlnaW4pKTsKKyAgICBn
X2Fzc2VydF9mYWxzZSh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1ZShvcmlnaW4pKTsK
ICAgICB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKG9yaWdpbik7CiAKICAgICBvcmlnaW4g
PSB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJpKCJodHRwOi8vMTI3LjAuMC4xIik7
Ci0gICAgZ19hc3NlcnQob3JpZ2luKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKG9yaWdpbik7CiAg
ICAgYXNTdHJpbmcucmVzZXQod2Via2l0X3NlY3VyaXR5X29yaWdpbl90b19zdHJpbmcob3JpZ2lu
KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGFzU3RyaW5nLmdldCgpLCA9PSwgImh0dHA6Ly8xMjcu
MC4wLjEiKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRf
cHJvdG9jb2wob3JpZ2luKSwgPT0sICJodHRwIik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0sICIxMjcuMC4wLjEiKTsKICAg
ICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmlnaW4p
LCA9PSwgMCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVl
KG9yaWdpbikpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNf
b3BhcXVlKG9yaWdpbikpOwogICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2lu
KTsKIAogICAgIG9yaWdpbiA9IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoImh0
dHA6Ly8xMjcuMC4wLjE6ODAiKTsKLSAgICBnX2Fzc2VydChvcmlnaW4pOworICAgIGdfYXNzZXJ0
X25vbm51bGwob3JpZ2luKTsKICAgICBhc1N0cmluZy5yZXNldCh3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX3RvX3N0cmluZyhvcmlnaW4pKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoYXNTdHJpbmcuZ2V0
KCksID09LCAiaHR0cDovLzEyNy4wLjAuMSIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRf
c2VjdXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbChvcmlnaW4pLCA9PSwgImh0dHAiKTsKICAgICBn
X2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pLCA9
PSwgIjEyNy4wLjAuMSIpOwogICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX2dldF9wb3J0KG9yaWdpbiksID09LCAwKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NlY3Vy
aXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0
X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CiAgICAgd2Via2l0X3NlY3VyaXR5
X29yaWdpbl91bnJlZihvcmlnaW4pOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0U2VjdXJpdHlPcmln
aW5GaWxlVVJJKFRlc3QqLCBnY29uc3Rwb2ludGVyKQogewogICAgIFdlYktpdFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJpKCJmaWxlOi8v
L2FiY2RlZmciKTsKLSAgICBnX2Fzc2VydChvcmlnaW4pOworICAgIGdfYXNzZXJ0X25vbm51bGwo
b3JpZ2luKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGFzU3RyaW5nKHdlYmtpdF9zZWN1cml0eV9v
cmlnaW5fdG9fc3RyaW5nKG9yaWdpbikpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihhc1N0cmluZy5n
ZXQoKSwgPT0sICJmaWxlOi8vIik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0
eV9vcmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiksID09LCAiZmlsZSIpOwotICAgIGdfYXNzZXJ0
KCF3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdpbikpOworICAgIGdfYXNzZXJ0
X251bGwod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pKTsKICAgICBnX2Fz
c2VydF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmlnaW4pLCA9PSwg
MCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdp
bikpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVl
KG9yaWdpbikpOwogICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKIH0K
IAogc3RhdGljIHZvaWQgdGVzdE9wYXF1ZVNlY3VyaXR5T3JpZ2luKFRlc3QqLCBnY29uc3Rwb2lu
dGVyKQogewogICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJp
dHlfb3JpZ2luX25ld19mb3JfdXJpKCJkYXRhOkxhbGkgaG8hIik7Ci0gICAgZ19hc3NlcnQob3Jp
Z2luKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKG9yaWdpbik7CiAgICAgR1VuaXF1ZVB0cjxjaGFy
PiBhc1N0cmluZyh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3RvX3N0cmluZyhvcmlnaW4pKTsKLSAg
ICBnX2Fzc2VydCghYXNTdHJpbmcpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX2dldF9wcm90b2NvbChvcmlnaW4pKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NlY3VyaXR5
X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pKTsKKyAgICBnX2Fzc2VydF9udWxsKGFzU3RyaW5nKTsK
KyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29sKG9y
aWdpbikpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9z
dChvcmlnaW4pKTsKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9n
ZXRfcG9ydChvcmlnaW4pLCA9PSwgMCk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3NlY3VyaXR5X29y
aWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2VjdXJp
dHlfb3JpZ2luX2lzX29wYXF1ZShvcmlnaW4pKTsKICAgICB3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X3VucmVmKG9yaWdpbik7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKaW5kZXggYzU5YjUxMzZh
MmY1ZGNhNGIxYjZiYzZiNmMwYWQ2YmNiMTVhOTVkZC4uM2VkZDUzY2VkOTdkMzJlOTkzNGFkYWE1
NmJkNjEyOTQzNzg4ZTQ5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTQyLDY0ICs0Miw2
NCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0U2V0dGluZ3MoVGVzdCosIGdjb25zdHBvaW50ZXIp
CiAgICAgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3NldHRpbmdzX25ldygpOwog
CiAgICAgLy8gSmF2YVNjcmlwdCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCi0gICAgZ19hc3NlcnQo
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncykpOworICAgIGdf
YXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5n
cykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3Ms
IEZBTFNFKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNj
cmlwdChzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MpKTsKIAogICAgIC8vIEJ5IGRlZmF1bHQgYXV0by1s
b2FkLWltYWdlIGlzIHRydWUuCi0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9hdXRv
X2xvYWRfaW1hZ2VzKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MsIEZBTFNFKTsKLSAgICBnX2Fzc2VydCghd2Vi
a2l0X3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdzKSk7CisgICAgZ19hc3Nl
cnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdzKSk7
CiAKICAgICAvLyBsb2FkLWljb25zLWlnbm9yaW5nLWltYWdlLWxvYWQtc2V0dGluZyBpcyBmYWxz
ZSBieSBkZWZhdWx0LgotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2xvYWRfaWNv
bnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9zZXR0aW5nKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9sb2FkX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRf
c2V0dGluZyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfbG9hZF9pY29uc19p
Z25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmcoc2V0dGluZ3MsIFRSVUUpOwotICAgIGdfYXNzZXJ0
KHdlYmtpdF9zZXR0aW5nc19nZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRp
bmcoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfbG9h
ZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmcoc2V0dGluZ3MpKTsKICAgICAKICAg
ICAvLyBPZmZsaW5lIGFwcGxpY2F0aW9uIGNhY2hlIGlzIHRydWUgYnkgZGVmYXVsdC4KLSAgICBn
X2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlv
bl9jYWNoZShzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dl
dF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoc2V0dGluZ3MpKTsKICAgICB3
ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShz
ZXR0aW5ncywgRkFMU0UpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0
X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9u
X2NhY2hlKHNldHRpbmdzKSk7CiAKICAgICAvLyBMb2NhbCBzdG9yYWdlIGlzIGVuYWJsZSBieSBk
ZWZhdWx0LgotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xv
Y2FsX3N0b3JhZ2Uoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Uoc2V0dGluZ3MpKTsKICAgICB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzLCBGQUxTRSk7
Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0
b3JhZ2Uoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzKSk7CiAKICAgICAvLyBIVE1MNSBk
YXRhYmFzZSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCi0gICAgZ19hc3NlcnQod2Via2l0X3NldHRp
bmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2Uoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90
cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzKSk7
CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2Uoc2V0dGluZ3Ms
IEZBTFNFKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVf
ZGF0YWJhc2Uoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShzZXR0aW5ncykpOwogCiAgICAgLy8gWFNTIEF1ZGl0
b3IgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncykpOwogICAgIHdlYmtp
dF9zZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdzLCBGQUxTRSk7Ci0gICAg
Z19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdz
KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfeHNzX2F1
ZGl0b3Ioc2V0dGluZ3MpKTsKIAogICAgIC8vIEZyYW1lIGZsYXR0ZW5pbmcgaXMgZGlzYWJsZWQg
YnkgZGVmYXVsdC4KLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZnJh
bWVfZmxhdHRlbmluZyhzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0
aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3MpKTsKICAgICB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNldHRpbmdzLCBUUlVFKTsKLSAg
ICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNl
dHRpbmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9m
cmFtZV9mbGF0dGVuaW5nKHNldHRpbmdzKSk7CiAKICAgICAvLyBQbHVnaW5zIGFyZSBlbmFibGVk
IGJ5IGRlZmF1bHQuCi0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcGx1
Z2lucyhzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9l
bmFibGVfcGx1Z2lucyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxl
X3BsdWdpbnMoc2V0dGluZ3MsIEZBTFNFKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdz
X2dldF9lbmFibGVfcGx1Z2lucyhzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtp
dF9zZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MpKTsKIAogICAgIC8vIEphdmEg
aXMgZW5hYmxlZCBieSBkZWZhdWx0LgotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2Vu
YWJsZV9qYXZhKHNldHRpbmdzLCBGQUxTRSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhKHNldHRpbmdzKSk7CiAKICAgICAvLyBCeSBkZWZhdWx0
LCBKYXZhU2NyaXB0IGNhbiBvcGVuIHdpbmRvd3MgYXV0b21hdGljYWxseSBpcyBkaXNhYmxlZC4K
LSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dp
bmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtp
dF9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHko
c2V0dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5f
d2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzLCBUUlVFKTsKLSAgICBnX2Fzc2VydCh3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5
KHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFz
Y3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7CiAKICAgICAv
LyBCeSBkZWZhdWx0IGh5cGVyIGxpbmsgYXVkaXRpbmcgaXMgZGlzYWJsZWQuCi0gICAgZ19hc3Nl
cnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5n
cykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVy
bGlua19hdWRpdGluZyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxl
X2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5ncywgVFJVRSk7Ci0gICAgZ19hc3NlcnQod2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRpbmdzKSk7CisgICAg
Z19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRp
bmcoc2V0dGluZ3MpKTsKIAogICAgIC8vIERlZmF1bHQgZm9udCBmYW1pbHkgaXMgInNhbnMtc2Vy
aWYiLgogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9u
dF9mYW1pbHkoc2V0dGluZ3MpLCA9PSwgInNhbnMtc2VyaWYiKTsKQEAgLTIwMiwxNDIgKzIwMiwx
NDIgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdFNldHRpbmdzKFRlc3QqLCBnY29uc3Rwb2ludGVy
KQogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIEdfR05VQ19CRUdJTl9JR05PUkVfREVQUkVDQVRJ
T05TOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wcml2YXRlX2Jy
b3dzaW5nKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dl
dF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5n
c19zZXRfZW5hYmxlX3ByaXZhdGVfYnJvd3Npbmcoc2V0dGluZ3MsIFRSVUUpOwotICAgIGdfYXNz
ZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3ByaXZhdGVfYnJvd3Npbmcoc2V0dGluZ3Mp
KTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3ByaXZhdGVf
YnJvd3Npbmcoc2V0dGluZ3MpKTsKICAgICBHX0dOVUNfRU5EX0lHTk9SRV9ERVBSRUNBVElPTlM7
CiAjZW5kaWYKIAotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9kZXZl
bG9wZXJfZXh0cmFzKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRp
bmdzX2dldF9lbmFibGVfZGV2ZWxvcGVyX2V4dHJhcyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX2RldmVsb3Blcl9leHRyYXMoc2V0dGluZ3MsIFRSVUUpOwotICAg
IGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2RldmVsb3Blcl9leHRyYXMoc2V0
dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2Rl
dmVsb3Blcl9leHRyYXMoc2V0dGluZ3MpKTsKIAotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX3Jlc2l6YWJsZV90ZXh0X2FyZWFzKHNldHRpbmdzKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9yZXNpemFibGVfdGV4dF9hcmVhcyhz
ZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3Jlc2l6YWJsZV90ZXh0
X2FyZWFzKHNldHRpbmdzLCBGQUxTRSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX3Jlc2l6YWJsZV90ZXh0X2FyZWFzKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcmVzaXphYmxlX3RleHRfYXJlYXMoc2V0
dGluZ3MpKTsKIAotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3RhYnNf
dG9fbGlua3Moc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX3RhYnNfdG9fbGlua3Moc2V0dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2VuYWJsZV90YWJzX3RvX2xpbmtzKHNldHRpbmdzLCBGQUxTRSk7Ci0gICAgZ19hc3NlcnQo
IXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3RhYnNfdG9fbGlua3Moc2V0dGluZ3MpKTsKKyAg
ICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV90YWJzX3RvX2xpbmtz
KHNldHRpbmdzKSk7CiAKLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
ZG5zX3ByZWZldGNoaW5nKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfZG5zX3ByZWZldGNoaW5nKHNldHRpbmdzKSk7CiAgICAgd2Via2l0
X3NldHRpbmdzX3NldF9lbmFibGVfZG5zX3ByZWZldGNoaW5nKHNldHRpbmdzLCBUUlVFKTsKLSAg
ICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9kbnNfcHJlZmV0Y2hpbmcoc2V0
dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2Ru
c19wcmVmZXRjaGluZyhzZXR0aW5ncykpOwogCiAgICAgLy8gQ2FyZXQgYnJvd3NpbmcgaXMgZGlz
YWJsZWQgYnkgZGVmYXVsdC4KLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfY2FyZXRfYnJvd3Npbmcoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9jYXJldF9icm93c2luZyhzZXR0aW5ncykpOwogICAgIHdlYmtp
dF9zZXR0aW5nc19zZXRfZW5hYmxlX2NhcmV0X2Jyb3dzaW5nKHNldHRpbmdzLCBUUlVFKTsKLSAg
ICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9jYXJldF9icm93c2luZyhzZXR0
aW5ncykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfY2Fy
ZXRfYnJvd3Npbmcoc2V0dGluZ3MpKTsKIAogICAgIC8vIEZ1bGxzY3JlZW4gSmF2YVNjcmlwdCBB
UEkgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX2Z1bGxzY3JlZW4oc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtp
dF9zZXR0aW5nc19nZXRfZW5hYmxlX2Z1bGxzY3JlZW4oc2V0dGluZ3MpKTsKICAgICB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9mdWxsc2NyZWVuKHNldHRpbmdzLCBGQUxTRSk7Ci0gICAgZ19h
c3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2Z1bGxzY3JlZW4oc2V0dGluZ3MpKTsK
KyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mdWxsc2NyZWVu
KHNldHRpbmdzKSk7CiAKICAgICAvLyBQcmludCBiYWNrZ3JvdW5kcyBpcyBlbmFibGVkIGJ5IGRl
ZmF1bHQKLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X3ByaW50X2JhY2tncm91bmRz
KHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X3ByaW50
X2JhY2tncm91bmRzKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9wcmludF9i
YWNrZ3JvdW5kcyhzZXR0aW5ncywgRkFMU0UpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGlu
Z3NfZ2V0X3ByaW50X2JhY2tncm91bmRzKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uo
d2Via2l0X3NldHRpbmdzX2dldF9wcmludF9iYWNrZ3JvdW5kcyhzZXR0aW5ncykpOwogCiAgICAg
Ly8gV2ViQXVkaW8gaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KLSAgICBnX2Fzc2VydCghd2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfd2ViYXVkaW8oc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9m
YWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV93ZWJhdWRpbyhzZXR0aW5ncykpOwogICAg
IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3dlYmF1ZGlvKHNldHRpbmdzLCBUUlVFKTsKLSAg
ICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV93ZWJhdWRpbyhzZXR0aW5ncykp
OworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfd2ViYXVkaW8o
c2V0dGluZ3MpKTsKIAogICAgIC8vIFdlYkdMIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCi0gICAg
Z19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3dlYmdsKHNldHRpbmdzKSk7Cisg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfd2ViZ2woc2V0dGlu
Z3MpKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV93ZWJnbChzZXR0aW5ncywgVFJV
RSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfd2ViZ2woc2V0dGlu
Z3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3dlYmds
KHNldHRpbmdzKSk7CiAKICAgICAvLyBBbGxvdyBNb2RhbCBEaWFsb2dzIGlzIGRpc2FibGVkIGJ5
IGRlZmF1bHQuCi0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9kYWxf
ZGlhbG9ncyhzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19n
ZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19z
ZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyhzZXR0aW5ncywgVFJVRSk7Ci0gICAgZ19hc3NlcnQod2Vi
a2l0X3NldHRpbmdzX2dldF9hbGxvd19tb2RhbF9kaWFsb2dzKHNldHRpbmdzKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X21vZGFsX2RpYWxvZ3Moc2V0dGlu
Z3MpKTsKIAogICAgIC8vIFpvb20gdGV4dCBvbmx5IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCi0g
ICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfem9vbV90ZXh0X29ubHkoc2V0dGluZ3Mp
KTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9vbmx5
KHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF96b29tX3RleHRfb25seShzZXR0
aW5ncywgVFJVRSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF96b29tX3RleHRf
b25seShzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF96
b29tX3RleHRfb25seShzZXR0aW5ncykpOwogCiAgICAgLy8gQnkgZGVmYXVsdCwgSmF2YVNjcmlw
dCBjYW5ub3QgYWNjZXNzIHRoZSBjbGlwYm9hcmQuCi0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0
aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fYWNjZXNzX2NsaXBib2FyZChzZXR0aW5ncykpOworICAg
IGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fYWNjZXNz
X2NsaXBib2FyZChzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlw
dF9jYW5fYWNjZXNzX2NsaXBib2FyZChzZXR0aW5ncywgVFJVRSk7Ci0gICAgZ19hc3NlcnQod2Vi
a2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9hY2Nlc3NfY2xpcGJvYXJkKHNldHRpbmdz
KSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2Fu
X2FjY2Vzc19jbGlwYm9hcmQoc2V0dGluZ3MpKTsKIAogICAgIC8vIEJ5IGRlZmF1bHQsIG1lZGlh
IHBsYXliYWNrIGRvZXNuJ3QgcmVxdWlyZSB1c2VyIGdlc3R1cmVzLgotICAgIGdfYXNzZXJ0KCF3
ZWJraXRfc2V0dGluZ3NfZ2V0X21lZGlhX3BsYXliYWNrX3JlcXVpcmVzX3VzZXJfZ2VzdHVyZShz
ZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfbWVkaWFf
cGxheWJhY2tfcmVxdWlyZXNfdXNlcl9nZXN0dXJlKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3Nl
dHRpbmdzX3NldF9tZWRpYV9wbGF5YmFja19yZXF1aXJlc191c2VyX2dlc3R1cmUoc2V0dGluZ3Ms
IFRSVUUpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfbWVkaWFfcGxheWJhY2tf
cmVxdWlyZXNfdXNlcl9nZXN0dXJlKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJr
aXRfc2V0dGluZ3NfZ2V0X21lZGlhX3BsYXliYWNrX3JlcXVpcmVzX3VzZXJfZ2VzdHVyZShzZXR0
aW5ncykpOwogCiAgICAgLy8gQnkgZGVmYXVsdCwgaW5saW5lIG1lZGlhIHBsYXliYWNrIGlzIGFs
bG93ZWQKLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X21lZGlhX3BsYXliYWNrX2Fs
bG93c19pbmxpbmUoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5n
c19nZXRfbWVkaWFfcGxheWJhY2tfYWxsb3dzX2lubGluZShzZXR0aW5ncykpOwogICAgIHdlYmtp
dF9zZXR0aW5nc19zZXRfbWVkaWFfcGxheWJhY2tfYWxsb3dzX2lubGluZShzZXR0aW5ncywgRkFM
U0UpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X21lZGlhX3BsYXliYWNrX2Fs
bG93c19pbmxpbmUoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGlu
Z3NfZ2V0X21lZGlhX3BsYXliYWNrX2FsbG93c19pbmxpbmUoc2V0dGluZ3MpKTsKIAogICAgIC8v
IEJ5IGRlZmF1bHQsIGRlYnVnIGluZGljYXRvcnMgYXJlIGRpc2FibGVkLgotICAgIGdfYXNzZXJ0
KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2RyYXdfY29tcG9zaXRpbmdfaW5kaWNhdG9ycyhzZXR0aW5n
cykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfZHJhd19jb21wb3Np
dGluZ19pbmRpY2F0b3JzKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9kcmF3
X2NvbXBvc2l0aW5nX2luZGljYXRvcnMoc2V0dGluZ3MsIFRSVUUpOwotICAgIGdfYXNzZXJ0KHdl
YmtpdF9zZXR0aW5nc19nZXRfZHJhd19jb21wb3NpdGluZ19pbmRpY2F0b3JzKHNldHRpbmdzKSk7
CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RyYXdfY29tcG9zaXRpbmdf
aW5kaWNhdG9ycyhzZXR0aW5ncykpOwogCiAgICAgLy8gQnkgZGVmYXVsdCwgc2l0ZSBzcGVjaWZp
YyBxdWlya3MgYXJlIGVuYWJsZWQuCi0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9l
bmFibGVfc2l0ZV9zcGVjaWZpY19xdWlya3Moc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVl
KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3NpdGVfc3BlY2lmaWNfcXVpcmtzKHNldHRpbmdz
KSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfc2l0ZV9zcGVjaWZpY19xdWlya3Mo
c2V0dGluZ3MsIEZBTFNFKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfc2l0ZV9zcGVjaWZpY19xdWlya3Moc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3
ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9zaXRlX3NwZWNpZmljX3F1aXJrcyhzZXR0aW5ncykp
OwogCiAgICAgLy8gQnkgZGVmYXVsdCwgcGFnZSBjYWNoZSBpcyBlbmFibGVkLgotICAgIGdfYXNz
ZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3BhZ2VfY2FjaGUoc2V0dGluZ3MpKTsKKyAg
ICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3BhZ2VfY2FjaGUoc2V0
dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wYWdlX2NhY2hlKHNldHRp
bmdzLCBGQUxTRSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3Bh
Z2VfY2FjaGUoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9wYWdlX2NhY2hlKHNldHRpbmdzKSk7CiAKICAgICAvLyBCeSBkZWZhdWx0LCBz
bW9vdGggc2Nyb2xsaW5nIGlzIGRpc2FibGVkLgotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9zbW9vdGhfc2Nyb2xsaW5nKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfc21vb3RoX3Njcm9sbGluZyhzZXR0aW5n
cykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3Ntb290aF9zY3JvbGxpbmcoc2V0
dGluZ3MsIFRSVUUpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3Nt
b290aF9zY3JvbGxpbmcoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0
aW5nc19nZXRfZW5hYmxlX3Ntb290aF9zY3JvbGxpbmcoc2V0dGluZ3MpKTsKIAogICAgIC8vIEJ5
IGRlZmF1bHQsIGFjY2VsZXJhdGVkIDJEIGNhbnZhcyBpcyBkaXNhYmxlZC4KLSAgICBnX2Fzc2Vy
dCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfYWNjZWxlcmF0ZWRfMmRfY2FudmFzKHNldHRp
bmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfYWNj
ZWxlcmF0ZWRfMmRfY2FudmFzKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9l
bmFibGVfYWNjZWxlcmF0ZWRfMmRfY2FudmFzKHNldHRpbmdzLCBUUlVFKTsKLSAgICBnX2Fzc2Vy
dCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9hY2NlbGVyYXRlZF8yZF9jYW52YXMoc2V0dGlu
Z3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2FjY2Vs
ZXJhdGVkXzJkX2NhbnZhcyhzZXR0aW5ncykpOwogCiAgICAgLy8gQnkgZGVmYXVsdCwgd3JpdGlu
ZyBvZiBjb25zb2xlIG1lc3NhZ2VzIHRvIHN0ZG91dCBpcyBkaXNhYmxlZC4KLSAgICBnX2Fzc2Vy
dCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfd3JpdGVfY29uc29sZV9tZXNzYWdlc190b19z
dGRvdXQoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0
X2VuYWJsZV93cml0ZV9jb25zb2xlX21lc3NhZ2VzX3RvX3N0ZG91dChzZXR0aW5ncykpOwogICAg
IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3dyaXRlX2NvbnNvbGVfbWVzc2FnZXNfdG9fc3Rk
b3V0KHNldHRpbmdzLCBUUlVFKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV93cml0ZV9jb25zb2xlX21lc3NhZ2VzX3RvX3N0ZG91dChzZXR0aW5ncykpOworICAgIGdf
YXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfd3JpdGVfY29uc29sZV9tZXNz
YWdlc190b19zdGRvdXQoc2V0dGluZ3MpKTsKIAogICAgIC8vIE1lZGlhU3RyZWFtIGlzIGRpc2Fi
bGVkIGJ5IGRlZmF1bHQuCi0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X21lZGlhX3N0cmVhbShzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0
aW5nc19nZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0
aW5nc19zZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywgVFJVRSk7Ci0gICAgZ19hc3Nl
cnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzKSk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0o
c2V0dGluZ3MpKTsKIAogICAgIC8vIEJ5IGRlZmF1bHQsIFNwYXRpYWxOYXZpZ2F0aW9uIGlzIGRp
c2FibGVkCi0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3NwYXRpYWxf
bmF2aWdhdGlvbihzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX3NwYXRpYWxfbmF2aWdhdGlvbihzZXR0aW5ncykpOwogICAgIHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX3NwYXRpYWxfbmF2aWdhdGlvbihzZXR0aW5ncywgVFJVRSk7Ci0g
ICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfc3BhdGlhbF9uYXZpZ2F0aW9u
KHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9zcGF0aWFsX25hdmlnYXRpb24oc2V0dGluZ3MpKTsKIAogICAgIC8vIE1lZGlhU291cmNlIGlz
IGVuYWJsZWQgYnkgZGVmYXVsdAotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX21lZGlhc291cmNlKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9tZWRpYXNvdXJjZShzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0
aW5nc19zZXRfZW5hYmxlX21lZGlhc291cmNlKHNldHRpbmdzLCBGQUxTRSk7Ci0gICAgZ19hc3Nl
cnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX21lZGlhc291cmNlKHNldHRpbmdzKSk7Cisg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfbWVkaWFzb3VyY2Uo
c2V0dGluZ3MpKTsKIAogICAgIC8vIEVuY3J5cHRlZE1lZGlhIGlzIGRpc2FibGVkIGJ5IGRlZmF1
bHQKLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZW5jcnlwdGVkX21l
ZGlhKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9l
bmFibGVfZW5jcnlwdGVkX21lZGlhKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3Nl
dF9lbmFibGVfZW5jcnlwdGVkX21lZGlhKHNldHRpbmdzLCBUUlVFKTsKLSAgICBnX2Fzc2VydCh3
ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9lbmNyeXB0ZWRfbWVkaWEoc2V0dGluZ3MpKTsKKyAg
ICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2VuY3J5cHRlZF9tZWRp
YShzZXR0aW5ncykpOwogCiAgICAgLy8gTWVkaWFDYXBhYmlsaXRpZXMgaXMgZGlzYWJsZWQgYnkg
ZGVmYXVsdAotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9tZWRpYV9j
YXBhYmlsaXRpZXMoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9tZWRpYV9jYXBhYmlsaXRpZXMoc2V0dGluZ3MpKTsKICAgICB3ZWJraXRf
c2V0dGluZ3Nfc2V0X2VuYWJsZV9tZWRpYV9jYXBhYmlsaXRpZXMoc2V0dGluZ3MsIFRSVUUpOwot
ICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX21lZGlhX2NhcGFiaWxpdGll
cyhzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfbWVkaWFfY2FwYWJpbGl0aWVzKHNldHRpbmdzKSk7CiAKICAgICAvLyBGaWxlIGFjY2VzcyBm
cm9tIGZpbGUgVVJMcyBpcyBub3QgYWxsb3dlZCBieSBkZWZhdWx0LgotICAgIGdfYXNzZXJ0KCF3
ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X2ZpbGVfYWNjZXNzX2Zyb21fZmlsZV91cmxzKHNldHRp
bmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19maWxl
X2FjY2Vzc19mcm9tX2ZpbGVfdXJscyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19z
ZXRfYWxsb3dfZmlsZV9hY2Nlc3NfZnJvbV9maWxlX3VybHMoc2V0dGluZ3MsIFRSVUUpOwotICAg
IGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfZmlsZV9hY2Nlc3NfZnJvbV9maWxl
X3VybHMoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRf
YWxsb3dfZmlsZV9hY2Nlc3NfZnJvbV9maWxlX3VybHMoc2V0dGluZ3MpKTsKIAogICAgIC8vIFVu
aXZlcnNhbCBhY2Nlc3MgZnJvbSBmaWxlIFVSTHMgaXMgbm90IGFsbG93ZWQgYnkgZGVmYXVsdC4K
LSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9hbGxvd191bml2ZXJzYWxfYWNjZXNz
X2Zyb21fZmlsZV91cmxzKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3Nl
dHRpbmdzX2dldF9hbGxvd191bml2ZXJzYWxfYWNjZXNzX2Zyb21fZmlsZV91cmxzKHNldHRpbmdz
KSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9hbGxvd191bml2ZXJzYWxfYWNjZXNzX2Zyb21f
ZmlsZV91cmxzKHNldHRpbmdzLCBUUlVFKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2FsbG93X3VuaXZlcnNhbF9hY2Nlc3NfZnJvbV9maWxlX3VybHMoc2V0dGluZ3MpKTsKKyAg
ICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfdW5pdmVyc2FsX2FjY2Vz
c19mcm9tX2ZpbGVfdXJscyhzZXR0aW5ncykpOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIC8v
IE9uZGVtYW5kIGlzIHRoZSBkZWZhdWx0IGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBwb2xpY3kuCkBA
IC0zNjEsOSArMzYxLDkgQEAgdm9pZCB0ZXN0V2ViS2l0U2V0dGluZ3NOZXdXaXRoU2V0dGluZ3Mo
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAgICAgImxvYWQtaWNvbnMtaWdub3Jpbmct
aW1hZ2UtbG9hZC1zZXR0aW5nIiwgVFJVRSwKICAgICAgICAgbnVsbHB0cikpOwogICAgIHRlc3Qt
PmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qoc2V0dGluZ3Mu
Z2V0KCkpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNj
cmlwdChzZXR0aW5ncy5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0
X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRf
c2V0dGluZ3NfZ2V0X2xvYWRfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9zZXR0aW5nKHNldHRp
bmdzLmdldCgpKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfamF2YXNjcmlwdChzZXR0aW5ncy5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtp
dF9zZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncy5nZXQoKSkpOworICAgIGdf
YXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9sb2FkX2ljb25zX2lnbm9yaW5nX2ltYWdl
X2xvYWRfc2V0dGluZyhzZXR0aW5ncy5nZXQoKSkpOwogfQogCiAjaWYgUExBVEZPUk0oR1RLKQpA
QCAtMzg3LDggKzM4Nyw4IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRTZXR0aW5nc1VzZXJBZ2Vu
dChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBDU3RyaW5nIGRlZmF1bHRV
c2VyQWdlbnQgPSB3ZWJraXRfc2V0dGluZ3NfZ2V0X3VzZXJfYWdlbnQoc2V0dGluZ3MuZ2V0KCkp
OwogICAgIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3ModGVzdC0+bV93ZWJWaWV3LCBzZXR0
aW5ncy5nZXQoKSk7CiAKLSAgICBnX2Fzc2VydChnX3N0cnN0cl9sZW4oZGVmYXVsdFVzZXJBZ2Vu
dC5kYXRhKCksIC0xLCAiQXBwbGVXZWJLaXQiKSk7Ci0gICAgZ19hc3NlcnQoZ19zdHJzdHJfbGVu
KGRlZmF1bHRVc2VyQWdlbnQuZGF0YSgpLCAtMSwgIlNhZmFyaSIpKTsKKyAgICBnX2Fzc2VydF9u
b25udWxsKGdfc3Ryc3RyX2xlbihkZWZhdWx0VXNlckFnZW50LmRhdGEoKSwgLTEsICJBcHBsZVdl
YktpdCIpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGdfc3Ryc3RyX2xlbihkZWZhdWx0VXNlckFn
ZW50LmRhdGEoKSwgLTEsICJTYWZhcmkiKSk7CiAKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X3Vz
ZXJfYWdlbnQoc2V0dGluZ3MuZ2V0KCksIDApOwogICAgIGdfYXNzZXJ0X2NtcHN0cihkZWZhdWx0
VXNlckFnZW50LmRhdGEoKSwgPT0sIHdlYmtpdF9zZXR0aW5nc19nZXRfdXNlcl9hZ2VudChzZXR0
aW5ncy5nZXQoKSkpOwpAQCAtNDA1LDE1ICs0MDUsMTUgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktp
dFNldHRpbmdzVXNlckFnZW50KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAg
IHdlYmtpdF9zZXR0aW5nc19zZXRfdXNlcl9hZ2VudF93aXRoX2FwcGxpY2F0aW9uX2RldGFpbHMo
c2V0dGluZ3MuZ2V0KCksICJXZWJLaXRHVEsrIiwgMCk7CiAgICAgY29uc3QgY2hhciogdXNlckFn
ZW50V2l0aE51bGxWZXJzaW9uID0gd2Via2l0X3NldHRpbmdzX2dldF91c2VyX2FnZW50KHNldHRp
bmdzLmdldCgpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoZ19zdHJzdHJfbGVuKHVzZXJBZ2VudFdp
dGhOdWxsVmVyc2lvbiwgLTEsIGRlZmF1bHRVc2VyQWdlbnQuZGF0YSgpKSwgPT0sIHVzZXJBZ2Vu
dFdpdGhOdWxsVmVyc2lvbik7Ci0gICAgZ19hc3NlcnQoZ19zdHJzdHJfbGVuKHVzZXJBZ2VudFdp
dGhOdWxsVmVyc2lvbiwgLTEsICJXZWJLaXRHVEsrIikpOworICAgIGdfYXNzZXJ0X25vbm51bGwo
Z19zdHJzdHJfbGVuKHVzZXJBZ2VudFdpdGhOdWxsVmVyc2lvbiwgLTEsICJXZWJLaXRHVEsrIikp
OwogCiAgICAgd2Via2l0X3NldHRpbmdzX3NldF91c2VyX2FnZW50X3dpdGhfYXBwbGljYXRpb25f
ZGV0YWlscyhzZXR0aW5ncy5nZXQoKSwgIldlYktpdEdUSysiLCAiIik7CiAgICAgZ19hc3NlcnRf
Y21wc3RyKHdlYmtpdF9zZXR0aW5nc19nZXRfdXNlcl9hZ2VudChzZXR0aW5ncy5nZXQoKSksID09
LCB1c2VyQWdlbnRXaXRoTnVsbFZlcnNpb24pOwogCiAgICAgd2Via2l0X3NldHRpbmdzX3NldF91
c2VyX2FnZW50X3dpdGhfYXBwbGljYXRpb25fZGV0YWlscyhzZXR0aW5ncy5nZXQoKSwgIldlYkNh
dEdUSysiLCAiMy40LjUiKTsKICAgICBjb25zdCBjaGFyKiBuZXdVc2VyQWdlbnQgPSB3ZWJraXRf
c2V0dGluZ3NfZ2V0X3VzZXJfYWdlbnQoc2V0dGluZ3MuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KGdf
c3Ryc3RyX2xlbihuZXdVc2VyQWdlbnQsIC0xLCAiMy40LjUiKSk7Ci0gICAgZ19hc3NlcnQoZ19z
dHJzdHJfbGVuKG5ld1VzZXJBZ2VudCwgLTEsICJXZWJDYXRHVEsrIikpOworICAgIGdfYXNzZXJ0
X25vbm51bGwoZ19zdHJzdHJfbGVuKG5ld1VzZXJBZ2VudCwgLTEsICIzLjQuNSIpKTsKKyAgICBn
X2Fzc2VydF9ub25udWxsKGdfc3Ryc3RyX2xlbihuZXdVc2VyQWdlbnQsIC0xLCAiV2ViQ2F0R1RL
KyIpKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gYXBwbGljYXRpb25Vc2VyQWdlbnQoZ19zdHJk
dXBfcHJpbnRmKCIlcyAlcyIsIGRlZmF1bHRVc2VyQWdlbnQuZGF0YSgpLCAiV2ViQ2F0R1RLKy8z
LjQuNSIpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoYXBwbGljYXRpb25Vc2VyQWdlbnQuZ2V0KCks
ID09LCB3ZWJraXRfc2V0dGluZ3NfZ2V0X3VzZXJfYWdlbnQoc2V0dGluZ3MuZ2V0KCkpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
VXNlckNvbnRlbnRNYW5hZ2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAppbmRleCAyZTRlNDlmZjc0Nzdk
ZmNmZDU3ZTU1MzZmZGRlMDMwMmY2ZGE0ODA1Li5hOTQ4NjA4MDU3NmJiZDc5ZmI1ZTQxNWNhNWEy
M2NlODJjMmY2MmUyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3Bw
CkBAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdOZXdXaXRoVXNlckNv
bnRlbnRNYW5hZ2VyKFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgR1JlZlB0cjxXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXI+IHVzZXJDb250ZW50TWFuYWdlcjEgPSBhZG9wdEdSZWYod2Vi
a2l0X3VzZXJfY29udGVudF9tYW5hZ2VyX25ldygpKTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJ
c0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHVzZXJDb250ZW50TWFuYWdlcjEuZ2V0
KCkpKTsKICAgICBhdXRvIHdlYlZpZXcxID0gVGVzdDo6YWRvcHRWaWV3KFRlc3Q6OmNyZWF0ZVdl
YlZpZXcodXNlckNvbnRlbnRNYW5hZ2VyMS5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93
ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldzEuZ2V0KCkpID09IHVzZXJD
b250ZW50TWFuYWdlcjEuZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcxLmdldCgpKSwgPT0sIHVzZXJDb250
ZW50TWFuYWdlcjEuZ2V0KCkpOwogCiAgICAgYXV0byB3ZWJWaWV3MiA9IFRlc3Q6OmFkb3B0Vmll
dyhUZXN0OjpjcmVhdGVXZWJWaWV3KCkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19n
ZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldzIuZ2V0KCkpICE9IHVzZXJDb250ZW50TWFu
YWdlcjEuZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Vz
ZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcyLmdldCgpKSwgIT0sIHVzZXJDb250ZW50TWFuYWdl
cjEuZ2V0KCkpOwogfQogCiBzdGF0aWMgYm9vbCBpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0
UGF0aChXZWJWaWV3VGVzdCogdGVzdCwgY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciogd29y
bGQgPSBudWxscHRyKQpAQCAtNTUsOCArNTUsOCBAQCBzdGF0aWMgYm9vbCBpc1N0eWxlU2hlZXRJ
bmplY3RlZEZvclVSTEF0UGF0aChXZWJWaWV3VGVzdCogdGVzdCwgY29uc3QgY2hhciogcGF0aAog
ICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVz
dWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gd29ybGQgPyB0ZXN0LT5ydW5KYXZhU2NyaXB0SW5Xb3Js
ZEFuZFdhaXRVbnRpbEZpbmlzaGVkKGtTdHlsZVNoZWV0VGVzdFNjcmlwdCwgd29ybGQsICZlcnJv
ci5vdXRQdHIoKSkKICAgICAgICAgOiB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmlu
aXNoZWQoa1N0eWxlU2hlZXRUZXN0U2NyaXB0LCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNz
ZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CisgICAg
Z19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJv
cihlcnJvci5nZXQoKSk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc3VsdFN0cmluZyhXZWJW
aWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAg
ICAgcmV0dXJuICFnX3N0cmNtcDAocmVzdWx0U3RyaW5nLmdldCgpLCBrU3R5bGVTaGVldFRlc3RT
Y3JpcHRSZXN1bHQpOwpAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgYm9vbCBpc1NjcmlwdEluamVj
dGVkRm9yVVJMQXRQYXRoKFdlYlZpZXdUZXN0KiB0ZXN0LCBjb25zdCBjaGFyKiBwYXRoLCBjbwog
ICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB3b3JsZCA/IHRl
c3QtPnJ1bkphdmFTY3JpcHRJbldvcmxkQW5kV2FpdFVudGlsRmluaXNoZWQoa1NjcmlwdFRlc3RT
Y3JpcHQsIHdvcmxkLCAmZXJyb3Iub3V0UHRyKCkpCiAgICAgICAgIDogdGVzdC0+cnVuSmF2YVNj
cmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGtTY3JpcHRUZXN0U2NyaXB0LCAmZXJyb3Iub3V0UHRy
KCkpOwogICAgIGlmIChqYXZhc2NyaXB0UmVzdWx0KSB7Ci0gICAgICAgIGdfYXNzZXJ0KCFlcnJv
ci5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKIAogICAg
ICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc3VsdFN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlw
dFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgICAgIHJldHVybiAhZ19z
dHJjbXAwKHJlc3VsdFN0cmluZy5nZXQoKSwga1NjcmlwdFRlc3RTY3JpcHRSZXN1bHQpOwpAQCAt
MTIwLDE5ICsxMjAsMTkgQEAgc3RhdGljIHZvaWQgdGVzdFVzZXJDb250ZW50TWFuYWdlckluamVj
dGVkU3R5bGVTaGVldChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG8KIAogICAgIC8vIFdpdGhv
dXQgYSB3aGl0ZWxpc3Qgb3IgYSBibGFja2xpc3QgYWxsIFVSTHMgc2hvdWxkIGhhdmUgdGhlIGlu
amVjdGVkIHN0eWxlIHNoZWV0LgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiByYW5kb21QYXRoID0g
InNvbWVyYW5kb21wYXRoIjsKLSAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JV
UkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKGlzU3R5bGVT
aGVldEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKICAgICBXZWJLaXRV
c2VyU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyhr
SW5qZWN0ZWRTdHlsZVNoZWV0LCBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVT
LCBXRUJLSVRfVVNFUl9TVFlMRV9MRVZFTF9VU0VSLCBudWxscHRyLCBudWxscHRyKTsKICAgICB3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0KHRlc3QtPm1fdXNlckNv
bnRlbnRNYW5hZ2VyLmdldCgpLCBzdHlsZVNoZWV0KTsKICAgICB3ZWJraXRfdXNlcl9zdHlsZV9z
aGVldF91bnJlZihzdHlsZVNoZWV0KTsKLSAgICBnX2Fzc2VydChpc1N0eWxlU2hlZXRJbmplY3Rl
ZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShpc1N0
eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7CiAKICAgICBy
ZW1vdmVPbGRJbmplY3RlZENvbnRlbnRBbmRSZXNldExpc3RzKHRlc3QtPm1fdXNlckNvbnRlbnRN
YW5hZ2VyLmdldCgpLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CiAKLSAgICBnX2Fzc2VydCghaXNT
dHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCwgIldlYkV4dGVu
c2lvblRlc3RTY3JpcHRXb3JsZCIpKTsKKyAgICBnX2Fzc2VydF9mYWxzZShpc1N0eWxlU2hlZXRJ
bmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoLCAiV2ViRXh0ZW5zaW9uVGVzdFNj
cmlwdFdvcmxkIikpOwogICAgIHN0eWxlU2hlZXQgPSB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9u
ZXdfZm9yX3dvcmxkKGtJbmplY3RlZFN0eWxlU2hlZXQsIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5K
RUNUX0FMTF9GUkFNRVMsIFdFQktJVF9VU0VSX1NUWUxFX0xFVkVMX1VTRVIsICJXZWJFeHRlbnNp
b25UZXN0U2NyaXB0V29ybGQiLCBudWxscHRyLCBudWxscHRyKTsKICAgICB3ZWJraXRfdXNlcl9j
b250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0KHRlc3QtPm1fdXNlckNvbnRlbnRNYW5hZ2Vy
LmdldCgpLCBzdHlsZVNoZWV0KTsKICAgICB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZihz
dHlsZVNoZWV0KTsKLSAgICBnX2Fzc2VydChpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0
aCh0ZXN0LCByYW5kb21QYXRoLCAiV2ViRXh0ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIikpOworICAg
IGdfYXNzZXJ0X3RydWUoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFu
ZG9tUGF0aCwgIldlYkV4dGVuc2lvblRlc3RTY3JpcHRXb3JsZCIpKTsKIAogICAgIHJlbW92ZU9s
ZEluamVjdGVkQ29udGVudEFuZFJlc2V0TGlzdHModGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIu
Z2V0KCksIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKIApAQCAtMTQwLDggKzE0MCw4IEBAIHN0YXRp
YyB2b2lkIHRlc3RVc2VyQ29udGVudE1hbmFnZXJJbmplY3RlZFN0eWxlU2hlZXQoV2ViVmlld1Rl
c3QqIHRlc3QsIGdjb25zdHBvCiAgICAgc3R5bGVTaGVldCA9IHdlYmtpdF91c2VyX3N0eWxlX3No
ZWV0X25ldyhrSW5qZWN0ZWRTdHlsZVNoZWV0LCBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9B
TExfRlJBTUVTLCBXRUJLSVRfVVNFUl9TVFlMRV9MRVZFTF9VU0VSLCBudWxscHRyLCBibGFja2xp
c3QpOwogICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQodGVz
dC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHN0eWxlU2hlZXQpOwogICAgIHdlYmtpdF91
c2VyX3N0eWxlX3NoZWV0X3VucmVmKHN0eWxlU2hlZXQpOwotICAgIGdfYXNzZXJ0KCFpc1N0eWxl
U2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7Ci0gICAgZ19hc3Nl
cnQoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgInNvbWVvdGhlcnJhbmRv
bXBhdGgiKSk7CisgICAgZ19hc3NlcnRfZmFsc2UoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxB
dFBhdGgodGVzdCwgcmFuZG9tUGF0aCkpOworICAgIGdfYXNzZXJ0X3RydWUoaXNTdHlsZVNoZWV0
SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgInNvbWVvdGhlcnJhbmRvbXBhdGgiKSk7CiAKICAg
ICByZW1vdmVPbGRJbmplY3RlZENvbnRlbnRBbmRSZXNldExpc3RzKHRlc3QtPm1fdXNlckNvbnRl
bnRNYW5hZ2VyLmdldCgpLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CiAKQEAgLTE1NCw5ICsxNTQs
OSBAQCBzdGF0aWMgdm9pZCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTdHlsZVNoZWV0
KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3RwbwogICAgIHN0eWxlU2hlZXQgPSB3ZWJraXRfdXNl
cl9zdHlsZV9zaGVldF9uZXcoa0luamVjdGVkU3R5bGVTaGVldCwgV0VCS0lUX1VTRVJfQ09OVEVO
VF9JTkpFQ1RfQUxMX0ZSQU1FUywgV0VCS0lUX1VTRVJfU1RZTEVfTEVWRUxfVVNFUiwgd2hpdGVs
aXN0LCBibGFja2xpc3QpOwogICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRfc3R5
bGVfc2hlZXQodGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHN0eWxlU2hlZXQpOwog
ICAgIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3VucmVmKHN0eWxlU2hlZXQpOwotICAgIGdfYXNz
ZXJ0KGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIGluVGhlV2hpdGVMaXN0
KSk7Ci0gICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3Qs
IGluVGhlV2hpdGVMaXN0QW5kQmxhY2tMaXN0KSk7Ci0gICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVl
dEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIG5vdEluV2hpdGVsaXN0KSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZShpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBpblRoZVdoaXRl
TGlzdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQ
YXRoKHRlc3QsIGluVGhlV2hpdGVMaXN0QW5kQmxhY2tMaXN0KSk7CisgICAgZ19hc3NlcnRfZmFs
c2UoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgbm90SW5XaGl0ZWxpc3Qp
KTsKIAogICAgIC8vIEl0J3MgaW1wb3J0YW50IHRvIGNsZWFuIHVwIHRoZSBlbnZpcm9ubWVudCBi
ZWZvcmUgb3RoZXIgdGVzdHMuCiAgICAgcmVtb3ZlT2xkSW5qZWN0ZWRDb250ZW50QW5kUmVzZXRM
aXN0cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgd2hpdGVsaXN0LCBibGFja2xp
c3QpOwpAQCAtMTcxLDE5ICsxNzEsMTkgQEAgc3RhdGljIHZvaWQgdGVzdFVzZXJDb250ZW50TWFu
YWdlckluamVjdGVkU2NyaXB0KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGUKIAogICAg
IC8vIFdpdGhvdXQgYSB3aGl0ZWxpc3Qgb3IgYSBibGFja2xpc3QgYWxsIFVSTHMgc2hvdWxkIGhh
dmUgdGhlIGluamVjdGVkIHNjcmlwdC4KICAgICBzdGF0aWMgY29uc3QgY2hhciogcmFuZG9tUGF0
aCA9ICJzb21lcmFuZG9tcGF0aCI7Ci0gICAgZ19hc3NlcnQoIWlzU2NyaXB0SW5qZWN0ZWRGb3JV
UkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKGlzU2NyaXB0
SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCkpOwogICAgIFdlYktpdFVzZXJT
Y3JpcHQqIHNjcmlwdCA9IHdlYmtpdF91c2VyX3NjcmlwdF9uZXcoa0luamVjdGVkU2NyaXB0LCBX
RUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9TQ1JJUFRf
SU5KRUNUX0FUX0RPQ1VNRU5UX0VORCwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgd2Via2l0X3Vz
ZXJfY29udGVudF9tYW5hZ2VyX2FkZF9zY3JpcHQodGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIu
Z2V0KCksIHNjcmlwdCk7CiAgICAgd2Via2l0X3VzZXJfc2NyaXB0X3VucmVmKHNjcmlwdCk7Ci0g
ICAgZ19hc3NlcnQoaXNTY3JpcHRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRo
KSk7CisgICAgZ19hc3NlcnRfdHJ1ZShpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3Qs
IHJhbmRvbVBhdGgpKTsKIAogICAgIHJlbW92ZU9sZEluamVjdGVkQ29udGVudEFuZFJlc2V0TGlz
dHModGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHdoaXRlbGlzdCwgYmxhY2tsaXN0
KTsKIAotICAgIGdfYXNzZXJ0KCFpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJh
bmRvbVBhdGgsICJXZWJFeHRlbnNpb25UZXN0U2NyaXB0V29ybGQiKSk7CisgICAgZ19hc3NlcnRf
ZmFsc2UoaXNTY3JpcHRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoLCAiV2Vi
RXh0ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIikpOwogICAgIHNjcmlwdCA9IHdlYmtpdF91c2VyX3Nj
cmlwdF9uZXdfZm9yX3dvcmxkKGtJbmplY3RlZFNjcmlwdCwgV0VCS0lUX1VTRVJfQ09OVEVOVF9J
TkpFQ1RfQUxMX0ZSQU1FUywgV0VCS0lUX1VTRVJfU0NSSVBUX0lOSkVDVF9BVF9ET0NVTUVOVF9F
TkQsICJXZWJFeHRlbnNpb25UZXN0U2NyaXB0V29ybGQiLCBudWxscHRyLCBudWxscHRyKTsKICAg
ICB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3NjcmlwdCh0ZXN0LT5tX3VzZXJDb250
ZW50TWFuYWdlci5nZXQoKSwgc2NyaXB0KTsKICAgICB3ZWJraXRfdXNlcl9zY3JpcHRfdW5yZWYo
c2NyaXB0KTsKLSAgICBnX2Fzc2VydChpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3Qs
IHJhbmRvbVBhdGgsICJXZWJFeHRlbnNpb25UZXN0U2NyaXB0V29ybGQiKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZShpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgsICJX
ZWJFeHRlbnNpb25UZXN0U2NyaXB0V29ybGQiKSk7CiAKICAgICByZW1vdmVPbGRJbmplY3RlZENv
bnRlbnRBbmRSZXNldExpc3RzKHRlc3QtPm1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCB3aGl0
ZWxpc3QsIGJsYWNrbGlzdCk7CiAKQEAgLTE5MSw4ICsxOTEsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0
VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTY3JpcHQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZQogICAgIHNjcmlwdCA9IHdlYmtpdF91c2VyX3NjcmlwdF9uZXcoa0luamVjdGVkU2Ny
aXB0LCBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9T
Q1JJUFRfSU5KRUNUX0FUX0RPQ1VNRU5UX0VORCwgbnVsbHB0ciwgYmxhY2tsaXN0KTsKICAgICB3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3NjcmlwdCh0ZXN0LT5tX3VzZXJDb250ZW50
TWFuYWdlci5nZXQoKSwgc2NyaXB0KTsKICAgICB3ZWJraXRfdXNlcl9zY3JpcHRfdW5yZWYoc2Ny
aXB0KTsKLSAgICBnX2Fzc2VydCghaXNTY3JpcHRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBy
YW5kb21QYXRoKSk7Ci0gICAgZ19hc3NlcnQoaXNTY3JpcHRJbmplY3RlZEZvclVSTEF0UGF0aCh0
ZXN0LCAic29tZW90aGVycmFuZG9tcGF0aCIpKTsKKyAgICBnX2Fzc2VydF9mYWxzZShpc1Njcmlw
dEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKKyAgICBnX2Fzc2VydF90
cnVlKGlzU2NyaXB0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgInNvbWVvdGhlcnJhbmRvbXBh
dGgiKSk7CiAKICAgICByZW1vdmVPbGRJbmplY3RlZENvbnRlbnRBbmRSZXNldExpc3RzKHRlc3Qt
Pm1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CiAKQEAg
LTIwNSw5ICsyMDUsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0
ZWRTY3JpcHQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZQogICAgIHNjcmlwdCA9IHdl
YmtpdF91c2VyX3NjcmlwdF9uZXcoa0luamVjdGVkU2NyaXB0LCBXRUJLSVRfVVNFUl9DT05URU5U
X0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9TQ1JJUFRfSU5KRUNUX0FUX0RPQ1VNRU5U
X0VORCwgd2hpdGVsaXN0LCBibGFja2xpc3QpOwogICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFu
YWdlcl9hZGRfc2NyaXB0KHRlc3QtPm1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBzY3JpcHQp
OwogICAgIHdlYmtpdF91c2VyX3NjcmlwdF91bnJlZihzY3JpcHQpOwotICAgIGdfYXNzZXJ0KGlz
U2NyaXB0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgaW5UaGVXaGl0ZUxpc3QpKTsKLSAgICBn
X2Fzc2VydCghaXNTY3JpcHRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBpblRoZVdoaXRlTGlz
dEFuZEJsYWNrTGlzdCkpOwotICAgIGdfYXNzZXJ0KCFpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQ
YXRoKHRlc3QsIG5vdEluV2hpdGVsaXN0KSk7CisgICAgZ19hc3NlcnRfdHJ1ZShpc1NjcmlwdElu
amVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIGluVGhlV2hpdGVMaXN0KSk7CisgICAgZ19hc3NlcnRf
ZmFsc2UoaXNTY3JpcHRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBpblRoZVdoaXRlTGlzdEFu
ZEJsYWNrTGlzdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKGlzU2NyaXB0SW5qZWN0ZWRGb3JVUkxB
dFBhdGgodGVzdCwgbm90SW5XaGl0ZWxpc3QpKTsKIAogICAgIC8vIEl0J3MgaW1wb3J0YW50IHRv
IGNsZWFuIHVwIHRoZSBlbnZpcm9ubWVudCBiZWZvcmUgb3RoZXIgdGVzdHMuCiAgICAgcmVtb3Zl
T2xkSW5qZWN0ZWRDb250ZW50QW5kUmVzZXRMaXN0cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdl
ci5nZXQoKSwgd2hpdGVsaXN0LCBibGFja2xpc3QpOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHB1Ymxp
YzoKICAgICAgICAgaWYgKCF0ZXN0LT5tX3dhaXRGb3JTY3JpcHRSdW4pCiAgICAgICAgICAgICBn
X21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwogCi0gICAgICAgIGdfYXNzZXJ0KCF0
ZXN0LT5tX3VzZXJTY3JpcHRNZXNzYWdlKTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbCh0ZXN0LT5t
X3VzZXJTY3JpcHRNZXNzYWdlKTsKICAgICAgICAgdGVzdC0+bV91c2VyU2NyaXB0TWVzc2FnZSA9
IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9yZWYoanNSZXN1bHQpOwogICAgIH0KIApAQCAtMjYx
LDE0ICsyNjEsMTQgQEAgcHVibGljOgogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fdXNlckNv
bnRlbnRNYW5hZ2VyLmdldCgpLCBzaWduYWxOYW1lLmdldCgpLCBHX0NBTExCQUNLKHNjcmlwdE1l
c3NhZ2VSZWNlaXZlZCksIHRoaXMpOwogCiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5M
b29wKTsKLSAgICAgICAgZ19hc3NlcnQoIW1fd2FpdEZvclNjcmlwdFJ1bik7Ci0gICAgICAgIGdf
YXNzZXJ0KG1fdXNlclNjcmlwdE1lc3NhZ2UpOworICAgICAgICBnX2Fzc2VydF9mYWxzZShtX3dh
aXRGb3JTY3JpcHRSdW4pOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKG1fdXNlclNjcmlwdE1l
c3NhZ2UpOwogICAgICAgICByZXR1cm4gbV91c2VyU2NyaXB0TWVzc2FnZTsKICAgICB9CiAKICAg
ICBzdGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0RmluaXNoZWQoR09iamVjdCosIEdBc3luY1Jlc3Vs
dCogcmVzdWx0LCBVc2VyU2NyaXB0TWVzc2FnZVRlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBn
X2Fzc2VydCh0ZXN0LT5tX3dhaXRGb3JTY3JpcHRSdW4pOworICAgICAgICBnX2Fzc2VydF90cnVl
KHRlc3QtPm1fd2FpdEZvclNjcmlwdFJ1bik7CiAgICAgICAgIHRlc3QtPm1fd2FpdEZvclNjcmlw
dFJ1biA9IGZhbHNlOwogICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3Ap
OwogICAgIH0KQEAgLTI5MSwxMCArMjkxLDEwIEBAIHByaXZhdGU6CiAKIHN0YXRpYyB2b2lkIHRl
c3RVc2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNzYWdlUmVjZWl2ZWQoVXNlclNjcmlwdE1lc3Nh
Z2VUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIGdfYXNzZXJ0KHRlc3QtPnJlZ2lz
dGVySGFuZGxlcigibXNnIikpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+cmVnaXN0ZXJIYW5k
bGVyKCJtc2ciKSk7CiAKICAgICAvLyBUcnlpbmcgdG8gcmVnaXN0ZXIgdGhlIHNhbWUgaGFuZGxl
ciBhIHNlY29uZCB0aW1lIG11c3QgZmFpbC4KLSAgICBnX2Fzc2VydCghdGVzdC0+cmVnaXN0ZXJI
YW5kbGVyKCJtc2ciKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+cmVnaXN0ZXJIYW5kbGVy
KCJtc2ciKSk7CiAKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PC9odG1sPiIsIG51bGxwdHIp
OwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwpAQCAtMzAyLDE1ICszMDIsMTUg
QEAgc3RhdGljIHZvaWQgdGVzdFVzZXJDb250ZW50TWFuYWdlclNjcmlwdE1lc3NhZ2VSZWNlaXZl
ZChVc2VyU2NyaXB0TWVzc2FnZVRlc3QqIHQKICAgICAvLyBDaGVjayB0aGF0IHRoZSAid2luZG93
LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMiIG5hbWVzcGFjZSBleGlzdHMuCiAgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3Jp
cHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIndpbmRv
dy53ZWJraXQubWVzc2FnZUhhbmRsZXJzID8gJ3knIDogJ24nOyIsICZlcnJvci5vdXRQdHIoKSk7
Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdl
dCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNz
ZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHZhbHVlU3Ry
aW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1
bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAieSIpOwog
CiAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgImRvY3VtZW50LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMu
bXNnIiBuYW1lc3BhY2UgZXhpc3RzLgogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5K
YXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRs
ZXJzLm1zZyA/ICd5JyA6ICduJzsiLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGph
dmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CisgICAgZ19hc3Nl
cnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJv
ci5nZXQoKSk7CiAgICAgdmFsdWVTdHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRS
ZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2
YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJ5Iik7CiAKQEAgLTMxOCwxOSArMzE4LDE5IEBAIHN0YXRp
YyB2b2lkIHRlc3RVc2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNzYWdlUmVjZWl2ZWQoVXNlclNj
cmlwdE1lc3NhZ2VUZXN0KiB0CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgp
LCA9PSwgInVzZXIgbWVzc2FnZSIpOwogCiAgICAgLy8gTWVzc2FnZXMgc2hvdWxkIGFycml2ZSBk
ZXNwaXRlIG9mIG90aGVyIGhhbmRsZXJzIGJlaW5nIHJlZ2lzdGVyZWQuCi0gICAgZ19hc3NlcnQo
dGVzdC0+cmVnaXN0ZXJIYW5kbGVyKCJhbm90aGVySGFuZGxlciIpKTsKKyAgICBnX2Fzc2VydF90
cnVlKHRlc3QtPnJlZ2lzdGVySGFuZGxlcigiYW5vdGhlckhhbmRsZXIiKSk7CiAKICAgICAvLyBD
aGVjayB0aGF0IHRoZSAiZG9jdW1lbnQud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5tc2ciIG5hbWVz
cGFjZSBzdGlsbCBleGlzdHMuCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFT
Y3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMu
bXNnID8gJ3knIDogJ24nOyIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNj
cmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9u
b25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdl
dCgpKTsKICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3Vs
dFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVl
U3RyaW5nLmdldCgpLCA9PSwgInkiKTsKIAogICAgIC8vIENoZWNrIHRoYXQgdGhlICJkb2N1bWVu
dC53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmFub3RoZXJIYW5kbGVyIiBuYW1lc3BhY2UgZXhpc3Rz
LgogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGls
RmluaXNoZWQoIndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmFub3RoZXJIYW5kbGVyID8g
J3knIDogJ24nOyIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJl
c3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxs
KGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsK
ICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0
cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5n
LmdldCgpLCA9PSwgInkiKTsKIApAQCAtMzQ0LDExICszNDQsMTEgQEAgc3RhdGljIHZvaWQgdGVz
dFVzZXJDb250ZW50TWFuYWdlclNjcmlwdE1lc3NhZ2VSZWNlaXZlZChVc2VyU2NyaXB0TWVzc2Fn
ZVRlc3QqIHQKICAgICB0ZXN0LT51bnJlZ2lzdGVySGFuZGxlcigibXNnIik7CiAKICAgICBqYXZh
c2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3
aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5tc2cucG9zdE1lc3NhZ2UoJzQyJyk7IiwgJmVy
cm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydCghamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19h
c3NlcnQoZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3Vs
dCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwogCiAgICAgLy8gUmUtcmVn
aXN0ZXJpbmcgYSBoYW5kbGVyIHRoYXQgaGFzIGJlZW4gdW5yZWdpc3RlcmVkIG11c3Qgd29yawot
ICAgIGdfYXNzZXJ0KHRlc3QtPnJlZ2lzdGVySGFuZGxlcigibXNnIikpOworICAgIGdfYXNzZXJ0
X3RydWUodGVzdC0+cmVnaXN0ZXJIYW5kbGVyKCJtc2ciKSk7CiAgICAgdmFsdWVTdHJpbmcucmVz
ZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcodGVzdC0+cG9zdE1lc3Nh
Z2VBbmRXYWl0VW50aWxSZWNlaXZlZCgibXNnIiwgIidoYW5kbGVyOiBtc2cnIikpKTsKICAgICBn
X2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiaGFuZGxlcjogbXNnIik7CiAK
QEAgLTM1Nyw3ICszNTcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VyU2Ny
aXB0TWVzc2FnZVJlY2VpdmVkKFVzZXJTY3JpcHRNZXNzYWdlVGVzdCogdAogCiBzdGF0aWMgdm9p
ZCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VyU2NyaXB0TWVzc2FnZUluV29ybGRSZWNlaXZlZChVc2Vy
U2NyaXB0TWVzc2FnZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgZ19hc3NlcnQo
dGVzdC0+cmVnaXN0ZXJIYW5kbGVyKCJtc2ciKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5y
ZWdpc3RlckhhbmRsZXIoIm1zZyIpKTsKIAogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48L2h0
bWw+IiwgbnVsbHB0cik7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CkBAIC0z
NjUsMTYgKzM2NSwxNiBAQCBzdGF0aWMgdm9pZCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VyU2NyaXB0
TWVzc2FnZUluV29ybGRSZWNlaXZlZChVc2VyU2NyaXB0TWVzc2FnZQogICAgIC8vIENoZWNrIHRo
YXQgdGhlICJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycyIgbmFtZXNwYWNlIGRvZXNuJ3Qg
ZXhpc3QgaW4gaXNvbGF0ZWQgd29ybGRzLgogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJv
cjsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+
cnVuSmF2YVNjcmlwdEluV29ybGRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2luZG93LndlYmtpdC5t
ZXNzYWdlSGFuZGxlcnMgPyAneScgOiAnbic7IiwgIldlYkV4dGVuc2lvblRlc3RTY3JpcHRXb3Js
ZCIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoIWphdmFzY3JpcHRSZXN1bHQpOwor
ICAgIGdfYXNzZXJ0X251bGwoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnRfZXJyb3Io
ZXJyb3IuZ2V0KCksIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SLCBXRUJLSVRfSkFWQVNDUklQVF9F
UlJPUl9TQ1JJUFRfRkFJTEVEKTsKICAgICB0ZXN0LT51bnJlZ2lzdGVySGFuZGxlcigibXNnIik7
CiAKLSAgICBnX2Fzc2VydCh0ZXN0LT5yZWdpc3RlckhhbmRsZXIoIm1zZyIsICJXZWJFeHRlbnNp
b25UZXN0U2NyaXB0V29ybGQiKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5yZWdpc3Rlckhh
bmRsZXIoIm1zZyIsICJXZWJFeHRlbnNpb25UZXN0U2NyaXB0V29ybGQiKSk7CiAKICAgICAvLyBD
aGVjayB0aGF0IHRoZSAid2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMiIG5hbWVzcGFjZSBl
eGlzdHMgaW4gdGhlIHdvcmxkLgogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZh
U2NyaXB0SW5Xb3JsZEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VI
YW5kbGVycyA/ICd5JyA6ICduJzsiLCAiV2ViRXh0ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIiwgJmVy
cm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fz
c2VydCghZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X251bGwoamF2YXNjcmlwdFJlc3VsdCk7
CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwogICAgIEdVbmlxdWVQdHI8Y2hh
cj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2
YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwg
PT0sICJ5Iik7CiAKQEAgLTM4Myw3ICszODMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0VXNlckNvbnRl
bnRNYW5hZ2VyU2NyaXB0TWVzc2FnZUluV29ybGRSZWNlaXZlZChVc2VyU2NyaXB0TWVzc2FnZQog
CiAgICAgLy8gUG9zdCBtZXNzYWdlIGluIG1haW4gd29ybGQgc2hvdWxkIGZhaWwuCiAgICAgamF2
YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgi
d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMubXNnLnBvc3RNZXNzYWdlKCc0MicpOyIsICZl
cnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoIWphdmFzY3JpcHRSZXN1bHQpOworICAgIGdf
YXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnRfZXJyb3IoZXJy
b3IuZ2V0KCksIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SLCBXRUJLSVRfSkFWQVNDUklQVF9FUlJP
Ul9TQ1JJUFRfRkFJTEVEKTsKIAogICAgIHRlc3QtPnVucmVnaXN0ZXJIYW5kbGVyKCJtc2ciLCAi
V2ViRXh0ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIik7CkBAIC0zOTIsMTEgKzM5MiwxMSBAQCBzdGF0
aWMgdm9pZCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VyU2NyaXB0TWVzc2FnZUluV29ybGRSZWNlaXZl
ZChVc2VyU2NyaXB0TWVzc2FnZQogI2lmIFBMQVRGT1JNKEdUSykKIHN0YXRpYyB2b2lkIHRlc3RV
c2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNzYWdlRnJvbURPTUJpbmRpbmdzKFVzZXJTY3JpcHRN
ZXNzYWdlVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBnX2Fzc2VydCh0ZXN0LT5y
ZWdpc3RlckhhbmRsZXIoImRvbSIpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPnJlZ2lzdGVy
SGFuZGxlcigiZG9tIikpOwogCiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjE8L2h0bWw+Iiwg
bnVsbHB0cik7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9
IHRlc3QtPndhaXRVbnRpbE1lc3NhZ2VSZWNlaXZlZCgiZG9tIik7Ci0gICAgZ19hc3NlcnQoamF2
YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsK
ICAgICBHVW5pcXVlUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0
UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIo
dmFsdWVTdHJpbmcuZ2V0KCksID09LCAiRG9jdW1lbnRMb2FkZWQiKTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2Vi
Q29udGV4dC5jcHAKaW5kZXggZDQxNDRmNjk4MmUzMzBlZjZiZmQ4Y2E5ZTEwNWIxZWRhMGU3NGU3
OC4uNGM0MzQ1ZWQzNmQzYzNiMTEzYjMzMThkYzIzYzNhNjkyZWNhZWQwZiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktp
dFdlYkNvbnRleHQuY3BwCkBAIC0zNCw0NiArMzQsNDYgQEAgc3RhdGljIFdlYktpdFRlc3RTZXJ2
ZXIqIGtTZXJ2ZXI7CiBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dERlZmF1bHQoVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICAvLyBDaGVjayB0aGVyZSdzIGEgc2luZ2xlIGluc3Rh
bmNlIG9mIHRoZSBkZWZhdWx0IHdlYiBjb250ZXh0LgotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJf
Y29udGV4dF9nZXRfZGVmYXVsdCgpID09IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgp
KTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSAhPSB0ZXN0
LT5tX3dlYkNvbnRleHQuZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJraXRfd2ViX2Nv
bnRleHRfZ2V0X2RlZmF1bHQoKSwgPT0sIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgp
KTsKKyAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCks
ICE9LCB0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2Vi
Q29udGV4dEVwaGVtZXJhbChUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIC8vIEJ5
IGRlZmF1bHQgd2ViIGNvbnRleHRzIGFyZSBub3QgZXBoZW1lcmFsLgotICAgIGdfYXNzZXJ0KCF3
ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFsKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVm
YXVsdCgpKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwo
dGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dl
Yl9jb250ZXh0X2lzX2VwaGVtZXJhbCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSkp
OworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwodGVz
dC0+bV93ZWJDb250ZXh0LmdldCgpKSk7CiAKICAgICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIq
IG1hbmFnZXIgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdl
YmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpKTsKLSAgICBnX2Fzc2VydChXRUJLSVRfSVNf
V0VCU0lURV9EQVRBX01BTkFHRVIobWFuYWdlcikpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKG1hbmFnZXIpKTsKKyAgICBnX2Fzc2VydF90
cnVlKFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSk7CisgICAgZ19hc3Nl
cnRfZmFsc2Uod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2Vy
KSk7CiAgICAgbWFuYWdlciA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXIodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKTsKLSAgICBnX2Fzc2VydChXRUJLSVRfSVNf
V0VCU0lURV9EQVRBX01BTkFHRVIobWFuYWdlcikpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKG1hbmFnZXIpKTsKKyAgICBnX2Fzc2VydF90
cnVlKFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSk7CisgICAgZ19hc3Nl
cnRfZmFsc2Uod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2Vy
KSk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBUZXN0OjphZG9wdFZpZXcoVGVzdDo6Y3JlYXRlV2Vi
VmlldygpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh3ZWJW
aWV3LmdldCgpKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcih3ZWJWaWV3LmdldCgpKSA9PSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpKSk7CisgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh3ZWJWaWV3LmdldCgp
KSk7CisgICAgZ19hc3NlcnRfY21waGV4KHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXIod2ViVmlldy5nZXQoKSksID09LCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpKSk7CiAKICAg
ICB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KFRlc3Q6OmNyZWF0ZVdlYlZpZXcodGVzdC0+bV93
ZWJDb250ZXh0LmdldCgpKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19pc19lcGhl
bWVyYWwod2ViVmlldy5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXIod2ViVmlldy5nZXQoKSkgPT0gbWFuYWdlcik7CisgICAgZ19h
c3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh3ZWJWaWV3LmdldCgpKSk7
CisgICAgZ19hc3NlcnRfY21waGV4KHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXIod2ViVmlldy5nZXQoKSksID09LCBtYW5hZ2VyKTsKIAogICAgIEdSZWZQdHI8V2ViS2l0
V2ViQ29udGV4dD4gY29udGV4dCA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX2NvbnRleHRfbmV3X2Vw
aGVtZXJhbCgpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFs
KGNvbnRleHQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfY29udGV4dF9p
c19lcGhlbWVyYWwoY29udGV4dC5nZXQoKSkpOwogICAgIG1hbmFnZXIgPSB3ZWJraXRfd2ViX2Nv
bnRleHRfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKGNvbnRleHQuZ2V0KCkpOwotICAgIGdfYXNz
ZXJ0KFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSk7Ci0gICAgZ19hc3Nl
cnQod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2VyKSk7Ci0g
ICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3ZWJW
aWV3LmdldCgpKSAhPSBtYW5hZ2VyKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19XRUJT
SVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKG1hbmFnZXIpKTsKKyAgICBnX2Fzc2VydF9j
bXBoZXgod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3ZWJWaWV3Lmdl
dCgpKSwgIT0sIG1hbmFnZXIpOwogCiAgICAgd2ViVmlldyA9IFRlc3Q6OmFkb3B0VmlldyhUZXN0
OjpjcmVhdGVXZWJWaWV3KGNvbnRleHQuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2Vi
X3ZpZXdfaXNfZXBoZW1lcmFsKHdlYlZpZXcuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYlZpZXcuZ2V0KCkpID09IG1hbmFn
ZXIpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh3ZWJW
aWV3LmdldCgpKSk7CisgICAgZ19hc3NlcnRfY21waGV4KHdlYmtpdF93ZWJfdmlld19nZXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXIod2ViVmlldy5nZXQoKSksID09LCBtYW5hZ2VyKTsKIAogICAgIEdS
ZWZQdHI8V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyPiBlcGhlbWVyYWxNYW5hZ2VyID0gYWRvcHRH
UmVmKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXdfZXBoZW1lcmFsKCkpOwotICAgIGdf
YXNzZXJ0KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhlbWVyYWwoZXBoZW1lcmFs
TWFuYWdlci5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2lzX2VwaGVtZXJhbChlcGhlbWVyYWxNYW5hZ2VyLmdldCgpKSk7CiAgICAgY29udGV4
dCA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX2NvbnRleHRfbmV3X3dpdGhfd2Vic2l0ZV9kYXRhX21h
bmFnZXIoZXBoZW1lcmFsTWFuYWdlci5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJf
Y29udGV4dF9pc19lcGhlbWVyYWwoY29udGV4dC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3RydWUo
d2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbChjb250ZXh0LmdldCgpKSk7CiB9CiAKICNp
ZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6
CiBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dEdldFBsdWdpbnMoUGx1Z2luc1Rlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiB7CiAgICAgR0xpc3QqIHBsdWdpbnMgPSB0ZXN0LT5nZXRQbHVnaW5z
KCk7Ci0gICAgZ19hc3NlcnQocGx1Z2lucyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChwbHVnaW5z
KTsKIAogICAgIEdSZWZQdHI8V2ViS2l0UGx1Z2luPiB0ZXN0UGx1Z2luOwogICAgIGZvciAoR0xp
c3QqIGl0ZW0gPSBwbHVnaW5zOyBpdGVtOyBpdGVtID0gZ19saXN0X25leHQoaXRlbSkpIHsKQEAg
LTEyNiwyMiArMTI2LDIyIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0R2V0UGx1Z2lucyhQ
bHVnaW5zVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgfQotICAgIGdfYXNzZXJ0KFdFQktJVF9JU19QTFVHSU4odGVzdFBsdWdpbi5n
ZXQoKSkpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1BMVUdJTih0ZXN0UGx1Z2luLmdl
dCgpKSk7CiAKICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKLSAgICBnX2Fzc2Vy
dChyZWFscGF0aChXRUJLSVRfVEVTVF9QTFVHSU5fRElSLCBub3JtYWxpemVkUGF0aCkpOworICAg
IGdfYXNzZXJ0X25vbm51bGwocmVhbHBhdGgoV0VCS0lUX1RFU1RfUExVR0lOX0RJUiwgbm9ybWFs
aXplZFBhdGgpKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHBsdWdpblBhdGgoZ19idWlsZF9maWxl
bmFtZShub3JtYWxpemVkUGF0aCwgImxpYlRlc3ROZXRzY2FwZVBsdWdJbi5zbyIsIG51bGxwdHIp
KTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3BsdWdpbl9nZXRfcGF0aCh0ZXN0UGx1Z2lu
LmdldCgpKSwgPT0sIHBsdWdpblBhdGguZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJr
aXRfcGx1Z2luX2dldF9kZXNjcmlwdGlvbih0ZXN0UGx1Z2luLmdldCgpKSwgPT0sICJTaW1wbGUg
TmV0c2NhcGXCriBwbHVnLWluIHRoYXQgaGFuZGxlcyB0ZXN0IGNvbnRlbnQgZm9yIFdlYktpdCIp
OwogICAgIEdMaXN0KiBtaW1lSW5mb0xpc3QgPSB3ZWJraXRfcGx1Z2luX2dldF9taW1lX2luZm9f
bGlzdCh0ZXN0UGx1Z2luLmdldCgpKTsKLSAgICBnX2Fzc2VydChtaW1lSW5mb0xpc3QpOworICAg
IGdfYXNzZXJ0X25vbm51bGwobWltZUluZm9MaXN0KTsKICAgICBnX2Fzc2VydF9jbXB1aW50KGdf
bGlzdF9sZW5ndGgobWltZUluZm9MaXN0KSwgPT0sIDIpOwogCiAgICAgV2ViS2l0TWltZUluZm8q
IG1pbWVJbmZvID0gc3RhdGljX2Nhc3Q8V2ViS2l0TWltZUluZm8qPihtaW1lSW5mb0xpc3QtPmRh
dGEpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfbWltZV9pbmZvX2dldF9taW1lX3R5cGUo
bWltZUluZm8pLCA9PSwgImltYWdlL3BuZyIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRf
bWltZV9pbmZvX2dldF9kZXNjcmlwdGlvbihtaW1lSW5mbyksID09LCAicG5nIGltYWdlIik7CiAg
ICAgY29uc3QgZ2NoYXIqIGNvbnN0KiBleHRlbnNpb25zID0gd2Via2l0X21pbWVfaW5mb19nZXRf
ZXh0ZW5zaW9ucyhtaW1lSW5mbyk7Ci0gICAgZ19hc3NlcnQoZXh0ZW5zaW9ucyk7CisgICAgZ19h
c3NlcnRfbm9ubnVsbChleHRlbnNpb25zKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoZXh0ZW5zaW9u
c1swXSwgPT0sICJwbmciKTsKIAogICAgIG1pbWVJbmZvTGlzdCA9IGdfbGlzdF9uZXh0KG1pbWVJ
bmZvTGlzdCk7CkBAIC0xNDksNyArMTQ5LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRH
ZXRQbHVnaW5zKFBsdWdpbnNUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0
X2NtcHN0cih3ZWJraXRfbWltZV9pbmZvX2dldF9taW1lX3R5cGUobWltZUluZm8pLCA9PSwgImFw
cGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiKTsKICAgICBnX2Fzc2VydF9jbXBzdHIo
d2Via2l0X21pbWVfaW5mb19nZXRfZGVzY3JpcHRpb24obWltZUluZm8pLCA9PSwgInRlc3QgbmV0
c2NhcGUgY29udGVudCIpOwogICAgIGV4dGVuc2lvbnMgPSB3ZWJraXRfbWltZV9pbmZvX2dldF9l
eHRlbnNpb25zKG1pbWVJbmZvKTsKLSAgICBnX2Fzc2VydChleHRlbnNpb25zKTsKKyAgICBnX2Fz
c2VydF9ub25udWxsKGV4dGVuc2lvbnMpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihleHRlbnNpb25z
WzBdLCA9PSwgInRlc3RuZXRzY2FwZSIpOwogfQogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQpAQCAtMTkxLDExICsxOTEsMTEgQEAgcHVibGljOgogICAgICAgICB0ZXN0LT5t
X3VyaVNjaGVtZVJlcXVlc3QgPSByZXF1ZXN0OwogICAgICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJ
c0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJlcXVlc3QpKTsKIAotICAgICAgICBn
X2Fzc2VydCh3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF93ZWJfdmlldyhyZXF1ZXN0KSA9
PSB0ZXN0LT5tX3dlYlZpZXcpOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X3VyaV9z
Y2hlbWVfcmVxdWVzdF9nZXRfd2ViX3ZpZXcocmVxdWVzdCksID09LCB0ZXN0LT5tX3dlYlZpZXcp
OwogCiAgICAgICAgIGNvbnN0IGNoYXIqIHNjaGVtZSA9IHdlYmtpdF91cmlfc2NoZW1lX3JlcXVl
c3RfZ2V0X3NjaGVtZShyZXF1ZXN0KTsKLSAgICAgICAgZ19hc3NlcnQoc2NoZW1lKTsKLSAgICAg
ICAgZ19hc3NlcnQodGVzdC0+bV9oYW5kbGVyc01hcC5jb250YWlucyhTdHJpbmc6OmZyb21VVEY4
KHNjaGVtZSkpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChzY2hlbWUpOworICAgICAgICBn
X2Fzc2VydF90cnVlKHRlc3QtPm1faGFuZGxlcnNNYXAuY29udGFpbnMoU3RyaW5nOjpmcm9tVVRG
OChzY2hlbWUpKSk7CiAKICAgICAgICAgY29uc3QgVVJJU2NoZW1lSGFuZGxlciYgaGFuZGxlciA9
IHRlc3QtPm1faGFuZGxlcnNNYXAuZ2V0KFN0cmluZzo6ZnJvbVVURjgoc2NoZW1lKSk7CiAKQEAg
LTI5Nyw3ICsyOTcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFVSSVNjaGVtZShVUklT
Y2hlbWVUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHNpemVfdCBtYWluUmVzb3VyY2VE
YXRhU2l6ZSA9IDA7CiAgICAgY29uc3QgY2hhciogbWFpblJlc291cmNlRGF0YSA9IHRlc3QtPm1h
aW5SZXNvdXJjZURhdGEobWFpblJlc291cmNlRGF0YVNpemUpOwogICAgIGdfYXNzZXJ0X2NtcGlu
dChtYWluUmVzb3VyY2VEYXRhU2l6ZSwgPT0sIHN0cmxlbihrQmFySFRNTCkpOwotICAgIGdfYXNz
ZXJ0KCFzdHJuY21wKG1haW5SZXNvdXJjZURhdGEsIGtCYXJIVE1MLCBtYWluUmVzb3VyY2VEYXRh
U2l6ZSkpOworICAgIGdfYXNzZXJ0X2NtcGludChzdHJuY21wKG1haW5SZXNvdXJjZURhdGEsIGtC
YXJIVE1MLCBtYWluUmVzb3VyY2VEYXRhU2l6ZSksID09LCAwKTsKIAogICAgIHRlc3QtPnJlZ2lz
dGVyVVJJU2NoZW1lSGFuZGxlcigiZWNobyIsIGtFY2hvSFRNTEZvcm1hdCwgLTEsICJ0ZXh0L2h0
bWwiKTsKICAgICB0ZXN0LT5sb2FkVVJJKCJlY2hvOmhlbGxvLXdvcmxkIik7CkBAIC0zMDYsNyAr
MzA2LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRVUklTY2hlbWUoVVJJU2NoZW1lVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBtYWluUmVzb3VyY2VEYXRhU2l6ZSA9IDA7CiAg
ICAgbWFpblJlc291cmNlRGF0YSA9IHRlc3QtPm1haW5SZXNvdXJjZURhdGEobWFpblJlc291cmNl
RGF0YVNpemUpOwogICAgIGdfYXNzZXJ0X2NtcGludChtYWluUmVzb3VyY2VEYXRhU2l6ZSwgPT0s
IHN0cmxlbihlY2hvSFRNTC5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KCFzdHJuY21wKG1haW5SZXNv
dXJjZURhdGEsIGVjaG9IVE1MLmdldCgpLCBtYWluUmVzb3VyY2VEYXRhU2l6ZSkpOworICAgIGdf
YXNzZXJ0X2NtcGludChzdHJuY21wKG1haW5SZXNvdXJjZURhdGEsIGVjaG9IVE1MLmdldCgpLCBt
YWluUmVzb3VyY2VEYXRhU2l6ZSksID09LCAwKTsKIAogICAgIHRlc3QtPmxvYWRVUkkoImVjaG86
d2l0aCNmcmFnbWVudCIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwpAQCAt
MzE2LDIwICszMTYsMjAgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRVUklTY2hlbWUoVVJJ
U2NoZW1lVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBtYWluUmVzb3VyY2VEYXRhU2l6
ZSA9IDA7CiAgICAgbWFpblJlc291cmNlRGF0YSA9IHRlc3QtPm1haW5SZXNvdXJjZURhdGEobWFp
blJlc291cmNlRGF0YVNpemUpOwogICAgIGdfYXNzZXJ0X2NtcGludChtYWluUmVzb3VyY2VEYXRh
U2l6ZSwgPT0sIHN0cmxlbihlY2hvSFRNTC5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KCFzdHJuY21w
KG1haW5SZXNvdXJjZURhdGEsIGVjaG9IVE1MLmdldCgpLCBtYWluUmVzb3VyY2VEYXRhU2l6ZSkp
OworICAgIGdfYXNzZXJ0X2NtcGludChzdHJuY21wKG1haW5SZXNvdXJjZURhdGEsIGVjaG9IVE1M
LmdldCgpLCBtYWluUmVzb3VyY2VEYXRhU2l6ZSksID09LCAwKTsKIAogICAgIHRlc3QtPnJlZ2lz
dGVyVVJJU2NoZW1lSGFuZGxlcigibm9taW1lIiwga0JhckhUTUwsIC0xLCAwKTsKICAgICB0ZXN0
LT5tX2xvYWRFdmVudHMuY2xlYXIoKTsKICAgICB0ZXN0LT5sb2FkVVJJKCJub21pbWU6Zm9vLWJh
ciIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KHRl
c3QtPm1fbG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExv
YWRGYWlsZWQpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlu
cyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRGYWlsZWQpKTsKIAogICAgIHRlc3Qt
PnJlZ2lzdGVyVVJJU2NoZW1lSGFuZGxlcigiZW1wdHkiLCAwLCAwLCAidGV4dC9odG1sIik7CiAg
ICAgdGVzdC0+bV9sb2FkRXZlbnRzLmNsZWFyKCk7CiAgICAgdGVzdC0+bG9hZFVSSSgiZW1wdHk6
bm90aGluZyIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNz
ZXJ0KCF0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlz
aW9uYWxMb2FkRmFpbGVkKSk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1fbG9hZEV2ZW50cy5jb250
YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRmFpbGVkKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uo
dGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFs
TG9hZEZhaWxlZCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPm1fbG9hZEV2ZW50cy5jb250
YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRmFpbGVkKSk7CiAKICAgICAvLyBBbnl0aGluZyBv
dmVyIDgxOTIgYnl0ZXMgd2lsbCBnZXQgbXVsdGlwbGUgY2FsbHMgdG8gZ19pbnB1dF9zdHJlYW1f
cmVhZF9hc3luYyBpbgogICAgIC8vIFdlYktpdFVSSVNjaGVtZVJlcXVlc3Qgd2hlbiByZWFkaW5n
IGRhdGEsIGJ1dCB3ZSBzdGlsbCBuZWVkIHdheSBtb3JlIHRoYW4gdGhhdCB0bwpAQCAtMzM5LDI1
ICszMzksMjUgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRVUklTY2hlbWUoVVJJU2NoZW1l
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5tX2xvYWRFdmVudHMuY2xlYXIo
KTsKICAgICB0ZXN0LT5sb2FkVVJJKCJlcnJvcjplcnJvciIpOwogICAgIHRlc3QtPndhaXRVbnRp
bExvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlu
cyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRGYWlsZWQpKTsKLSAgICBnX2Fzc2Vy
dCh0ZXN0LT5tX2xvYWRGYWlsZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9sb2FkRXZl
bnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZEZhaWxlZCkpOwor
ICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9sb2FkRmFpbGVkKTsKICAgICBnX2Fzc2VydF9lcnJv
cih0ZXN0LT5tX2Vycm9yLmdldCgpLCBnX3F1YXJrX2Zyb21fc3RyaW5nKGVycm9yRG9tYWluKSwg
ZXJyb3JDb2RlKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9lcnJvci0+bWVzc2FnZSwg
PT0sIGdlbmVyaWNFcnJvck1lc3NhZ2UpOwogCiAgICAgdGVzdC0+bV9sb2FkRXZlbnRzLmNsZWFy
KCk7CiAgICAgdGVzdC0+bG9hZFVSSSgiZXJyb3I6YmVmb3JlLXJlc3BvbnNlIik7CiAgICAgdGVz
dC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9sb2FkRXZl
bnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZEZhaWxlZCkpOwot
ICAgIGdfYXNzZXJ0KHRlc3QtPm1fbG9hZEZhaWxlZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0
LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2Fk
RmFpbGVkKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2xvYWRGYWlsZWQpOwogICAgIGdf
YXNzZXJ0X2Vycm9yKHRlc3QtPm1fZXJyb3IuZ2V0KCksIGdfcXVhcmtfZnJvbV9zdHJpbmcoZXJy
b3JEb21haW4pLCBlcnJvckNvZGUpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2Vycm9y
LT5tZXNzYWdlLCA9PSwgYmVmb3JlUmVjZWl2ZVJlc3BvbnNlRXJyb3JNZXNzYWdlKTsKIAogICAg
IHRlc3QtPm1fbG9hZEV2ZW50cy5jbGVhcigpOwogICAgIHRlc3QtPmxvYWRVUkkoImVycm9yOmFm
dGVyLWZpcnN0LWNodW5rIik7CiAgICAgdGVzdC0+ZmluaXNoT25Db21taXR0ZWRBbmRXYWl0VW50
aWxMb2FkRmluaXNoZWQoKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRh
aW5zKExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZEZhaWxlZCkpOwotICAgIGdfYXNz
ZXJ0KHRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRmFp
bGVkKSk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9sb2FkRmFpbGVkKTsKKyAgICBnX2Fzc2VydF9m
YWxzZSh0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlz
aW9uYWxMb2FkRmFpbGVkKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2xvYWRFdmVudHMu
Y29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZhaWxlZCkpOworICAgIGdfYXNzZXJ0X3Ry
dWUodGVzdC0+bV9sb2FkRmFpbGVkKTsKICAgICBnX2Fzc2VydF9lcnJvcih0ZXN0LT5tX2Vycm9y
LmdldCgpLCBnX3F1YXJrX2Zyb21fc3RyaW5nKGVycm9yRG9tYWluKSwgZXJyb3JDb2RlKTsKICAg
ICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9lcnJvci0+bWVzc2FnZSwgPT0sIGFmdGVySW5pdGlh
bENodW5rRXJyb3JNZXNzYWdlKTsKIApAQCAtMzY1LDggKzM2NSw4IEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJDb250ZXh0VVJJU2NoZW1lKFVSSVNjaGVtZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiAgICAgdGVzdC0+bV9sb2FkRXZlbnRzLmNsZWFyKCk7CiAgICAgdGVzdC0+bG9hZFVSSSgiY2xv
c2VkOmlucHV0LXN0cmVhbSIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwot
ICAgIGdfYXNzZXJ0KHRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0
OjpQcm92aXNpb25hbExvYWRGYWlsZWQpKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2xvYWRGYWls
ZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRU
cmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZEZhaWxlZCkpOworICAgIGdfYXNzZXJ0X3RydWUo
dGVzdC0+bV9sb2FkRmFpbGVkKTsKICAgICBnX2Fzc2VydF9lcnJvcih0ZXN0LT5tX2Vycm9yLmdl
dCgpLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NMT1NFRCk7CiB9CiAKQEAgLTM3Nyw3ICszNzcs
NyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFNwZWxsQ2hlY2tlcihUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogCiAgICAgLy8gQ2hlY2sgd2hhdCBoYXBwZW5zIGlmIG5vIHNwZWxsIGNo
ZWNraW5nIGxhbmd1YWdlIGhhcyBiZWVuIHNldC4KICAgICBjb25zdCBnY2hhciogY29uc3QqIGN1
cnJlbnRMYW5ndWFnZSA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfc3BlbGxfY2hlY2tpbmdfbGFu
Z3VhZ2VzKHdlYkNvbnRleHQpOwotICAgIGdfYXNzZXJ0KCFjdXJyZW50TGFuZ3VhZ2UpOworICAg
IGdfYXNzZXJ0X251bGwoY3VycmVudExhbmd1YWdlKTsKIAogICAgIC8vIFNldCB0aGUgbGFuZ3Vh
Z2UgdG8gYSBzcGVjaWZpYyBvbmUuCiAgICAgR1JlZlB0cjxHUHRyQXJyYXk+IGxhbmd1YWdlcyA9
IGFkb3B0R1JlZihnX3B0cl9hcnJheV9uZXcoKSk7CkBAIC00MTUsMTMgKzQxNSwxMyBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFNwZWxsQ2hlY2tlcihUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQogICAgIGdfcHRyX2FycmF5X2FkZChsYW5ndWFnZXMuZ2V0KCksIDApOwogICAgIHdlYmtp
dF93ZWJfY29udGV4dF9zZXRfc3BlbGxfY2hlY2tpbmdfbGFuZ3VhZ2VzKHdlYkNvbnRleHQsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciogY29uc3QqPihsYW5ndWFnZXMtPnBkYXRhKSk7CiAg
ICAgY3VycmVudExhbmd1YWdlID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9zcGVsbF9jaGVja2lu
Z19sYW5ndWFnZXMod2ViQ29udGV4dCk7Ci0gICAgZ19hc3NlcnQoIWN1cnJlbnRMYW5ndWFnZSk7
CisgICAgZ19hc3NlcnRfbnVsbChjdXJyZW50TGFuZ3VhZ2UpOwogCiAgICAgLy8gQ2hlY2sgZGlz
YWJsaW5nIGFuZCByZS1lbmFibGluZyBzcGVsbCBjaGVja2luZy4KICAgICB3ZWJraXRfd2ViX2Nv
bnRleHRfc2V0X3NwZWxsX2NoZWNraW5nX2VuYWJsZWQod2ViQ29udGV4dCwgRkFMU0UpOwotICAg
IGdfYXNzZXJ0KCF3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3NwZWxsX2NoZWNraW5nX2VuYWJsZWQo
d2ViQ29udGV4dCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
c3BlbGxfY2hlY2tpbmdfZW5hYmxlZCh3ZWJDb250ZXh0KSk7CiAgICAgd2Via2l0X3dlYl9jb250
ZXh0X3NldF9zcGVsbF9jaGVja2luZ19lbmFibGVkKHdlYkNvbnRleHQsIFRSVUUpOwotICAgIGdf
YXNzZXJ0KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfc3BlbGxfY2hlY2tpbmdfZW5hYmxlZCh3ZWJD
b250ZXh0KSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3NwZWxs
X2NoZWNraW5nX2VuYWJsZWQod2ViQ29udGV4dCkpOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKEdU
SykKIApAQCAtNDMzLDcgKzQzMyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0TGFuZ3Vh
Z2VzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHNpemVfdCBtYWluUmVz
b3VyY2VEYXRhU2l6ZSA9IDA7CiAgICAgY29uc3QgY2hhciogbWFpblJlc291cmNlRGF0YSA9IHRl
c3QtPm1haW5SZXNvdXJjZURhdGEobWFpblJlc291cmNlRGF0YVNpemUpOwogICAgIGdfYXNzZXJ0
X2NtcHVpbnQobWFpblJlc291cmNlRGF0YVNpemUsID09LCBzdHJsZW4oZXhwZWN0ZWREZWZhdWx0
TGFuZ3VhZ2UpKTsKLSAgICBnX2Fzc2VydCghc3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCBleHBl
Y3RlZERlZmF1bHRMYW5ndWFnZSwgbWFpblJlc291cmNlRGF0YVNpemUpKTsKKyAgICBnX2Fzc2Vy
dF9jbXBpbnQoc3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCBleHBlY3RlZERlZmF1bHRMYW5ndWFn
ZSwgbWFpblJlc291cmNlRGF0YVNpemUpLCA9PSwgMCk7CiAKICAgICBHUmVmUHRyPEdQdHJBcnJh
eT4gbGFuZ3VhZ2VzID0gYWRvcHRHUmVmKGdfcHRyX2FycmF5X25ldygpKTsKICAgICBnX3B0cl9h
cnJheV9hZGQobGFuZ3VhZ2VzLmdldCgpLCBjb25zdF9jYXN0PGdwb2ludGVyPihzdGF0aWNfY2Fz
dDxjb25zdCB2b2lkKj4oImVuIikpKTsKQEAgLTQ0OCwxNSArNDQ4LDE1IEBAIHN0YXRpYyB2b2lk
IHRlc3RXZWJDb250ZXh0TGFuZ3VhZ2VzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogICAgIG1haW5SZXNvdXJjZURhdGFTaXplID0gMDsKICAgICBtYWluUmVzb3VyY2VEYXRhID0g
dGVzdC0+bWFpblJlc291cmNlRGF0YShtYWluUmVzb3VyY2VEYXRhU2l6ZSk7CiAgICAgZ19hc3Nl
cnRfY21wdWludChtYWluUmVzb3VyY2VEYXRhU2l6ZSwgPT0sIHN0cmxlbihleHBlY3RlZExhbmd1
YWdlcykpOwotICAgIGdfYXNzZXJ0KCFzdHJuY21wKG1haW5SZXNvdXJjZURhdGEsIGV4cGVjdGVk
TGFuZ3VhZ2VzLCBtYWluUmVzb3VyY2VEYXRhU2l6ZSkpOworICAgIGdfYXNzZXJ0X2NtcGludChz
dHJuY21wKG1haW5SZXNvdXJjZURhdGEsIGV4cGVjdGVkTGFuZ3VhZ2VzLCBtYWluUmVzb3VyY2VE
YXRhU2l6ZSksID09LCAwKTsKIAogICAgIC8vIFdoZW4gdXNpbmcgdGhlIEMgbG9jYWxlLCBlbi1V
UyBzaG91bGQgYmUgdXNlZCBhcyBkZWZhdWx0LgogICAgIGNvbnN0IGNoYXIqIGNMYW5ndWFnZVtd
ID0geyAiQyIsIG51bGxwdHIgfTsKICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3ByZWZlcnJl
ZF9sYW5ndWFnZXModGVzdC0+bV93ZWJDb250ZXh0LmdldCgpLCBjTGFuZ3VhZ2UpOwogICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBq
YXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVk
KCJJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlIiwgJmVycm9y
Lm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2Vy
dCghZXJyb3IpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAg
Z19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gbG9j
YWxlKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1
bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIobG9jYWxlLmdldCgpLCA9PSwgZXhwZWN0ZWREZWZh
dWx0TGFuZ3VhZ2UpOwogCkBAIC00NjQsOCArNDY0LDggQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNv
bnRleHRMYW5ndWFnZXMoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgY29u
c3QgY2hhciogcG9zaXhMYW5ndWFnZVtdID0geyAiUE9TSVgiLCBudWxscHRyIH07CiAgICAgd2Vi
a2l0X3dlYl9jb250ZXh0X3NldF9wcmVmZXJyZWRfbGFuZ3VhZ2VzKHRlc3QtPm1fd2ViQ29udGV4
dC5nZXQoKSwgcG9zaXhMYW5ndWFnZSk7CiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1
bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiSW50bC5EYXRlVGltZUZvcm1hdCgpLnJl
c29sdmVkT3B0aW9ucygpLmxvY2FsZSIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQo
amF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVycm9yKTsKKyAgICBnX2Fzc2VydF9u
b25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdl
dCgpKTsKICAgICBsb2NhbGUucmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NT
dHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihsb2NhbGUuZ2V0
KCksID09LCBleHBlY3RlZERlZmF1bHRMYW5ndWFnZSk7CiAKQEAgLTQ3Myw3ICs0NzMsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dExhbmd1YWdlcyhXZWJWaWV3VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICBjb25zdCBjaGFyKiBpbnZhbGlkTGFuZ3VhZ2VbXSA9IHsgIkEiLCBu
dWxscHRyIH07CiAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9wcmVmZXJyZWRfbGFuZ3VhZ2Vz
KHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwgaW52YWxpZExhbmd1YWdlKTsKICAgICBqYXZhc2Ny
aXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJJbnRs
LkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlIiwgJmVycm9yLm91dFB0
cigpKTsKLSAgICBnX2Fzc2VydCghamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9u
bnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwg
V0VCS0lUX0pBVkFTQ1JJUFRfRVJST1IsIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SX1NDUklQVF9G
QUlMRUQpOwogfQogCkBAIC01MjQsMjkgKzUyNCwyOSBAQCBwdWJsaWM6CiAgICAgdm9pZCB2ZXJp
ZnlUaGF0U2NoZW1lTWF0Y2hlc1BvbGljeShjb25zdCBjaGFyKiBzY2hlbWUsIHVuc2lnbmVkIHBv
bGljeSkKICAgICB7CiAgICAgICAgIGlmIChwb2xpY3kgJiBMb2NhbCkKLSAgICAgICAgICAgIGdf
YXNzZXJ0KHdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3VyaV9zY2hlbWVfaXNfbG9jYWwobV9tYW5h
Z2VyLCBzY2hlbWUpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NlY3VyaXR5
X21hbmFnZXJfdXJpX3NjaGVtZV9pc19sb2NhbChtX21hbmFnZXIsIHNjaGVtZSkpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJp
X3NjaGVtZV9pc19sb2NhbChtX21hbmFnZXIsIHNjaGVtZSkpOworICAgICAgICAgICAgZ19hc3Nl
cnRfZmFsc2Uod2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9pc19sb2NhbChtX21h
bmFnZXIsIHNjaGVtZSkpOwogICAgICAgICBpZiAocG9saWN5ICYgTm9BY2Nlc3MpCi0gICAgICAg
ICAgICBnX2Fzc2VydCh3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlfc2NoZW1lX2lzX25vX2Fj
Y2VzcyhtX21hbmFnZXIsIHNjaGVtZSkpOworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJr
aXRfc2VjdXJpdHlfbWFuYWdlcl91cmlfc2NoZW1lX2lzX25vX2FjY2VzcyhtX21hbmFnZXIsIHNj
aGVtZSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X3NlY3Vy
aXR5X21hbmFnZXJfdXJpX3NjaGVtZV9pc19ub19hY2Nlc3MobV9tYW5hZ2VyLCBzY2hlbWUpKTsK
KyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3VyaV9z
Y2hlbWVfaXNfbm9fYWNjZXNzKG1fbWFuYWdlciwgc2NoZW1lKSk7CiAgICAgICAgIGlmIChwb2xp
Y3kgJiBEaXNwbGF5SXNvbGF0ZWQpCi0gICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfc2VjdXJp
dHlfbWFuYWdlcl91cmlfc2NoZW1lX2lzX2Rpc3BsYXlfaXNvbGF0ZWQobV9tYW5hZ2VyLCBzY2hl
bWUpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NlY3VyaXR5X21hbmFnZXJf
dXJpX3NjaGVtZV9pc19kaXNwbGF5X2lzb2xhdGVkKG1fbWFuYWdlciwgc2NoZW1lKSk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91
cmlfc2NoZW1lX2lzX2Rpc3BsYXlfaXNvbGF0ZWQobV9tYW5hZ2VyLCBzY2hlbWUpKTsKKyAgICAg
ICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3VyaV9zY2hlbWVf
aXNfZGlzcGxheV9pc29sYXRlZChtX21hbmFnZXIsIHNjaGVtZSkpOwogICAgICAgICBpZiAocG9s
aWN5ICYgU2VjdXJlKQotICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0X3NlY3VyaXR5X21hbmFn
ZXJfdXJpX3NjaGVtZV9pc19zZWN1cmUobV9tYW5hZ2VyLCBzY2hlbWUpKTsKKyAgICAgICAgICAg
IGdfYXNzZXJ0X3RydWUod2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9pc19zZWN1
cmUobV9tYW5hZ2VyLCBzY2hlbWUpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZ19hc3Nl
cnQoIXdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3VyaV9zY2hlbWVfaXNfc2VjdXJlKG1fbWFuYWdl
ciwgc2NoZW1lKSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2VjdXJpdHlf
bWFuYWdlcl91cmlfc2NoZW1lX2lzX3NlY3VyZShtX21hbmFnZXIsIHNjaGVtZSkpOwogICAgICAg
ICBpZiAocG9saWN5ICYgQ09SU0VuYWJsZWQpCi0gICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRf
c2VjdXJpdHlfbWFuYWdlcl91cmlfc2NoZW1lX2lzX2NvcnNfZW5hYmxlZChtX21hbmFnZXIsIHNj
aGVtZSkpOworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2VjdXJpdHlfbWFuYWdl
cl91cmlfc2NoZW1lX2lzX2NvcnNfZW5hYmxlZChtX21hbmFnZXIsIHNjaGVtZSkpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJp
X3NjaGVtZV9pc19jb3JzX2VuYWJsZWQobV9tYW5hZ2VyLCBzY2hlbWUpKTsKKyAgICAgICAgICAg
IGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3VyaV9zY2hlbWVfaXNfY29y
c19lbmFibGVkKG1fbWFuYWdlciwgc2NoZW1lKSk7CiAgICAgICAgIGlmIChwb2xpY3kgJiBFbXB0
eURvY3VtZW50KQotICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0X3NlY3VyaXR5X21hbmFnZXJf
dXJpX3NjaGVtZV9pc19lbXB0eV9kb2N1bWVudChtX21hbmFnZXIsIHNjaGVtZSkpOworICAgICAg
ICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlfc2NoZW1lX2lz
X2VtcHR5X2RvY3VtZW50KG1fbWFuYWdlciwgc2NoZW1lKSk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlfc2NoZW1lX2lzX2Vt
cHR5X2RvY3VtZW50KG1fbWFuYWdlciwgc2NoZW1lKSk7CisgICAgICAgICAgICBnX2Fzc2VydF9m
YWxzZSh3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlfc2NoZW1lX2lzX2VtcHR5X2RvY3VtZW50
KG1fbWFuYWdlciwgc2NoZW1lKSk7CiAgICAgfQogCiAgICAgV2ViS2l0U2VjdXJpdHlNYW5hZ2Vy
KiBtX21hbmFnZXI7CkBAIC01ODIsOCArNTgyLDggQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRl
eHRTZWN1cml0eVBvbGljeShTZWN1cml0eVBvbGljeVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIK
IAogc3RhdGljIHZvaWQgY29uc29sZU1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKFdlYktpdFVzZXJD
b250ZW50TWFuYWdlciosIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIG1lc3NhZ2UsIFZlY3RvcjxX
ZWJLaXRKYXZhc2NyaXB0UmVzdWx0Kj4qIHJlc3VsdCkKIHsKLSAgICBnX2Fzc2VydChtZXNzYWdl
KTsKLSAgICBnX2Fzc2VydChyZXN1bHQpOworICAgIGdfYXNzZXJ0X25vbm51bGwobWVzc2FnZSk7
CisgICAgZ19hc3NlcnRfbm9ubnVsbChyZXN1bHQpOwogICAgIHJlc3VsdC0+YXBwZW5kKHdlYmtp
dF9qYXZhc2NyaXB0X3Jlc3VsdF9yZWYobWVzc2FnZSkpOwogfQogCkBAIC02MDMsMTggKzYwMywx
OCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFNlY3VyaXR5RmlsZVhIUihXZWJWaWV3VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAvLyBCeSBkZWZhdWx0IGZpbGUgYWNjZXNzIGlz
IG5vdCBhbGxvd2VkLCB0aGlzIHdpbGwgc2hvdyBhIGNvbnNvbGUgbWVzc2FnZSB3aXRoIGEgY3Jv
c3Mtb3JpZ2luIGVycm9yLgogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBX
ZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNj
cmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKHhoci5nZXQoKSwgJmVycm9yLm91dFB0cigpKTsKLSAg
ICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3IpOworICAg
IGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJy
b3IoZXJyb3IuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQoY29uc29sZU1lc3NhZ2VzLnNp
emUoKSwgPT0sIDIpOwogICAgIFZlY3RvcjxHVW5pcXVlUHRyPGNoYXI+LCAyPiBleHBlY3RlZE1l
c3NhZ2VzOwogICAgIGV4cGVjdGVkTWVzc2FnZXMuYXBwZW5kKGdfc3RyZHVwKCJDcm9zcyBvcmln
aW4gcmVxdWVzdHMgYXJlIG9ubHkgc3VwcG9ydGVkIGZvciBIVFRQLiIpKTsKICAgICBleHBlY3Rl
ZE1lc3NhZ2VzLmFwcGVuZChnX3N0cmR1cF9wcmludGYoIlhNTEh0dHBSZXF1ZXN0IGNhbm5vdCBs
b2FkICVzIGR1ZSB0byBhY2Nlc3MgY29udHJvbCBjaGVja3MuIiwganNvblVSTC5nZXQoKSkpOwog
ICAgIHVuc2lnbmVkIGkgPSAwOwogICAgIGZvciAoYXV0byogY29uc29sZU1lc3NhZ2UgOiBjb25z
b2xlTWVzc2FnZXMpIHsKLSAgICAgICAgZ19hc3NlcnQoY29uc29sZU1lc3NhZ2UpOworICAgICAg
ICBnX2Fzc2VydF9ub25udWxsKGNvbnNvbGVNZXNzYWdlKTsKICAgICAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBtZXNzYWdlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5n
KGNvbnNvbGVNZXNzYWdlKSk7CiAgICAgICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQgPSBn
X3ZhcmlhbnRfcGFyc2UoR19WQVJJQU5UX1RZUEUoIih1dXN1cykiKSwgbWVzc2FnZVN0cmluZy5n
ZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgIGdfYXNzZXJ0KHZhcmlh
bnQuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKHZhcmlhbnQuZ2V0KCkpOwogICAg
ICAgICB1bnNpZ25lZCBsZXZlbDsKICAgICAgICAgY29uc3QgY2hhciogbWVzc2FnZVRleHQ7CiAg
ICAgICAgIGdfdmFyaWFudF9nZXQodmFyaWFudC5nZXQoKSwgIih1dSZzdSZzKSIsIG51bGxwdHIs
ICZsZXZlbCwgJm1lc3NhZ2VUZXh0LCBudWxscHRyLCBudWxscHRyKTsKQEAgLTYyOSwyMSArNjI5
LDIxIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0U2VjdXJpdHlGaWxlWEhSKFdlYlZpZXdU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPmxvYWRVUkkoZmlsZVVSTC5nZXQo
KSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAgamF2YXNjcmlwdFJl
c3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCh4aHIuZ2V0KCks
ICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAg
Z19hc3NlcnQoIWVycm9yKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQp
OworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKIAogICAgIC8vIEl0IGlzbid0
IHN0aWxsIHBvc3NpYmxlIHRvIGxvYWQgZmlsZSBmcm9tIGFuIEhUVFAgVVJMLgogICAgIHRlc3Qt
PmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CiAgICAgdGVzdC0+
d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1
bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCh4aHIuZ2V0KCksICZlcnJvci5vdXRQdHIo
KSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVycm9y
KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0
X25vX2Vycm9yKGVycm9yLmdldCgpKTsKICAgICBpID0gMDsKICAgICBmb3IgKGF1dG8qIGNvbnNv
bGVNZXNzYWdlIDogY29uc29sZU1lc3NhZ2VzKSB7Ci0gICAgICAgIGdfYXNzZXJ0KGNvbnNvbGVN
ZXNzYWdlKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChjb25zb2xlTWVzc2FnZSk7CiAgICAg
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gbWVzc2FnZVN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlw
dFJlc3VsdFRvQ1N0cmluZyhjb25zb2xlTWVzc2FnZSkpOwogICAgICAgICBHUmVmUHRyPEdWYXJp
YW50PiB2YXJpYW50ID0gZ192YXJpYW50X3BhcnNlKEdfVkFSSUFOVF9UWVBFKCIodXVzdXMpIiks
IG1lc3NhZ2VTdHJpbmcuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAg
ICBnX2Fzc2VydCh2YXJpYW50LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbCh2YXJp
YW50LmdldCgpKTsKICAgICAgICAgdW5zaWduZWQgbGV2ZWw7CiAgICAgICAgIGNvbnN0IGNoYXIq
IG1lc3NhZ2VUZXh0OwogICAgICAgICBnX3ZhcmlhbnRfZ2V0KHZhcmlhbnQuZ2V0KCksICIodXUm
c3UmcykiLCBudWxscHRyLCAmbGV2ZWwsICZtZXNzYWdlVGV4dCwgbnVsbHB0ciwgbnVsbHB0cik7
CkBAIC02ODQsMTAgKzY4NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGFjdHVhbGx5IGEgcHJv
eHkgc2VydmVyLiBXZSdyZSB0ZXN0aW5nIHdoZXRoZXIgdGhlIHByb3h5IHNldHRpbmdzCiAgICAg
ICAgIC8vIHdvcmssIG5vdCB3aGV0aGVyIHdlIGNhbiB3cml0ZSBhIHNvdXAgcHJveHkgc2VydmVy
LgogICAgICAgICBtX3Byb3h5U2VydmVyLnJ1bihzZXJ2ZXJDYWxsYmFjayk7Ci0gICAgICAgIGdf
YXNzZXJ0KG1fcHJveHlTZXJ2ZXIuYmFzZVVSSSgpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVs
bChtX3Byb3h5U2VydmVyLmJhc2VVUkkoKSk7CiAjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDYx
LCA5MCkKICAgICAgICAgbV9wcm94eVNlcnZlci5hZGRXZWJTb2NrZXRIYW5kbGVyKHdlYlNvY2tl
dFByb3h5U2VydmVyQ2FsbGJhY2ssIHRoaXMpOwotICAgICAgICBnX2Fzc2VydChtX3Byb3h5U2Vy
dmVyLmJhc2VXZWJTb2NrZXRVUkkoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobV9wcm94
eVNlcnZlci5iYXNlV2ViU29ja2V0VVJJKCkpOwogI2VuZGlmCiAgICAgfQogCkBAIC03NTYsNyAr
NzU2LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRQcm94eVNldHRpbmdzKFByb3h5VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAvLyBXZWJTb2NrZXQgcmVxdWVzdHMgc2hvdWxk
IGFsc28gYmUgcmVjZWl2ZWQgYnkga1NlcnZlci4KICAgICBrU2VydmVyLT5hZGRXZWJTb2NrZXRI
YW5kbGVyKHdlYlNvY2tldFNlcnZlckNhbGxiYWNrLCB0ZXN0KTsKICAgICBhdXRvIHNlcnZlclR5
cGUgPSB0ZXN0LT5jcmVhdGVXZWJTb2NrZXRBbmRXYWl0VW50aWxDb25uZWN0ZWQoKTsKLSAgICBn
X2Fzc2VydChzZXJ2ZXJUeXBlID09IFByb3h5VGVzdDo6V2ViU29ja2V0U2VydmVyVHlwZTo6Tm9Q
cm94eSk7CisgICAgZ19hc3NlcnRfdHJ1ZShzZXJ2ZXJUeXBlID09IFByb3h5VGVzdDo6V2ViU29j
a2V0U2VydmVyVHlwZTo6Tm9Qcm94eSk7CiAjZW5kaWYKIAogICAgIC8vIFNldCBkZWZhdWx0IHBy
b3h5IFVSSSB0byBwb2ludCB0byBwcm94eVNlcnZlci4gUmVxdWVzdHMgdG8ga1NlcnZlciBzaG91
bGQgYmUgcmVjZWl2ZWQgYnkgcHJveHlTZXJ2ZXIgaW5zdGVhZC4KQEAgLTc3MSw3ICs3NzEsNyBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFByb3h5U2V0dGluZ3MoUHJveHlUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2MSwgOTApCiAgICAg
Ly8gV2ViU29ja2V0IHJlcXVlc3RzIHNob3VsZCBhbHNvIGJlIHJlY2VpdmVkIGJ5IHByb3h5U2Vy
dmVyLgogICAgIHNlcnZlclR5cGUgPSB0ZXN0LT5jcmVhdGVXZWJTb2NrZXRBbmRXYWl0VW50aWxD
b25uZWN0ZWQoKTsKLSAgICBnX2Fzc2VydChzZXJ2ZXJUeXBlID09IFByb3h5VGVzdDo6V2ViU29j
a2V0U2VydmVyVHlwZTo6UHJveHkpOworICAgIGdfYXNzZXJ0X3RydWUoc2VydmVyVHlwZSA9PSBQ
cm94eVRlc3Q6OldlYlNvY2tldFNlcnZlclR5cGU6OlByb3h5KTsKICNlbmRpZgogCiAgICAgLy8g
UHJveHkgc2V0dGluZ3MgYWxzbyBhZmZlY3QgZXBoZW1lcmFsIHdlYiB2aWV3cy4KQEAgLTc4Miwx
OCArNzgyLDE4IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0UHJveHlTZXR0aW5ncyhQcm94
eVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgICAgICJ3ZWItY29udGV4dCIsIHRlc3Qt
Pm1fd2ViQ29udGV4dC5nZXQoKSwKICAgICAgICAgImlzLWVwaGVtZXJhbCIsIFRSVUUsCiAgICAg
ICAgIG51bGxwdHIpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFs
KHdlYlZpZXcuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9jb250ZXh0X2lzX2Vw
aGVtZXJhbCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldy5nZXQoKSkpKTsKKyAg
ICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwod2ViVmlldy5nZXQo
KSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwo
d2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcuZ2V0KCkpKSk7CiAKICAgICBnX3Np
Z25hbF9jb25uZWN0KHdlYlZpZXcuZ2V0KCksICJsb2FkLWNoYW5nZWQiLCBHX0NBTExCQUNLKGVw
aGVtZXJhbFZpZXdsb2FkQ2hhbmdlZCksIHRlc3QpOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2Fk
X3VyaSh3ZWJWaWV3LmdldCgpLCBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvZWNob1BvcnQiKS5k
YXRhKCkpOwogICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKICAgICBXZWJL
aXRXZWJSZXNvdXJjZSogcmVzb3VyY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fcmVzb3Vy
Y2Uod2ViVmlldy5nZXQoKSk7Ci0gICAgZ19hc3NlcnQoV0VCS0lUX0lTX1dFQl9SRVNPVVJDRShy
ZXNvdXJjZSkpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1dFQl9SRVNPVVJDRShyZXNv
dXJjZSkpOwogICAgIHdlYmtpdF93ZWJfcmVzb3VyY2VfZ2V0X2RhdGEocmVzb3VyY2UsIG51bGxw
dHIsIFtdKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVz
ZXJEYXRhKSB7CiAgICAgICAgIHNpemVfdCBkYXRhU2l6ZTsKICAgICAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBkYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHdlYmtpdF93ZWJfcmVzb3VyY2VfZ2V0
X2RhdGFfZmluaXNoKFdFQktJVF9XRUJfUkVTT1VSQ0Uob2JqZWN0KSwgcmVzdWx0LCAmZGF0YVNp
emUsIG51bGxwdHIpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KGRhdGEpOworICAgICAgICBnX2Fzc2Vy
dF9ub25udWxsKGRhdGEpOwogICAgICAgICBhdXRvKiB0ZXN0ID0gc3RhdGljX2Nhc3Q8UHJveHlU
ZXN0Kj4odXNlckRhdGEpOwogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHByb3h5U2VydmVyUG9y
dEFzU3RyaW5nID0gdGVzdC0+cHJveHlTZXJ2ZXJQb3J0QXNTdHJpbmcoKTsKICAgICAgICAgQVNT
RVJUX0NNUF9DU1RSSU5HKENTdHJpbmcoZGF0YS5nZXQoKSwgZGF0YVNpemUpLCA9PSwgcHJveHlT
ZXJ2ZXJQb3J0QXNTdHJpbmcuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZDc1NzM0
MWIwZmJhMzRmMjcyZjI2OGQ4ZDMzMzk2Yzc3ZmU4NzAwNS4uZWUwMGFkYjRmYTZiNzA1MjBkODY3
NGQ0YWRhYzA1YThkNDE2MGQzOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC00NSw4ICs0NSw4
IEBAIHN0YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBnU2VydmVyOwogCiBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld1dlYkNvbnRleHQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0g
ICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldykg
PT0gdGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2Nv
bnRleHRfZ2V0X2RlZmF1bHQoKSAhPSB0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkpOworICAgIGdf
YXNzZXJ0X2NtcGhleCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQodGVzdC0+bV93ZWJWaWV3
KSwgPT0sIHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSk7CisgICAgZ19hc3NlcnRfY21waGV4KHdl
YmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpLCAhPSwgdGVzdC0+bV93ZWJDb250ZXh0Lmdl
dCgpKTsKIAogICAgIC8vIENoZWNrIHRoYXQgYSB3ZWIgdmlldyBjcmVhdGVkIHdpdGggZ19vYmpl
Y3RfbmV3IGhhcyB0aGUgZGVmYXVsdCBjb250ZXh0LgogICAgIGF1dG8gd2ViVmlldyA9IFRlc3Q6
OmFkb3B0VmlldyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCkBAIC01NCwxMSAr
NTQsMTEgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdXZWJDb250ZXh0KFdlYlZpZXdUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAgICAiYmFja2VuZCIsIFRlc3Q6OmNyZWF0ZVdlYlZp
ZXdCYWNrZW5kKCksCiAjZW5kaWYKICAgICAgICAgbnVsbHB0cikpOwotICAgIGdfYXNzZXJ0KHdl
YmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJWaWV3LmdldCgpKSA9PSB3ZWJraXRfd2ViX2Nv
bnRleHRfZ2V0X2RlZmF1bHQoKSk7CisgICAgZ19hc3NlcnRfY21waGV4KHdlYmtpdF93ZWJfdmll
d19nZXRfY29udGV4dCh3ZWJWaWV3LmdldCgpKSwgPT0sIHdlYmtpdF93ZWJfY29udGV4dF9nZXRf
ZGVmYXVsdCgpKTsKIAogICAgIC8vIENoZWNrIHRoYXQgYSB3ZWIgdmlldyBjcmVhdGVkIHdpdGgg
YSByZWxhdGVkIHZpZXcgaGFzIHRoZSByZWxhdGVkIHZpZXcgY29udGV4dC4KICAgICB3ZWJWaWV3
ID0gVGVzdDo6YWRvcHRWaWV3KFRlc3Q6OmNyZWF0ZVdlYlZpZXcodGVzdC0+bV93ZWJWaWV3KSk7
Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcuZ2V0KCkp
ID09IHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSk7CisgICAgZ19hc3NlcnRfY21waGV4KHdlYmtp
dF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJWaWV3LmdldCgpKSwgPT0sIHRlc3QtPm1fd2ViQ29u
dGV4dC5nZXQoKSk7CiAKICAgICAvLyBDaGVjayB0aGF0IGEgd2ViIGNvbnRleHQgZ2l2ZW4gYXMg
Y29uc3RydWN0IHBhcmFtZXRlciBpcyBpZ25vcmVkIGlmIGEgcmVsYXRlZCB2aWV3IGlzIGFsc28g
cHJvdmlkZWQuCiAgICAgd2ViVmlldyA9IFRlc3Q6OmFkb3B0VmlldyhnX29iamVjdF9uZXcoV0VC
S0lUX1RZUEVfV0VCX1ZJRVcsCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3V2ViQ29udGV4dChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAgICAg
IndlYi1jb250ZXh0Iiwgd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCksCiAgICAgICAg
ICJyZWxhdGVkLXZpZXciLCB0ZXN0LT5tX3dlYlZpZXcsCiAgICAgICAgIG51bGxwdHIpKTsKLSAg
ICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldy5nZXQoKSkgPT0g
dGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKTsKKyAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X3dl
Yl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcuZ2V0KCkpLCA9PSwgdGVzdC0+bV93ZWJDb250ZXh0
LmdldCgpKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdXZWJDb250ZXh0TGlmZXRpbWUo
V2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC0xNDAsOSArMTQwLDkgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdXZWJCYWNrZW5kKFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiAgICAgR1JlZlB0cjxXZWJLaXRXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHRHUmVmKHdlYmtpdF93
ZWJfdmlld19uZXcod2Via2l0X3dlYl92aWV3X2JhY2tlbmRfbmV3KHdwZV92aWV3X2JhY2tlbmRf
Y3JlYXRlX3dpdGhfYmFja2VuZF9pbnRlcmZhY2UoJnNfdGVzdGluZ0ludGVyZmFjZSwgbnVsbHB0
ciksIG51bGxwdHIsIG51bGxwdHIpKSk7CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVk
V2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJWaWV3LmdldCgpKSk7CiAgICAgYXV0byogdmll
d0JhY2tlbmQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tlbmQod2ViVmlldy5nZXQoKSk7Ci0g
ICAgZ19hc3NlcnQodmlld0JhY2tlbmQpOworICAgIGdfYXNzZXJ0X25vbm51bGwodmlld0JhY2tl
bmQpOwogICAgIGF1dG8qIHdwZUJhY2tlbmQgPSB3ZWJraXRfd2ViX3ZpZXdfYmFja2VuZF9nZXRf
d3BlX2JhY2tlbmQodmlld0JhY2tlbmQpOwotICAgIGdfYXNzZXJ0KHdwZUJhY2tlbmQpOworICAg
IGdfYXNzZXJ0X25vbm51bGwod3BlQmFja2VuZCk7CiAgICAgd2ViVmlldyA9IG51bGxwdHI7CiAK
ICAgICAvLyBVc2VyIHByb3ZpZGVkIGJhY2tlbmQgd2l0aCBkZXN0cm95IG5vdGlmeS4KQEAgLTE1
NCw3ICsxNTQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1dlYkJhY2tlbmQoVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKICAgICB9LCAmd3BlQmFja2VuZCkpKTsKICAgICB0ZXN0LT5hc3Nl
cnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYlZpZXcuZ2V0KCkp
KTsKICAgICB3ZWJWaWV3ID0gbnVsbHB0cjsKLSAgICBnX2Fzc2VydCghd3BlQmFja2VuZCk7Cisg
ICAgZ19hc3NlcnRfbnVsbCh3cGVCYWNrZW5kKTsKIAogICAgIC8vIFVzZXIgcHJvdmlkZWQgYmFj
a2VuZCBvd25lZCBieSBhbm90aGVyIG9iamVjdCB3aXRoIGRlc3Ryb3kgbm90aWZ5LgogICAgIHN0
YXRpYyBib29sIGhhc0luc3RhbmNlID0gZmFsc2U7CkBAIC0xNzQsMTQgKzE3NCwxNCBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViVmlld1dlYkJhY2tlbmQoVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
ICAgICAgICAgc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIGJhY2tlbmQ7CiAgICAgfTsKICAgICBh
dXRvKiBvd25lciA9IG5ldyBCYWNrZW5kT3duZXIod3BlX3ZpZXdfYmFja2VuZF9jcmVhdGVfd2l0
aF9iYWNrZW5kX2ludGVyZmFjZSgmc190ZXN0aW5nSW50ZXJmYWNlLCBudWxscHRyKSk7Ci0gICAg
Z19hc3NlcnQoaGFzSW5zdGFuY2UpOworICAgIGdfYXNzZXJ0X3RydWUoaGFzSW5zdGFuY2UpOwog
ICAgIHdlYlZpZXcgPSBhZG9wdEdSZWYod2Via2l0X3dlYl92aWV3X25ldyh3ZWJraXRfd2ViX3Zp
ZXdfYmFja2VuZF9uZXcob3duZXItPmJhY2tlbmQsIFtdKGdwb2ludGVyIHVzZXJEYXRhKSB7CiAg
ICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxCYWNrZW5kT3duZXIqPih1c2VyRGF0YSk7CiAgICAg
fSwgb3duZXIpKSk7CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5p
c2hlcyhHX09CSkVDVCh3ZWJWaWV3LmdldCgpKSk7Ci0gICAgZ19hc3NlcnQoaGFzSW5zdGFuY2Up
OworICAgIGdfYXNzZXJ0X3RydWUoaGFzSW5zdGFuY2UpOwogICAgIHdlYlZpZXcgPSBudWxscHRy
OwotICAgIGdfYXNzZXJ0KCFoYXNJbnN0YW5jZSk7CisgICAgZ19hc3NlcnRfZmFsc2UoaGFzSW5z
dGFuY2UpOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKFdQRSkKIApAQCAtMTk1LDExICsxOTUsMTEg
QEAgc3RhdGljIHZvaWQgZXBoZW1lcmFsVmlld2xvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2EKIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFcGhl
bWVyYWwoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgZ19hc3NlcnQo
IXdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwodGVzdC0+bV93ZWJWaWV3KSk7Ci0gICAgZ19h
c3NlcnQoIXdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwod2Via2l0X3dlYl92aWV3X2dl
dF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldykpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRf
d2ViX3ZpZXdfaXNfZXBoZW1lcmFsKHRlc3QtPm1fd2ViVmlldykpOworICAgIGdfYXNzZXJ0X2Zh
bHNlKHdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwod2Via2l0X3dlYl92aWV3X2dldF9j
b250ZXh0KHRlc3QtPm1fd2ViVmlldykpKTsKICAgICBhdXRvKiBtYW5hZ2VyID0gd2Via2l0X3dl
Yl9jb250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0
KCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1l
cmFsKG1hbmFnZXIpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyKHRlc3QtPm1fd2ViVmlldykgPT0gbWFuYWdlcik7CisgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2VyKSk7
CisgICAgZ19hc3NlcnRfY21waGV4KHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXIodGVzdC0+bV93ZWJWaWV3KSwgPT0sIG1hbmFnZXIpOwogICAgIHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9jbGVhcihtYW5hZ2VyLCBXRUJLSVRfV0VCU0lURV9EQVRBX0RJU0tfQ0FD
SEUsIDAsIG51bGxwdHIsIFtdKEdPYmplY3QqIG1hbmFnZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0
LCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfY2xlYXJfZmluaXNoKFdFQktJVF9XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSwgcmVz
dWx0LCBudWxscHRyKTsKICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViVmlld1Rlc3QqPih1c2VyRGF0
YSktPnF1aXRNYWluTG9vcCgpOwpAQCAtMjE0LDkgKzIxNCw5IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3RXBoZW1lcmFsKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAg
ICAid2ViLWNvbnRleHQiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQodGVzdC0+bV93ZWJW
aWV3KSwKICAgICAgICAgImlzLWVwaGVtZXJhbCIsIFRSVUUsCiAgICAgICAgIG51bGxwdHIpKTsK
LSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKHdlYlZpZXcuZ2V0KCkp
KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbCh3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldy5nZXQoKSkpKTsKLSAgICBnX2Fzc2VydCh3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYlZpZXcuZ2V0KCkpICE9IG1h
bmFnZXIpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh3
ZWJWaWV3LmdldCgpKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9jb250ZXh0X2lz
X2VwaGVtZXJhbCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldy5nZXQoKSkpKTsK
KyAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFfbWFu
YWdlcih3ZWJWaWV3LmdldCgpKSwgIT0sIG1hbmFnZXIpOwogCiAgICAgZ19zaWduYWxfY29ubmVj
dCh3ZWJWaWV3LmdldCgpLCAibG9hZC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhlcGhlbWVyYWxWaWV3
bG9hZENoYW5nZWQpLCB0ZXN0KTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkod2ViVmll
dy5nZXQoKSwgZ1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CkBAIC0yMjksNyAr
MjI5LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFcGhlbWVyYWwoV2ViVmlld1Rlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0
Y2gobWFuYWdlciwgV0VCS0lUX1dFQlNJVEVfREFUQV9ESVNLX0NBQ0hFLCBudWxscHRyLCBbXShH
T2JqZWN0KiBtYW5hZ2VyLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEp
IHsKICAgICAgICAgYXV0byogdGVzdCA9IHN0YXRpY19jYXN0PFdlYlZpZXdUZXN0Kj4odXNlckRh
dGEpOwotICAgICAgICBnX2Fzc2VydCghd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNo
X2ZpbmlzaChXRUJLSVRfV0VCU0lURV9EQVRBX01BTkFHRVIobWFuYWdlciksIHJlc3VsdCwgbnVs
bHB0cikpOworICAgICAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9mZXRjaF9maW5pc2goV0VCS0lUX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpLCByZXN1
bHQsIG51bGxwdHIpKTsKICAgICAgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7CiAgICAgfSwgdGVz
dCk7CiAgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOwpAQCAtMjM5LDcgKzIz
OSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Q3VzdG9tQ2hhcnNldChXZWJWaWV3VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0LT5sb2FkVVJJKGdTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi8iKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfZ2V0X2N1c3RvbV9jaGFyc2V0KHRlc3Qt
Pm1fd2ViVmlldykpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYl92aWV3X2dldF9jdXN0
b21fY2hhcnNldCh0ZXN0LT5tX3dlYlZpZXcpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2N1
c3RvbV9jaGFyc2V0KHRlc3QtPm1fd2ViVmlldywgInV0ZjgiKTsKICAgICAvLyBDaGFuZ2luZyB0
aGUgY2hhcnNldCByZWxvYWRzIHRoZSBwYWdlLCBzbyB3YWl0IHVudGlsIHJlbG9hZGVkLgogICAg
IHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwpAQCAtMjQ4LDE1ICsyNDgsMTUgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdDdXN0b21DaGFyc2V0KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogICAgIC8vIEdvIGJhY2sgdG8gdGhlIGRlZmF1bHQgY2hhcnNldCBhbmQgd2Fp
dCB1bnRpbCByZWxvYWRlZC4KICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2N1c3RvbV9jaGFyc2V0
KHRlc3QtPm1fd2ViVmlldywgbnVsbHB0cik7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlz
aGVkKCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19nZXRfY3VzdG9tX2NoYXJzZXQo
dGVzdC0+bV93ZWJWaWV3KSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2N1c3RvbV9jaGFyc2V0KHRlc3QtPm1fd2ViVmlldykpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld1NldHRpbmdzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAg
IFdlYktpdFNldHRpbmdzKiBkZWZhdWx0U2V0dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nl
dHRpbmdzKHRlc3QtPm1fd2ViVmlldyk7CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVk
V2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkZWZhdWx0U2V0dGluZ3MpKTsKLSAgICBnX2Fzc2Vy
dChkZWZhdWx0U2V0dGluZ3MpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX2phdmFzY3JpcHQoZGVmYXVsdFNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChk
ZWZhdWx0U2V0dGluZ3MpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9l
bmFibGVfamF2YXNjcmlwdChkZWZhdWx0U2V0dGluZ3MpKTsKIAogICAgIEdSZWZQdHI8V2ViS2l0
U2V0dGluZ3M+IG5ld1NldHRpbmdzID0gYWRvcHRHUmVmKHdlYmtpdF9zZXR0aW5nc19uZXcoKSk7
CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVD
VChuZXdTZXR0aW5ncy5nZXQoKSkpOwpAQCAtMjY0LDI0ICsyNjQsMjQgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdTZXR0aW5ncyhXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAg
ICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKHRlc3QtPm1fd2ViVmlldywgbmV3U2V0dGlu
Z3MuZ2V0KCkpOwogCiAgICAgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl92
aWV3X2dldF9zZXR0aW5ncyh0ZXN0LT5tX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KHNldHRpbmdz
ICE9IGRlZmF1bHRTZXR0aW5ncyk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9jbXBoZXgoc2V0dGlu
Z3MsICE9LCBkZWZhdWx0U2V0dGluZ3MpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0
aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MpKTsKIAogICAgIGF1dG8gd2ViVmll
dzIgPSBUZXN0OjphZG9wdFZpZXcoVGVzdDo6Y3JlYXRlV2ViVmlldygpKTsKICAgICB0ZXN0LT5h
c3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYlZpZXcyLmdl
dCgpKSk7CiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyhXRUJLSVRfV0VCX1ZJRVco
d2ViVmlldzIuZ2V0KCkpLCBzZXR0aW5ncyk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3
X2dldF9zZXR0aW5ncyhXRUJLSVRfV0VCX1ZJRVcod2ViVmlldzIuZ2V0KCkpKSA9PSBzZXR0aW5n
cyk7CisgICAgZ19hc3NlcnRfY21waGV4KHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MoV0VC
S0lUX1dFQl9WSUVXKHdlYlZpZXcyLmdldCgpKSksID09LCBzZXR0aW5ncyk7CiAKICAgICBHUmVm
UHRyPFdlYktpdFNldHRpbmdzPiBuZXdTZXR0aW5nczIgPSBhZG9wdEdSZWYod2Via2l0X3NldHRp
bmdzX25ldygpKTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlz
aGVzKEdfT0JKRUNUKG5ld1NldHRpbmdzMi5nZXQoKSkpOwogICAgIHdlYmtpdF93ZWJfdmlld19z
ZXRfc2V0dGluZ3MoV0VCS0lUX1dFQl9WSUVXKHdlYlZpZXcyLmdldCgpKSwgbmV3U2V0dGluZ3My
LmdldCgpKTsKICAgICBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MoV0VC
S0lUX1dFQl9WSUVXKHdlYlZpZXcyLmdldCgpKSk7Ci0gICAgZ19hc3NlcnQoc2V0dGluZ3MgPT0g
bmV3U2V0dGluZ3MyLmdldCgpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9qYXZhc2NyaXB0KHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfY21waGV4KHNldHRpbmdz
LCA9PSwgbmV3U2V0dGluZ3MyLmdldCgpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0
aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MpKTsKIAogICAgIGF1dG8gd2ViVmll
dzMgPSBUZXN0OjphZG9wdFZpZXcoVGVzdDo6Y3JlYXRlV2ViVmlldyhuZXdTZXR0aW5nczIuZ2V0
KCkpKTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdf
T0JKRUNUKHdlYlZpZXczLmdldCgpKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dl
dF9zZXR0aW5ncyhXRUJLSVRfV0VCX1ZJRVcod2ViVmlldzMuZ2V0KCkpKSA9PSBuZXdTZXR0aW5n
czIuZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRp
bmdzKFdFQktJVF9XRUJfVklFVyh3ZWJWaWV3My5nZXQoKSkpLCA9PSwgbmV3U2V0dGluZ3MyLmdl
dCgpKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdab29tTGV2ZWwoV2ViVmlld1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC0zMDMsOTggKzMwMyw5OCBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViVmlld1J1bkphdmFTY3JpcHQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiAKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50
aWxGaW5pc2hlZCgid2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdXZWJLaXRMaW5rJyku
dGl0bGU7IiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0
KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOwogICAgIHRlc3QtPmFz
c2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFz
Y3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwotICAgIGdfYXNz
ZXJ0KCFlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwog
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRS
ZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2
YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJXZWJLaXRHVEsrIFRpdGxlIik7CiAKICAgICBqYXZhc2Ny
aXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5k
b3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1dlYktpdExpbmsnKS5ocmVmOyIsICZlcnJvci5v
dXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRf
bm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0
ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRf
anNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCkpKTsKLSAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkp
OworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKICAgICB2YWx1ZVN0cmluZy5y
ZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVz
dWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgImh0dHA6
Ly93d3cud2Via2l0Z3RrLm9yZy8iKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5y
dW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIndpbmRvdy5kb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnV2ViS2l0TGluaycpLnRleHRDb250ZW50IiwgJmVycm9yLm91dFB0cigpKTsKLSAg
ICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFz
Y3JpcHRSZXN1bHQpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0Rmlu
aXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZh
c2NyaXB0UmVzdWx0KSkpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CisgICAgZ19hc3Nl
cnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwogICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdU
ZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBn
X2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiV2ViS2l0R1RLKyBXZWJzaXRl
Iik7CiAKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRV
bnRpbEZpbmlzaGVkKCJhID0gMjU7IiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChq
YXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQp
OwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpF
Q1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0
KSkpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3Io
ZXJyb3IuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KFdlYlZpZXdUZXN0OjpqYXZhc2Ny
aXB0UmVzdWx0VG9OdW1iZXIoamF2YXNjcmlwdFJlc3VsdCksID09LCAyNSk7CiAKICAgICBqYXZh
c2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJh
ID0gMi41OyIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3Vs
dCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICB0ZXN0LT5h
c3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZh
c2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCkpKTsKLSAgICBnX2Fz
c2VydCghZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsK
ICAgICBnX2Fzc2VydF9jbXBmbG9hdChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvTnVt
YmVyKGphdmFzY3JpcHRSZXN1bHQpLCA9PSwgMi41KTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQg
PSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImEgPSB0cnVlIiwgJmVy
cm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fz
c2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0
X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5n
ZXQoKSk7Ci0gICAgZ19hc3NlcnQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0Jvb2xl
YW4oamF2YXNjcmlwdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgp
KTsKKyAgICBnX2Fzc2VydF90cnVlKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9Cb29s
ZWFuKGphdmFzY3JpcHRSZXN1bHQpKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5y
dW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImEgPSBmYWxzZSIsICZlcnJvci5vdXRQ
dHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9u
bnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRX
aGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNf
dmFsdWUoamF2YXNjcmlwdFJlc3VsdCkpKTsKLSAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwot
ICAgIGdfYXNzZXJ0KCFXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihqYXZh
c2NyaXB0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAg
IGdfYXNzZXJ0X2ZhbHNlKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9Cb29sZWFuKGph
dmFzY3JpcHRSZXN1bHQpKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZh
U2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImEgPSBudWxsIiwgJmVycm9yLm91dFB0cigpKTsK
LSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGph
dmFzY3JpcHRSZXN1bHQpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0
RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShq
YXZhc2NyaXB0UmVzdWx0KSkpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7Ci0gICAgZ19h
c3NlcnQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRJc051bGwoamF2YXNjcmlwdFJlc3Vs
dCkpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF90
cnVlKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0SXNOdWxsKGphdmFzY3JpcHRSZXN1bHQp
KTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVu
dGlsRmluaXNoZWQoImZ1bmN0aW9uIEZvbygpIHsgYSA9IDI1OyB9IEZvbygpOyIsICZlcnJvci5v
dXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRf
bm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0
ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRf
anNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCkpKTsKLSAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkp
OwotICAgIGdfYXNzZXJ0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0SXNVbmRlZmluZWQo
amF2YXNjcmlwdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsK
KyAgICBnX2Fzc2VydF90cnVlKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0SXNVbmRlZmlu
ZWQoamF2YXNjcmlwdFJlc3VsdCkpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1
bkphdmFTY3JpcHRGcm9tR1Jlc291cmNlQW5kV2FpdFVudGlsRmluaXNoZWQoIi9vcmcvd2Via2l0
L2dsaWIvdGVzdHMvbGluay10aXRsZS5qcyIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3Nl
cnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVz
dWx0KTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdf
T0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJl
c3VsdCkpKTsKLSAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X25vX2Vy
cm9yKGVycm9yLmdldCgpKTsKICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2
YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRf
Y21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgIldlYktpdEdUSysgVGl0bGUiKTsKIAogICAg
IGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0RnJvbUdSZXNvdXJjZUFuZFdh
aXRVbnRpbEZpbmlzaGVkKCIvd3JvbmcvcGF0aC90by9yZXNvdXJjZS5qcyIsICZlcnJvci5vdXRQ
dHIoKSk7Ci0gICAgZ19hc3NlcnQoIWphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X251
bGwoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIEdf
UkVTT1VSQ0VfRVJST1IsIEdfUkVTT1VSQ0VfRVJST1JfTk9UX0ZPVU5EKTsKIAogICAgIGphdmFz
Y3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImZv
bygpOyIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoIWphdmFzY3JpcHRSZXN1bHQp
OworICAgIGdfYXNzZXJ0X251bGwoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnRfZXJy
b3IoZXJyb3IuZ2V0KCksIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SLCBXRUJLSVRfSkFWQVNDUklQ
VF9FUlJPUl9TQ1JJUFRfRkFJTEVEKTsKIAogICAgIC8vIFZhbHVlcyBvZiB0aGUgbWFpbiB3b3Js
ZCBhcmUgbm90IGF2YWlsYWJsZSBpbiB0aGUgaXNvbGF0ZWQgb25lLgogICAgIGphdmFzY3JpcHRS
ZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0SW5Xb3JsZEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJh
IiwgIldlYkV4dGVuc2lvblRlc3RTY3JpcHRXb3JsZCIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAg
Z19hc3NlcnQoIWphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X251bGwoamF2YXNjcmlw
dFJlc3VsdCk7CiAgICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJVF9KQVZBU0NS
SVBUX0VSUk9SLCBXRUJLSVRfSkFWQVNDUklQVF9FUlJPUl9TQ1JJUFRfRkFJTEVEKTsKIAogICAg
IGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0SW5Xb3JsZEFuZFdhaXRVbnRp
bEZpbmlzaGVkKCJhID0gNTAiLCAiV2ViRXh0ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIiwgJmVycm9y
Lm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2Vy
dF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVs
ZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dl
dF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQo
KSk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2Nt
cGZsb2F0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIoamF2YXNjcmlwdFJl
c3VsdCksID09LCA1MCk7CiAKICAgICAvLyBWYWx1ZXMgb2YgdGhlIGlzb2xhdGVkIHdvcmxkIGFy
ZSBub3QgYXZhaWxhYmxlIGluIHRoZSBub3JtYWwgb25lLgogICAgIGphdmFzY3JpcHRSZXN1bHQg
PSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImEiLCAmZXJyb3Iub3V0
UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25v
bm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVk
V2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pz
X3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsK
KyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAgICAgZ19hc3NlcnRfY21wZmxv
YXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihqYXZhc2NyaXB0UmVzdWx0
KSwgPT0sIDI1KTsKIAogICAgIC8vIFJ1bm5pbmcgYSBzY3JpcHQgaW4gYSB3b3JsZCB0aGF0IGRv
ZXNuJ3QgZXhpc3Qgc2hvdWxkIGZhaWwuCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1
bkphdmFTY3JpcHRJbldvcmxkQW5kV2FpdFVudGlsRmluaXNoZWQoImEiLCAiSW52YWxpZFNjcmlw
dFdvcmxkIiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydCghamF2YXNjcmlwdFJlc3Vs
dCk7CisgICAgZ19hc3NlcnRfbnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydF9l
cnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1IsIFdFQktJVF9KQVZBU0NS
SVBUX0VSUk9SX1NDUklQVF9GQUlMRUQpOwogfQogCkBAIC00NzksMjEgKzQ3OSwyMSBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViVmlld0Z1bGxTY3JlZW4oRnVsbFNjcmVlbkNsaWVudFRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NhblNob3dNSU1FVHlwZShX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICAvLyBTdXBwb3J0ZWQgTUlN
RSB0eXBlcy4KLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBl
KHRlc3QtPm1fd2ViVmlldywgInRleHQvaHRtbCIpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2Vi
X3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlKHRlc3QtPm1fd2ViVmlldywgInRleHQvcGxhaW4iKSk7
Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZSh0ZXN0LT5t
X3dlYlZpZXcsICJpbWFnZS9qcGVnIikpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92
aWV3X2Nhbl9zaG93X21pbWVfdHlwZSh0ZXN0LT5tX3dlYlZpZXcsICJ0ZXh0L2h0bWwiKSk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlKHRlc3Qt
Pm1fd2ViVmlldywgInRleHQvcGxhaW4iKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2Vi
X3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlKHRlc3QtPm1fd2ViVmlldywgImltYWdlL2pwZWciKSk7
CiAKICAgICAvLyBVbnN1cHBvcnRlZCBNSU1FIHR5cGVzLgotICAgIGdfYXNzZXJ0KCF3ZWJraXRf
d2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlKHRlc3QtPm1fd2ViVmlldywgInRleHQvdmNhcmQi
KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUodGVz
dC0+bV93ZWJWaWV3LCAiYXBwbGljYXRpb24vemlwIikpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRf
d2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlKHRlc3QtPm1fd2ViVmlldywgImFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbSIpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfY2Fu
X3Nob3dfbWltZV90eXBlKHRlc3QtPm1fd2ViVmlldywgInRleHQvdmNhcmQiKSk7CisgICAgZ19h
c3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZSh0ZXN0LT5tX3dl
YlZpZXcsICJhcHBsaWNhdGlvbi96aXAiKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dl
Yl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZSh0ZXN0LT5tX3dlYlZpZXcsICJhcHBsaWNhdGlvbi9v
Y3RldC1zdHJlYW0iKSk7CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAv
LyBQbHVnaW5zIGFyZSBvbmx5IHN1cHBvcnRlZCB3aGVuIGVuYWJsZWQuCiAgICAgd2Via2l0X3dl
Yl9jb250ZXh0X3NldF9hZGRpdGlvbmFsX3BsdWdpbnNfZGlyZWN0b3J5KHdlYmtpdF93ZWJfdmll
d19nZXRfY29udGV4dCh0ZXN0LT5tX3dlYlZpZXcpLCBXRUJLSVRfVEVTVF9QTFVHSU5fRElSKTsK
LSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlKHRlc3QtPm1f
d2ViVmlldywgImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlKHRlc3QtPm1fd2Vi
VmlldywgImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiKSk7CiAgICAgd2Via2l0
X3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucyh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdz
KHRlc3QtPm1fd2ViVmlldyksIEZBTFNFKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3
X2Nhbl9zaG93X21pbWVfdHlwZSh0ZXN0LT5tX3dlYlZpZXcsICJhcHBsaWNhdGlvbi94LXdlYmtp
dC10ZXN0LW5ldHNjYXBlIikpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19j
YW5fc2hvd19taW1lX3R5cGUodGVzdC0+bV93ZWJWaWV3LCAiYXBwbGljYXRpb24veC13ZWJraXQt
dGVzdC1uZXRzY2FwZSIpKTsKICNlbmRpZgogfQogCkBAIC01OTEsNyArNTkxLDcgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdTdWJtaXRGb3JtKEZvcm1DbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogCiAgICAgdGVzdC0+c3VibWl0Rm9ybUF0UG9zaXRpb24oNSwgNSk7CiAgICAgR0hh
c2hUYWJsZSogdGFibGVWYWx1ZXMgPSB0ZXN0LT5nZXRUZXh0RmllbGRzQXNIYXNoVGFibGUoKTsK
LSAgICBnX2Fzc2VydCh0YWJsZVZhbHVlcyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbCh0YWJsZVZh
bHVlcyk7CiAgICAgZ19hc3NlcnRfY21wdWludChnX2hhc2hfdGFibGVfc2l6ZSh0YWJsZVZhbHVl
cyksID09LCA0KTsKICAgICBnX2Fzc2VydF9jbXBzdHIoc3RhdGljX2Nhc3Q8Y2hhcio+KGdfaGFz
aF90YWJsZV9sb29rdXAodGFibGVWYWx1ZXMsICJ0ZXh0MSIpKSwgPT0sICJ2YWx1ZTEiKTsKICAg
ICBnX2Fzc2VydF9jbXBzdHIoc3RhdGljX2Nhc3Q8Y2hhcio+KGdfaGFzaF90YWJsZV9sb29rdXAo
dGFibGVWYWx1ZXMsICIiKSksID09LCAidmFsdWUzIik7CkBAIC01OTksNyArNTk5LDcgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdTdWJtaXRGb3JtKEZvcm1DbGllbnRUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcHN0cihzdGF0aWNfY2FzdDxjaGFyKj4oZ19oYXNo
X3RhYmxlX2xvb2t1cCh0YWJsZVZhbHVlcywgInBhc3N3b3JkIikpLCA9PSwgInNlY3JldCIpOwog
CiAgICAgR1B0ckFycmF5KiBuYW1lcyA9IHRlc3QtPmdldFRleHRGaWVsZE5hbWVzKCk7Ci0gICAg
Z19hc3NlcnQobmFtZXMpOworICAgIGdfYXNzZXJ0X25vbm51bGwobmFtZXMpOwogICAgIGdfYXNz
ZXJ0X2NtcHVpbnQobmFtZXMtPmxlbiwgPT0sIDUpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihzdGF0
aWNfY2FzdDxjaGFyKj4obmFtZXMtPnBkYXRhWzBdKSwgPT0sICJ0ZXh0MSIpOwogICAgIGdfYXNz
ZXJ0X2NtcHN0cihzdGF0aWNfY2FzdDxjaGFyKj4obmFtZXMtPnBkYXRhWzFdKSwgPT0sICJ0ZXh0
MiIpOwpAQCAtNjA4LDcgKzYwOCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3U3VibWl0Rm9y
bShGb3JtQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBz
dHIoc3RhdGljX2Nhc3Q8Y2hhcio+KG5hbWVzLT5wZGF0YVs0XSksID09LCAicGFzc3dvcmQiKTsK
IAogICAgIEdQdHJBcnJheSogdmFsdWVzID0gdGVzdC0+Z2V0VGV4dEZpZWxkVmFsdWVzKCk7Ci0g
ICAgZ19hc3NlcnQodmFsdWVzKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHZhbHVlcyk7CiAgICAg
Z19hc3NlcnRfY21wdWludCh2YWx1ZXMtPmxlbiwgPT0sIDUpOwogICAgIGdfYXNzZXJ0X2NtcHN0
cihzdGF0aWNfY2FzdDxjaGFyKj4odmFsdWVzLT5wZGF0YVswXSksID09LCAidmFsdWUxIik7CiAg
ICAgZ19hc3NlcnRfY21wc3RyKHN0YXRpY19jYXN0PGNoYXIqPih2YWx1ZXMtPnBkYXRhWzFdKSwg
PT0sICJ2YWx1ZTIiKTsKQEAgLTY0Myw4ICs2NDMsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIHRlc3QtPm1faW5wdXRTdHJl
YW0gPSBhZG9wdEdSZWYod2Via2l0X3dlYl92aWV3X3NhdmVfZmluaXNoKHRlc3QtPm1fd2ViVmll
dywgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKLSAgICAgICAgZ19hc3NlcnQoR19JU19JTlBV
VF9TVFJFQU0odGVzdC0+bV9pbnB1dFN0cmVhbS5nZXQoKSkpOwotICAgICAgICBnX2Fzc2VydCgh
ZXJyb3IpOworICAgICAgICBnX2Fzc2VydF90cnVlKEdfSVNfSU5QVVRfU1RSRUFNKHRlc3QtPm1f
aW5wdXRTdHJlYW0uZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0
KCkpOwogCiAgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOwogICAgIH0KQEAgLTY1Miw4ICs2
NTIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgd2ViVmlld1NhdmVkVG9GaWxlQ2FsbGJh
Y2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgU2F2ZVdlYlZpZXdUZXN0
KiB0ZXN0KQogICAgIHsKICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAg
ICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfc2F2ZV90b19maWxlX2ZpbmlzaCh0ZXN0LT5t
X3dlYlZpZXcsIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KCFl
cnJvcik7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X3NhdmVfdG9fZmls
ZV9maW5pc2godGVzdC0+bV93ZWJWaWV3LCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOworICAg
ICAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAKICAgICAgICAgdGVzdC0+cXVp
dE1haW5Mb29wKCk7CiAgICAgfQpAQCAtNzA1LDcgKzcwNSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3U2F2ZShTYXZlV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ3Nz
aXplIHJlYWRCeXRlcyA9IDA7CiAgICAgZ3NzaXplIHRvdGFsQnl0ZXNGcm9tU3RyZWFtID0gMDsK
ICAgICB3aGlsZSAoKHJlYWRCeXRlcyA9IGdfaW5wdXRfc3RyZWFtX3JlYWQodGVzdC0+bV9pbnB1
dFN0cmVhbS5nZXQoKSwgJmJ1ZmZlciwgNTEyLCAwLCAmZXJyb3Iub3V0UHRyKCkpKSkgewotICAg
ICAgICBnX2Fzc2VydCghZXJyb3IpOworICAgICAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5n
ZXQoKSk7CiAgICAgICAgIHRvdGFsQnl0ZXNGcm9tU3RyZWFtICs9IHJlYWRCeXRlczsKICAgICB9
CiAKQEAgLTczNCw0NSArNzM0LDQ1IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UGFnZVZpc2li
aWxpdHkoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICBHVW5pcXVlT3V0
UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlw
dFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1l
bnQudmlzaWJpbGl0eVN0YXRlOyIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2
YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2Vy
dF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9y
LmdldCgpKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdUZXN0Ojpq
YXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2Vy
dF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAicHJlcmVuZGVyIik7CiAKICAgICBqYXZh
c2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJk
b2N1bWVudC5oaWRkZW47IiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2Ny
aXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KFdl
YlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9Cb29sZWFuKGphdmFzY3JpcHRSZXN1bHQpKTsK
KyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25v
X2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF90cnVlKFdlYlZpZXdUZXN0OjpqYXZh
c2NyaXB0UmVzdWx0VG9Cb29sZWFuKGphdmFzY3JpcHRSZXN1bHQpKTsKIAogICAgIC8vIFNob3cg
dGhlIHBhZ2UuIFRoZSB2aXNpYmlsaXR5IHNob3VsZCBiZSB1cGRhdGVkIHRvICd2aXNpYmxlJy4K
ICAgICB0ZXN0LT5zaG93SW5XaW5kb3coKTsKICAgICB0ZXN0LT53YWl0VW50aWxUaXRsZUNoYW5n
ZWQoKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2Fp
dFVudGlsRmluaXNoZWQoImRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZTsiLCAmZXJyb3Iub3V0UHRy
KCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJv
ci5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBn
X2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAgICAgdmFsdWVTdHJpbmcucmVzZXQoV2Vi
Vmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwog
ICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJ2aXNpYmxlIik7CiAK
ICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZp
bmlzaGVkKCJkb2N1bWVudC5oaWRkZW47IiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2Vy
dChqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwotICAgIGdf
YXNzZXJ0KCFXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihqYXZhc2NyaXB0
UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBn
X2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfZmFsc2UoV2ViVmll
d1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0Jvb2xlYW4oamF2YXNjcmlwdFJlc3VsdCkpOwogCiAg
ICAgLy8gSGlkZSB0aGUgcGFnZS4gVGhlIHZpc2liaWxpdHkgc2hvdWxkIGJlIHVwZGF0ZWQgdG8g
J2hpZGRlbicuCiAgICAgdGVzdC0+aGlkZVZpZXcoKTsKICAgICB0ZXN0LT53YWl0VW50aWxUaXRs
ZUNoYW5nZWQoKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0
QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZTsiLCAmZXJyb3Iu
b3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0
KCFlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsK
KyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAgICAgdmFsdWVTdHJpbmcucmVz
ZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3Vs
dCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJoaWRkZW4i
KTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVu
dGlsRmluaXNoZWQoImRvY3VtZW50LmhpZGRlbjsiLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdf
YXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7Ci0g
ICAgZ19hc3NlcnQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0Jvb2xlYW4oamF2YXNj
cmlwdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7Cisg
ICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X3RydWUoV2Vi
Vmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0Jvb2xlYW4oamF2YXNjcmlwdFJlc3VsdCkpOwog
fQogCiAjaWYgUExBVEZPUk0oR1RLKQpAQCAtNzg0LDcgKzc4NCw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgdGVzdC0+bV9z
dXJmYWNlID0gd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2god2ViX3ZpZXcsIHJl
cywgJmVycm9yLm91dFB0cigpKTsKLSAgICAgICAgZ19hc3NlcnQoIXRlc3QtPm1fc3VyZmFjZSk7
CisgICAgICAgIGdfYXNzZXJ0X251bGwodGVzdC0+bV9zdXJmYWNlKTsKICAgICAgICAgZ19hc3Nl
cnRfZXJyb3IoZXJyb3IuZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVEKTsK
ICAgICAgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7CiAgICAgfQpAQCAtODExLDExICs4MTEsMTEg
QEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdTbmFwc2hvdChTbmFwc2hvdFdlYlZpZXdUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogCiAgICAgLy8gV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJ
QkxFIHJldHVybnMgYSBudWxsIHN1cmZhY2Ugd2hlbiB0aGUgdmlldyBpcyBub3QgdmlzaWJsZS4K
ICAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UxID0gdGVzdC0+Z2V0U25hcHNob3RBbmRXYWl0
VW50aWxSZWFkeShXRUJLSVRfU05BUFNIT1RfUkVHSU9OX1ZJU0lCTEUsIFdFQktJVF9TTkFQU0hP
VF9PUFRJT05TX05PTkUpOwotICAgIGdfYXNzZXJ0KCFzdXJmYWNlMSk7CisgICAgZ19hc3NlcnRf
bnVsbChzdXJmYWNlMSk7CiAKICAgICAvLyBXRUJLSVRfU05BUFNIT1RfUkVHSU9OX0ZVTExfRE9D
VU1FTlQgd29ya3MgZXZlbiBpZiB0aGUgd2luZG93IGlzIG5vdCB2aXNpYmxlLgogICAgIHN1cmZh
Y2UxID0gdGVzdC0+Z2V0U25hcHNob3RBbmRXYWl0VW50aWxSZWFkeShXRUJLSVRfU05BUFNIT1Rf
UkVHSU9OX0ZVTExfRE9DVU1FTlQsIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX05PTkUpOwotICAg
IGdfYXNzZXJ0KHN1cmZhY2UxKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHN1cmZhY2UxKTsKICAg
ICBnX2Fzc2VydF9jbXB1aW50KGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoc3VyZmFjZTEpLCA9PSwg
Q0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZTEpLCA9PSwgMjAwKTsKICAgICBnX2Fzc2VydF9j
bXBpbnQoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UxKSwgPT0sIDEwMCk7
CkBAIC04MjMsNyArODIzLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdTbmFwc2hvdChTbmFw
c2hvdFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIC8vIFNob3cgdGhlIFdl
YlZpZXcgaW4gYSBwb3B1cCB3aWRvdyBvZiA1MHg1MCBhbmQgdHJ5IGFnYWluIHdpdGggV0VCS0lU
X1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFLgogICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRV
bnRpbE1hcHBlZChHVEtfV0lORE9XX1BPUFVQLCA1MCwgNTApOwogICAgIHN1cmZhY2UxID0gY2Fp
cm9fc3VyZmFjZV9yZWZlcmVuY2UodGVzdC0+Z2V0U25hcHNob3RBbmRXYWl0VW50aWxSZWFkeShX
RUJLSVRfU05BUFNIT1RfUkVHSU9OX1ZJU0lCTEUsIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX05P
TkUpKTsKLSAgICBnX2Fzc2VydChzdXJmYWNlMSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChzdXJm
YWNlMSk7CiAgICAgZ19hc3NlcnRfY21wdWludChjYWlyb19zdXJmYWNlX2dldF90eXBlKHN1cmZh
Y2UxKSwgPT0sIENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSk7CiAgICAgZ19hc3NlcnRfY21waW50
KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UxKSwgPT0sIDUwKTsKICAgICBn
X2Fzc2VydF9jbXBpbnQoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UxKSwg
PT0sIDUwKTsKQEAgLTgzMSw4ICs4MzEsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1NuYXBz
aG90KFNuYXBzaG90V2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgLy8gU2Vs
ZWN0IGFsbCB0ZXh0IGluIHRoZSBXZWJWaWV3LCByZXF1ZXN0IGEgc25hcHNob3QgaWdub3Jpbmcg
c2VsZWN0aW9uLgogICAgIHRlc3QtPnNlbGVjdEFsbCgpOwogICAgIGNhaXJvX3N1cmZhY2VfdCog
c3VyZmFjZTIgPSB0ZXN0LT5nZXRTbmFwc2hvdEFuZFdhaXRVbnRpbFJlYWR5KFdFQktJVF9TTkFQ
U0hPVF9SRUdJT05fVklTSUJMRSwgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORSk7Ci0gICAg
Z19hc3NlcnQoc3VyZmFjZTIpOwotICAgIGdfYXNzZXJ0KFRlc3Q6OmNhaXJvU3VyZmFjZXNFcXVh
bChzdXJmYWNlMSwgc3VyZmFjZTIpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHN1cmZhY2UyKTsK
KyAgICBnX2Fzc2VydF90cnVlKFRlc3Q6OmNhaXJvU3VyZmFjZXNFcXVhbChzdXJmYWNlMSwgc3Vy
ZmFjZTIpKTsKIAogICAgIC8vIFJlcXVlc3QgYSBuZXcgc25hcHNob3QsIGluY2x1ZGluZyB0aGUg
c2VsZWN0aW9uIHRoaXMgdGltZS4gVGhlIHNpemUgc2hvdWxkIGJlIHRoZSBzYW1lIGJ1dCB0aGUg
cmVzdWx0CiAgICAgLy8gbXVzdCBiZSBkaWZmZXJlbnQgdG8gdGhlIG9uZSBwcmV2aW91c2x5IG9i
dGFpbmVkLgpAQCAtODQwLDE4ICs4NDAsMTggQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdTbmFw
c2hvdChTbmFwc2hvdFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNz
ZXJ0X2NtcHVpbnQoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShzdXJmYWNlMiksID09LCBDQUlST19T
VVJGQUNFX1RZUEVfSU1BR0UpOwogICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF93aWR0aChzdXJmYWNlMSksID09LCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0
aChzdXJmYWNlMikpOwogICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9oZWlnaHQoc3VyZmFjZTEpLCA9PSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1
cmZhY2UyKSk7Ci0gICAgZ19hc3NlcnQoIVRlc3Q6OmNhaXJvU3VyZmFjZXNFcXVhbChzdXJmYWNl
MSwgc3VyZmFjZTIpKTsKKyAgICBnX2Fzc2VydF9mYWxzZShUZXN0OjpjYWlyb1N1cmZhY2VzRXF1
YWwoc3VyZmFjZTEsIHN1cmZhY2UyKSk7CiAKICAgICAvLyBHZXQgYSBzbnBhc2hvdCB3aXRoIGEg
dHJhbnNwYXJlbnQgYmFja2dyb3VuZCwgdGhlIHJlc3VsdCBtdXN0IGJlIGRpZmZlcmVudC4KICAg
ICBzdXJmYWNlMiA9IHRlc3QtPmdldFNuYXBzaG90QW5kV2FpdFVudGlsUmVhZHkoV0VCS0lUX1NO
QVBTSE9UX1JFR0lPTl9WSVNJQkxFLCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19UUkFOU1BBUkVO
VF9CQUNLR1JPVU5EKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KGNhaXJvX3N1cmZhY2VfZ2V0X3R5
cGUoc3VyZmFjZTIpLCA9PSwgQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKTsKICAgICBnX2Fzc2Vy
dF9jbXBpbnQoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZTEpLCA9PSwgY2Fp
cm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZTIpKTsKICAgICBnX2Fzc2VydF9jbXBp
bnQoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UxKSwgPT0sIGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlMikpOwotICAgIGdfYXNzZXJ0KCFUZXN0Ojpj
YWlyb1N1cmZhY2VzRXF1YWwoc3VyZmFjZTEsIHN1cmZhY2UyKSk7CisgICAgZ19hc3NlcnRfZmFs
c2UoVGVzdDo6Y2Fpcm9TdXJmYWNlc0VxdWFsKHN1cmZhY2UxLCBzdXJmYWNlMikpOwogICAgIGNh
aXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlMSk7CiAKICAgICAvLyBUZXN0IHRoYXQgY2FuY2Vs
bGF0aW9uIHdvcmtzLgotICAgIGdfYXNzZXJ0KHRlc3QtPmdldFNuYXBzaG90QW5kQ2FuY2VsKCkp
OworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+Z2V0U25hcHNob3RBbmRDYW5jZWwoKSk7CiB9CiAj
ZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCkBAIC04ODIsOCArODgyLDggQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIGdib29sZWFuIHBlcm1pc3Npb25SZXF1ZXN0Q2FsbGJhY2soV2ViS2l0V2ViVmll
dyosIFdlYktpdFBlcm1pc3Npb25SZXF1ZXN0ICpyZXF1ZXN0LCBOb3RpZmljYXRpb25XZWJWaWV3
VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19OT1RJRklDQVRJ
T05fUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKLSAgICAgICAgZ19hc3NlcnQodGVzdC0+
bV9pc0V4cGVjdGluZ1Blcm1pc3Npb25SZXF1ZXN0KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShX
RUJLSVRfSVNfTk9USUZJQ0FUSU9OX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSk7CisgICAg
ICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9pc0V4cGVjdGluZ1Blcm1pc3Npb25SZXF1ZXN0KTsK
ICAgICAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09C
SkVDVChyZXF1ZXN0KSk7CiAKICAgICAgICAgdGVzdC0+bV9ldmVudCA9IFBlcm1pc3Npb247CkBA
IC04OTcsNyArODk3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGdib29sZWFuIG5vdGlmaWNh
dGlvbkNsb3NlZENhbGxiYWNrKFdlYktpdE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBOb3Rp
ZmljYXRpb25XZWJWaWV3VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KHRlc3Qt
Pm1fbm90aWZpY2F0aW9uID09IG5vdGlmaWNhdGlvbik7CisgICAgICAgIGdfYXNzZXJ0X2NtcGhl
eCh0ZXN0LT5tX25vdGlmaWNhdGlvbiwgPT0sIG5vdGlmaWNhdGlvbik7CiAgICAgICAgIHRlc3Qt
Pm1fbm90aWZpY2F0aW9uID0gbnVsbHB0cjsKICAgICAgICAgdGVzdC0+bV9ldmVudCA9IENsb3Nl
ZDsKICAgICAgICAgaWYgKGdfbWFpbl9sb29wX2lzX3J1bm5pbmcodGVzdC0+bV9tYWluTG9vcCkp
CkBAIC05MDcsMTQgKzkwNywxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4gbm90
aWZpY2F0aW9uQ2xpY2tlZENhbGxiYWNrKFdlYktpdE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9u
LCBOb3RpZmljYXRpb25XZWJWaWV3VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0
KHRlc3QtPm1fbm90aWZpY2F0aW9uID09IG5vdGlmaWNhdGlvbik7CisgICAgICAgIGdfYXNzZXJ0
X2NtcGhleCh0ZXN0LT5tX25vdGlmaWNhdGlvbiwgPT0sIG5vdGlmaWNhdGlvbik7CiAgICAgICAg
IHRlc3QtPm1fZXZlbnQgPSBDbGlja2VkOwogICAgICAgICByZXR1cm4gVFJVRTsKICAgICB9CiAK
ICAgICBzdGF0aWMgZ2Jvb2xlYW4gc2hvd05vdGlmaWNhdGlvbkNhbGxiYWNrKFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXROb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgTm90aWZpY2F0aW9uV2ViVmll
d1Rlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBnX2Fzc2VydCghdGVzdC0+bV9ub3RpZmljYXRp
b24pOworICAgICAgICBnX2Fzc2VydF9udWxsKHRlc3QtPm1fbm90aWZpY2F0aW9uKTsKICAgICAg
ICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChu
b3RpZmljYXRpb24pKTsKICAgICAgICAgdGVzdC0+bV9ub3RpZmljYXRpb24gPSBub3RpZmljYXRp
b247CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qobm90aWZpY2F0aW9uLCAiY2xvc2VkIiwgR19D
QUxMQkFDSyhub3RpZmljYXRpb25DbG9zZWRDYWxsYmFjayksIHRlc3QpOwpAQCAtOTU1LDcgKzk1
NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1Blcm1pc3Npb24oKQogICAgIHsKICAgICAgICAg
YXV0byogcmVzdWx0ID0gcnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJOb3RpZmlj
YXRpb24ucGVybWlzc2lvbjsiLCBudWxscHRyKTsKLSAgICAgICAgZ19hc3NlcnQocmVzdWx0KTsK
KyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChyZXN1bHQpOwogICAgICAgICBHVW5pcXVlUHRyPGNo
YXI+IHZhbHVlKGphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcocmVzdWx0KSk7CiAgICAgICAgIHJl
dHVybiAhZ19zdHJjbXAwKHZhbHVlLmdldCgpLCAiZ3JhbnRlZCIpOwogICAgIH0KQEAgLTk5Myw3
ICs5OTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZXZlbnQgPSBOb25lOwogICAgICAgICBydW5K
YXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIm4ub25jbGljayA9IGZ1bmN0aW9uKCkgeyB3
aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ub3RpZmljYXRpb25zLnBvc3RNZXNzYWdlKCdj
bGlja2VkJyk7IH0iLCBudWxscHRyKTsKICAgICAgICAgd2Via2l0X25vdGlmaWNhdGlvbl9jbGlj
a2VkKG1fbm90aWZpY2F0aW9uKTsKLSAgICAgICAgZ19hc3NlcnQobV9ldmVudCA9PSBDbGlja2Vk
KTsKKyAgICAgICAgZ19hc3NlcnRfY21waW50KG1fZXZlbnQsID09LCBDbGlja2VkKTsKICAgICAg
ICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogICAgIH0KIApAQCAtMTAwNiwxMSArMTAw
NiwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsb3NlTm90aWZpY2F0aW9uQW5kV2FpdFVudGls
T25DbG9zZWQoKQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQobV9ub3RpZmljYXRpb24pOworICAg
ICAgICBnX2Fzc2VydF9ub25udWxsKG1fbm90aWZpY2F0aW9uKTsKICAgICAgICAgbV9ldmVudCA9
IE5vbmU7CiAgICAgICAgIHJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgibi5vbmNs
b3NlID0gZnVuY3Rpb24oKSB7IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLm5vdGlmaWNh
dGlvbnMucG9zdE1lc3NhZ2UoJ2Nsb3NlZCcpOyB9IiwgbnVsbHB0cik7CiAgICAgICAgIHdlYmtp
dF9ub3RpZmljYXRpb25fY2xvc2UobV9ub3RpZmljYXRpb24pOwotICAgICAgICBnX2Fzc2VydCht
X2V2ZW50ID09IENsb3NlZCk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGludChtX2V2ZW50LCA9PSwg
Q2xvc2VkKTsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogICAgIH0KIApA
QCAtMTAyNyw0MSArMTAyNyw0MSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05vdGlmaWNhdGlv
bihOb3RpZmljYXRpb25XZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcgogICAgIC8vIE5v
dGlmaWNhdGlvbnMgZG9uJ3Qgd29yayB3aXRoIGxvY2FsIG9yIHNwZWNpYWwgc2NoZW1lcy4KICAg
ICB0ZXN0LT5sb2FkVVJJKGdTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOwogICAg
IHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5oYXNQ
ZXJtaXNzaW9uKCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmhhc1Blcm1pc3Npb24oKSk7
CiAKICAgICB0ZXN0LT5yZXF1ZXN0UGVybWlzc2lvbkFuZFdhaXRVbnRpbEdpdmVuKCk7Ci0gICAg
Z19hc3NlcnQodGVzdC0+bV9ldmVudCA9PSBOb3RpZmljYXRpb25XZWJWaWV3VGVzdDo6UGVybWlz
c2lvbik7Ci0gICAgZ19hc3NlcnQodGVzdC0+aGFzUGVybWlzc2lvbigpKTsKKyAgICBnX2Fzc2Vy
dF9jbXBpbnQodGVzdC0+bV9ldmVudCwgPT0sIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0OjpQZXJt
aXNzaW9uKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmhhc1Blcm1pc3Npb24oKSk7CiAKICAg
ICBzdGF0aWMgY29uc3QgY2hhciogdGl0bGUgPSAiVGhpcyBpcyBhIG5vdGlmaWNhdGlvbiI7CiAg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGJvZHkgPSAiVGhpcyBpcyB0aGUgYm9keS4iOwogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiB0YWcgPSAiVGhpcyBpcyB0aGUgdGFnLiI7CiAgICAgdGVzdC0+cmVx
dWVzdE5vdGlmaWNhdGlvbkFuZFdhaXRVbnRpbFNob3duKHRpdGxlLCBib2R5LCB0YWcpOwogCi0g
ICAgZ19hc3NlcnQodGVzdC0+bV9ldmVudCA9PSBOb3RpZmljYXRpb25XZWJWaWV3VGVzdDo6U2hv
d24pOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fbm90aWZpY2F0aW9uKTsKKyAgICBnX2Fzc2VydF9j
bXBpbnQodGVzdC0+bV9ldmVudCwgPT0sIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0OjpTaG93bik7
CisgICAgZ19hc3NlcnRfbm9ubnVsbCh0ZXN0LT5tX25vdGlmaWNhdGlvbik7CiAgICAgZ19hc3Nl
cnRfY21wc3RyKHdlYmtpdF9ub3RpZmljYXRpb25fZ2V0X3RpdGxlKHRlc3QtPm1fbm90aWZpY2F0
aW9uKSwgPT0sIHRpdGxlKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X25vdGlmaWNhdGlv
bl9nZXRfYm9keSh0ZXN0LT5tX25vdGlmaWNhdGlvbiksID09LCBib2R5KTsKICAgICBnX2Fzc2Vy
dF9jbXBzdHIod2Via2l0X25vdGlmaWNhdGlvbl9nZXRfdGFnKHRlc3QtPm1fbm90aWZpY2F0aW9u
KSwgPT0sIHRhZyk7CiAKICAgICB0ZXN0LT5jbGlja05vdGlmaWNhdGlvbkFuZFdhaXRVbnRpbENs
aWNrZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2V2ZW50ID09IE5vdGlmaWNhdGlvbldlYlZp
ZXdUZXN0OjpPbkNsaWNrZWQpOworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2V2ZW50LCA9
PSwgTm90aWZpY2F0aW9uV2ViVmlld1Rlc3Q6Ok9uQ2xpY2tlZCk7CiAKICAgICB0ZXN0LT5jbG9z
ZU5vdGlmaWNhdGlvbkFuZFdhaXRVbnRpbENsb3NlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1f
ZXZlbnQgPT0gTm90aWZpY2F0aW9uV2ViVmlld1Rlc3Q6OkNsb3NlZCk7CisgICAgZ19hc3NlcnRf
Y21waW50KHRlc3QtPm1fZXZlbnQsID09LCBOb3RpZmljYXRpb25XZWJWaWV3VGVzdDo6Q2xvc2Vk
KTsKIAogICAgIHRlc3QtPnJlcXVlc3ROb3RpZmljYXRpb25BbmRXYWl0VW50aWxTaG93bih0aXRs
ZSwgYm9keSk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9ldmVudCA9PSBOb3RpZmljYXRpb25XZWJW
aWV3VGVzdDo6U2hvd24pOworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2V2ZW50LCA9PSwg
Tm90aWZpY2F0aW9uV2ViVmlld1Rlc3Q6OlNob3duKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Vi
a2l0X25vdGlmaWNhdGlvbl9nZXRfdGFnKHRlc3QtPm1fbm90aWZpY2F0aW9uKSwgPT0sIG51bGxw
dHIpOwogCiAgICAgdGVzdC0+Y2xvc2VOb3RpZmljYXRpb25BbmRXYWl0VW50aWxPbkNsb3NlZCgp
OwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXZlbnQgPT0gTm90aWZpY2F0aW9uV2ViVmlld1Rlc3Q6
Ok9uQ2xvc2VkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9ldmVudCwgPT0sIE5vdGlm
aWNhdGlvbldlYlZpZXdUZXN0OjpPbkNsb3NlZCk7CiAKICAgICAvLyBUaGUgZmlyc3Qgbm90aWZp
Y2F0aW9uIHNob3VsZCBiZSBjbG9zZWQgYXV0b21hdGljYWxseSBiZWNhdXNlIHRoZSB0YWcgaXMK
ICAgICAvLyB0aGUgc2FtZS4gSXQgd2lsbCBjcmFzaCBpbiBzaG93Tm90aWZpY2F0aW9uQ2FsbGJh
Y2sgb24gZmFpbHVyZS4KICAgICB0ZXN0LT5yZXF1ZXN0Tm90aWZpY2F0aW9uQW5kV2FpdFVudGls
U2hvd24odGl0bGUsIGJvZHksIHRhZyk7CiAgICAgdGVzdC0+cmVxdWVzdE5vdGlmaWNhdGlvbkFu
ZFdhaXRVbnRpbFNob3duKHRpdGxlLCBib2R5LCB0YWcpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1f
ZXZlbnQgPT0gTm90aWZpY2F0aW9uV2ViVmlld1Rlc3Q6OlNob3duKTsKKyAgICBnX2Fzc2VydF9j
bXBpbnQodGVzdC0+bV9ldmVudCwgPT0sIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0OjpTaG93bik7
CiB9CiAKIHN0YXRpYyB2b2lkIHNldEluaXRpYWxOb3RpZmljYXRpb25QZXJtaXNzaW9uc0FsbG93
ZWRDYWxsYmFjayhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBOb3RpZmljYXRpb25XZWJWaWV3
VGVzdCogdGVzdCkKQEAgLTEwODcsMTAgKzEwODcsMTAgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZp
ZXdOb3RpZmljYXRpb25Jbml0aWFsUGVybWlzc2lvbkFsbG93ZWQoTm90aWZpY2F0aW9uV2ViVmll
d1QKIAogICAgIHRlc3QtPmxvYWRVUkkoZ1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEo
KSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQodGVz
dC0+aGFzUGVybWlzc2lvbigpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmhhc1Blcm1pc3Np
b24oKSk7CiAKICAgICB0ZXN0LT5yZXF1ZXN0Tm90aWZpY2F0aW9uQW5kV2FpdFVudGlsU2hvd24o
IlRoaXMgaXMgYSBub3RpZmljYXRpb24iLCAiVGhpcyBpcyB0aGUgYm9keS4iKTsKLSAgICBnX2Fz
c2VydCh0ZXN0LT5tX2V2ZW50ID09IE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0OjpTaG93bik7Cisg
ICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fZXZlbnQsID09LCBOb3RpZmljYXRpb25XZWJWaWV3
VGVzdDo6U2hvd24pOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05vdGlmaWNhdGlvbklu
aXRpYWxQZXJtaXNzaW9uRGlzYWxsb3dlZChOb3RpZmljYXRpb25XZWJWaWV3VGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKQEAgLTExMDAsNyArMTEwMCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3Tm90aWZpY2F0aW9uSW5pdGlhbFBlcm1pc3Npb25EaXNhbGxvd2VkKE5vdGlmaWNhdGlvbldl
YlZpCiAKICAgICB0ZXN0LT5sb2FkVVJJKGdTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRh
KCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KCF0
ZXN0LT5oYXNQZXJtaXNzaW9uKCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmhhc1Blcm1p
c3Npb24oKSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMpCiAKQEAgLTExMTMs
MjQgKzExMTMsMjQgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdJc1BsYXlpbmdBdWRpbyhJc1Bs
YXlpbmdBdWRpb1dlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2kKICNlbmRpZgogCiAgICAgLy8g
SW5pdGlhbGx5LCB3ZWIgdmlld3Mgc2hvdWxkIGFsd2F5cyByZXBvcnQgbm8gYXVkaW8gYmVpbmcg
cGxheWVkLgotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfaXNfcGxheWluZ19hdWRpbyh0
ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfaXNf
cGxheWluZ19hdWRpbyh0ZXN0LT5tX3dlYlZpZXcpKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4g
cmVzb3VyY2VQYXRoKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKFRlc3Q6
OldlYktpdDJSZXNvdXJjZXMpLmRhdGEoKSwgImZpbGUtd2l0aC12aWRlby5odG1sIiwgbnVsbHB0
cikpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3VyY2VVUkwoZ19maWxlbmFtZV90b191cmko
cmVzb3VyY2VQYXRoLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAgd2Via2l0X3dlYl92
aWV3X2xvYWRfdXJpKHRlc3QtPm1fd2ViVmlldywgcmVzb3VyY2VVUkwuZ2V0KCkpOwogICAgIHRl
c3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3Zp
ZXdfaXNfcGxheWluZ19hdWRpbyh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF9mYWxz
ZSh3ZWJraXRfd2ViX3ZpZXdfaXNfcGxheWluZ19hdWRpbyh0ZXN0LT5tX3dlYlZpZXcpKTsKIAog
ICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgicGxheVZpZGVvKCk7
IiwgbnVsbHB0cik7CiAgICAgaWYgKCF3ZWJraXRfd2ViX3ZpZXdfaXNfcGxheWluZ19hdWRpbyh0
ZXN0LT5tX3dlYlZpZXcpKQogICAgICAgICB0ZXN0LT53YWl0VW50aWxJc1BsYXlpbmdBdWRpb0No
YW5nZWQoKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfaXNfcGxheWluZ19hdWRpbyh0
ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19pc19w
bGF5aW5nX2F1ZGlvKHRlc3QtPm1fd2ViVmlldykpOwogCiAgICAgLy8gUGF1c2UgdGhlIHZpZGVv
LCBhbmQgY2hlY2sgYWdhaW4uCiAgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZp
bmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdC12aWRlbycpLnBhdXNlKCk7Iiwg
bnVsbHB0cik7CiAgICAgaWYgKHdlYmtpdF93ZWJfdmlld19pc19wbGF5aW5nX2F1ZGlvKHRlc3Qt
Pm1fd2ViVmlldykpCiAgICAgICAgIHRlc3QtPndhaXRVbnRpbElzUGxheWluZ0F1ZGlvQ2hhbmdl
ZCgpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfaXNfcGxheWluZ19hdWRpbyh0ZXN0
LT5tX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfaXNfcGxh
eWluZ19hdWRpbyh0ZXN0LT5tX3dlYlZpZXcpKTsKIH0KIAogI2lmIFBMQVRGT1JNKEdUSykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0
ZURhdGEuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJz
aXRlRGF0YS5jcHAKaW5kZXggMDI2NmNiMGRjODQ0ZWMxYWU3MGY1ZDlkOWEzYzBmMGZhOTUwZDI1
Zi4uZTU0NTUyZTAzOGQ4NTMyYzEwNmQyYmYzNDljYzZhNjlmNGEzMDVlYiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0
YS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIFdlYnNpdGVEYXRhVGVzdCgpCiAg
ICAgICAgIDogbV9tYW5hZ2VyKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXIod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KG1fd2ViVmlldykpKQogICAgIHsKLSAg
ICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1fbWFuYWdlcikp
OworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUiht
X21hbmFnZXIpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hl
cyhHX09CSkVDVChtX21hbmFnZXIpKTsKICAgICAgICAgLy8gV2Vic2l0ZURhdGFTdG9yZSBjcmVh
dGVzIGEgbmV3IFdlYlByb2Nlc3NQb29sIHdoZW4gdXNlZCBiZWZvcmUgYW55IHNlY29uZGFyeSBw
cm9jZXNzIGhhcyBiZWVuIGNyZWF0ZWQuCiAgICAgICAgIC8vIEVuc3VyZSB3ZSBoYXZlIGEgd2Vi
IHByb2Nlc3MgYnkgYWx3YXlzIGxvYWRpbmcgYWJvdXQ6YmxhbmsgaGVyZS4KQEAgLTExMSw3ICsx
MTEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfcmVtb3ZlKG1fbWFuYWdlciwgdHlwZXMsIGRhdGFMaXN0LCBudWxscHRyLCBbXShHT2JqZWN0
KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgICAg
ICBXZWJzaXRlRGF0YVRlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxXZWJzaXRlRGF0YVRlc3QqPih1
c2VyRGF0YSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXJfcmVtb3ZlX2ZpbmlzaCh0ZXN0LT5tX21hbmFnZXIsIHJlc3VsdCwgbnVsbHB0cikpOworICAg
ICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfcmVtb3Zl
X2ZpbmlzaCh0ZXN0LT5tX21hbmFnZXIsIHJlc3VsdCwgbnVsbHB0cikpOwogICAgICAgICAgICAg
dGVzdC0+cXVpdE1haW5Mb29wKCk7CiAgICAgICAgIH0sIHRoaXMpOwogICAgICAgICBnX21haW5f
bG9vcF9ydW4obV9tYWluTG9vcCk7CkBAIC0xMjEsNyArMTIxLDcgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyKG1fbWFuYWdlciwgdHlw
ZXMsIHRpbWVTcGFuLCBudWxscHRyLCBbXShHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQs
IGdwb2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgICAgICBXZWJzaXRlRGF0YVRlc3QqIHRlc3Qg
PSBzdGF0aWNfY2FzdDxXZWJzaXRlRGF0YVRlc3QqPih1c2VyRGF0YSk7Ci0gICAgICAgICAgICBn
X2Fzc2VydCh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xlYXJfZmluaXNoKHRlc3QtPm1f
bWFuYWdlciwgcmVzdWx0LCBudWxscHRyKSk7CisgICAgICAgICAgICBnX2Fzc2VydF90cnVlKHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGVhcl9maW5pc2godGVzdC0+bV9tYW5hZ2VyLCBy
ZXN1bHQsIG51bGxwdHIpKTsKICAgICAgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOwogICAg
ICAgICB9LCB0aGlzKTsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwpAQCAt
MTM0LDI0ICsxMzQsMjQgQEAgcHVibGljOgogc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhQ29u
ZmlndXJhdGlvbihXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAg
Ly8gQmFzZSBkaXJlY3RvcmllcyBhcmUgbm90IHVzZWQgYnkgVGVzdE1haW4uCi0gICAgZ19hc3Nl
cnQoIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfYmFzZV9kYXRhX2RpcmVjdG9yeSh0
ZXN0LT5tX21hbmFnZXIpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9iYXNlX2NhY2hlX2RpcmVjdG9yeSh0ZXN0LT5tX21hbmFnZXIpKTsKKyAgICBnX2Fz
c2VydF9udWxsKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfYmFzZV9kYXRhX2RpcmVj
dG9yeSh0ZXN0LT5tX21hbmFnZXIpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfYmFzZV9jYWNoZV9kaXJlY3RvcnkodGVzdC0+bV9tYW5hZ2VyKSk7
CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IGxvY2FsU3RvcmFnZURpcmVjdG9yeShnX2J1aWxkX2Zp
bGVuYW1lKFRlc3Q6OmRhdGFEaXJlY3RvcnkoKSwgImxvY2FsLXN0b3JhZ2UiLCBudWxscHRyKSk7
CiAgICAgZ19hc3NlcnRfY21wc3RyKGxvY2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKSwgPT0sIHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFnZV9kaXJlY3RvcnkodGVz
dC0+bV9tYW5hZ2VyKSk7Ci0gICAgZ19hc3NlcnQoZ19maWxlX3Rlc3QobG9jYWxTdG9yYWdlRGly
ZWN0b3J5LmdldCgpLCBHX0ZJTEVfVEVTVF9JU19ESVIpKTsKKyAgICBnX2Fzc2VydF90cnVlKGdf
ZmlsZV90ZXN0KGxvY2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKSwgR19GSUxFX1RFU1RfSVNfRElS
KSk7CiAKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9lbXB0eSIp
LmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAgdGVzdC0+
cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cuaW5kZXhlZERCLm9wZW4o
J1Rlc3REYXRhYmFzZScpOyIsIG51bGxwdHIpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gaW5kZXhl
ZERCRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCAiaW5k
ZXhlZGRiIiwgbnVsbHB0cikpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihpbmRleGVkREJEaXJlY3Rv
cnkuZ2V0KCksID09LCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2luZGV4ZWRkYl9k
aXJlY3RvcnkodGVzdC0+bV9tYW5hZ2VyKSk7Ci0gICAgZ19hc3NlcnQoZ19maWxlX3Rlc3QoaW5k
ZXhlZERCRGlyZWN0b3J5LmdldCgpLCBHX0ZJTEVfVEVTVF9JU19ESVIpKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKGdfZmlsZV90ZXN0KGluZGV4ZWREQkRpcmVjdG9yeS5nZXQoKSwgR19GSUxFX1RFU1Rf
SVNfRElSKSk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHdlYlNRTERpcmVjdG9yeShnX2J1aWxk
X2ZpbGVuYW1lKFRlc3Q6OmRhdGFEaXJlY3RvcnkoKSwgIndlYnNxbCIsIG51bGxwdHIpKTsKICAg
ICBnX2Fzc2VydF9jbXBzdHIod2ViU1FMRGlyZWN0b3J5LmdldCgpLCA9PSwgd2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KHRlc3QtPm1fbWFuYWdlcikpOwog
ICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZGIgPSBvcGVuRGF0
YWJhc2UoXCJUZXN0RGF0YWJhc2VcIiwgXCIxLjBcIiwgXCJUZXN0RGF0YWJhc2VcIiwgMSk7Iiwg
bnVsbHB0cik7Ci0gICAgZ19hc3NlcnQoZ19maWxlX3Rlc3Qod2ViU1FMRGlyZWN0b3J5LmdldCgp
LCBHX0ZJTEVfVEVTVF9JU19ESVIpKTsKKyAgICBnX2Fzc2VydF90cnVlKGdfZmlsZV90ZXN0KHdl
YlNRTERpcmVjdG9yeS5nZXQoKSwgR19GSUxFX1RFU1RfSVNfRElSKSk7CiAKICAgICB0ZXN0LT5s
b2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9hcHBjYWNoZSIpLmRhdGEoKSk7CiAgICAg
dGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CkBAIC0xNjEsMjIgKzE2MSwyMiBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFDb25maWd1cmF0aW9uKFdlYnNpdGVEYXRhVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKICAgICB1bnNpZ25lZCB0cmllc0NvdW50ID0gNDsKICAgICB3aGls
ZSAoIWdfZmlsZV90ZXN0KGFwcGxpY2F0aW9uQ2FjaGVEYXRhYmFzZS5nZXQoKSwgR19GSUxFX1RF
U1RfSVNfUkVHVUxBUikgJiYgLS10cmllc0NvdW50KQogICAgICAgICB0ZXN0LT53YWl0KDAuMjUp
OwotICAgIGdfYXNzZXJ0KHRyaWVzQ291bnQpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodHJpZXND
b3VudCwgPiwgMCk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IGRpc2tDYWNoZURpcmVjdG9yeShn
X2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmRhdGFEaXJlY3RvcnkoKSwgImRpc2stY2FjaGUiLCBudWxs
cHRyKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSwgPT0s
IHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkodGVz
dC0+bV9tYW5hZ2VyKSk7Ci0gICAgZ19hc3NlcnQoZ19maWxlX3Rlc3QoZGlza0NhY2hlRGlyZWN0
b3J5LmdldCgpLCBHX0ZJTEVfVEVTVF9JU19ESVIpKTsKKyAgICBnX2Fzc2VydF90cnVlKGdfZmls
ZV90ZXN0KGRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSwgR19GSUxFX1RFU1RfSVNfRElSKSk7CiAK
ICAgICAvLyBDbGVhciBhbGwgcGVyc2lzdGVudCBjYWNoZXMsIHNpbmNlIHRoZSBkYXRhIGRpciBp
cyBjb21tb24gdG8gYWxsIHRlc3QgY2FzZXMuCiAgICAgc3RhdGljIGNvbnN0IFdlYktpdFdlYnNp
dGVEYXRhVHlwZXMgcGVyc2lzdGVudENhY2hlcyA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVE
YXRhVHlwZXM+KFdFQktJVF9XRUJTSVRFX0RBVEFfRElTS19DQUNIRSB8IFdFQktJVF9XRUJTSVRF
X0RBVEFfTE9DQUxfU1RPUkFHRQogICAgICAgICB8IFdFQktJVF9XRUJTSVRFX0RBVEFfV0VCU1FM
X0RBVEFCQVNFUyB8IFdFQktJVF9XRUJTSVRFX0RBVEFfSU5ERVhFRERCX0RBVEFCQVNFUyB8IFdF
QktJVF9XRUJTSVRFX0RBVEFfT0ZGTElORV9BUFBMSUNBVElPTl9DQUNIRSB8IFdFQktJVF9XRUJT
SVRFX0RBVEFfREVWSUNFX0lEX0hBU0hfU0FMVCk7CiAgICAgdGVzdC0+Y2xlYXIocGVyc2lzdGVu
dENhY2hlcywgMCk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPmZldGNoKHBlcnNpc3RlbnRDYWNoZXMp
KTsKKyAgICBnX2Fzc2VydF9udWxsKHRlc3QtPmZldGNoKHBlcnNpc3RlbnRDYWNoZXMpKTsKIAog
ICAgIC8vIFRoZSBkZWZhdWx0IGNvbnRleHQgc2hvdWxkIGhhdmUgYSBkaWZmZXJlbnQgbWFuYWdl
ciB3aXRoIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFu
YWdlciogZGVmYXVsdE1hbmFnZXIgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3dlYnNpdGVfZGF0
YV9tYW5hZ2VyKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpKTsKLSAgICBnX2Fzc2Vy
dChXRUJLSVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIoZGVmYXVsdE1hbmFnZXIpKTsKLSAgICBn
X2Fzc2VydCh0ZXN0LT5tX21hbmFnZXIgIT0gZGVmYXVsdE1hbmFnZXIpOworICAgIGdfYXNzZXJ0
X3RydWUoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKGRlZmF1bHRNYW5hZ2VyKSk7Cisg
ICAgZ19hc3NlcnRfY21waGV4KHRlc3QtPm1fbWFuYWdlciwgIT0sIGRlZmF1bHRNYW5hZ2VyKTsK
ICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2Nh
bF9zdG9yYWdlX2RpcmVjdG9yeSh0ZXN0LT5tX21hbmFnZXIpLCAhPSwgd2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdlX2RpcmVjdG9yeShkZWZhdWx0TWFuYWdlcikp
OwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2lu
ZGV4ZWRkYl9kaXJlY3RvcnkodGVzdC0+bV9tYW5hZ2VyKSwgIT0sIHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShkZWZhdWx0TWFuYWdlcikpOwogICAg
IGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2Fj
aGVfZGlyZWN0b3J5KHRlc3QtPm1fbWFuYWdlciksICE9LCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KGRlZmF1bHRNYW5hZ2VyKSk7CkBAIC0xODUs
NyArMTg1LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhQ29uZmlndXJhdGlvbihXZWJz
aXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICAvLyBVc2luZyBUZXN0Ojpk
YXRhRGlyZWN0b3J5KCkgd2UgZ2V0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gYnV0IGZvciBh
IGRpZmZlcnJlbnQgcHJlZml4LgogICAgIEdSZWZQdHI8V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2Vy
PiBiYXNlRGF0YU1hbmFnZXIgPSBhZG9wdEdSZWYod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X25ldygiYmFzZS1kYXRhLWRpcmVjdG9yeSIsIFRlc3Q6OmRhdGFEaXJlY3RvcnkoKSwgImJhc2Ut
Y2FjaGUtZGlyZWN0b3J5IiwgVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCBudWxscHRyKSk7Ci0gICAg
Z19hc3NlcnQoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKGJhc2VEYXRhTWFuYWdlci5n
ZXQoKSkpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VS
KGJhc2VEYXRhTWFuYWdlci5nZXQoKSkpOwogCiAgICAgbG9jYWxTdG9yYWdlRGlyZWN0b3J5LnJl
c2V0KGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCAibG9jYWxzdG9yYWdl
IiwgbnVsbHB0cikpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KGJhc2VEYXRhTWFuYWdlci5nZXQoKSks
ID09LCBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkuZ2V0KCkpOwpAQCAtMjI1LDI2ICsyMjUsMjYgQEAg
c3RhdGljIHZvaWQgZXBoZW1lcmFsVmlld2xvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIFdlYktpdExvYWRFdmVudCBsb2EKIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YUVwaGVt
ZXJhbChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBHUmVmUHRyPFdl
YktpdFdlYnNpdGVEYXRhTWFuYWdlcj4gbWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfbmV3X2VwaGVtZXJhbCgpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKG1hbmFnZXIuZ2V0KCkpKTsKLSAgICBnX2Fz
c2VydCghd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9iYXNlX2RhdGFfZGlyZWN0b3J5
KG1hbmFnZXIuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9iYXNlX2NhY2hlX2RpcmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7Ci0gICAgZ19hc3Nl
cnQoIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFnZV9kaXJlY3Rv
cnkobWFuYWdlci5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKLSAgICBnX2Fz
c2VydCghd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9vZmZsaW5lX2FwcGxpY2F0aW9u
X2NhY2hlX2RpcmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeShtYW5hZ2VyLmdldCgp
KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3Fs
X2RpcmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKG1hbmFnZXIuZ2V0KCkpKTsKKyAgICBnX2Fz
c2VydF9udWxsKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfYmFzZV9kYXRhX2RpcmVj
dG9yeShtYW5hZ2VyLmdldCgpKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZ2V0X2Jhc2VfY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKKyAg
ICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3Rv
cmFnZV9kaXJlY3RvcnkobWFuYWdlci5nZXQoKSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeShtYW5hZ2VyLmdl
dCgpKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0
X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKKyAg
ICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRi
X2RpcmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkobWFuYWdlci5nZXQoKSkpOwog
CiAgICAgLy8gQ29uZmlndXJhdGlvbiBpcyBpZ25vcmVkIHdoZW4gaXMtZXBoZW1lcmFsIGlzIHVz
ZWQuCiAgICAgbWFuYWdlciA9IGFkb3B0R1JlZihXRUJLSVRfV0VCU0lURV9EQVRBX01BTkFHRVIo
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQlNJVEVfREFUQV9NQU5BR0VSLCAiYmFzZS1kYXRh
LWRpcmVjdG9yeSIsIFRlc3Q6OmRhdGFEaXJlY3RvcnkoKSwgImlzLWVwaGVtZXJhbCIsIFRSVUUs
IG51bGxwdHIpKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lz
X2VwaGVtZXJhbChtYW5hZ2VyLmdldCgpKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfYmFzZV9kYXRhX2RpcmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFs
KG1hbmFnZXIuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9nZXRfYmFzZV9kYXRhX2RpcmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7CiAKICAgICAv
LyBOb24gcGVyc2lzdGVudCBkYXRhIGNhbiBiZSBxdWVyaWVkIGluIGFuIGVwaGVtZXJhbCBtYW5h
Z2VyLgogICAgIEdSZWZQdHI8V2ViS2l0V2ViQ29udGV4dD4gd2ViQ29udGV4dCA9IGFkb3B0R1Jl
Zih3ZWJraXRfd2ViX2NvbnRleHRfbmV3X3dpdGhfd2Vic2l0ZV9kYXRhX21hbmFnZXIobWFuYWdl
ci5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwo
d2ViQ29udGV4dC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9jb250ZXh0
X2lzX2VwaGVtZXJhbCh3ZWJDb250ZXh0LmdldCgpKSk7CiAgICAgYXV0byB3ZWJWaWV3ID0gVGVz
dDo6YWRvcHRWaWV3KFRlc3Q6OmNyZWF0ZVdlYlZpZXcod2ViQ29udGV4dC5nZXQoKSkpOwotICAg
IGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwod2ViVmlldy5nZXQoKSkpOwot
ICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIod2Vi
Vmlldy5nZXQoKSkgPT0gbWFuYWdlci5nZXQoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRf
d2ViX3ZpZXdfaXNfZXBoZW1lcmFsKHdlYlZpZXcuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBo
ZXgod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3ZWJWaWV3LmdldCgp
KSwgPT0sIG1hbmFnZXIuZ2V0KCkpOwogCiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3Lmdl
dCgpLCAibG9hZC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhlcGhlbWVyYWxWaWV3bG9hZENoYW5nZWQp
LCB0ZXN0KTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkod2ViVmlldy5nZXQoKSwga1Nl
cnZlci0+Z2V0VVJJRm9yUGF0aCgiL2VtcHR5IikuZGF0YSgpKTsKQEAgLTI1MywxMCArMjUzLDEw
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YUVwaGVtZXJhbChXZWJWaWV3VGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKICAgICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2go
bWFuYWdlci5nZXQoKSwgV0VCS0lUX1dFQlNJVEVfREFUQV9NRU1PUllfQ0FDSEUsIG51bGxwdHIs
IFtdKEdPYmplY3QqIG1hbmFnZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2Vy
RGF0YSkgewogICAgICAgICBhdXRvKiB0ZXN0ID0gc3RhdGljX2Nhc3Q8V2ViVmlld1Rlc3QqPih1
c2VyRGF0YSk7CiAgICAgICAgIEdMaXN0KiBkYXRhTGlzdCA9IHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9mZXRjaF9maW5pc2goV0VCS0lUX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIp
LCByZXN1bHQsIG51bGxwdHIpOwotICAgICAgICBnX2Fzc2VydChkYXRhTGlzdCk7CisgICAgICAg
IGdfYXNzZXJ0X25vbm51bGwoZGF0YUxpc3QpOwogICAgICAgICBnX2Fzc2VydF9jbXB1aW50KGdf
bGlzdF9sZW5ndGgoZGF0YUxpc3QpLCA9PSwgMSk7CiAgICAgICAgIFdlYktpdFdlYnNpdGVEYXRh
KiBkYXRhID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGEqPihkYXRhTGlzdC0+ZGF0YSk7
Ci0gICAgICAgIGdfYXNzZXJ0KGRhdGEpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKGRhdGEp
OwogICAgICAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5
X29yaWdpbl9uZXdfZm9yX3VyaShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvIikuZGF0YSgpKTsK
ICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X25hbWUoZGF0
YSksID09LCB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdpbikpOwogICAgICAg
ICB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKG9yaWdpbik7CkBAIC0yNzAsNyArMjcwLDcg
QEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhQ2FjaGUoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogewogICAgIHN0YXRpYyBjb25zdCBXZWJLaXRXZWJzaXRlRGF0YVR5
cGVzIGNhY2hlVHlwZXMgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YVR5cGVzPihXRUJL
SVRfV0VCU0lURV9EQVRBX01FTU9SWV9DQUNIRSB8IFdFQktJVF9XRUJTSVRFX0RBVEFfRElTS19D
QUNIRSk7CiAgICAgR0xpc3QqIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goY2FjaGVUeXBlcyk7Ci0g
ICAgZ19hc3NlcnQoIWRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9udWxsKGRhdGFMaXN0KTsKIAog
ICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2VtcHR5IikuZGF0YSgp
KTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKQEAgLTI4MSwxMCArMjgxLDEw
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YUNhY2hlKFdlYnNpdGVEYXRhVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT53YWl0KDEpOwogCiAgICAgZGF0YUxpc3QgPSB0
ZXN0LT5mZXRjaChjYWNoZVR5cGVzKTsKLSAgICBnX2Fzc2VydChkYXRhTGlzdCk7CisgICAgZ19h
c3NlcnRfbm9ubnVsbChkYXRhTGlzdCk7CiAgICAgZ19hc3NlcnRfY21wdWludChnX2xpc3RfbGVu
Z3RoKGRhdGFMaXN0KSwgPT0sIDEpOwogICAgIFdlYktpdFdlYnNpdGVEYXRhKiBkYXRhID0gc3Rh
dGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGEqPihkYXRhTGlzdC0+ZGF0YSk7Ci0gICAgZ19hc3Nl
cnQoZGF0YSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRhKTsKICAgICBXZWJLaXRTZWN1cml0
eU9yaWdpbiogb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXdfZm9yX3VyaShrU2Vy
dmVyLT5nZXRVUklGb3JQYXRoKCIvIikuZGF0YSgpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Vi
a2l0X3dlYnNpdGVfZGF0YV9nZXRfbmFtZShkYXRhKSwgPT0sIHdlYmtpdF9zZWN1cml0eV9vcmln
aW5fZ2V0X2hvc3Qob3JpZ2luKSk7CiAgICAgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZihv
cmlnaW4pOwpAQCAtMjk1LDEyICsyOTUsMTIgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRh
Q2FjaGUoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogCiAgICAgLy8gVHJ5
IGFnYWluIGJ1dCBvbmx5IGdldHRpbmcgZGlzayBjYWNoZS4KICAgICBkYXRhTGlzdCA9IHRlc3Qt
PmZldGNoKFdFQktJVF9XRUJTSVRFX0RBVEFfRElTS19DQUNIRSk7Ci0gICAgZ19hc3NlcnQoZGF0
YUxpc3QpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YUxpc3QpOwogICAgIGdfYXNzZXJ0X2Nt
cHVpbnQoZ19saXN0X2xlbmd0aChkYXRhTGlzdCksID09LCAxKTsKICAgICBkYXRhID0gc3RhdGlj
X2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGEqPihkYXRhTGlzdC0+ZGF0YSk7Ci0gICAgZ19hc3NlcnQo
ZGF0YSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRfdHlwZXMoZGF0YSkg
JiBXRUJLSVRfV0VCU0lURV9EQVRBX0RJU0tfQ0FDSEUpOwotICAgIGdfYXNzZXJ0KCEod2Via2l0
X3dlYnNpdGVfZGF0YV9nZXRfdHlwZXMoZGF0YSkgJiBXRUJLSVRfV0VCU0lURV9EQVRBX01FTU9S
WV9DQUNIRSkpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YSk7CisgICAgZ19hc3NlcnRfdHJ1
ZSh3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF90eXBlcyhkYXRhKSAmIFdFQktJVF9XRUJTSVRFX0RB
VEFfRElTS19DQUNIRSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYnNpdGVfZGF0YV9n
ZXRfdHlwZXMoZGF0YSkgJiBXRUJLSVRfV0VCU0lURV9EQVRBX01FTU9SWV9DQUNIRSk7CiAKICAg
ICBHVW5pcXVlUHRyPGNoYXI+IGZpbGVVUkwoZ19zdHJkdXBfcHJpbnRmKCJmaWxlOi8vJXMvc2lt
cGxlLmh0bWwiLCBUZXN0OjpnZXRSZXNvdXJjZXNEaXIoVGVzdDo6V2ViS2l0MlJlc291cmNlcyku
ZGF0YSgpKSk7CiAgICAgdGVzdC0+bG9hZFVSSShmaWxlVVJMLmdldCgpKTsKQEAgLTMxMiwyNCAr
MzEyLDI0IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YUNhY2hlKFdlYnNpdGVEYXRhVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIC8vIExvY2FsIGZpbGVzIGFyZSBncm91cGVk
LgogICAgIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goY2FjaGVUeXBlcyk7Ci0gICAgZ19hc3NlcnQo
ZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YUxpc3QpOwogICAgIGdfYXNzZXJ0
X2NtcHVpbnQoZ19saXN0X2xlbmd0aChkYXRhTGlzdCksID09LCAyKTsKICAgICBHTGlzdCogaXRl
bUxpc3QgPSBnX2xpc3RfZmluZF9jdXN0b20oZGF0YUxpc3QsIG51bGxwdHIsIFtdKGdjb25zdHBv
aW50ZXIgaXRlbSwgZ2NvbnN0cG9pbnRlcikgLT4gaW50IHsKICAgICAgICAgV2ViS2l0V2Vic2l0
ZURhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YSo+KGNvbnN0X2Nhc3Q8
Z3BvaW50ZXI+KGl0ZW0pKTsKICAgICAgICAgcmV0dXJuIGdfc3RyY21wMCh3ZWJraXRfd2Vic2l0
ZV9kYXRhX2dldF9uYW1lKGRhdGEpLCAiTG9jYWwgZmlsZXMiKTsKICAgICB9KTsKLSAgICBnX2Fz
c2VydChpdGVtTGlzdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChpdGVtTGlzdCk7CiAgICAgZGF0
YSA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhKj4oaXRlbUxpc3QtPmRhdGEpOwotICAg
IGdfYXNzZXJ0KGRhdGEpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X3R5
cGVzKGRhdGEpICYgV0VCS0lUX1dFQlNJVEVfREFUQV9NRU1PUllfQ0FDSEUpOworICAgIGdfYXNz
ZXJ0X25vbm51bGwoZGF0YSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2Vic2l0ZV9kYXRh
X2dldF90eXBlcyhkYXRhKSAmIFdFQktJVF9XRUJTSVRFX0RBVEFfTUVNT1JZX0NBQ0hFKTsKICAg
ICAvLyBMb2NhbCBmaWxlcyBhcmUgbmV2ZXIgc3RvcmVkIGluIGRpc2sgY2FjaGUuCi0gICAgZ19h
c3NlcnQoISh3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF90eXBlcyhkYXRhKSAmIFdFQktJVF9XRUJT
SVRFX0RBVEFfRElTS19DQUNIRSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJzaXRl
X2RhdGFfZ2V0X3R5cGVzKGRhdGEpICYgV0VCS0lUX1dFQlNJVEVfREFUQV9ESVNLX0NBQ0hFKTsK
IAogICAgIC8vIENsZWFyIGRhdGEgbW9kaWZpZWQgc2luY2UgdGhlIGxhc3QgbWljcm9zZWNvbmQg
c2hvdWxkIG5vdCBjbGVhciBhbnl0aGluZy4KICAgICAvLyBVc2UgZGlzay1jYWNoZSBiZWNhdXNl
IG1lbW9yeSBjYWNoZSBpZ25vcmVzIHRoZSBtb2RpZmllZCBzaW5jZS4KICAgICB0ZXN0LT5jbGVh
cihXRUJLSVRfV0VCU0lURV9EQVRBX0RJU0tfQ0FDSEUsIDEpOwogICAgIGRhdGFMaXN0ID0gdGVz
dC0+ZmV0Y2goY2FjaGVUeXBlcyk7Ci0gICAgZ19hc3NlcnQoZGF0YUxpc3QpOworICAgIGdfYXNz
ZXJ0X25vbm51bGwoZGF0YUxpc3QpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19saXN0X2xlbmd0
aChkYXRhTGlzdCksID09LCAyKTsKIAogICAgIC8vIFJlbW92ZSBtZW1vcnkgY2FjaGUgb25seSBm
b3IgbG9jYWwgZmlsZXMuCkBAIC0zMzcsMjYgKzMzNywyNiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vi
c2l0ZURhdGFDYWNoZShXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAg
ICAgIFdlYktpdFdlYnNpdGVEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURh
dGEqPihjb25zdF9jYXN0PGdwb2ludGVyPihpdGVtKSk7CiAgICAgICAgIHJldHVybiBnX3N0cmNt
cDAod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRfbmFtZShkYXRhKSwgIkxvY2FsIGZpbGVzIik7CiAg
ICAgfSk7Ci0gICAgZ19hc3NlcnQoaXRlbUxpc3QpOworICAgIGdfYXNzZXJ0X25vbm51bGwoaXRl
bUxpc3QpOwogICAgIEdMaXN0IHJlbW92ZUxpc3QgPSB7IGl0ZW1MaXN0LT5kYXRhLCBudWxscHRy
LCBudWxscHRyIH07CiAgICAgdGVzdC0+cmVtb3ZlKFdFQktJVF9XRUJTSVRFX0RBVEFfTUVNT1JZ
X0NBQ0hFLCAmcmVtb3ZlTGlzdCk7CiAgICAgZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChjYWNoZVR5
cGVzKTsKLSAgICBnX2Fzc2VydChkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRh
TGlzdCk7CiAgICAgZ19hc3NlcnRfY21wdWludChnX2xpc3RfbGVuZ3RoKGRhdGFMaXN0KSwgPT0s
IDEpOwogICAgIGRhdGEgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YSo+KGRhdGFMaXN0
LT5kYXRhKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF90eXBlcyhkYXRh
KSAmIFdFQktJVF9XRUJTSVRFX0RBVEFfRElTS19DQUNIRSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3
ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF90eXBlcyhkYXRhKSAmIFdFQktJVF9XRUJTSVRFX0RBVEFf
RElTS19DQUNIRSk7CiAKICAgICAvLyBDbGVhciBhbGwuCiAgICAgdGVzdC0+Y2xlYXIoY2FjaGVU
eXBlcywgMCk7CiAgICAgZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChjYWNoZVR5cGVzKTsKLSAgICBn
X2Fzc2VydCghZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X251bGwoZGF0YUxpc3QpOwogfQogCiBz
dGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFTdG9yYWdlKFdlYnNpdGVEYXRhVGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKIHsKICAgICBzdGF0aWMgY29uc3QgV2ViS2l0V2Vic2l0ZURhdGFUeXBl
cyBzdG9yYWdlVHlwZXMgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YVR5cGVzPihXRUJL
SVRfV0VCU0lURV9EQVRBX1NFU1NJT05fU1RPUkFHRSB8IFdFQktJVF9XRUJTSVRFX0RBVEFfTE9D
QUxfU1RPUkFHRSk7CiAgICAgR0xpc3QqIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goc3RvcmFnZVR5
cGVzKTsKLSAgICBnX2Fzc2VydCghZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X251bGwoZGF0YUxp
c3QpOwogCiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvc2Vzc2lv
bnN0b3JhZ2UiKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwpA
QCAtMzY4LDEwICszNjgsMTAgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhU3RvcmFnZShX
ZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+d2FpdCgxKTsK
IAogICAgIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goc3RvcmFnZVR5cGVzKTsKLSAgICBnX2Fzc2Vy
dChkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRhTGlzdCk7CiAgICAgZ19hc3Nl
cnRfY21wdWludChnX2xpc3RfbGVuZ3RoKGRhdGFMaXN0KSwgPT0sIDEpOwogICAgIFdlYktpdFdl
YnNpdGVEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGEqPihkYXRhTGlz
dC0+ZGF0YSk7Ci0gICAgZ19hc3NlcnQoZGF0YSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRh
KTsKICAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29y
aWdpbl9uZXdfZm9yX3VyaShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvIikuZGF0YSgpKTsKICAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRfbmFtZShkYXRhKSwgPT0s
IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSk7CiAgICAgd2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl91bnJlZihvcmlnaW4pOwpAQCAtMzgzLDUyICszODMsNTIgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYnNpdGVEYXRhU3RvcmFnZShXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAgICAgLy8gR2V0IGFsc28gY2FjaGVkIGRhdGEsIGFuZCBjbGVhciBpdC4KICAg
ICBzdGF0aWMgY29uc3QgV2ViS2l0V2Vic2l0ZURhdGFUeXBlcyBjYWNoZUFuZFN0b3JhZ2VUeXBl
cyA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhVHlwZXM+KHN0b3JhZ2VUeXBlcyB8IFdF
QktJVF9XRUJTSVRFX0RBVEFfTUVNT1JZX0NBQ0hFIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9ESVNL
X0NBQ0hFKTsKICAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKGNhY2hlQW5kU3RvcmFnZVR5cGVz
KTsKLSAgICBnX2Fzc2VydChkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRhTGlz
dCk7CiAgICAgZ19hc3NlcnRfY21wdWludChnX2xpc3RfbGVuZ3RoKGRhdGFMaXN0KSwgPT0sIDEp
OwogICAgIGRhdGEgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YSo+KGRhdGFMaXN0LT5k
YXRhKTsKLSAgICBnX2Fzc2VydChkYXRhKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGEpOwog
ICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRfdHlwZXMoZGF0YSks
ID09LCBjYWNoZUFuZFN0b3JhZ2VUeXBlcyk7CiAgICAgdGVzdC0+Y2xlYXIoc3RhdGljX2Nhc3Q8
V2ViS2l0V2Vic2l0ZURhdGFUeXBlcz4oV0VCS0lUX1dFQlNJVEVfREFUQV9NRU1PUllfQ0FDSEUg
fCBXRUJLSVRfV0VCU0lURV9EQVRBX0RJU0tfQ0FDSEUpLCAwKTsKIAogICAgIC8vIEdldCBhbGwg
dHlwZXMgYWdhaW4sIGJ1dCBvbmx5IHN0b3JhZ2UgaXMgcmV0cmlldmVkIG5vdy4KICAgICBkYXRh
TGlzdCA9IHRlc3QtPmZldGNoKGNhY2hlQW5kU3RvcmFnZVR5cGVzKTsKLSAgICBnX2Fzc2VydChk
YXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRhTGlzdCk7CiAgICAgZ19hc3NlcnRf
Y21wdWludChnX2xpc3RfbGVuZ3RoKGRhdGFMaXN0KSwgPT0sIDEpOwogICAgIGRhdGEgPSBzdGF0
aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YSo+KGRhdGFMaXN0LT5kYXRhKTsKLSAgICBnX2Fzc2Vy
dChkYXRhKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGEpOwogICAgIGdfYXNzZXJ0X2NtcHVp
bnQod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRfdHlwZXMoZGF0YSksID09LCBzdG9yYWdlVHlwZXMp
OwogCiAgICAgLy8gUmVtb3ZlIHRoZSBzZXNzaW9uIHN0b3JhZ2UuCiAgICAgR0xpc3QgcmVtb3Zl
TGlzdCA9IHsgZGF0YSwgbnVsbHB0ciwgbnVsbHB0ciB9OwogICAgIHRlc3QtPnJlbW92ZShXRUJL
SVRfV0VCU0lURV9EQVRBX1NFU1NJT05fU1RPUkFHRSwgJnJlbW92ZUxpc3QpOwogICAgIGRhdGFM
aXN0ID0gdGVzdC0+ZmV0Y2goc3RvcmFnZVR5cGVzKTsKLSAgICBnX2Fzc2VydChkYXRhTGlzdCk7
CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRhTGlzdCk7CiAgICAgZ19hc3NlcnRfY21wdWludChn
X2xpc3RfbGVuZ3RoKGRhdGFMaXN0KSwgPT0sIDEpOwogICAgIGRhdGEgPSBzdGF0aWNfY2FzdDxX
ZWJLaXRXZWJzaXRlRGF0YSo+KGRhdGFMaXN0LT5kYXRhKTsKLSAgICBnX2Fzc2VydCghKHdlYmtp
dF93ZWJzaXRlX2RhdGFfZ2V0X3R5cGVzKGRhdGEpICYgV0VCS0lUX1dFQlNJVEVfREFUQV9TRVNT
SU9OX1NUT1JBR0UpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF90eXBl
cyhkYXRhKSAmIFdFQktJVF9XRUJTSVRFX0RBVEFfTE9DQUxfU1RPUkFHRSk7CisgICAgZ19hc3Nl
cnRfZmFsc2Uod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRfdHlwZXMoZGF0YSkgJiBXRUJLSVRfV0VC
U0lURV9EQVRBX1NFU1NJT05fU1RPUkFHRSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2Vi
c2l0ZV9kYXRhX2dldF90eXBlcyhkYXRhKSAmIFdFQktJVF9XRUJTSVRFX0RBVEFfTE9DQUxfU1RP
UkFHRSk7CiAKICAgICAvLyBDbGVhciBhbGwuCiAgICAgdGVzdC0+Y2xlYXIoY2FjaGVBbmRTdG9y
YWdlVHlwZXMsIDApOwogICAgIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goY2FjaGVBbmRTdG9yYWdl
VHlwZXMpOwotICAgIGdfYXNzZXJ0KCFkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbnVsbChkYXRh
TGlzdCk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YURhdGFiYXNlcyhXZWJzaXRl
RGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IFdlYktp
dFdlYnNpdGVEYXRhVHlwZXMgZGF0YWJhc2VUeXBlcyA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNp
dGVEYXRhVHlwZXM+KFdFQktJVF9XRUJTSVRFX0RBVEFfV0VCU1FMX0RBVEFCQVNFUyB8IFdFQktJ
VF9XRUJTSVRFX0RBVEFfSU5ERVhFRERCX0RBVEFCQVNFUyk7CiAgICAgR0xpc3QqIGRhdGFMaXN0
ID0gdGVzdC0+ZmV0Y2goZGF0YWJhc2VUeXBlcyk7Ci0gICAgZ19hc3NlcnQoIWRhdGFMaXN0KTsK
KyAgICBnX2Fzc2VydF9udWxsKGRhdGFMaXN0KTsKIAogICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZl
ci0+Z2V0VVJJRm9yUGF0aCgiL2VtcHR5IikuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxM
b2FkRmluaXNoZWQoKTsKICAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNo
ZWQoIndpbmRvdy5pbmRleGVkREIub3BlbignVGVzdERhdGFiYXNlJyk7IiwgbnVsbHB0cik7CiAK
ICAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKGRhdGFiYXNlVHlwZXMpOwotICAgIGdfYXNzZXJ0
KGRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGFMaXN0KTsKICAgICBnX2Fzc2Vy
dF9jbXB1aW50KGdfbGlzdF9sZW5ndGgoZGF0YUxpc3QpLCA9PSwgMSk7CiAgICAgV2ViS2l0V2Vi
c2l0ZURhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YSo+KGRhdGFMaXN0
LT5kYXRhKTsKLSAgICBnX2Fzc2VydChkYXRhKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGEp
OwogICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX25ld19mb3JfdXJpKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOwogICAg
IGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF9uYW1lKGRhdGEpLCA9PSwg
d2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pKTsKICAgICB3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX3VucmVmKG9yaWdpbik7CkBAIC00MzgsMTAgKzQzOCwxMCBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2Vic2l0ZURhdGFEYXRhYmFzZXMoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogCiAgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVk
KCJkYiA9IG9wZW5EYXRhYmFzZShcIlRlc3REYXRhYmFzZVwiLCBcIjEuMFwiLCBcIlRlc3REYXRh
YmFzZVwiLCAxKTsiLCBudWxscHRyKTsKICAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKGRhdGFi
YXNlVHlwZXMpOwotICAgIGdfYXNzZXJ0KGRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9ub25udWxs
KGRhdGFMaXN0KTsKICAgICBnX2Fzc2VydF9jbXB1aW50KGdfbGlzdF9sZW5ndGgoZGF0YUxpc3Qp
LCA9PSwgMSk7CiAgICAgZGF0YSA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhKj4oZGF0
YUxpc3QtPmRhdGEpOwotICAgIGdfYXNzZXJ0KGRhdGEpOworICAgIGdfYXNzZXJ0X25vbm51bGwo
ZGF0YSk7CiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF90eXBl
cyhkYXRhKSwgPT0sIGRhdGFiYXNlVHlwZXMpOwogICAgIC8vIERhdGFiYXNlIHNpemVzIGFyZSB1
bmtub3duLgogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRfc2l6
ZShkYXRhLCBXRUJLSVRfV0VCU0lURV9EQVRBX0lOREVYRUREQl9EQVRBQkFTRVMpLCA9PSwgMCk7
CkBAIC00NTEsMjkgKzQ1MSwyOSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFEYXRhYmFz
ZXMoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIEdMaXN0IHJlbW92
ZUxpc3QgPSB7IGRhdGEsIG51bGxwdHIsIG51bGxwdHIgfTsKICAgICB0ZXN0LT5yZW1vdmUoZGF0
YWJhc2VUeXBlcywgJnJlbW92ZUxpc3QpOwogICAgIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goZGF0
YWJhc2VUeXBlcyk7Ci0gICAgZ19hc3NlcnQoIWRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9udWxs
KGRhdGFMaXN0KTsKIAogICAgIC8vIENsZWFyIGFsbC4KICAgICBzdGF0aWMgY29uc3QgV2ViS2l0
V2Vic2l0ZURhdGFUeXBlcyBjYWNoZUFuZERhdGFiYXNlVHlwZXMgPSBzdGF0aWNfY2FzdDxXZWJL
aXRXZWJzaXRlRGF0YVR5cGVzPihkYXRhYmFzZVR5cGVzIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9N
RU1PUllfQ0FDSEUgfCBXRUJLSVRfV0VCU0lURV9EQVRBX0RJU0tfQ0FDSEUpOwogICAgIHRlc3Qt
PmNsZWFyKGNhY2hlQW5kRGF0YWJhc2VUeXBlcywgMCk7CiAgICAgZGF0YUxpc3QgPSB0ZXN0LT5m
ZXRjaChjYWNoZUFuZERhdGFiYXNlVHlwZXMpOwotICAgIGdfYXNzZXJ0KCFkYXRhTGlzdCk7Cisg
ICAgZ19hc3NlcnRfbnVsbChkYXRhTGlzdCk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRl
RGF0YUFwcGNhY2hlKFdlYnNpdGVEYXRhVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAg
ICBHTGlzdCogZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChXRUJLSVRfV0VCU0lURV9EQVRBX09GRkxJ
TkVfQVBQTElDQVRJT05fQ0FDSEUpOwotICAgIGdfYXNzZXJ0KCFkYXRhTGlzdCk7CisgICAgZ19h
c3NlcnRfbnVsbChkYXRhTGlzdCk7CiAKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi9hcHBjYWNoZSIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZp
bmlzaGVkKCk7CiAKICAgICB0ZXN0LT53YWl0KDEpOwogICAgIGRhdGFMaXN0ID0gdGVzdC0+ZmV0
Y2goV0VCS0lUX1dFQlNJVEVfREFUQV9PRkZMSU5FX0FQUExJQ0FUSU9OX0NBQ0hFKTsKLSAgICBn
X2Fzc2VydChkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRhTGlzdCk7CiAgICAg
Z19hc3NlcnRfY21wdWludChnX2xpc3RfbGVuZ3RoKGRhdGFMaXN0KSwgPT0sIDEpOwogICAgIFdl
YktpdFdlYnNpdGVEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGEqPihk
YXRhTGlzdC0+ZGF0YSk7Ci0gICAgZ19hc3NlcnQoZGF0YSk7CisgICAgZ19hc3NlcnRfbm9ubnVs
bChkYXRhKTsKICAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gd2Via2l0X3NlY3Vy
aXR5X29yaWdpbl9uZXdfZm9yX3VyaShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvIikuZGF0YSgp
KTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRfbmFtZShkYXRh
KSwgPT0sIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSk7CiAgICAgd2Vi
a2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZihvcmlnaW4pOwpAQCAtNDg0LDI4ICs0ODQsMjggQEAg
c3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhQXBwY2FjaGUoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogICAgIEdMaXN0IHJlbW92ZUxpc3QgPSB7IGRhdGEsIG51bGxwdHIs
IG51bGxwdHIgfTsKICAgICB0ZXN0LT5yZW1vdmUoV0VCS0lUX1dFQlNJVEVfREFUQV9PRkZMSU5F
X0FQUExJQ0FUSU9OX0NBQ0hFLCAmcmVtb3ZlTGlzdCk7CiAgICAgZGF0YUxpc3QgPSB0ZXN0LT5m
ZXRjaChXRUJLSVRfV0VCU0lURV9EQVRBX09GRkxJTkVfQVBQTElDQVRJT05fQ0FDSEUpOwotICAg
IGdfYXNzZXJ0KCFkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbnVsbChkYXRhTGlzdCk7CiAKICAg
ICAvLyBDbGVhciBhbGwuCiAgICAgc3RhdGljIGNvbnN0IFdlYktpdFdlYnNpdGVEYXRhVHlwZXMg
Y2FjaGVBbmRBcHBjYWNoZVR5cGVzID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGFUeXBl
cz4oV0VCS0lUX1dFQlNJVEVfREFUQV9PRkZMSU5FX0FQUExJQ0FUSU9OX0NBQ0hFIHwgV0VCS0lU
X1dFQlNJVEVfREFUQV9NRU1PUllfQ0FDSEUgfCBXRUJLSVRfV0VCU0lURV9EQVRBX0RJU0tfQ0FD
SEUpOwogICAgIHRlc3QtPmNsZWFyKGNhY2hlQW5kQXBwY2FjaGVUeXBlcywgMCk7CiAgICAgZGF0
YUxpc3QgPSB0ZXN0LT5mZXRjaChjYWNoZUFuZEFwcGNhY2hlVHlwZXMpOwotICAgIGdfYXNzZXJ0
KCFkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbnVsbChkYXRhTGlzdCk7CiB9CiAKIHN0YXRpYyB2
b2lkIHRlc3RXZWJzaXRlRGF0YUNvb2tpZXMoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogewogICAgIEdMaXN0KiBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKFdFQktJVF9XRUJT
SVRFX0RBVEFfQ09PS0lFUyk7Ci0gICAgZ19hc3NlcnQoIWRhdGFMaXN0KTsKKyAgICBnX2Fzc2Vy
dF9udWxsKGRhdGFMaXN0KTsKIAogICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9y
UGF0aCgiL2VtcHR5IikuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQo
KTsKIAogICAgIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goV0VCS0lUX1dFQlNJVEVfREFUQV9DT09L
SUVTKTsKLSAgICBnX2Fzc2VydChkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRh
TGlzdCk7CiAgICAgZ19hc3NlcnRfY21wdWludChnX2xpc3RfbGVuZ3RoKGRhdGFMaXN0KSwgPT0s
IDEpOwogICAgIFdlYktpdFdlYnNpdGVEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vi
c2l0ZURhdGEqPihkYXRhTGlzdC0+ZGF0YSk7Ci0gICAgZ19hc3NlcnQoZGF0YSk7CisgICAgZ19h
c3NlcnRfbm9ubnVsbChkYXRhKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNpdGVf
ZGF0YV9nZXRfbmFtZShkYXRhKSwgPT0sICIxMjcuMC4wLjEiKTsKICAgICBnX2Fzc2VydF9jbXB1
aW50KHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X3R5cGVzKGRhdGEpLCA9PSwgV0VCS0lUX1dFQlNJ
VEVfREFUQV9DT09LSUVTKTsKICAgICAvLyBDb29raWVzIHNpemUgaXMgdW5rbm93bi4KQEAgLTUx
NCwxMyArNTE0LDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YUNvb2tpZXMoV2Vic2l0
ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIEdMaXN0IHJlbW92ZUxpc3QgPSB7
IGRhdGEsIG51bGxwdHIsIG51bGxwdHIgfTsKICAgICB0ZXN0LT5yZW1vdmUoV0VCS0lUX1dFQlNJ
VEVfREFUQV9DT09LSUVTLCAmcmVtb3ZlTGlzdCk7CiAgICAgZGF0YUxpc3QgPSB0ZXN0LT5mZXRj
aChXRUJLSVRfV0VCU0lURV9EQVRBX0NPT0tJRVMpOwotICAgIGdfYXNzZXJ0KCFkYXRhTGlzdCk7
CisgICAgZ19hc3NlcnRfbnVsbChkYXRhTGlzdCk7CiAKICAgICAvLyBDbGVhciBhbGwuCiAgICAg
c3RhdGljIGNvbnN0IFdlYktpdFdlYnNpdGVEYXRhVHlwZXMgY2FjaGVBbmRDb29raWVUeXBlcyA9
IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhVHlwZXM+KFdFQktJVF9XRUJTSVRFX0RBVEFf
Q09PS0lFUyB8IFdFQktJVF9XRUJTSVRFX0RBVEFfTUVNT1JZX0NBQ0hFIHwgV0VCS0lUX1dFQlNJ
VEVfREFUQV9ESVNLX0NBQ0hFKTsKICAgICB0ZXN0LT5jbGVhcihjYWNoZUFuZENvb2tpZVR5cGVz
LCAwKTsKICAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKGNhY2hlQW5kQ29va2llVHlwZXMpOwot
ICAgIGdfYXNzZXJ0KCFkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbnVsbChkYXRhTGlzdCk7CiB9
CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YURldmljZUlkSGFzaFNhbHQoV2Vic2l0ZURh
dGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtNTMyLDE3ICs1MzIsMTcgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYnNpdGVEYXRhRGV2aWNlSWRIYXNoU2FsdChXZWJzaXRlRGF0YVRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIKICAgICB0ZXN0LT5jbGVhcihXRUJLSVRfV0VCU0lURV9EQVRBX0RF
VklDRV9JRF9IQVNIX1NBTFQsIDApOwogCiAgICAgR0xpc3QqIGRhdGFMaXN0ID0gdGVzdC0+ZmV0
Y2goV0VCS0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURfSEFTSF9TQUxUKTsKLSAgICBnX2Fzc2Vy
dCghZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X251bGwoZGF0YUxpc3QpOwogCiAgICAgdGVzdC0+
bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvZW51bWVyYXRlZGV2aWNlcyIpLmRhdGEo
KSk7CiAgICAgdGVzdC0+d2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oIkZpbmlzaGVkIik7CiAKICAg
ICBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKFdFQktJVF9XRUJTSVRFX0RBVEFfREVWSUNFX0lEX0hB
U0hfU0FMVCk7Ci0gICAgZ19hc3NlcnQoZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X25vbm51bGwo
ZGF0YUxpc3QpOwogCiAgICAgZ19hc3NlcnRfY21wdWludChnX2xpc3RfbGVuZ3RoKGRhdGFMaXN0
KSwgPT0sIDEpOwogICAgIFdlYktpdFdlYnNpdGVEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8V2Vi
S2l0V2Vic2l0ZURhdGEqPihkYXRhTGlzdC0+ZGF0YSk7Ci0gICAgZ19hc3NlcnQoZGF0YSk7Cisg
ICAgZ19hc3NlcnRfbm9ubnVsbChkYXRhKTsKICAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiogb3Jp
Z2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXdfZm9yX3VyaShrU2VydmVyLT5nZXRVUklG
b3JQYXRoKCIvIikuZGF0YSgpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNpdGVf
ZGF0YV9nZXRfbmFtZShkYXRhKSwgPT0sIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qo
b3JpZ2luKSk7CiAgICAgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZihvcmlnaW4pOwpAQCAt
NTUxLDI3ICs1NTEsMjcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhRGV2aWNlSWRIYXNo
U2FsdChXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIKICAgICBHTGlzdCByZW1v
dmVMaXN0ID0geyBkYXRhLCBudWxscHRyLCBudWxscHRyIH07CiAgICAgdGVzdC0+cmVtb3ZlKFdF
QktJVF9XRUJTSVRFX0RBVEFfREVWSUNFX0lEX0hBU0hfU0FMVCwgJnJlbW92ZUxpc3QpOwogICAg
IGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goV0VCS0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURfSEFT
SF9TQUxUKTsKLSAgICBnX2Fzc2VydCghZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X251bGwoZGF0
YUxpc3QpOwogCiAgICAgLy8gVGVzdCByZW1vdmluZyB0aGUgY29va2llcy4KICAgICB0ZXN0LT5s
b2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9lbnVtZXJhdGVkZXZpY2VzIikuZGF0YSgp
KTsKICAgICB0ZXN0LT53YWl0VW50aWxUaXRsZUNoYW5nZWRUbygiRmluaXNoZWQiKTsKIAogICAg
IGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goV0VCS0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURfSEFT
SF9TQUxUKTsKLSAgICBnX2Fzc2VydChkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChk
YXRhTGlzdCk7CiAgICAgZGF0YSA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhKj4oZGF0
YUxpc3QtPmRhdGEpOwotICAgIGdfYXNzZXJ0KGRhdGEpOworICAgIGdfYXNzZXJ0X25vbm51bGwo
ZGF0YSk7CiAKICAgICBHTGlzdCByZW1vdmVDb29raWVMaXN0ID0geyBkYXRhLCBudWxscHRyLCBu
dWxscHRyIH07CiAgICAgdGVzdC0+cmVtb3ZlKFdFQktJVF9XRUJTSVRFX0RBVEFfQ09PS0lFUywg
JnJlbW92ZUNvb2tpZUxpc3QpOwogICAgIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goV0VCS0lUX1dF
QlNJVEVfREFUQV9ERVZJQ0VfSURfSEFTSF9TQUxUKTsKLSAgICBnX2Fzc2VydCghZGF0YUxpc3Qp
OworICAgIGdfYXNzZXJ0X251bGwoZGF0YUxpc3QpOwogCiAgICAgLy8gQ2xlYXIgYWxsLgogICAg
IHN0YXRpYyBjb25zdCBXZWJLaXRXZWJzaXRlRGF0YVR5cGVzIGNhY2hlQW5kQXBwY2FjaGVUeXBl
cyA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhVHlwZXM+KFdFQktJVF9XRUJTSVRFX0RB
VEFfREVWSUNFX0lEX0hBU0hfU0FMVCk7CiAgICAgdGVzdC0+Y2xlYXIoY2FjaGVBbmRBcHBjYWNo
ZVR5cGVzLCAwKTsKICAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKGNhY2hlQW5kQXBwY2FjaGVU
eXBlcyk7Ci0gICAgZ19hc3NlcnQoIWRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9udWxsKGRhdGFM
aXN0KTsKIAogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0
aW5ncywgZW5hYmxlZCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvV2ViRXh0ZW5zaW9uVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKaW5kZXggOTdhNzVlNTE0MWU4ODI3
NGEzM2E5M2E2MjcxMjA1NTdkZWQ0Zjg4Ni4uMGUyOWY0MWNlOWJmY2JlZmVjYWRlNjkwNTljZWJh
YjJjZmI5MTVhZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1dlYkV4dGVuc2lvblRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9XZWJFeHRlbnNpb25UZXN0LmNwcApAQCAtMTgsNyArMTgsNyBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKLQorI2luY2x1ZGUgIldlYlByb2Nlc3NUZXN0LmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxnaW8vZ2lvLmg+CkBAIC0xMzgsNyArMTM4
LDcgQEAgc3RhdGljIHZvaWQgZW1pdERvY3VtZW50TG9hZGVkKEdEQnVzQ29ubmVjdGlvbiogY29u
bmVjdGlvbikKICAgICAgICAgIkRvY3VtZW50TG9hZGVkIiwKICAgICAgICAgMCwKICAgICAgICAg
MCk7Ci0gICAgZ19hc3NlcnQob2spOworICAgIGdfYXNzZXJ0X3RydWUob2spOwogfQogCiBzdGF0
aWMgdm9pZCBkb2N1bWVudExvYWRlZENhbGxiYWNrKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIFdl
YktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQpAQCAtMTY4LDcgKzE2OCw3IEBAIHN0YXRpYyB2
b2lkIGVtaXRVUklDaGFuZ2VkKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hh
ciogdXJpKQogICAgICAgICAiVVJJQ2hhbmdlZCIsCiAgICAgICAgIGdfdmFyaWFudF9uZXcoIihz
KSIsIHVyaSksCiAgICAgICAgIDApOwotICAgIGdfYXNzZXJ0KG9rKTsKKyAgICBnX2Fzc2VydF90
cnVlKG9rKTsKIH0KIAogc3RhdGljIHZvaWQgdXJpQ2hhbmdlZENhbGxiYWNrKFdlYktpdFdlYlBh
Z2UqIHdlYlBhZ2UsIEdQYXJhbVNwZWMqIHBzcGVjLCBXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVu
c2lvbikKQEAgLTE4NCw3ICsxODQsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gc2VuZFJlcXVlc3RDYWxs
YmFjayhXZWJLaXRXZWJQYWdlKiwgV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgVwogewogICAg
IGdib29sZWFuIHJldHVyblZhbHVlID0gRkFMU0U7CiAgICAgY29uc3QgY2hhciogcmVxdWVzdFVS
SSA9IHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpOwotICAgIGdfYXNzZXJ0KHJl
cXVlc3RVUkkpOworICAgIGdfYXNzZXJ0X25vbm51bGwocmVxdWVzdFVSSSk7CiAKICAgICBpZiAo
Y29uc3QgY2hhciogc3VmZml4ID0gZ19zdHJyc3RyKHJlcXVlc3RVUkksICIvcmVtb3ZlLXRoaXMv
amF2YXNjcmlwdC5qcyIpKSB7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gcHJlZml4KGdfc3Ry
bmR1cChyZXF1ZXN0VVJJLCBzdHJsZW4ocmVxdWVzdFVSSSkgLSBzdHJsZW4oc3VmZml4KSkpOwpA
QCAtMTkyLDE4ICsxOTIsMTggQEAgc3RhdGljIGdib29sZWFuIHNlbmRSZXF1ZXN0Q2FsbGJhY2so
V2ViS2l0V2ViUGFnZSosIFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QsIFcKICAgICAgICAgd2Vi
a2l0X3VyaV9yZXF1ZXN0X3NldF91cmkocmVxdWVzdCwgbmV3VVJJLmdldCgpKTsKICAgICB9IGVs
c2UgaWYgKGNvbnN0IGNoYXIqIHN1ZmZpeCA9IGdfc3RycnN0cihyZXF1ZXN0VVJJLCAiL3JlbW92
ZS10aGlzL2phdmFzY3JpcHQtYWZ0ZXItcmVkaXJlY3Rpb24uanMiKSkgewogICAgICAgICAvLyBS
ZWRpcmVjdGVkIGZyb20gL3JlZGlyZWN0ZWQuanMsIHJlZGlyZWN0UmVzcG9uc2Ugc2hvdWxkIGJl
IG51bGxwdHIuCi0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19VUklfUkVTUE9OU0UocmVkaXJl
Y3RSZXNwb25zZSkpOwotICAgICAgICBnX2Fzc2VydChnX3N0cl9oYXNfc3VmZml4KHdlYmtpdF91
cmlfcmVzcG9uc2VfZ2V0X3VyaShyZWRpcmVjdFJlc3BvbnNlKSwgIi9yZWRpcmVjdGVkLmpzIikp
OworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19VUklfUkVTUE9OU0UocmVkaXJlY3RS
ZXNwb25zZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKGdfc3RyX2hhc19zdWZmaXgod2Via2l0
X3VyaV9yZXNwb25zZV9nZXRfdXJpKHJlZGlyZWN0UmVzcG9uc2UpLCAiL3JlZGlyZWN0ZWQuanMi
KSk7CiAKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBwcmVmaXgoZ19zdHJuZHVwKHJlcXVlc3RV
UkksIHN0cmxlbihyZXF1ZXN0VVJJKSAtIHN0cmxlbihzdWZmaXgpKSk7CiAgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4gbmV3VVJJKGdfc3RyZHVwX3ByaW50ZigiJXMvamF2YXNjcmlwdC1hZnRlci1y
ZWRpcmVjdGlvbi5qcyIsIHByZWZpeC5nZXQoKSkpOwogICAgICAgICB3ZWJraXRfdXJpX3JlcXVl
c3Rfc2V0X3VyaShyZXF1ZXN0LCBuZXdVUkkuZ2V0KCkpOwogICAgIH0gZWxzZSBpZiAoZ19zdHJf
aGFzX3N1ZmZpeChyZXF1ZXN0VVJJLCAiL3JlZGlyZWN0ZWQuanMiKSkgewogICAgICAgICAvLyBP
cmlnaW5hbCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlIHNob3VsZCBiZSBudWxscHRyLgotICAg
ICAgICBnX2Fzc2VydCghcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAgIGdfYXNzZXJ0X251bGwo
cmVkaXJlY3RSZXNwb25zZSk7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfc3VmZml4KHJlcXVl
c3RVUkksICIvYWRkLWRvLW5vdC10cmFjay1oZWFkZXIiKSkgewogICAgICAgICBTb3VwTWVzc2Fn
ZUhlYWRlcnMqIGhlYWRlcnMgPSB3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X2h0dHBfaGVhZGVycyhy
ZXF1ZXN0KTsKLSAgICAgICAgZ19hc3NlcnQoaGVhZGVycyk7CisgICAgICAgIGdfYXNzZXJ0X25v
bm51bGwoaGVhZGVycyk7CiAgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX2FwcGVuZChoZWFk
ZXJzLCAiRE5UIiwgIjEiKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19zdWZmaXgocmVxdWVz
dFVSSSwgIi9ub3JtYWwtY2hhbmdlLXJlcXVlc3QiKSkgewogICAgICAgICBHVW5pcXVlUHRyPGNo
YXI+IHByZWZpeChnX3N0cm5kdXAocmVxdWVzdFVSSSwgc3RybGVuKHJlcXVlc3RVUkkpIC0gc3Ry
bGVuKCIvbm9ybWFsLWNoYW5nZS1yZXF1ZXN0IikpKTsKQEAgLTIxMSwxMCArMjExLDEwIEBAIHN0
YXRpYyBnYm9vbGVhbiBzZW5kUmVxdWVzdENhbGxiYWNrKFdlYktpdFdlYlBhZ2UqLCBXZWJLaXRV
UklSZXF1ZXN0KiByZXF1ZXN0LCBXCiAgICAgICAgIHdlYmtpdF91cmlfcmVxdWVzdF9zZXRfdXJp
KHJlcXVlc3QsIG5ld1VSSS5nZXQoKSk7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfc3VmZml4
KHJlcXVlc3RVUkksICIvaHR0cC1nZXQtbWV0aG9kIikpIHsKICAgICAgICAgZ19hc3NlcnRfY21w
c3RyKHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfaHR0cF9tZXRob2QocmVxdWVzdCksID09LCAiR0VU
Iik7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfaHR0cF9tZXRob2Qo
cmVxdWVzdCkgPT0gU09VUF9NRVRIT0RfR0VUKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHdl
YmtpdF91cmlfcmVxdWVzdF9nZXRfaHR0cF9tZXRob2QocmVxdWVzdCksID09LCBTT1VQX01FVEhP
RF9HRVQpOwogICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3N1ZmZpeChyZXF1ZXN0VVJJLCAiL2h0
dHAtcG9zdC1tZXRob2QiKSkgewogICAgICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3VyaV9y
ZXF1ZXN0X2dldF9odHRwX21ldGhvZChyZXF1ZXN0KSwgPT0sICJQT1NUIik7Ci0gICAgICAgIGdf
YXNzZXJ0KHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfaHR0cF9tZXRob2QocmVxdWVzdCkgPT0gU09V
UF9NRVRIT0RfUE9TVCk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfdXJpX3JlcXVl
c3RfZ2V0X2h0dHBfbWV0aG9kKHJlcXVlc3QpLCA9PSwgU09VUF9NRVRIT0RfUE9TVCk7CiAgICAg
ICAgIHJldHVyblZhbHVlID0gVFJVRTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19zdWZmaXgo
cmVxdWVzdFVSSSwgIi9jYW5jZWwtdGhpcy5qcyIpKQogICAgICAgICByZXR1cm5WYWx1ZSA9IFRS
VUU7CkBAIC0yNzcsNyArMjc3LDcgQEAgc3RhdGljIGdib29sZWFuIGNvbnRleHRNZW51Q2FsbGJh
Y2soV2ViS2l0V2ViUGFnZSogcGFnZSwgV2ViS2l0Q29udGV4dE1lbnUqIG1lbnUKIAogICAgIGlm
ICghZ19zdHJjbXAwKHBhZ2VVUkksICJDb250ZXh0TWVudVRlc3ROb2RlIikpIHsKICAgICAgICAg
V2ViS2l0RE9NTm9kZSogbm9kZSA9IHdlYmtpdF93ZWJfaGl0X3Rlc3RfcmVzdWx0X2dldF9ub2Rl
KGhpdFRlc3RSZXN1bHQpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX05PREUobm9k
ZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfTk9ERShub2RlKSk7CiAg
ICAgICAgIGF1dG8qIGZyYW1lID0gd2Via2l0X3dlYl9wYWdlX2dldF9tYWluX2ZyYW1lKHBhZ2Up
OwogICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiBqc05vZGUgPSBhZG9wdEdSZWYod2Via2l0X2Zy
YW1lX2dldF9qc192YWx1ZV9mb3JfZG9tX29iamVjdChmcmFtZSwgV0VCS0lUX0RPTV9PQkpFQ1Qo
bm9kZSkpKTsKICAgICAgICAgd2Via2l0X2NvbnRleHRfbWVudV9zZXRfdXNlcl9kYXRhKG1lbnUs
IHNlcmlhbGl6ZU5vZGUoanNOb2RlLmdldCgpKSk7CkBAIC0yODksMTcgKzI4OSwxNyBAQCBzdGF0
aWMgZ2Jvb2xlYW4gY29udGV4dE1lbnVDYWxsYmFjayhXZWJLaXRXZWJQYWdlKiBwYWdlLCBXZWJL
aXRDb250ZXh0TWVudSogbWVudQogCiBzdGF0aWMgdm9pZCBjb25zb2xlTWVzc2FnZVNlbnRDYWxs
YmFjayhXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBXZWJLaXRDb25zb2xlTWVzc2FnZSogY29uc29s
ZU1lc3NhZ2UpCiB7Ci0gICAgZ19hc3NlcnQoY29uc29sZU1lc3NhZ2UpOworICAgIGdfYXNzZXJ0
X25vbm51bGwoY29uc29sZU1lc3NhZ2UpOwogICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZhcmlhbnQg
PSBnX3ZhcmlhbnRfbmV3KCIodXVzdXMpIiwgd2Via2l0X2NvbnNvbGVfbWVzc2FnZV9nZXRfc291
cmNlKGNvbnNvbGVNZXNzYWdlKSwKICAgICAgICAgd2Via2l0X2NvbnNvbGVfbWVzc2FnZV9nZXRf
bGV2ZWwoY29uc29sZU1lc3NhZ2UpLCB3ZWJraXRfY29uc29sZV9tZXNzYWdlX2dldF90ZXh0KGNv
bnNvbGVNZXNzYWdlKSwKICAgICAgICAgd2Via2l0X2NvbnNvbGVfbWVzc2FnZV9nZXRfbGluZShj
b25zb2xlTWVzc2FnZSksIHdlYmtpdF9jb25zb2xlX21lc3NhZ2VfZ2V0X3NvdXJjZV9pZChjb25z
b2xlTWVzc2FnZSkpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gbWVzc2FnZVN0cmluZyhnX3Zhcmlh
bnRfcHJpbnQodmFyaWFudC5nZXQoKSwgRkFMU0UpKTsKICAgICBHUmVmUHRyPEpTQ0NvbnRleHQ+
IGpzQ29udGV4dCA9IGFkb3B0R1JlZih3ZWJraXRfZnJhbWVfZ2V0X2pzX2NvbnRleHQod2Via2l0
X3dlYl9wYWdlX2dldF9tYWluX2ZyYW1lKHdlYlBhZ2UpKSk7CiAgICAgR1JlZlB0cjxKU0NWYWx1
ZT4gY29uc29sZSA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9ldmFsdWF0ZShqc0NvbnRleHQuZ2V0
KCksICJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5jb25zb2xlIiwgLTEpKTsKLSAgICBn
X2Fzc2VydChKU0NfSVNfVkFMVUUoY29uc29sZS5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3RydWUo
SlNDX0lTX1ZBTFVFKGNvbnNvbGUuZ2V0KCkpKTsKICAgICBpZiAoanNjX3ZhbHVlX2lzX29iamVj
dChjb25zb2xlLmdldCgpKSkgewogICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiByZXN1bHQgPSBh
ZG9wdEdSZWYoanNjX3ZhbHVlX29iamVjdF9pbnZva2VfbWV0aG9kKGNvbnNvbGUuZ2V0KCksICJw
b3N0TWVzc2FnZSIsIEdfVFlQRV9TVFJJTkcsIG1lc3NhZ2VTdHJpbmcuZ2V0KCksIEdfVFlQRV9O
T05FKSk7Ci0gICAgICAgIGdfYXNzZXJ0KEpTQ19JU19WQUxVRShyZXN1bHQuZ2V0KCkpKTsKKyAg
ICAgICAgZ19hc3NlcnRfdHJ1ZShKU0NfSVNfVkFMVUUocmVzdWx0LmdldCgpKSk7CiAgICAgfQog
fQogCkBAIC0zMTMsNyArMzEzLDcgQEAgc3RhdGljIHZvaWQgZW1pdEZvcm1Db250cm9sc0Fzc29j
aWF0ZWQoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBjaGFyKgogICAgICAgICAi
Rm9ybUNvbnRyb2xzQXNzb2NpYXRlZCIsCiAgICAgICAgIGdfdmFyaWFudF9uZXcoIihzKSIsIGZv
cm1JZHMpLAogICAgICAgICBudWxscHRyKTsKLSAgICBnX2Fzc2VydChvayk7CisgICAgZ19hc3Nl
cnRfdHJ1ZShvayk7CiB9CiAKIHN0YXRpYyB2b2lkIGZvcm1Db250cm9sc0Fzc29jaWF0ZWRDYWxs
YmFjayhXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBHUHRyQXJyYXkqIGZvcm1FbGVtZW50cywgV2Vi
S2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCkBAIC0zMjEsMTEgKzMyMSwxMSBAQCBzdGF0aWMg
dm9pZCBmb3JtQ29udHJvbHNBc3NvY2lhdGVkQ2FsbGJhY2soV2ViS2l0V2ViUGFnZSogd2ViUGFn
ZSwgR1B0ckFycmF5KiBmbwogICAgIGF1dG8qIGZyYW1lID0gd2Via2l0X3dlYl9wYWdlX2dldF9t
YWluX2ZyYW1lKHdlYlBhZ2UpOwogICAgIEdTdHJpbmcqIGZvcm1JZHNCdWlsZGVyID0gZ19zdHJp
bmdfbmV3KG51bGxwdHIpOwogICAgIGZvciAoZ3VpbnQgaSA9IDA7IGkgPCBmb3JtRWxlbWVudHMt
PmxlbjsgKytpKSB7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRUxFTUVOVChnX3B0
cl9hcnJheV9pbmRleChmb3JtRWxlbWVudHMsIGkpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUo
V0VCS0lUX0RPTV9JU19FTEVNRU5UKGdfcHRyX2FycmF5X2luZGV4KGZvcm1FbGVtZW50cywgaSkp
KTsKICAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gdmFsdWUgPSBhZG9wdEdSZWYod2Via2l0X2Zy
YW1lX2dldF9qc192YWx1ZV9mb3JfZG9tX29iamVjdChmcmFtZSwgV0VCS0lUX0RPTV9PQkpFQ1Qo
Z19wdHJfYXJyYXlfaW5kZXgoZm9ybUVsZW1lbnRzLCBpKSkpKTsKLSAgICAgICAgZ19hc3NlcnQo
SlNDX0lTX1ZBTFVFKHZhbHVlLmdldCgpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KGpzY192YWx1ZV9p
c19vYmplY3QodmFsdWUuZ2V0KCkpKTsKLSAgICAgICAgZ19hc3NlcnQoanNjX3ZhbHVlX29iamVj
dF9pc19pbnN0YW5jZV9vZih2YWx1ZS5nZXQoKSwgIkVsZW1lbnQiKSk7CisgICAgICAgIGdfYXNz
ZXJ0X3RydWUoSlNDX0lTX1ZBTFVFKHZhbHVlLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3Ry
dWUoanNjX3ZhbHVlX2lzX29iamVjdCh2YWx1ZS5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90
cnVlKGpzY192YWx1ZV9vYmplY3RfaXNfaW5zdGFuY2Vfb2YodmFsdWUuZ2V0KCksICJFbGVtZW50
IikpOwogICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiBpZFZhbHVlID0gYWRvcHRHUmVmKGpzY192
YWx1ZV9vYmplY3RfZ2V0X3Byb3BlcnR5KHZhbHVlLmdldCgpLCAiaWQiKSk7CiAgICAgICAgIEdV
bmlxdWVQdHI8Y2hhcj4gZWxlbWVudElEKGpzY192YWx1ZV90b19zdHJpbmcoaWRWYWx1ZS5nZXQo
KSkpOwogICAgICAgICBnX3N0cmluZ19hcHBlbmQoZm9ybUlkc0J1aWxkZXIsIGVsZW1lbnRJRC5n
ZXQoKSk7CkBAIC0zNTIsNyArMzUyLDcgQEAgc3RhdGljIHZvaWQgZW1pdEZvcm1TdWJtaXNzaW9u
RXZlbnQoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBjaGFyKiBtZXQKICAgICAg
ICAgbWV0aG9kTmFtZSwKICAgICAgICAgZ192YXJpYW50X25ldygiKHNzc2JiKSIsIGZvcm1JRCA/
IGZvcm1JRCA6ICIiLCBuYW1lcywgdmFsdWVzLCB0YXJnZXRGcmFtZUlzTWFpbkZyYW1lLCBzb3Vy
Y2VGcmFtZUlzTWFpbkZyYW1lKSwKICAgICAgICAgbnVsbHB0cik7Ci0gICAgZ19hc3NlcnQob2sp
OworICAgIGdfYXNzZXJ0X3RydWUob2spOwogfQogCiBzdGF0aWMgdm9pZCBoYW5kbGVGb3JtU3Vi
bWlzc2lvbkNhbGxiYWNrKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIERlbGF5ZWRTaWduYWxUeXBl
IGRlbGF5ZWRTaWduYWxUeXBlLCBjb25zdCBjaGFyKiBtZXRob2ROYW1lLCBjb25zdCBjaGFyKiBm
b3JtSUQsIFdlYktpdEZyYW1lKiBzb3VyY2VGcmFtZSwgV2ViS2l0RnJhbWUqIHRhcmdldEZyYW1l
LCBHUHRyQXJyYXkqIHRleHRGaWVsZE5hbWVzLCBHUHRyQXJyYXkqIHRleHRGaWVsZFZhbHVlcywg
V2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCkBAIC0zODQsMTMgKzM4NCwxMyBAQCBzdGF0
aWMgdm9pZCB3aWxsU3VibWl0Rm9ybUNhbGxiYWNrKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIFdl
YktpdERPTUVsZW1lbnQqIGZvcgogewogI2lmIFBMQVRGT1JNKEdUSykKICAgICBHX0dOVUNfQkVH
SU5fSUdOT1JFX0RFUFJFQ0FUSU9OUzsKLSAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxf
Rk9STV9FTEVNRU5UKGZvcm1FbGVtZW50KSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9N
X0lTX0hUTUxfRk9STV9FTEVNRU5UKGZvcm1FbGVtZW50KSk7CiAgICAgR19HTlVDX0VORF9JR05P
UkVfREVQUkVDQVRJT05TOwogI2VuZGlmCiAgICAgR1JlZlB0cjxKU0NWYWx1ZT4ganNGb3JtRWxl
bWVudCA9IGFkb3B0R1JlZih3ZWJraXRfZnJhbWVfZ2V0X2pzX3ZhbHVlX2Zvcl9kb21fb2JqZWN0
KHdlYmtpdF93ZWJfcGFnZV9nZXRfbWFpbl9mcmFtZSh3ZWJQYWdlKSwgV0VCS0lUX0RPTV9PQkpF
Q1QoZm9ybUVsZW1lbnQpKSk7Ci0gICAgZ19hc3NlcnQoSlNDX0lTX1ZBTFVFKGpzRm9ybUVsZW1l
bnQuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydChqc2NfdmFsdWVfaXNfb2JqZWN0KGpzRm9ybUVsZW1l
bnQuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydChqc2NfdmFsdWVfb2JqZWN0X2lzX2luc3RhbmNlX29m
KGpzRm9ybUVsZW1lbnQuZ2V0KCksICJIVE1MRm9ybUVsZW1lbnQiKSk7CisgICAgZ19hc3NlcnRf
dHJ1ZShKU0NfSVNfVkFMVUUoanNGb3JtRWxlbWVudC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3Ry
dWUoanNjX3ZhbHVlX2lzX29iamVjdChqc0Zvcm1FbGVtZW50LmdldCgpKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZShqc2NfdmFsdWVfb2JqZWN0X2lzX2luc3RhbmNlX29mKGpzRm9ybUVsZW1lbnQuZ2V0
KCksICJIVE1MRm9ybUVsZW1lbnQiKSk7CiAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gaWRWYWx1ZSA9
IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0eShqc0Zvcm1FbGVtZW50Lmdl
dCgpLCAiaWQiKSk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBmb3JtSUQoanNjX3ZhbHVlX3RvX3N0
cmluZyhpZFZhbHVlLmdldCgpKSk7CiAKQEAgLTQyNSw3ICs0MjUsNyBAQCBzdGF0aWMgY2hhciog
ZWNob0NhbGxiYWNrKGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiBzdGF0aWMgdm9pZCB3aW5kb3dPYmpl
Y3RDbGVhcmVkKFdlYktpdFNjcmlwdFdvcmxkKiB3b3JsZCwgV2ViS2l0V2ViUGFnZSogcGFnZSwg
V2ViS2l0RnJhbWUqIGZyYW1lLCBncG9pbnRlcikKIHsKICAgICBHUmVmUHRyPEpTQ0NvbnRleHQ+
IGpzQ29udGV4dCA9IGFkb3B0R1JlZih3ZWJraXRfZnJhbWVfZ2V0X2pzX2NvbnRleHRfZm9yX3Nj
cmlwdF93b3JsZChmcmFtZSwgd29ybGQpKTsKLSAgICBnX2Fzc2VydChKU0NfSVNfQ09OVEVYVChq
c0NvbnRleHQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKEpTQ19JU19DT05URVhUKGpzQ29u
dGV4dC5nZXQoKSkpOwogICAgIEdSZWZQdHI8SlNDVmFsdWU+IGZ1bmN0aW9uID0gYWRvcHRHUmVm
KGpzY192YWx1ZV9uZXdfZnVuY3Rpb24oanNDb250ZXh0LmdldCgpLCAiZWNobyIsIEdfQ0FMTEJB
Q0soZWNob0NhbGxiYWNrKSwgTlVMTCwgTlVMTCwgR19UWVBFX1NUUklORywgMSwgR19UWVBFX1NU
UklORykpOwogICAgIGpzY19jb250ZXh0X3NldF92YWx1ZShqc0NvbnRleHQuZ2V0KCksICJlY2hv
IiwgZnVuY3Rpb24uZ2V0KCkpOwogfQpAQCAtNDg1LDggKzQ4NSw4IEBAIHN0YXRpYyB2b2lkIG1l
dGhvZENhbGxDYWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIq
IHNlbmRlciwKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBHUmVmUHRyPFdlYktpdFNj
cmlwdFdvcmxkPiB3b3JsZCA9IGFkb3B0R1JlZih3ZWJraXRfc2NyaXB0X3dvcmxkX25ldygpKTsK
LSAgICAgICAgZ19hc3NlcnQod2Via2l0X3NjcmlwdF93b3JsZF9nZXRfZGVmYXVsdCgpICE9IHdv
cmxkLmdldCgpKTsKLSAgICAgICAgZ19hc3NlcnQoZ19zdHJfaGFzX3ByZWZpeCh3ZWJraXRfc2Ny
aXB0X3dvcmxkX2dldF9uYW1lKHdvcmxkLmdldCgpKSwgIlVuaXF1ZVdvcmxkXyIpKTsKKyAgICAg
ICAgZ19hc3NlcnRfY21waGV4KHdlYmtpdF9zY3JpcHRfd29ybGRfZ2V0X2RlZmF1bHQoKSwgIT0s
IHdvcmxkLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShnX3N0cl9oYXNfcHJlZml4KHdl
YmtpdF9zY3JpcHRfd29ybGRfZ2V0X25hbWUod29ybGQuZ2V0KCkpLCAiVW5pcXVlV29ybGRfIikp
OwogICAgICAgICBXZWJLaXRGcmFtZSogZnJhbWUgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5f
ZnJhbWUocGFnZSk7CiAgICAgICAgIEdSZWZQdHI8SlNDQ29udGV4dD4ganNDb250ZXh0ID0gYWRv
cHRHUmVmKHdlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkKGZyYW1l
LCB3b3JsZC5nZXQoKSkpOwogICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiByZXN1bHQgPSBhZG9w
dEdSZWYoanNjX2NvbnRleHRfZXZhbHVhdGUoanNDb250ZXh0LmdldCgpLCBzY3JpcHQsIC0xKSk7
CkBAIC01NjEsNyArNTYxLDcgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJHUmVzb3VyY2Uodm9pZCkK
IHsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNlc1BhdGgoZ19idWlsZF9maWxlbmFtZShX
RUJLSVRfVEVTVF9SRVNPVVJDRVNfRElSLCAid2Via2l0Z2xpYi10ZXN0cy1yZXNvdXJjZXMuZ3Jl
c291cmNlIiwgbnVsbHB0cikpOwogICAgIEdSZXNvdXJjZSogcmVzb3VyY2UgPSBnX3Jlc291cmNl
X2xvYWQocmVzb3VyY2VzUGF0aC5nZXQoKSwgbnVsbHB0cik7Ci0gICAgZ19hc3NlcnQocmVzb3Vy
Y2UpOworICAgIGdfYXNzZXJ0X25vbm51bGwocmVzb3VyY2UpOwogCiAgICAgZ19yZXNvdXJjZXNf
cmVnaXN0ZXIocmVzb3VyY2UpOwogICAgIGdfcmVzb3VyY2VfdW5yZWYocmVzb3VyY2UpOwpAQCAt
NTcwLDcgKzU3MCw3IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyR1Jlc291cmNlKHZvaWQpCiBleHRl
cm4gIkMiIHZvaWQgd2Via2l0X3dlYl9leHRlbnNpb25faW5pdGlhbGl6ZV93aXRoX3VzZXJfZGF0
YShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgR1ZhcmlhbnQqIHVzZXJEYXRhKQogewog
ICAgIFdlYktpdFNjcmlwdFdvcmxkKiBpc29sYXRlZFdvcmxkID0gd2Via2l0X3NjcmlwdF93b3Js
ZF9uZXdfd2l0aF9uYW1lKCJXZWJFeHRlbnNpb25UZXN0U2NyaXB0V29ybGQiKTsKLSAgICBnX2Fz
c2VydChXRUJLSVRfSVNfU0NSSVBUX1dPUkxEKGlzb2xhdGVkV29ybGQpKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKFdFQktJVF9JU19TQ1JJUFRfV09STEQoaXNvbGF0ZWRXb3JsZCkpOwogICAgIGdfYXNz
ZXJ0X2NtcHN0cih3ZWJraXRfc2NyaXB0X3dvcmxkX2dldF9uYW1lKGlzb2xhdGVkV29ybGQpLCA9
PSwgIldlYkV4dGVuc2lvblRlc3RTY3JpcHRXb3JsZCIpOwogICAgIGdfb2JqZWN0X3NldF9kYXRh
X2Z1bGwoR19PQkpFQ1QoZXh0ZW5zaW9uKSwgIndrLXNjcmlwdC13b3JsZCIsIGlzb2xhdGVkV29y
bGQsIGdfb2JqZWN0X3VucmVmKTsKIApAQCAtNTc5LDggKzU3OSw4IEBAIGV4dGVybiAiQyIgdm9p
ZCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0aWFsaXplX3dpdGhfdXNlcl9kYXRhKFdlYktpdFdl
YkV4dGVuc2lvCiAKICAgICByZWdpc3RlckdSZXNvdXJjZSgpOwogCi0gICAgZ19hc3NlcnQodXNl
ckRhdGEpOwotICAgIGdfYXNzZXJ0KGdfdmFyaWFudF9pc19vZl90eXBlKHVzZXJEYXRhLCBHX1ZB
UklBTlRfVFlQRV9VSU5UMzIpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHVzZXJEYXRhKTsKKyAg
ICBnX2Fzc2VydF90cnVlKGdfdmFyaWFudF9pc19vZl90eXBlKHVzZXJEYXRhLCBHX1ZBUklBTlRf
VFlQRV9VSU5UMzIpKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGJ1c05hbWUoZ19zdHJkdXBfcHJp
bnRmKCJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0JXUiLCBnX3ZhcmlhbnRfZ2V0X3Vp
bnQzMih1c2VyRGF0YSkpKTsKICAgICBnX2J1c19vd25fbmFtZSgKICAgICAgICAgR19CVVNfVFlQ
RV9TRVNTSU9OLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1dlYlByb2Nlc3NUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9XZWJQcm9jZXNzVGVzdC5jcHAKaW5kZXggZGEwNmY0MmRlNGZiOWZmMzhmZjkzYTJkNGU5
NzY2NWE0ZWQyYmUyYy4uZjQ0MWE3MTlhODIzNjgyZTNhMTc4NThjNzUwYTE0ZGJkN2RkOGQ4YSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nl
c3NUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2Vi
UHJvY2Vzc1Rlc3QuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrTGVha3Mo
KQogICAgICAgICBnX3ByaW50KCIgJXMoJXApIiwgZ190eXBlX25hbWVfZnJvbV9pbnN0YW5jZShy
ZWludGVycHJldF9jYXN0PEdUeXBlSW5zdGFuY2UqPihvYmplY3QpKSwgb2JqZWN0KTsKICAgICBn
X3ByaW50KCJcbiIpOwogCi0gICAgZ19hc3NlcnQoc193YXRjaGVkT2JqZWN0cy5pc0VtcHR5KCkp
OworICAgIGdfYXNzZXJ0X3RydWUoc193YXRjaGVkT2JqZWN0cy5pc0VtcHR5KCkpOwogfQogCiB2
b2lkIFdlYlByb2Nlc3NUZXN0OjphZGQoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSwgc3RkOjpmdW5j
dGlvbjxzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+ICgpPiBjbG9zdXJlKQpAQCAtNjQs
MTUgKzY0LDE1IEBAIHZvaWQgV2ViUHJvY2Vzc1Rlc3Q6OmFzc2VydE9iamVjdElzRGVsZXRlZFdo
ZW5UZXN0RmluaXNoZXMoR09iamVjdCogb2JqZWN0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJv
Y2Vzc1Rlc3Q+IFdlYlByb2Nlc3NUZXN0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSkK
IHsKLSAgICBnX2Fzc2VydCh0ZXN0c01hcCgpLmNvbnRhaW5zKHRlc3ROYW1lKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh0ZXN0c01hcCgpLmNvbnRhaW5zKHRlc3ROYW1lKSk7CiAgICAgcmV0dXJuIHRl
c3RzTWFwKCkuZ2V0KHRlc3ROYW1lKSgpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gcnVuVGVzdChX
ZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBjb25zdCBjaGFyKiB0ZXN0UGF0aCkKIHsKLSAgICBnX2Fz
c2VydChXRUJLSVRfSVNfV0VCX1BBR0Uod2ViUGFnZSkpOworICAgIGdfYXNzZXJ0X3RydWUoV0VC
S0lUX0lTX1dFQl9QQUdFKHdlYlBhZ2UpKTsKICAgICBXZWJQcm9jZXNzVGVzdDo6YXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJQYWdlKSk7Ci0gICAgZ19h
c3NlcnQodGVzdFBhdGgpOworICAgIGdfYXNzZXJ0X25vbm51bGwodGVzdFBhdGgpOwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiB0ZXN0ID0gV2ViUHJvY2Vzc1Rlc3Q6OmNy
ZWF0ZShTdHJpbmc6OmZyb21VVEY4KHRlc3RQYXRoKSk7CiAgICAgcmV0dXJuIHRlc3QtPnJ1blRl
c3QoZ19zdHJyc3RyKHRlc3RQYXRoLCAiLyIpICsgMSwgd2ViUGFnZSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCmluZGV4
IDdhNDRjYjA1Y2Q0YmMwMjdlMTJkMTEwM2ZhZjZhMDA3YWM2ZjQwZjMuLmUwZjYzYjkzODdkZDY0
YzU3NTU3NTQ2OTUyYTMwNmFhOTVhYzNhMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oCkBAIC0xNyw2ICsxNyw4IEBA
CiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCisjaW5jbHVkZSAiVGVzdFV0
aWxzLmgiCisKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvQXV0b2NsZWFudXBzVGVzdC5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9BdXRvY2xlYW51cHNUZXN0LmNwcAppbmRleCAwZWRl
NzJmYWM0NmQzNWE4MjBkNGIxNWEyYzIzYTRkNDg5OTA5OWJmLi5mNzljZjM0NTE4MjlmNGY1MjZj
Y2JkM2E2NWFkY2E5NzZjYjI5NDM4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9BdXRvY2xlYW51cHNUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEd0ay9BdXRvY2xlYW51cHNUZXN0LmNwcApAQCAtMzMsMjUgKzMzLDI1
IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICAvLyBUcmFuc2ZlciBub25lCiAgICAgICAgIGdf
YXV0b3B0cihXZWJLaXRXZWJQYWdlKSBwYWdlID0gV0VCS0lUX1dFQl9QQUdFKGdfb2JqZWN0X3Jl
ZihHX09CSkVDVCh3ZWJQYWdlKSkpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfSVNfV0VCX1BB
R0UocGFnZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19XRUJfUEFHRShwYWdl
KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpF
Q1QocGFnZSkpOwogCiAgICAgICAgIC8vIFRyYW5zZmVyIG5vbmUKICAgICAgICAgZ19hdXRvcHRy
KFdlYktpdERPTURvY3VtZW50KSBkb2N1bWVudCA9IFdFQktJVF9ET01fRE9DVU1FTlQoZ19vYmpl
Y3RfcmVmKEdfT0JKRUNUKHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpKSkp
OwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7Cisg
ICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOwog
ICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRv
Y3VtZW50KSk7CiAKICAgICAgICAgLy8gVHJhbnNmZXIgZnVsbAogICAgICAgICBHX0dOVUNfQkVH
SU5fSUdOT1JFX0RFUFJFQ0FUSU9OUzsKICAgICAgICAgZ19hdXRvcHRyKFdlYktpdERPTURPTVdp
bmRvdykgd2luZG93ID0gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZGVmYXVsdF92aWV3KGRvY3Vt
ZW50KTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19ET01fV0lORE9XKHdpbmRvdykp
OworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfRE9NX1dJTkRPVyh3aW5kb3cp
KTsKICAgICAgICAgR19HTlVDX0VORF9JR05PUkVfREVQUkVDQVRJT05TOwogICAgICAgICBhc3Nl
cnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdpbmRvdykpOwogCiAg
ICAgICAgIC8vIFRyYW5zZmVyIGZ1bGwKICAgICAgICAgR19HTlVDX0JFR0lOX0lHTk9SRV9ERVBS
RUNBVElPTlM7CiAgICAgICAgIGdfYXV0b3B0cihXZWJLaXRET01SYW5nZSkgcmFuZ2UgPSB3ZWJr
aXRfZG9tX2RvY3VtZW50X2NyZWF0ZV9yYW5nZShkb2N1bWVudCk7Ci0gICAgICAgIGdfYXNzZXJ0
KFdFQktJVF9ET01fSVNfUkFOR0UocmFuZ2UpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJL
SVRfRE9NX0lTX1JBTkdFKHJhbmdlKSk7CiAgICAgICAgIEdfR05VQ19FTkRfSUdOT1JFX0RFUFJF
Q0FUSU9OUzsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhH
X09CSkVDVChyYW5nZSkpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEd0ay9ET01DbGllbnRSZWN0VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9ET01DbGllbnRSZWN0VGVzdC5jcHAKaW5kZXggMjBjZGZlNWVmOTFjNDFj
MjE1MDRmMTFjODVjODQxNjhmMTFlMTExNS4uMmUwZDE4NjBkNWI4OGJiYjQ0YzM3M2U0MzE0MzFm
MzEyNmY2MmFkZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
dGsvRE9NQ2xpZW50UmVjdFRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL0RPTUNsaWVudFJlY3RUZXN0LmNwcApAQCAtNDUsMTUgKzQ1LDE1IEBAIHByaXZh
dGU6CiAgICAgYm9vbCB0ZXN0RGl2Qm91bmRpbmdDbGllbnRSZWN0UG9zaXRpb24oV2ViS2l0V2Vi
UGFnZSogcGFnZSkKICAgICB7CiAgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9
IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOwotICAgICAgICBnX2Fzc2Vy
dChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CisgICAgICAgIGdfYXNzZXJ0X3Ry
dWUoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOwogICAgICAgICBhc3NlcnRPYmpl
Y3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRvY3VtZW50KSk7CiAKICAgICAg
ICAgV2ViS2l0RE9NRWxlbWVudCogZGl2ID0gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVu
dF9ieV9pZChkb2N1bWVudCwgInJlY3QiKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9J
U19IVE1MX0VMRU1FTlQoZGl2KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9J
U19IVE1MX0VMRU1FTlQoZGl2KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5U
ZXN0RmluaXNoZXMoR19PQkpFQ1QoZGl2KSk7CiAKICAgICAgICAgR1JlZlB0cjxXZWJLaXRET01D
bGllbnRSZWN0PiBjbGllbnRSZWN0ID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fZWxlbWVudF9nZXRf
Ym91bmRpbmdfY2xpZW50X3JlY3QoZGl2KSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01f
SVNfQ0xJRU5UX1JFQ1QoY2xpZW50UmVjdC5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVl
KFdFQktJVF9ET01fSVNfQ0xJRU5UX1JFQ1QoY2xpZW50UmVjdC5nZXQoKSkpOwogICAgICAgICBh
c3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGNsaWVudFJlY3Qu
Z2V0KCkpKTsKICAgICAgICAgY2hlY2tDbGllbnRSZWN0UG9zaXRpb24oY2xpZW50UmVjdC5nZXQo
KSk7CiAKQEAgLTYzLDI3ICs2MywyNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdGVzdERpdkNsaWVu
dFJlY3RzUG9zaXRpb25BbmRMZW5ndGgoV2ViS2l0V2ViUGFnZSogcGFnZSkKICAgICB7CiAgICAg
ICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9t
X2RvY3VtZW50KHBhZ2UpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5U
KGRvY3VtZW50KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19ET0NVTUVO
VChkb2N1bWVudCkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlz
aGVzKEdfT0JKRUNUKGRvY3VtZW50KSk7CiAKICAgICAgICAgV2ViS2l0RE9NRWxlbWVudCogZGl2
ID0gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudF9ieV9pZChkb2N1bWVudCwgInJlY3Qi
KTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19IVE1MX0VMRU1FTlQoZGl2KSk7Cisg
ICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19IVE1MX0VMRU1FTlQoZGl2KSk7CiAg
ICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZGl2
KSk7CiAKICAgICAgICAgR1JlZlB0cjxXZWJLaXRET01DbGllbnRSZWN0TGlzdD4gY2xpZW50UmVj
dExpc3QgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9lbGVtZW50X2dldF9jbGllbnRfcmVjdHMoZGl2
KSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfQ0xJRU5UX1JFQ1RfTElTVChjbGll
bnRSZWN0TGlzdC5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNf
Q0xJRU5UX1JFQ1RfTElTVChjbGllbnRSZWN0TGlzdC5nZXQoKSkpOwogICAgICAgICBhc3NlcnRP
YmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGNsaWVudFJlY3RMaXN0Lmdl
dCgpKSk7CiAKICAgICAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfZG9tX2NsaWVudF9yZWN0
X2xpc3RfZ2V0X2xlbmd0aChjbGllbnRSZWN0TGlzdC5nZXQoKSksID09LCAxKTsKIAogICAgICAg
ICBHUmVmUHRyPFdlYktpdERPTUNsaWVudFJlY3Q+IGNsaWVudFJlY3QgPSBhZG9wdEdSZWYod2Vi
a2l0X2RvbV9jbGllbnRfcmVjdF9saXN0X2l0ZW0oY2xpZW50UmVjdExpc3QuZ2V0KCksIDApKTsK
LSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19DTElFTlRfUkVDVChjbGllbnRSZWN0Lmdl
dCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19DTElFTlRfUkVDVChj
bGllbnRSZWN0LmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0
RmluaXNoZXMoR19PQkpFQ1QoY2xpZW50UmVjdC5nZXQoKSkpOwogICAgICAgICBjaGVja0NsaWVu
dFJlY3RQb3NpdGlvbihjbGllbnRSZWN0LmdldCgpKTsKIAogICAgICAgICAvLyBHZXR0aW5nIHRo
ZSBjbGllbnRSZWN0IHR3aWNlIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgcG9pbnRlci4KICAgICAg
ICAgR1JlZlB0cjxXZWJLaXRET01DbGllbnRSZWN0PiBjbGllbnRSZWN0MiA9IGFkb3B0R1JlZih3
ZWJraXRfZG9tX2NsaWVudF9yZWN0X2xpc3RfaXRlbShjbGllbnRSZWN0TGlzdC5nZXQoKSwgMCkp
OwotICAgICAgICBnX2Fzc2VydChjbGllbnRSZWN0LmdldCgpID09IGNsaWVudFJlY3QyLmdldCgp
KTsKKyAgICAgICAgZ19hc3NlcnRfY21waGV4KGNsaWVudFJlY3QuZ2V0KCksID09LCBjbGllbnRS
ZWN0Mi5nZXQoKSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01ET01XaW5kb3dUZXN0LmNw
cAppbmRleCBmYzhjZWZiNTI5ZDEzN2U2NTZkZWVjMjc5NWE3MWNjYzRiNDI4Nzc1Li4xMjU2MjQx
OTZhNzFjNmQzYWQ1YmNkZDI5ZjE0MmI4NmFiYjlmZDExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01ET01XaW5kb3dUZXN0LmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01ET01XaW5kb3dUZXN0LmNwcApAQCAt
NTQsMTIgKzU0LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIG5vdGlmeSgicmVhZHkiLCAiIik7CiAK
ICAgICAgICAgV2ViS2l0V2ViUGFnZSogcGFnZSA9IHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9w
YWdlKGV4dGVuc2lvbiwgd2ViUGFnZUZyb21BcmdzKGFyZ3MpKTsKLSAgICAgICAgZ19hc3NlcnQo
V0VCS0lUX0lTX1dFQl9QQUdFKHBhZ2UpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRf
SVNfV0VCX1BBR0UocGFnZSkpOwogICAgICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQg
PSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudChwYWdlKTsKLSAgICAgICAgZ19hc3Nl
cnQoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOworICAgICAgICBnX2Fzc2VydF90
cnVlKFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKIAogICAgICAgICBXZWJLaXRE
T01ET01XaW5kb3cqIGRvbVdpbmRvdyA9IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2RlZmF1bHRf
dmlldyhkb2N1bWVudCk7Ci0gICAgICAgIGdfYXNzZXJ0KGRvbVdpbmRvdyk7CisgICAgICAgIGdf
YXNzZXJ0X25vbm51bGwoZG9tV2luZG93KTsKIAogICAgICAgICAvLyBUaGUgImxvYWQiIFdlYktp
dERPTURPTVdpbmRvdyBzaWduYWwgaXMgaXNzdWVkIGJlZm9yZSB0aGlzIHRlc3QgaXMKICAgICAg
ICAgLy8gY2FsbGVkLiBUaGVyZSdzIG5vIHdheSB0byBjYXB0dXJlIGl0IGhlcmUuIFdlIHNpbXBs
eSBhc3N1bWUgdGhhdApAQCAtNzcsMTAgKzc3LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIFJ1bkxv
b3A6OnJ1bigpOwogCiAgICAgICAgIGRvY3VtZW50ID0gd2Via2l0X3dlYl9wYWdlX2dldF9kb21f
ZG9jdW1lbnQocGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRE9DVU1FTlQo
ZG9jdW1lbnQpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0RPQ1VNRU5U
KGRvY3VtZW50KSk7CiAKICAgICAgICAgV2ViS2l0RE9NRWxlbWVudCogZWxlbWVudCA9IHdlYmtp
dF9kb21fZG9jdW1lbnRfZ2V0X2VsZW1lbnRfYnlfaWQoZG9jdW1lbnQsICJ0ZXN0Iik7Ci0gICAg
ICAgIGdfYXNzZXJ0KGVsZW1lbnQpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKGVsZW1lbnQp
OwogCiAgICAgICAgIHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2FkZF9ldmVudF9saXN0ZW5lcigK
ICAgICAgICAgICAgIFdFQktJVF9ET01fRVZFTlRfVEFSR0VUKGVsZW1lbnQpLApAQCAtMTAyLDEy
ICsxMDIsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgbm90aWZ5KCJyZWFkeSIsICIiKTsKIAogICAg
ICAgICBXZWJLaXRXZWJQYWdlKiBwYWdlID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2Uo
ZXh0ZW5zaW9uLCB3ZWJQYWdlRnJvbUFyZ3MoYXJncykpOwotICAgICAgICBnX2Fzc2VydChXRUJL
SVRfSVNfV0VCX1BBR0UocGFnZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19X
RUJfUEFHRShwYWdlKSk7CiAgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdl
YmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOwotICAgICAgICBnX2Fzc2VydChX
RUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUo
V0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOwogCiAgICAgICAgIFdlYktpdERPTURP
TVdpbmRvdyogZG9tV2luZG93ID0gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZGVmYXVsdF92aWV3
KGRvY3VtZW50KTsKLSAgICAgICAgZ19hc3NlcnQoZG9tV2luZG93KTsKKyAgICAgICAgZ19hc3Nl
cnRfbm9ubnVsbChkb21XaW5kb3cpOwogCiAgICAgICAgIC8vIFRoZSAibG9hZCIgV2ViS2l0RE9N
RE9NV2luZG93IHNpZ25hbCBpcyBpc3N1ZWQgYmVmb3JlIHRoaXMgdGVzdCBpcwogICAgICAgICAv
LyBjYWxsZWQuIFRoZXJlJ3Mgbm8gd2F5IHRvIGNhcHR1cmUgaXQgaGVyZS4gV2Ugc2ltcGx5IGFz
c3VtZSB0aGF0CkBAIC0xMjUsMTUgKzEyNSwxNSBAQCBwcml2YXRlOgogICAgICAgICBSdW5Mb29w
OjpydW4oKTsKIAogICAgICAgICBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2Rv
Y3VtZW50KHBhZ2UpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRv
Y3VtZW50KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChk
b2N1bWVudCkpOwogCiAgICAgICAgIFdlYktpdERPTUVsZW1lbnQqIGVsZW1lbnQgPSB3ZWJraXRf
ZG9tX2RvY3VtZW50X2dldF9lbGVtZW50X2J5X2lkKGRvY3VtZW50LCAidGVzdCIpOwotICAgICAg
ICBnX2Fzc2VydChlbGVtZW50KTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChlbGVtZW50KTsK
IAogICAgICAgICBXZWJLaXRET01FdmVudCogZXZlbnQgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2Ny
ZWF0ZV9ldmVudChkb2N1bWVudCwgIk1vdXNlRXZlbnQiLCAwKTsKLSAgICAgICAgZ19hc3NlcnQo
ZXZlbnQpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0VWRU5UKGV2ZW50KSk7Ci0g
ICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfTU9VU0VfRVZFTlQoZXZlbnQpKTsKKyAgICAg
ICAgZ19hc3NlcnRfbm9ubnVsbChldmVudCk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lU
X0RPTV9JU19FVkVOVChldmVudCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01f
SVNfTU9VU0VfRVZFTlQoZXZlbnQpKTsKIAogICAgICAgICBnbG9uZyBjbGllbnRYLCBjbGllbnRZ
OwogICAgICAgICBjbGllbnRYID0gd2Via2l0X2RvbV9lbGVtZW50X2dldF9jbGllbnRfbGVmdChl
bGVtZW50KTsKQEAgLTE2MywxNCArMTYzLDE0IEBAIHByaXZhdGU6CiAgICAgYm9vbCB0ZXN0R2V0
Q29tcHV0ZWRTdHlsZShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgR1ZhcmlhbnQqIGFy
Z3MpCiAgICAgewogICAgICAgICBXZWJLaXRXZWJQYWdlKiBwYWdlID0gd2Via2l0X3dlYl9leHRl
bnNpb25fZ2V0X3BhZ2UoZXh0ZW5zaW9uLCB3ZWJQYWdlRnJvbUFyZ3MoYXJncykpOwotICAgICAg
ICBnX2Fzc2VydChXRUJLSVRfSVNfV0VCX1BBR0UocGFnZSkpOworICAgICAgICBnX2Fzc2VydF90
cnVlKFdFQktJVF9JU19XRUJfUEFHRShwYWdlKSk7CiAgICAgICAgIFdlYktpdERPTURvY3VtZW50
KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOwotICAg
ICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CisgICAgICAg
IGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOwogICAgICAg
ICBXZWJLaXRET01ET01XaW5kb3cqIGRvbVdpbmRvdyA9IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0
X2RlZmF1bHRfdmlldyhkb2N1bWVudCk7Ci0gICAgICAgIGdfYXNzZXJ0KGRvbVdpbmRvdyk7Cisg
ICAgICAgIGdfYXNzZXJ0X25vbm51bGwoZG9tV2luZG93KTsKICAgICAgICAgV2ViS2l0RE9NRWxl
bWVudCogZWxlbWVudCA9IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2VsZW1lbnRfYnlfaWQoZG9j
dW1lbnQsICJ0ZXN0Iik7Ci0gICAgICAgIGdfYXNzZXJ0KGVsZW1lbnQpOwotICAgICAgICBnX2Fz
c2VydChXRUJLSVRfRE9NX0lTX0VMRU1FTlQoZWxlbWVudCkpOworICAgICAgICBnX2Fzc2VydF9u
b25udWxsKGVsZW1lbnQpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfRUxF
TUVOVChlbGVtZW50KSk7CiAgICAgICAgIFdlYktpdERPTUNTU1N0eWxlRGVjbGFyYXRpb24qIGNz
c1N0eWxlID0gd2Via2l0X2RvbV9kb21fd2luZG93X2dldF9jb21wdXRlZF9zdHlsZShkb21XaW5k
b3csIGVsZW1lbnQsIDApOwogICAgICAgICBnY2hhciogZm9udFNpemUgPSB3ZWJraXRfZG9tX2Nz
c19zdHlsZV9kZWNsYXJhdGlvbl9nZXRfcHJvcGVydHlfdmFsdWUoY3NzU3R5bGUsICJmb250LXNp
emUiKTsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKGZvbnRTaXplLCA9PSwgIjE2cHgiKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVGaWx0
ZXJUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVG
aWx0ZXJUZXN0LmNwcAppbmRleCA4OTcwODM2ZjUwYjY5YzI5ZWFkMWJlOTBhZDYzNWI1MmQ0MmVk
MDZiLi41ZGYzMTA1MmMyMDE0MTZmMzdhNjgyNWEwYTM2NzM0Yzk4Mzg4MWE5IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlRmlsdGVyVGVzdC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NTm9kZUZpbHRl
clRlc3QuY3BwCkBAIC02NywxOCArNjcsMTggQEAgcHJpdmF0ZToKICAgICBib29sIHRlc3RUcmVl
V2Fsa2VyKFdlYktpdFdlYlBhZ2UqIHBhZ2UpCiAgICAgewogICAgICAgICBXZWJLaXRET01Eb2N1
bWVudCogZG9jdW1lbnQgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudChwYWdlKTsK
LSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOworICAg
ICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKICAg
ICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkb2N1
bWVudCkpOwogCiAgICAgICAgIFdlYktpdERPTUVsZW1lbnQqIHJvb3QgPSB3ZWJraXRfZG9tX2Rv
Y3VtZW50X2dldF9lbGVtZW50X2J5X2lkKGRvY3VtZW50LCAicm9vdCIpOwotICAgICAgICBnX2Fz
c2VydChXRUJLSVRfRE9NX0lTX05PREUocm9vdCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdF
QktJVF9ET01fSVNfTk9ERShyb290KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdo
ZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qocm9vdCkpOwogCiAgICAgICAgIC8vIE5vIGZpbHRlci4K
ICAgICAgICAgR1JlZlB0cjxXZWJLaXRET01UcmVlV2Fsa2VyPiB3YWxrZXIgPSBhZG9wdEdSZWYo
d2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfdHJlZV93YWxrZXIoZG9jdW1lbnQsIFdFQktJVF9E
T01fTk9ERShyb290KSwgV0VCS0lUX0RPTV9OT0RFX0ZJTFRFUl9TSE9XX0FMTCwgbnVsbHB0ciwg
RkFMU0UsIG51bGxwdHIpKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19UUkVFX1dB
TEtFUih3YWxrZXIuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lT
X1RSRUVfV0FMS0VSKHdhbGtlci5nZXQoKSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0
ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdhbGtlci5nZXQoKSkpOwotICAgICAgICBnX2Fz
c2VydCghd2Via2l0X2RvbV90cmVlX3dhbGtlcl9nZXRfZmlsdGVyKHdhbGtlci5nZXQoKSkpOwor
ICAgICAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9kb21fdHJlZV93YWxrZXJfZ2V0X2ZpbHRlcih3
YWxrZXIuZ2V0KCkpKTsKIAogICAgICAgICB1bnNpZ25lZCBpID0gMDsKICAgICAgICAgZm9yIChX
ZWJLaXRET01Ob2RlKiBub2RlID0gV0VCS0lUX0RPTV9OT0RFKHJvb3QpOyBub2RlOyBub2RlID0g
d2Via2l0X2RvbV90cmVlX3dhbGtlcl9uZXh0X25vZGUod2Fsa2VyLmdldCgpKSwgKytpKSB7CkBA
IC05Miw5ICs5Miw5IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIElucHV0IGVsZW1lbnRzIGZpbHRl
ci4KICAgICAgICAgR1JlZlB0cjxXZWJLaXRET01Ob2RlRmlsdGVyPiBmaWx0ZXIgPSBhZG9wdEdS
ZWYoc3RhdGljX2Nhc3Q8V2ViS2l0RE9NTm9kZUZpbHRlcio+KGdfb2JqZWN0X25ldyh3ZWJraXRf
bm9kZV9maWx0ZXJfZ2V0X3R5cGUoKSwgbnVsbHB0cikpKTsKICAgICAgICAgd2Fsa2VyID0gYWRv
cHRHUmVmKHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX3RyZWVfd2Fsa2VyKGRvY3VtZW50LCBX
RUJLSVRfRE9NX05PREUocm9vdCksIFdFQktJVF9ET01fTk9ERV9GSUxURVJfU0hPV19BTEwsIGZp
bHRlci5nZXQoKSwgRkFMU0UsIG51bGxwdHIpKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RP
TV9JU19UUkVFX1dBTEtFUih3YWxrZXIuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShX
RUJLSVRfRE9NX0lTX1RSRUVfV0FMS0VSKHdhbGtlci5nZXQoKSkpOwogICAgICAgICBhc3NlcnRP
YmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGZpbHRlci5nZXQoKSkpOwot
ICAgICAgICBnX2Fzc2VydCh3ZWJraXRfZG9tX3RyZWVfd2Fsa2VyX2dldF9maWx0ZXIod2Fsa2Vy
LmdldCgpKSA9PSBmaWx0ZXIuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0
X2RvbV90cmVlX3dhbGtlcl9nZXRfZmlsdGVyKHdhbGtlci5nZXQoKSksID09LCBmaWx0ZXIuZ2V0
KCkpOwogCiAgICAgICAgIGkgPSAwOwogICAgICAgICBmb3IgKFdlYktpdERPTU5vZGUqIG5vZGUg
PSBXRUJLSVRfRE9NX05PREUocm9vdCk7IG5vZGU7IG5vZGUgPSB3ZWJraXRfZG9tX3RyZWVfd2Fs
a2VyX25leHRfbm9kZSh3YWxrZXIuZ2V0KCkpLCArK2kpIHsKQEAgLTEwNyw5ICsxMDcsOSBAQCBw
cml2YXRlOgogCiAgICAgICAgIC8vIFNob3cgb25seSBlbGVtZW50cywgcmV1c2luZyB0aGUgaW5w
dXQgZmlsdGVyLgogICAgICAgICB3YWxrZXIgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9kb2N1bWVu
dF9jcmVhdGVfdHJlZV93YWxrZXIoZG9jdW1lbnQsIFdFQktJVF9ET01fTk9ERShyb290KSwgV0VC
S0lUX0RPTV9OT0RFX0ZJTFRFUl9TSE9XX0VMRU1FTlQsIGZpbHRlci5nZXQoKSwgRkFMU0UsIG51
bGxwdHIpKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19UUkVFX1dBTEtFUih3YWxr
ZXIuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX1RSRUVfV0FM
S0VSKHdhbGtlci5nZXQoKSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKHdhbGtlci5nZXQoKSkpOwotICAgICAgICBnX2Fzc2VydCh3ZWJr
aXRfZG9tX3RyZWVfd2Fsa2VyX2dldF9maWx0ZXIod2Fsa2VyLmdldCgpKSA9PSBmaWx0ZXIuZ2V0
KCkpOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X2RvbV90cmVlX3dhbGtlcl9nZXRf
ZmlsdGVyKHdhbGtlci5nZXQoKSksID09LCBmaWx0ZXIuZ2V0KCkpOwogCiAgICAgICAgIGkgPSAw
OwogICAgICAgICBmb3IgKFdlYktpdERPTU5vZGUqIG5vZGUgPSBXRUJLSVRfRE9NX05PREUocm9v
dCk7IG5vZGU7IG5vZGUgPSB3ZWJraXRfZG9tX3RyZWVfd2Fsa2VyX25leHRfbm9kZSh3YWxrZXIu
Z2V0KCkpLCArK2kpIHsKQEAgLTEyNiwxOCArMTI2LDE4IEBAIHByaXZhdGU6CiAgICAgYm9vbCB0
ZXN0Tm9kZUl0ZXJhdG9yKFdlYktpdFdlYlBhZ2UqIHBhZ2UpCiAgICAgewogICAgICAgICBXZWJL
aXRET01Eb2N1bWVudCogZG9jdW1lbnQgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVu
dChwYWdlKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVu
dCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1l
bnQpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09C
SkVDVChkb2N1bWVudCkpOwogCiAgICAgICAgIFdlYktpdERPTUVsZW1lbnQqIHJvb3QgPSB3ZWJr
aXRfZG9tX2RvY3VtZW50X2dldF9lbGVtZW50X2J5X2lkKGRvY3VtZW50LCAicm9vdCIpOwotICAg
ICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX05PREUocm9vdCkpOworICAgICAgICBnX2Fzc2Vy
dF90cnVlKFdFQktJVF9ET01fSVNfTk9ERShyb290KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qocm9vdCkpOwogCiAgICAgICAgIC8vIE5v
IGZpbHRlci4KICAgICAgICAgR1JlZlB0cjxXZWJLaXRET01Ob2RlSXRlcmF0b3I+IGl0ZXIgPSBh
ZG9wdEdSZWYod2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfbm9kZV9pdGVyYXRvcihkb2N1bWVu
dCwgV0VCS0lUX0RPTV9OT0RFKHJvb3QpLCBXRUJLSVRfRE9NX05PREVfRklMVEVSX1NIT1dfQUxM
LCBudWxscHRyLCBGQUxTRSwgbnVsbHB0cikpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9N
X0lTX05PREVfSVRFUkFUT1IoaXRlci5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdF
QktJVF9ET01fSVNfTk9ERV9JVEVSQVRPUihpdGVyLmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoaXRlci5nZXQoKSkpOwotICAg
ICAgICBnX2Fzc2VydCghd2Via2l0X2RvbV9ub2RlX2l0ZXJhdG9yX2dldF9maWx0ZXIoaXRlci5n
ZXQoKSkpOworICAgICAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9kb21fbm9kZV9pdGVyYXRvcl9n
ZXRfZmlsdGVyKGl0ZXIuZ2V0KCkpKTsKIAogICAgICAgICB1bnNpZ25lZCBpID0gMDsKICAgICAg
ICAgd2hpbGUgKFdlYktpdERPTU5vZGUqIG5vZGUgPSB3ZWJraXRfZG9tX25vZGVfaXRlcmF0b3Jf
bmV4dF9ub2RlKGl0ZXIuZ2V0KCksIG51bGxwdHIpKSB7CkBAIC0xNTIsOSArMTUyLDkgQEAgcHJp
dmF0ZToKICAgICAgICAgLy8gSW5wdXQgZWxlbWVudHMgZmlsdGVyLgogICAgICAgICBHUmVmUHRy
PFdlYktpdERPTU5vZGVGaWx0ZXI+IGZpbHRlciA9IGFkb3B0R1JlZihzdGF0aWNfY2FzdDxXZWJL
aXRET01Ob2RlRmlsdGVyKj4oZ19vYmplY3RfbmV3KHdlYmtpdF9ub2RlX2ZpbHRlcl9nZXRfdHlw
ZSgpLCBudWxscHRyKSkpOwogICAgICAgICBpdGVyID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fZG9j
dW1lbnRfY3JlYXRlX25vZGVfaXRlcmF0b3IoZG9jdW1lbnQsIFdFQktJVF9ET01fTk9ERShyb290
KSwgV0VCS0lUX0RPTV9OT0RFX0ZJTFRFUl9TSE9XX0FMTCwgZmlsdGVyLmdldCgpLCBGQUxTRSwg
bnVsbHB0cikpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX05PREVfSVRFUkFUT1Io
aXRlci5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfTk9ERV9J
VEVSQVRPUihpdGVyLmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5U
ZXN0RmluaXNoZXMoR19PQkpFQ1QoaXRlci5nZXQoKSkpOwotICAgICAgICBnX2Fzc2VydCh3ZWJr
aXRfZG9tX25vZGVfaXRlcmF0b3JfZ2V0X2ZpbHRlcihpdGVyLmdldCgpKSA9PSBmaWx0ZXIuZ2V0
KCkpOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X2RvbV9ub2RlX2l0ZXJhdG9yX2dl
dF9maWx0ZXIoaXRlci5nZXQoKSksID09LCBmaWx0ZXIuZ2V0KCkpOwogCiAgICAgICAgIGkgPSAw
OwogICAgICAgICB3aGlsZSAoV2ViS2l0RE9NTm9kZSogbm9kZSA9IHdlYmtpdF9kb21fbm9kZV9p
dGVyYXRvcl9uZXh0X25vZGUoaXRlci5nZXQoKSwgbnVsbHB0cikpIHsKQEAgLTE2OCw5ICsxNjgs
OSBAQCBwcml2YXRlOgogCiAgICAgICAgIC8vIFNob3cgb25seSBlbGVtZW50cywgcmV1c2luZyB0
aGUgaW5wdXQgZmlsdGVyLgogICAgICAgICBpdGVyID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fZG9j
dW1lbnRfY3JlYXRlX25vZGVfaXRlcmF0b3IoZG9jdW1lbnQsIFdFQktJVF9ET01fTk9ERShyb290
KSwgV0VCS0lUX0RPTV9OT0RFX0ZJTFRFUl9TSE9XX0VMRU1FTlQsIGZpbHRlci5nZXQoKSwgRkFM
U0UsIG51bGxwdHIpKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19OT0RFX0lURVJB
VE9SKGl0ZXIuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX05P
REVfSVRFUkFUT1IoaXRlci5nZXQoKSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRX
aGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGl0ZXIuZ2V0KCkpKTsKLSAgICAgICAgZ19hc3NlcnQo
d2Via2l0X2RvbV9ub2RlX2l0ZXJhdG9yX2dldF9maWx0ZXIoaXRlci5nZXQoKSkgPT0gZmlsdGVy
LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfY21waGV4KHdlYmtpdF9kb21fbm9kZV9pdGVyYXRv
cl9nZXRfZmlsdGVyKGl0ZXIuZ2V0KCkpLCA9PSwgZmlsdGVyLmdldCgpKTsKIAogICAgICAgICBp
ID0gMDsKICAgICAgICAgd2hpbGUgKFdlYktpdERPTU5vZGUqIG5vZGUgPSB3ZWJraXRfZG9tX25v
ZGVfaXRlcmF0b3JfbmV4dF9ub2RlKGl0ZXIuZ2V0KCksIG51bGxwdHIpKSB7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlVGVzdC5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlVGVzdC5jcHAKaW5kZXgg
NzlkNzZhZTdkMjM5ZjlhNjIzZWE2NzlhNjVjNTg5NDQwYmMwZDYyMy4uYmE3ZmFiOTljZjZhNmY1
MjA2ZmIwYTM2OTkzMjIzZDU2YjVmZmM0MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHdGsvRE9NTm9kZVRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVUZXN0LmNwcApAQCAtMzQsNDEgKzM0LDQxIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCB0ZXN0SGllcmFyY2h5TmF2aWdhdGlvbihXZWJLaXRXZWJQYWdlKiBw
YWdlKQogICAgIHsKICAgICAgICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0
X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQocGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJ
VF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJL
SVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVs
ZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZG9jdW1lbnQpKTsKIAogICAgICAgICBXZWJL
aXRET01IVE1MSGVhZEVsZW1lbnQqIGhlYWQgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9oZWFk
KGRvY3VtZW50KTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19IVE1MX0hFQURfRUxF
TUVOVChoZWFkKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19IVE1MX0hF
QURfRUxFTUVOVChoZWFkKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0
RmluaXNoZXMoR19PQkpFQ1QoaGVhZCkpOwogCiAgICAgICAgIC8vIFRpdGxlLCBoZWFkJ3MgY2hp
bGQuCi0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9kb21fbm9kZV9oYXNfY2hpbGRfbm9kZXMoV0VC
S0lUX0RPTV9OT0RFKGhlYWQpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2RvbV9u
b2RlX2hhc19jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoaGVhZCkpKTsKICAgICAgICAgR1Jl
ZlB0cjxXZWJLaXRET01Ob2RlTGlzdD4gbGlzdCA9IGFkb3B0R1JlZih3ZWJraXRfZG9tX25vZGVf
Z2V0X2NoaWxkX25vZGVzKFdFQktJVF9ET01fTk9ERShoZWFkKSkpOwotICAgICAgICBnX2Fzc2Vy
dChXRUJLSVRfRE9NX0lTX05PREVfTElTVChsaXN0LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0
X3RydWUoV0VCS0lUX0RPTV9JU19OT0RFX0xJU1QobGlzdC5nZXQoKSkpOwogICAgICAgICBhc3Nl
cnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGxpc3QuZ2V0KCkpKTsK
ICAgICAgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9kb21fbm9kZV9saXN0X2dldF9sZW5ndGgo
bGlzdC5nZXQoKSksID09LCAxKTsKICAgICAgICAgV2ViS2l0RE9NTm9kZSogbm9kZSA9IHdlYmtp
dF9kb21fbm9kZV9saXN0X2l0ZW0obGlzdC5nZXQoKSwgMCk7Ci0gICAgICAgIGdfYXNzZXJ0KFdF
QktJVF9ET01fSVNfSFRNTF9USVRMRV9FTEVNRU5UKG5vZGUpKTsKKyAgICAgICAgZ19hc3NlcnRf
dHJ1ZShXRUJLSVRfRE9NX0lTX0hUTUxfVElUTEVfRUxFTUVOVChub2RlKSk7CiAgICAgICAgIGFz
c2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qobm9kZSkpOwogCiAg
ICAgICAgIC8vIEJvZHksIEhlYWQgc2libGluZy4KICAgICAgICAgbm9kZSA9IHdlYmtpdF9kb21f
bm9kZV9nZXRfbmV4dF9zaWJsaW5nKFdFQktJVF9ET01fTk9ERShoZWFkKSk7Ci0gICAgICAgIGdf
YXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9CT0RZX0VMRU1FTlQobm9kZSkpOworICAgICAgICBn
X2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfSFRNTF9CT0RZX0VMRU1FTlQobm9kZSkpOwogICAg
ICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG5vZGUp
KTsKICAgICAgICAgV2ViS2l0RE9NSFRNTEJvZHlFbGVtZW50KiBib2R5ID0gV0VCS0lUX0RPTV9I
VE1MX0JPRFlfRUxFTUVOVChub2RlKTsKIAogICAgICAgICAvLyBUaGVyZSBpcyBubyB0aGlyZCBz
aWJsaW5nCi0gICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG9tX25vZGVfZ2V0X25leHRfc2libGlu
Zyhub2RlKSk7CisgICAgICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2RvbV9ub2RlX2dldF9uZXh0
X3NpYmxpbmcobm9kZSkpOwogCiAgICAgICAgIC8vIEJvZHkncyBwcmV2aW91cyBzaWJsaW5nIGlz
IEhlYWQuCiAgICAgICAgIG5vZGUgPSB3ZWJraXRfZG9tX25vZGVfZ2V0X3ByZXZpb3VzX3NpYmxp
bmcoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9J
U19IVE1MX0hFQURfRUxFTUVOVChub2RlKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lU
X0RPTV9JU19IVE1MX0hFQURfRUxFTUVOVChub2RlKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qobm9kZSkpOwogCiAgICAgICAgIC8vIEJv
ZHkgaGFzIDMgY2hpbGRyZW4uCi0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9kb21fbm9kZV9oYXNf
Y2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7CisgICAgICAgIGdfYXNzZXJ0X3Ry
dWUod2Via2l0X2RvbV9ub2RlX2hhc19jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkp
KTsKICAgICAgICAgbGlzdCA9IGFkb3B0R1JlZih3ZWJraXRfZG9tX25vZGVfZ2V0X2NoaWxkX25v
ZGVzKFdFQktJVF9ET01fTk9ERShib2R5KSkpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9N
X0lTX05PREVfTElTVChsaXN0LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lU
X0RPTV9JU19OT0RFX0xJU1QobGlzdC5nZXQoKSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGxpc3QuZ2V0KCkpKTsKICAgICAgICAgdW5z
aWduZWQgbG9uZyBsZW5ndGggPSB3ZWJraXRfZG9tX25vZGVfbGlzdF9nZXRfbGVuZ3RoKGxpc3Qu
Z2V0KCkpOwogICAgICAgICBnX2Fzc2VydF9jbXBpbnQobGVuZ3RoLCA9PSwgMyk7CkBAIC03Niw3
ICs3Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIFRoZSB0aHJlZSBvZiB0aGVtIGFyZSBQIHRh
Z3MuCiAgICAgICAgIGZvciAodW5zaWduZWQgbG9uZyBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7
CiAgICAgICAgICAgICBub2RlID0gd2Via2l0X2RvbV9ub2RlX2xpc3RfaXRlbShsaXN0LmdldCgp
LCBpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9QQVJBR1JBUEhf
RUxFTUVOVChub2RlKSk7CisgICAgICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNf
SFRNTF9QQVJBR1JBUEhfRUxFTUVOVChub2RlKSk7CiAgICAgICAgICAgICBhc3NlcnRPYmplY3RJ
c0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG5vZGUpKTsKICAgICAgICAgfQogCkBA
IC05MSw5MSArOTEsOTEgQEAgcHJpdmF0ZToKICAgICBib29sIHRlc3RJbnNlcnRpb24oV2ViS2l0
V2ViUGFnZSogcGFnZSkKICAgICB7CiAgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVu
dCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOwotICAgICAgICBnX2Fz
c2VydChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CisgICAgICAgIGdfYXNzZXJ0
X3RydWUoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOwogICAgICAgICBhc3NlcnRP
YmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRvY3VtZW50KSk7CiAKICAg
ICAgICAgV2ViS2l0RE9NSFRNTEVsZW1lbnQqIGJvZHkgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2dl
dF9ib2R5KGRvY3VtZW50KTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19IVE1MX0VM
RU1FTlQoYm9keSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfSFRNTF9F
TEVNRU5UKGJvZHkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5p
c2hlcyhHX09CSkVDVChib2R5KSk7CiAKICAgICAgICAgLy8gQm9keSBzaG91bGRuJ3QgaGF2ZSBh
bnkgY2hpbGRyZW4gYXQgdGhpcyBwb2ludC4KLSAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9kb21f
bm9kZV9oYXNfY2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7CisgICAgICAgIGdf
YXNzZXJ0X2ZhbHNlKHdlYmtpdF9kb21fbm9kZV9oYXNfY2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9O
T0RFKGJvZHkpKSk7CiAKICAgICAgICAgLy8gVGhlIHZhbHVlIG9mIGEgbm9uLWV4aXN0ZW50IGF0
dHJpYnV0ZSBzaG91bGQgYmUgbnVsbCwgbm90IGFuIGVtcHR5IHN0cmluZwotICAgICAgICBnX2Fz
c2VydCghd2Via2l0X2RvbV9odG1sX2JvZHlfZWxlbWVudF9nZXRfYmFja2dyb3VuZChXRUJLSVRf
RE9NX0hUTUxfQk9EWV9FTEVNRU5UKGJvZHkpKSk7CisgICAgICAgIGdfYXNzZXJ0X251bGwod2Vi
a2l0X2RvbV9odG1sX2JvZHlfZWxlbWVudF9nZXRfYmFja2dyb3VuZChXRUJLSVRfRE9NX0hUTUxf
Qk9EWV9FTEVNRU5UKGJvZHkpKSk7CiAKICAgICAgICAgLy8gSW5zZXJ0IG9uZSBQIGVsZW1lbnQu
CiAgICAgICAgIFdlYktpdERPTUVsZW1lbnQqIHAgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2NyZWF0
ZV9lbGVtZW50KGRvY3VtZW50LCAiUCIsIDApOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9N
X0lTX0hUTUxfRUxFTUVOVChwKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9J
U19IVE1MX0VMRU1FTlQocCkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKHApKTsKICAgICAgICAgd2Via2l0X2RvbV9ub2RlX2FwcGVuZF9j
aGlsZChXRUJLSVRfRE9NX05PREUoYm9keSksIFdFQktJVF9ET01fTk9ERShwKSwgMCk7CiAKICAg
ICAgICAgLy8gTm93IGl0IHNob3VsZCBoYXZlIG9uZSwgdGhlIHNhbWUgdGhhdCB3ZSBpbnNlcnRl
ZC4KLSAgICAgICAgZ19hc3NlcnQod2Via2l0X2RvbV9ub2RlX2hhc19jaGlsZF9ub2RlcyhXRUJL
SVRfRE9NX05PREUoYm9keSkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfZG9tX25v
ZGVfaGFzX2NoaWxkX25vZGVzKFdFQktJVF9ET01fTk9ERShib2R5KSkpOwogICAgICAgICBHUmVm
UHRyPFdlYktpdERPTU5vZGVMaXN0PiBsaXN0ID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fbm9kZV9n
ZXRfY2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7Ci0gICAgICAgIGdfYXNzZXJ0
KFdFQktJVF9ET01fSVNfTk9ERV9MSVNUKGxpc3QuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRf
dHJ1ZShXRUJLSVRfRE9NX0lTX05PREVfTElTVChsaXN0LmdldCgpKSk7CiAgICAgICAgIGFzc2Vy
dE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobGlzdC5nZXQoKSkpOwog
ICAgICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2RvbV9ub2RlX2xpc3RfZ2V0X2xlbmd0aChs
aXN0LmdldCgpKSwgPT0sIDEpOwogICAgICAgICBXZWJLaXRET01Ob2RlKiBub2RlID0gd2Via2l0
X2RvbV9ub2RlX2xpc3RfaXRlbShsaXN0LmdldCgpLCAwKTsKLSAgICAgICAgZ19hc3NlcnQoV0VC
S0lUX0RPTV9JU19IVE1MX0VMRU1FTlQobm9kZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdF
QktJVF9ET01fSVNfSFRNTF9FTEVNRU5UKG5vZGUpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNE
ZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChub2RlKSk7Ci0gICAgICAgIGdfYXNzZXJ0
KHdlYmtpdF9kb21fbm9kZV9pc19zYW1lX25vZGUoV0VCS0lUX0RPTV9OT0RFKHApLCBub2RlKSk7
CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2RvbV9ub2RlX2lzX3NhbWVfbm9kZShXRUJL
SVRfRE9NX05PREUocCksIG5vZGUpKTsKIAogICAgICAgICAvLyBSZXBsYWNlIHRoZSBQIHRhZyB3
aXRoIGEgRElWIHRhZy4KICAgICAgICAgV2ViS2l0RE9NRWxlbWVudCogZGl2ID0gd2Via2l0X2Rv
bV9kb2N1bWVudF9jcmVhdGVfZWxlbWVudChkb2N1bWVudCwgIkRJViIsIDApOwotICAgICAgICBn
X2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChkaXYpKTsKKyAgICAgICAgZ19hc3Nl
cnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChkaXYpKTsKICAgICAgICAgYXNzZXJ0
T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkaXYpKTsKICAgICAgICAg
d2Via2l0X2RvbV9ub2RlX3JlcGxhY2VfY2hpbGQoV0VCS0lUX0RPTV9OT0RFKGJvZHkpLCBXRUJL
SVRfRE9NX05PREUoZGl2KSwgV0VCS0lUX0RPTV9OT0RFKHApLCAwKTsKLSAgICAgICAgZ19hc3Nl
cnQod2Via2l0X2RvbV9ub2RlX2hhc19jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkp
KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfZG9tX25vZGVfaGFzX2NoaWxkX25vZGVz
KFdFQktJVF9ET01fTk9ERShib2R5KSkpOwogICAgICAgICBsaXN0ID0gYWRvcHRHUmVmKHdlYmtp
dF9kb21fbm9kZV9nZXRfY2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7Ci0gICAg
ICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfTk9ERV9MSVNUKGxpc3QuZ2V0KCkpKTsKKyAgICAg
ICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX05PREVfTElTVChsaXN0LmdldCgpKSk7CiAg
ICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobGlz
dC5nZXQoKSkpOwogICAgICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2RvbV9ub2RlX2xpc3Rf
Z2V0X2xlbmd0aChsaXN0LmdldCgpKSwgPT0sIDEpOwogICAgICAgICBub2RlID0gd2Via2l0X2Rv
bV9ub2RlX2xpc3RfaXRlbShsaXN0LmdldCgpLCAwKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lU
X0RPTV9JU19IVE1MX0VMRU1FTlQobm9kZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJ
VF9ET01fSVNfSFRNTF9FTEVNRU5UKG5vZGUpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxl
dGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChub2RlKSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdl
YmtpdF9kb21fbm9kZV9pc19zYW1lX25vZGUoV0VCS0lUX0RPTV9OT0RFKGRpdiksIG5vZGUpKTsK
KyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfZG9tX25vZGVfaXNfc2FtZV9ub2RlKFdFQktJ
VF9ET01fTk9ERShkaXYpLCBub2RlKSk7CiAKICAgICAgICAgLy8gTm93IHJlbW92ZSB0aGUgdGFn
LgogICAgICAgICB3ZWJraXRfZG9tX25vZGVfcmVtb3ZlX2NoaWxkKFdFQktJVF9ET01fTk9ERShi
b2R5KSwgbm9kZSwgMCk7CiAgICAgICAgIGxpc3QgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9ub2Rl
X2dldF9jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkpKTsKLSAgICAgICAgZ19hc3Nl
cnQoV0VCS0lUX0RPTV9JU19OT0RFX0xJU1QobGlzdC5nZXQoKSkpOworICAgICAgICBnX2Fzc2Vy
dF90cnVlKFdFQktJVF9ET01fSVNfTk9ERV9MSVNUKGxpc3QuZ2V0KCkpKTsKICAgICAgICAgYXNz
ZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChsaXN0LmdldCgpKSk7
CiAgICAgICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfZG9tX25vZGVfbGlzdF9nZXRfbGVuZ3Ro
KGxpc3QuZ2V0KCkpLCA9PSwgMCk7CiAKICAgICAgICAgLy8gVGVzdCBpbnNlcnQgYmVmb3JlLiBJ
ZiByZWZDaGlsZCBpcyBudWxsLCBpbnNlcnQgbmV3Q2hpbGQgYXMgbGFzdCBlbGVtZW50IG9mIHBh
cmVudC4KICAgICAgICAgZGl2ID0gd2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfZWxlbWVudChk
b2N1bWVudCwgIkRJViIsIDApOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxf
RUxFTUVOVChkaXYpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0hUTUxf
RUxFTUVOVChkaXYpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5p
c2hlcyhHX09CSkVDVChkaXYpKTsKICAgICAgICAgd2Via2l0X2RvbV9ub2RlX2luc2VydF9iZWZv
cmUoV0VCS0lUX0RPTV9OT0RFKGJvZHkpLCBXRUJLSVRfRE9NX05PREUoZGl2KSwgMCwgMCk7Ci0g
ICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9kb21fbm9kZV9oYXNfY2hpbGRfbm9kZXMoV0VCS0lUX0RP
TV9OT0RFKGJvZHkpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2RvbV9ub2RlX2hh
c19jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkpKTsKICAgICAgICAgbGlzdCA9IGFk
b3B0R1JlZih3ZWJraXRfZG9tX25vZGVfZ2V0X2NoaWxkX25vZGVzKFdFQktJVF9ET01fTk9ERShi
b2R5KSkpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX05PREVfTElTVChsaXN0Lmdl
dCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19OT0RFX0xJU1QobGlz
dC5nZXQoKSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVz
KEdfT0JKRUNUKGxpc3QuZ2V0KCkpKTsKICAgICAgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9k
b21fbm9kZV9saXN0X2dldF9sZW5ndGgobGlzdC5nZXQoKSksID09LCAxKTsKICAgICAgICAgbm9k
ZSA9IHdlYmtpdF9kb21fbm9kZV9saXN0X2l0ZW0obGlzdC5nZXQoKSwgMCk7Ci0gICAgICAgIGdf
YXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5UKG5vZGUpKTsKKyAgICAgICAgZ19hc3Nl
cnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChub2RlKSk7CiAgICAgICAgIGFzc2Vy
dE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qobm9kZSkpOwotICAgICAg
ICBnX2Fzc2VydCh3ZWJraXRfZG9tX25vZGVfaXNfc2FtZV9ub2RlKFdFQktJVF9ET01fTk9ERShk
aXYpLCBub2RlKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2RvbV9ub2RlX2lzX3Nh
bWVfbm9kZShXRUJLSVRfRE9NX05PREUoZGl2KSwgbm9kZSkpOwogCiAgICAgICAgIC8vIE5vdyBp
bnNlcnQgYSAncCcgYmVmb3JlICdkaXYnLgogICAgICAgICBwID0gd2Via2l0X2RvbV9kb2N1bWVu
dF9jcmVhdGVfZWxlbWVudChkb2N1bWVudCwgIlAiLCAwKTsKLSAgICAgICAgZ19hc3NlcnQoV0VC
S0lUX0RPTV9JU19IVE1MX0VMRU1FTlQocCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJ
VF9ET01fSVNfSFRNTF9FTEVNRU5UKHApKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVk
V2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChwKSk7CiAgICAgICAgIHdlYmtpdF9kb21fbm9kZV9p
bnNlcnRfYmVmb3JlKFdFQktJVF9ET01fTk9ERShib2R5KSwgV0VCS0lUX0RPTV9OT0RFKHApLCBX
RUJLSVRfRE9NX05PREUoZGl2KSwgMCk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9kb21fbm9k
ZV9oYXNfY2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7CisgICAgICAgIGdfYXNz
ZXJ0X3RydWUod2Via2l0X2RvbV9ub2RlX2hhc19jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUo
Ym9keSkpKTsKICAgICAgICAgbGlzdCA9IGFkb3B0R1JlZih3ZWJraXRfZG9tX25vZGVfZ2V0X2No
aWxkX25vZGVzKFdFQktJVF9ET01fTk9ERShib2R5KSkpOwotICAgICAgICBnX2Fzc2VydChXRUJL
SVRfRE9NX0lTX05PREVfTElTVChsaXN0LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUo
V0VCS0lUX0RPTV9JU19OT0RFX0xJU1QobGlzdC5nZXQoKSkpOwogICAgICAgICBhc3NlcnRPYmpl
Y3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGxpc3QuZ2V0KCkpKTsKICAgICAg
ICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9kb21fbm9kZV9saXN0X2dldF9sZW5ndGgobGlzdC5n
ZXQoKSksID09LCAyKTsKICAgICAgICAgbm9kZSA9IHdlYmtpdF9kb21fbm9kZV9saXN0X2l0ZW0o
bGlzdC5nZXQoKSwgMCk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9FTEVN
RU5UKG5vZGUpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0hUTUxfRUxF
TUVOVChub2RlKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNo
ZXMoR19PQkpFQ1Qobm9kZSkpOwotICAgICAgICBnX2Fzc2VydCh3ZWJraXRfZG9tX25vZGVfaXNf
c2FtZV9ub2RlKFdFQktJVF9ET01fTk9ERShwKSwgbm9kZSkpOworICAgICAgICBnX2Fzc2VydF90
cnVlKHdlYmtpdF9kb21fbm9kZV9pc19zYW1lX25vZGUoV0VCS0lUX0RPTV9OT0RFKHApLCBub2Rl
KSk7CiAgICAgICAgIG5vZGUgPSB3ZWJraXRfZG9tX25vZGVfbGlzdF9pdGVtKGxpc3QuZ2V0KCks
IDEpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChub2RlKSk7
CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19IVE1MX0VMRU1FTlQobm9kZSkp
OwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNU
KG5vZGUpKTsKLSAgICAgICAgZ19hc3NlcnQod2Via2l0X2RvbV9ub2RlX2lzX3NhbWVfbm9kZShX
RUJLSVRfRE9NX05PREUoZGl2KSwgbm9kZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtp
dF9kb21fbm9kZV9pc19zYW1lX25vZGUoV0VCS0lUX0RPTV9OT0RFKGRpdiksIG5vZGUpKTsKIAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xODUsMTcgKzE4NSwxNyBAQCBwcml2YXRl
OgogICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogZXhwZWN0ZWRUYWdOYW1lc1tdID0geyAiSFRN
TCIsICJIRUFEIiwgIkJPRFkiLCAiVklERU8iLCAiU09VUkNFIiwgIlZJREVPIiwgIlNPVVJDRSIs
ICJJTlBVVCIgfTsKIAogICAgICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQgPSB3ZWJr
aXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudChwYWdlKTsKLSAgICAgICAgZ19hc3NlcnQoV0VC
S0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdF
QktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNE
ZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkb2N1bWVudCkpOwogCiAgICAgICAgIEdS
ZWZQdHI8V2ViS2l0RE9NTm9kZUxpc3Q+IGxpc3QgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9kb2N1
bWVudF9xdWVyeV9zZWxlY3Rvcl9hbGwoZG9jdW1lbnQsICIqIiwgbnVsbHB0cikpOwotICAgICAg
ICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX05PREVfTElTVChsaXN0LmdldCgpKSk7CisgICAgICAg
IGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19OT0RFX0xJU1QobGlzdC5nZXQoKSkpOwogICAg
ICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGxpc3Qu
Z2V0KCkpKTsKICAgICAgICAgZ3Vsb25nIG5vZGVDb3VudCA9IHdlYmtpdF9kb21fbm9kZV9saXN0
X2dldF9sZW5ndGgobGlzdC5nZXQoKSk7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQobm9kZUNv
dW50LCA9PSwgR19OX0VMRU1FTlRTKGV4cGVjdGVkVGFnTmFtZXMpKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG5vZGVDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBXZWJLaXRE
T01Ob2RlKiBub2RlID0gd2Via2l0X2RvbV9ub2RlX2xpc3RfaXRlbShsaXN0LmdldCgpLCBpKTsK
LSAgICAgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfTk9ERShub2RlKSk7CisgICAgICAg
ICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfTk9ERShub2RlKSk7CiAgICAgICAgICAg
ICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG5vZGUpKTsK
ICAgICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gdGFnTmFtZSh3ZWJraXRfZG9tX25vZGVfZ2V0
X25vZGVfbmFtZShub2RlKSk7CiAgICAgICAgICAgICBnX2Fzc2VydF9jbXBzdHIodGFnTmFtZS5n
ZXQoKSwgPT0sIGV4cGVjdGVkVGFnTmFtZXNbaV0pOwpAQCAtMjA5LDE3ICsyMDksMTcgQEAgcHJp
dmF0ZToKICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGV4cGVjdGVkVGFnTmFtZXNbXSA9IHsg
IkhUTUwiLCAiSEVBRCIsICJCT0RZIiwgIlZJREVPIiwgIlNPVVJDRSIsICJWSURFTyIsICJTT1VS
Q0UiLCAiSU5QVVQiIH07CiAKICAgICAgICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0g
d2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQocGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0
KFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1
ZShXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CiAgICAgICAgIGFzc2VydE9iamVj
dElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZG9jdW1lbnQpKTsKIAogICAgICAg
ICBHUmVmUHRyPFdlYktpdERPTUhUTUxDb2xsZWN0aW9uPiBjb2xsZWN0aW9uID0gYWRvcHRHUmVm
KHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2VsZW1lbnRzX2J5X3RhZ19uYW1lX2FzX2h0bWxfY29s
bGVjdGlvbihkb2N1bWVudCwgIioiKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNf
SFRNTF9DT0xMRUNUSU9OKGNvbGxlY3Rpb24uZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1
ZShXRUJLSVRfRE9NX0lTX0hUTUxfQ09MTEVDVElPTihjb2xsZWN0aW9uLmdldCgpKSk7CiAgICAg
ICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoY29sbGVj
dGlvbi5nZXQoKSkpOwogICAgICAgICBndWxvbmcgbm9kZUNvdW50ID0gd2Via2l0X2RvbV9odG1s
X2NvbGxlY3Rpb25fZ2V0X2xlbmd0aChjb2xsZWN0aW9uLmdldCgpKTsKICAgICAgICAgZ19hc3Nl
cnRfY21wdWludChub2RlQ291bnQsID09LCBHX05fRUxFTUVOVFMoZXhwZWN0ZWRUYWdOYW1lcykp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9kZUNvdW50OyBpKyspIHsKICAg
ICAgICAgICAgIFdlYktpdERPTU5vZGUqIG5vZGUgPSB3ZWJraXRfZG9tX2h0bWxfY29sbGVjdGlv
bl9pdGVtKGNvbGxlY3Rpb24uZ2V0KCksIGkpOwotICAgICAgICAgICAgZ19hc3NlcnQoV0VCS0lU
X0RPTV9JU19OT0RFKG5vZGUpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RP
TV9JU19OT0RFKG5vZGUpKTsKICAgICAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5U
ZXN0RmluaXNoZXMoR19PQkpFQ1Qobm9kZSkpOwogICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFy
PiB0YWdOYW1lKHdlYmtpdF9kb21fbm9kZV9nZXRfbm9kZV9uYW1lKG5vZGUpKTsKICAgICAgICAg
ICAgIGdfYXNzZXJ0X2NtcHN0cih0YWdOYW1lLmdldCgpLCA9PSwgZXhwZWN0ZWRUYWdOYW1lc1tp
XSk7CkBAIC0yMzEsNDEgKzIzMSw0MSBAQCBwcml2YXRlOgogICAgIGJvb2wgdGVzdERPTUNhY2hl
KFdlYktpdFdlYlBhZ2UqIHBhZ2UpCiAgICAgewogICAgICAgICBXZWJLaXRET01Eb2N1bWVudCog
ZG9jdW1lbnQgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudChwYWdlKTsKLSAgICAg
ICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOworICAgICAgICBn
X2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKICAgICAgICAg
YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkb2N1bWVudCkp
OwogCiAgICAgICAgIC8vIERPTSBvYmplY3RzIGFscmVhZHkgaW4gdGhlIGRvY3VtZW50IHNob3Vs
ZCBiZSBhdXRvbWF0aWNhbGx5IGhhbmRsZWQgYnkgdGhlIGNhY2hlLgogICAgICAgICBXZWJLaXRE
T01FbGVtZW50KiBkaXYgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9lbGVtZW50X2J5X2lkKGRv
Y3VtZW50LCAiY29udGFpbmVyIik7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRN
TF9FTEVNRU5UKGRpdikpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfSFRN
TF9FTEVNRU5UKGRpdikpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZp
bmlzaGVzKEdfT0JKRUNUKGRpdikpOwogCiAgICAgICAgIC8vIEdldCB0aGUgc2FtZSBlbG1lbnQg
dHdpY2Ugc2hvdWxkIHJldHVybiB0aGUgc2FtZSBwb2ludGVyLgotICAgICAgICBnX2Fzc2VydChk
aXYgPT0gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudF9ieV9pZChkb2N1bWVudCwgImNv
bnRhaW5lciIpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShkaXYgPT0gd2Via2l0X2RvbV9kb2N1
bWVudF9nZXRfZWxlbWVudF9ieV9pZChkb2N1bWVudCwgImNvbnRhaW5lciIpKTsKIAogICAgICAg
ICAvLyBBIG5ldyBET00gb2JqZWN0IGNyZWF0ZWQgdGhhdCBpcyBkZXJpdmVkIGZyb20gTm9kZSBz
aG91bGQgYmUgYXV0b21hdGljYWxseSBoYW5kbGVkIGJ5IHRoZSBjYWNoZS4KICAgICAgICAgV2Vi
S2l0RE9NRWxlbWVudCogcCA9IHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX2VsZW1lbnQoZG9j
dW1lbnQsICJQIiwgbnVsbHB0cik7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRN
TF9QQVJBR1JBUEhfRUxFTUVOVChwKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RP
TV9JU19IVE1MX1BBUkFHUkFQSF9FTEVNRU5UKHApKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNE
ZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChwKSk7CiAKICAgICAgICAgLy8gQSBuZXcg
RE9NIG9iamVjdCBjcmVhdGVkIHRoYXQgaXNuJ3QgZGVyaXZlZCBmcm9tIE5vZGUgc2hvdWxkIGJl
IG1hbnVhbGx5IGhhbmRsZWQuCiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RE9NTm9kZUl0ZXJhdG9y
PiBpdGVyID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX25vZGVfaXRlcmF0
b3IoZG9jdW1lbnQsIFdFQktJVF9ET01fTk9ERShkaXYpLCBXRUJLSVRfRE9NX05PREVfRklMVEVS
X1NIT1dfQUxMLCBudWxscHRyLCBGQUxTRSwgbnVsbHB0cikpOwotICAgICAgICBnX2Fzc2VydChX
RUJLSVRfRE9NX0lTX05PREVfSVRFUkFUT1IoaXRlci5nZXQoKSkpOworICAgICAgICBnX2Fzc2Vy
dF90cnVlKFdFQktJVF9ET01fSVNfTk9ERV9JVEVSQVRPUihpdGVyLmdldCgpKSk7CiAgICAgICAg
IGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoaXRlci5nZXQo
KSkpOwogCiAgICAgICAgIC8vIFdlIGNhbiBhbHNvIG1hbnVhbGx5IGhhbmRsZSBhIERPTSBvYmpl
Y3QgaGFuZGxlZCBieSB0aGUgY2FjaGUuCiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RE9NRWxlbWVu
dD4gcDIgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfZWxlbWVudChkb2N1
bWVudCwgIlAiLCBudWxscHRyKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRN
TF9QQVJBR1JBUEhfRUxFTUVOVChwMi5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdF
QktJVF9ET01fSVNfSFRNTF9QQVJBR1JBUEhfRUxFTUVOVChwMi5nZXQoKSkpOwogICAgICAgICBh
c3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHAyLmdldCgpKSk7
CiAKICAgICAgICAgLy8gTWFudWFsbHkgaGFuZGxpbmcgYSBET00gb2JqZWN0IG93bmVkIGJ5IHRo
ZSBjYWNoZSBzaG91bGRuJ3QgY3Jhc2ggd2hlbiB0aGUgY2FjaGUgaGFzIG1vcmUgdGhhbiBvbmUg
cmVmZXJlbmNlLgogICAgICAgICBHUmVmUHRyPFdlYktpdERPTUVsZW1lbnQ+IHAzID0gYWRvcHRH
UmVmKHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX2VsZW1lbnQoZG9jdW1lbnQsICJQIiwgbnVs
bHB0cikpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxfUEFSQUdSQVBIX0VM
RU1FTlQocDMuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0hU
TUxfUEFSQUdSQVBIX0VMRU1FTlQocDMuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNE
ZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChwMy5nZXQoKSkpOwogICAgICAgICB3ZWJr
aXRfZG9tX25vZGVfYXBwZW5kX2NoaWxkKFdFQktJVF9ET01fTk9ERShkaXYpLCBXRUJLSVRfRE9N
X05PREUocDMuZ2V0KCkpLCBudWxscHRyKTsKIAogICAgICAgICAvLyBET00gb2JqZWN0cyByZW1v
dmVkIGZyb20gdGhlIGRvY3VtZW50IGFyZSBhbHNvIGNvcnJlY3RseSBoYW5kbGVkIGJ5IHRoZSBj
YWNoZS4KICAgICAgICAgV2ViS2l0RE9NRWxlbWVudCogYSA9IHdlYmtpdF9kb21fZG9jdW1lbnRf
Y3JlYXRlX2VsZW1lbnQoZG9jdW1lbnQsICJBIiwgbnVsbHB0cik7Ci0gICAgICAgIGdfYXNzZXJ0
KFdFQktJVF9ET01fSVNfRUxFTUVOVChhKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lU
X0RPTV9JU19FTEVNRU5UKGEpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRl
c3RGaW5pc2hlcyhHX09CSkVDVChhKSk7CiAgICAgICAgIHdlYmtpdF9kb21fbm9kZV9yZW1vdmVf
Y2hpbGQoV0VCS0lUX0RPTV9OT0RFKGRpdiksIFdFQktJVF9ET01fTk9ERShhKSwgbnVsbHB0cik7
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTVhQ
YXRoTlNSZXNvbHZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
dGsvRE9NWFBhdGhOU1Jlc29sdmVyVGVzdC5jcHAKaW5kZXggZWJiOGYzOTI0YTIxODc5YzVhYmRk
MDRmNGUzNzlhNGQzYWI3ZjFhYy4uMzVlZTM1MDNhNDBhYWExM2JhYThhZGMwODg5MjNjZjkyMGU4
ZDc4YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9N
WFBhdGhOU1Jlc29sdmVyVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvRE9NWFBhdGhOU1Jlc29sdmVyVGVzdC5jcHAKQEAgLTY1LDE1ICs2NSwxNSBAQCBw
cml2YXRlOgogICAgIHZvaWQgZXZhbHVhdGVGb29DaGlsZFRleHRBbmRDaGVja1Jlc3VsdChXZWJL
aXRET01Eb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdERPTVhQYXRoTlNSZXNvbHZlciogcmVzb2x2
ZXIpCiAgICAgewogICAgICAgICBXZWJLaXRET01FbGVtZW50KiBkb2N1bWVudEVsZW1lbnQgPSB3
ZWJraXRfZG9tX2RvY3VtZW50X2dldF9kb2N1bWVudF9lbGVtZW50KGRvY3VtZW50KTsKLSAgICAg
ICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19FTEVNRU5UKGRvY3VtZW50RWxlbWVudCkpOworICAg
ICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfRUxFTUVOVChkb2N1bWVudEVsZW1lbnQp
KTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVD
VChkb2N1bWVudEVsZW1lbnQpKTsKIAogICAgICAgICBHUmVmUHRyPFdlYktpdERPTVhQYXRoUmVz
dWx0PiByZXN1bHQgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9kb2N1bWVudF9ldmFsdWF0ZShkb2N1
bWVudCwgImZvbzpjaGlsZC90ZXh0KCkiLCBXRUJLSVRfRE9NX05PREUoZG9jdW1lbnRFbGVtZW50
KSwgcmVzb2x2ZXIsIFdFQktJVF9ET01fWFBBVEhfUkVTVUxUX09SREVSRURfTk9ERV9JVEVSQVRP
Ul9UWVBFLCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01f
SVNfWFBBVEhfUkVTVUxUKHJlc3VsdC5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdF
QktJVF9ET01fSVNfWFBBVEhfUkVTVUxUKHJlc3VsdC5nZXQoKSkpOwogICAgICAgICBhc3NlcnRP
YmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJlc3VsdC5nZXQoKSkpOwog
CiAgICAgICAgIFdlYktpdERPTU5vZGUqIG5vZGVSZXN1bHQgPSB3ZWJraXRfZG9tX3hwYXRoX3Jl
c3VsdF9pdGVyYXRlX25leHQocmVzdWx0LmdldCgpLCBudWxscHRyKTsKLSAgICAgICAgZ19hc3Nl
cnQoV0VCS0lUX0RPTV9JU19OT0RFKG5vZGVSZXN1bHQpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1
ZShXRUJLSVRfRE9NX0lTX05PREUobm9kZVJlc3VsdCkpOwogICAgICAgICBhc3NlcnRPYmplY3RJ
c0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG5vZGVSZXN1bHQpKTsKIAogICAgICAg
ICBHVW5pcXVlUHRyPGNoYXI+IG5vZGVWYWx1ZSh3ZWJraXRfZG9tX25vZGVfZ2V0X25vZGVfdmFs
dWUobm9kZVJlc3VsdCkpOwpAQCAtODMsMTEgKzgzLDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCB0
ZXN0WFBhdGhOU1Jlc29sdmVyTmF0aXZlKFdlYktpdFdlYlBhZ2UqIHBhZ2UpCiAgICAgewogICAg
ICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2Rv
bV9kb2N1bWVudChwYWdlKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19ET0NVTUVO
VChkb2N1bWVudCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfRE9DVU1F
TlQoZG9jdW1lbnQpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5p
c2hlcyhHX09CSkVDVChkb2N1bWVudCkpOwogCiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RE9NWFBh
dGhOU1Jlc29sdmVyPiByZXNvbHZlciA9IGFkb3B0R1JlZih3ZWJraXRfZG9tX2RvY3VtZW50X2Ny
ZWF0ZV9uc19yZXNvbHZlcihkb2N1bWVudCwgV0VCS0lUX0RPTV9OT0RFKHdlYmtpdF9kb21fZG9j
dW1lbnRfZ2V0X2RvY3VtZW50X2VsZW1lbnQoZG9jdW1lbnQpKSkpOwotICAgICAgICBnX2Fzc2Vy
dChXRUJLSVRfRE9NX0lTX1hQQVRIX05TX1JFU09MVkVSKHJlc29sdmVyLmdldCgpKSk7CisgICAg
ICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19YUEFUSF9OU19SRVNPTFZFUihyZXNvbHZl
ci5nZXQoKSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVz
KEdfT0JKRUNUKHJlc29sdmVyLmdldCgpKSk7CiAgICAgICAgIGV2YWx1YXRlRm9vQ2hpbGRUZXh0
QW5kQ2hlY2tSZXN1bHQoZG9jdW1lbnQsIHJlc29sdmVyLmdldCgpKTsKIApAQCAtOTcsNyArOTcs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgdGVzdFhQYXRoTlNSZXNvbHZlckN1c3RvbShXZWJLaXRX
ZWJQYWdlKiBwYWdlKQogICAgIHsKICAgICAgICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50
ID0gd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQocGFnZSk7Ci0gICAgICAgIGdfYXNz
ZXJ0KFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKKyAgICAgICAgZ19hc3NlcnRf
dHJ1ZShXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CiAgICAgICAgIGFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZG9jdW1lbnQpKTsKIAogICAg
ICAgICBHUmVmUHRyPFdlYktpdERPTVhQYXRoTlNSZXNvbHZlcj4gcmVzb2x2ZXIgPSBhZG9wdEdS
ZWYoV0VCS0lUX0RPTV9YUEFUSF9OU19SRVNPTFZFUihnX29iamVjdF9uZXcod2Via2l0X3hwYXRo
X25zX3Jlc29sdmVyX2dldF90eXBlKCksIG51bGxwdHIpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0QXV0b2NsZWFudXBzLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RBdXRvY2xlYW51cHMuY3BwCmluZGV4
IDUwZTgyYTljNmY1YTRlNDk2OTM0ZGZiMWE1MDNlMTg1N2Q1ZDRiNTkuLjg1MzA3N2M4YTc3MmE3
NTBhYmUyY2M3NDBhYWRjMGYzYmE5ZjdlZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RBdXRvY2xlYW51cHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RBdXRvY2xlYW51cHMuY3BwCkBAIC0yOCwyMyAr
MjgsMjMgQEAgc3RhdGljIHZvaWQgdGVzdFVJUHJvY2Vzc0F1dG9jbGVhbnVwcyhXZWJWaWV3VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICAvLyBTYW5pdHktY2hlY2sgYSBjb3VwbGUg
VUkgcHJvY2VzcyBBUEkgYXV0b2NsZWFudXBzIHRoYXQgYXJlIGVhc3kgdG8gdGVzdC4uLi4KICAg
ICBnX2F1dG9wdHIoV2ViS2l0V2ViQ29udGV4dCkgY29udGV4dCA9IHdlYmtpdF93ZWJfY29udGV4
dF9uZXcoKTsKLSAgICBnX2Fzc2VydChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOwor
ICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKICAgICB0
ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGNvbnRl
eHQpKTsKIAogICAgIGdfYXV0b3B0cihXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIpIG1hbmFnZXIg
PSB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3KG51bGxwdHIpOwotICAgIGdfYXNzZXJ0
KFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSk7CisgICAgZ19hc3NlcnRf
dHJ1ZShXRUJLSVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIobWFuYWdlcikpOwogICAgIHRlc3Qt
PmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoY29udGV4dCkp
OwogCiAgICAgZ19hdXRvcHRyKFdlYktpdFVzZXJTY3JpcHQpIHVzZXJTY3JpcHQgPSB3ZWJraXRf
dXNlcl9zY3JpcHRfbmV3KCIiLAogICAgICAgICBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9B
TExfRlJBTUVTLCBXRUJLSVRfVVNFUl9TQ1JJUFRfSU5KRUNUX0FUX0RPQ1VNRU5UX1NUQVJULAog
ICAgICAgICBudWxscHRyLCBudWxscHRyKTsKLSAgICBnX2Fzc2VydCh1c2VyU2NyaXB0KTsKKyAg
ICBnX2Fzc2VydF9ub25udWxsKHVzZXJTY3JpcHQpOwogICAgIC8vIE5vdCBhIEdPYmplY3QsIHNv
IGp1c3QgY2hlY2tpbmcgdGhhdCB0aGlzIGRvZXNuJ3QgY3Jhc2guLi4uCiB9CiAKIHN0YXRpYyB2
b2lkIHRlc3RXZWJQcm9jZXNzQXV0b2NsZWFudXBzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogewotICAgIGdfYXNzZXJ0KHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJBdXRvY2xl
YW51cHMiLCAid2ViLXByb2Nlc3MtYXV0b2NsZWFudXBzIikpOworICAgIGdfYXNzZXJ0X3RydWUo
dGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIkF1dG9jbGVhbnVwcyIsICJ3ZWItcHJvY2Vzcy1hdXRv
Y2xlYW51cHMiKSk7CiB9CiAKIHZvaWQgYmVmb3JlQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RDb250ZXh0TWVudS5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0Q29udGV4dE1lbnUuY3BwCmluZGV4IGQ5
M2Q1YjI0NGRmZGUxNDcxOTQxMDM2ODY2NzA3MzAyMWM0ZmNkNWMuLjFhODg0MmU5ZTI3OTA2OWYx
YTI1MmU0NDBiZjliNjkxYmJhNDYzZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL1Rlc3RDb250ZXh0TWVudS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdENvbnRleHRNZW51LmNwcApAQCAtMzIsNyArMzIsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGNoZWNrQ29udGV4dE1lbnVFdmVudChHZGtFdmVudCogZXZl
bnQpCiAgICAgewotICAgICAgICBnX2Fzc2VydChldmVudCk7CisgICAgICAgIGdfYXNzZXJ0X25v
bm51bGwoZXZlbnQpOwogICAgICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnQtPnR5cGUsID09LCBt
X2V4cGVjdGVkRXZlbnRUeXBlKTsKIAogICAgICAgICBzd2l0Y2ggKG1fZXhwZWN0ZWRFdmVudFR5
cGUpIHsKQEAgLTU1LDEwICs1NSwxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4g
Y29udGV4dE1lbnVDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRDb250ZXh0
TWVudSogY29udGV4dE1lbnUsIEdka0V2ZW50KiBldmVudCwgV2ViS2l0SGl0VGVzdFJlc3VsdCog
aGl0VGVzdFJlc3VsdCwgQ29udGV4dE1lbnVUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAgZ19h
c3NlcnQoV0VCS0lUX0lTX0NPTlRFWFRfTUVOVShjb250ZXh0TWVudSkpOworICAgICAgICBnX2Fz
c2VydF90cnVlKFdFQktJVF9JU19DT05URVhUX01FTlUoY29udGV4dE1lbnUpKTsKICAgICAgICAg
dGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChjb250
ZXh0TWVudSkpOwogICAgICAgICB0ZXN0LT5jaGVja0NvbnRleHRNZW51RXZlbnQoZXZlbnQpOwot
ICAgICAgICBnX2Fzc2VydChXRUJLSVRfSVNfSElUX1RFU1RfUkVTVUxUKGhpdFRlc3RSZXN1bHQp
KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfSElUX1RFU1RfUkVTVUxUKGhpdFRl
c3RSZXN1bHQpKTsKICAgICAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RG
aW5pc2hlcyhHX09CSkVDVChoaXRUZXN0UmVzdWx0KSk7CiAKICAgICAgICAgcmV0dXJuIHRlc3Qt
PmNvbnRleHRNZW51KGNvbnRleHRNZW51LCBldmVudCwgaGl0VGVzdFJlc3VsdCk7CkBAIC0xMTEs
MzggKzExMSwzOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja0FjdGlvblN0YXRlKEd0a0FjdGlv
biogYWN0aW9uLCB1bnNpZ25lZCBzdGF0ZSkKICAgICB7CiAgICAgICAgIGlmIChzdGF0ZSAmIFZp
c2libGUpCi0gICAgICAgICAgICBnX2Fzc2VydChndGtfYWN0aW9uX2dldF92aXNpYmxlKGFjdGlv
bikpOworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZShndGtfYWN0aW9uX2dldF92aXNpYmxlKGFj
dGlvbikpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBnX2Fzc2VydCghZ3RrX2FjdGlvbl9n
ZXRfdmlzaWJsZShhY3Rpb24pKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKGd0a19hY3Rp
b25fZ2V0X3Zpc2libGUoYWN0aW9uKSk7CiAKICAgICAgICAgaWYgKHN0YXRlICYgRW5hYmxlZCkK
LSAgICAgICAgICAgIGdfYXNzZXJ0KGd0a19hY3Rpb25fZ2V0X3NlbnNpdGl2ZShhY3Rpb24pKTsK
KyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUoZ3RrX2FjdGlvbl9nZXRfc2Vuc2l0aXZlKGFjdGlv
bikpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBnX2Fzc2VydCghZ3RrX2FjdGlvbl9nZXRf
c2Vuc2l0aXZlKGFjdGlvbikpOworICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2UoZ3RrX2FjdGlv
bl9nZXRfc2Vuc2l0aXZlKGFjdGlvbikpOwogCiAgICAgICAgIGlmIChHVEtfSVNfVE9HR0xFX0FD
VElPTihhY3Rpb24pKSB7CiAgICAgICAgICAgICBpZiAoc3RhdGUgJiBDaGVja2VkKQotICAgICAg
ICAgICAgICAgIGdfYXNzZXJ0KGd0a190b2dnbGVfYWN0aW9uX2dldF9hY3RpdmUoR1RLX1RPR0dM
RV9BQ1RJT04oYWN0aW9uKSkpOworICAgICAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUoZ3RrX3Rv
Z2dsZV9hY3Rpb25fZ2V0X2FjdGl2ZShHVEtfVE9HR0xFX0FDVElPTihhY3Rpb24pKSk7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZ19hc3NlcnQoIWd0a190b2dnbGVfYWN0aW9u
X2dldF9hY3RpdmUoR1RLX1RPR0dMRV9BQ1RJT04oYWN0aW9uKSkpOworICAgICAgICAgICAgICAg
IGdfYXNzZXJ0X2ZhbHNlKGd0a190b2dnbGVfYWN0aW9uX2dldF9hY3RpdmUoR1RLX1RPR0dMRV9B
Q1RJT04oYWN0aW9uKSkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgR0xpc3QqIGNoZWNrQ3Vy
cmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChHTGlzdCogaXRlbXMsIFdlYktpdENvbnRl
eHRNZW51QWN0aW9uIHN0b2NrQWN0aW9uLCB1bnNpZ25lZCBzdGF0ZSkKICAgICB7Ci0gICAgICAg
IGdfYXNzZXJ0KGl0ZW1zKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX0NPTlRFWFRfTUVO
VV9JVEVNKGl0ZW1zLT5kYXRhKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoaXRlbXMpOwor
ICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19DT05URVhUX01FTlVfSVRFTShpdGVtcy0+
ZGF0YSkpOwogCiAgICAgICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9D
T05URVhUX01FTlVfSVRFTShpdGVtcy0+ZGF0YSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVs
ZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoaXRlbSkpOwogCiAgICAgICAgIEdfR05VQ19C
RUdJTl9JR05PUkVfREVQUkVDQVRJT05TOwogICAgICAgICBHdGtBY3Rpb24qIGFjdGlvbiA9IHdl
YmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfYWN0aW9uKGl0ZW0pOwotICAgICAgICBnX2Fzc2Vy
dChHVEtfSVNfQUNUSU9OKGFjdGlvbikpOworICAgICAgICBnX2Fzc2VydF90cnVlKEdUS19JU19B
Q1RJT04oYWN0aW9uKSk7CiAgICAgICAgIEdfR05VQ19FTkRfSUdOT1JFX0RFUFJFQ0FUSU9OUzsK
IAogICAgICAgICBHQWN0aW9uKiBnQWN0aW9uID0gd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dl
dF9nYWN0aW9uKGl0ZW0pOwotICAgICAgICBnX2Fzc2VydChHX0lTX0FDVElPTihnQWN0aW9uKSk7
CisgICAgICAgIGdfYXNzZXJ0X3RydWUoR19JU19BQ1RJT04oZ0FjdGlvbikpOwogCiAgICAgICAg
IGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X3N0b2NrX2FjdGlv
bihpdGVtKSwgPT0sIHN0b2NrQWN0aW9uKTsKIApAQCAtMTUzLDI3ICsxNTMsMjcgQEAgcHVibGlj
OgogCiAgICAgR0xpc3QqIGNoZWNrQ3VycmVudEl0ZW1Jc0N1c3RvbUFjdGlvbkFuZEdldE5leHQo
R0xpc3QqIGl0ZW1zLCBjb25zdCBjaGFyKiBsYWJlbCwgdW5zaWduZWQgc3RhdGUpCiAgICAgewot
ICAgICAgICBnX2Fzc2VydChpdGVtcyk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19DT05U
RVhUX01FTlVfSVRFTShpdGVtcy0+ZGF0YSkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKGl0
ZW1zKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfQ09OVEVYVF9NRU5VX0lURU0o
aXRlbXMtPmRhdGEpKTsKIAogICAgICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBX
RUJLSVRfQ09OVEVYVF9NRU5VX0lURU0oaXRlbXMtPmRhdGEpOwogICAgICAgICBhc3NlcnRPYmpl
Y3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGl0ZW0pKTsKIAogICAgICAgICBH
X0dOVUNfQkVHSU5fSUdOT1JFX0RFUFJFQ0FUSU9OUzsKICAgICAgICAgR3RrQWN0aW9uKiBhY3Rp
b24gPSB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X2FjdGlvbihpdGVtKTsKLSAgICAgICAg
Z19hc3NlcnQoR1RLX0lTX0FDVElPTihhY3Rpb24pKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShH
VEtfSVNfQUNUSU9OKGFjdGlvbikpOwogICAgICAgICBHX0dOVUNfRU5EX0lHTk9SRV9ERVBSRUNB
VElPTlM7CiAKICAgICAgICAgR0FjdGlvbiogZ0FjdGlvbiA9IHdlYmtpdF9jb250ZXh0X21lbnVf
aXRlbV9nZXRfZ2FjdGlvbihpdGVtKTsKLSAgICAgICAgZ19hc3NlcnQoR19JU19BQ1RJT04oZ0Fj
dGlvbikpOworICAgICAgICBnX2Fzc2VydF90cnVlKEdfSVNfQUNUSU9OKGdBY3Rpb24pKTsKICAg
ICAgICAgZ19hc3NlcnRfY21wc3RyKGd0a19hY3Rpb25fZ2V0X25hbWUoYWN0aW9uKSwgPT0sIGdf
YWN0aW9uX2dldF9uYW1lKGdBY3Rpb24pKTsKLSAgICAgICAgZ19hc3NlcnQoZ3RrX2FjdGlvbl9n
ZXRfc2Vuc2l0aXZlKGFjdGlvbikgPT0gZ19hY3Rpb25fZ2V0X2VuYWJsZWQoZ0FjdGlvbikpOwor
ICAgICAgICBnX2Fzc2VydF9jbXBpbnQoZ3RrX2FjdGlvbl9nZXRfc2Vuc2l0aXZlKGFjdGlvbiks
ID09LCBnX2FjdGlvbl9nZXRfZW5hYmxlZChnQWN0aW9uKSk7CiAgICAgICAgIGlmIChHVEtfSVNf
VE9HR0xFX0FDVElPTihhY3Rpb24pKSB7Ci0gICAgICAgICAgICBnX2Fzc2VydChnX3ZhcmlhbnRf
dHlwZV9lcXVhbChnX2FjdGlvbl9nZXRfc3RhdGVfdHlwZShnQWN0aW9uKSwgR19WQVJJQU5UX1RZ
UEVfQk9PTEVBTikpOworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZShnX3ZhcmlhbnRfdHlwZV9l
cXVhbChnX2FjdGlvbl9nZXRfc3RhdGVfdHlwZShnQWN0aW9uKSwgR19WQVJJQU5UX1RZUEVfQk9P
TEVBTikpOwogICAgICAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4gc3RhdGUgPSBhZG9wdEdSZWYo
Z19hY3Rpb25fZ2V0X3N0YXRlKGdBY3Rpb24pKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KGd0a190
b2dnbGVfYWN0aW9uX2dldF9hY3RpdmUoR1RLX1RPR0dMRV9BQ1RJT04oYWN0aW9uKSkgPT0gZ192
YXJpYW50X2dldF9ib29sZWFuKHN0YXRlLmdldCgpKSk7CisgICAgICAgICAgICBnX2Fzc2VydF9j
bXBpbnQoZ3RrX3RvZ2dsZV9hY3Rpb25fZ2V0X2FjdGl2ZShHVEtfVE9HR0xFX0FDVElPTihhY3Rp
b24pKSwgPT0sIGdfdmFyaWFudF9nZXRfYm9vbGVhbihzdGF0ZS5nZXQoKSkpOwogICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIGdfYXNzZXJ0KCFnX2FjdGlvbl9nZXRfc3RhdGVfdHlwZShnQWN0
aW9uKSk7CisgICAgICAgICAgICBnX2Fzc2VydF9udWxsKGdfYWN0aW9uX2dldF9zdGF0ZV90eXBl
KGdBY3Rpb24pKTsKIAogICAgICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2NvbnRleHRfbWVu
dV9pdGVtX2dldF9zdG9ja19hY3Rpb24oaXRlbSksID09LCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FD
VElPTl9DVVNUT00pOwogICAgICAgICBnX2Fzc2VydF9jbXBzdHIoZ3RrX2FjdGlvbl9nZXRfbGFi
ZWwoYWN0aW9uKSwgPT0sIGxhYmVsKTsKQEAgLTE4NSwyNSArMTg1LDI1IEBAIHB1YmxpYzoKIAog
ICAgIEdMaXN0KiBjaGVja0N1cnJlbnRJdGVtSXNTdWJNZW51QW5kR2V0TmV4dChHTGlzdCogaXRl
bXMsIGNvbnN0IGNoYXIqIGxhYmVsLCB1bnNpZ25lZCBzdGF0ZSwgR0xpc3QqKiBzdWJNZW51SXRl
cikKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KGl0ZW1zKTsKLSAgICAgICAgZ19hc3NlcnQoV0VC
S0lUX0lTX0NPTlRFWFRfTUVOVV9JVEVNKGl0ZW1zLT5kYXRhKSk7CisgICAgICAgIGdfYXNzZXJ0
X25vbm51bGwoaXRlbXMpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19DT05URVhU
X01FTlVfSVRFTShpdGVtcy0+ZGF0YSkpOwogCiAgICAgICAgIFdlYktpdENvbnRleHRNZW51SXRl
bSogaXRlbSA9IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShpdGVtcy0+ZGF0YSk7CiAgICAgICAg
IGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoaXRlbSkpOwog
CiAgICAgICAgIEdfR05VQ19CRUdJTl9JR05PUkVfREVQUkVDQVRJT05TOwogICAgICAgICBHdGtB
Y3Rpb24qIGFjdGlvbiA9IHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfYWN0aW9uKGl0ZW0p
OwotICAgICAgICBnX2Fzc2VydChHVEtfSVNfQUNUSU9OKGFjdGlvbikpOworICAgICAgICBnX2Fz
c2VydF90cnVlKEdUS19JU19BQ1RJT04oYWN0aW9uKSk7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0
cihndGtfYWN0aW9uX2dldF9sYWJlbChhY3Rpb24pLCA9PSwgbGFiZWwpOwogICAgICAgICBHX0dO
VUNfRU5EX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAKICAgICAgICAgR0FjdGlvbiogZ0FjdGlvbiA9
IHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfZ2FjdGlvbihpdGVtKTsKLSAgICAgICAgZ19h
c3NlcnQoR19JU19BQ1RJT04oZ0FjdGlvbikpOworICAgICAgICBnX2Fzc2VydF90cnVlKEdfSVNf
QUNUSU9OKGdBY3Rpb24pKTsKIAogICAgICAgICBjaGVja0FjdGlvblN0YXRlKGFjdGlvbiwgc3Rh
dGUpOwogCiAgICAgICAgIFdlYktpdENvbnRleHRNZW51KiBzdWJNZW51ID0gd2Via2l0X2NvbnRl
eHRfbWVudV9pdGVtX2dldF9zdWJtZW51KGl0ZW0pOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRf
SVNfQ09OVEVYVF9NRU5VKHN1Yk1lbnUpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRf
SVNfQ09OVEVYVF9NRU5VKHN1Yk1lbnUpKTsKICAgICAgICAgaWYgKHN1Yk1lbnVJdGVyKQogICAg
ICAgICAgICAgKnN1Yk1lbnVJdGVyID0gd2Via2l0X2NvbnRleHRfbWVudV9nZXRfaXRlbXMoc3Vi
TWVudSk7CiAKQEAgLTIxMiwxMSArMjEyLDExIEBAIHB1YmxpYzoKIAogICAgIEdMaXN0KiBjaGVj
a0N1cnJlbnRJdGVtSXNTZXBhcmF0b3JBbmRHZXROZXh0KEdMaXN0KiBpdGVtcykKICAgICB7Ci0g
ICAgICAgIGdfYXNzZXJ0KGl0ZW1zKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX0NPTlRF
WFRfTUVOVV9JVEVNKGl0ZW1zLT5kYXRhKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoaXRl
bXMpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19DT05URVhUX01FTlVfSVRFTShp
dGVtcy0+ZGF0YSkpOwogCiAgICAgICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdF
QktJVF9DT05URVhUX01FTlVfSVRFTShpdGVtcy0+ZGF0YSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdl
YmtpdF9jb250ZXh0X21lbnVfaXRlbV9pc19zZXBhcmF0b3IoaXRlbSkpOworICAgICAgICBnX2Fz
c2VydF90cnVlKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9pc19zZXBhcmF0b3IoaXRlbSkpOwog
CiAgICAgICAgIHJldHVybiBnX2xpc3RfbmV4dChpdGVtcyk7CiAgICAgfQpAQCAtMzEwLDQ0ICsz
MTAsNDQgQEAgcHVibGljOgogCiAgICAgICAgIHN3aXRjaCAobV9leHBlY3RlZE1lbnVUeXBlKSB7
CiAgICAgICAgIGNhc2UgTmF2aWdhdGlvbjoKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAg
ICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhp
dFRlc3RSZXN1bHQpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVz
dWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOwotICAgICAgICAgICAgZ19hc3Nl
cnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVz
dWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250
ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9m
YWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0
KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2Nv
bnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRfZmFs
c2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQp
KTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29u
dGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9m
YWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RS
ZXN1bHQpKTsKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlv
bkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fR09fQkFDSywgVmlz
aWJsZSk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25B
bmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0dPX0ZPUldBUkQsIFZp
c2libGUpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9u
QW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9TVE9QLCBWaXNpYmxl
KTsKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdl
dE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fUkVMT0FELCBWaXNpYmxlIHwg
RW5hYmxlZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBMaW5rOgotICAgICAg
ICAgICAgZ19hc3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0
VGVzdFJlc3VsdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfY29udGV4dF9pc19pbWFnZShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2Vy
dCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQp
KTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRf
aXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtp
dF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOwor
ICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRf
aXNfbGluayhoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOworICAg
ICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lz
X21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtp
dF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7Cisg
ICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRf
aXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1
cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVO
VV9BQ1RJT05fT1BFTl9MSU5LLCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAgICAgICAgICAgICBpdGVy
ID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9D
T05URVhUX01FTlVfQUNUSU9OX09QRU5fTElOS19JTl9ORVdfV0lORE9XLCBWaXNpYmxlIHwgRW5h
YmxlZCk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25B
bmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0RPV05MT0FEX0xJTktf
VE9fRElTSywgVmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3Vy
cmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5V
X0FDVElPTl9DT1BZX0xJTktfVE9fQ0xJUEJPQVJELCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJbWFnZToKLSAgICAgICAgICAgIGdfYXNzZXJ0
KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7
Ci0gICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNf
aW1hZ2UoaGl0VGVzdFJlc3VsdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRf
dGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAg
ICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhp
dFRlc3RSZXN1bHQpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVz
dWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdf
YXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5rKGhpdFRl
c3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNz
ZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0
UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVz
dWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19h
c3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbiho
aXRUZXN0UmVzdWx0KSk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3Rv
Y2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX09QRU5f
SU1BR0VfSU5fTkVXX1dJTkRPVywgVmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAgICAgICAgaXRl
ciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRf
Q09OVEVYVF9NRU5VX0FDVElPTl9ET1dOTE9BRF9JTUFHRV9UT19ESVNLLCBWaXNpYmxlIHwgRW5h
YmxlZCk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25B
bmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0NPUFlfSU1BR0VfVE9f
Q0xJUEJPQVJELCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tD
dXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01F
TlVfQUNUSU9OX0NPUFlfSU1BR0VfVVJMX1RPX0NMSVBCT0FSRCwgVmlzaWJsZSB8IEVuYWJsZWQp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTGlua0ltYWdlOgotICAgICAgICAg
ICAgZ19hc3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVz
dFJlc3VsdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9j
b250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3
ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOwot
ICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19l
ZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hp
dF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CisgICAg
ICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19s
aW5rKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2hp
dF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAg
ICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRp
YShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAgICAg
ICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3Nl
bGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50
SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNU
SU9OX09QRU5fTElOSywgVmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAgICAgICAgaXRlciA9IGNo
ZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVY
VF9NRU5VX0FDVElPTl9PUEVOX0xJTktfSU5fTkVXX1dJTkRPVywgVmlzaWJsZSB8IEVuYWJsZWQp
OwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0
TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9ET1dOTE9BRF9MSU5LX1RPX0RJ
U0ssIFZpc2libGUgfCBFbmFibGVkKTsKQEAgLTM1OSwxMSArMzU5LDExIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQo
aXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fQ09QWV9JTUFHRV9VUkxfVE9fQ0xJUEJP
QVJELCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBWaWRlbzoKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2Nv
bnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKLSAg
ICAgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRp
YShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0
X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICAgICAgICAg
IGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhp
dFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVz
dF9yZXN1bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdf
YXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZShoaXRU
ZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fz
c2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0
VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0
X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CiAgICAgICAgICAg
ICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdF
QktJVF9DT05URVhUX01FTlVfQUNUSU9OX01FRElBX1BMQVksIFZpc2libGUgfCBFbmFibGVkKTsK
ICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5l
eHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fTUVESUFfTVVURSwgVmlzaWJsZSk7
CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXRO
ZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX1RPR0dMRV9NRURJQV9DT05UUk9M
UywgVmlzaWJsZSB8IEVuYWJsZWQgfCBDaGVja2VkKTsKQEAgLTM3NSwxMSArMzc1LDExIEBAIHB1
YmxpYzoKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFu
ZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fRE9XTkxPQURfVklERU9f
VE9fRElTSywgVmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQXVkaW86Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3Vs
dF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQo
IXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZShoaXRUZXN0UmVzdWx0KSk7
Ci0gICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNf
bWVkaWEoaGl0VGVzdFJlc3VsdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRf
dGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAg
ICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlv
bihoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAg
ICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2Uo
aGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxl
KGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRf
dGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOwogICAgICAg
ICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVy
LCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9NRURJQV9QTEFZLCBWaXNpYmxlIHwgRW5hYmxl
ZCk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRH
ZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX01FRElBX01VVEUsIFZpc2li
bGUpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5k
R2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9UT0dHTEVfTUVESUFfQ09O
VFJPTFMsIFZpc2libGUgfCBFbmFibGVkIHwgQ2hlY2tlZCk7CkBAIC0zOTEsMTEgKzM5MSwxMSBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rp
b25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0RPV05MT0FEX0FV
RElPX1RPX0RJU0ssIFZpc2libGUgfCBFbmFibGVkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEVkaXRhYmxlOgotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVz
dF9yZXN1bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKLSAgICAgICAgICAgIGdf
YXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJl
c3VsdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29u
dGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCh3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOwot
ICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19z
ZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpOworICAg
ICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lz
X2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtp
dF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CisgICAg
ICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19l
ZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsK
ICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5l
eHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fQ1VULCBWaXNpYmxlKTsKICAgICAg
ICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRl
ciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fQ09QWSwgVmlzaWJsZSk7CiAgICAgICAgICAg
ICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdF
QktJVF9DT05URVhUX01FTlVfQUNUSU9OX1BBU1RFLCBWaXNpYmxlIHwgRW5hYmxlZCk7CkBAIC00
MDYsMTEgKzQwNiwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50
SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNU
SU9OX1VOSUNPREUsIFZpc2libGUgfCBFbmFibGVkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFNlbGVjdGlvbjoKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBn
X2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RS
ZXN1bHQpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2Nv
bnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQoIXdl
YmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7
Ci0gICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNf
c2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdl
YmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKKyAg
ICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9p
c19pbWFnZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOworICAg
ICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lz
X2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7
CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXRO
ZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0NPUFksIFZpc2libGUgfCBFbmFi
bGVkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtNDIxLDcgKzQy
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTZXBh
cmF0b3JBbmRHZXROZXh0KGl0ZXIpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0
ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElP
Tl9JTlNQRUNUX0VMRU1FTlQsIFZpc2libGUgfCBFbmFibGVkKTsKICAgICAgICAgfQotICAgICAg
ICBnX2Fzc2VydCghaXRlcik7CisgICAgICAgIGdfYXNzZXJ0X251bGwoaXRlcik7CiAKICAgICAg
ICAgcXVpdE1haW5Mb29wKCk7CiAKQEAgLTU1MCw3ICs1NTAsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGFjdGl2YXRlTWVudUl0ZW0oKQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQobV9pdGVtVG9B
Y3RpdmF0ZUxhYmVsKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChtX2l0ZW1Ub0FjdGl2YXRl
TGFiZWwpOwogICAgICAgICBHdGtNZW51KiBtZW51ID0gZ2V0UG9wdXBNZW51KCk7CiAgICAgICAg
IEd0a01lbnVJdGVtKiBpdGVtID0gZ2V0TWVudUl0ZW0obWVudSwgbV9pdGVtVG9BY3RpdmF0ZUxh
YmVsKTsKICAgICAgICAgZ3RrX21lbnVfc2hlbGxfYWN0aXZhdGVfaXRlbShHVEtfTUVOVV9TSEVM
TChtZW51KSwgR1RLX1dJREdFVChpdGVtKSwgVFJVRSk7CkBAIC01ODYsOSArNTg2LDkgQEAgcHVi
bGljOgogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB0ZXN0LT5tX2FjdGl2
YXRlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgaWYgKHRlc3QtPm1fZXhwZWN0ZWRUYXJnZXQp
Ci0gICAgICAgICAgICAgICAgICAgIGdfYXNzZXJ0KGdfdmFyaWFudF9lcXVhbCh0ZXN0LT5tX2V4
cGVjdGVkVGFyZ2V0LmdldCgpLCB0YXJnZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgZ19hc3Nl
cnRfdHJ1ZShnX3ZhcmlhbnRfZXF1YWwodGVzdC0+bV9leHBlY3RlZFRhcmdldC5nZXQoKSwgdGFy
Z2V0KSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBnX2Fzc2Vy
dCghdGFyZ2V0KTsKKyAgICAgICAgICAgICAgICAgICAgZ19hc3NlcnRfbnVsbCh0YXJnZXQpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHRlc3QtPm1fYWN0aXZh
dGVkID0gdHJ1ZTsKQEAgLTY0MiwzOSArNjQyLDM5IEBAIHN0YXRpYyB2b2lkIHRlc3RDb250ZXh0
TWVudVBvcHVsYXRlTWVudShDb250ZXh0TWVudUN1c3RvbVRlc3QqIHRlc3QsIGdjb25zdHBvaW50
CiAgICAgdGVzdC0+c2V0QWN0aW9uKGFjdGlvbi5nZXQoKSk7CiAgICAgdGVzdC0+c2hvd0NvbnRl
eHRNZW51QW5kV2FpdFVudGlsRmluaXNoZWQoKTsKICAgICB0ZXN0LT5hY3RpdmF0ZUN1c3RvbU1l
bnVJdGVtQW5kV2FpdFVudGlsQWN0aXZhdGVkKGd0a19hY3Rpb25fZ2V0X2xhYmVsKGFjdGlvbi5n
ZXQoKSkpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fYWN0aXZhdGVkKTsKLSAgICBnX2Fzc2VydCgh
dGVzdC0+bV90b2dnbGVkKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fYWN0aXZhdGVkKTsK
KyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5tX3RvZ2dsZWQpOwogCiAgICAgLy8gQ3JlYXRlIGEg
Y3VzdG9tIHRvZ2dsZSBtZW51IGl0ZW0uCiAgICAgR1JlZlB0cjxHdGtBY3Rpb24+IHRvZ2dsZUFj
dGlvbiA9IGFkb3B0R1JlZihHVEtfQUNUSU9OKGd0a190b2dnbGVfYWN0aW9uX25ldygiV2ViS2l0
R1RLK0N1c3RvbVRvZ2dsZUFjdGlvbiIsICJDdXN0b20gX1RvZ2dsZSBBY3Rpb24iLCBudWxscHRy
LCBudWxscHRyKSkpOwogICAgIHRlc3QtPnNldEFjdGlvbih0b2dnbGVBY3Rpb24uZ2V0KCkpOwog
ICAgIHRlc3QtPnNob3dDb250ZXh0TWVudUFuZFdhaXRVbnRpbEZpbmlzaGVkKCk7CiAgICAgdGVz
dC0+dG9nZ2xlQ3VzdG9tTWVudUl0ZW1BbmRXYWl0VW50aWxUb2dnbGVkKGd0a19hY3Rpb25fZ2V0
X2xhYmVsKHRvZ2dsZUFjdGlvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2FjdGl2
YXRlZCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV90b2dnbGVkKTsKKyAgICBnX2Fzc2VydF9mYWxz
ZSh0ZXN0LT5tX2FjdGl2YXRlZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3RvZ2dsZWQp
OwogCiAgICAgLy8gQ3JlYXRlIGEgY3VzdG9tIG1lbnUgaXRlbSB1c2luZyBHQWN0aW9uLgogICAg
IEdSZWZQdHI8R0FjdGlvbj4gZ0FjdGlvbiA9IGFkb3B0R1JlZihHX0FDVElPTihnX3NpbXBsZV9h
Y3Rpb25fbmV3KCJXZWJLaXRHVEsrQ3VzdG9tR0FjdGlvbiIsIG51bGxwdHIpKSk7CiAgICAgdGVz
dC0+c2V0QWN0aW9uKGdBY3Rpb24uZ2V0KCksICJDdXN0b20gX0dBY3Rpb24iKTsKICAgICB0ZXN0
LT5zaG93Q29udGV4dE1lbnVBbmRXYWl0VW50aWxGaW5pc2hlZCgpOwogICAgIHRlc3QtPmFjdGl2
YXRlQ3VzdG9tTWVudUl0ZW1BbmRXYWl0VW50aWxBY3RpdmF0ZWQoIkN1c3RvbSBfR0FjdGlvbiIp
OwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fYWN0aXZhdGVkKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+
bV90b2dnbGVkKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fYWN0aXZhdGVkKTsKKyAgICBn
X2Fzc2VydF9mYWxzZSh0ZXN0LT5tX3RvZ2dsZWQpOwogCiAgICAgLy8gQ3JlYXRlIGEgY3VzdG9t
IHRvZ2dsZSBtZW51IGl0ZW0gdXNpbmcgR0FjdGlvbi4KICAgICBHUmVmUHRyPEdBY3Rpb24+IHRv
Z2dsZUdBY3Rpb24gPSBhZG9wdEdSZWYoR19BQ1RJT04oZ19zaW1wbGVfYWN0aW9uX25ld19zdGF0
ZWZ1bCgiV2ViS2l0R1RLK0N1c3RvbVRvZ2dsZUdBY3Rpb24iLCBudWxscHRyLCBnX3ZhcmlhbnRf
bmV3X2Jvb2xlYW4oRkFMU0UpKSkpOwogICAgIHRlc3QtPnNldEFjdGlvbih0b2dnbGVHQWN0aW9u
LmdldCgpLCAiQ3VzdG9tIF9Ub2dnbGUgR0FjdGlvbiIpOwogICAgIHRlc3QtPnNob3dDb250ZXh0
TWVudUFuZFdhaXRVbnRpbEZpbmlzaGVkKCk7CiAgICAgdGVzdC0+dG9nZ2xlQ3VzdG9tTWVudUl0
ZW1BbmRXYWl0VW50aWxUb2dnbGVkKCJDdXN0b20gX1RvZ2dsZSBHQWN0aW9uIik7Ci0gICAgZ19h
c3NlcnQoIXRlc3QtPm1fYWN0aXZhdGVkKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3RvZ2dsZWQp
OworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPm1fYWN0aXZhdGVkKTsKKyAgICBnX2Fzc2VydF90
cnVlKHRlc3QtPm1fdG9nZ2xlZCk7CiAKICAgICAvLyBDcmVhdGUgYSBjdXN0b20gbWVudSBpdGVt
IHVzaW5nIEdBY3Rpb24gd2l0aCBhIHRhcmdldC4KICAgICBnQWN0aW9uID0gYWRvcHRHUmVmKEdf
QUNUSU9OKGdfc2ltcGxlX2FjdGlvbl9uZXcoIldlYktpdEdUSytDdXN0b21HQWN0aW9uV2l0aFRh
cmdldCIsIEdfVkFSSUFOVF9UWVBFX1NUUklORykpKTsKICAgICB0ZXN0LT5zZXRBY3Rpb24oZ0Fj
dGlvbi5nZXQoKSwgIkN1c3RvbSBfR0FjdGlvbiBXaXRoIFRhcmdldCIsIGdfdmFyaWFudF9uZXdf
c3RyaW5nKCJXZWJLaXRHVEsrQ3VzdG9tR0FjdGlvblRhcmdldCIpKTsKICAgICB0ZXN0LT5zaG93
Q29udGV4dE1lbnVBbmRXYWl0VW50aWxGaW5pc2hlZCgpOwogICAgIHRlc3QtPmFjdGl2YXRlQ3Vz
dG9tTWVudUl0ZW1BbmRXYWl0VW50aWxBY3RpdmF0ZWQoIkN1c3RvbSBfR0FjdGlvbiBXaXRoIFRh
cmdldCIpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fYWN0aXZhdGVkKTsKKyAgICBnX2Fzc2VydF90
cnVlKHRlc3QtPm1fYWN0aXZhdGVkKTsKIH0KIAogY2xhc3MgQ29udGV4dE1lbnVDdXN0b21GdWxs
VGVzdDogcHVibGljIENvbnRleHRNZW51VGVzdCB7CkBAIC03NDMsNyArNzQzLDcgQEAgcHVibGlj
OgogICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU2VwYXJhdG9yQW5kR2V0TmV4dChp
dGVyKTsKICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc0N1c3RvbUFjdGlvbkFuZEdl
dE5leHQoaXRlciwgIkN1c3RvbSBfR0FjdGlvbiIsIFZpc2libGUpOwogICAgICAgICBpdGVyID0g
Y2hlY2tDdXJyZW50SXRlbUlzQ3VzdG9tQWN0aW9uQW5kR2V0TmV4dChpdGVyLCAiQ3VzdG9tIFRf
b2dnbGUgR0FjdGlvbiIsIFZpc2libGUgfCBFbmFibGVkIHwgQ2hlY2tlZCk7Ci0gICAgICAgIGdf
YXNzZXJ0KCFpdGVyKTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbChpdGVyKTsKIAogICAgICAgICBx
dWl0TWFpbkxvb3AoKTsKIApAQCAtODM0LDIzICs4MzQsMjMgQEAgcHVibGljOgogICAgICAgICBH
UmVmUHRyPFdlYktpdENvbnRleHRNZW51SXRlbT4gaXRlbSA9IHdlYmtpdF9jb250ZXh0X21lbnVf
aXRlbV9uZXdfZnJvbV9zdG9ja19hY3Rpb24oV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fT1BF
Tl9MSU5LKTsKIAogICAgICAgICAvLyBBZGQgc3VibWVudSB0byBuZXdseSBjcmVhdGVkIGl0ZW0u
Ci0gICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X3N1Ym1lbnUo
aXRlbS5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9jb250ZXh0X21lbnVf
aXRlbV9nZXRfc3VibWVudShpdGVtLmdldCgpKSk7CiAgICAgICAgIHdlYmtpdF9jb250ZXh0X21l
bnVfaXRlbV9zZXRfc3VibWVudShpdGVtLmdldCgpLCBzdWJNZW51Mi5nZXQoKSk7Ci0gICAgICAg
IGdfYXNzZXJ0KHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfc3VibWVudShpdGVtLmdldCgp
KSA9PSBzdWJNZW51Mi5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJraXRfY29u
dGV4dF9tZW51X2l0ZW1fZ2V0X3N1Ym1lbnUoaXRlbS5nZXQoKSksID09LCBzdWJNZW51Mi5nZXQo
KSk7CiAKICAgICAgICAgLy8gUmVwbGFjZSB0aGUgc3VibWVudS4KICAgICAgICAgd2Via2l0X2Nv
bnRleHRfbWVudV9pdGVtX3NldF9zdWJtZW51KGl0ZW0uZ2V0KCksIDApOwotICAgICAgICBnX2Fz
c2VydCghd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF9zdWJtZW51KGl0ZW0uZ2V0KCkpKTsK
KyAgICAgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X3N1Ym1l
bnUoaXRlbS5nZXQoKSkpOwogCiAgICAgICAgIC8vIFRyeSB0byBhZGQgYSBzdWJtZW51IGFscmVh
ZHkgYWRkZWQgdG8gYW5vdGhlciBpdGVtLgogICAgICAgICByZW1vdmVMb2dGYXRhbEZsYWcoR19M
T0dfTEVWRUxfV0FSTklORyk7CiAgICAgICAgIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9zZXRf
c3VibWVudShpdGVtLmdldCgpLCBzdWJNZW51LmdldCgpKTsKICAgICAgICAgYWRkTG9nRmF0YWxG
bGFnKEdfTE9HX0xFVkVMX1dBUk5JTkcpOwotICAgICAgICBnX2Fzc2VydCghd2Via2l0X2NvbnRl
eHRfbWVudV9pdGVtX2dldF9zdWJtZW51KGl0ZW0uZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRf
bnVsbCh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X3N1Ym1lbnUoaXRlbS5nZXQoKSkpOwog
CiAgICAgICAgIC8vIEEgcmVtb3ZlZCBzdWJtZW51IHNob3VsZG4ndCBoYXZlIGEgcGFyZW50Lgog
ICAgICAgICB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fc2V0X3N1Ym1lbnUoaXRlbS5nZXQoKSwg
c3ViTWVudTIuZ2V0KCkpOwotICAgICAgICBnX2Fzc2VydCh3ZWJraXRfY29udGV4dF9tZW51X2l0
ZW1fZ2V0X3N1Ym1lbnUoaXRlbS5nZXQoKSkgPT0gc3ViTWVudTIuZ2V0KCkpOworICAgICAgICBn
X2Fzc2VydF9jbXBoZXgod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF9zdWJtZW51KGl0ZW0u
Z2V0KCkpLCA9PSwgc3ViTWVudTIuZ2V0KCkpOwogCiAgICAgICAgIHF1aXRNYWluTG9vcCgpOwog
CkBAIC05MDcsNyArOTA3LDcgQEAgc3RhdGljIHZvaWQgdGVzdENvbnRleHRNZW51RGlzbWlzc2Vk
KENvbnRleHRNZW51RGlzbWlzc2VkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnQKICAgICB0ZXN0LT53
YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAogICAgIHRlc3QtPnNob3dDb250ZXh0TWVudUFuZFdh
aXRVbnRpbERpc21pc3NlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fZGlzbWlzc2VkKTsKKyAg
ICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fZGlzbWlzc2VkKTsKIH0KIAogY2xhc3MgQ29udGV4dE1l
bnVXZWJFeHRlbnNpb25UZXN0OiBwdWJsaWMgQ29udGV4dE1lbnVUZXN0IHsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RET01DbGllbnRSZWN0LmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RET01DbGllbnRSZWN0
LmNwcAppbmRleCBmZmI0NzQ3MTUzNzlhMGVlYzZiODQ2MTc5NzhmOTIyN2NiZmM5YjMyLi4wMWM4
MDczZTY3NzAxOTg3OGY3NTFkNzQyMDVkNTdlNThmMjY0NTJkIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NQ2xpZW50UmVjdC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdERPTUNsaWVudFJlY3QuY3Bw
CkBAIC0zMCwxMiArMzAsMTIgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHRlc3RIVE1MID0gIjxodG1s
PjxoZWFkPjwvaGVhZD48Ym9keT4iCiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRET01DbGllbnRS
ZWN0RGl2Qm91bmRpbmdDbGllbnRSZWN0UG9zaXRpb24oV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiB7Ci0gICAgZ19hc3NlcnQodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktp
dERPTUNsaWVudFJlY3QiLCAiZGl2LWJvdW5kaW5nLWNsaWVudC1yZWN0LXBvc2l0aW9uIiwgdGVz
dEhUTUwpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJL
aXRET01DbGllbnRSZWN0IiwgImRpdi1ib3VuZGluZy1jbGllbnQtcmVjdC1wb3NpdGlvbiIsIHRl
c3RIVE1MKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRET01DbGllbnRSZWN0RGl2Q2xp
ZW50UmVjdHNQb3NpdGlvbkFuZExlbmd0aChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKIHsKLSAgICBnX2Fzc2VydCh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RE9NQ2xp
ZW50UmVjdCIsICJkaXYtY2xpZW50LXJlY3RzLXBvc2l0aW9uLWFuZC1sZW5ndGgiLCB0ZXN0SFRN
TCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdERP
TUNsaWVudFJlY3QiLCAiZGl2LWNsaWVudC1yZWN0cy1wb3NpdGlvbi1hbmQtbGVuZ3RoIiwgdGVz
dEhUTUwpKTsKIH0KIAogdm9pZCBiZWZvcmVBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdERPTURPTVdpbmRvdy5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NRE9NV2luZG93LmNwcAppbmRleCA5OGM2
ZTEwNjQxZjU5ZDhmMmZjNGJhYTk1NTFjYjlhNmU0ZTcyYmRhLi41NTBhNTk3NmUxNGIxZmFiNmFk
ZDVkNmJiNGJlMTg0NDYzN2EyZjg5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9UZXN0RE9NRE9NV2luZG93LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NRE9NV2luZG93LmNwcApAQCAtOTksNyArOTksNyBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NRE9NV2luZG93U2lnbmFscyhXZWJWaWV3VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZidWlsZGVy
LCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJmJ1
aWxkZXIsICJ7c3Z9IiwgInBhZ2VJRCIsIGdfdmFyaWFudF9uZXdfdWludDY0KHdlYmtpdF93ZWJf
dmlld19nZXRfcGFnZV9pZChzdGF0dXMudGVzdC0+bV93ZWJWaWV3KSkpOwogICAgIHN0YXR1cy50
ZXN0UnVubmVyLT5ydW5UZXN0QW5kV2FpdCgiV2ViS2l0RE9NRE9NV2luZG93IiwgInNpZ25hbHMi
LCBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQoJmJ1aWxkZXIpKTsKLSAgICBnX2Fzc2VydChzdGF0dXMu
dGVzdFJ1bm5lci0+Z2V0VGVzdFJlc3VsdCgpKTsKKyAgICBnX2Fzc2VydF90cnVlKHN0YXR1cy50
ZXN0UnVubmVyLT5nZXRUZXN0UmVzdWx0KCkpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0
RE9NRE9NV2luZG93RGlzcGF0Y2hFdmVudChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NRE9NV2luZG93
RGlzcGF0Y2hFdmVudChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcgogICAgIGdfdmFy
aWFudF9idWlsZGVyX2luaXQoJmJ1aWxkZXIsIEdfVkFSSUFOVF9UWVBFX1ZBUkRJQ1QpOwogICAg
IGdfdmFyaWFudF9idWlsZGVyX2FkZCgmYnVpbGRlciwgIntzdn0iLCAicGFnZUlEIiwgZ192YXJp
YW50X25ld191aW50NjQod2Via2l0X3dlYl92aWV3X2dldF9wYWdlX2lkKHN0YXR1cy50ZXN0LT5t
X3dlYlZpZXcpKSk7CiAgICAgc3RhdHVzLnRlc3RSdW5uZXItPnJ1blRlc3RBbmRXYWl0KCJXZWJL
aXRET01ET01XaW5kb3ciLCAiZGlzcGF0Y2gtZXZlbnQiLCBnX3ZhcmlhbnRfYnVpbGRlcl9lbmQo
JmJ1aWxkZXIpKTsKLSAgICBnX2Fzc2VydChzdGF0dXMudGVzdFJ1bm5lci0+Z2V0VGVzdFJlc3Vs
dCgpKTsKKyAgICBnX2Fzc2VydF90cnVlKHN0YXR1cy50ZXN0UnVubmVyLT5nZXRUZXN0UmVzdWx0
KCkpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NRE9NV2luZG93R2V0Q29tcHV0ZWRT
dHlsZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTEzMyw3ICsxMzMsNyBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NRE9NV2luZG93R2V0Q29tcHV0ZWRTdHlsZShXZWJW
aWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbgogICAgIEdWYXJpYW50QnVpbGRlciBidWlsZGVyOwog
ICAgIGdfdmFyaWFudF9idWlsZGVyX2luaXQoJmJ1aWxkZXIsIEdfVkFSSUFOVF9UWVBFX1ZBUkRJ
Q1QpOwogICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmYnVpbGRlciwgIntzdn0iLCAicGFnZUlE
IiwgZ192YXJpYW50X25ld191aW50NjQod2Via2l0X3dlYl92aWV3X2dldF9wYWdlX2lkKHN0YXR1
cy50ZXN0LT5tX3dlYlZpZXcpKSk7Ci0gICAgZ19hc3NlcnQoc3RhdHVzLnRlc3RSdW5uZXItPnJ1
blRlc3QoIldlYktpdERPTURPTVdpbmRvdyIsICJnZXQtY29tcHV0ZWQtc3R5bGUiLCBnX3Zhcmlh
bnRfYnVpbGRlcl9lbmQoJmJ1aWxkZXIpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShzdGF0dXMudGVz
dFJ1bm5lci0+cnVuVGVzdCgiV2ViS2l0RE9NRE9NV2luZG93IiwgImdldC1jb21wdXRlZC1zdHls
ZSIsIGdfdmFyaWFudF9idWlsZGVyX2VuZCgmYnVpbGRlcikpKTsKIH0KIAogdm9pZCBiZWZvcmVB
bGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVz
dERPTU5vZGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdERP
TU5vZGUuY3BwCmluZGV4IDQ2ZTBkYWJlNTA2MzgxMWVlNDdlNzA2NTgxNWIyMjRmZjBiYjJiZjcu
LmE2OThhMjdlMjdjNGJhMzU3NjY3NDJlNGFiOWJjOGUyZjZlZWFiNTggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RET01Ob2RlLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NTm9kZS5jcHAKQEAgLTI2
LDEyICsyNiwxMiBAQAogc3RhdGljIHZvaWQgdGVzdFdlYktpdERPTU5vZGVIaWVyYXJjaHlOYXZp
Z2F0aW9uKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHN0YXRpYyBj
b25zdCBjaGFyKiB0ZXN0SFRNTCA9ICI8aHRtbD48aGVhZD48dGl0bGU+VGhpcyBpcyB0aGUgdGl0
bGU8L3RpdGxlPjwvaGVhZD48Ym9keT48cD4xPC9wPjxwPjI8L3A+PHA+MzwvcD48L2JvZHk+PC9o
dG1sPiI7Ci0gICAgZ19hc3NlcnQodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdERPTU5v
ZGUiLCAiaGllcmFyY2h5LW5hdmlnYXRpb24iLCB0ZXN0SFRNTCkpOworICAgIGdfYXNzZXJ0X3Ry
dWUodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdERPTU5vZGUiLCAiaGllcmFyY2h5LW5h
dmlnYXRpb24iLCB0ZXN0SFRNTCkpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NTm9k
ZUluc2VydGlvbihXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBnX2Fz
c2VydCh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RE9NTm9kZSIsICJpbnNlcnRpb24i
KSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RE9N
Tm9kZSIsICJpbnNlcnRpb24iKSk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyKiB0YWdOYW1lc1Rl
c3RIVE1MID0gIjxodG1sPjxoZWFkPjwvaGVhZD48Ym9keT4iCkBAIC00NywxOCArNDcsMTggQEAg
c3RhdGljIGNvbnN0IGNoYXIqIHRhZ05hbWVzVGVzdEhUTUwgPSAiPGh0bWw+PGhlYWQ+PC9oZWFk
Pjxib2R5PiIKIAogc3RhdGljIHZvaWQgdGVzdFdlYktpdERPTU5vZGVUYWdOYW1lc05vZGVMaXN0
KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIGdfYXNzZXJ0KHRlc3Qt
PnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01Ob2RlIiwgInRhZy1uYW1lcy1ub2RlLWxpc3Qi
LCB0YWdOYW1lc1Rlc3RIVE1MKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5ydW5XZWJQcm9j
ZXNzVGVzdCgiV2ViS2l0RE9NTm9kZSIsICJ0YWctbmFtZXMtbm9kZS1saXN0IiwgdGFnTmFtZXNU
ZXN0SFRNTCkpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NTm9kZVRhZ05hbWVzSFRN
TENvbGxlY3Rpb24oV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgZ19h
c3NlcnQodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdERPTU5vZGUiLCAidGFnLW5hbWVz
LWh0bWwtY29sbGVjdGlvbiIsIHRhZ05hbWVzVGVzdEhUTUwpKTsKKyAgICBnX2Fzc2VydF90cnVl
KHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01Ob2RlIiwgInRhZy1uYW1lcy1odG1s
LWNvbGxlY3Rpb24iLCB0YWdOYW1lc1Rlc3RIVE1MKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RX
ZWJLaXRET01PYmplY3RDYWNoZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsK
ICAgICBzdGF0aWMgY29uc3QgY2hhciogdGVzdEhUTUwgPSAiPGh0bWw+PGJvZHk+PGRpdiBpZD0n
Y29udGFpbmVyJz48cD5ET00gQ2FjaGUgdGVzdDwvcD48YSBpZD0nbGluayBocmVmPScjJz5saW5r
PC9hPjwvZGl2PjwvYm9keT48L2h0bWw+IjsKLSAgICBnX2Fzc2VydCh0ZXN0LT5ydW5XZWJQcm9j
ZXNzVGVzdCgiV2ViS2l0RE9NTm9kZSIsICJkb20tY2FjaGUiLCB0ZXN0SFRNTCkpOworICAgIGdf
YXNzZXJ0X3RydWUodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdERPTU5vZGUiLCAiZG9t
LWNhY2hlIiwgdGVzdEhUTUwpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NTm9kZUZpbHRlci5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NTm9kZUZpbHRlci5jcHAKaW5kZXggZTBjMGFk
ZDg4ZWEyOGFlY2M2ZjgzNWVjYTUyMDU0YmE1MzQ3Y2MwNS4uMGRhZjQ3OWZiODk5ZDExNzY3NGJj
MmVhM2ViMTk1MTY3MGYxMzhiZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvVGVzdERPTU5vZGVGaWx0ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RET01Ob2RlRmlsdGVyLmNwcApAQCAtMjgsMTIgKzI4LDEy
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiB0ZXN0SFRNTCA9ICI8aHRtbCBpZD0ncm9vdCc+PGhlYWQ+
PHRpdGxlPkRPTU5vZGVUcmVlV2Fsa2VyPC90CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRET01O
b2RlRmlsdGVyVHJlZVdhbGtlcihXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsK
LSAgICBnX2Fzc2VydCh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RE9NTm9kZUZpbHRl
ciIsICJ0cmVlLXdhbGtlciIsIHRlc3RIVE1MKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5y
dW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RE9NTm9kZUZpbHRlciIsICJ0cmVlLXdhbGtlciIsIHRl
c3RIVE1MKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRET01Ob2RlRmlsdGVyTm9kZUl0
ZXJhdG9yKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIGdfYXNzZXJ0
KHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01Ob2RlRmlsdGVyIiwgIm5vZGUtaXRl
cmF0b3IiLCB0ZXN0SFRNTCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+cnVuV2ViUHJvY2Vz
c1Rlc3QoIldlYktpdERPTU5vZGVGaWx0ZXIiLCAibm9kZS1pdGVyYXRvciIsIHRlc3RIVE1MKSk7
CiB9CiAKIHZvaWQgYmVmb3JlQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL1Rlc3RET01YUGF0aE5TUmVzb2x2ZXIuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdERPTVhQYXRoTlNSZXNvbHZlci5jcHAKaW5kZXgg
NjNlZGY0NmNjNDZhMjM0M2Y1ZTE4YTkwNGI0N2M5ZTExMmJkNmU3NC4uMjJkNzlmMTVlZWY5ODE2
NmM0ZWVhMWMwYTM5MTU0MjM0MzI1NzlhMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHdGsvVGVzdERPTVhQYXRoTlNSZXNvbHZlci5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdERPTVhQYXRoTlNSZXNvbHZlci5jcHAK
QEAgLTI2LDEzICsyNiwxMyBAQAogc3RhdGljIHZvaWQgdGVzdFdlYktpdERPTVhQYXRoTlNSZXNv
bHZlck5hdGl2ZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBzdGF0
aWMgY29uc3QgY2hhciogbmF0aXZlWE1MID0gIjxyb290IHhtbG5zOmZvbz0naHR0cDovL3d3dy5l
eGFtcGxlLm9yZyc+PGZvbzpjaGlsZD5TVUNDRVNTPC9mb286Y2hpbGQ+PC9yb290PiI7Ci0gICAg
Z19hc3NlcnQodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdERPTVhQYXRoTlNSZXNvbHZl
ciIsICJuYXRpdmUiLCBuYXRpdmVYTUwsICJ0ZXh0L3htbCIpKTsKKyAgICBnX2Fzc2VydF90cnVl
KHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIiLCAibmF0
aXZlIiwgbmF0aXZlWE1MLCAidGV4dC94bWwiKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJL
aXRET01YUGF0aE5TUmVzb2x2ZXJDdXN0b20oV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGN1c3RvbVhNTCA9ICI8cm9vdCB4bWxucz0n
aHR0cDovL3d3dy5leGFtcGxlLmNvbSc+PGNoaWxkPlNVQ0NFU1M8L2NoaWxkPjwvcm9vdD4iOwot
ICAgIGdfYXNzZXJ0KHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01YUGF0aE5TUmVz
b2x2ZXIiLCAiY3VzdG9tIiwgY3VzdG9tWE1MLCAidGV4dC94bWwiKSk7CisgICAgZ19hc3NlcnRf
dHJ1ZSh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyIiwg
ImN1c3RvbSIsIGN1c3RvbVhNTCwgInRleHQveG1sIikpOwogfQogCiB2b2lkIGJlZm9yZUFsbCgp
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0SW5z
cGVjdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RJbnNw
ZWN0b3IuY3BwCmluZGV4IDNkOTkzZTI0ZjFiNDhlNzdlZjc5ZjZmOWU4MGEyMmJlYjkwZTI3YTAu
LjEzM2IyNGUzYzhiMGMxMzlkZDNmMTQ4ZDJhNGVhMDgwZDFlNDJiZjYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RJbnNwZWN0b3IuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RJbnNwZWN0b3IuY3BwCkBA
IC0xNDAsNyArMTQwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9k
aXNjb25uZWN0KG1faW5zcGVjdG9yLCBoYW5kbGVyKTsKICAgICAgICAgfQogCi0gICAgICAgIGdf
YXNzZXJ0KHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF9jYW5fYXR0YWNoKG1faW5zcGVjdG9yKSk7
CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X2Nhbl9hdHRh
Y2gobV9pbnNwZWN0b3IpKTsKICAgICAgICAgd2Via2l0X3dlYl9pbnNwZWN0b3JfYXR0YWNoKG1f
aW5zcGVjdG9yKTsKICAgICB9CiAKQEAgLTE3NSwxMSArMTc1LDExIEBAIHN0YXRpYyB2b2lkIHRl
c3RJbnNwZWN0b3JEZWZhdWx0KEluc3BlY3RvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAg
ICAgdGVzdC0+c2hvdygpOwogICAgIC8vIFdlIGRvbid0IGFkZCB0aGUgdmlldyB0byBhIGNvbnRh
aW5lciwgc28gY29uc3VtZSB0aGUgd2VhayByZWYgd2l0aCBHUmVmUHRyLgogICAgIEdSZWZQdHI8
V2ViS2l0V2ViVmlld0Jhc2U+IGluc3BlY3RvclZpZXcgPSB3ZWJraXRfd2ViX2luc3BlY3Rvcl9n
ZXRfd2ViX3ZpZXcodGVzdC0+bV9pbnNwZWN0b3IpOwotICAgIGdfYXNzZXJ0KGluc3BlY3RvclZp
ZXcuZ2V0KCkpOworICAgIGdfYXNzZXJ0X25vbm51bGwoaW5zcGVjdG9yVmlldy5nZXQoKSk7CiAg
ICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChp
bnNwZWN0b3JWaWV3LmdldCgpKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfaW5zcGVjdG9y
X2lzX2F0dGFjaGVkKHRlc3QtPm1faW5zcGVjdG9yKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X3dlYl9pbnNwZWN0b3JfaXNfYXR0YWNoZWQodGVzdC0+bV9pbnNwZWN0b3IpKTsKICAgICBn
X2Fzc2VydF9jbXB1aW50KHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF9hdHRhY2hlZF9oZWlnaHQo
dGVzdC0+bV9pbnNwZWN0b3IpLCA9PSwgMCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfaW5z
cGVjdG9yX2dldF9jYW5fYXR0YWNoKHRlc3QtPm1faW5zcGVjdG9yKSk7CisgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X2Nhbl9hdHRhY2godGVzdC0+bV9pbnNwZWN0
b3IpKTsKICAgICBWZWN0b3I8SW5zcGVjdG9yVGVzdDo6SW5zcGVjdG9yRXZlbnRzPiYgZXZlbnRz
ID0gdGVzdC0+bV9ldmVudHM7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09
LCAxKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwgSW5zcGVjdG9yVGVzdDo6
T3BlbldpbmRvdyk7CkBAIC0xOTIsNyArMTkyLDcgQEAgc3RhdGljIHZvaWQgdGVzdEluc3BlY3Rv
ckRlZmF1bHQoSW5zcGVjdG9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5t
X2V2ZW50cy5jbGVhcigpOwogCiAgICAgdGVzdC0+cmVzaXplVmlld0FuZEF0dGFjaCgpOwotICAg
IGdfYXNzZXJ0KHdlYmtpdF93ZWJfaW5zcGVjdG9yX2lzX2F0dGFjaGVkKHRlc3QtPm1faW5zcGVj
dG9yKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2luc3BlY3Rvcl9pc19hdHRhY2hl
ZCh0ZXN0LT5tX2luc3BlY3RvcikpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3dlYl9p
bnNwZWN0b3JfZ2V0X2F0dGFjaGVkX2hlaWdodCh0ZXN0LT5tX2luc3BlY3RvciksID49LCBJbnNw
ZWN0b3JUZXN0OjpnTWluaW11bUF0dGFjaGVkSW5zcGVjdG9ySGVpZ2h0KTsKICAgICBldmVudHMg
PSB0ZXN0LT5tX2V2ZW50czsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNpemUoKSwgPT0s
IDEpOwpAQCAtMjAwLDcgKzIwMCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RJbnNwZWN0b3JEZWZhdWx0
KEluc3BlY3RvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bV9ldmVudHMu
Y2xlYXIoKTsKIAogICAgIHRlc3QtPmRldGFjaEFuZFdhaXRVbnRpbFdpbmRvd09wZW5lZCgpOwot
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX2luc3BlY3Rvcl9pc19hdHRhY2hlZCh0ZXN0LT5tX2lu
c3BlY3RvcikpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfaW5zcGVjdG9yX2lzX2F0
dGFjaGVkKHRlc3QtPm1faW5zcGVjdG9yKSk7CiAgICAgZXZlbnRzID0gdGVzdC0+bV9ldmVudHM7
CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCAyKTsKICAgICBnX2Fzc2Vy
dF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwgSW5zcGVjdG9yVGVzdDo6RGV0YWNoKTsKQEAgLTIzMiwx
MCArMjMyLDEwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgb3BlbldpbmRvdygpCiAgICAgewotICAg
ICAgICBnX2Fzc2VydCghbV9pbnNwZWN0b3JXaW5kb3cpOworICAgICAgICBnX2Fzc2VydF9udWxs
KG1faW5zcGVjdG9yV2luZG93KTsKICAgICAgICAgbV9pbnNwZWN0b3JXaW5kb3cgPSBndGtfd2lu
ZG93X25ldyhHVEtfV0lORE9XX1RPUExFVkVMKTsKICAgICAgICAgV2ViS2l0V2ViVmlld0Jhc2Uq
IGluc3BlY3RvclZpZXcgPSB3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfd2ViX3ZpZXcobV9pbnNw
ZWN0b3IpOwotICAgICAgICBnX2Fzc2VydChpbnNwZWN0b3JWaWV3KTsKKyAgICAgICAgZ19hc3Nl
cnRfbm9ubnVsbChpbnNwZWN0b3JWaWV3KTsKICAgICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RL
X0NPTlRBSU5FUihtX2luc3BlY3RvcldpbmRvdyksIEdUS19XSURHRVQoaW5zcGVjdG9yVmlldykp
OwogICAgICAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKG1faW5zcGVjdG9yV2luZG93KTsKIApAQCAt
MjgxLDE0ICsyODEsMTQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXRX
ZWJWaWV3QmFzZT4gaW5zcGVjdG9yVmlldyA9IHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF93ZWJf
dmlldyhtX2luc3BlY3Rvcik7CiAgICAgICAgIEd0a1dpZGdldCogcGFuZSA9IGd0a19iaW5fZ2V0
X2NoaWxkKEdUS19CSU4obV9wYXJlbnRXaW5kb3cpKTsKLSAgICAgICAgZ19hc3NlcnQoR1RLX0lT
X1BBTkVEKHBhbmUpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShHVEtfSVNfUEFORUQocGFuZSkp
OwogICAgICAgICBndGtfY29udGFpbmVyX3JlbW92ZShHVEtfQ09OVEFJTkVSKHBhbmUpLCBHVEtf
V0lER0VUKGluc3BlY3RvclZpZXcuZ2V0KCkpKTsKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclRl
c3Q6OmRldGFjaCgpOwogICAgIH0KIAogICAgIHZvaWQgZGVzdHJveVdpbmRvdygpCiAgICAgewot
ICAgICAgICBnX2Fzc2VydChtX2luc3BlY3RvcldpbmRvdyk7CisgICAgICAgIGdfYXNzZXJ0X25v
bm51bGwobV9pbnNwZWN0b3JXaW5kb3cpOwogICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kobV9p
bnNwZWN0b3JXaW5kb3cpOwogICAgICAgICBtX2luc3BlY3RvcldpbmRvdyA9IDA7CiAgICAgfQpA
QCAtMzA1LDE0ICszMDUsMTQgQEAgc3RhdGljIHZvaWQgdGVzdEluc3BlY3Rvck1hbnVhbEF0dGFj
aERldGFjaChDdXN0b21JbnNwZWN0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2kKIAogICAgIHRlc3Qt
PnNob3coKTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVz
KEdfT0JKRUNUKHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF93ZWJfdmlldyh0ZXN0LT5tX2luc3Bl
Y3RvcikpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9pbnNwZWN0b3JfaXNfYXR0YWNoZWQo
dGVzdC0+bV9pbnNwZWN0b3IpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX2luc3Bl
Y3Rvcl9pc19hdHRhY2hlZCh0ZXN0LT5tX2luc3BlY3RvcikpOwogICAgIFZlY3RvcjxJbnNwZWN0
b3JUZXN0OjpJbnNwZWN0b3JFdmVudHM+JiBldmVudHMgPSB0ZXN0LT5tX2V2ZW50czsKICAgICBn
X2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNpemUoKSwgPT0sIDEpOwogICAgIGdfYXNzZXJ0X2NtcGlu
dChldmVudHNbMF0sID09LCBJbnNwZWN0b3JUZXN0OjpPcGVuV2luZG93KTsKICAgICB0ZXN0LT5t
X2V2ZW50cy5jbGVhcigpOwogCiAgICAgdGVzdC0+cmVzaXplVmlld0FuZEF0dGFjaCgpOwotICAg
IGdfYXNzZXJ0KHdlYmtpdF93ZWJfaW5zcGVjdG9yX2lzX2F0dGFjaGVkKHRlc3QtPm1faW5zcGVj
dG9yKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2luc3BlY3Rvcl9pc19hdHRhY2hl
ZCh0ZXN0LT5tX2luc3BlY3RvcikpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3dlYl9p
bnNwZWN0b3JfZ2V0X2F0dGFjaGVkX2hlaWdodCh0ZXN0LT5tX2luc3BlY3RvciksID49LCBJbnNw
ZWN0b3JUZXN0OjpnTWluaW11bUF0dGFjaGVkSW5zcGVjdG9ySGVpZ2h0KTsKICAgICBldmVudHMg
PSB0ZXN0LT5tX2V2ZW50czsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNpemUoKSwgPT0s
IDEpOwpAQCAtMzIwLDcgKzMyMCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RJbnNwZWN0b3JNYW51YWxB
dHRhY2hEZXRhY2goQ3VzdG9tSW5zcGVjdG9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAgICAgdGVz
dC0+bV9ldmVudHMuY2xlYXIoKTsKIAogICAgIHRlc3QtPmRldGFjaEFuZFdhaXRVbnRpbFdpbmRv
d09wZW5lZCgpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX2luc3BlY3Rvcl9pc19hdHRhY2hl
ZCh0ZXN0LT5tX2luc3BlY3RvcikpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfaW5z
cGVjdG9yX2lzX2F0dGFjaGVkKHRlc3QtPm1faW5zcGVjdG9yKSk7CiAgICAgZXZlbnRzID0gdGVz
dC0+bV9ldmVudHM7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCAyKTsK
ICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwgSW5zcGVjdG9yVGVzdDo6RGV0YWNo
KTsKQEAgLTMyOCw3ICszMjgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0SW5zcGVjdG9yTWFudWFsQXR0
YWNoRGV0YWNoKEN1c3RvbUluc3BlY3RvclRlc3QqIHRlc3QsIGdjb25zdHBvaQogICAgIHRlc3Qt
Pm1fZXZlbnRzLmNsZWFyKCk7CiAKICAgICB0ZXN0LT5yZXNpemVWaWV3QW5kQXR0YWNoKCk7Ci0g
ICAgZ19hc3NlcnQod2Via2l0X3dlYl9pbnNwZWN0b3JfaXNfYXR0YWNoZWQodGVzdC0+bV9pbnNw
ZWN0b3IpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfaW5zcGVjdG9yX2lzX2F0dGFj
aGVkKHRlc3QtPm1faW5zcGVjdG9yKSk7CiAgICAgdGVzdC0+bV9ldmVudHMuY2xlYXIoKTsKICAg
ICB0ZXN0LT5jbG9zZSgpOwogICAgIGV2ZW50cyA9IHRlc3QtPm1fZXZlbnRzOwpAQCAtMzQ3LDcg
KzM0Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RJbnNwZWN0b3JDdXN0b21Db250YWluZXJEZXN0cm95
ZWQoQ3VzdG9tSW5zcGVjdG9yVGVzdCogdGVzdCwgZ2NvCiAKICAgICB0ZXN0LT5zaG93KCk7CiAg
ICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3
ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfd2ViX3ZpZXcodGVzdC0+bV9pbnNwZWN0b3IpKSk7Ci0g
ICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfaW5zcGVjdG9yX2lzX2F0dGFjaGVkKHRlc3QtPm1faW5z
cGVjdG9yKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9pbnNwZWN0b3JfaXNfYXR0
YWNoZWQodGVzdC0+bV9pbnNwZWN0b3IpKTsKIAogICAgIHRlc3QtPm1fZXZlbnRzLmNsZWFyKCk7
CiAgICAgdGVzdC0+ZGVzdHJveVdpbmRvdygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdEluc3BlY3RvclNlcnZlci5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0SW5zcGVjdG9yU2VydmVyLmNwcAppbmRleCA5
M2E5MWQ4MWQyNjgwZDQ3ZjNkYjJiY2I0MjcxNTMzOWU0MThiN2I0Li5iYzI2MTQzZTE1NzQ4NGFj
YjFkZTY0MDU0NWMzNTIxNDFmNDE4OTg3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEd0ay9UZXN0SW5zcGVjdG9yU2VydmVyLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0SW5zcGVjdG9yU2VydmVyLmNwcApAQCAtOTks
NyArOTksNyBAQCBzdGF0aWMgdm9pZCBzdGFydFRlc3RTZXJ2ZXIoKQogICAgIHRlc3RTZXJ2ZXJB
cmd2WzBdID0gdGVzdFNlcnZlclBhdGguZ2V0KCk7CiAgICAgdGVzdFNlcnZlckFyZ3ZbMV0gPSBu
dWxscHRyOwogCi0gICAgZ19hc3NlcnQoZ19zcGF3bl9hc3luYyhudWxscHRyLCB0ZXN0U2VydmVy
QXJndiwgbnVsbHB0ciwgR19TUEFXTl9ERUZBVUxULCBudWxscHRyLCBudWxscHRyLCAmZ0NoaWxk
UHJvY2Vzc1BpZCwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X3RydWUoZ19zcGF3bl9hc3luYyhu
dWxscHRyLCB0ZXN0U2VydmVyQXJndiwgbnVsbHB0ciwgR19TUEFXTl9ERUZBVUxULCBudWxscHRy
LCBudWxscHRyLCAmZ0NoaWxkUHJvY2Vzc1BpZCwgbnVsbHB0cikpOwogCiAgICAgd2FpdFVudGls
SW5zcGVjdG9yU2VydmVySXNSZWFkeSgpOwogICAgIGlmICghZ1NlcnZlcklzUmVhZHkpCkBAIC0x
MTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
NTsgKytpKSB7CiAgICAgICAgICAgICBzaXplX3QgbWFpblJlc291cmNlRGF0YVNpemUgPSAwOwog
ICAgICAgICAgICAgY29uc3QgY2hhciogbWFpblJlc291cmNlRGF0YSA9IHRoaXMtPm1haW5SZXNv
dXJjZURhdGEobWFpblJlc291cmNlRGF0YVNpemUpOwotICAgICAgICAgICAgZ19hc3NlcnQobWFp
blJlc291cmNlRGF0YSk7CisgICAgICAgICAgICBnX2Fzc2VydF9ub25udWxsKG1haW5SZXNvdXJj
ZURhdGEpOwogICAgICAgICAgICAgaWYgKGdfc3RycnN0cl9sZW4obWFpblJlc291cmNlRGF0YSwg
bWFpblJlc291cmNlRGF0YVNpemUsICJObyB0YXJnZXRzIGZvdW5kIikpCiAgICAgICAgICAgICAg
ICAgd2FpdCgwLjEpOwogICAgICAgICAgICAgZWxzZSBpZiAoZ19zdHJyc3RyX2xlbihtYWluUmVz
b3VyY2VEYXRhLCBtYWluUmVzb3VyY2VEYXRhU2l6ZSwgIkluc3BlY3RhYmxlIHRhcmdldHMiKSkK
QEAgLTEzNSwxNyArMTM1LDE3IEBAIHN0YXRpYyB2b2lkIHRlc3RJbnNwZWN0b3JTZXJ2ZXJQYWdl
TGlzdChJbnNwZWN0b3JTZXJ2ZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyCiAgICAgR1VuaXF1
ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogCiAgICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVu
dGlsTWFwcGVkKEdUS19XSU5ET1dfVE9QTEVWRUwpOwotICAgIGdfYXNzZXJ0KHRlc3QtPmdldFBh
Z2VMaXN0KCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+Z2V0UGFnZUxpc3QoKSk7CiAKICAg
ICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2
YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKCd0YXJnZXRuYW1lJykubGVuZ3RoOyIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3Nl
cnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICBn
X2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9y
KGVycm9yLmdldCgpKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoV2ViVmlld1Rlc3Q6OmphdmFzY3Jp
cHRSZXN1bHRUb051bWJlcihqYXZhc2NyaXB0UmVzdWx0KSwgPT0sIDEpOwogCiAgICAgR1VuaXF1
ZVB0cjxjaGFyPiB2YWx1ZVN0cmluZzsKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVu
SmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lKCd0YXJnZXR1cmwnKVswXS5pbm5lclRleHQ7IiwgJmVycm9yLm91dFB0cigpKTsKLSAg
ICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkp
OworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRf
bm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwogICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0
OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiaHR0cDovLzEyNy4wLjAuMToyOTk5
LyIpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsv
VGVzdE9wdGlvbk1lbnUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsv
VGVzdE9wdGlvbk1lbnUuY3BwCmluZGV4IGVhNjFiYzRkMmE0YjhiODZmYmNjOWIzMDUxYTNlOWRj
ZmFlMmZlYTUuLmM1MGRkMDUwMWJmNzI0MDRjMzUwZDg3NzYxZjIxNmVjODE5ZDUxZjMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RPcHRpb25NZW51
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0T3B0aW9u
TWVudS5jcHAKQEAgLTQ5LDkgKzQ5LDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGdib29sZWFu
IHNob3dPcHRpb25NZW51Q2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0T3B0
aW9uTWVudSogbWVudSwgR2RrRXZlbnQqIGV2ZW50LCBHZGtSZWN0YW5nbGUqIHJlY3QsIE9wdGlv
bk1lbnVUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQodGVzdC0+bV93ZWJWaWV3
ID09IHdlYlZpZXcpOwotICAgICAgICBnX2Fzc2VydChyZWN0KTsKLSAgICAgICAgZ19hc3NlcnQo
V0VCS0lUX0lTX09QVElPTl9NRU5VKG1lbnUpKTsKKyAgICAgICAgZ19hc3NlcnRfY21waGV4KHRl
c3QtPm1fd2ViVmlldywgPT0sIHdlYlZpZXcpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKHJl
Y3QpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19PUFRJT05fTUVOVShtZW51KSk7
CiAgICAgICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19P
QkpFQ1QobWVudSkpOwogICAgICAgICB0ZXN0LT5zaG93T3B0aW9uTWVudShtZW51LCByZWN0KTsK
ICAgICAgICAgcmV0dXJuIFRSVUU7CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyB2b2lkIG1lbnVDbG9zZUNhbGxiYWNrKFdlYktpdE9wdGlvbk1lbnUqIG1lbnUsIE9wdGlv
bk1lbnVUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQodGVzdC0+bV9tZW51Lmdl
dCgpID09IG1lbnUpOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgodGVzdC0+bV9tZW51LmdldCgp
LCA9PSwgbWVudSk7CiAgICAgICAgIHRlc3QtPmRlc3Ryb3lNZW51KCk7CiAgICAgfQogCkBAIC04
MCwyMyArODAsMjMgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbG9zZSgpCiAgICAgewotICAgICAg
ICBnX2Fzc2VydChtX21lbnUuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKG1fbWVu
dS5nZXQoKSk7CiAgICAgICAgIHdlYmtpdF9vcHRpb25fbWVudV9jbG9zZShtX21lbnUuZ2V0KCkp
OwotICAgICAgICBnX2Fzc2VydCghbV9tZW51LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfbnVs
bChtX21lbnUuZ2V0KCkpOwogICAgIH0KIAogICAgIHZvaWQgYWN0aXZhdGVJdGVtKHVuc2lnbmVk
IGl0ZW0pCiAgICAgewotICAgICAgICBnX2Fzc2VydChtX21lbnUuZ2V0KCkpOworICAgICAgICBn
X2Fzc2VydF9ub25udWxsKG1fbWVudS5nZXQoKSk7CiAgICAgICAgIHdlYmtpdF9vcHRpb25fbWVu
dV9hY3RpdmF0ZV9pdGVtKG1fbWVudS5nZXQoKSwgaXRlbSk7Ci0gICAgICAgIGdfYXNzZXJ0KG1f
bWVudS5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobV9tZW51LmdldCgpKTsKICAg
ICB9CiAKICAgICB2b2lkIHNlbGVjdEl0ZW0odW5zaWduZWQgaXRlbSkKICAgICB7Ci0gICAgICAg
IGdfYXNzZXJ0KG1fbWVudS5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobV9tZW51
LmdldCgpKTsKICAgICAgICAgd2Via2l0X29wdGlvbl9tZW51X3NlbGVjdF9pdGVtKG1fbWVudS5n
ZXQoKSwgaXRlbSk7Ci0gICAgICAgIGdfYXNzZXJ0KG1fbWVudS5nZXQoKSk7CisgICAgICAgIGdf
YXNzZXJ0X25vbm51bGwobV9tZW51LmdldCgpKTsKICAgICB9CiAKICAgICBHUmVmUHRyPFdlYktp
dE9wdGlvbk1lbnU+IG1fbWVudTsKQEAgLTExNywzMiArMTE3LDMyIEBAIHN0YXRpYyB2b2lkIHRl
c3RPcHRpb25NZW51U2ltcGxlKE9wdGlvbk1lbnVUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCiAgICAgdGVzdC0+Y2xpY2tBdFBv
c2l0aW9uQW5kV2FpdFVudGlsT3B0aW9uTWVudVNob3duKDUsIDE1KTsKLSAgICBnX2Fzc2VydChX
RUJLSVRfSVNfT1BUSU9OX01FTlUodGVzdC0+bV9tZW51LmdldCgpKSk7CisgICAgZ19hc3NlcnRf
dHJ1ZShXRUJLSVRfSVNfT1BUSU9OX01FTlUodGVzdC0+bV9tZW51LmdldCgpKSk7CiAgICAgZ19h
c3NlcnRfY21waW50KHdlYmtpdF9vcHRpb25fbWVudV9nZXRfbl9pdGVtcyh0ZXN0LT5tX21lbnUu
Z2V0KCkpLCA9PSwgMyk7CiAgICAgYXV0byogaXRlbSA9IHdlYmtpdF9vcHRpb25fbWVudV9nZXRf
aXRlbSh0ZXN0LT5tX21lbnUuZ2V0KCksIDApOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRf
b3B0aW9uX21lbnVfaXRlbV9nZXRfbGFiZWwoaXRlbSksID09LCAiRm9vIik7CiAgICAgZ19hc3Nl
cnRfY21wc3RyKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2dldF90b29sdGlwKGl0ZW0pLCA9PSwg
IlRoZSBGb28gT3B0aW9uIik7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVt
X2lzX2dyb3VwX2xhYmVsKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51
X2l0ZW1faXNfZ3JvdXBfY2hpbGQoaXRlbSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9vcHRpb25f
bWVudV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9u
X21lbnVfaXRlbV9pc19zZWxlY3RlZChpdGVtKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0
X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfbGFiZWwoaXRlbSkpOworICAgIGdfYXNzZXJ0X2Zh
bHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2NoaWxkKGl0ZW0pKTsKKyAgICBn
X2Fzc2VydF90cnVlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkpOwor
ICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX3NlbGVjdGVkKGl0
ZW0pKTsKICAgICBpdGVtID0gd2Via2l0X29wdGlvbl9tZW51X2dldF9pdGVtKHRlc3QtPm1fbWVu
dS5nZXQoKSwgMSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9vcHRpb25fbWVudV9pdGVt
X2dldF9sYWJlbChpdGVtKSwgPT0sICJCYXIiKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlv
bl9tZW51X2l0ZW1fZ2V0X3Rvb2x0aXAoaXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0
aW9uX21lbnVfaXRlbV9pc19ncm91cF9sYWJlbChpdGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtp
dF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2NoaWxkKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCh3
ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19lbmFibGVkKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCh3
ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19zZWxlY3RlZChpdGVtKSk7CisgICAgZ19hc3NlcnRf
bnVsbCh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfdG9vbHRpcChpdGVtKSk7CisgICAgZ19h
c3NlcnRfZmFsc2Uod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfbGFiZWwoaXRlbSkp
OworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2No
aWxkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lz
X2VuYWJsZWQoaXRlbSkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X29wdGlvbl9tZW51X2l0
ZW1faXNfc2VsZWN0ZWQoaXRlbSkpOwogICAgIGl0ZW0gPSB3ZWJraXRfb3B0aW9uX21lbnVfZ2V0
X2l0ZW0odGVzdC0+bV9tZW51LmdldCgpLCAyKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0
X29wdGlvbl9tZW51X2l0ZW1fZ2V0X2xhYmVsKGl0ZW0pLCA9PSwgIkJheiIpOwotICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfdG9vbHRpcChpdGVtKSk7Ci0gICAgZ19h
c3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2xhYmVsKGl0ZW0pKTsKLSAg
ICBnX2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfY2hpbGQoaXRlbSkp
OwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19lbmFibGVkKGl0ZW0p
KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfc2VsZWN0ZWQoaXRl
bSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X3Rvb2x0
aXAoaXRlbSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lz
X2dyb3VwX2xhYmVsKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfb3B0aW9uX21l
bnVfaXRlbV9pc19ncm91cF9jaGlsZChpdGVtKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0
X29wdGlvbl9tZW51X2l0ZW1faXNfZW5hYmxlZChpdGVtKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uo
d2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfc2VsZWN0ZWQoaXRlbSkpOwogCiAgICAgdGVzdC0+
Y2xvc2UoKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+bV9tZW51LmdldCgpKTsKKyAgICBnX2Fzc2Vy
dF9udWxsKHRlc3QtPm1fbWVudS5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RPcHRpb25N
ZW51R3JvdXBzKE9wdGlvbk1lbnVUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMTY2LDY0
ICsxNjYsNjQgQEAgc3RhdGljIHZvaWQgdGVzdE9wdGlvbk1lbnVHcm91cHMoT3B0aW9uTWVudVRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVk
KCk7CiAKICAgICB0ZXN0LT5jbGlja0F0UG9zaXRpb25BbmRXYWl0VW50aWxPcHRpb25NZW51U2hv
d24oNSwgMTUpOwotICAgIGdfYXNzZXJ0KFdFQktJVF9JU19PUFRJT05fTUVOVSh0ZXN0LT5tX21l
bnUuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19PUFRJT05fTUVOVSh0ZXN0
LT5tX21lbnUuZ2V0KCkpKTsKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X29wdGlvbl9tZW51
X2dldF9uX2l0ZW1zKHRlc3QtPm1fbWVudS5nZXQoKSksID09LCA4KTsKICAgICBhdXRvKiBpdGVt
ID0gd2Via2l0X29wdGlvbl9tZW51X2dldF9pdGVtKHRlc3QtPm1fbWVudS5nZXQoKSwgMCk7CiAg
ICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2dldF9sYWJlbChpdGVt
KSwgPT0sICJSb290Iik7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2dl
dF90b29sdGlwKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0ZW1f
aXNfZ3JvdXBfbGFiZWwoaXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVf
aXRlbV9pc19ncm91cF9jaGlsZChpdGVtKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X29wdGlvbl9t
ZW51X2l0ZW1faXNfZW5hYmxlZChpdGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25f
bWVudV9pdGVtX2lzX3NlbGVjdGVkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9v
cHRpb25fbWVudV9pdGVtX2dldF90b29sdGlwKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3
ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9sYWJlbChpdGVtKSk7CisgICAgZ19hc3Nl
cnRfZmFsc2Uod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfY2hpbGQoaXRlbSkpOwor
ICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZW5hYmxlZChpdGVt
KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfc2VsZWN0
ZWQoaXRlbSkpOwogICAgIGl0ZW0gPSB3ZWJraXRfb3B0aW9uX21lbnVfZ2V0X2l0ZW0odGVzdC0+
bV9tZW51LmdldCgpLCAxKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X29wdGlvbl9tZW51
X2l0ZW1fZ2V0X2xhYmVsKGl0ZW0pLCA9PSwgIkdyb3VwIDEiKTsKLSAgICBnX2Fzc2VydCghd2Vi
a2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X3Rvb2x0aXAoaXRlbSkpOwotICAgIGdfYXNzZXJ0KHdl
YmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2xhYmVsKGl0ZW0pKTsKLSAgICBnX2Fzc2Vy
dCghd2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfY2hpbGQoaXRlbSkpOwotICAgIGdf
YXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19lbmFibGVkKGl0ZW0pKTsKLSAgICBn
X2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfc2VsZWN0ZWQoaXRlbSkpOworICAg
IGdfYXNzZXJ0X251bGwod2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X3Rvb2x0aXAoaXRlbSkp
OworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfbGFi
ZWwoaXRlbSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lz
X2dyb3VwX2NoaWxkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfb3B0aW9uX21l
bnVfaXRlbV9pc19lbmFibGVkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfb3B0
aW9uX21lbnVfaXRlbV9pc19zZWxlY3RlZChpdGVtKSk7CiAgICAgaXRlbSA9IHdlYmtpdF9vcHRp
b25fbWVudV9nZXRfaXRlbSh0ZXN0LT5tX21lbnUuZ2V0KCksIDIpOwogICAgIGdfYXNzZXJ0X2Nt
cHN0cih3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfbGFiZWwoaXRlbSksID09LCAiQ2hpbGQg
MS0xIik7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2dldF90b29sdGlw
KGl0ZW0pKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBf
bGFiZWwoaXRlbSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dy
b3VwX2NoaWxkKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9p
c19lbmFibGVkKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0ZW1f
aXNfc2VsZWN0ZWQoaXRlbSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X29wdGlvbl9tZW51
X2l0ZW1fZ2V0X3Rvb2x0aXAoaXRlbSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRp
b25fbWVudV9pdGVtX2lzX2dyb3VwX2xhYmVsKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF90cnVlKHdl
YmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2NoaWxkKGl0ZW0pKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkpOworICAgIGdf
YXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX3NlbGVjdGVkKGl0ZW0pKTsK
ICAgICBpdGVtID0gd2Via2l0X29wdGlvbl9tZW51X2dldF9pdGVtKHRlc3QtPm1fbWVudS5nZXQo
KSwgMyk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2dldF9s
YWJlbChpdGVtKSwgPT0sICJDaGlsZCAxLTIiKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlv
bl9tZW51X2l0ZW1fZ2V0X3Rvb2x0aXAoaXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0
aW9uX21lbnVfaXRlbV9pc19ncm91cF9sYWJlbChpdGVtKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0
X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfY2hpbGQoaXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3
ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19lbmFibGVkKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCgh
d2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfc2VsZWN0ZWQoaXRlbSkpOworICAgIGdfYXNzZXJ0
X251bGwod2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X3Rvb2x0aXAoaXRlbSkpOworICAgIGdf
YXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2xhYmVsKGl0ZW0p
KTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2No
aWxkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9p
c19lbmFibGVkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfb3B0aW9uX21lbnVf
aXRlbV9pc19zZWxlY3RlZChpdGVtKSk7CiAgICAgaXRlbSA9IHdlYmtpdF9vcHRpb25fbWVudV9n
ZXRfaXRlbSh0ZXN0LT5tX21lbnUuZ2V0KCksIDQpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJr
aXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfbGFiZWwoaXRlbSksID09LCAiR3JvdXAgMiIpOwotICAg
IGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfdG9vbHRpcChpdGVtKSk7Ci0g
ICAgZ19hc3NlcnQod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfbGFiZWwoaXRlbSkp
OwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9jaGlsZChp
dGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2VuYWJsZWQo
aXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19zZWxlY3Rl
ZChpdGVtKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRf
dG9vbHRpcChpdGVtKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRl
bV9pc19ncm91cF9sYWJlbChpdGVtKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X29wdGlv
bl9tZW51X2l0ZW1faXNfZ3JvdXBfY2hpbGQoaXRlbSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdl
YmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkpOworICAgIGdfYXNzZXJ0X2Zh
bHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX3NlbGVjdGVkKGl0ZW0pKTsKICAgICBpdGVt
ID0gd2Via2l0X29wdGlvbl9tZW51X2dldF9pdGVtKHRlc3QtPm1fbWVudS5nZXQoKSwgNSk7CiAg
ICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2dldF9sYWJlbChpdGVt
KSwgPT0sICJDaGlsZCAyLTEiKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0
ZW1fZ2V0X3Rvb2x0aXAoaXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVf
aXRlbV9pc19ncm91cF9sYWJlbChpdGVtKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X29wdGlvbl9t
ZW51X2l0ZW1faXNfZ3JvdXBfY2hpbGQoaXRlbSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9vcHRp
b25fbWVudV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9vcHRp
b25fbWVudV9pdGVtX2lzX3NlbGVjdGVkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtp
dF9vcHRpb25fbWVudV9pdGVtX2dldF90b29sdGlwKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxz
ZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9sYWJlbChpdGVtKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9jaGlsZChpdGVtKSk7
CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19lbmFibGVkKGl0
ZW0pKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX3NlbGVj
dGVkKGl0ZW0pKTsKICAgICBpdGVtID0gd2Via2l0X29wdGlvbl9tZW51X2dldF9pdGVtKHRlc3Qt
Pm1fbWVudS5nZXQoKSwgNik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9vcHRpb25fbWVu
dV9pdGVtX2dldF9sYWJlbChpdGVtKSwgPT0sICJDaGlsZCAyLTIiKTsKLSAgICBnX2Fzc2VydCgh
d2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X3Rvb2x0aXAoaXRlbSkpOwotICAgIGdfYXNzZXJ0
KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9sYWJlbChpdGVtKSk7Ci0gICAgZ19h
c3NlcnQod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfY2hpbGQoaXRlbSkpOwotICAg
IGdfYXNzZXJ0KHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkpOwotICAg
IGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19zZWxlY3RlZChpdGVtKSk7Cisg
ICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfdG9vbHRpcChpdGVt
KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBf
bGFiZWwoaXRlbSkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X29wdGlvbl9tZW51X2l0ZW1f
aXNfZ3JvdXBfY2hpbGQoaXRlbSkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X29wdGlvbl9t
ZW51X2l0ZW1faXNfZW5hYmxlZChpdGVtKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X29w
dGlvbl9tZW51X2l0ZW1faXNfc2VsZWN0ZWQoaXRlbSkpOwogICAgIGl0ZW0gPSB3ZWJraXRfb3B0
aW9uX21lbnVfZ2V0X2l0ZW0odGVzdC0+bV9tZW51LmdldCgpLCA3KTsKICAgICBnX2Fzc2VydF9j
bXBzdHIod2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X2xhYmVsKGl0ZW0pLCA9PSwgIlRhaWwi
KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X3Rvb2x0aXAoaXRl
bSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9sYWJl
bChpdGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3Vw
X2NoaWxkKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19l
bmFibGVkKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNf
c2VsZWN0ZWQoaXRlbSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X29wdGlvbl9tZW51X2l0
ZW1fZ2V0X3Rvb2x0aXAoaXRlbSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25f
bWVudV9pdGVtX2lzX2dyb3VwX2xhYmVsKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJr
aXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9jaGlsZChpdGVtKSk7CisgICAgZ19hc3NlcnRf
dHJ1ZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19lbmFibGVkKGl0ZW0pKTsKKyAgICBnX2Fz
c2VydF9mYWxzZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19zZWxlY3RlZChpdGVtKSk7CiB9
CiAKIHN0YXRpYyB2b2lkIHRlc3RPcHRpb25NZW51QWN0aXZhdGUoT3B0aW9uTWVudVRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCkBAIC0yNDAsMTcgKzI0MCwxNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
T3B0aW9uTWVudUFjdGl2YXRlKE9wdGlvbk1lbnVUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCiAgICAgdGVzdC0+Y2xpY2tBdFBv
c2l0aW9uQW5kV2FpdFVudGlsT3B0aW9uTWVudVNob3duKDUsIDE1KTsKLSAgICBnX2Fzc2VydChX
RUJLSVRfSVNfT1BUSU9OX01FTlUodGVzdC0+bV9tZW51LmdldCgpKSk7CisgICAgZ19hc3NlcnRf
dHJ1ZShXRUJLSVRfSVNfT1BUSU9OX01FTlUodGVzdC0+bV9tZW51LmdldCgpKSk7CiAgICAgZ19h
c3NlcnRfY21waW50KHdlYmtpdF9vcHRpb25fbWVudV9nZXRfbl9pdGVtcyh0ZXN0LT5tX21lbnUu
Z2V0KCkpLCA9PSwgMyk7CiAgICAgdGVzdC0+YWN0aXZhdGVJdGVtKDEpOwogICAgIGF1dG8qIHJl
c3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2NvbWJvJykuc2VsZWN0ZWRJbmRleCIsIG51bGxwdHIpOwotICAgIGdf
YXNzZXJ0KHJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChyZXN1bHQpOwogICAgIGdfYXNz
ZXJ0X2NtcGZsb2F0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIocmVzdWx0
KSwgPT0sIDEpOwogCiAgICAgLy8gV2Ugc2hvdWxkIGNsb3NlIHRoZSBtZW51IGFmdGVyIGFjdGl2
YXRlLCBmdXJ0aGVyIGFjdGl2YXRlcyB3aWxsIGJlIGlnbm9yZWQuCiAgICAgdGVzdC0+YWN0aXZh
dGVJdGVtKDIpOwogICAgIHJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxG
aW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbWJvJykuc2VsZWN0ZWRJbmRleCIs
IG51bGxwdHIpOwotICAgIGdfYXNzZXJ0KHJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChy
ZXN1bHQpOwogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVz
dWx0VG9OdW1iZXIocmVzdWx0KSwgPT0sIDEpOwogCiAgICAgdGVzdC0+Y2xvc2UoKTsKQEAgLTI3
MCwyNSArMjcwLDI1IEBAIHN0YXRpYyB2b2lkIHRlc3RPcHRpb25NZW51U2VsZWN0KE9wdGlvbk1l
bnVUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5p
c2hlZCgpOwogCiAgICAgdGVzdC0+Y2xpY2tBdFBvc2l0aW9uQW5kV2FpdFVudGlsT3B0aW9uTWVu
dVNob3duKDUsIDE1KTsKLSAgICBnX2Fzc2VydChXRUJLSVRfSVNfT1BUSU9OX01FTlUodGVzdC0+
bV9tZW51LmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfT1BUSU9OX01FTlUo
dGVzdC0+bV9tZW51LmdldCgpKSk7CiAgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9vcHRpb25f
bWVudV9nZXRfbl9pdGVtcyh0ZXN0LT5tX21lbnUuZ2V0KCkpLCA9PSwgMyk7CiAKICAgICAvLyBT
ZWxlY3QgaXRlbSBjaGFuZ2VzIHRoZSBjb21ibyB0ZXh0LCBidXQgbm90IHRoZSBjdXJyZW50bHkg
c2VsZWN0ZWQgaXRlbS4KICAgICB0ZXN0LT5zZWxlY3RJdGVtKDIpOwogICAgIGF1dG8qIHJlc3Vs
dCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvbWJvJykuc2VsZWN0ZWRJbmRleCIsIG51bGxwdHIpOwotICAgIGdfYXNz
ZXJ0KHJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChyZXN1bHQpOwogICAgIGdfYXNzZXJ0
X2NtcGZsb2F0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIocmVzdWx0KSwg
PT0sIDApOwogCiAgICAgLy8gSXQgY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4KICAgICB0
ZXN0LT5zZWxlY3RJdGVtKDEpOwogICAgIHJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRX
YWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbWJvJykuc2VsZWN0
ZWRJbmRleCIsIG51bGxwdHIpOwotICAgIGdfYXNzZXJ0KHJlc3VsdCk7CisgICAgZ19hc3NlcnRf
bm9ubnVsbChyZXN1bHQpOwogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KFdlYlZpZXdUZXN0OjpqYXZh
c2NyaXB0UmVzdWx0VG9OdW1iZXIocmVzdWx0KSwgPT0sIDApOwogCiAgICAgLy8gQW5kIGNsb3Np
bmcgdGhlIG1lbnUgYWN0aXZhdGVzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbS4KICAgICB0
ZXN0LT5jbG9zZSgpOwogICAgIHJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50
aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbWJvJykuc2VsZWN0ZWRJbmRl
eCIsIG51bGxwdHIpOwotICAgIGdfYXNzZXJ0KHJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9ubnVs
bChyZXN1bHQpOwogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0
UmVzdWx0VG9OdW1iZXIocmVzdWx0KSwgPT0sIDEpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0UHJpbnRpbmcuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFByaW50aW5nLmNwcAppbmRleCA3MTBhZTlj
NmJjYmViMzY3YWJhNTYwNTg4NjU3NTkyNWU5ZTJkZWYxLi4yYzhlYjkyYTc0YmQyMGJlMzQ5ZjMz
NDhjYWFkM2NiYjVjYmMzNzk3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEd0ay9UZXN0UHJpbnRpbmcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL1Rlc3RQcmludGluZy5jcHAKQEAgLTMxLDggKzMxLDggQEAgc3RhdGljIHZv
aWQgdGVzdFByaW50T3BlcmF0aW9uUHJpbnRTZXR0aW5ncyhXZWJWaWV3VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICBHUmVmUHRyPFdlYktpdFByaW50T3BlcmF0aW9uPiBwcmludE9wZXJh
dGlvbiA9IGFkb3B0R1JlZih3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX25ldyh0ZXN0LT5tX3dlYlZp
ZXcpKTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdf
T0JKRUNUKHByaW50T3BlcmF0aW9uLmdldCgpKSk7CiAKLSAgICBnX2Fzc2VydCghd2Via2l0X3By
aW50X29wZXJhdGlvbl9nZXRfcHJpbnRfc2V0dGluZ3MocHJpbnRPcGVyYXRpb24uZ2V0KCkpKTsK
LSAgICBnX2Fzc2VydCghd2Via2l0X3ByaW50X29wZXJhdGlvbl9nZXRfcGFnZV9zZXR1cChwcmlu
dE9wZXJhdGlvbi5nZXQoKSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3ByaW50X29wZXJh
dGlvbl9nZXRfcHJpbnRfc2V0dGluZ3MocHJpbnRPcGVyYXRpb24uZ2V0KCkpKTsKKyAgICBnX2Fz
c2VydF9udWxsKHdlYmtpdF9wcmludF9vcGVyYXRpb25fZ2V0X3BhZ2Vfc2V0dXAocHJpbnRPcGVy
YXRpb24uZ2V0KCkpKTsKIAogICAgIEdSZWZQdHI8R3RrUHJpbnRTZXR0aW5ncz4gcHJpbnRTZXR0
aW5ncyA9IGFkb3B0R1JlZihndGtfcHJpbnRfc2V0dGluZ3NfbmV3KCkpOwogICAgIHRlc3QtPmFz
c2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocHJpbnRTZXR0aW5n
cy5nZXQoKSkpOwpAQCAtNDMsMTkgKzQzLDE5IEBAIHN0YXRpYyB2b2lkIHRlc3RQcmludE9wZXJh
dGlvblByaW50U2V0dGluZ3MoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAg
d2Via2l0X3ByaW50X29wZXJhdGlvbl9zZXRfcHJpbnRfc2V0dGluZ3MocHJpbnRPcGVyYXRpb24u
Z2V0KCksIHByaW50U2V0dGluZ3MuZ2V0KCkpOwogICAgIHdlYmtpdF9wcmludF9vcGVyYXRpb25f
c2V0X3BhZ2Vfc2V0dXAocHJpbnRPcGVyYXRpb24uZ2V0KCksIHBhZ2VTZXR1cC5nZXQoKSk7CiAK
LSAgICBnX2Fzc2VydCh3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX2dldF9wcmludF9zZXR0aW5ncyhw
cmludE9wZXJhdGlvbi5nZXQoKSkgPT0gcHJpbnRTZXR0aW5ncy5nZXQoKSk7Ci0gICAgZ19hc3Nl
cnQod2Via2l0X3ByaW50X29wZXJhdGlvbl9nZXRfcGFnZV9zZXR1cChwcmludE9wZXJhdGlvbi5n
ZXQoKSkgPT0gcGFnZVNldHVwLmdldCgpKTsKKyAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X3By
aW50X29wZXJhdGlvbl9nZXRfcHJpbnRfc2V0dGluZ3MocHJpbnRPcGVyYXRpb24uZ2V0KCkpLCA9
PSwgcHJpbnRTZXR0aW5ncy5nZXQoKSk7CisgICAgZ19hc3NlcnRfY21waGV4KHdlYmtpdF9wcmlu
dF9vcGVyYXRpb25fZ2V0X3BhZ2Vfc2V0dXAocHJpbnRPcGVyYXRpb24uZ2V0KCkpLCA9PSwgcGFn
ZVNldHVwLmdldCgpKTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYlZpZXdQcmludENhbGxiYWNr
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFByaW50T3BlcmF0aW9uKiBwcmludE9wZXJh
dGlvbiwgV2ViVmlld1Rlc3QqIHRlc3QpCiB7Ci0gICAgZ19hc3NlcnQod2ViVmlldyA9PSB0ZXN0
LT5tX3dlYlZpZXcpOworICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJWaWV3LCA9PSwgdGVzdC0+bV93
ZWJWaWV3KTsKIAotICAgIGdfYXNzZXJ0KFdFQktJVF9JU19QUklOVF9PUEVSQVRJT04ocHJpbnRP
cGVyYXRpb24pKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19QUklOVF9PUEVSQVRJT04o
cHJpbnRPcGVyYXRpb24pKTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKHByaW50T3BlcmF0aW9uKSk7CiAKLSAgICBnX2Fzc2VydCghd2Vi
a2l0X3ByaW50X29wZXJhdGlvbl9nZXRfcHJpbnRfc2V0dGluZ3MocHJpbnRPcGVyYXRpb24pKTsK
LSAgICBnX2Fzc2VydCghd2Via2l0X3ByaW50X29wZXJhdGlvbl9nZXRfcGFnZV9zZXR1cChwcmlu
dE9wZXJhdGlvbikpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3ByaW50X29wZXJhdGlvbl9n
ZXRfcHJpbnRfc2V0dGluZ3MocHJpbnRPcGVyYXRpb24pKTsKKyAgICBnX2Fzc2VydF9udWxsKHdl
YmtpdF9wcmludF9vcGVyYXRpb25fZ2V0X3BhZ2Vfc2V0dXAocHJpbnRPcGVyYXRpb24pKTsKIAog
ICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CiAKQEAgLTk4LDkgKzk4LDkg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcHJpbnRGYWlsZWRDYWxsYmFjayhXZWJLaXRQ
cmludE9wZXJhdGlvbiosIEdFcnJvciogZXJyb3IsIFByaW50VGVzdCogdGVzdCkKICAgICB7Ci0g
ICAgICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXhwZWN0ZWRFcnJvcik7Ci0gICAgICAgIGdfYXNzZXJ0
KGVycm9yKTsKLSAgICAgICAgZ19hc3NlcnQoZ19lcnJvcl9tYXRjaGVzKGVycm9yLCBXRUJLSVRf
UFJJTlRfRVJST1IsIHRlc3QtPm1fZXhwZWN0ZWRFcnJvcikpOworICAgICAgICBnX2Fzc2VydF9j
bXB1aW50KHRlc3QtPm1fZXhwZWN0ZWRFcnJvciwgIT0sIDApOworICAgICAgICBnX2Fzc2VydF9u
b25udWxsKGVycm9yKTsKKyAgICAgICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IsIFdFQktJVF9QUklO
VF9FUlJPUiwgdGVzdC0+bV9leHBlY3RlZEVycm9yKTsKICAgICB9CiAKICAgICBQcmludFRlc3Qo
KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RQcmludE9wZXJhdGlvblByaW50
KFByaW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBHUmVmUHRyPEdGaWxlSW5mbz4g
ZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2luZm8ob3V0cHV0RmlsZS5nZXQoKSwK
ICAgICAgICAgR19GSUxFX0FUVFJJQlVURV9TVEFOREFSRF9TSVpFICIsIiBHX0ZJTEVfQVRUUklC
VVRFX1NUQU5EQVJEX0NPTlRFTlRfVFlQRSwKICAgICAgICAgc3RhdGljX2Nhc3Q8R0ZpbGVRdWVy
eUluZm9GbGFncz4oMCksIDAsIDApKTsKLSAgICBnX2Fzc2VydChmaWxlSW5mby5nZXQoKSk7Cisg
ICAgZ19hc3NlcnRfbm9ubnVsbChmaWxlSW5mby5nZXQoKSk7CiAgICAgZ19hc3NlcnRfY21waW50
KGdfZmlsZV9pbmZvX2dldF9zaXplKGZpbGVJbmZvLmdldCgpKSwgPiwgMCk7CiAgICAgZ19hc3Nl
cnRfY21wc3RyKGdfZmlsZV9pbmZvX2dldF9jb250ZW50X3R5cGUoZmlsZUluZm8uZ2V0KCkpLCA9
PSwgImFwcGxpY2F0aW9uL3BkZiIpOwogCkBAIC0yNjMsNyArMjYzLDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgbV9wcmludEZpbmlzaGVkID0gdHJ1ZTsKICAgICAgICAgbV9wcmludE9wZXJh
dGlvbiA9IG51bGxwdHI7Ci0gICAgICAgIGdfYXNzZXJ0KG1fb3V0cHV0RmlsZSk7CisgICAgICAg
IGdfYXNzZXJ0X25vbm51bGwobV9vdXRwdXRGaWxlKTsKICAgICAgICAgZ19maWxlX2RlbGV0ZSht
X291dHB1dEZpbGUuZ2V0KCksIDAsIDApOwogICAgICAgICBtX291dHB1dEZpbGUgPSBudWxscHRy
OwogICAgICAgICBpZiAobV93ZWJWaWV3Q2xvc2VkKQpAQCAtMzA1LDcgKzMwNSw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUNhbGxiYWNrKFdlYktpdFByaW50Q3VzdG9tV2lk
Z2V0KiBjdXN0b21XaWRnZXQsIEd0a1BhZ2VTZXR1cCosIEd0a1ByaW50U2V0dGluZ3MqLCBQcmlu
dEN1c3RvbVdpZGdldFRlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBnX2Fzc2VydCh0ZXN0LT5t
X3dpZGdldCA9PSB3ZWJraXRfcHJpbnRfY3VzdG9tX3dpZGdldF9nZXRfd2lkZ2V0KGN1c3RvbVdp
ZGdldCkpOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgodGVzdC0+bV93aWRnZXQsID09LCB3ZWJr
aXRfcHJpbnRfY3VzdG9tX3dpZGdldF9nZXRfd2lkZ2V0KGN1c3RvbVdpZGdldCkpOwogCiAgICAg
ICAgIHRlc3QtPm1fdXBkYXRlRW1pdHRlZCA9IHRydWU7CiAgICAgICAgIC8vIFdvdWxkIGJlIG5p
Y2UgdG8gYXZvaWQgdGhlIDEgc2Vjb25kIHRpbWVvdXQgaGVyZSAtIGJ1dCBJIGRpZG4ndCBmb3Vu
ZApAQCAtMzE1LDggKzMxNSw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHdpZGdldFJl
YWxpemVDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgUHJpbnRDdXN0b21XaWRnZXRUZXN0KiB0
ZXN0KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQoR1RLX0lTX0xBQkVMKHdpZGdldCkpOwotICAg
ICAgICBnX2Fzc2VydCghZ19zdHJjbXAwKGd0a19sYWJlbF9nZXRfdGV4dChHVEtfTEFCRUwod2lk
Z2V0KSksICJMYWJlbCIpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShHVEtfSVNfTEFCRUwod2lk
Z2V0KSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihndGtfbGFiZWxfZ2V0X3RleHQoR1RLX0xB
QkVMKHdpZGdldCkpLCA9PSwgIkxhYmVsIik7CiAKICAgICAgICAgdGVzdC0+bV93aWRnZXRSZWFs
aXplZCA9IHRydWU7CiAgICAgICAgIHRlc3QtPnN0YXJ0UHJpbnRpbmcoKTsKQEAgLTM1OSw3ICsz
NTksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByaW50RmluaXNoZWQoKQogICAgIHsKLSAgICAg
ICAgZ19hc3NlcnQobV9vdXRwdXRGaWxlKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChtX291
dHB1dEZpbGUpOwogICAgICAgICBnX2ZpbGVfZGVsZXRlKG1fb3V0cHV0RmlsZS5nZXQoKSwgbnVs
bHB0ciwgbnVsbHB0cik7CiAgICAgICAgIG1fb3V0cHV0RmlsZSA9IG51bGxwdHI7CiAgICAgICAg
IGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcCk7CkBAIC0zNjgsNyArMzY4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgY3JlYXRlV2ViS2l0UHJpbnRPcGVyYXRpb24oKQogICAgIHsKICAgICAgICAg
bV9wcmludE9wZXJhdGlvbiA9IGFkb3B0R1JlZih3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX25ldyht
X3dlYlZpZXcpKTsKLSAgICAgICAgZ19hc3NlcnQobV9wcmludE9wZXJhdGlvbik7CisgICAgICAg
IGdfYXNzZXJ0X25vbm51bGwobV9wcmludE9wZXJhdGlvbik7CiAgICAgICAgIGFzc2VydE9iamVj
dElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobV9wcmludE9wZXJhdGlvbi5nZXQo
KSkpOwogCiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9wcmludE9wZXJhdGlvbi5nZXQoKSwg
ImNyZWF0ZS1jdXN0b20td2lkZ2V0IiwgR19DQUxMQkFDSyhjcmVhdGVDdXN0b21XaWRnZXRDYWxs
YmFjayksIHRoaXMpOwpAQCAtNDQ0LDExICs0NDQsMTEgQEAgc3RhdGljIHZvaWQgdGVzdFByaW50
Q3VzdG9tV2lkZ2V0KFByaW50Q3VzdG9tV2lkZ2V0VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
IAogICAgIHRlc3QtPm9wZW5EaWFsb2dNb3ZlVGhyb3VnaEl0QW5kV2FpdFVudGlsQ2xvc2VkKCk7
CiAKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3Jlc3BvbnNlID09IFdFQktJVF9QUklOVF9PUEVSQVRJ
T05fUkVTUE9OU0VfUFJJTlQpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fY3JlYXRlRW1pdHRlZCk7
Ci0gICAgZ19hc3NlcnQodGVzdC0+bV93aWRnZXRSZWFsaXplZCk7Ci0gICAgZ19hc3NlcnQodGVz
dC0+bV91cGRhdGVFbWl0dGVkKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2FwcGx5RW1pdHRlZCk7
CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX3Jlc3BvbnNlLCA9PSwgV0VCS0lUX1BSSU5U
X09QRVJBVElPTl9SRVNQT05TRV9QUklOVCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2Ny
ZWF0ZUVtaXR0ZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV93aWRnZXRSZWFsaXplZCk7
CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3VwZGF0ZUVtaXR0ZWQpOworICAgIGdfYXNzZXJ0
X3RydWUodGVzdC0+bV9hcHBseUVtaXR0ZWQpOwogfQogI2VuZGlmIC8vIEhBVkVfR1RLX1VOSVhf
UFJJTlRJTkcKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
dGsvVGVzdFdlYktpdEFjY2Vzc2liaWxpdHkuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvVGVzdFdlYktpdEFjY2Vzc2liaWxpdHkuY3BwCmluZGV4IDljNmJiZGQ3YzNl
ZDM3Njg4YmQ5NWE5MjI3NmI3ZGU2NzY0ZGJjMDkuLjUxMDQ4NzIzOTljMGM4NDA5OTE3NzUxMmNj
M2Q0Y2M3MmM1OWJjM2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAKQEAgLTEyMiw3
ICsxMjIsNyBAQCBzdGF0aWMgdm9pZCBzdGFydFRlc3RTZXJ2ZXIoKQogCiBzdGF0aWMgdm9pZCBj
aGVja0F0c3BpQWNjZXNzaWJsZShBdHNwaUFjY2Vzc2libGUqIGFjY2Vzc2libGUsIGNvbnN0IGNo
YXIqIHRhcmdldE5hbWUsIEF0c3BpUm9sZSB0YXJnZXRSb2xlKQogewotICAgIGdfYXNzZXJ0KEFU
U1BJX0lTX0FDQ0VTU0lCTEUoYWNjZXNzaWJsZSkpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElf
SVNfQUNDRVNTSUJMRShhY2Nlc3NpYmxlKSk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IG5hbWUo
YXRzcGlfYWNjZXNzaWJsZV9nZXRfbmFtZShhY2Nlc3NpYmxlLCAwKSk7CiAgICAgZ19hc3NlcnRf
Y21wc3RyKHRhcmdldE5hbWUsID09LCBuYW1lLmdldCgpKTsKQEAgLTE1MCw1OCArMTUwLDU4IEBA
IHN0YXRpYyB2b2lkIHRlc3RBdHNwaUJhc2ljSGllcmFyY2h5KFdlYlZpZXdUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogewogICAgIC8vIFRoZSB0ZXN0IHNlcnZlcidzIGFjY2Vzc2liaWxpdHkg
b2JqZWN0IChVSSBQcm9jZXNzKS4KICAgICBHUmVmUHRyPEF0c3BpQWNjZXNzaWJsZT4gdGVzdFNl
cnZlckFwcCA9IGZpbmRUZXN0U2VydmVyQXBwbGljYXRpb24oKTsKLSAgICBnX2Fzc2VydChBVFNQ
SV9JU19BQ0NFU1NJQkxFKHRlc3RTZXJ2ZXJBcHAuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVl
KEFUU1BJX0lTX0FDQ0VTU0lCTEUodGVzdFNlcnZlckFwcC5nZXQoKSkpOwogICAgIGNoZWNrQXRz
cGlBY2Nlc3NpYmxlKHRlc3RTZXJ2ZXJBcHAuZ2V0KCksICJBY2Nlc3NpYmlsaXR5VGVzdFNlcnZl
ciIsIEFUU1BJX1JPTEVfQVBQTElDQVRJT04pOwogCiAgICAgLy8gVGhlIG1haW4gd2luZG93J3Mg
YWNjZXNzaWJpbGl0eSBvYmplY3QgKFVJIFByb2Nlc3MpLgogICAgIEdSZWZQdHI8QXRzcGlBY2Nl
c3NpYmxlPiBjdXJyZW50UGFyZW50ID0gdGVzdFNlcnZlckFwcDsKICAgICBHUmVmUHRyPEF0c3Bp
QWNjZXNzaWJsZT4gY3VycmVudENoaWxkID0gYWRvcHRHUmVmKGF0c3BpX2FjY2Vzc2libGVfZ2V0
X2NoaWxkX2F0X2luZGV4KGN1cnJlbnRQYXJlbnQuZ2V0KCksIDAsIDApKTsKLSAgICBnX2Fzc2Vy
dChBVFNQSV9JU19BQ0NFU1NJQkxFKGN1cnJlbnRDaGlsZC5nZXQoKSkpOworICAgIGdfYXNzZXJ0
X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShjdXJyZW50Q2hpbGQuZ2V0KCkpKTsKICAgICBjaGVj
a0F0c3BpQWNjZXNzaWJsZShjdXJyZW50Q2hpbGQuZ2V0KCksICIiLCBBVFNQSV9ST0xFX0ZSQU1F
KTsKIAogICAgIC8vIFRoZSBXZWJWaWV3J3MgYWNjZXNzaWJpbGl0eSBvYmplY3QgKFVJIFByb2Nl
c3MpLgogICAgIGN1cnJlbnRQYXJlbnQgPSBjdXJyZW50Q2hpbGQ7CiAgICAgY3VycmVudENoaWxk
ID0gYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRfYXRfaW5kZXgoY3VycmVudFBhcmVudC5nZXQo
KSwgMCwgMCk7Ci0gICAgZ19hc3NlcnQoQVRTUElfSVNfQUNDRVNTSUJMRShjdXJyZW50Q2hpbGQu
Z2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUoY3VycmVudENo
aWxkLmdldCgpKSk7CiAgICAgY2hlY2tBdHNwaUFjY2Vzc2libGUoY3VycmVudENoaWxkLmdldCgp
LCAiIiwgQVRTUElfUk9MRV9GSUxMRVIpOwogCiAgICAgLy8gVGhlIFdlYlBhZ2UncyBhY2Nlc3Np
YmlsaXR5IG9iamVjdCAoV2ViIFByb2Nlc3MpLgogICAgIGN1cnJlbnRQYXJlbnQgPSBjdXJyZW50
Q2hpbGQ7CiAgICAgY3VycmVudENoaWxkID0gYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRfYXRf
aW5kZXgoY3VycmVudFBhcmVudC5nZXQoKSwgMCwgMCk7Ci0gICAgZ19hc3NlcnQoQVRTUElfSVNf
QUNDRVNTSUJMRShjdXJyZW50Q2hpbGQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJ
X0lTX0FDQ0VTU0lCTEUoY3VycmVudENoaWxkLmdldCgpKSk7CiAgICAgY2hlY2tBdHNwaUFjY2Vz
c2libGUoY3VycmVudENoaWxkLmdldCgpLCAiIiwgQVRTUElfUk9MRV9GSUxMRVIpOwogCiAgICAg
Ly8gSFRNTCByb290IGVsZW1lbnQncyBhY2Nlc3NpYmxlIGVsZW1lbnQgKFdlYiBQcm9jZXNzKS4K
ICAgICBjdXJyZW50UGFyZW50ID0gY3VycmVudENoaWxkOwogICAgIGN1cnJlbnRDaGlsZCA9IGF0
c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2F0X2luZGV4KGN1cnJlbnRQYXJlbnQuZ2V0KCksIDAs
IDApOwotICAgIGdfYXNzZXJ0KEFUU1BJX0lTX0FDQ0VTU0lCTEUoY3VycmVudENoaWxkLmdldCgp
KSk7CisgICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKGN1cnJlbnRDaGlsZC5n
ZXQoKSkpOwogCiAgICAgLy8gSFRNTCBib2R5J3MgYWNjZXNzaWJsZSBlbGVtZW50IChXZWIgUHJv
Y2VzcykuCiAgICAgY3VycmVudFBhcmVudCA9IGN1cnJlbnRDaGlsZDsKICAgICBjdXJyZW50Q2hp
bGQgPSBhdHNwaV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9hdF9pbmRleChjdXJyZW50UGFyZW50Lmdl
dCgpLCAwLCAwKTsKLSAgICBnX2Fzc2VydChBVFNQSV9JU19BQ0NFU1NJQkxFKGN1cnJlbnRDaGls
ZC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShjdXJyZW50
Q2hpbGQuZ2V0KCkpKTsKICAgICBjaGVja0F0c3BpQWNjZXNzaWJsZShjdXJyZW50Q2hpbGQuZ2V0
KCksICIiLCBBVFNQSV9ST0xFX0RPQ1VNRU5UX1dFQik7CiAKICAgICAvLyBIVE1MIEgxJ3MgYWNj
ZXNzaWJsZSBlbGVtZW50IChXZWIgUHJvY2VzcykuCiAgICAgY3VycmVudFBhcmVudCA9IGN1cnJl
bnRDaGlsZDsKICAgICBjdXJyZW50Q2hpbGQgPSBhdHNwaV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9h
dF9pbmRleChjdXJyZW50UGFyZW50LmdldCgpLCAwLCAwKTsKLSAgICBnX2Fzc2VydChBVFNQSV9J
U19BQ0NFU1NJQkxFKGN1cnJlbnRDaGlsZC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3RydWUoQVRT
UElfSVNfQUNDRVNTSUJMRShjdXJyZW50Q2hpbGQuZ2V0KCkpKTsKICAgICBjaGVja0F0c3BpQWNj
ZXNzaWJsZShjdXJyZW50Q2hpbGQuZ2V0KCksICJUaGlzIGlzIGEgdGVzdCIsIEFUU1BJX1JPTEVf
SEVBRElORyk7CiAKICAgICAvLyBIVE1MIGZpcnN0IHBhcmFncmFwaCdzIGFjY2Vzc2libGUgZWxl
bWVudCAoV2ViIFByb2Nlc3MpLgogICAgIGN1cnJlbnRDaGlsZCA9IGF0c3BpX2FjY2Vzc2libGVf
Z2V0X2NoaWxkX2F0X2luZGV4KGN1cnJlbnRQYXJlbnQuZ2V0KCksIDEsIDApOwotICAgIGdfYXNz
ZXJ0KEFUU1BJX0lTX0FDQ0VTU0lCTEUoY3VycmVudENoaWxkLmdldCgpKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKGN1cnJlbnRDaGlsZC5nZXQoKSkpOwogICAgIGNo
ZWNrQXRzcGlBY2Nlc3NpYmxlKGN1cnJlbnRDaGlsZC5nZXQoKSwgIiIsIEFUU1BJX1JPTEVfUEFS
QUdSQVBIKTsKIAogICAgIC8vIEhUTUwgc2Vjb25kIHBhcmFncmFwaCdzIGFjY2Vzc2libGUgZWxl
bWVudCAoV2ViIFByb2Nlc3MpLgogICAgIGN1cnJlbnRDaGlsZCA9IGF0c3BpX2FjY2Vzc2libGVf
Z2V0X2NoaWxkX2F0X2luZGV4KGN1cnJlbnRQYXJlbnQuZ2V0KCksIDIsIDApOwotICAgIGdfYXNz
ZXJ0KEFUU1BJX0lTX0FDQ0VTU0lCTEUoY3VycmVudENoaWxkLmdldCgpKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKGN1cnJlbnRDaGlsZC5nZXQoKSkpOwogICAgIGNo
ZWNrQXRzcGlBY2Nlc3NpYmxlKGN1cnJlbnRDaGlsZC5nZXQoKSwgIiIsIEFUU1BJX1JPTEVfUEFS
QUdSQVBIKTsKIAogICAgIC8vIEhUTUwgbGluaydzIGFjY2Vzc2libGUgZWxlbWVudCAoV2ViIFBy
b2Nlc3MpLgogICAgIGN1cnJlbnRQYXJlbnQgPSBjdXJyZW50Q2hpbGQ7CiAgICAgY3VycmVudENo
aWxkID0gYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRfYXRfaW5kZXgoY3VycmVudFBhcmVudC5n
ZXQoKSwgMCwgMCk7Ci0gICAgZ19hc3NlcnQoQVRTUElfSVNfQUNDRVNTSUJMRShjdXJyZW50Q2hp
bGQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUoY3VycmVu
dENoaWxkLmdldCgpKSk7CiAgICAgY2hlY2tBdHNwaUFjY2Vzc2libGUoY3VycmVudENoaWxkLmdl
dCgpLCAiYSBsaW5rIiwgQVRTUElfUk9MRV9MSU5LKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYktpdFZlcnNpb24uY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYktpdFZlcnNpb24uY3BwCmlu
ZGV4IGU3NDdmZjk2MjIwMGRiZDI0NDk5M2Y1MjFkMmQxNjNjMTJhZDIzYzMuLmFhMzhhMTUwODQw
YzU1Y2QzYjU2NWQwYWFjMTVhOWIxNDI0MzVkYmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJLaXRWZXJzaW9uLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0VmVyc2lvbi5jcHAKQEAgLTMz
LDEwICszMywxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0VmVyc2lvbihUZXN0KiwgZ2NvbnN0
cG9pbnRlcikKIAogc3RhdGljIHZvaWQgdGVzdFdlYktpdENoZWNrVmVyc2lvbihUZXN0KiwgZ2Nv
bnN0cG9pbnRlcikKIHsKLSAgICBnX2Fzc2VydChXRUJLSVRfQ0hFQ0tfVkVSU0lPTihXRUJLSVRf
TUFKT1JfVkVSU0lPTiwgV0VCS0lUX01JTk9SX1ZFUlNJT04sIFdFQktJVF9NSUNST19WRVJTSU9O
KSk7Ci0gICAgZ19hc3NlcnQoIVdFQktJVF9DSEVDS19WRVJTSU9OKFdFQktJVF9NQUpPUl9WRVJT
SU9OICsgMSwgV0VCS0lUX01JTk9SX1ZFUlNJT04sIFdFQktJVF9NSUNST19WRVJTSU9OKSk7Ci0g
ICAgZ19hc3NlcnQoIVdFQktJVF9DSEVDS19WRVJTSU9OKFdFQktJVF9NQUpPUl9WRVJTSU9OLCBX
RUJLSVRfTUlOT1JfVkVSU0lPTiArIDEsIFdFQktJVF9NSUNST19WRVJTSU9OKSk7Ci0gICAgZ19h
c3NlcnQoIVdFQktJVF9DSEVDS19WRVJTSU9OKFdFQktJVF9NQUpPUl9WRVJTSU9OLCBXRUJLSVRf
TUlOT1JfVkVSU0lPTiwgV0VCS0lUX01JQ1JPX1ZFUlNJT04gKyAxKSk7CisgICAgZ19hc3NlcnRf
dHJ1ZShXRUJLSVRfQ0hFQ0tfVkVSU0lPTihXRUJLSVRfTUFKT1JfVkVSU0lPTiwgV0VCS0lUX01J
Tk9SX1ZFUlNJT04sIFdFQktJVF9NSUNST19WRVJTSU9OKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uo
V0VCS0lUX0NIRUNLX1ZFUlNJT04oV0VCS0lUX01BSk9SX1ZFUlNJT04gKyAxLCBXRUJLSVRfTUlO
T1JfVkVSU0lPTiwgV0VCS0lUX01JQ1JPX1ZFUlNJT04pKTsKKyAgICBnX2Fzc2VydF9mYWxzZShX
RUJLSVRfQ0hFQ0tfVkVSU0lPTihXRUJLSVRfTUFKT1JfVkVSU0lPTiwgV0VCS0lUX01JTk9SX1ZF
UlNJT04gKyAxLCBXRUJLSVRfTUlDUk9fVkVSU0lPTikpOworICAgIGdfYXNzZXJ0X2ZhbHNlKFdF
QktJVF9DSEVDS19WRVJTSU9OKFdFQktJVF9NQUpPUl9WRVJTSU9OLCBXRUJLSVRfTUlOT1JfVkVS
U0lPTiwgV0VCS0lUX01JQ1JPX1ZFUlNJT04gKyAxKSk7CiB9CiAKIHZvaWQgYmVmb3JlQWxsKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJW
aWV3RWRpdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RX
ZWJWaWV3RWRpdG9yLmNwcAppbmRleCA4ODcxMTk1MWRmMDNiNTUwNjU5NmJkMzI4NzA1NDU0ZWVm
MzRjZGVlLi4wZDA5ZjAyYzJlNzg4M2Y5YWRiODAzZTcxN2ZkY2FjNmQ1YmM0YmYxIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViVmlld0VkaXRv
ci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYlZp
ZXdFZGl0b3IuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgdGVzdC0+bV9jYW5FeGVjdXRlRWRp
dGluZ0NvbW1hbmQgPSB3ZWJraXRfd2ViX3ZpZXdfY2FuX2V4ZWN1dGVfZWRpdGluZ19jb21tYW5k
X2ZpbmlzaCh0ZXN0LT5tX3dlYlZpZXcsIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKTsKLSAgICAg
ICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJy
b3IuZ2V0KCkpOwogICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwog
ICAgIH0KIApAQCAtNjcsMTcgKzY3LDE3IEBAIHB1YmxpYzoKICAgICAgICAgZ19tYWluX2xvb3Bf
cnVuKG1fbWFpbkxvb3ApOwogCiAgICAgICAgIGlmICghc3RyY21wKGNvbW1hbmQsIFdFQktJVF9F
RElUSU5HX0NPTU1BTkRfQ1VUKSkKLSAgICAgICAgICAgIGdfYXNzZXJ0KG1fY2FuRXhlY3V0ZUVk
aXRpbmdDb21tYW5kID09IHdlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfY3V0X2F2YWlsYWJsZShlZGl0
b3JTdGF0ZSgpKSk7CisgICAgICAgICAgICBnX2Fzc2VydF9jbXBpbnQobV9jYW5FeGVjdXRlRWRp
dGluZ0NvbW1hbmQsID09LCB3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX2N1dF9hdmFpbGFibGUoZWRp
dG9yU3RhdGUoKSkpOwogICAgICAgICBlbHNlIGlmICghc3RyY21wKGNvbW1hbmQsIFdFQktJVF9F
RElUSU5HX0NPTU1BTkRfQ09QWSkpCi0gICAgICAgICAgICBnX2Fzc2VydChtX2NhbkV4ZWN1dGVF
ZGl0aW5nQ29tbWFuZCA9PSB3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX2NvcHlfYXZhaWxhYmxlKGVk
aXRvclN0YXRlKCkpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2NtcGludChtX2NhbkV4ZWN1dGVF
ZGl0aW5nQ29tbWFuZCwgPT0sIHdlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfY29weV9hdmFpbGFibGUo
ZWRpdG9yU3RhdGUoKSkpOwogICAgICAgICBlbHNlIGlmICghc3RyY21wKGNvbW1hbmQsIFdFQktJ
VF9FRElUSU5HX0NPTU1BTkRfUEFTVEUpKQotICAgICAgICAgICAgZ19hc3NlcnQobV9jYW5FeGVj
dXRlRWRpdGluZ0NvbW1hbmQgPT0gd2Via2l0X2VkaXRvcl9zdGF0ZV9pc19wYXN0ZV9hdmFpbGFi
bGUoZWRpdG9yU3RhdGUoKSkpOworICAgICAgICAgICAgZ19hc3NlcnRfY21waW50KG1fY2FuRXhl
Y3V0ZUVkaXRpbmdDb21tYW5kLCA9PSwgd2Via2l0X2VkaXRvcl9zdGF0ZV9pc19wYXN0ZV9hdmFp
bGFibGUoZWRpdG9yU3RhdGUoKSkpOwogICAgICAgICAvLyBGSVhNRTogRmlndXJlIG91dCBob3cg
dG8gYWRkIHRlc3RzIGZvciB1bmRvIGFuZCByZWRvLiBJdCB3aWxsIHByb2JhYmx5IHJlcXVpcmUg
dXNpbmcgdXNlcgogICAgICAgICAvLyBzY3JpcHRzIHRvIG1lc3NhZ2UgdGhlIFVJIHByb2Nlc3Mg
d2hlbiB0aGUgY29udGVudCBoYXMgYmVlbiBhbHRlcmVkLgogICAgICAgICBlbHNlIGlmICghc3Ry
Y21wKGNvbW1hbmQsIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfVU5ETykpCi0gICAgICAgICAgICBn
X2Fzc2VydChtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCA9PSB3ZWJraXRfZWRpdG9yX3N0YXRl
X2lzX3VuZG9fYXZhaWxhYmxlKGVkaXRvclN0YXRlKCkpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0
X2NtcGludChtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCwgPT0sIHdlYmtpdF9lZGl0b3Jfc3Rh
dGVfaXNfdW5kb19hdmFpbGFibGUoZWRpdG9yU3RhdGUoKSkpOwogICAgICAgICBlbHNlIGlmICgh
c3RyY21wKGNvbW1hbmQsIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfUkVETykpCi0gICAgICAgICAg
ICBnX2Fzc2VydChtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCA9PSB3ZWJraXRfZWRpdG9yX3N0
YXRlX2lzX3JlZG9fYXZhaWxhYmxlKGVkaXRvclN0YXRlKCkpKTsKKyAgICAgICAgICAgIGdfYXNz
ZXJ0X2NtcGludChtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCwgPT0sIHdlYmtpdF9lZGl0b3Jf
c3RhdGVfaXNfcmVkb19hdmFpbGFibGUoZWRpdG9yU3RhdGUoKSkpOwogCiAgICAgICAgIHJldHVy
biBtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZDsKICAgICB9CkBAIC0xMDUsOCArMTA1LDggQEAg
cHVibGljOgogCiAgICAgZ2NoYXIqIGN1dFNlbGVjdGlvbigpCiAgICAgewotICAgICAgICBnX2Fz
c2VydChjYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQp
KTsKLSAgICAgICAgZ19hc3NlcnQoY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElU
SU5HX0NPTU1BTkRfUEFTVEUpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShjYW5FeGVjdXRlRWRp
dGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQpKTsKKyAgICAgICAgZ19hc3Nl
cnRfdHJ1ZShjYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9Q
QVNURSkpOwogCiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFu
ZChtX3dlYlZpZXcsIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUKTsKICAgICAgICAgLy8gVGhl
cmUncyBubyB3YXkgdG8ga25vdyB3aGVuIHRoZSBzZWxlY3Rpb24gaGFzIGJlZW4gY3V0IHRvCkBA
IC0xNjIsMjAgKzE2MiwyMCBAQCBzdGF0aWMgY29uc3QgY2hhciogc2VsZWN0ZWRTcGFuSFRNTEZv
cm1hdCA9CiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvckN1dENvcHlQYXN0ZU5vbkVkaXRh
YmxlKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgLy8gTm90aGluZyBs
b2FkZWQgeWV0LgotICAgIGdfYXNzZXJ0KCF0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQo
V0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQpKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+Y2FuRXhl
Y3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ09QWSkpOwotICAgIGdf
YXNzZXJ0KCF0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09N
TUFORF9QQVNURSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5n
Q29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVCkpOworICAgIGdfYXNzZXJ0X2ZhbHNl
KHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX0NP
UFkpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQo
V0VCS0lUX0VESVRJTkdfQ09NTUFORF9QQVNURSkpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBz
ZWxlY3RlZFNwYW5IVE1MKGdfc3RyZHVwX3ByaW50ZihzZWxlY3RlZFNwYW5IVE1MRm9ybWF0LCAi
ZmFsc2UiKSk7CiAgICAgdGVzdC0+bG9hZEh0bWwoc2VsZWN0ZWRTcGFuSFRNTC5nZXQoKSwgbnVs
bHB0cik7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAgdGVzdC0+Zmx1
c2hFZGl0b3JTdGF0ZSgpOwogCi0gICAgZ19hc3NlcnQodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdD
b21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ09QWSkpOworICAgIGdfYXNzZXJ0X3RydWUo
dGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ09Q
WSkpOwogICAgIC8vIEl0J3Mgbm90IHBvc3NpYmxlIHRvIGN1dCBhbmQgcGFzdGUgd2hlbiBjb250
ZW50IGlzIG5vdCBlZGl0YWJsZQogICAgIC8vIGV2ZW4gaWYgdGhlcmUncyBhIHNlbGVjdGlvbi4K
LSAgICBnX2Fzc2VydCghdGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElU
SU5HX0NPTU1BTkRfQ1VUKSk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5n
Q29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1BBU1RFKSk7CisgICAgZ19hc3NlcnRfZmFs
c2UodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRf
Q1VUKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5k
KFdFQktJVF9FRElUSU5HX0NPTU1BTkRfUEFTVEUpKTsKIAogICAgIHRlc3QtPmNvcHlDbGlwYm9h
cmQoKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNsaXBib2FyZFRleHQoZ3RrX2NsaXBib2FyZF93
YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7CkBAIC0xODUsMTMgKzE4NSwxMyBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvckN1dENvcHlQYXN0ZU5vbkVkaXRhYmxlKEVkaXRv
clRlc3QqIHRlc3QsIGdjb25zdHBvaQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JDdXRD
b3B5UGFzdGVFZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAg
IC8vIE5vdGhpbmcgbG9hZGVkIHlldC4KLSAgICBnX2Fzc2VydCghdGVzdC0+Y2FuRXhlY3V0ZUVk
aXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUKSk7Ci0gICAgZ19hc3NlcnQo
IXRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX0NP
UFkpKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJ
VF9FRElUSU5HX0NPTU1BTkRfUEFTVEUpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5jYW5F
eGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQpKTsKKyAgICBn
X2Fzc2VydF9mYWxzZSh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJ
TkdfQ09NTUFORF9DT1BZKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+Y2FuRXhlY3V0ZUVk
aXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfUEFTVEUpKTsKIAotICAgIGdfYXNz
ZXJ0KCF0ZXN0LT5pc0VkaXRhYmxlKCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmlzRWRp
dGFibGUoKSk7CiAgICAgdGVzdC0+c2V0RWRpdGFibGUodHJ1ZSk7Ci0gICAgZ19hc3NlcnQodGVz
dC0+aXNFZGl0YWJsZSgpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmlzRWRpdGFibGUoKSk7
CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNlbGVjdGVkU3BhbkhUTUwoZ19zdHJkdXBfcHJpbnRm
KHNlbGVjdGVkU3BhbkhUTUxGb3JtYXQsICJmYWxzZSIpKTsKICAgICB0ZXN0LT5sb2FkSHRtbChz
ZWxlY3RlZFNwYW5IVE1MLmdldCgpLCBudWxscHRyKTsKQEAgLTE5OSw5ICsxOTksOSBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvckN1dENvcHlQYXN0ZUVkaXRhYmxlKEVkaXRvclRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZQogICAgIHRlc3QtPmZsdXNoRWRpdG9yU3RhdGUoKTsKIAogICAg
IC8vIFRoZXJlJ3MgYSBzZWxlY3Rpb24uCi0gICAgZ19hc3NlcnQodGVzdC0+Y2FuRXhlY3V0ZUVk
aXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUKSk7Ci0gICAgZ19hc3NlcnQo
dGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ09Q
WSkpOwotICAgIGdfYXNzZXJ0KHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRf
RURJVElOR19DT01NQU5EX1BBU1RFKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5jYW5FeGVj
dXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQpKTsKKyAgICBnX2Fz
c2VydF90cnVlKHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19D
T01NQU5EX0NPUFkpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5n
Q29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1BBU1RFKSk7CiAKICAgICB0ZXN0LT5jb3B5
Q2xpcGJvYXJkKCk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjbGlwYm9hcmRUZXh0KGd0a19jbGlw
Ym9hcmRfd2FpdF9mb3JfdGV4dCh0ZXN0LT5tX2NsaXBib2FyZCkpOwpAQCAtMjEwLDE0ICsyMTAs
MTQgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JDdXRDb3B5UGFzdGVFZGl0YWJsZShF
ZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGUKIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdF
ZGl0b3JTZWxlY3RBbGxOb25FZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogewotICAgIGdfYXNzZXJ0KHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRf
RURJVElOR19DT01NQU5EX1NFTEVDVF9BTEwpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmNh
bkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1NFTEVDVF9BTEwp
KTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gc2VsZWN0ZWRTcGFuSFRNTChnX3N0cmR1cF9wcmlu
dGYoc2VsZWN0ZWRTcGFuSFRNTEZvcm1hdCwgImZhbHNlIikpOwogICAgIHRlc3QtPmxvYWRIdG1s
KHNlbGVjdGVkU3BhbkhUTUwuZ2V0KCksIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbExv
YWRGaW5pc2hlZCgpOwogICAgIHRlc3QtPmZsdXNoRWRpdG9yU3RhdGUoKTsKIAotICAgIGdfYXNz
ZXJ0KHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5E
X1NFTEVDVF9BTEwpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5n
Q29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1NFTEVDVF9BTEwpKTsKIAogICAgIHRlc3Qt
PmNvcHlDbGlwYm9hcmQoKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNsaXBib2FyZFRleHQoZ3Rr
X2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7CkBAIC0yMzUsMTgg
KzIzNSwxOCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvclNlbGVjdEFsbE5vbkVkaXRh
YmxlKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZQogCiBzdGF0aWMgdm9pZCB0ZXN0V2Vi
Vmlld0VkaXRvclNlbGVjdEFsbEVkaXRhYmxlKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiB7Ci0gICAgZ19hc3NlcnQodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJ
VF9FRElUSU5HX0NPTU1BTkRfU0VMRUNUX0FMTCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+
Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfU0VMRUNUX0FM
TCkpOwogCi0gICAgZ19hc3NlcnQoIXRlc3QtPmlzRWRpdGFibGUoKSk7CisgICAgZ19hc3NlcnRf
ZmFsc2UodGVzdC0+aXNFZGl0YWJsZSgpKTsKICAgICB0ZXN0LT5zZXRFZGl0YWJsZSh0cnVlKTsK
LSAgICBnX2Fzc2VydCh0ZXN0LT5pc0VkaXRhYmxlKCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVz
dC0+aXNFZGl0YWJsZSgpKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gc2VsZWN0ZWRTcGFuSFRN
TChnX3N0cmR1cF9wcmludGYoc2VsZWN0ZWRTcGFuSFRNTEZvcm1hdCwgImZhbHNlIikpOwogICAg
IHRlc3QtPmxvYWRIdG1sKHNlbGVjdGVkU3BhbkhUTUwuZ2V0KCksIG51bGxwdHIpOwogICAgIHRl
c3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIHRlc3QtPmZsdXNoRWRpdG9yU3RhdGUo
KTsKIAotICAgIGdfYXNzZXJ0KHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRf
RURJVElOR19DT01NQU5EX1NFTEVDVF9BTEwpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmNh
bkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1NFTEVDVF9BTEwp
KTsKIAogICAgIHRlc3QtPmNvcHlDbGlwYm9hcmQoKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNs
aXBib2FyZFRleHQoZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJk
KSk7CkBAIC0yNjUsMTYgKzI2NSwxNiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvclNl
bGVjdEFsbEVkaXRhYmxlKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiBzdGF0aWMg
dm9pZCBsb2FkQ29udGVudHNBbmRUcnlUb0N1dFNlbGVjdGlvbihFZGl0b3JUZXN0KiB0ZXN0LCBi
b29sIGNvbnRlbnRFZGl0YWJsZSkKIHsKICAgICAvLyBWaWV3IGlzIG5vdCBlZGl0YWJsZSBieSBk
ZWZhdWx0LgotICAgIGdfYXNzZXJ0KCF0ZXN0LT5pc0VkaXRhYmxlKCkpOworICAgIGdfYXNzZXJ0
X2ZhbHNlKHRlc3QtPmlzRWRpdGFibGUoKSk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNlbGVj
dGVkU3BhbkhUTUwoZ19zdHJkdXBfcHJpbnRmKHNlbGVjdGVkU3BhbkhUTUxGb3JtYXQsIGNvbnRl
bnRFZGl0YWJsZSA/ICJ0cnVlIiA6ICJmYWxzZSIpKTsKICAgICB0ZXN0LT5sb2FkSHRtbChzZWxl
Y3RlZFNwYW5IVE1MLmdldCgpLCBudWxscHRyKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmlu
aXNoZWQoKTsKICAgICB0ZXN0LT5mbHVzaEVkaXRvclN0YXRlKCk7CiAKLSAgICBnX2Fzc2VydCgh
dGVzdC0+aXNFZGl0YWJsZSgpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5pc0VkaXRhYmxl
KCkpOwogICAgIHRlc3QtPnNldEVkaXRhYmxlKHRydWUpOwotICAgIGdfYXNzZXJ0KHRlc3QtPmlz
RWRpdGFibGUoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5pc0VkaXRhYmxlKCkpOwogCiAg
ICAgdGVzdC0+Zmx1c2hFZGl0b3JTdGF0ZSgpOwogCkBAIC0yODQsNyArMjg0LDcgQEAgc3RhdGlj
IHZvaWQgbG9hZENvbnRlbnRzQW5kVHJ5VG9DdXRTZWxlY3Rpb24oRWRpdG9yVGVzdCogdGVzdCwg
Ym9vbCBjb250ZW50RWRpdGEKIAogICAgIC8vIFJlc2V0IHRoZSBlZGl0YWJsZSBmb3IgbmV4dCB0
ZXN0LgogICAgIHRlc3QtPnNldEVkaXRhYmxlKGZhbHNlKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+
aXNFZGl0YWJsZSgpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5pc0VkaXRhYmxlKCkpOwog
fQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvck5vbkVkaXRhYmxlKEVkaXRvclRlc3Qq
IHRlc3QpCkBAIC0yOTQsMTUgKzI5NCwxNSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRv
ck5vbkVkaXRhYmxlKEVkaXRvclRlc3QqIHRlc3QpCiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZp
bmlzaGVkKCk7CiAgICAgdGVzdC0+Zmx1c2hFZGl0b3JTdGF0ZSgpOwogCi0gICAgZ19hc3NlcnQo
IXRlc3QtPmlzRWRpdGFibGUoKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+aXNFZGl0YWJs
ZSgpKTsKICAgICB0ZXN0LT5zZXRFZGl0YWJsZSh0cnVlKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5p
c0VkaXRhYmxlKCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+aXNFZGl0YWJsZSgpKTsKICAg
ICB0ZXN0LT5zZXRFZGl0YWJsZShmYWxzZSk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPmlzRWRpdGFi
bGUoKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+aXNFZGl0YWJsZSgpKTsKIAogICAgIC8v
IENoZWNrIGlmIHZpZXcgaXMgaW5kZWVkIG5vbi1lZGl0YWJsZS4KLSAgICBnX2Fzc2VydCghdGVz
dC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUKSk7
Ci0gICAgZ19hc3NlcnQoIXRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJ
VElOR19DT01NQU5EX1BBU1RFKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+Y2FuRXhlY3V0
ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUKSk7CisgICAgZ19hc3Nl
cnRfZmFsc2UodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NP
TU1BTkRfUEFTVEUpKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JFZGl0YWJs
ZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMzExLDEzICszMTEsMTMgQEAg
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JFZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogCiAgICAgLy8gUmVzZXQgdGhlIGVkaXRhYmxlIGZvciBuZXh0IHRlc3Qu
CiAgICAgdGVzdC0+c2V0RWRpdGFibGUoZmFsc2UpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5pc0Vk
aXRhYmxlKCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmlzRWRpdGFibGUoKSk7CiAKICAg
ICBsb2FkQ29udGVudHNBbmRUcnlUb0N1dFNlbGVjdGlvbih0ZXN0LCB0cnVlKTsKIAogICAgIC8v
IFJlc2V0IHRoZSBlZGl0YWJsZSBmb3IgbmV4dCB0ZXN0LgogICAgIHRlc3QtPnNldEVkaXRhYmxl
KGZhbHNlKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+aXNFZGl0YWJsZSgpKTsKKyAgICBnX2Fzc2Vy
dF9mYWxzZSh0ZXN0LT5pc0VkaXRhYmxlKCkpOwogCiAgICAgbG9hZENvbnRlbnRzQW5kVHJ5VG9D
dXRTZWxlY3Rpb24odGVzdCwgZmFsc2UpOwogfQpAQCAtMzQyLDQ2ICszNDIsNDYgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JFZGl0b3JTdGF0ZVR5cGluZ0F0dHJpYnV0ZXMoRWRpdG9y
VGVzdCogdGVzdCwgZ2NvbnMKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2Nv
bW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZUZvcndhcmQiKTsKICAgICB3ZWJraXRfd2ViX3Zp
ZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZUZvcndhcmQi
KTsKICAgICB0eXBpbmdBdHRyaWJ1dGVzID0gdGVzdC0+d2FpdFVudGlsVHlwaW5nQXR0cmlidXRl
c0NoYW5nZWQoKTsKLSAgICBnX2Fzc2VydCh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRP
Ul9UWVBJTkdfQVRUUklCVVRFX0JPTEQpOwotICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0cmlidXRl
cyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9JVEFMSUMpKTsKLSAgICBnX2Fzc2Vy
dCghKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfVU5E
RVJMSU5FKSk7Ci0gICAgZ19hc3NlcnQoISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRP
Ul9UWVBJTkdfQVRUUklCVVRFX1NUUklLRVRIUk9VR0gpKTsKKyAgICBnX2Fzc2VydF90cnVlKHR5
cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfQk9MRCk7Cisg
ICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5H
X0FUVFJJQlVURV9JVEFMSUMpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMg
JiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfVU5ERVJMSU5FKTsKKyAgICBnX2Fzc2Vy
dF9mYWxzZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRF
X1NUUklLRVRIUk9VR0gpOwogCiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19j
b21tYW5kKHRlc3QtPm1fd2ViVmlldywgIk1vdmVXb3JkRm9yd2FyZCIpOwogICAgIHdlYmtpdF93
ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJNb3ZlRm9y
d2FyZCIpOwogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0
LT5tX3dlYlZpZXcsICJNb3ZlRm9yd2FyZCIpOwogICAgIHR5cGluZ0F0dHJpYnV0ZXMgPSB0ZXN0
LT53YWl0VW50aWxUeXBpbmdBdHRyaWJ1dGVzQ2hhbmdlZCgpOwotICAgIGdfYXNzZXJ0KCEodHlw
aW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9CT0xEKSk7Ci0g
ICAgZ19hc3NlcnQodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJ
QlVURV9JVEFMSUMpOwotICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9F
RElUT1JfVFlQSU5HX0FUVFJJQlVURV9VTkRFUkxJTkUpKTsKLSAgICBnX2Fzc2VydCghKHR5cGlu
Z0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfU1RSSUtFVEhST1VH
SCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9S
X1RZUElOR19BVFRSSUJVVEVfQk9MRCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0eXBpbmdBdHRyaWJ1
dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0lUQUxJQyk7CisgICAgZ19hc3Nl
cnRfZmFsc2UodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVU
RV9VTkRFUkxJTkUpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJL
SVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfU1RSSUtFVEhST1VHSCk7CiAKICAgICB3ZWJraXRf
d2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZVdv
cmRGb3J3YXJkIik7CiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5k
KHRlc3QtPm1fd2ViVmlldywgIk1vdmVGb3J3YXJkIik7CiAgICAgd2Via2l0X3dlYl92aWV3X2V4
ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywgIk1vdmVGb3J3YXJkIik7CiAg
ICAgdHlwaW5nQXR0cmlidXRlcyA9IHRlc3QtPndhaXRVbnRpbFR5cGluZ0F0dHJpYnV0ZXNDaGFu
Z2VkKCk7Ci0gICAgZ19hc3NlcnQoISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9U
WVBJTkdfQVRUUklCVVRFX0JPTEQpKTsKLSAgICBnX2Fzc2VydCghKHR5cGluZ0F0dHJpYnV0ZXMg
JiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfSVRBTElDKSk7Ci0gICAgZ19hc3NlcnQo
dHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9VTkRFUkxJ
TkUpOwotICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQ
SU5HX0FUVFJJQlVURV9TVFJJS0VUSFJPVUdIKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5n
QXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9CT0xEKTsKKyAgICBn
X2Fzc2VydF9mYWxzZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRU
UklCVVRFX0lUQUxJQyk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VC
S0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1VOREVSTElORSk7CisgICAgZ19hc3NlcnRfZmFs
c2UodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9TVFJJ
S0VUSFJPVUdIKTsKIAogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFu
ZCh0ZXN0LT5tX3dlYlZpZXcsICJNb3ZlV29yZEZvcndhcmQiKTsKICAgICB3ZWJraXRfd2ViX3Zp
ZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZUZvcndhcmQi
KTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93
ZWJWaWV3LCAiTW92ZUZvcndhcmQiKTsKICAgICB0eXBpbmdBdHRyaWJ1dGVzID0gdGVzdC0+d2Fp
dFVudGlsVHlwaW5nQXR0cmlidXRlc0NoYW5nZWQoKTsKLSAgICBnX2Fzc2VydCghKHR5cGluZ0F0
dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfQk9MRCkpOwotICAgIGdf
YXNzZXJ0KCEodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVU
RV9JVEFMSUMpKTsKLSAgICBnX2Fzc2VydCghKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJ
VE9SX1RZUElOR19BVFRSSUJVVEVfVU5ERVJMSU5FKSk7Ci0gICAgZ19hc3NlcnQodHlwaW5nQXR0
cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9TVFJJS0VUSFJPVUdIKTsK
KyAgICBnX2Fzc2VydF9mYWxzZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJ
TkdfQVRUUklCVVRFX0JPTEQpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMg
JiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfSVRBTElDKTsKKyAgICBnX2Fzc2VydF9m
YWxzZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1VO
REVSTElORSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VE
SVRPUl9UWVBJTkdfQVRUUklCVVRFX1NUUklLRVRIUk9VR0gpOwogCiAgICAgd2Via2l0X3dlYl92
aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywgIk1vdmVXb3JkRm9y
d2FyZCIpOwogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0
LT5tX3dlYlZpZXcsICJNb3ZlRm9yd2FyZCIpOwogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRl
X2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJNb3ZlRm9yd2FyZCIpOwogICAgIHR5
cGluZ0F0dHJpYnV0ZXMgPSB0ZXN0LT53YWl0VW50aWxUeXBpbmdBdHRyaWJ1dGVzQ2hhbmdlZCgp
OwotICAgIGdfYXNzZXJ0KHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19B
VFRSSUJVVEVfQk9MRCk7Ci0gICAgZ19hc3NlcnQodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9F
RElUT1JfVFlQSU5HX0FUVFJJQlVURV9JVEFMSUMpOwotICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0
cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9VTkRFUkxJTkUpKTsKLSAg
ICBnX2Fzc2VydCghKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRS
SUJVVEVfU1RSSUtFVEhST1VHSCkpOworICAgIGdfYXNzZXJ0X3RydWUodHlwaW5nQXR0cmlidXRl
cyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9CT0xEKTsKKyAgICBnX2Fzc2VydF90
cnVlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfSVRB
TElDKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRP
Ul9UWVBJTkdfQVRUUklCVVRFX1VOREVSTElORSk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5n
QXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9TVFJJS0VUSFJPVUdI
KTsKIAogICAgIC8vIFNlbGVjdGlvbnMuCiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRp
dGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQi
KTsKQEAgLTM5Myw0NiArMzkzLDQ2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RWRpdG9yRWRp
dG9yU3RhdGVUeXBpbmdBdHRyaWJ1dGVzKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zCiAgICAgd2Vi
a2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywgIk1v
dmVGb3J3YXJkIik7CiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5k
KHRlc3QtPm1fd2ViVmlldywgIk1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIpOwog
ICAgIHR5cGluZ0F0dHJpYnV0ZXMgPSB0ZXN0LT53YWl0VW50aWxUeXBpbmdBdHRyaWJ1dGVzQ2hh
bmdlZCgpOwotICAgIGdfYXNzZXJ0KHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZ
UElOR19BVFRSSUJVVEVfQk9MRCk7Ci0gICAgZ19hc3NlcnQoISh0eXBpbmdBdHRyaWJ1dGVzICYg
V0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0lUQUxJQykpOwotICAgIGdfYXNzZXJ0KCEo
dHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9VTkRFUkxJ
TkUpKTsKLSAgICBnX2Fzc2VydCghKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZ
UElOR19BVFRSSUJVVEVfU1RSSUtFVEhST1VHSCkpOworICAgIGdfYXNzZXJ0X3RydWUodHlwaW5n
QXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9CT0xEKTsKKyAgICBn
X2Fzc2VydF9mYWxzZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRU
UklCVVRFX0lUQUxJQyk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRlcyAmIFdF
QktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9VTkRFUkxJTkUpOworICAgIGdfYXNzZXJ0X2Zh
bHNlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfU1RS
SUtFVEhST1VHSCk7CiAKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1h
bmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZUZvcndhcmQiKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdf
ZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZUZvcndhcmQiKTsK
ICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJW
aWV3LCAiTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIik7CiAgICAgdHlwaW5nQXR0
cmlidXRlcyA9IHRlc3QtPndhaXRVbnRpbFR5cGluZ0F0dHJpYnV0ZXNDaGFuZ2VkKCk7Ci0gICAg
Z19hc3NlcnQoISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklC
VVRFX0JPTEQpKTsKLSAgICBnX2Fzc2VydCh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRP
Ul9UWVBJTkdfQVRUUklCVVRFX0lUQUxJQyk7Ci0gICAgZ19hc3NlcnQoISh0eXBpbmdBdHRyaWJ1
dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1VOREVSTElORSkpOwotICAgIGdf
YXNzZXJ0KCEodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVU
RV9TVFJJS0VUSFJPVUdIKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRlcyAm
IFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9CT0xEKTsKKyAgICBnX2Fzc2VydF90cnVl
KHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfSVRBTElD
KTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9U
WVBJTkdfQVRUUklCVVRFX1VOREVSTElORSk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0
cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9TVFJJS0VUSFJPVUdIKTsK
IAogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dl
YlZpZXcsICJNb3ZlRm9yd2FyZCIpOwogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRp
bmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJNb3ZlRm9yd2FyZCIpOwogICAgIHdlYmtpdF93
ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJNb3ZlV29y
ZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iKTsKICAgICB0eXBpbmdBdHRyaWJ1dGVzID0gdGVz
dC0+d2FpdFVudGlsVHlwaW5nQXR0cmlidXRlc0NoYW5nZWQoKTsKLSAgICBnX2Fzc2VydCghKHR5
cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfQk9MRCkpOwot
ICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FU
VFJJQlVURV9JVEFMSUMpKTsKLSAgICBnX2Fzc2VydCh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lU
X0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1VOREVSTElORSk7Ci0gICAgZ19hc3NlcnQoISh0eXBp
bmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1NUUklLRVRIUk9V
R0gpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRP
Ul9UWVBJTkdfQVRUUklCVVRFX0JPTEQpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHR5cGluZ0F0dHJp
YnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfSVRBTElDKTsKKyAgICBnX2Fz
c2VydF90cnVlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJV
VEVfVU5ERVJMSU5FKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VC
S0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1NUUklLRVRIUk9VR0gpOwogCiAgICAgd2Via2l0
X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywgIk1vdmVG
b3J3YXJkIik7CiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRl
c3QtPm1fd2ViVmlldywgIk1vdmVGb3J3YXJkIik7CiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1
dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywgIk1vdmVXb3JkRm9yd2FyZEFuZE1v
ZGlmeVNlbGVjdGlvbiIpOwogICAgIHR5cGluZ0F0dHJpYnV0ZXMgPSB0ZXN0LT53YWl0VW50aWxU
eXBpbmdBdHRyaWJ1dGVzQ2hhbmdlZCgpOwotICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0cmlidXRl
cyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9CT0xEKSk7Ci0gICAgZ19hc3NlcnQo
ISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0lUQUxJ
QykpOwotICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQ
SU5HX0FUVFJJQlVURV9VTkRFUkxJTkUpKTsKLSAgICBnX2Fzc2VydCh0eXBpbmdBdHRyaWJ1dGVz
ICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1NUUklLRVRIUk9VR0gpOworICAgIGdf
YXNzZXJ0X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRS
SUJVVEVfQk9MRCk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJ
VF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9JVEFMSUMpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHR5
cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfVU5ERVJMSU5F
KTsKKyAgICBnX2Fzc2VydF90cnVlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZ
UElOR19BVFRSSUJVVEVfU1RSSUtFVEhST1VHSCk7CiAKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhl
Y3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZUZvcndhcmQiKTsKICAg
ICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3
LCAiTW92ZUZvcndhcmQiKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2Nv
bW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9u
Iik7CiAgICAgdHlwaW5nQXR0cmlidXRlcyA9IHRlc3QtPndhaXRVbnRpbFR5cGluZ0F0dHJpYnV0
ZXNDaGFuZ2VkKCk7Ci0gICAgZ19hc3NlcnQodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElU
T1JfVFlQSU5HX0FUVFJJQlVURV9CT0xEKTsKLSAgICBnX2Fzc2VydCh0eXBpbmdBdHRyaWJ1dGVz
ICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0lUQUxJQyk7Ci0gICAgZ19hc3NlcnQo
ISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1VOREVS
TElORSkpOwotICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1Jf
VFlQSU5HX0FUVFJJQlVURV9TVFJJS0VUSFJPVUdIKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0eXBp
bmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0JPTEQpOworICAg
IGdfYXNzZXJ0X3RydWUodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FU
VFJJQlVURV9JVEFMSUMpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMgJiBX
RUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfVU5ERVJMSU5FKTsKKyAgICBnX2Fzc2VydF9m
YWxzZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1NU
UklLRVRIUk9VR0gpOwogCiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21t
YW5kKHRlc3QtPm1fd2ViVmlldywgIlNlbGVjdEFsbCIpOwogICAgIHR5cGluZ0F0dHJpYnV0ZXMg
PSB0ZXN0LT53YWl0VW50aWxUeXBpbmdBdHRyaWJ1dGVzQ2hhbmdlZCgpOwpAQCAtNDUxLDggKzQ1
MSw4IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RWRpdG9ySW5zZXJ0SW1hZ2UoRWRpdG9yVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0
aW5nX2NvbW1hbmRfd2l0aF9hcmd1bWVudCh0ZXN0LT5tX3dlYlZpZXcsIFdFQktJVF9FRElUSU5H
X0NPTU1BTkRfSU5TRVJUX0lNQUdFLCBpbWFnZVVSSS5nZXQoKSk7CiAgICAgR1VuaXF1ZU91dFB0
cjxHRXJyb3I+IGVycm9yOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRS
ZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdJTUcnKVswXS5zcmMiLCAmZXJyb3Iub3V0UHRyKCkpOwot
ICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvcik7Cisg
ICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19l
cnJvcihlcnJvci5nZXQoKSk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXN1bHRTdHJpbmcoV2Vi
Vmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwog
ICAgIGdfYXNzZXJ0X2NtcHN0cihyZXN1bHRTdHJpbmcuZ2V0KCksID09LCBpbWFnZVVSSS5nZXQo
KSk7CiB9CkBAIC00NjgsMTMgKzQ2OCwxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRv
ckNyZWF0ZUxpbmsoRWRpdG9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB3ZWJraXRf
d2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmRfd2l0aF9hcmd1bWVudCh0ZXN0LT5tX3dl
YlZpZXcsIFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1JFQVRFX0xJTkssIHdlYmtpdEdUS1VSTCk7
CiAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIFdlYktpdEphdmFzY3JpcHRS
ZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGls
RmluaXNoZWQoImRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdBJylbMF0uaHJlZjsiLCAm
ZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdf
YXNzZXJ0KCFlcnJvcik7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsK
KyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAgICAgR1VuaXF1ZVB0cjxjaGFy
PiByZXN1bHRTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2
YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihyZXN1bHRTdHJpbmcuZ2V0KCks
ID09LCB3ZWJraXRHVEtVUkwpOwogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZh
U2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCdBJylbMF0uaW5uZXJUZXh0OyIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2
YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVycm9yKTsKKyAgICBnX2Fzc2VydF9ub25u
dWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgp
KTsKICAgICByZXN1bHRTdHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRU
b0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihyZXN1bHRT
dHJpbmcuZ2V0KCksID09LCAid2Via2l0Z3RrLm9yZyIpOwogCkBAIC00ODIsMTMgKzQ4MiwxMyBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvckNyZWF0ZUxpbmsoRWRpdG9yVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2Nv
bW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZVRvRW5kT2ZMaW5lIik7CiAgICAgd2Via2l0X3dl
Yl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kX3dpdGhfYXJndW1lbnQodGVzdC0+bV93ZWJW
aWV3LCBXRUJLSVRfRURJVElOR19DT01NQU5EX0NSRUFURV9MSU5LLCB3ZWJraXRHVEtVUkwpOwog
ICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmlu
aXNoZWQoImRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdBJylbMV0uaHJlZjsiLCAmZXJy
b3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNz
ZXJ0KCFlcnJvcik7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAg
ICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAgICAgcmVzdWx0U3RyaW5nLnJlc2V0
KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQp
KTsKICAgICBnX2Fzc2VydF9jbXBzdHIocmVzdWx0U3RyaW5nLmdldCgpLCA9PSwgd2Via2l0R1RL
VVJMKTsKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRV
bnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnQScpWzFdLmlubmVy
VGV4dDsiLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQp
OwotICAgIGdfYXNzZXJ0KCFlcnJvcik7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0
UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAgICAgcmVzdWx0
U3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFz
Y3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIocmVzdWx0U3RyaW5nLmdldCgpLCA9
PSwgd2Via2l0R1RLVVJMKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xp
Yi9XZWJLaXRHTGliL0xvYWRUcmFja2luZ1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvTG9hZFRyYWNraW5nVGVzdC5jcHAKaW5kZXggZTZhMzQ4MmQzZTkxZDc1
YjllZDg3ZDIxZjJhOGM3NWMzOTY2MzkwMS4uYjY4MWIwOWQ1ZjY0NjRlMWFiZWNlMTZjZmJhZDcw
NTBhZjhkMzg5NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdM
aWIvTG9hZFRyYWNraW5nVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvTG9hZFRyYWNraW5nVGVzdC5jcHAKQEAgLTI0LDM4ICsyNCwzOCBAQCBzdGF0aWMg
dm9pZCBsb2FkQ2hhbmdlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExv
YWRFdmVudCBsb2FkRXZlbgogewogICAgIHN3aXRjaCAobG9hZEV2ZW50KSB7CiAgICAgY2FzZSBX
RUJLSVRfTE9BRF9TVEFSVEVEOgotICAgICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfaXNf
bG9hZGluZyh3ZWJWaWV3KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92aWV3
X2lzX2xvYWRpbmcod2ViVmlldykpOwogICAgICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9h
Y3RpdmVVUkkuZGF0YSgpLCA9PSwgd2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOwog
ICAgICAgICB0ZXN0LT5wcm92aXNpb25hbExvYWRTdGFydGVkKCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgV0VCS0lUX0xPQURfUkVESVJFQ1RFRDoKLSAgICAgICAgZ19hc3NlcnQod2Via2l0
X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmlldykpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdl
YmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHdlYlZpZXcpKTsKICAgICAgICAgdGVzdC0+bV9hY3Rp
dmVVUkkgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KTsKICAgICAgICAgaWYgKCF0
ZXN0LT5tX3JlZGlyZWN0VVJJLmlzTnVsbCgpKQogICAgICAgICAgICAgZ19hc3NlcnRfY21wc3Ry
KHRlc3QtPm1fcmVkaXJlY3RVUkkuZGF0YSgpLCA9PSwgdGVzdC0+bV9hY3RpdmVVUkkuZGF0YSgp
KTsKICAgICAgICAgdGVzdC0+cHJvdmlzaW9uYWxMb2FkUmVjZWl2ZWRTZXJ2ZXJSZWRpcmVjdCgp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdFQktJVF9MT0FEX0NPTU1JVFRFRDogewotICAg
ICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSk7CisgICAg
ICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmlldykpOwog
ICAgICAgICB0ZXN0LT5tX2FjdGl2ZVVSSSA9IHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZp
ZXcpOwogCiAgICAgICAgIC8vIENoZWNrIHRoYXQgb24gY29tbWl0dGVkIHdlIGFsd2F5cyBoYXZl
IGEgbWFpbiByZXNvdXJjZSB3aXRoIGEgcmVzcG9uc2UuCiAgICAgICAgIFdlYktpdFdlYlJlc291
cmNlKiByZXNvdXJjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9yZXNvdXJjZSh3ZWJWaWV3
KTsKLSAgICAgICAgZ19hc3NlcnQocmVzb3VyY2UpOwotICAgICAgICBnX2Fzc2VydCh3ZWJraXRf
d2ViX3Jlc291cmNlX2dldF9yZXNwb25zZShyZXNvdXJjZSkpOworICAgICAgICBnX2Fzc2VydF9u
b25udWxsKHJlc291cmNlKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbCh3ZWJraXRfd2ViX3Jl
c291cmNlX2dldF9yZXNwb25zZShyZXNvdXJjZSkpOwogCiAgICAgICAgIHRlc3QtPmxvYWRDb21t
aXR0ZWQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgV0VCS0lUX0xPQURfRklO
SVNIRUQ6CiAgICAgICAgIGlmICghdGVzdC0+bV9sb2FkRmFpbGVkKSB7Ci0gICAgICAgICAgICBn
X2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmlldykpOworICAgICAgICAg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmlldykpOwog
ICAgICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwgPT0s
IHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpKTsKICAgICAgICAgfSBlbHNlIGlmICgh
Z19lcnJvcl9tYXRjaGVzKHRlc3QtPm1fZXJyb3IuZ2V0KCksIFdFQktJVF9ORVRXT1JLX0VSUk9S
LCBXRUJLSVRfTkVUV09SS19FUlJPUl9DQU5DRUxMRUQpKSB7CiAgICAgICAgICAgICAvLyBXaGVu
IGEgbmV3IGxvYWQgaXMgc3RhcnRlZCBiZWZvcmUgdGhlIHByZXZpb3VzIG9uZSBoYXMgZmluaXNo
ZWQsIHdlIHJlY2VpdmUgdGhlIGxvYWQtZmluaXNoZWQgc2lnbmFsCiAgICAgICAgICAgICAvLyBv
ZiB0aGUgb25nb2luZyBsb2FkIHdoaWxlIHdlIGFscmVhZHkgaGF2ZSBhIHByb3Zpc2lvbmFsIFVS
TCBmb3IgdGhlIG5ldyBsb2FkLiBUaGlzIGlzIHRoZSBvbmx5IGNhc2UKICAgICAgICAgICAgIC8v
IHdoZXJlIGlzbG9hZGluZyBpcyB0cnVlIHdoZW4gdGhlIGxvYWQgaGFzIGZpbmlzaGVkLgotICAg
ICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHdlYlZpZXcpKTsK
KyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHdl
YlZpZXcpKTsKICAgICAgICAgfQogICAgICAgICB0ZXN0LT5sb2FkRmluaXNoZWQoKTsKICAgICAg
ICAgYnJlYWs7CkBAIC02OCwxNCArNjgsMTQgQEAgc3RhdGljIHZvaWQgbG9hZEZhaWxlZENhbGxi
YWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQKIHsK
ICAgICB0ZXN0LT5tX2xvYWRGYWlsZWQgPSB0cnVlOwogCi0gICAgZ19hc3NlcnQoZXJyb3IpOwor
ICAgIGdfYXNzZXJ0X25vbm51bGwoZXJyb3IpOwogICAgIHRlc3QtPm1fZXJyb3IucmVzZXQoZ19l
cnJvcl9jb3B5KGVycm9yKSk7CiAKICAgICBpZiAoIWdfZXJyb3JfbWF0Y2hlcyhlcnJvciwgV0VC
S0lUX05FVFdPUktfRVJST1IsIFdFQktJVF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCkpIHsKICAg
ICAgICAgLy8gV2hlbiBhIG5ldyBsb2FkIGlzIHN0YXJ0ZWQgYmVmb3JlIHRoZSBwcmV2aW91cyBv
bmUgaGFzIGZpbmlzaGVkLCB3ZSByZWNlaXZlIHRoZSBsb2FkLWZhaWxlZCBzaWduYWwKICAgICAg
ICAgLy8gb2YgdGhlIG9uZ29pbmcgbG9hZCB3aGlsZSB3ZSBhbHJlYWR5IGhhdmUgYSBwcm92aXNp
b25hbCBVUkwgZm9yIHRoZSBuZXcgbG9hZC4gVGhpcyBpcyB0aGUgb25seSBjYXNlCiAgICAgICAg
IC8vIHdoZXJlIGlzLWxvYWRpbmcgaXMgdHJ1ZSB3aGVuIHRoZSBsb2FkIGhhcyBmYWlsZWQuCi0g
ICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSk7Cisg
ICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHdlYlZpZXcp
KTsKICAgICB9CiAKICAgICBzd2l0Y2ggKGxvYWRFdmVudCkgewpAQCAtOTUsMTAgKzk1LDEwIEBA
IHN0YXRpYyB2b2lkIGxvYWRGYWlsZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBX
ZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50CiBzdGF0aWMgZ2Jvb2xlYW4gbG9hZEZhaWxlZFdpdGhU
TFNFcnJvcnNDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBjaGFyKiBmYWls
aW5nVVJJLCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlLCBHVGxzQ2VydGlmaWNhdGVGbGFn
cyB0bHNFcnJvcnMsIExvYWRUcmFja2luZ1Rlc3QqIHRlc3QpCiB7CiAgICAgdGVzdC0+bV9sb2Fk
RmFpbGVkID0gdHJ1ZTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmco
d2ViVmlldykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5n
KHdlYlZpZXcpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9hY3RpdmVVUkkuZGF0YSgp
LCA9PSwgZmFpbGluZ1VSSSk7Ci0gICAgZ19hc3NlcnQoR19JU19UTFNfQ0VSVElGSUNBVEUoY2Vy
dGlmaWNhdGUpKTsKLSAgICBnX2Fzc2VydCh0bHNFcnJvcnMpOworICAgIGdfYXNzZXJ0X3RydWUo
R19JU19UTFNfQ0VSVElGSUNBVEUoY2VydGlmaWNhdGUpKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50
KHRsc0Vycm9ycywgPT0sIDApOwogICAgIHJldHVybiB0ZXN0LT5sb2FkRmFpbGVkV2l0aFRMU0Vy
cm9ycyhmYWlsaW5nVVJJLCBjZXJ0aWZpY2F0ZSwgdGxzRXJyb3JzKTsKIH0KIApAQCAtMTE2LDcg
KzExNiw3IEBAIExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRUcmFja2luZ1Rlc3QoKQogICAgIGdfc2ln
bmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAibG9hZC1mYWlsZWQtd2l0aC10bHMtZXJyb3JzIiwgR19D
QUxMQkFDSyhsb2FkRmFpbGVkV2l0aFRMU0Vycm9yc0NhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ19z
aWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJub3RpZnk6OmVzdGltYXRlZC1sb2FkLXByb2dyZXNz
IiwgR19DQUxMQkFDSyhlc3RpbWF0ZWRQcm9ncmVzc0NoYW5nZWRDYWxsYmFjayksIHRoaXMpOwog
Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19nZXRfdXJpKG1fd2ViVmlldykpOworICAg
IGdfYXNzZXJ0X251bGwod2Via2l0X3dlYl92aWV3X2dldF91cmkobV93ZWJWaWV3KSk7CiB9CiAK
IExvYWRUcmFja2luZ1Rlc3Q6On5Mb2FkVHJhY2tpbmdUZXN0KCkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcAppbmRleCBjNzY5OWQ0NGMyNGNh
YzNjNzQ4NTA5NGQ4ZWE5OWZjMmQwZmZjYzJkLi5hMTU1YTUxMDBhNmJiYWVkZjBhZTFiNTI3Njlh
NzM4NzE4YTBmNWNmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9UZXN0TWFpbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdM
aWIvVGVzdE1haW4uY3BwCkBAIC00Miw3ICs0Miw3IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyR1Jl
c291cmNlKHZvaWQpCiB7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXNvdXJjZXNQYXRoKGdfYnVp
bGRfZmlsZW5hbWUoV0VCS0lUX1RFU1RfUkVTT1VSQ0VTX0RJUiwgIndlYmtpdGdsaWItdGVzdHMt
cmVzb3VyY2VzLmdyZXNvdXJjZSIsIG51bGxwdHIpKTsKICAgICBHUmVzb3VyY2UqIHJlc291cmNl
ID0gZ19yZXNvdXJjZV9sb2FkKHJlc291cmNlc1BhdGguZ2V0KCksIG51bGxwdHIpOwotICAgIGdf
YXNzZXJ0KHJlc291cmNlKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHJlc291cmNlKTsKIAogICAg
IGdfcmVzb3VyY2VzX3JlZ2lzdGVyKHJlc291cmNlKTsKICAgICBnX3Jlc291cmNlX3VucmVmKHJl
c291cmNlKTsKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJHUmVzb3VyY2Uo
dm9pZCkKIHN0YXRpYyB2b2lkIHJlbW92ZU5vbkVtcHR5RGlyZWN0b3J5KGNvbnN0IGNoYXIqIGRp
cmVjdG9yeVBhdGgpCiB7CiAgICAgR0RpciogZGlyZWN0b3J5ID0gZ19kaXJfb3BlbihkaXJlY3Rv
cnlQYXRoLCAwLCAwKTsKLSAgICBnX2Fzc2VydChkaXJlY3RvcnkpOworICAgIGdfYXNzZXJ0X25v
bm51bGwoZGlyZWN0b3J5KTsKICAgICBjb25zdCBjaGFyKiBmaWxlTmFtZTsKICAgICB3aGlsZSAo
KGZpbGVOYW1lID0gZ19kaXJfcmVhZF9uYW1lKGRpcmVjdG9yeSkpKSB7CiAgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4gZmlsZVBhdGgoZ19idWlsZF9maWxlbmFtZShkaXJlY3RvcnlQYXRoLCBmaWxl
TmFtZSwgbnVsbHB0cikpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvVGVzdE1haW4uaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L1Rlc3RNYWluLmgKaW5kZXggMzEzZjIxNzcxYmNmYjMyZjQ5MWRmYmU1OGFkZjc5MjVjMGIyMjcz
Zi4uOGI4MzI4NjZlODZkMWZhN2IwMmM1MjJhMjk3ZmVkZDZmNDkzYTIwNiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uaAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5oCkBAIC0xOSw2ICsxOSw4
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiVGVzdFV0aWxzLmgiCisKICNpbmNsdWRl
IDxjYWlyby5oPgogI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KQEAgLTY3LDI3ICs2OSwxNSBAQAogICAgICAgICBnX3Rlc3RfYWRkKHRlc3RQYXRoLmdl
dCgpLCBDbGFzc05hbWUsIDAsIENsYXNzTmFtZTo6c2V0VXAsIHRlc3RGdW5jLCBDbGFzc05hbWU6
OnRlYXJEb3duKTsgXAogICAgIH0KIAotI2RlZmluZSBBU1NFUlRfQ01QX0NTVFJJTkcoczEsIGNt
cCwgczIpIFwKLSAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIENTdHJpbmcgX19zMSA9IChzMSk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBD
U3RyaW5nIF9fczIgPSAoczIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgaWYgKGdfc3RyY21wMChfX3MxLmRhdGEoKSwgX19zMi5kYXRhKCkp
IGNtcCAwKSA7ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVsc2UgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAg
ICAgZ19hc3NlcnRpb25fbWVzc2FnZV9jbXBzdHIoR19MT0dfRE9NQUlOLCBfX0ZJTEVfXywgX19M
SU5FX18sIFwKLSAgICAgICAgICAgICAgICBHX1NUUkZVTkMsICNzMSAiICIgI2NtcCAiICIgI3My
LCBfX3MxLmRhdGEoKSwgI2NtcCwgX19zMi5kYXRhKCkpOyBcCi0gICAgICAgIH0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgIH0gd2hpbGUgKDApCi0KLQogY2xhc3MgVGVzdCB7CiBwdWJsaWM6CiAgICAgTUFLRV9HTElC
X1RFU1RfRklYVFVSRShUZXN0KTsKIAogICAgIHN0YXRpYyBHUmVmUHRyPFdlYktpdFdlYlZpZXc+
IGFkb3B0VmlldyhncG9pbnRlciB2aWV3KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lU
X0lTX1dFQl9WSUVXKHZpZXcpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfV0VC
X1ZJRVcodmlldykpOwogI2lmIFBMQVRGT1JNKEdUSykKLSAgICAgICAgZ19hc3NlcnQoZ19vYmpl
Y3RfaXNfZmxvYXRpbmcodmlldykpOworICAgICAgICBnX2Fzc2VydF90cnVlKGdfb2JqZWN0X2lz
X2Zsb2F0aW5nKHZpZXcpKTsKICAgICAgICAgcmV0dXJuIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4o
V0VCS0lUX1dFQl9WSUVXKHZpZXcpKTsKICNlbGlmIFBMQVRGT1JNKFdQRSkKICAgICAgICAgcmV0
dXJuIGFkb3B0R1JlZihXRUJLSVRfV0VCX1ZJRVcodmlldykpOwpAQCAtMTMwLDcgKzEyMCw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGdfcHJpbnQoIiAlcyglcCkiLCBnX3R5cGVfbmFtZV9mcm9t
X2luc3RhbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8R1R5cGVJbnN0YW5jZSo+KCppdCkpLCAqaXQpOwog
ICAgICAgICBnX3ByaW50KCJcbiIpOwogCi0gICAgICAgIGdfYXNzZXJ0KG1fd2F0Y2hlZE9iamVj
dHMuaXNFbXB0eSgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX3dhdGNoZWRPYmplY3RzLmlz
RW1wdHkoKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemVXZWJFeHRlbnNp
b25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rl
c3RVdGlscy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdFV0aWxz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmFmMzg0ZmJjNzE5MDQ4MzNhZDU2ODczOTdkMzgwNjhkMjdlYmQwZgot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rl
c3RVdGlscy5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTggSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVk
ZSA8d3RmL0NvbXBpbGVyLmg+CisKKyNkZWZpbmUgQVNTRVJUX0NNUF9DU1RSSU5HKHMxLCBjbXAs
IHMyKSBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBDU3RyaW5nIF9fczEgPSAoczEpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgQ1N0
cmluZyBfX3MyID0gKHMyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIGlmIChnX3N0cmNtcDAoX19zMS5kYXRhKCksIF9fczIuZGF0YSgpKSBj
bXAgMCkgOyAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
IGdfYXNzZXJ0aW9uX21lc3NhZ2VfY21wc3RyKEdfTE9HX0RPTUFJTiwgX19GSUxFX18sIF9fTElO
RV9fLCBcCisgICAgICAgICAgICAgICAgR19TVFJGVU5DLCAjczEgIiAiICNjbXAgIiAiICNzMiwg
X19zMS5kYXRhKCksICNjbXAsIF9fczIuZGF0YSgpKTsgXAorICAgICAgICB9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB9IHdoaWxlICgwKQorCisvLyBSZWRlZmluZWQgd2l0aCBzdHJvbmdlciBjYXN0cywgdG8gbWFr
ZSB0aGlzIHVzZWFibGUgaW4gQysrLgorI3VuZGVmIGdfYXNzZXJ0X2NtcGhleAorI2RlZmluZSBn
X2Fzc2VydF9jbXBoZXgobjEsIGNtcCwgbjIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGF1dG8gX19uMSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8aW50cHRyX3Q+KG4xKTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBh
dXRvIF9fbjIgPSByZWludGVycHJldF9jYXN0PGludHB0cl90PihuMik7ICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgaWYgKF9fbjEgY21wIF9fbjIpIDsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVsc2UgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgZ19hc3NlcnRpb25fbWVzc2FnZV9jbXBudW0oR19MT0dfRE9NQUlOLCBfX0ZJTEVfXywgX19M
SU5FX18sIFwKKyAgICAgICAgICAgICAgICBHX1NUUkZVTkMsICNuMSAiICIgI2NtcCAiICIgI24y
LCAobG9uZyBkb3VibGUpKF9fbjEpLCAjY21wLCAobG9uZyBkb3VibGUpKF9fbjIpLCAneCcpOyBc
CisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKy8vIFJlZGVmaW5lZCBmb3Ig
bnVsbHB0ciB0eXBlIGNoZWNraW5nLgorI3VuZGVmIGdfYXNzZXJ0X251bGwKKyNkZWZpbmUgZ19h
c3NlcnRfbnVsbChleHByKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiBHX0xJS0VMWSgoZXhwcikgPT0g
bnVsbHB0cikgOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZWxz
ZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBnX2Fzc2VydGlvbl9tZXNzYWdlKEdfTE9HX0RPTUFJTiwgX19G
SUxFX18sIF9fTElORV9fLCAgICAgICAgXAorICAgICAgICAgICAgICAgIEdfU1RSRlVOQywgIici
ICNleHByICInIHNob3VsZCBub3QgYmUgTlVMTCIpOyAgICAgICAgICAgIFwKKyAgICAgICAgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworLy8gUmVkZWZpbmVkIHRvIHNpbGVuY2UgLVdwb2lu
dGVyLWFyaXRoLCBhbmQgZm9yIG51bGxwdHIgdHlwZSBjaGVja2luZy4KKyN1bmRlZiBnX2Fzc2Vy
dF9ub25udWxsCisjZGVmaW5lIGdfYXNzZXJ0X25vbm51bGwoZXhwcikgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
SUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJwb2ludGVyLWFyaXRoIikgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIGlmIEdfTElLRUxZKChleHByKSAhPSBudWxscHRyKSA7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbHNlIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgIGdfYXNzZXJ0aW9uX21lc3NhZ2UoR19MT0dfRE9NQUlOLCBfX0ZJTEVfXywgX19MSU5FX18s
ICAgICAgICBcCisgICAgICAgICAgICAgICAgR19TVFJGVU5DLCAiJyIgI2V4cHIgIicgc2hvdWxk
IG5vdCBiZSBOVUxMIik7ICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
SUdOT1JFX1dBUk5JTkdTX0VORCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RCdXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdEJ1cy5jcHAKaW5kZXggODRkZGM1ZGQ4OTg5ODkz
NGNiMGEwNDNkZDI3Mjc4ZTI0OTc0MjE0Yi4uYmE2NDc2YzhkYTE1YmI0YjNiODQ2NjQwYWEzOTdh
NTY3ZDY0NTI1YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdM
aWIvV2ViS2l0VGVzdEJ1cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktp
dEdMaWIvV2ViS2l0VGVzdEJ1cy5jcHAKQEAgLTQ4LDExICs0OCwxMSBAQCBHREJ1c0Nvbm5lY3Rp
b24qIFdlYktpdFRlc3RCdXM6OmdldE9yQ3JlYXRlQ29ubmVjdGlvbigpCiAgICAgaWYgKG1fY29u
bmVjdGlvbikKICAgICAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsKIAotICAgIGdfYXNz
ZXJ0KCFtX2FkZHJlc3MuaXNOdWxsKCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKG1fYWRkcmVzcy5p
c051bGwoKSk7CiAgICAgbV9jb25uZWN0aW9uID0gYWRvcHRHUmVmKGdfZGJ1c19jb25uZWN0aW9u
X25ld19mb3JfYWRkcmVzc19zeW5jKG1fYWRkcmVzcy5kYXRhKCksCiAgICAgICAgIHN0YXRpY19j
YXN0PEdEQnVzQ29ubmVjdGlvbkZsYWdzPihHX0RCVVNfQ09OTkVDVElPTl9GTEFHU19BVVRIRU5U
SUNBVElPTl9DTElFTlQgfCBHX0RCVVNfQ09OTkVDVElPTl9GTEFHU19NRVNTQUdFX0JVU19DT05O
RUNUSU9OKSwKICAgICAgICAgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikpOwotICAgIGdfYXNz
ZXJ0KG1fY29ubmVjdGlvbi5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChtX2Nvbm5lY3Rp
b24uZ2V0KCkpOwogICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7CiB9CiAKQEAgLTc2LDYg
Kzc2LDYgQEAgR0RCdXNQcm94eSogV2ViS2l0VGVzdEJ1czo6Y3JlYXRlUHJveHkoY29uc3QgY2hh
ciogc2VydmljZU5hbWUsIGNvbnN0IGNoYXIqIG9iamUKICAgICAgICAgaW50ZXJmYWNlTmFtZSwK
ICAgICAgICAgbnVsbHB0ciwgLy8gR0NhbmNlbGxhYmxlCiAgICAgICAgIG51bGxwdHIpOwotICAg
IGdfYXNzZXJ0KHByb3h5KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHByb3h5KTsKICAgICByZXR1
cm4gcHJveHk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJL
aXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuY3BwCmluZGV4IGZkMTYyM2M5ZjZjN2U5N2FmZGE3ZGI4
ZTc4ZTMwODBlYzU4ODdhOGIuLjc4MmZlMzkzYzhmNTg0Y2ViNWEwMjc3ZGY1NmU0YjM1OGMxZTQx
NmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktp
dFRlc3RTZXJ2ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L1dlYktpdFRlc3RTZXJ2ZXIuY3BwCkBAIC0xMDEsOCArMTAxLDggQEAgdm9pZCBXZWJLaXRUZXN0
U2VydmVyOjpyZW1vdmVXZWJTb2NrZXRIYW5kbGVyKCkKIAogQ1N0cmluZyBXZWJLaXRUZXN0U2Vy
dmVyOjpnZXRXZWJTb2NrZXRVUklGb3JQYXRoKGNvbnN0IGNoYXIqIHBhdGgpIGNvbnN0CiB7Ci0g
ICAgZ19hc3NlcnQobV9iYXNlV2ViU29ja2V0VVJJKTsKLSAgICBnX2Fzc2VydChwYXRoICYmICpw
YXRoID09ICcvJyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChtX2Jhc2VXZWJTb2NrZXRVUkkpOwor
ICAgIGdfYXNzZXJ0X3RydWUocGF0aCAmJiAqcGF0aCA9PSAnLycpOwogICAgIFNvdXBVUkkqIHVy
aSA9IHNvdXBfdXJpX25ld193aXRoX2Jhc2UobV9iYXNlV2ViU29ja2V0VVJJLCBwYXRoICsgMSk7
IC8vIElnbm9yZSB0aGUgbGVhZGluZyBzbGFzaC4KICAgICBHVW5pcXVlUHRyPGdjaGFyPiB1cmlT
dHJpbmcoc291cF91cmlfdG9fc3RyaW5nKHVyaSwgRkFMU0UpKTsKICAgICBzb3VwX3VyaV9mcmVl
KHVyaSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9X
ZWJWaWV3VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJW
aWV3VGVzdC5jcHAKaW5kZXggZTQyMGMzZTJiNDczNGE5MjkxNjg3ZmM3NzM5ODBlZWNhNWU2MWQ1
NC4uZWZkOWZiZjQ1NDQ5NTZlMjcyYjljMzY3ZjE4N2EwZThkZTM3NmU3YSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcApAQCAt
NDcsNyArNDcsNyBAQCBXZWJWaWV3VGVzdDo6fldlYlZpZXdUZXN0KCkKIAogdm9pZCBXZWJWaWV3
VGVzdDo6aW5pdGlhbGl6ZVdlYlZpZXcoKQogewotICAgIGdfYXNzZXJ0KCFtX3dlYlZpZXcpOwor
ICAgIGdfYXNzZXJ0X251bGwobV93ZWJWaWV3KTsKIAogICAgIG1fd2ViVmlldyA9IFdFQktJVF9X
RUJfVklFVyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJRVcsCiAjaWYgUExBVEZPUk0o
V1BFKQpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFdlYlZpZXdUZXN0Ojpsb2FkVVJJKGNvbnN0IGNo
YXIqIHVyaSkKIHsKICAgICBtX2FjdGl2ZVVSSSA9IHVyaTsKICAgICB3ZWJraXRfd2ViX3ZpZXdf
bG9hZF91cmkobV93ZWJWaWV3LCB1cmkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19p
c19sb2FkaW5nKG1fd2ViVmlldykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92aWV3
X2lzX2xvYWRpbmcobV93ZWJWaWV3KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJf
dmlld19nZXRfdXJpKG1fd2ViVmlldyksID09LCBtX2FjdGl2ZVVSSS5kYXRhKCkpOwogfQogCkBA
IC04Nyw3ICs4Nyw3IEBAIHZvaWQgV2ViVmlld1Rlc3Q6OmxvYWRIdG1sKGNvbnN0IGNoYXIqIGh0
bWwsIGNvbnN0IGNoYXIqIGJhc2VVUkkpCiAgICAgZWxzZQogICAgICAgICBtX2FjdGl2ZVVSSSA9
IGJhc2VVUkk7CiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfaHRtbChtX3dlYlZpZXcsIGh0bWws
IGJhc2VVUkkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKG1fd2Vi
VmlldykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcobV93
ZWJWaWV3KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKG1f
d2ViVmlldyksID09LCBtX2FjdGl2ZVVSSS5kYXRhKCkpOwogfQogCkBAIC05NSw3ICs5NSw3IEBA
IHZvaWQgV2ViVmlld1Rlc3Q6OmxvYWRQbGFpblRleHQoY29uc3QgY2hhciogcGxhaW5UZXh0KQog
ewogICAgIG1fYWN0aXZlVVJJID0gImFib3V0OmJsYW5rIjsKICAgICB3ZWJraXRfd2ViX3ZpZXdf
bG9hZF9wbGFpbl90ZXh0KG1fd2ViVmlldywgcGxhaW5UZXh0KTsKLSAgICBnX2Fzc2VydCh3ZWJr
aXRfd2ViX3ZpZXdfaXNfbG9hZGluZyhtX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdl
YmtpdF93ZWJfdmlld19pc19sb2FkaW5nKG1fd2ViVmlldykpOwogICAgIGdfYXNzZXJ0X2NtcHN0
cih3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaShtX3dlYlZpZXcpLCA9PSwgbV9hY3RpdmVVUkkuZGF0
YSgpKTsKIH0KIApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgV2ViVmlld1Rlc3Q6OmxvYWRCeXRl
cyhHQnl0ZXMqIGJ5dGVzLCBjb25zdCBjaGFyKiBtaW1lVHlwZSwgY29uc3QgY2hhciogZW5jCiAg
ICAgZWxzZQogICAgICAgICBtX2FjdGl2ZVVSSSA9IGJhc2VVUkk7CiAgICAgd2Via2l0X3dlYl92
aWV3X2xvYWRfYnl0ZXMobV93ZWJWaWV3LCBieXRlcywgbWltZVR5cGUsIGVuY29kaW5nLCBiYXNl
VVJJKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyhtX3dlYlZpZXcp
KTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKG1fd2ViVmll
dykpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaShtX3dlYlZp
ZXcpLCA9PSwgbV9hY3RpdmVVUkkuZGF0YSgpKTsKIH0KIApAQCAtMTE0LDcgKzExNCw3IEBAIHZv
aWQgV2ViVmlld1Rlc3Q6OmxvYWRSZXF1ZXN0KFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QpCiB7
CiAgICAgbV9hY3RpdmVVUkkgPSB3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KTsK
ICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9yZXF1ZXN0KG1fd2ViVmlldywgcmVxdWVzdCk7Ci0g
ICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcobV93ZWJWaWV3KSk7CisgICAg
Z19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyhtX3dlYlZpZXcpKTsKICAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl92aWV3X2dldF91cmkobV93ZWJWaWV3KSwgPT0s
IG1fYWN0aXZlVVJJLmRhdGEoKSk7CiB9CiAKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIFdlYlZp
ZXdUZXN0Ojpsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBjaGFyKiBodG1sLCBjb25zdCBjaGFyKiBj
b250ZW50VVJJLCBjbwogewogICAgIG1fYWN0aXZlVVJJID0gY29udGVudFVSSTsKICAgICB3ZWJr
aXRfd2ViX3ZpZXdfbG9hZF9hbHRlcm5hdGVfaHRtbChtX3dlYlZpZXcsIGh0bWwsIGNvbnRlbnRV
UkksIGJhc2VVUkkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKG1f
d2ViVmlldykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmco
bV93ZWJWaWV3KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfdmlld19nZXRfdXJp
KG1fd2ViVmlldyksID09LCBtX2FjdGl2ZVVSSS5kYXRhKCkpOwogfQogCkBAIC0xMzgsNyArMTM4
LDcgQEAgdm9pZCBXZWJWaWV3VGVzdDo6Z29CYWNrKCkKICAgICAvLyBDYWxsIGdvX2JhY2sgZXZl
biB3aGVuIGNhbl9nb19iYWNrIHJldHVybnMgRkFMU0UgdG8gY2hlY2sgbm90aGluZyBoYXBwZW5z
LgogICAgIHdlYmtpdF93ZWJfdmlld19nb19iYWNrKG1fd2ViVmlldyk7CiAgICAgaWYgKGNhbkdv
QmFjaykgewotICAgICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyhtX3dl
YlZpZXcpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGlu
ZyhtX3dlYlZpZXcpKTsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfdmlld19n
ZXRfdXJpKG1fd2ViVmlldyksID09LCBtX2FjdGl2ZVVSSS5kYXRhKCkpOwogICAgIH0KIH0KQEAg
LTE1NSw3ICsxNTUsNyBAQCB2b2lkIFdlYlZpZXdUZXN0Ojpnb0ZvcndhcmQoKQogICAgIC8vIENh
bGwgZ29fZm9yd2FyZCBldmVuIHdoZW4gY2FuX2dvX2ZvcndhcmQgcmV0dXJucyBGQUxTRSB0byBj
aGVjayBub3RoaW5nIGhhcHBlbnMuCiAgICAgd2Via2l0X3dlYl92aWV3X2dvX2ZvcndhcmQobV93
ZWJWaWV3KTsKICAgICBpZiAoY2FuR29Gb3J3YXJkKSB7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtp
dF93ZWJfdmlld19pc19sb2FkaW5nKG1fd2ViVmlldykpOworICAgICAgICBnX2Fzc2VydF90cnVl
KHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKG1fd2ViVmlldykpOwogICAgICAgICBnX2Fzc2Vy
dF9jbXBzdHIod2Via2l0X3dlYl92aWV3X2dldF91cmkobV93ZWJWaWV3KSwgPT0sIG1fYWN0aXZl
VVJJLmRhdGEoKSk7CiAgICAgfQogfQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViVmlld1Rl
c3Q6OmdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0
ZW0pCiB7CiAgICAgbV9hY3RpdmVVUkkgPSB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9n
ZXRfb3JpZ2luYWxfdXJpKGl0ZW0pOwogICAgIHdlYmtpdF93ZWJfdmlld19nb190b19iYWNrX2Zv
cndhcmRfbGlzdF9pdGVtKG1fd2ViVmlldywgaXRlbSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dl
Yl92aWV3X2lzX2xvYWRpbmcobV93ZWJWaWV3KSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRf
d2ViX3ZpZXdfaXNfbG9hZGluZyhtX3dlYlZpZXcpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Vi
a2l0X3dlYl92aWV3X2dldF91cmkobV93ZWJWaWV3KSwgPT0sIG1fYWN0aXZlVVJJLmRhdGEoKSk7
CiB9CiAKQEAgLTIzOCw3ICsyMzgsNyBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZUdldERhdGFDYWxs
YmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbgogICAgIHNp
emVfdCBkYXRhU2l6ZTsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgdW5z
aWduZWQgY2hhciogZGF0YSA9IHdlYmtpdF93ZWJfcmVzb3VyY2VfZ2V0X2RhdGFfZmluaXNoKFdF
QktJVF9XRUJfUkVTT1VSQ0Uob2JqZWN0KSwgcmVzdWx0LCAmZGF0YVNpemUsICZlcnJvci5vdXRQ
dHIoKSk7Ci0gICAgZ19hc3NlcnQoZGF0YSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRhKTsK
IAogICAgIFdlYlZpZXdUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8V2ViVmlld1Rlc3QqPih1c2Vy
RGF0YSk7CiAgICAgdGVzdC0+bV9yZXNvdXJjZURhdGEucmVzZXQocmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oZGF0YSkpOwpAQCAtMjUxLDcgKzI1MSw3IEBAIGNvbnN0IGNoYXIqIFdlYlZpZXdUZXN0
OjptYWluUmVzb3VyY2VEYXRhKHNpemVfdCYgbWFpblJlc291cmNlRGF0YVNpemUpCiAgICAgbV9y
ZXNvdXJjZURhdGFTaXplID0gMDsKICAgICBtX3Jlc291cmNlRGF0YS5yZXNldCgpOwogICAgIFdl
YktpdFdlYlJlc291cmNlKiByZXNvdXJjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9yZXNv
dXJjZShtX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KHJlc291cmNlKTsKKyAgICBnX2Fzc2VydF9u
b25udWxsKHJlc291cmNlKTsKIAogICAgIHdlYmtpdF93ZWJfcmVzb3VyY2VfZ2V0X2RhdGEocmVz
b3VyY2UsIDAsIHJlc291cmNlR2V0RGF0YUNhbGxiYWNrLCB0aGlzKTsKICAgICBnX21haW5fbG9v
cF9ydW4obV9tYWluTG9vcCk7CkBAIC0zMTcsMzggKzMxNywzOCBAQCBXZWJLaXRKYXZhc2NyaXB0
UmVzdWx0KiBXZWJWaWV3VGVzdDo6cnVuSmF2YVNjcmlwdEluV29ybGRBbmRXYWl0VW50aWxGaW5p
c2hlZChjbwogY2hhciogV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoV2Vi
S2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkKIHsKICAgICBhdXRvKiB2YWx1
ZSA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3Vs
dCk7Ci0gICAgZ19hc3NlcnQoSlNDX0lTX1ZBTFVFKHZhbHVlKSk7Ci0gICAgZ19hc3NlcnQoanNj
X3ZhbHVlX2lzX3N0cmluZyh2YWx1ZSkpOworICAgIGdfYXNzZXJ0X3RydWUoSlNDX0lTX1ZBTFVF
KHZhbHVlKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfc3RyaW5nKHZhbHVlKSk7
CiAgICAgcmV0dXJuIGpzY192YWx1ZV90b19zdHJpbmcodmFsdWUpOwogfQogCiBkb3VibGUgV2Vi
Vmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
KiBqYXZhc2NyaXB0UmVzdWx0KQogewogICAgIGF1dG8qIHZhbHVlID0gd2Via2l0X2phdmFzY3Jp
cHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydChK
U0NfSVNfVkFMVUUodmFsdWUpKTsKLSAgICBnX2Fzc2VydChqc2NfdmFsdWVfaXNfbnVtYmVyKHZh
bHVlKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShKU0NfSVNfVkFMVUUodmFsdWUpKTsKKyAgICBnX2Fz
c2VydF90cnVlKGpzY192YWx1ZV9pc19udW1iZXIodmFsdWUpKTsKICAgICByZXR1cm4ganNjX3Zh
bHVlX3RvX2RvdWJsZSh2YWx1ZSk7CiB9CiAKIGJvb2wgV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRS
ZXN1bHRUb0Jvb2xlYW4oV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkK
IHsKICAgICBhdXRvKiB2YWx1ZSA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFs
dWUoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoSlNDX0lTX1ZBTFVFKHZhbHVlKSk7
Ci0gICAgZ19hc3NlcnQoanNjX3ZhbHVlX2lzX2Jvb2xlYW4odmFsdWUpKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKEpTQ19JU19WQUxVRSh2YWx1ZSkpOworICAgIGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVl
X2lzX2Jvb2xlYW4odmFsdWUpKTsKICAgICByZXR1cm4ganNjX3ZhbHVlX3RvX2Jvb2xlYW4odmFs
dWUpOwogfQogCiBib29sIFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0SXNOdWxsKFdlYktp
dEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQpCiB7CiAgICAgYXV0byogdmFsdWUg
PSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQp
OwotICAgIGdfYXNzZXJ0KEpTQ19JU19WQUxVRSh2YWx1ZSkpOworICAgIGdfYXNzZXJ0X3RydWUo
SlNDX0lTX1ZBTFVFKHZhbHVlKSk7CiAgICAgcmV0dXJuIGpzY192YWx1ZV9pc19udWxsKHZhbHVl
KTsKIH0KIAogYm9vbCBXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdElzVW5kZWZpbmVkKFdl
YktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQpCiB7CiAgICAgYXV0byogdmFs
dWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1
bHQpOwotICAgIGdfYXNzZXJ0KEpTQ19JU19WQUxVRSh2YWx1ZSkpOworICAgIGdfYXNzZXJ0X3Ry
dWUoSlNDX0lTX1ZBTFVFKHZhbHVlKSk7CiAgICAgcmV0dXJuIGpzY192YWx1ZV9pc191bmRlZmlu
ZWQodmFsdWUpOwogfQogCkBAIC0zNTcsNyArMzU3LDcgQEAgc3RhdGljIHZvaWQgb25TbmFwc2hv
dFJlYWR5KFdlYktpdFdlYlZpZXcqIHdlYl92aWV3LCBHQXN5bmNSZXN1bHQqIHJlcywgV2ViVmll
d1QKIHsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgdGVzdC0+bV9zdXJm
YWNlID0gd2Via2l0X3dlYl92aWV3X2dldF9zbmFwc2hvdF9maW5pc2god2ViX3ZpZXcsIHJlcywg
JmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+bV9zdXJmYWNlIHx8ICFlcnJv
ci5nZXQoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSghdGVzdC0+bV9zdXJmYWNlIHx8ICFlcnJvci5n
ZXQoKSk7CiAgICAgaWYgKGVycm9yKQogICAgICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQo
KSwgV0VCS0lUX1NOQVBTSE9UX0VSUk9SLCBXRUJLSVRfU05BUFNIT1RfRVJST1JfRkFJTEVEX1RP
X0NSRUFURSk7CiAgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7CkBAIC0zODgsNyArMzg4LDcgQEAg
Ym9vbCBXZWJWaWV3VGVzdDo6cnVuV2ViUHJvY2Vzc1Rlc3QoY29uc3QgY2hhciogc3VpdGVOYW1l
LCBjb25zdCBjaGFyKiB0ZXN0TmFtZSwKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNjcmlwdChnX3N0
cmR1cF9wcmludGYoIldlYlByb2Nlc3NUZXN0UnVubmVyLnJ1blRlc3QoJyVzLyVzJyk7Iiwgc3Vp
dGVOYW1lLCB0ZXN0TmFtZSkpOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAg
ICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gcnVuSmF2YVNjcmlw
dEFuZFdhaXRVbnRpbEZpbmlzaGVkKHNjcmlwdC5nZXQoKSwgJmVycm9yLm91dFB0cigpKTsKLSAg
ICBnX2Fzc2VydCghZXJyb3IpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsK
ICAgICBsb2FkVVJJKCJhYm91dDpibGFuayIpOwogICAgIHdhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OwogICAgIHJldHVybiBqYXZhc2NyaXB0UmVzdWx0VG9Cb29sZWFuKGphdmFzY3JpcHRSZXN1bHQp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dl
YlZpZXdUZXN0R3RrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL2d0
ay9XZWJWaWV3VGVzdEd0ay5jcHAKaW5kZXggYTEzNDFhNjg0OGRmMWVjYTI3OGNhOGQ2NDJkN2Q2
YTg3YTQ4YzNhNC4uYmJhODRiMDJkOTY2ZGE4NjJiYTVjNDdlMDQzZTgxZTQ0NmFjYjlkYiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdU
ZXN0R3RrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9ndGsv
V2ViVmlld1Rlc3RHdGsuY3BwCkBAIC0zMiw4ICszMiw4IEBAIHZvaWQgV2ViVmlld1Rlc3Q6OnBs
YXRmb3JtRGVzdHJveSgpCiAKIHZvaWQgV2ViVmlld1Rlc3Q6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlZpZXcoKQogewotICAgIGdfYXNzZXJ0KFdFQktJVF9XRUJfVklFVyhtX3dlYlZpZXcpKTsKLSAg
ICBnX2Fzc2VydChnX29iamVjdF9pc19mbG9hdGluZyhtX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKFdFQktJVF9XRUJfVklFVyhtX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF90cnVlKGdf
b2JqZWN0X2lzX2Zsb2F0aW5nKG1fd2ViVmlldykpOwogICAgIGdfb2JqZWN0X3JlZl9zaW5rKG1f
d2ViVmlldyk7CiB9CiAKQEAgLTcwLDcgKzcwLDcgQEAgc3RhdGljIGdib29sZWFuIHBhcmVudFdp
bmRvd01hcHBlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnQqLCBXZWJWaWV3VGVzdCogdGUK
IAogdm9pZCBXZWJWaWV3VGVzdDo6c2hvd0luV2luZG93KEd0a1dpbmRvd1R5cGUgd2luZG93VHlw
ZSkKIHsKLSAgICBnX2Fzc2VydCghbV9wYXJlbnRXaW5kb3cpOworICAgIGdfYXNzZXJ0X251bGwo
bV9wYXJlbnRXaW5kb3cpOwogICAgIG1fcGFyZW50V2luZG93ID0gZ3RrX3dpbmRvd19uZXcod2lu
ZG93VHlwZSk7CiAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihtX3BhcmVudFdp
bmRvdyksIEdUS19XSURHRVQobV93ZWJWaWV3KSk7CiAgICAgZ3RrX3dpZGdldF9zaG93KEdUS19X
SURHRVQobV93ZWJWaWV3KSk7CkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgV2ViVmlld1Rlc3Q6OnNo
b3dJbldpbmRvdyhHdGtXaW5kb3dUeXBlIHdpbmRvd1R5cGUpCiAKIHZvaWQgV2ViVmlld1Rlc3Q6
OnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZChHdGtXaW5kb3dUeXBlIHdpbmRvd1R5cGUs
IGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKLSAgICBnX2Fzc2VydCghbV9wYXJlbnRXaW5kb3cp
OworICAgIGdfYXNzZXJ0X251bGwobV9wYXJlbnRXaW5kb3cpOwogICAgIG1fcGFyZW50V2luZG93
ID0gZ3RrX3dpbmRvd19uZXcod2luZG93VHlwZSk7CiAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkK
ICAgICAgICAgZ3RrX3dpbmRvd19yZXNpemUoR1RLX1dJTkRPVyhtX3BhcmVudFdpbmRvdyksIHdp
ZHRoLCBoZWlnaHQpOwpAQCAtOTMsOSArOTMsOSBAQCB2b2lkIFdlYlZpZXdUZXN0OjpzaG93SW5X
aW5kb3dBbmRXYWl0VW50aWxNYXBwZWQoR3RrV2luZG93VHlwZSB3aW5kb3dUeXBlLCBpbnQgdwog
CiB2b2lkIFdlYlZpZXdUZXN0Ojptb3VzZU1vdmVUbyhpbnQgeCwgaW50IHksIHVuc2lnbmVkIG1v
dXNlTW9kaWZpZXJzKQogewotICAgIGdfYXNzZXJ0KG1fcGFyZW50V2luZG93KTsKKyAgICBnX2Fz
c2VydF9ub25udWxsKG1fcGFyZW50V2luZG93KTsKICAgICBHdGtXaWRnZXQqIHZpZXdXaWRnZXQg
PSBHVEtfV0lER0VUKG1fd2ViVmlldyk7Ci0gICAgZ19hc3NlcnQoZ3RrX3dpZGdldF9nZXRfcmVh
bGl6ZWQodmlld1dpZGdldCkpOworICAgIGdfYXNzZXJ0X3RydWUoZ3RrX3dpZGdldF9nZXRfcmVh
bGl6ZWQodmlld1dpZGdldCkpOwogCiAgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gZXZlbnQoZ2Rr
X2V2ZW50X25ldyhHREtfTU9USU9OX05PVElGWSkpOwogICAgIGV2ZW50LT5tb3Rpb24ueCA9IHg7
CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBXZWJWaWV3VGVzdDo6Y2xpY2tNb3VzZUJ1dHRvbihp
bnQgeCwgaW50IHksIHVuc2lnbmVkIGJ1dHRvbiwgdW5zaWduZWQgbW91c2UKIHZvaWQgV2ViVmll
d1Rlc3Q6OmVtaXRQb3B1cE1lbnVTaWduYWwoKQogewogICAgIEd0a1dpZGdldCogdmlld1dpZGdl
dCA9IEdUS19XSURHRVQobV93ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChndGtfd2lkZ2V0X2dldF9y
ZWFsaXplZCh2aWV3V2lkZ2V0KSk7CisgICAgZ19hc3NlcnRfdHJ1ZShndGtfd2lkZ2V0X2dldF9y
ZWFsaXplZCh2aWV3V2lkZ2V0KSk7CiAKICAgICBnYm9vbGVhbiBoYW5kbGVkOwogICAgIGdfc2ln
bmFsX2VtaXRfYnlfbmFtZSh2aWV3V2lkZ2V0LCAicG9wdXAtbWVudSIsICZoYW5kbGVkKTsKQEAg
LTEzMiw5ICsxMzIsOSBAQCB2b2lkIFdlYlZpZXdUZXN0OjplbWl0UG9wdXBNZW51U2lnbmFsKCkK
IAogdm9pZCBXZWJWaWV3VGVzdDo6a2V5U3Ryb2tlKHVuc2lnbmVkIGtleVZhbCwgdW5zaWduZWQg
a2V5TW9kaWZpZXJzKQogewotICAgIGdfYXNzZXJ0KG1fcGFyZW50V2luZG93KTsKKyAgICBnX2Fz
c2VydF9ub25udWxsKG1fcGFyZW50V2luZG93KTsKICAgICBHdGtXaWRnZXQqIHZpZXdXaWRnZXQg
PSBHVEtfV0lER0VUKG1fd2ViVmlldyk7Ci0gICAgZ19hc3NlcnQoZ3RrX3dpZGdldF9nZXRfcmVh
bGl6ZWQodmlld1dpZGdldCkpOworICAgIGdfYXNzZXJ0X3RydWUoZ3RrX3dpZGdldF9nZXRfcmVh
bGl6ZWQodmlld1dpZGdldCkpOwogCiAgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gZXZlbnQoZ2Rr
X2V2ZW50X25ldyhHREtfS0VZX1BSRVNTKSk7CiAgICAgZXZlbnQtPmtleS5rZXl2YWwgPSBrZXlW
YWw7CkBAIC0xNTgsOSArMTU4LDkgQEAgdm9pZCBXZWJWaWV3VGVzdDo6a2V5U3Ryb2tlKHVuc2ln
bmVkIGtleVZhbCwgdW5zaWduZWQga2V5TW9kaWZpZXJzKQogCiB2b2lkIFdlYlZpZXdUZXN0Ojpk
b01vdXNlQnV0dG9uRXZlbnQoR2RrRXZlbnRUeXBlIGV2ZW50VHlwZSwgaW50IHgsIGludCB5LCB1
bnNpZ25lZCBidXR0b24sIHVuc2lnbmVkIG1vdXNlTW9kaWZpZXJzKQogewotICAgIGdfYXNzZXJ0
KG1fcGFyZW50V2luZG93KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKG1fcGFyZW50V2luZG93KTsK
ICAgICBHdGtXaWRnZXQqIHZpZXdXaWRnZXQgPSBHVEtfV0lER0VUKG1fd2ViVmlldyk7Ci0gICAg
Z19hc3NlcnQoZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQodmlld1dpZGdldCkpOworICAgIGdfYXNz
ZXJ0X3RydWUoZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQodmlld1dpZGdldCkpOwogCiAgICAgR1Vu
aXF1ZVB0cjxHZGtFdmVudD4gZXZlbnQoZ2RrX2V2ZW50X25ldyhldmVudFR5cGUpKTsKICAgICBl
dmVudC0+YnV0dG9uLndpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyh2aWV3V2lkZ2V0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357744</attachid>
            <date>2018-12-19 15:56:43 -0800</date>
            <delta_ts>2019-01-02 14:35:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192841-20181219175641.patch</filename>
            <type>text/plain</type>
            <size>477425</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5Mzk2CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjlmYjc0NGM2ZDljZWE2NGFmYWFjMjFmZjk1YTkxMGUz
M2JkN2Y0Zi4uZTJmMDI1ZmUyZGU4NDg5MTkzOTRkNTBlMjc2MWQxODJkZGE4MDUyOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1
NCBAQAorMjAxOC0xMi0xOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW1dQRV1bR1RLXSBQdXJnZSB1c2Ugb2YgZ19hc3NlcnQoKSB1bmRlciBU
ZXN0V2ViS2l0QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTI4NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGVyZSBhcmUgc2VwYXJhdGUgZ19hc3NlcnRfKigpIG1hY3JvcyBmb3IgdXNlIGluIHRl
c3RzLCB3aGljaCB3ZSB1c2UgaW5jb25zaXN0ZW50bHkKKyAgICAgICAgY3VycmVudGx5LiBVc2Ug
dGhlbSBhbHdheXMuIFdlJ2xsIGdldCBuaWNlciBlcnJvciBtZXNzYWdlcyBub3cgd2hlbiB0ZXN0
cyBmYWlsLCBhbmQgdGhlCisgICAgICAgIGFzc2VydGlvbnMgd2lsbCBub3cgcnVuIGR1cmluZyB0
ZXN0cyBldmVuIGlmIEdfRElTQUJMRV9BU1NFUlQgaXMgdXNlZCB3aGVuIGJ1aWxkaW5nLgorCisg
ICAgICAgIFVuZm9ydHVuYXRlbHksIHNvbWUgb2YgdGhlc2UgbWFjcm9zIHdlcmUgd3JpdHRlbiBm
b3IgQyBhbmQgZG8gbm90IHdvcmsgd2VsbCBpbiBDKysuIEFkZCBhCisgICAgICAgIG5ldyBoZWFk
ZXIsIFRlc3RVdGlscy5oLCBhbmQgcmVkZWZpbmUgdGhlbSB0aGVyZS4gV2UgY2FuJ3QgdXNlIFRl
c3RNYWluLmggYW55bW9yZSwgYmVjYXVzZQorICAgICAgICB0aGlzIGZpbGUgaW5jbHVkZXMgVUkg
cHJvY2VzcyBoZWFkZXJzIGFuZCBzbyBjYW4ndCBiZSB1c2VkIGluIHRoZSB3ZWIgcHJvY2VzcyB0
ZXN0cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlwdENvcmUvZ2xp
Yi9UZXN0SlNDLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
RWRpdG9yVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRXZWJFZGl0b3JUZXN0Ojp0ZXN0U2VsZWN0
aW9uQ2hhbmdlZCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0Zy
YW1lVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRGcmFtZVRlc3Q6OnRlc3RNYWluRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0RnJhbWVUZXN0Ojp0ZXN0VVJJKToKKyAgICAgICAgKFdlYktpdEZyYW1l
VGVzdDo6dGVzdEphdmFTY3JpcHRDb250ZXh0KToKKyAgICAgICAgKFdlYktpdEZyYW1lVGVzdDo6
dGVzdEphdmFTY3JpcHRWYWx1ZXMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdBdXRo
ZW50aWNhdGlvblJlcXVlc3QpOgorICAgICAgICAodGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvbkxv
YWRDYW5jZWxsZWQpOgorICAgICAgICAodGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvbkZhaWx1cmUp
OgorICAgICAgICAodGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblN0b3JhZ2UpOgorICAgICAgICAo
UHJveHlBdXRoZW50aWNhdGlvblRlc3Q6OlByb3h5QXV0aGVudGljYXRpb25UZXN0KToKKyAgICAg
ICAgKHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25Qcm94eSk6CisgICAgICAgICh0ZXN0V2ViVmll
d0F1dGhlbnRpY2F0aW9uUHJveHlIVFRQUyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHA6CisgICAgICAgICh0ZXN0QXV0
b21hdGlvblNlc3Npb25SZXF1ZXN0U2Vzc2lvbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAodGVzdEJh
Y2tGb3J3YXJkTGlzdE5hdmlnYXRpb24pOgorICAgICAgICAodGVzdFdlYktpdFdlYlZpZXdTZXNz
aW9uU3RhdGUpOgorICAgICAgICAodGVzdFdlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGVXaXRoRm9y
bURhdGEpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29u
c29sZU1lc3NhZ2UuY3BwOgorICAgICAgICAoQ29uc29sZU1lc3NhZ2VUZXN0Ojpjb25zb2xlTWVz
c2FnZVJlY2VpdmVkQ2FsbGJhY2spOgorICAgICAgICAodGVzdFdlYktpdENvbnNvbGVNZXNzYWdl
Q29uc29sZUFQSSk6CisgICAgICAgICh0ZXN0V2ViS2l0Q29uc29sZU1lc3NhZ2VKYXZhU2NyaXB0
RXhjZXB0aW9uKToKKyAgICAgICAgKHRlc3RXZWJLaXRDb25zb2xlTWVzc2FnZU5ldHdvcmtFcnJv
cik6CisgICAgICAgICh0ZXN0V2ViS2l0Q29uc29sZU1lc3NhZ2VTZWN1cml0eUVycm9yKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIu
Y3BwOgorICAgICAgICAodGVzdENvb2tpZU1hbmFnZXJBY2NlcHRQb2xpY3kpOgorICAgICAgICAo
dGVzdENvb2tpZU1hbmFnZXJDb29raWVzQ2hhbmdlZCk6CisgICAgICAgICh0ZXN0Q29va2llTWFu
YWdlclBlcnNpc3RlbnRTdG9yYWdlKToKKyAgICAgICAgKHRlc3RDb29raWVNYW5hZ2VyUGVyc2lz
dGVudFN0b3JhZ2VEZWxldGVBbGwpOgorICAgICAgICAodGVzdENvb2tpZU1hbmFnZXJFcGhlbWVy
YWwpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0RE9NRWxl
bWVudC5jcHA6CisgICAgICAgICh0ZXN0V2ViS2l0RE9NRWxlbWVudEF1dG9GaWxsKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHA6Cisg
ICAgICAgIChkb3dubG9hZExvY2FsRmlsZVN1Y2Nlc3NmdWxseSk6CisgICAgICAgIChjcmVhdGVG
aWxlQXREZXN0aW5hdGlvbik6CisgICAgICAgICh0ZXN0RG93bmxvYWRPdmVyd3JpdGVEZXN0aW5h
dGlvbkRpc2FsbG93ZWQpOgorICAgICAgICAodGVzdERvd25sb2FkTG9jYWxGaWxlRXJyb3IpOgor
ICAgICAgICAodGVzdERvd25sb2FkUmVtb3RlRmlsZSk6CisgICAgICAgICh0ZXN0RG93bmxvYWRS
ZW1vdGVGaWxlRXJyb3IpOgorICAgICAgICAodGVzdFdlYlZpZXdEb3dubG9hZFVSSSk6CisgICAg
ICAgICh0ZXN0UG9saWN5UmVzcG9uc2VEb3dubG9hZCk6CisgICAgICAgICh0ZXN0UG9saWN5UmVz
cG9uc2VEb3dubG9hZENhbmNlbCk6CisgICAgICAgICh0ZXN0RG93bmxvYWRNSU1FVHlwZSk6Cisg
ICAgICAgIChjb250ZXh0TWVudUNhbGxiYWNrKToKKyAgICAgICAgKHRlc3RDb250ZXh0TWVudURv
d25sb2FkQWN0aW9ucyk6CisgICAgICAgICh0ZXN0QmxvYkRvd25sb2FkKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEVkaXRvci5jcHA6CisgICAgICAgICh0
ZXN0V2ViS2l0V2ViRWRpdG9yU2VsZWN0aW9uQ2hhbmdlZCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RGcmFtZS5jcHA6CisgICAgICAgICh0ZXN0V2ViS2l0
RnJhbWVNYWluRnJhbWUpOgorICAgICAgICAodGVzdFdlYktpdEZyYW1lVVJJKToKKyAgICAgICAg
KHRlc3RXZWJLaXRGcmFtZUphdmFTY3JpcHRDb250ZXh0KToKKyAgICAgICAgKHRlc3RXZWJLaXRG
cmFtZUphdmFTY3JpcHRWYWx1ZXMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKExvYWRTdG9wVHJhY2tpbmdU
ZXN0Ojpsb2FkRmFpbGVkKToKKyAgICAgICAgKHRlc3RXZWJWaWV3VGl0bGUpOgorICAgICAgICAo
dGVzdFVSSVJlcXVlc3RIVFRQSGVhZGVycyk6CisgICAgICAgICh0ZXN0VVJJUmVxdWVzdEhUVFBN
ZXRob2QpOgorICAgICAgICAodGVzdFVSSVJlc3BvbnNlSFRUUEhlYWRlcnMpOgorICAgICAgICAo
dGVzdFJlZGlyZWN0VG9EYXRhVVJJKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdE11bHRpcHJvY2Vzcy5jcHA6CisgICAgICAgICh0ZXN0UHJvY2Vzc1Blcldl
YlZpZXcpOgorICAgICAgICAodGVzdFdlYlByb2Nlc3NMaW1pdCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RSZXNvdXJjZXMuY3BwOgorICAgICAgICAodGVz
dFdlYlZpZXdSZXNvdXJjZXMpOgorICAgICAgICAodGVzdFdlYlJlc291cmNlTG9hZGluZyk6Cisg
ICAgICAgICh0ZXN0V2ViUmVzb3VyY2VTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgICh0ZXN0
V2ViUmVzb3VyY2VHZXREYXRhKToKKyAgICAgICAgKHRlc3RXZWJSZXNvdXJjZUdldERhdGFFcnJv
cik6CisgICAgICAgICh0ZXN0V2ViVmlld1Jlc291cmNlc0hpc3RvcnlDYWNoZSk6CisgICAgICAg
ICh0ZXN0V2ViUmVzb3VyY2VTZW5kUmVxdWVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RTU0wuY3BwOgorICAgICAgICAodGVzdFNTTCk6CisgICAgICAg
ICh0ZXN0SW5zZWN1cmVDb250ZW50KToKKyAgICAgICAgKHRlc3RUTFNFcnJvcnNQb2xpY3kpOgor
ICAgICAgICAodGVzdFRMU0Vycm9yc1JlZGlyZWN0KToKKyAgICAgICAgKHRlc3RUTFNFcnJvcnNI
VFRQQXV0aCk6CisgICAgICAgICh0ZXN0TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMpOgorICAgICAg
ICAodGVzdFN1YnJlc291cmNlTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMpOgorICAgICAgICAoaHR0
cHNTZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RVSUNsaWVudC5jcHA6CisgICAgICAgICh0ZXN0V2ViVmlld0NyZWF0ZU5hdmlnYXRp
b25EYXRhKToKKyAgICAgICAgKHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MpOgorICAgICAg
ICAodGVzdFdlYlZpZXdXaW5kb3dQcm9wZXJ0aWVzKToKKyAgICAgICAgKHRlc3RXZWJWaWV3TW91
c2VUYXJnZXQpOgorICAgICAgICAodGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QpOgorICAg
ICAgICAodGVzdFdlYlZpZXdDb2xvckNob29zZXJSZXF1ZXN0KToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwOgorICAgICAgICAo
dGVzdFdlYkV4dGVuc2lvbkdldFRpdGxlKToKKyAgICAgICAgKHRlc3REb2N1bWVudExvYWRlZFNp
Z25hbCk6CisgICAgICAgICh0ZXN0V2ViS2l0V2ViVmlld1Byb2Nlc3NDcmFzaGVkKToKKyAgICAg
ICAgKHRlc3RXZWJFeHRlbnNpb25XaW5kb3dPYmplY3RDbGVhcmVkKToKKyAgICAgICAgKHRlc3RX
ZWJFeHRlbnNpb25Jc29sYXRlZFdvcmxkKToKKyAgICAgICAgKHBlcm1pc3Npb25SZXF1ZXN0Q2Fs
bGJhY2spOgorICAgICAgICAoZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzQ2FsbGJhY2spOgorICAg
ICAgICAodGVzdFdlYkV4dGVuc2lvbkZvcm1Db250cm9sc0Fzc29jaWF0ZWQpOgorICAgICAgICAo
Rm9ybVN1Ym1pc3Npb25UZXN0OjpGb3JtU3VibWlzc2lvblRlc3QpOgorICAgICAgICAoRm9ybVN1
Ym1pc3Npb25UZXN0Ojp0ZXN0Rm9ybVN1Ym1pc3Npb25SZXN1bHQpOgorICAgICAgICAodGVzdFdl
YkV4dGVuc2lvbkZvcm1TdWJtaXNzaW9uU3RlcHMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KHRlc3ROb3RJbml0aWFsaXplZCk6CisgICAgICAgICh0ZXN0Q2xlYXJEYXRhYmFzZSk6CisgICAg
ICAgICh0ZXN0UHJpdmF0ZUJyb3dzaW5nKToKKyAgICAgICAgKHRlc3RHZXRGYXZpY29uKToKKyAg
ICAgICAgKHRlc3RXZWJWaWV3RmF2aWNvbik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgICh0ZXN0
RmluZENvbnRyb2xsZXJUZXh0Rm91bmQpOgorICAgICAgICAodGVzdEZpbmRDb250cm9sbGVyVGV4
dE5vdEZvdW5kKToKKyAgICAgICAgKHRlc3RGaW5kQ29udHJvbGxlck1hdGNoQ291bnQpOgorICAg
ICAgICAodGVzdEZpbmRDb250cm9sbGVyTWF4TWF0Y2hDb3VudCk6CisgICAgICAgICh0ZXN0Rmlu
ZENvbnRyb2xsZXJOZXh0KToKKyAgICAgICAgKHRlc3RGaW5kQ29udHJvbGxlclByZXZpb3VzKToK
KyAgICAgICAgKHRlc3RGaW5kQ29udHJvbGxlckNvdW50ZWRNYXRjaGVzKToKKyAgICAgICAgKHRl
c3RGaW5kQ29udHJvbGxlck9wdGlvbnMpOgorICAgICAgICAodGVzdEZpbmRDb250cm9sbGVySGlk
ZSk6CisgICAgICAgICh0ZXN0RmluZENvbnRyb2xsZXJJbnN0YW5jZSk6CisgICAgICAgICh0ZXN0
RmluZENvbnRyb2xsZXJHZXR0ZXJzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHA6CisgICAgICAgICh0ZXN0TmF2aWdh
dGlvblBvbGljeSk6CisgICAgICAgICh0ZXN0UmVzcG9uc2VQb2xpY3kpOgorICAgICAgICAodGVz
dE5ld1dpbmRvd1BvbGljeSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRTZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgICh0ZXN0U2VjdXJpdHlP
cmlnaW5CYXNpY0NvbnN0cnVjdG9yKToKKyAgICAgICAgKHRlc3RTZWN1cml0eU9yaWdpblVSSUNv
bnN0cnVjdG9yKToKKyAgICAgICAgKHRlc3RTZWN1cml0eU9yaWdpbkRlZmF1bHRQb3J0KToKKyAg
ICAgICAgKHRlc3RTZWN1cml0eU9yaWdpbkZpbGVVUkkpOgorICAgICAgICAodGVzdE9wYXF1ZVNl
Y3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFdlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAgKHRlc3RXZWJLaXRTZXR0aW5ncyk6Cisg
ICAgICAgICh0ZXN0V2ViS2l0U2V0dGluZ3NOZXdXaXRoU2V0dGluZ3MpOgorICAgICAgICAodGVz
dFdlYktpdFNldHRpbmdzVXNlckFnZW50KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHA6CisgICAgICAgICh0
ZXN0V2ViVmlld05ld1dpdGhVc2VyQ29udGVudE1hbmFnZXIpOgorICAgICAgICAoaXNTdHlsZVNo
ZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgpOgorICAgICAgICAoaXNTY3JpcHRJbmplY3RlZEZvclVS
TEF0UGF0aCk6CisgICAgICAgICh0ZXN0VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTdHlsZVNo
ZWV0KToKKyAgICAgICAgKHRlc3RVc2VyQ29udGVudE1hbmFnZXJJbmplY3RlZFNjcmlwdCk6Cisg
ICAgICAgIChVc2VyU2NyaXB0TWVzc2FnZVRlc3Q6OnNjcmlwdE1lc3NhZ2VSZWNlaXZlZCk6Cisg
ICAgICAgIChVc2VyU2NyaXB0TWVzc2FnZVRlc3Q6OndhaXRVbnRpbE1lc3NhZ2VSZWNlaXZlZCk6
CisgICAgICAgIChVc2VyU2NyaXB0TWVzc2FnZVRlc3Q6OnJ1bkphdmFTY3JpcHRGaW5pc2hlZCk6
CisgICAgICAgICh0ZXN0VXNlckNvbnRlbnRNYW5hZ2VyU2NyaXB0TWVzc2FnZVJlY2VpdmVkKToK
KyAgICAgICAgKHRlc3RVc2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNzYWdlSW5Xb3JsZFJlY2Vp
dmVkKToKKyAgICAgICAgKHRlc3RVc2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNzYWdlRnJvbURP
TUJpbmRpbmdzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFdlYktpdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAodGVzdFdlYkNvbnRleHREZWZhdWx0KToK
KyAgICAgICAgKHRlc3RXZWJDb250ZXh0RXBoZW1lcmFsKToKKyAgICAgICAgKHRlc3RXZWJDb250
ZXh0R2V0UGx1Z2lucyk6CisgICAgICAgICh0ZXN0V2ViQ29udGV4dFVSSVNjaGVtZSk6CisgICAg
ICAgICh0ZXN0V2ViQ29udGV4dFNwZWxsQ2hlY2tlcik6CisgICAgICAgICh0ZXN0V2ViQ29udGV4
dExhbmd1YWdlcyk6CisgICAgICAgIChjb25zb2xlTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2spOgor
ICAgICAgICAodGVzdFdlYkNvbnRleHRTZWN1cml0eUZpbGVYSFIpOgorICAgICAgICAoUHJveHlU
ZXN0OjpQcm94eVRlc3QpOgorICAgICAgICAodGVzdFdlYkNvbnRleHRQcm94eVNldHRpbmdzKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZp
ZXcuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdXZWJDb250ZXh0KToKKyAgICAgICAgKHRlc3RX
ZWJWaWV3V2ViQmFja2VuZCk6CisgICAgICAgICh0ZXN0V2ViVmlld0VwaGVtZXJhbCk6CisgICAg
ICAgICh0ZXN0V2ViVmlld0N1c3RvbUNoYXJzZXQpOgorICAgICAgICAodGVzdFdlYlZpZXdTZXR0
aW5ncyk6CisgICAgICAgICh0ZXN0V2ViVmlld1J1bkphdmFTY3JpcHQpOgorICAgICAgICAodGVz
dFdlYlZpZXdDYW5TaG93TUlNRVR5cGUpOgorICAgICAgICAodGVzdFdlYlZpZXdTdWJtaXRGb3Jt
KToKKyAgICAgICAgKHRlc3RXZWJWaWV3U2F2ZSk6CisgICAgICAgICh0ZXN0V2ViVmlld1BhZ2VW
aXNpYmlsaXR5KToKKyAgICAgICAgKHRlc3RXZWJWaWV3U25hcHNob3QpOgorICAgICAgICAodGVz
dFdlYlZpZXdOb3RpZmljYXRpb24pOgorICAgICAgICAodGVzdFdlYlZpZXdOb3RpZmljYXRpb25J
bml0aWFsUGVybWlzc2lvbkFsbG93ZWQpOgorICAgICAgICAodGVzdFdlYlZpZXdOb3RpZmljYXRp
b25Jbml0aWFsUGVybWlzc2lvbkRpc2FsbG93ZWQpOgorICAgICAgICAodGVzdFdlYlZpZXdJc1Bs
YXlpbmdBdWRpbyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJzaXRlRGF0YS5jcHA6CisgICAgICAgIChXZWJzaXRlRGF0YVRlc3Q6OldlYnNpdGVEYXRh
VGVzdCk6CisgICAgICAgIChXZWJzaXRlRGF0YVRlc3Q6OnJlbW92ZSk6CisgICAgICAgIChXZWJz
aXRlRGF0YVRlc3Q6OmNsZWFyKToKKyAgICAgICAgKHRlc3RXZWJzaXRlRGF0YUNvbmZpZ3VyYXRp
b24pOgorICAgICAgICAodGVzdFdlYnNpdGVEYXRhRXBoZW1lcmFsKToKKyAgICAgICAgKHRlc3RX
ZWJzaXRlRGF0YUNhY2hlKToKKyAgICAgICAgKHRlc3RXZWJzaXRlRGF0YVN0b3JhZ2UpOgorICAg
ICAgICAodGVzdFdlYnNpdGVEYXRhRGF0YWJhc2VzKToKKyAgICAgICAgKHRlc3RXZWJzaXRlRGF0
YUFwcGNhY2hlKToKKyAgICAgICAgKHRlc3RXZWJzaXRlRGF0YUNvb2tpZXMpOgorICAgICAgICAo
dGVzdFdlYnNpdGVEYXRhRGV2aWNlSWRIYXNoU2FsdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwOgorICAgICAgICAoZW1pdERv
Y3VtZW50TG9hZGVkKToKKyAgICAgICAgKGVtaXRVUklDaGFuZ2VkKToKKyAgICAgICAgKHNlbmRS
ZXF1ZXN0Q2FsbGJhY2spOgorICAgICAgICAoY29udGV4dE1lbnVDYWxsYmFjayk6CisgICAgICAg
IChjb25zb2xlTWVzc2FnZVNlbnRDYWxsYmFjayk6CisgICAgICAgIChlbWl0Rm9ybUNvbnRyb2xz
QXNzb2NpYXRlZCk6CisgICAgICAgIChmb3JtQ29udHJvbHNBc3NvY2lhdGVkQ2FsbGJhY2spOgor
ICAgICAgICAoZW1pdEZvcm1TdWJtaXNzaW9uRXZlbnQpOgorICAgICAgICAod2lsbFN1Ym1pdEZv
cm1DYWxsYmFjayk6CisgICAgICAgICh3aW5kb3dPYmplY3RDbGVhcmVkKToKKyAgICAgICAgKG1l
dGhvZENhbGxDYWxsYmFjayk6CisgICAgICAgIChyZWdpc3RlckdSZXNvdXJjZSk6CisgICAgICAg
ICh3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0aWFsaXplX3dpdGhfdXNlcl9kYXRhKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3QuY3BwOgor
ICAgICAgICAoY2hlY2tMZWFrcyk6CisgICAgICAgIChXZWJQcm9jZXNzVGVzdDo6Y3JlYXRlKToK
KyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9XZWJQcm9jZXNzVGVzdC5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R3RrL0F1dG9jbGVhbnVwc1Rlc3QuY3BwOgorICAgICAgICAoQXV0b2NsZWFudXBzVGVzdDo6
dGVzdFdlYlByb2Nlc3NBdXRvY2xlYW51cHMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL0RPTUNsaWVudFJlY3RUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdERPTUNs
aWVudFJlY3RUZXN0Ojp0ZXN0RGl2Qm91bmRpbmdDbGllbnRSZWN0UG9zaXRpb24pOgorICAgICAg
ICAoV2ViS2l0RE9NQ2xpZW50UmVjdFRlc3Q6OnRlc3REaXZDbGllbnRSZWN0c1Bvc2l0aW9uQW5k
TGVuZ3RoKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01ET01X
aW5kb3dUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdERPTURPTVdpbmRvd1Rlc3Q6OnRlc3RTaWdu
YWxzKToKKyAgICAgICAgKFdlYktpdERPTURPTVdpbmRvd1Rlc3Q6OnRlc3REaXNwYXRjaEV2ZW50
KToKKyAgICAgICAgKFdlYktpdERPTURPTVdpbmRvd1Rlc3Q6OnRlc3RHZXRDb21wdXRlZFN0eWxl
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlRmlsdGVy
VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRET01Ob2RlRmlsdGVyVGVzdDo6dGVzdFRyZWVXYWxr
ZXIpOgorICAgICAgICAoV2ViS2l0RE9NTm9kZUZpbHRlclRlc3Q6OnRlc3ROb2RlSXRlcmF0b3Ip
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVUZXN0LmNw
cDoKKyAgICAgICAgKFdlYktpdERPTU5vZGVUZXN0Ojp0ZXN0SGllcmFyY2h5TmF2aWdhdGlvbik6
CisgICAgICAgIChXZWJLaXRET01Ob2RlVGVzdDo6dGVzdEluc2VydGlvbik6CisgICAgICAgIChX
ZWJLaXRET01Ob2RlVGVzdDo6dGVzdFRhZ05hbWVzTm9kZUxpc3QpOgorICAgICAgICAoV2ViS2l0
RE9NTm9kZVRlc3Q6OnRlc3RUYWdOYW1lc0hUTUxDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dERPTU5vZGVUZXN0Ojp0ZXN0RE9NQ2FjaGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL0RPTVhQYXRoTlNSZXNvbHZlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0
RE9NWFBhdGhOU1Jlc29sdmVyVGVzdDo6ZXZhbHVhdGVGb29DaGlsZFRleHRBbmRDaGVja1Jlc3Vs
dCk6CisgICAgICAgIChXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJUZXN0Ojp0ZXN0WFBhdGhOU1Jl
c29sdmVyTmF0aXZlKToKKyAgICAgICAgKFdlYktpdERPTVhQYXRoTlNSZXNvbHZlclRlc3Q6OnRl
c3RYUGF0aE5TUmVzb2x2ZXJDdXN0b20pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL1Rlc3RBdXRvY2xlYW51cHMuY3BwOgorICAgICAgICAodGVzdFVJUHJvY2Vzc0F1
dG9jbGVhbnVwcyk6CisgICAgICAgICh0ZXN0V2ViUHJvY2Vzc0F1dG9jbGVhbnVwcyk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdENvbnRleHRNZW51LmNwcDoK
KyAgICAgICAgKHRlc3RDb250ZXh0TWVudVBvcHVsYXRlTWVudSk6CisgICAgICAgICh0ZXN0Q29u
dGV4dE1lbnVEaXNtaXNzZWQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R3RrL1Rlc3RET01DbGllbnRSZWN0LmNwcDoKKyAgICAgICAgKHRlc3RXZWJLaXRET01DbGllbnRS
ZWN0RGl2Qm91bmRpbmdDbGllbnRSZWN0UG9zaXRpb24pOgorICAgICAgICAodGVzdFdlYktpdERP
TUNsaWVudFJlY3REaXZDbGllbnRSZWN0c1Bvc2l0aW9uQW5kTGVuZ3RoKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NRE9NV2luZG93LmNwcDoKKyAgICAg
ICAgKHRlc3RXZWJLaXRET01ET01XaW5kb3dTaWduYWxzKToKKyAgICAgICAgKHRlc3RXZWJLaXRE
T01ET01XaW5kb3dEaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKHRlc3RXZWJLaXRET01ET01XaW5k
b3dHZXRDb21wdXRlZFN0eWxlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEd0ay9UZXN0RE9NTm9kZS5jcHA6CisgICAgICAgICh0ZXN0V2ViS2l0RE9NTm9kZUhpZXJhcmNo
eU5hdmlnYXRpb24pOgorICAgICAgICAodGVzdFdlYktpdERPTU5vZGVJbnNlcnRpb24pOgorICAg
ICAgICAodGVzdFdlYktpdERPTU5vZGVUYWdOYW1lc05vZGVMaXN0KToKKyAgICAgICAgKHRlc3RX
ZWJLaXRET01Ob2RlVGFnTmFtZXNIVE1MQ29sbGVjdGlvbik6CisgICAgICAgICh0ZXN0V2ViS2l0
RE9NT2JqZWN0Q2FjaGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3Rr
L1Rlc3RET01Ob2RlRmlsdGVyLmNwcDoKKyAgICAgICAgKHRlc3RXZWJLaXRET01Ob2RlRmlsdGVy
VHJlZVdhbGtlcik6CisgICAgICAgICh0ZXN0V2ViS2l0RE9NTm9kZUZpbHRlck5vZGVJdGVyYXRv
cik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdERPTVhQYXRo
TlNSZXNvbHZlci5jcHA6CisgICAgICAgICh0ZXN0V2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyTmF0
aXZlKToKKyAgICAgICAgKHRlc3RXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJDdXN0b20pOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RJbnNwZWN0b3IuY3BwOgor
ICAgICAgICAodGVzdEluc3BlY3RvckRlZmF1bHQpOgorICAgICAgICAodGVzdEluc3BlY3Rvck1h
bnVhbEF0dGFjaERldGFjaCk6CisgICAgICAgICh0ZXN0SW5zcGVjdG9yQ3VzdG9tQ29udGFpbmVy
RGVzdHJveWVkKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0
SW5zcGVjdG9yU2VydmVyLmNwcDoKKyAgICAgICAgKHN0YXJ0VGVzdFNlcnZlcik6CisgICAgICAg
ICh0ZXN0SW5zcGVjdG9yU2VydmVyUGFnZUxpc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL1Rlc3RPcHRpb25NZW51LmNwcDoKKyAgICAgICAgKE9wdGlvbk1lbnVU
ZXN0OjpzaG93T3B0aW9uTWVudUNhbGxiYWNrKToKKyAgICAgICAgKE9wdGlvbk1lbnVUZXN0Ojpt
ZW51Q2xvc2VDYWxsYmFjayk6CisgICAgICAgIChPcHRpb25NZW51VGVzdDo6Y2xvc2UpOgorICAg
ICAgICAoT3B0aW9uTWVudVRlc3Q6OmFjdGl2YXRlSXRlbSk6CisgICAgICAgIChPcHRpb25NZW51
VGVzdDo6c2VsZWN0SXRlbSk6CisgICAgICAgICh0ZXN0T3B0aW9uTWVudVNpbXBsZSk6CisgICAg
ICAgICh0ZXN0T3B0aW9uTWVudUdyb3Vwcyk6CisgICAgICAgICh0ZXN0T3B0aW9uTWVudUFjdGl2
YXRlKToKKyAgICAgICAgKHRlc3RPcHRpb25NZW51U2VsZWN0KToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0UHJpbnRpbmcuY3BwOgorICAgICAgICAodGVzdFBy
aW50T3BlcmF0aW9uUHJpbnRTZXR0aW5ncyk6CisgICAgICAgICh3ZWJWaWV3UHJpbnRDYWxsYmFj
ayk6CisgICAgICAgICh0ZXN0UHJpbnRPcGVyYXRpb25QcmludCk6CisgICAgICAgICh0ZXN0UHJp
bnRDdXN0b21XaWRnZXQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3Rr
L1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcDoKKyAgICAgICAgKGNoZWNrQXRzcGlBY2Nlc3Np
YmxlKToKKyAgICAgICAgKHRlc3RBdHNwaUJhc2ljSGllcmFyY2h5KToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0VmVyc2lvbi5jcHA6CisgICAgICAg
ICh0ZXN0V2ViS2l0Q2hlY2tWZXJzaW9uKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHA6CisgICAgICAgICh0ZXN0V2ViVmlld0Vk
aXRvckN1dENvcHlQYXN0ZU5vbkVkaXRhYmxlKToKKyAgICAgICAgKHRlc3RXZWJWaWV3RWRpdG9y
Q3V0Q29weVBhc3RlRWRpdGFibGUpOgorICAgICAgICAodGVzdFdlYlZpZXdFZGl0b3JTZWxlY3RB
bGxOb25FZGl0YWJsZSk6CisgICAgICAgICh0ZXN0V2ViVmlld0VkaXRvclNlbGVjdEFsbEVkaXRh
YmxlKToKKyAgICAgICAgKGxvYWRDb250ZW50c0FuZFRyeVRvQ3V0U2VsZWN0aW9uKToKKyAgICAg
ICAgKHRlc3RXZWJWaWV3RWRpdG9yTm9uRWRpdGFibGUpOgorICAgICAgICAodGVzdFdlYlZpZXdF
ZGl0b3JFZGl0YWJsZSk6CisgICAgICAgICh0ZXN0V2ViVmlld0VkaXRvckVkaXRvclN0YXRlVHlw
aW5nQXR0cmlidXRlcyk6CisgICAgICAgICh0ZXN0V2ViVmlld0VkaXRvckluc2VydEltYWdlKToK
KyAgICAgICAgKHRlc3RXZWJWaWV3RWRpdG9yQ3JlYXRlTGluayk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvTG9hZFRyYWNraW5nVGVzdC5jcHA6CisgICAgICAgIChs
b2FkQ2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAgKGxvYWRGYWlsZWRDYWxsYmFjayk6CisgICAg
ICAgIChsb2FkRmFpbGVkV2l0aFRMU0Vycm9yc0NhbGxiYWNrKToKKyAgICAgICAgKExvYWRUcmFj
a2luZ1Rlc3Q6OkxvYWRUcmFja2luZ1Rlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xp
Yi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcDoKKyAgICAgICAgKHJlZ2lzdGVyR1Jlc291cmNlKToK
KyAgICAgICAgKHJlbW92ZU5vbkVtcHR5RGlyZWN0b3J5KToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5oOgorICAgICAgICAoVGVzdDo6YWRvcHRWaWV3
KToKKyAgICAgICAgKFRlc3Q6On5UZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9UZXN0VXRpbHMuaDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdEJ1cy5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0QnVz
OjpnZXRPckNyZWF0ZUNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0VGVzdEJ1czo6Y3JlYXRl
UHJveHkpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRl
c3RTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdFNlcnZlcjo6Z2V0V2ViU29ja2V0VVJJ
Rm9yUGF0aCBjb25zdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
V2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OmluaXRpYWxpemVXZWJWaWV3
KToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojpsb2FkVVJJKToKKyAgICAgICAgKFdlYlZpZXdUZXN0
Ojpsb2FkSHRtbCk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6bG9hZFBsYWluVGV4dCk6CisgICAg
ICAgIChXZWJWaWV3VGVzdDo6bG9hZEJ5dGVzKToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojpsb2Fk
UmVxdWVzdCk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAg
ICAgICAoV2ViVmlld1Rlc3Q6OmdvQmFjayk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6Z29Gb3J3
YXJkKToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojpnb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6Cisg
ICAgICAgIChyZXNvdXJjZUdldERhdGFDYWxsYmFjayk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6
bWFpblJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3Vs
dFRvQ1N0cmluZyk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvTnVt
YmVyKToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9Cb29sZWFuKToK
KyAgICAgICAgKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0SXNOdWxsKToKKyAgICAgICAg
KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0SXNVbmRlZmluZWQpOgorICAgICAgICAob25T
bmFwc2hvdFJlYWR5KToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpydW5XZWJQcm9jZXNzVGVzdCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0
R3RrLmNwcDoKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJWaWV3
KToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3cpOgorICAgICAgICAoV2ViVmll
d1Rlc3Q6OnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZCk6CisgICAgICAgIChXZWJWaWV3
VGVzdDo6bW91c2VNb3ZlVG8pOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OmVtaXRQb3B1cE1lbnVT
aWduYWwpOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OmtleVN0cm9rZSk6CisgICAgICAgIChXZWJW
aWV3VGVzdDo6ZG9Nb3VzZUJ1dHRvbkV2ZW50KToKKwogMjAxOC0xMi0xOSAgTWVnYW4gR2FyZG5l
ciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IGNsaWVudHMgdG8g
c2V0IHRoZSBuYXZpZ2F0b3IgcGxhdGZvcm0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvSmF2YVNjcmlwdENvcmUvZ2xpYi9UZXN0SlNDLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvSmF2YVNjcmlwdENvcmUvZ2xpYi9UZXN0SlNDLmNwcAppbmRleCBmN2ZhNmFh
Y2RjMzNkMjBiNzE3YmM2YmUyZDU1MWIyMDViMGYwN2E0Li43ZTM3MmMzMzI0MDlmNjM3Y2YzM2M0
ODQwYWExYzAwMjI4YzYxYTI4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L0phdmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9KYXZhU2NyaXB0Q29yZS9nbGliL1Rlc3RKU0MuY3BwCkBAIC02NTUsNyArNjU1LDcg
QEAgc3RhdGljIHZvaWQgdGVzdEpTQ0V2YWx1YXRlSW5PYmplY3QoKQogCiAgICAgICAgIEdSZWZQ
dHI8SlNDVmFsdWU+IHJvb3RGb28gPSBhZG9wdEdSZWYoanNjX3ZhbHVlX29iamVjdF9nZXRfcHJv
cGVydHkoZ2xvYmFsT2JqZWN0LmdldCgpLCAiZm9vIikpOwogICAgICAgICBjaGVja2VyLndhdGNo
KHJvb3RGb28uZ2V0KCkpOwotICAgICAgICBnX2Fzc2VydChqc2NfdmFsdWVfaXNfZnVuY3Rpb24o
cm9vdEZvby5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9pc19mdW5j
dGlvbihyb290Rm9vLmdldCgpKSk7CiAgICAgICAgIHJlc3VsdCA9IGFkb3B0R1JlZihqc2NfdmFs
dWVfZnVuY3Rpb25fY2FsbChyb290Rm9vLmdldCgpLCBHX1RZUEVfTk9ORSkpOwogICAgICAgICBj
aGVja2VyLndhdGNoKHJlc3VsdC5nZXQoKSk7CiAgICAgICAgIGdfYXNzZXJ0X3RydWUoanNjX3Zh
bHVlX2lzX251bWJlcihyZXN1bHQuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9FZGl0b3JUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9FZGl0b3JUZXN0LmNwcAppbmRleCBjM2QxN2UzOWEzNDI3M2Zj
NGUxNGQ0NWMxNGYxMDdhZmJiZTk1ZjVhLi41Zjc2M2U0YmJjZGRiOTNmMWQyZDQ2MWFlOTFhYTNh
OTkzZDAwOWQxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvRWRpdG9yVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL0VkaXRvclRlc3QuY3BwCkBAIC0zNiwxMiArMzYsMTIgQEAgcHJpdmF0ZToKICAgICAgICAg
Ym9vbCBzZWxlY3Rpb25DaGFuZ2VkID0gZmFsc2U7CiAKICAgICAgICAgV2ViS2l0V2ViRWRpdG9y
KiBlZGl0b3IgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2VkaXRvcihwYWdlKTsKLSAgICAgICAgZ19h
c3NlcnQoV0VCS0lUX0lTX1dFQl9FRElUT1IoZWRpdG9yKSk7CisgICAgICAgIGdfYXNzZXJ0X3Ry
dWUoV0VCS0lUX0lTX1dFQl9FRElUT1IoZWRpdG9yKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZWRpdG9yKSk7CiAgICAgICAgIGdfc2ln
bmFsX2Nvbm5lY3Rfc3dhcHBlZChlZGl0b3IsICJzZWxlY3Rpb24tY2hhbmdlZCIsIEdfQ0FMTEJB
Q0soc2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKSwgJnNlbGVjdGlvbkNoYW5nZWQpOwogCiAgICAg
ICAgIEdSZWZQdHI8SlNDQ29udGV4dD4ganNDb250ZXh0ID0gYWRvcHRHUmVmKHdlYmtpdF9mcmFt
ZV9nZXRfanNfY29udGV4dCh3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUocGFnZSkpKTsK
LSAgICAgICAgZ19hc3NlcnQoSlNDX0lTX0NPTlRFWFQoanNDb250ZXh0LmdldCgpKSk7CisgICAg
ICAgIGdfYXNzZXJ0X3RydWUoSlNDX0lTX0NPTlRFWFQoanNDb250ZXh0LmdldCgpKSk7CiAgICAg
ICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoanNDb250
ZXh0LmdldCgpKSk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN0ZXBzW10gPSB7CkBA
IC01NiwxMCArNTYsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gcmVz
dWx0OwogICAgICAgICB1bnNpZ25lZCBpID0gMDsKICAgICAgICAgd2hpbGUgKGNvbnN0IGNoYXIq
IGNvbW1hbmQgPSBzdGVwc1tpKytdKSB7Ci0gICAgICAgICAgICBnX2Fzc2VydCghc2VsZWN0aW9u
Q2hhbmdlZCk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZShzZWxlY3Rpb25DaGFuZ2VkKTsK
ICAgICAgICAgICAgIHJlc3VsdCA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9ldmFsdWF0ZShqc0Nv
bnRleHQuZ2V0KCksIGNvbW1hbmQsIC0xKSk7Ci0gICAgICAgICAgICBnX2Fzc2VydChKU0NfSVNf
VkFMVUUocmVzdWx0LmdldCgpKSk7Ci0gICAgICAgICAgICBnX2Fzc2VydChzZWxlY3Rpb25DaGFu
Z2VkKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUoSlNDX0lTX1ZBTFVFKHJlc3VsdC5nZXQo
KSkpOworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZShzZWxlY3Rpb25DaGFuZ2VkKTsKICAgICAg
ICAgICAgIHNlbGVjdGlvbkNoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRnJhbWVUZXN0LmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwCmluZGV4IDQ2
MWIxY2IyMmZjYmE5NWNkN2Y4Yzc2ZmM3ZmQzYjQ3YTU2ZGI0NzQuLmE1MGFjNjU4NGI3ODhiM2I3
OWMzYjY1YTU5NTU1MGM1NTQ1OGE0NjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwCkBAIC0zMSw4ICszMSw4IEBAIHByaXZhdGU6
CiAgICAgYm9vbCB0ZXN0TWFpbkZyYW1lKFdlYktpdFdlYlBhZ2UqIHBhZ2UpCiAgICAgewogICAg
ICAgICBXZWJLaXRGcmFtZSogZnJhbWUgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUo
cGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19GUkFNRShmcmFtZSkpOwotICAgICAg
ICBnX2Fzc2VydCh3ZWJraXRfZnJhbWVfaXNfbWFpbl9mcmFtZShmcmFtZSkpOworICAgICAgICBn
X2Fzc2VydF90cnVlKFdFQktJVF9JU19GUkFNRShmcmFtZSkpOworICAgICAgICBnX2Fzc2VydF90
cnVlKHdlYmtpdF9mcmFtZV9pc19tYWluX2ZyYW1lKGZyYW1lKSk7CiAKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtNDAsNyArNDAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdGVzdFVS
SShXZWJLaXRXZWJQYWdlKiBwYWdlKQogICAgIHsKICAgICAgICAgV2ViS2l0RnJhbWUqIGZyYW1l
ID0gd2Via2l0X3dlYl9wYWdlX2dldF9tYWluX2ZyYW1lKHBhZ2UpOwotICAgICAgICBnX2Fzc2Vy
dChXRUJLSVRfSVNfRlJBTUUoZnJhbWUpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRf
SVNfRlJBTUUoZnJhbWUpKTsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfcGFn
ZV9nZXRfdXJpKHBhZ2UpLCA9PSwgd2Via2l0X2ZyYW1lX2dldF91cmkoZnJhbWUpKTsKIAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ5LDE1ICs0OSwxNSBAQCBwcml2YXRlOgogICAgIGJvb2wg
dGVzdEphdmFTY3JpcHRDb250ZXh0KFdlYktpdFdlYlBhZ2UqIHBhZ2UpCiAgICAgewogICAgICAg
ICBXZWJLaXRGcmFtZSogZnJhbWUgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUocGFn
ZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19GUkFNRShmcmFtZSkpOworICAgICAgICBn
X2Fzc2VydF90cnVlKFdFQktJVF9JU19GUkFNRShmcmFtZSkpOwogI2lmIFBMQVRGT1JNKEdUSykK
ICAgICAgICAgR19HTlVDX0JFR0lOX0lHTk9SRV9ERVBSRUNBVElPTlM7Ci0gICAgICAgIGdfYXNz
ZXJ0KHdlYmtpdF9mcmFtZV9nZXRfamF2YXNjcmlwdF9nbG9iYWxfY29udGV4dChmcmFtZSkpOwor
ICAgICAgICBnX2Fzc2VydF9ub25udWxsKHdlYmtpdF9mcmFtZV9nZXRfamF2YXNjcmlwdF9nbG9i
YWxfY29udGV4dChmcmFtZSkpOwogICAgICAgICBHX0dOVUNfRU5EX0lHTk9SRV9ERVBSRUNBVElP
TlM7CiAjZW5kaWYKIAogICAgICAgICBHUmVmUHRyPEpTQ0NvbnRleHQ+IGpzQ29udGV4dCA9IGFk
b3B0R1JlZih3ZWJraXRfZnJhbWVfZ2V0X2pzX2NvbnRleHQoZnJhbWUpKTsKLSAgICAgICAgZ19h
c3NlcnQoSlNDX0lTX0NPTlRFWFQoanNDb250ZXh0LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0
X3RydWUoSlNDX0lTX0NPTlRFWFQoanNDb250ZXh0LmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoanNDb250ZXh0LmdldCgpKSk7
CiAKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02Niw2NSArNjYsNjUgQEAgcHJpdmF0ZToKICAg
ICBib29sIHRlc3RKYXZhU2NyaXB0VmFsdWVzKFdlYktpdFdlYlBhZ2UqIHBhZ2UpCiAgICAgewog
ICAgICAgICBXZWJLaXRGcmFtZSogZnJhbWUgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJh
bWUocGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19GUkFNRShmcmFtZSkpOworICAg
ICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19GUkFNRShmcmFtZSkpOwogCiAgICAgICAgIEdS
ZWZQdHI8SlNDQ29udGV4dD4ganNDb250ZXh0ID0gYWRvcHRHUmVmKHdlYmtpdF9mcmFtZV9nZXRf
anNfY29udGV4dChmcmFtZSkpOwotICAgICAgICBnX2Fzc2VydChKU0NfSVNfQ09OVEVYVChqc0Nv
bnRleHQuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShKU0NfSVNfQ09OVEVYVChqc0Nv
bnRleHQuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5p
c2hlcyhHX09CSkVDVChqc0NvbnRleHQuZ2V0KCkpKTsKIAogICAgICAgICBXZWJLaXRET01Eb2N1
bWVudCogZG9jdW1lbnQgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudChwYWdlKTsK
LSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOworICAg
ICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKICAg
ICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkb2N1
bWVudCkpOwogCiAgICAgICAgIEdSZWZQdHI8SlNDVmFsdWU+IGpzRG9jdW1lbnQgPSBhZG9wdEdS
ZWYod2Via2l0X2ZyYW1lX2dldF9qc192YWx1ZV9mb3JfZG9tX29iamVjdChmcmFtZSwgV0VCS0lU
X0RPTV9PQkpFQ1QoZG9jdW1lbnQpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KEpTQ19JU19WQUxVRShq
c0RvY3VtZW50LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoSlNDX0lTX1ZBTFVFKGpz
RG9jdW1lbnQuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RG
aW5pc2hlcyhHX09CSkVDVChqc0RvY3VtZW50LmdldCgpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KGpz
Y192YWx1ZV9nZXRfY29udGV4dChqc0RvY3VtZW50LmdldCgpKSA9PSBqc0NvbnRleHQuZ2V0KCkp
OworICAgICAgICBnX2Fzc2VydF9jbXBoZXgoanNjX3ZhbHVlX2dldF9jb250ZXh0KGpzRG9jdW1l
bnQuZ2V0KCkpLCA9PSwganNDb250ZXh0LmdldCgpKTsKIAogICAgICAgICBHUmVmUHRyPEpTQ1Zh
bHVlPiB2YWx1ZSA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9nZXRfdmFsdWUoanNDb250ZXh0Lmdl
dCgpLCAiZG9jdW1lbnQiKSk7Ci0gICAgICAgIGdfYXNzZXJ0KHZhbHVlLmdldCgpID09IGpzRG9j
dW1lbnQuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgodmFsdWUuZ2V0KCksID09LCBq
c0RvY3VtZW50LmdldCgpKTsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgR19HTlVDX0JF
R0lOX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAgICAgICAgIFdlYktpdERPTUVsZW1lbnQqIHAgPSB3
ZWJraXRfZG9tX2RvY3VtZW50X2dldF9lbGVtZW50X2J5X2lkKGRvY3VtZW50LCAicGFyYWdyYXBo
Iik7CiAgICAgICAgIEdfR05VQ19FTkRfSUdOT1JFX0RFUFJFQ0FUSU9OUzsKLSAgICAgICAgZ19h
c3NlcnQoV0VCS0lUX0RPTV9JU19FTEVNRU5UKHApKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShX
RUJLSVRfRE9NX0lTX0VMRU1FTlQocCkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRX
aGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHApKTsKIAogICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVl
PiBqc1AgPSBhZG9wdEdSZWYod2Via2l0X2ZyYW1lX2dldF9qc192YWx1ZV9mb3JfZG9tX29iamVj
dChmcmFtZSwgV0VCS0lUX0RPTV9PQkpFQ1QocCkpKTsKICNlbHNlCiAgICAgICAgIEdSZWZQdHI8
SlNDVmFsdWU+IGpzUCA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2ludm9rZV9tZXRob2Qo
anNEb2N1bWVudC5nZXQoKSwgImdldEVsZW1lbnRCeUlkIiwgR19UWVBFX1NUUklORywgInBhcmFn
cmFwaCIsIEdfVFlQRV9OT05FKSk7CiAjZW5kaWYKLSAgICAgICAgZ19hc3NlcnQoSlNDX0lTX1ZB
TFVFKGpzUC5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKEpTQ19JU19WQUxVRShqc1Au
Z2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhH
X09CSkVDVChqc1AuZ2V0KCkpKTsKLSAgICAgICAgZ19hc3NlcnQoanNjX3ZhbHVlX2lzX29iamVj
dChqc1AuZ2V0KCkpKTsKLSAgICAgICAgZ19hc3NlcnQoanNjX3ZhbHVlX2dldF9jb250ZXh0KGpz
UC5nZXQoKSkgPT0ganNDb250ZXh0LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2Nf
dmFsdWVfaXNfb2JqZWN0KGpzUC5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgoanNj
X3ZhbHVlX2dldF9jb250ZXh0KGpzUC5nZXQoKSksID09LCBqc0NvbnRleHQuZ2V0KCkpOwogCiAg
ICAgICAgIHZhbHVlID0gYWRvcHRHUmVmKGpzY19jb250ZXh0X2V2YWx1YXRlKGpzQ29udGV4dC5n
ZXQoKSwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJhZ3JhcGgnKSIsIC0xKSk7Ci0gICAg
ICAgIGdfYXNzZXJ0KHZhbHVlLmdldCgpID09IGpzUC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0
X2NtcGhleCh2YWx1ZS5nZXQoKSwgPT0sIGpzUC5nZXQoKSk7CiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgICAgICB2YWx1ZSA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2ludm9rZV9tZXRob2Qo
anNEb2N1bWVudC5nZXQoKSwgImdldEVsZW1lbnRCeUlkIiwgR19UWVBFX1NUUklORywgInBhcmFn
cmFwaCIsIEdfVFlQRV9OT05FKSk7Ci0gICAgICAgIGdfYXNzZXJ0KHZhbHVlLmdldCgpID09IGpz
UC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGhleCh2YWx1ZS5nZXQoKSwgPT0sIGpzUC5n
ZXQoKSk7CiAjZW5kaWYKIAogICAgICAgICB2YWx1ZSA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2Jq
ZWN0X2dldF9wcm9wZXJ0eShqc1AuZ2V0KCksICJpbm5lclRleHQiKSk7Ci0gICAgICAgIGdfYXNz
ZXJ0KEpTQ19JU19WQUxVRSh2YWx1ZS5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKEpT
Q19JU19WQUxVRSh2YWx1ZS5nZXQoKSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRX
aGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHZhbHVlLmdldCgpKSk7Ci0gICAgICAgIGdfYXNzZXJ0
KGpzY192YWx1ZV9pc19zdHJpbmcodmFsdWUuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1
ZShqc2NfdmFsdWVfaXNfc3RyaW5nKHZhbHVlLmdldCgpKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8
Y2hhcj4gc3RyVmFsdWUoanNjX3ZhbHVlX3RvX3N0cmluZyh2YWx1ZS5nZXQoKSkpOwogICAgICAg
ICBnX2Fzc2VydF9jbXBzdHIoc3RyVmFsdWUuZ2V0KCksID09LCAiVGhpcyBpcyBhIHRlc3QiKTsK
IAogICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiBqc0ltYWdlID0gYWRvcHRHUmVmKGpzY192YWx1
ZV9vYmplY3RfaW52b2tlX21ldGhvZChqc0RvY3VtZW50LmdldCgpLCAiZ2V0RWxlbWVudEJ5SWQi
LCBHX1RZUEVfU1RSSU5HLCAiaW1hZ2UiLCBHX1RZUEVfTk9ORSkpOwotICAgICAgICBnX2Fzc2Vy
dChKU0NfSVNfVkFMVUUoanNJbWFnZS5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKEpT
Q19JU19WQUxVRShqc0ltYWdlLmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRl
ZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoanNJbWFnZS5nZXQoKSkpOwotICAgICAgICBnX2Fz
c2VydChqc2NfdmFsdWVfaXNfb2JqZWN0KGpzSW1hZ2UuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3Nl
cnRfdHJ1ZShqc2NfdmFsdWVfaXNfb2JqZWN0KGpzSW1hZ2UuZ2V0KCkpKTsKIAogICAgICAgICBX
ZWJLaXRET01Ob2RlKiBpbWFnZSA9IHdlYmtpdF9kb21fbm9kZV9mb3JfanNfdmFsdWUoanNJbWFn
ZS5nZXQoKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRUxFTUVOVChpbWFnZSkp
OworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfRUxFTUVOVChpbWFnZSkpOwog
ICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGlt
YWdlKSk7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICBHX0dOVUNfQkVHSU5fSUdOT1JFX0RF
UFJFQ0FUSU9OUzsKLSAgICAgICAgZ19hc3NlcnQod2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZWxl
bWVudF9ieV9pZChkb2N1bWVudCwgImltYWdlIikgPT0gV0VCS0lUX0RPTV9FTEVNRU5UKGltYWdl
KSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9lbGVt
ZW50X2J5X2lkKGRvY3VtZW50LCAiaW1hZ2UiKSwgPT0sIFdFQktJVF9ET01fRUxFTUVOVChpbWFn
ZSkpOwogICAgICAgICBHX0dOVUNfRU5EX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRo
ZW50aWNhdGlvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dEF1dGhlbnRpY2F0aW9uLmNwcAppbmRleCA1NmRlZGY3MDQyZmUzZGExMzFhMGM3YTJjYjNhMmRi
NDQ4Y2M4MjhiLi5kNmNjMmZiMjQ3ZTU2MjA2Njk3NzYxMGIyNTY3OWI3ZWQxZGNjOGJhIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRp
Y2F0aW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dEF1dGhlbnRpY2F0aW9uLmNwcApAQCAtMTAzLDkgKzEwMyw5IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3QXV0aGVudGljYXRpb25SZXF1ZXN0KEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pCiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0
X2dldF9ob3N0KHJlcXVlc3QpLCA9PSwgc291cF91cmlfZ2V0X2hvc3Qoa1NlcnZlci0+YmFzZVVS
SSgpKSk7CiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVz
dF9nZXRfcG9ydChyZXF1ZXN0KSwgPT0sIHNvdXBfdXJpX2dldF9wb3J0KGtTZXJ2ZXItPmJhc2VV
UkkoKSkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVz
dF9nZXRfcmVhbG0ocmVxdWVzdCksID09LCAibXkgcmVhbG0iKTsKLSAgICBnX2Fzc2VydCh3ZWJr
aXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9nZXRfc2NoZW1lKHJlcXVlc3QpID09IFdFQktJVF9B
VVRIRU5USUNBVElPTl9TQ0hFTUVfSFRUUF9CQVNJQyk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9h
dXRoZW50aWNhdGlvbl9yZXF1ZXN0X2lzX2Zvcl9wcm94eShyZXF1ZXN0KSk7Ci0gICAgZ19hc3Nl
cnQoIXdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2lzX3JldHJ5KHJlcXVlc3QpKTsKKyAg
ICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3NjaGVt
ZShyZXF1ZXN0KSwgPT0sIFdFQktJVF9BVVRIRU5USUNBVElPTl9TQ0hFTUVfSFRUUF9CQVNJQyk7
CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfaXNfZm9y
X3Byb3h5KHJlcXVlc3QpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfYXV0aGVudGljYXRp
b25fcmVxdWVzdF9pc19yZXRyeShyZXF1ZXN0KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3QXV0aGVudGljYXRpb25DYW5jZWwoQXV0aGVudGljYXRpb25UZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVu
dGljYXRpb25Mb2FkQ2FuY2VsbGVkKEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvCiAgICAg
d2Via2l0X3dlYl92aWV3X3N0b3BfbG9hZGluZyh0ZXN0LT5tX3dlYlZpZXcpOwogICAgIC8vIEV4
cGVjdCBlbXB0eSBwYWdlLgogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotICAg
IGdfYXNzZXJ0KHRlc3QtPmF1dGhlbnRpY2F0aW9uQ2FuY2VsbGVkUmVjZWl2ZWQpOworICAgIGdf
YXNzZXJ0X3RydWUodGVzdC0+YXV0aGVudGljYXRpb25DYW5jZWxsZWRSZWNlaXZlZCk7CiAKICAg
ICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzLnNpemUoKSwgPT0sIDMpOwogICAg
IGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMF0sID09LCBMb2FkVHJhY2tpbmdU
ZXN0OjpQcm92aXNpb25hbExvYWRTdGFydGVkKTsKQEAgLTE0NywxMyArMTQ3LDEzIEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25GYWlsdXJlKEF1dGhlbnRpY2F0aW9uVGVz
dCogdGVzdCwgZ2NvbnN0cG9pCiAgICAgLy8gVGVzdCBhdXRoZW50aWNhdGlvbiBmYWlsdXJlcy4K
ICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9hdXRoLXRlc3QuaHRt
bCIpLmRhdGEoKSk7CiAgICAgV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KiByZXF1ZXN0ID0g
dGVzdC0+d2FpdEZvckF1dGhlbnRpY2F0aW9uUmVxdWVzdCgpOwotICAgIGdfYXNzZXJ0KCF3ZWJr
aXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9pc19yZXRyeShyZXF1ZXN0KSk7CisgICAgZ19hc3Nl
cnRfZmFsc2Uod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfaXNfcmV0cnkocmVxdWVzdCkp
OwogICAgIFdlYktpdENyZWRlbnRpYWwqIGNyZWRlbnRpYWwgPSB3ZWJraXRfY3JlZGVudGlhbF9u
ZXcoYXV0aFRlc3RVc2VybmFtZSwgIndyb25ncGFzc3dvcmQiLCBXRUJLSVRfQ1JFREVOVElBTF9Q
RVJTSVNURU5DRV9OT05FKTsKICAgICB3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9hdXRo
ZW50aWNhdGUocmVxdWVzdCwgY3JlZGVudGlhbCk7CiAgICAgd2Via2l0X2NyZWRlbnRpYWxfZnJl
ZShjcmVkZW50aWFsKTsKICAgICAvLyBFeHBlY3QgYSBzZWNvbmQgYXV0aGVudGljYXRpb24gcmVx
dWVzdC4KICAgICByZXF1ZXN0ID0gdGVzdC0+d2FpdEZvckF1dGhlbnRpY2F0aW9uUmVxdWVzdCgp
OwotICAgIGdfYXNzZXJ0KHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2lzX3JldHJ5KHJl
cXVlc3QpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0
X2lzX3JldHJ5KHJlcXVlc3QpKTsKICAgICAvLyBUZXN0IHNlY29uZCBmYWlsdXJlLgogICAgIGNy
ZWRlbnRpYWwgPSB3ZWJraXRfY3JlZGVudGlhbF9uZXcoYXV0aFRlc3RVc2VybmFtZSwgIndyb25n
cGFzc3dvcmQyIiwgV0VCS0lUX0NSRURFTlRJQUxfUEVSU0lTVEVOQ0VfTk9ORSk7CiAgICAgd2Vi
a2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfYXV0aGVudGljYXRlKHJlcXVlc3QsIGNyZWRlbnRp
YWwpOwpAQCAtMTk0LDggKzE5NCw4IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVudGlj
YXRpb25TdG9yYWdlKEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAgICAgR19H
TlVDX0VORF9JR05PUkVfREVQUkVDQVRJT05TOwogICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+
Z2V0VVJJRm9yUGF0aCgiL2F1dGgtdGVzdC5odG1sIikuZGF0YSgpKTsKICAgICBXZWJLaXRBdXRo
ZW50aWNhdGlvblJlcXVlc3QqIHJlcXVlc3QgPSB0ZXN0LT53YWl0Rm9yQXV0aGVudGljYXRpb25S
ZXF1ZXN0KCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2dl
dF9wcm9wb3NlZF9jcmVkZW50aWFsKHJlcXVlc3QpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2F1
dGhlbnRpY2F0aW9uX3JlcXVlc3RfY2FuX3NhdmVfY3JlZGVudGlhbHMocmVxdWVzdCkpOworICAg
IGdfYXNzZXJ0X251bGwod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3Byb3Bvc2Vk
X2NyZWRlbnRpYWwocmVxdWVzdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9hdXRoZW50
aWNhdGlvbl9yZXF1ZXN0X2Nhbl9zYXZlX2NyZWRlbnRpYWxzKHJlcXVlc3QpKTsKIAogICAgIC8v
IElmIFdlYktpdCBoYXMgYmVlbiBjb21waWxlZCB3aXRoIGxpYnNlY3JldCwgYW5kIHByaXZhdGUg
YnJvd3NpbmcgaXMgZGlzYWJsZWQKICAgICAvLyB0aGVuIGNoZWNrIHRoYXQgY3JlZGVudGlhbHMg
Y2FuIGJlIHNhdmVkLgpAQCAtMjA1LDggKzIwNSw4IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
QXV0aGVudGljYXRpb25TdG9yYWdlKEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9p
CiAgICAgR19HTlVDX0VORF9JR05PUkVfREVQUkVDQVRJT05TOwogICAgIHRlc3QtPmxvYWRVUkko
a1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2F1dGgtdGVzdC5odG1sIikuZGF0YSgpKTsKICAgICBy
ZXF1ZXN0ID0gdGVzdC0+d2FpdEZvckF1dGhlbnRpY2F0aW9uUmVxdWVzdCgpOwotICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9nZXRfcHJvcG9zZWRfY3JlZGVudGlh
bChyZXF1ZXN0KSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3Rf
Y2FuX3NhdmVfY3JlZGVudGlhbHMocmVxdWVzdCkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0
X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3Byb3Bvc2VkX2NyZWRlbnRpYWwocmVxdWVzdCkp
OworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfY2FuX3Nh
dmVfY3JlZGVudGlhbHMocmVxdWVzdCkpOwogI2VuZGlmCiB9CiAjZW5kaWYKQEAgLTM1Nyw3ICsz
NTcsNyBAQCBwdWJsaWM6CiAgICAgUHJveHlBdXRoZW50aWNhdGlvblRlc3QoKQogICAgIHsKICAg
ICAgICAgbV9wcm94eVNlcnZlci5ydW4oc2VydmVyQ2FsbGJhY2spOwotICAgICAgICBnX2Fzc2Vy
dChtX3Byb3h5U2VydmVyLmJhc2VVUkkoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobV9w
cm94eVNlcnZlci5iYXNlVVJJKCkpOwogICAgICAgICBnUHJveHlTZXJ2ZXJQb3J0ID0gc291cF91
cmlfZ2V0X3BvcnQobV9wcm94eVNlcnZlci5iYXNlVVJJKCkpOwogICAgICAgICBHVW5pcXVlUHRy
PGNoYXI+IHByb3h5VVJJKHNvdXBfdXJpX3RvX3N0cmluZyhtX3Byb3h5U2VydmVyLmJhc2VVUkko
KSwgRkFMU0UpKTsKICAgICAgICAgV2ViS2l0TmV0d29ya1Byb3h5U2V0dGluZ3MqIHNldHRpbmdz
ID0gd2Via2l0X25ldHdvcmtfcHJveHlfc2V0dGluZ3NfbmV3KHByb3h5VVJJLmdldCgpLCBudWxs
cHRyKTsKQEAgLTM4Nyw5ICszODcsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRp
Y2F0aW9uUHJveHkoUHJveHlBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25zdAogICAgIGdf
YXNzZXJ0X2NtcHN0cih3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9nZXRfaG9zdChyZXF1
ZXN0KSwgPT0sIHNvdXBfdXJpX2dldF9ob3N0KGtTZXJ2ZXItPmJhc2VVUkkoKSkpOwogICAgIGdf
YXNzZXJ0X2NtcHVpbnQod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3BvcnQocmVx
dWVzdCksID09LCBzb3VwX3VyaV9nZXRfcG9ydChrU2VydmVyLT5iYXNlVVJJKCkpKTsKICAgICBn
X2Fzc2VydF9jbXBzdHIod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3JlYWxtKHJl
cXVlc3QpLCA9PSwgIlByb3h5IHJlYWxtIik7Ci0gICAgZ19hc3NlcnQod2Via2l0X2F1dGhlbnRp
Y2F0aW9uX3JlcXVlc3RfZ2V0X3NjaGVtZShyZXF1ZXN0KSA9PSBXRUJLSVRfQVVUSEVOVElDQVRJ
T05fU0NIRU1FX0hUVFBfQkFTSUMpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9hdXRoZW50aWNhdGlv
bl9yZXF1ZXN0X2lzX2Zvcl9wcm94eShyZXF1ZXN0KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9h
dXRoZW50aWNhdGlvbl9yZXF1ZXN0X2lzX3JldHJ5KHJlcXVlc3QpKTsKKyAgICBnX2Fzc2VydF9j
bXBpbnQod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3NjaGVtZShyZXF1ZXN0KSwg
PT0sIFdFQktJVF9BVVRIRU5USUNBVElPTl9TQ0hFTUVfSFRUUF9CQVNJQyk7CisgICAgZ19hc3Nl
cnRfdHJ1ZSh3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9pc19mb3JfcHJveHkocmVxdWVz
dCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2lz
X3JldHJ5KHJlcXVlc3QpKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNh
dGlvblByb3h5SFRUUFMoUHJveHlBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCkBAIC00MDMsOSArNDAzLDkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNh
dGlvblByb3h5SFRUUFMoUHJveHlBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QsIGcKICAgICBnX2Fz
c2VydF9jbXBzdHIod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X2hvc3QocmVxdWVz
dCksID09LCBzb3VwX3VyaV9nZXRfaG9zdChodHRwc1NlcnZlci0+YmFzZVVSSSgpKSk7CiAgICAg
Z19hc3NlcnRfY21wdWludCh3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9nZXRfcG9ydChy
ZXF1ZXN0KSwgPT0sIHNvdXBfdXJpX2dldF9wb3J0KGh0dHBzU2VydmVyLT5iYXNlVVJJKCkpKTsK
ICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3Jl
YWxtKHJlcXVlc3QpLCA9PSwgIlByb3h5IHJlYWxtIik7Ci0gICAgZ19hc3NlcnQod2Via2l0X2F1
dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3NjaGVtZShyZXF1ZXN0KSA9PSBXRUJLSVRfQVVUSEVO
VElDQVRJT05fU0NIRU1FX0hUVFBfQkFTSUMpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9hdXRoZW50
aWNhdGlvbl9yZXF1ZXN0X2lzX2Zvcl9wcm94eShyZXF1ZXN0KSk7Ci0gICAgZ19hc3NlcnQoIXdl
YmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2lzX3JldHJ5KHJlcXVlc3QpKTsKKyAgICBnX2Fz
c2VydF9jbXBpbnQod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3NjaGVtZShyZXF1
ZXN0KSwgPT0sIFdFQktJVF9BVVRIRU5USUNBVElPTl9TQ0hFTUVfSFRUUF9CQVNJQyk7CisgICAg
Z19hc3NlcnRfdHJ1ZSh3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9pc19mb3JfcHJveHko
cmVxdWVzdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1
ZXN0X2lzX3JldHJ5KHJlcXVlc3QpKTsKIH0KIAogdm9pZCBiZWZvcmVBbGwoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vz
c2lvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dG9t
YXRpb25TZXNzaW9uLmNwcAppbmRleCAyNTYyY2I0OGRmYWUxOGY1YzkwMjQwZGEzN2ZlYzE2NDc2
YjIzMWUwLi44OWI5ODM1ODBkZjFhODFmMmY4NWExMGU5M2ExM2RjNDI1MTAxM2RjIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25T
ZXNzaW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dEF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0Q29ubmVjdGlvbihHUmVmUHRyPEdEQnVzQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9u
KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQoR19JU19EQlVTX0NPTk5FQ1RJT04oY29ubmVjdGlv
bi5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKEdfSVNfREJVU19DT05ORUNUSU9OKGNv
bm5lY3Rpb24uZ2V0KCkpKTsKICAgICAgICAgbV9jb25uZWN0aW9uID0gV1RGTW92ZShjb25uZWN0
aW9uKTsKICAgICAgICAgcmVnaXN0ZXJEQnVzT2JqZWN0KCk7CiAgICAgICAgIGdfbWFpbl9sb29w
X3F1aXQobV9tYWluTG9vcC5nZXQoKSk7CkBAIC0xMzUsOCArMTM1LDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCByZWNlaXZlZE1lc3NhZ2UoZ3VpbnQ2NCBjb25uZWN0aW9uSUQsIGd1aW50NjQgdGFy
Z2V0SUQsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiAgICAgewotICAgICAgICBnX2Fzc2VydChjb25u
ZWN0aW9uSUQgPT0gbV9jb25uZWN0aW9uSUQpOwotICAgICAgICBnX2Fzc2VydCh0YXJnZXRJRCA9
PSBtX3RhcmdldC5pZCk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoY29ubmVjdGlvbklELCA9
PSwgbV9jb25uZWN0aW9uSUQpOworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KHRhcmdldElELCA9
PSwgbV90YXJnZXQuaWQpOwogICAgICAgICBtX21lc3NhZ2UgPSBtZXNzYWdlOwogICAgICAgICBn
X21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3AuZ2V0KCkpOwogICAgIH0KQEAgLTE3MCwxOSArMTcw
LDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fc2Vzc2lvbiA9IHNlc3Npb247CiAgICAg
ICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobV9zZXNz
aW9uKSk7Ci0gICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9h
cHBsaWNhdGlvbl9pbmZvKHNlc3Npb24pKTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRf
YXV0b21hdGlvbl9zZXNzaW9uX2dldF9hcHBsaWNhdGlvbl9pbmZvKHNlc3Npb24pKTsKICAgICAg
ICAgV2ViS2l0QXBwbGljYXRpb25JbmZvKiBpbmZvID0gd2Via2l0X2FwcGxpY2F0aW9uX2luZm9f
bmV3KCk7CiAgICAgICAgIHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX3NldF9uYW1lKGluZm8sICJB
dXRvbWF0aW9uVGVzdEJyb3dzZXIiKTsKICAgICAgICAgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9f
c2V0X3ZlcnNpb24oaW5mbywgV0VCS0lUX01BSk9SX1ZFUlNJT04sIFdFQktJVF9NSU5PUl9WRVJT
SU9OLCBXRUJLSVRfTUlDUk9fVkVSU0lPTik7CiAgICAgICAgIHdlYmtpdF9hdXRvbWF0aW9uX3Nl
c3Npb25fc2V0X2FwcGxpY2F0aW9uX2luZm8oc2Vzc2lvbiwgaW5mbyk7CiAgICAgICAgIHdlYmtp
dF9hcHBsaWNhdGlvbl9pbmZvX3VucmVmKGluZm8pOwotICAgICAgICBnX2Fzc2VydCh3ZWJraXRf
YXV0b21hdGlvbl9zZXNzaW9uX2dldF9hcHBsaWNhdGlvbl9pbmZvKHNlc3Npb24pID09IGluZm8p
OworICAgICAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9nZXRf
YXBwbGljYXRpb25faW5mbyhzZXNzaW9uKSwgPT0sIGluZm8pOwogICAgIH0KIAogICAgIHN0YXRp
YyB2b2lkIGF1dG9tYXRpb25TdGFydGVkQ2FsbGJhY2soV2ViS2l0V2ViQ29udGV4dCogd2ViQ29u
dGV4dCwgV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24sIEF1dG9tYXRpb25UZXN0KiB0
ZXN0KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQod2ViQ29udGV4dCA9PSB0ZXN0LT5tX3dlYkNv
bnRleHQuZ2V0KCkpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfSVNfQVVUT01BVElPTl9TRVNT
SU9OKHNlc3Npb24pKTsKKyAgICAgICAgZ19hc3NlcnRfY21waGV4KHdlYkNvbnRleHQsID09LCB0
ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9J
U19BVVRPTUFUSU9OX1NFU1NJT04oc2Vzc2lvbikpOwogICAgICAgICB0ZXN0LT5hdXRvbWF0aW9u
U3RhcnRlZChzZXNzaW9uKTsKICAgICB9CiAKQEAgLTIwOCw3ICsyMDgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgICAgIEdSZWZQdHI8R1Zh
cmlhbnQ+IGNhcGFiaWxpdGllcyA9IGFkb3B0R1JlZihnX2RidXNfY29ubmVjdGlvbl9jYWxsX2Zp
bmlzaChHX0RCVVNfQ09OTkVDVElPTihzb3VyY2UpLCByZXN1bHQsIG51bGxwdHIpKTsKLSAgICAg
ICAgICAgICAgICBnX2Fzc2VydChjYXBhYmlsaXRpZXMuZ2V0KCkpOworICAgICAgICAgICAgICAg
IGdfYXNzZXJ0X25vbm51bGwoY2FwYWJpbGl0aWVzLmdldCgpKTsKICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBicm93c2VyTmFtZTsKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBicm93
c2VyVmVyc2lvbjsKICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfZ2V0KGNhcGFiaWxpdGllcy5n
ZXQoKSwgIigmcyZzKSIsICZicm93c2VyTmFtZSwgJmJyb3dzZXJWZXJzaW9uKTsKQEAgLTIzNCwx
MSArMjM0LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmIChtX3RhcmdldC5pc1BhaXJl
ZCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZ19hc3NlcnQobV90YXJnZXQuaWQpOwor
ICAgICAgICBnX2Fzc2VydF9jbXB1aW50KG1fdGFyZ2V0LmlkLCAhPSwgMCk7CiAgICAgICAgIGdf
ZGJ1c19jb25uZWN0aW9uX2NhbGwobV9jb25uZWN0aW9uLmdldCgpLCBudWxscHRyLCAiL29yZy93
ZWJraXQvSW5zcGVjdG9yIiwgIm9yZy53ZWJraXQuSW5zcGVjdG9yIiwKICAgICAgICAgICAgICJT
ZXR1cCIsIGdfdmFyaWFudF9uZXcoIih0dCkiLCBtX2Nvbm5lY3Rpb25JRCwgbV90YXJnZXQuaWQp
LCBudWxscHRyLCBHX0RCVVNfQ0FMTF9GTEFHU19OT19BVVRPX1NUQVJULCAtMSwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wLmdl
dCgpKTsKLSAgICAgICAgZ19hc3NlcnQobV90YXJnZXQuaXNQYWlyZWQpOworICAgICAgICBnX2Fz
c2VydF90cnVlKG1fdGFyZ2V0LmlzUGFpcmVkKTsKICAgICB9CiAKICAgICBib29sIGNyZWF0ZVRv
cExldmVsQnJvd3NpbmdDb250ZXh0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCkBAIC0yNTEsOCAr
MjUxLDggQEAgcHVibGljOgogICAgICAgICBzZW5kQ29tbWFuZFRvQmFja2VuZCgiY3JlYXRlQnJv
d3NpbmdDb250ZXh0Iik7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wLmdldCgp
KTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fc2Vzc2lvbiwgc2lnbmFs
SUQpOwotICAgICAgICBnX2Fzc2VydChtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQpOwotICAgICAg
ICBnX2Fzc2VydCghbV9tZXNzYWdlLmlzTnVsbCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSht
X2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQpOworICAgICAgICBnX2Fzc2VydF9mYWxzZShtX21lc3Nh
Z2UuaXNOdWxsKCkpOwogICAgICAgICBtX3dlYlZpZXdGb3JBdXRvbWF0aW9uID0gbnVsbHB0cjsK
IAogICAgICAgICBpZiAoc3Ryc3RyKG1fbWVzc2FnZS5kYXRhKCksICJUaGUgcmVtb3RlIHNlc3Np
b24gZmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyBicm93c2luZyBjb250ZXh0IikpCkBAIC0yNzcsMzMg
KzI3NywzMyBAQCBzdGF0aWMgdm9pZCB0ZXN0QXV0b21hdGlvblNlc3Npb25SZXF1ZXN0U2Vzc2lv
bihBdXRvbWF0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pbgogewogICAgIFN0cmluZyBzZXNzaW9u
SUQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CiAgICAgLy8gV2ViS2l0QXV0b21hdGlv
blNlc3Npb246OmF1dG9tYXRpb24tc3RhcnRlZCBpcyBuZXZlciBlbWl0dGVkIGlmIGF1dG9tYXRp
b24gaXMgbm90IGVuYWJsZWQuCi0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfY29udGV4dF9pc19h
dXRvbWF0aW9uX2FsbG93ZWQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7CisgICAgZ19hc3Nl
cnRfZmFsc2Uod2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRpb25fYWxsb3dlZCh0ZXN0LT5t
X3dlYkNvbnRleHQuZ2V0KCkpKTsKICAgICBhdXRvKiBzZXNzaW9uID0gdGVzdC0+cmVxdWVzdFNl
c3Npb24oc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCkpOwotICAgIGdfYXNzZXJ0KCFzZXNzaW9uKTsK
KyAgICBnX2Fzc2VydF9udWxsKHNlc3Npb24pOwogCiAgICAgd2Via2l0X3dlYl9jb250ZXh0X3Nl
dF9hdXRvbWF0aW9uX2FsbG93ZWQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpLCBUUlVFKTsKLSAg
ICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfaXNfYXV0b21hdGlvbl9hbGxvd2VkKHRlc3Qt
Pm1fd2ViQ29udGV4dC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9jb250
ZXh0X2lzX2F1dG9tYXRpb25fYWxsb3dlZCh0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkpKTsKIAog
ICAgIC8vIFRoZXJlIGNhbid0IGJlIG1vcmUgdGhhbiBvbmUgY29udGV4dCB3aXRoIGF1dG9tYXRp
b24gZW5hYmxlZAogICAgIEdSZWZQdHI8V2ViS2l0V2ViQ29udGV4dD4gb3RoZXJDb250ZXh0ID0g
YWRvcHRHUmVmKHdlYmtpdF93ZWJfY29udGV4dF9uZXcoKSk7CiAgICAgdGVzdC0+cmVtb3ZlTG9n
RmF0YWxGbGFnKEdfTE9HX0xFVkVMX1dBUk5JTkcpOwogICAgIHdlYmtpdF93ZWJfY29udGV4dF9z
ZXRfYXV0b21hdGlvbl9hbGxvd2VkKG90aGVyQ29udGV4dC5nZXQoKSwgVFJVRSk7CiAgICAgdGVz
dC0+YWRkTG9nRmF0YWxGbGFnKEdfTE9HX0xFVkVMX1dBUk5JTkcpOwotICAgIGdfYXNzZXJ0KCF3
ZWJraXRfd2ViX2NvbnRleHRfaXNfYXV0b21hdGlvbl9hbGxvd2VkKG90aGVyQ29udGV4dC5nZXQo
KSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfY29udGV4dF9pc19hdXRvbWF0aW9u
X2FsbG93ZWQob3RoZXJDb250ZXh0LmdldCgpKSk7CiAKICAgICBzZXNzaW9uID0gdGVzdC0+cmVx
dWVzdFNlc3Npb24oc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0
cih3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9pZChzZXNzaW9uKSwgPT0sIHNlc3Npb25J
RC51dGY4KCkuZGF0YSgpKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fdGFyZ2V0Lmlk
LCA+LCAwKTsKICAgICBBU1NFUlRfQ01QX0NTVFJJTkcodGVzdC0+bV90YXJnZXQubmFtZSwgPT0s
IHNlc3Npb25JRC51dGY4KCkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3RhcmdldC5pc1BhaXJl
ZCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV90YXJnZXQuaXNQYWlyZWQpOwogCiAgICAg
Ly8gV2lsbCBmYWlsIHRvIGNyZWF0ZSBhIGJyb3dzaW5nIGNvbnRleHQgd2hlbiBub3QgY3JlYXRp
bmcgYSB3ZWIgdmlldyAob3Igbm90IGhhbmRsaW5nIHRoZSBzaWduYWwpLgotICAgIGdfYXNzZXJ0
KCF0ZXN0LT5jcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4dChudWxscHRyKSk7CisgICAgZ19h
c3NlcnRfZmFsc2UodGVzdC0+Y3JlYXRlVG9wTGV2ZWxCcm93c2luZ0NvbnRleHQobnVsbHB0cikp
OwogCiAgICAgLy8gV2lsbCBhbHNvIGZhaWwgaWYgdGhlIHdlYiB2aWV3IGlzIG5vdCBjb250cm9s
bGVkIGJ5IGF1dG9tYXRpb24uCiAgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KFRl
c3Q6OmNyZWF0ZVdlYlZpZXcodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7Ci0gICAgZ19hc3Nl
cnQoIXdlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9tYXRpb24od2ViVmlldy5n
ZXQoKSkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5jcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4
dCh3ZWJWaWV3LmdldCgpKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2lz
X2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3LmdldCgpKSk7CisgICAgZ19hc3NlcnRf
ZmFsc2UodGVzdC0+Y3JlYXRlVG9wTGV2ZWxCcm93c2luZ0NvbnRleHQod2ViVmlldy5nZXQoKSkp
OwogCiAgICAgLy8gQW5kIHdpbGwgd29yayB3aXRoIGEgcHJvcGVyIHdlYiB2aWV3LgogICAgIHdl
YlZpZXcgPSBUZXN0OjphZG9wdFZpZXcoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVX
LApAQCAtMzEzLDggKzMxMyw4IEBAIHN0YXRpYyB2b2lkIHRlc3RBdXRvbWF0aW9uU2Vzc2lvblJl
cXVlc3RTZXNzaW9uKEF1dG9tYXRpb25UZXN0KiB0ZXN0LCBnY29uc3Rwb2luCiAgICAgICAgICJ3
ZWItY29udGV4dCIsIHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwKICAgICAgICAgImlzLWNvbnRy
b2xsZWQtYnktYXV0b21hdGlvbiIsIFRSVUUsCiAgICAgICAgIG51bGxwdHIpKTsKLSAgICBnX2Fz
c2VydCh3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcu
Z2V0KCkpKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5jcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4
dCh3ZWJWaWV3LmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfaXNf
Y29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90
cnVlKHRlc3QtPmNyZWF0ZVRvcExldmVsQnJvd3NpbmdDb250ZXh0KHdlYlZpZXcuZ2V0KCkpKTsK
IAogICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9hbGxvd2VkKHRlc3QtPm1f
d2ViQ29udGV4dC5nZXQoKSwgRkFMU0UpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RCYWNrRm9yd2FyZExpc3QuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4
IDAzNjNlNGQ2NTdjYjI1ZDY1MmVkMWQyODFhMWNjODdiNTQ5MjMyZmIuLmU4MjhlNzY0OTY5ZjFl
ZTU1ZTVhY2RjNDJhZmVhN2U2NjhhMWQ0MTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEJhY2tGb3J3YXJkTGlzdC5jcHAKQEAg
LTY2LDcgKzY2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgY2hlY2tJdGVtKFdlYktp
dEJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0sIGNvbnN0IGNoYXIqIHRpdGxlLCBjb25zdCBjaGFy
KiB1cmksIGNvbnN0IGNoYXIqIG9yaWdpbmFsVVJJKQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQo
aXRlbSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoaXRlbSk7CiAgICAgICAgIGdfYXNzZXJ0
X2NtcHN0cih3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9nZXRfdXJpKGl0ZW0pLCA9PSwg
dXJpKTsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9p
dGVtX2dldF90aXRsZShpdGVtKSwgPT0gLCB0aXRsZSk7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0
cih3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9nZXRfb3JpZ2luYWxfdXJpKGl0ZW0pLCA9
PSwgb3JpZ2luYWxVUkkpOwpAQCAtNzQsMjEgKzc0LDIxIEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyB2b2lkIGNoZWNrSXRlbUluZGV4KFdlYktpdEJhY2tGb3J3YXJkTGlzdCogbGlzdCkKICAgICB7
Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfbnRoX2l0ZW0o
bGlzdCwgLTEpID09IHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfYmFja19pdGVtKGxpc3Qp
KTsKLSAgICAgICAgZ19hc3NlcnQod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9udGhfaXRl
bShsaXN0LCAwKSA9PSB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2N1cnJlbnRfaXRlbShs
aXN0KSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfbnRo
X2l0ZW0obGlzdCwgMSkgPT0gd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3YXJkX2l0
ZW0obGlzdCkpOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X2JhY2tfZm9yd2FyZF9s
aXN0X2dldF9udGhfaXRlbShsaXN0LCAtMSksID09LCB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3Rf
Z2V0X2JhY2tfaXRlbShsaXN0KSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJraXRfYmFj
a19mb3J3YXJkX2xpc3RfZ2V0X250aF9pdGVtKGxpc3QsIDApLCA9PSwgd2Via2l0X2JhY2tfZm9y
d2FyZF9saXN0X2dldF9jdXJyZW50X2l0ZW0obGlzdCkpOworICAgICAgICBnX2Fzc2VydF9jbXBo
ZXgod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9udGhfaXRlbShsaXN0LCAxKSwgPT0sIHdl
YmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfZm9yd2FyZF9pdGVtKGxpc3QpKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgdm9pZCBjaGVja0xpc3QoV2ViS2l0QmFja0ZvcndhcmRMaXN0KiBsaXN0LCB1
bnNpZ25lZCB0eXBlLCBXZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtKiogaXRlbXMsIHVuc2lnbmVk
IG5JdGVtcykKICAgICB7CiAgICAgICAgIEdMaXN0KiBsaXN0SXRlbXMgPSB0eXBlID09IEJhY2tG
b3J3YXJkTGlzdFRlc3Q6OkJhY2t3YXJkID8gd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9i
YWNrX2xpc3QobGlzdCkgOgogICAgICAgICAgICAgd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dl
dF9mb3J3YXJkX2xpc3QobGlzdCk7Ci0gICAgICAgIGdfYXNzZXJ0KGxpc3RJdGVtcyk7CisgICAg
ICAgIGdfYXNzZXJ0X25vbm51bGwobGlzdEl0ZW1zKTsKIAogICAgICAgICB1bnNpZ25lZCBpID0g
MDsKICAgICAgICAgZm9yIChHTGlzdCogbGlzdEl0ZW0gPSBsaXN0SXRlbXM7IGxpc3RJdGVtOyBs
aXN0SXRlbSA9IGdfbGlzdF9uZXh0KGxpc3RJdGVtKSwgaSsrKSB7CiAgICAgICAgICAgICBnX2Fz
c2VydF9jbXB1aW50KGksIDwsIG5JdGVtcyk7Ci0gICAgICAgICAgICBnX2Fzc2VydChsaXN0SXRl
bS0+ZGF0YSA9PSBpdGVtc1tpXSk7CisgICAgICAgICAgICBnX2Fzc2VydF9jbXBoZXgobGlzdEl0
ZW0tPmRhdGEsID09LCBpdGVtc1tpXSk7CiAgICAgICAgIH0KICAgICAgICAgZ19saXN0X2ZyZWUo
bGlzdEl0ZW1zKTsKICAgICB9CkBAIC05OCwyMSArOTgsMjEgQEAgcHVibGljOgogICAgICAgICB0
ZXN0LT5tX2hhc0NoYW5nZWQgPSB0cnVlOwogCiAgICAgICAgIGlmICh0ZXN0LT5tX2NoYW5nZWRG
bGFncyAmIEJhY2tGb3J3YXJkTGlzdFRlc3Q6OkFkZGVkSXRlbSkgewotICAgICAgICAgICAgZ19h
c3NlcnQoV0VCS0lUX0lTX0JBQ0tfRk9SV0FSRF9MSVNUX0lURU0oYWRkZWRJdGVtKSk7CisgICAg
ICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19CQUNLX0ZPUldBUkRfTElTVF9JVEVNKGFk
ZGVkSXRlbSkpOwogICAgICAgICAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRl
c3RGaW5pc2hlcyhHX09CSkVDVChhZGRlZEl0ZW0pKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICBnX2Fzc2VydCghYWRkZWRJdGVtKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X251bGwoYWRk
ZWRJdGVtKTsKIAogICAgICAgICBpZiAodGVzdC0+bV9jaGFuZ2VkRmxhZ3MgJiBCYWNrRm9yd2Fy
ZExpc3RUZXN0OjpSZW1vdmVkSXRlbXMpIHsKLSAgICAgICAgICAgIGdfYXNzZXJ0KHJlbW92ZWRJ
dGVtcyk7CisgICAgICAgICAgICBnX2Fzc2VydF9ub25udWxsKHJlbW92ZWRJdGVtcyk7CiAgICAg
ICAgICAgICBmb3IgKEdMaXN0KiBpdGVyID0gcmVtb3ZlZEl0ZW1zOyBpdGVyOyBpdGVyID0gaXRl
ci0+bmV4dCkgewotICAgICAgICAgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19CQUNLX0ZPUldB
UkRfTElTVF9JVEVNKGl0ZXItPmRhdGEpKTsKKyAgICAgICAgICAgICAgICBnX2Fzc2VydF90cnVl
KFdFQktJVF9JU19CQUNLX0ZPUldBUkRfTElTVF9JVEVNKGl0ZXItPmRhdGEpKTsKICAgICAgICAg
ICAgICAgICBpZiAodGVzdC0+bV9leHBlY3RlZFJlbW92ZWRJdGVtcykKLSAgICAgICAgICAgICAg
ICAgICAgZ19hc3NlcnQoZ19saXN0X2ZpbmQodGVzdC0+bV9leHBlY3RlZFJlbW92ZWRJdGVtcywg
aXRlci0+ZGF0YSkpOworICAgICAgICAgICAgICAgICAgICBnX2Fzc2VydF9ub25udWxsKGdfbGlz
dF9maW5kKHRlc3QtPm1fZXhwZWN0ZWRSZW1vdmVkSXRlbXMsIGl0ZXItPmRhdGEpKTsKICAgICAg
ICAgICAgIH0KIAogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGdfYXNzZXJ0KCFyZW1vdmVk
SXRlbXMpOworICAgICAgICAgICAgZ19hc3NlcnRfbnVsbChyZW1vdmVkSXRlbXMpOwogICAgIH0K
IAogICAgIEJhY2tGb3J3YXJkTGlzdFRlc3QoKQpAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIG1faGFzQ2hhbmdlZCA9IGZhbHNlOwogICAgICAgICBXZWJWaWV3VGVz
dDo6d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgICAgIGdfYXNzZXJ0KG1faGFzQ2hhbmdl
ZCk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUobV9oYXNDaGFuZ2VkKTsKICAgICB9CiAKICAgICB2
b2lkIHdhaXRVbnRpbExvYWRGaW5pc2hlZEFuZENoZWNrUmVtb3ZlZEl0ZW1zKEdMaXN0KiByZW1v
dmVkSXRlbXMpCkBAIC0xNTQsNjYgKzE1NCw2NiBAQCBzdGF0aWMgdm9pZCB0ZXN0QmFja0Zvcndh
cmRMaXN0TmF2aWdhdGlvbihCYWNrRm9yd2FyZExpc3RUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludAog
ewogICAgIFdlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW1zWzFdOwogCi0gICAgZ19hc3Nl
cnQoIXdlYmtpdF93ZWJfdmlld19jYW5fZ29fYmFjayh0ZXN0LT5tX3dlYlZpZXcpKTsKLSAgICBn
X2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJkKHRlc3QtPm1fd2ViVmlldykp
OworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19jYW5fZ29fYmFjayh0ZXN0LT5t
X3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2Zv
cndhcmQodGVzdC0+bV93ZWJWaWV3KSk7CiAKICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9i
YWNrX2ZvcndhcmRfbGlzdF9nZXRfbGVuZ3RoKHRlc3QtPm1fbGlzdCksID09LCAwKTsKLSAgICBn
X2Fzc2VydCghd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9jdXJyZW50X2l0ZW0odGVzdC0+
bV9saXN0KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfYmFj
a19pdGVtKHRlc3QtPm1fbGlzdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfYmFja19mb3J3YXJk
X2xpc3RfZ2V0X2ZvcndhcmRfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKKyAgICBnX2Fzc2VydF9udWxs
KHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfY3VycmVudF9pdGVtKHRlc3QtPm1fbGlzdCkp
OworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2l0
ZW0odGVzdC0+bV9saXN0KSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfYmFja19mb3J3YXJk
X2xpc3RfZ2V0X2ZvcndhcmRfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKICAgICBCYWNrRm9yd2FyZExp
c3RUZXN0OjpjaGVja0l0ZW1JbmRleCh0ZXN0LT5tX2xpc3QpOwotICAgIGdfYXNzZXJ0KCF3ZWJr
aXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfbGlzdCh0ZXN0LT5tX2xpc3QpKTsKLSAgICBn
X2Fzc2VydCghd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3YXJkX2xpc3QodGVzdC0+
bV9saXN0KSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0
X2JhY2tfbGlzdCh0ZXN0LT5tX2xpc3QpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9iYWNr
X2ZvcndhcmRfbGlzdF9nZXRfZm9yd2FyZF9saXN0KHRlc3QtPm1fbGlzdCkpOwogCiAgICAgQ1N0
cmluZyB1cmlQYWdlMSA9IGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9QYWdlMSIpOwogICAgIHRl
c3QtPm1fY2hhbmdlZEZsYWdzID0gQmFja0ZvcndhcmRMaXN0VGVzdDo6Q3VycmVudEl0ZW0gfCBC
YWNrRm9yd2FyZExpc3RUZXN0OjpBZGRlZEl0ZW07CiAgICAgdGVzdC0+bG9hZFVSSSh1cmlQYWdl
MS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCi0gICAgZ19h
c3NlcnQoIXdlYmtpdF93ZWJfdmlld19jYW5fZ29fYmFjayh0ZXN0LT5tX3dlYlZpZXcpKTsKLSAg
ICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJkKHRlc3QtPm1fd2ViVmll
dykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19jYW5fZ29fYmFjayh0ZXN0
LT5tX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfY2FuX2dv
X2ZvcndhcmQodGVzdC0+bV93ZWJWaWV3KSk7CiAKICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtp
dF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfbGVuZ3RoKHRlc3QtPm1fbGlzdCksID09LCAxKTsKICAg
ICBXZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtUGFnZTEgPSB3ZWJraXRfYmFja19mb3J3
YXJkX2xpc3RfZ2V0X2N1cnJlbnRfaXRlbSh0ZXN0LT5tX2xpc3QpOwogICAgIEJhY2tGb3J3YXJk
TGlzdFRlc3Q6OmNoZWNrSXRlbShpdGVtUGFnZTEsICJQYWdlMSIsIHVyaVBhZ2UxLmRhdGEoKSwg
dXJpUGFnZTEuZGF0YSgpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0
X2dldF9iYWNrX2l0ZW0odGVzdC0+bV9saXN0KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9iYWNr
X2ZvcndhcmRfbGlzdF9nZXRfZm9yd2FyZF9pdGVtKHRlc3QtPm1fbGlzdCkpOworICAgIGdfYXNz
ZXJ0X251bGwod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2l0ZW0odGVzdC0+bV9s
aXN0KSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2Zv
cndhcmRfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKICAgICBCYWNrRm9yd2FyZExpc3RUZXN0OjpjaGVj
a0l0ZW1JbmRleCh0ZXN0LT5tX2xpc3QpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfYmFja19mb3J3
YXJkX2xpc3RfZ2V0X2JhY2tfbGlzdCh0ZXN0LT5tX2xpc3QpKTsKLSAgICBnX2Fzc2VydCghd2Vi
a2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3YXJkX2xpc3QodGVzdC0+bV9saXN0KSk7Cisg
ICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfbGlzdCh0
ZXN0LT5tX2xpc3QpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlz
dF9nZXRfZm9yd2FyZF9saXN0KHRlc3QtPm1fbGlzdCkpOwogCiAgICAgQ1N0cmluZyB1cmlQYWdl
MiA9IGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9QYWdlMiIpOwogICAgIHRlc3QtPm1fY2hhbmdl
ZEZsYWdzID0gQmFja0ZvcndhcmRMaXN0VGVzdDo6Q3VycmVudEl0ZW0gfCBCYWNrRm9yd2FyZExp
c3RUZXN0OjpBZGRlZEl0ZW07CiAgICAgdGVzdC0+bG9hZFVSSSh1cmlQYWdlMi5kYXRhKCkpOwog
ICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCi0gICAgZ19hc3NlcnQod2Via2l0
X3dlYl92aWV3X2Nhbl9nb19iYWNrKHRlc3QtPm1fd2ViVmlldykpOwotICAgIGdfYXNzZXJ0KCF3
ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2ZvcndhcmQodGVzdC0+bV93ZWJWaWV3KSk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2JhY2sodGVzdC0+bV93ZWJWaWV3KSk7
CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJkKHRlc3Qt
Pm1fd2ViVmlldykpOwogCiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfYmFja19mb3J3YXJk
X2xpc3RfZ2V0X2xlbmd0aCh0ZXN0LT5tX2xpc3QpLCA9PSwgMik7CiAgICAgV2ViS2l0QmFja0Zv
cndhcmRMaXN0SXRlbSogaXRlbVBhZ2UyID0gd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9j
dXJyZW50X2l0ZW0odGVzdC0+bV9saXN0KTsKICAgICBCYWNrRm9yd2FyZExpc3RUZXN0OjpjaGVj
a0l0ZW0oaXRlbVBhZ2UyLCAiUGFnZTIiLCB1cmlQYWdlMi5kYXRhKCksIHVyaVBhZ2UyLmRhdGEo
KSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2l0ZW0o
dGVzdC0+bV9saXN0KSA9PSBpdGVtUGFnZTEpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfYmFja19m
b3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKKyAgICBnX2Fzc2Vy
dF9jbXBoZXgod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2l0ZW0odGVzdC0+bV9s
aXN0KSwgPT0sIGl0ZW1QYWdlMSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfYmFja19mb3J3
YXJkX2xpc3RfZ2V0X2ZvcndhcmRfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKICAgICBCYWNrRm9yd2Fy
ZExpc3RUZXN0OjpjaGVja0l0ZW1JbmRleCh0ZXN0LT5tX2xpc3QpOwogICAgIGl0ZW1zWzBdID0g
aXRlbVBhZ2UxOwogICAgIEJhY2tGb3J3YXJkTGlzdFRlc3Q6OmNoZWNrTGlzdCh0ZXN0LT5tX2xp
c3QsIEJhY2tGb3J3YXJkTGlzdFRlc3Q6OkJhY2t3YXJkLCBpdGVtcywgMSk7Ci0gICAgZ19hc3Nl
cnQoIXdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfZm9yd2FyZF9saXN0KHRlc3QtPm1fbGlz
dCkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3
YXJkX2xpc3QodGVzdC0+bV9saXN0KSk7CiAKICAgICB0ZXN0LT5tX2NoYW5nZWRGbGFncyA9IEJh
Y2tGb3J3YXJkTGlzdFRlc3Q6OkN1cnJlbnRJdGVtOwogICAgIHRlc3QtPmdvQmFjaygpOwogICAg
IHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCi0gICAgZ19hc3NlcnQoIXdlYmtpdF93
ZWJfdmlld19jYW5fZ29fYmFjayh0ZXN0LT5tX3dlYlZpZXcpKTsKLSAgICBnX2Fzc2VydCh3ZWJr
aXRfd2ViX3ZpZXdfY2FuX2dvX2ZvcndhcmQodGVzdC0+bV93ZWJWaWV3KSk7CisgICAgZ19hc3Nl
cnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrKHRlc3QtPm1fd2ViVmlldykpOwor
ICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJkKHRlc3QtPm1f
d2ViVmlldykpOwogCiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfYmFja19mb3J3YXJkX2xp
c3RfZ2V0X2xlbmd0aCh0ZXN0LT5tX2xpc3QpLCA9PSwgMik7Ci0gICAgZ19hc3NlcnQoaXRlbVBh
Z2UxID09IHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfY3VycmVudF9pdGVtKHRlc3QtPm1f
bGlzdCkpOworICAgIGdfYXNzZXJ0X2NtcGhleChpdGVtUGFnZTEsID09LCB3ZWJraXRfYmFja19m
b3J3YXJkX2xpc3RfZ2V0X2N1cnJlbnRfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKICAgICBCYWNrRm9y
d2FyZExpc3RUZXN0OjpjaGVja0l0ZW0od2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9jdXJy
ZW50X2l0ZW0odGVzdC0+bV9saXN0KSwgIlBhZ2UxIiwgdXJpUGFnZTEuZGF0YSgpLCB1cmlQYWdl
MS5kYXRhKCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2Jh
Y2tfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfYmFja19mb3J3YXJk
X2xpc3RfZ2V0X2ZvcndhcmRfaXRlbSh0ZXN0LT5tX2xpc3QpID09IGl0ZW1QYWdlMik7CisgICAg
Z19hc3NlcnRfbnVsbCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfaXRlbSh0ZXN0
LT5tX2xpc3QpKTsKKyAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0
X2dldF9mb3J3YXJkX2l0ZW0odGVzdC0+bV9saXN0KSwgPT0sIGl0ZW1QYWdlMik7CiAgICAgQmFj
a0ZvcndhcmRMaXN0VGVzdDo6Y2hlY2tJdGVtSW5kZXgodGVzdC0+bV9saXN0KTsKLSAgICBnX2Fz
c2VydCghd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2xpc3QodGVzdC0+bV9saXN0
KSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tf
bGlzdCh0ZXN0LT5tX2xpc3QpKTsKICAgICBpdGVtc1swXSA9IGl0ZW1QYWdlMjsKICAgICBCYWNr
Rm9yd2FyZExpc3RUZXN0OjpjaGVja0xpc3QodGVzdC0+bV9saXN0LCBCYWNrRm9yd2FyZExpc3RU
ZXN0OjpGb3J3YXJkLCBpdGVtcywgMSk7CiAKQEAgLTIyMSwyNCArMjIxLDI0IEBAIHN0YXRpYyB2
b2lkIHRlc3RCYWNrRm9yd2FyZExpc3ROYXZpZ2F0aW9uKEJhY2tGb3J3YXJkTGlzdFRlc3QqIHRl
c3QsIGdjb25zdHBvaW50CiAgICAgdGVzdC0+Z29Gb3J3YXJkKCk7CiAgICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfY2FuX2dv
X2JhY2sodGVzdC0+bV93ZWJWaWV3KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19j
YW5fZ29fZm9yd2FyZCh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtp
dF93ZWJfdmlld19jYW5fZ29fYmFjayh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF9m
YWxzZSh3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2ZvcndhcmQodGVzdC0+bV93ZWJWaWV3KSk7CiAK
ICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfbGVuZ3Ro
KHRlc3QtPm1fbGlzdCksID09LCAyKTsKLSAgICBnX2Fzc2VydChpdGVtUGFnZTIgPT0gd2Via2l0
X2JhY2tfZm9yd2FyZF9saXN0X2dldF9jdXJyZW50X2l0ZW0odGVzdC0+bV9saXN0KSk7CisgICAg
Z19hc3NlcnRfY21waGV4KGl0ZW1QYWdlMiwgPT0sIHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9n
ZXRfY3VycmVudF9pdGVtKHRlc3QtPm1fbGlzdCkpOwogICAgIEJhY2tGb3J3YXJkTGlzdFRlc3Q6
OmNoZWNrSXRlbSh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2N1cnJlbnRfaXRlbSh0ZXN0
LT5tX2xpc3QpLCAiUGFnZTIiLCB1cmlQYWdlMi5kYXRhKCksIHVyaVBhZ2UyLmRhdGEoKSk7Ci0g
ICAgZ19hc3NlcnQod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2l0ZW0odGVzdC0+
bV9saXN0KSA9PSBpdGVtUGFnZTEpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfYmFja19mb3J3YXJk
X2xpc3RfZ2V0X2ZvcndhcmRfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKKyAgICBnX2Fzc2VydF9jbXBo
ZXgod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2l0ZW0odGVzdC0+bV9saXN0KSwg
PT0sIGl0ZW1QYWdlMSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfYmFja19mb3J3YXJkX2xp
c3RfZ2V0X2ZvcndhcmRfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKICAgICBCYWNrRm9yd2FyZExpc3RU
ZXN0OjpjaGVja0l0ZW1JbmRleCh0ZXN0LT5tX2xpc3QpOwogICAgIGl0ZW1zWzBdID0gaXRlbVBh
Z2UxOwogICAgIEJhY2tGb3J3YXJkTGlzdFRlc3Q6OmNoZWNrTGlzdCh0ZXN0LT5tX2xpc3QsIEJh
Y2tGb3J3YXJkTGlzdFRlc3Q6OkJhY2t3YXJkLCBpdGVtcywgMSk7Ci0gICAgZ19hc3NlcnQoIXdl
YmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfZm9yd2FyZF9saXN0KHRlc3QtPm1fbGlzdCkpOwor
ICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3YXJkX2xp
c3QodGVzdC0+bV9saXN0KSk7CiAKICAgICB0ZXN0LT5tX2NoYW5nZWRGbGFncyA9IEJhY2tGb3J3
YXJkTGlzdFRlc3Q6OkN1cnJlbnRJdGVtOwogICAgIHRlc3QtPmdvVG9CYWNrRm9yd2FyZExpc3RJ
dGVtKGl0ZW1QYWdlMSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAg
ICBnX2Fzc2VydChpdGVtUGFnZTEgPT0gd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9jdXJy
ZW50X2l0ZW0odGVzdC0+bV9saXN0KSk7CisgICAgZ19hc3NlcnRfY21waGV4KGl0ZW1QYWdlMSwg
PT0sIHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfY3VycmVudF9pdGVtKHRlc3QtPm1fbGlz
dCkpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0QmFja0ZvcndhcmRMaXN0TGltaXRBbmRDYWNoZShC
YWNrRm9yd2FyZExpc3RUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMjY1LDE2ICsyNjUs
MTYgQEAgc3RhdGljIHZvaWQgdGVzdEJhY2tGb3J3YXJkTGlzdExpbWl0QW5kQ2FjaGUoQmFja0Zv
cndhcmRMaXN0VGVzdCogdGVzdCwgZ2NvbnN0cG8KIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJW
aWV3U2Vzc2lvblN0YXRlKEJhY2tGb3J3YXJkTGlzdFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiB7CiAgICAgV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZSogc3RhdGUgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3Nlc3Npb25fc3RhdGUodGVzdC0+bV93ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChzdGF0
ZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChzdGF0ZSk7CiAgICAgYXV0byB2aWV3ID0gVGVzdDo6
YWRvcHRWaWV3KFRlc3Q6OmNyZWF0ZVdlYlZpZXcoKSk7CiAgICAgV2ViS2l0QmFja0ZvcndhcmRM
aXN0KiBiZkxpc3QgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tfZm9yd2FyZF9saXN0KHZpZXcu
Z2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dl
dF9sZW5ndGgoYmZMaXN0KSwgPT0sIDApOwogICAgIHdlYmtpdF93ZWJfdmlld19yZXN0b3JlX3Nl
c3Npb25fc3RhdGUodmlldy5nZXQoKSwgc3RhdGUpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Vi
a2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9sZW5ndGgoYmZMaXN0KSwgPT0sIDApOwogICAgIEdS
ZWZQdHI8R0J5dGVzPiBkYXRhID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJfdmlld19zZXNzaW9uX3N0
YXRlX3NlcmlhbGl6ZShzdGF0ZSkpOwotICAgIGdfYXNzZXJ0KGRhdGEpOworICAgIGdfYXNzZXJ0
X25vbm51bGwoZGF0YSk7CiAgICAgc3RhdGUgPSB3ZWJraXRfd2ViX3ZpZXdfc2Vzc2lvbl9zdGF0
ZV9uZXcoZGF0YS5nZXQoKSk7Ci0gICAgZ19hc3NlcnQoc3RhdGUpOworICAgIGdfYXNzZXJ0X25v
bm51bGwoc3RhdGUpOwogICAgIHZpZXcgPSBUZXN0OjphZG9wdFZpZXcoVGVzdDo6Y3JlYXRlV2Vi
VmlldygpKTsKICAgICBiZkxpc3QgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2JhY2tfZm9yd2FyZF9s
aXN0KHZpZXcuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2JhY2tfZm9yd2Fy
ZF9saXN0X2dldF9sZW5ndGgoYmZMaXN0KSwgPT0sIDApOwpAQCAtMzAyLDcgKzMwMiw3IEBAIHN0
YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlKEJhY2tGb3J3YXJkTGlzdFRl
c3QqIHRlc3QsIGdjb25zdHBvaW50CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7
CiAKICAgICBzdGF0ZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2Vzc2lvbl9zdGF0ZSh0ZXN0LT5t
X3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KHN0YXRlKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHN0
YXRlKTsKIAogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dl
dF9sZW5ndGgoYmZMaXN0KSwgPT0sIDApOwogICAgIHdlYmtpdF93ZWJfdmlld19yZXN0b3JlX3Nl
c3Npb25fc3RhdGUodmlldy5nZXQoKSwgc3RhdGUpOwpAQCAtMzEzLDEwICszMTMsMTAgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUoQmFja0ZvcndhcmRMaXN0VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnQKICAgICBCYWNrRm9yd2FyZExpc3RUZXN0OjpjaGVja0l0ZW0o
d2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9udGhfaXRlbShiZkxpc3QsIDEpLCAiUGFnZTMi
LCB1cmlQYWdlMy5kYXRhKCksIHVyaVBhZ2UzLmRhdGEoKSk7CiAKICAgICBkYXRhID0gYWRvcHRH
UmVmKHdlYmtpdF93ZWJfdmlld19zZXNzaW9uX3N0YXRlX3NlcmlhbGl6ZShzdGF0ZSkpOwotICAg
IGdfYXNzZXJ0KGRhdGEpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YSk7CiAgICAgd2Via2l0
X3dlYl92aWV3X3Nlc3Npb25fc3RhdGVfdW5yZWYoc3RhdGUpOwogICAgIHN0YXRlID0gd2Via2l0
X3dlYl92aWV3X3Nlc3Npb25fc3RhdGVfbmV3KGRhdGEuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KHN0
YXRlKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHN0YXRlKTsKIAogICAgIHZpZXcgPSBUZXN0Ojph
ZG9wdFZpZXcoVGVzdDo6Y3JlYXRlV2ViVmlldygpKTsKICAgICBiZkxpc3QgPSB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2JhY2tfZm9yd2FyZF9saXN0KHZpZXcuZ2V0KCkpOwpAQCAtMzMxLDcgKzMzMSw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlKEJhY2tGb3J3YXJk
TGlzdFRlc3QqIHRlc3QsIGdjb25zdHBvaW50CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogaW52
YWxpZFNlc3Npb25EYXRhID0gImludmFsaWQgc2Vzc2lvbiBkYXRhIjsKICAgICBkYXRhID0gYWRv
cHRHUmVmKGdfYnl0ZXNfbmV3X3N0YXRpYyhpbnZhbGlkU2Vzc2lvbkRhdGEsIHN0cmxlbihpbnZh
bGlkU2Vzc2lvbkRhdGEpKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19zZXNzaW9u
X3N0YXRlX25ldyhkYXRhLmdldCgpKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2ViX3Zp
ZXdfc2Vzc2lvbl9zdGF0ZV9uZXcoZGF0YS5nZXQoKSkpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0
V2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZVdpdGhGb3JtRGF0YShCYWNrRm9yd2FyZExpc3RUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMzQ2LDE2ICszNDYsMTYgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGVXaXRoRm9ybURhdGEoQmFja0ZvcndhcmRMaXN0
VGVzdCogdGVzdCwKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAogICAgIFdl
YktpdFdlYlZpZXdTZXNzaW9uU3RhdGUqIHN0YXRlID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXNz
aW9uX3N0YXRlKHRlc3QtPm1fd2ViVmlldyk7Ci0gICAgZ19hc3NlcnQoc3RhdGUpOworICAgIGdf
YXNzZXJ0X25vbm51bGwoc3RhdGUpOwogICAgIGF1dG8gdmlldyA9IFRlc3Q6OmFkb3B0VmlldyhU
ZXN0OjpjcmVhdGVXZWJWaWV3KCkpOwogICAgIFdlYktpdEJhY2tGb3J3YXJkTGlzdCogYmZMaXN0
ID0gd2Via2l0X3dlYl92aWV3X2dldF9iYWNrX2ZvcndhcmRfbGlzdCh2aWV3LmdldCgpKTsKICAg
ICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfbGVuZ3RoKGJm
TGlzdCksID09LCAwKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfcmVzdG9yZV9zZXNzaW9uX3N0YXRl
KHZpZXcuZ2V0KCksIHN0YXRlKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9iYWNrX2Zv
cndhcmRfbGlzdF9nZXRfbGVuZ3RoKGJmTGlzdCksID09LCAyKTsKICAgICBHUmVmUHRyPEdCeXRl
cz4gZGF0YSA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX3ZpZXdfc2Vzc2lvbl9zdGF0ZV9zZXJpYWxp
emUoc3RhdGUpKTsKLSAgICBnX2Fzc2VydChkYXRhKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRh
dGEpOwogICAgIHN0YXRlID0gd2Via2l0X3dlYl92aWV3X3Nlc3Npb25fc3RhdGVfbmV3KGRhdGEu
Z2V0KCkpOwotICAgIGdfYXNzZXJ0KHN0YXRlKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHN0YXRl
KTsKICAgICB2aWV3ID0gVGVzdDo6YWRvcHRWaWV3KFRlc3Q6OmNyZWF0ZVdlYlZpZXcoKSk7CiAg
ICAgYmZMaXN0ID0gd2Via2l0X3dlYl92aWV3X2dldF9iYWNrX2ZvcndhcmRfbGlzdCh2aWV3Lmdl
dCgpKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRf
bGVuZ3RoKGJmTGlzdCksID09LCAwKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29uc29sZU1lc3NhZ2UuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb25zb2xlTWVzc2FnZS5jcHAKaW5kZXggODY4MTQ5
M2MxN2NjOGQ3NTFmZTdkYmI5Y2Y1MWE2NmMwNzU5NjBlZi4uODc4YTFjNjRkZTFkOTJlMjU1ZTUy
NzhhMjQxMjliYjQyYzBhNTFiMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RDb25zb2xlTWVzc2FnZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb25zb2xlTWVzc2FnZS5jcHAKQEAgLTQ3LDEwICs0
NywxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBjb25zb2xlTWVzc2FnZVJlY2VpdmVk
Q2FsbGJhY2soV2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyKiwgV2ViS2l0SmF2YXNjcmlwdFJlc3Vs
dCogbWVzc2FnZSwgQ29uc29sZU1lc3NhZ2VUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAgZ19h
c3NlcnQobWVzc2FnZSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobWVzc2FnZSk7CiAgICAg
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gbWVzc2FnZVN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlw
dFJlc3VsdFRvQ1N0cmluZyhtZXNzYWdlKSk7CiAgICAgICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZh
cmlhbnQgPSBnX3ZhcmlhbnRfcGFyc2UoR19WQVJJQU5UX1RZUEUoIih1dXN1cykiKSwgbWVzc2Fn
ZVN0cmluZy5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgIGdfYXNz
ZXJ0KHZhcmlhbnQuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKHZhcmlhbnQuZ2V0
KCkpOwogCiAgICAgICAgIHVuc2lnbmVkIHNvdXJjZSwgbGV2ZWwsIGxpbmVOdW1iZXI7CiAgICAg
ICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2VUZXh0OwpAQCAtODYsMzEgKzg2LDMxIEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJLaXRDb25zb2xlTWVzc2FnZUNvbnNvbGVBUEkoQ29uc29sZU1lc3NhZ2VUZXN0
KiB0ZXN0LCBnY29uc3RwCiAgICAgQ29uc29sZU1lc3NhZ2VUZXN0OjpDb25zb2xlTWVzc2FnZSBy
ZWZlcmVuY2VNZXNzYWdlID0geyBDb25zb2xlTWVzc2FnZVRlc3Q6Ok1lc3NhZ2VTb3VyY2U6OkNv
bnNvbGVBUEksIENvbnNvbGVNZXNzYWdlVGVzdDo6TWVzc2FnZUxldmVsOjpMb2csICJMb2cgQ29u
c29sZSBNZXNzYWdlIiwgMSwgImh0dHA6Ly9mb28uY29tL2JhciIgfTsKICAgICB0ZXN0LT5sb2Fk
SHRtbCgiPGh0bWw+PGJvZHkgb25sb2FkPSdjb25zb2xlLmxvZyhcIkxvZyBDb25zb2xlIE1lc3Nh
Z2VcIik7Jz48L2JvZHk+PC9odG1sPiIsICJodHRwOi8vZm9vLmNvbS9iYXIiKTsKICAgICB0ZXN0
LT53YWl0VW50aWxDb25zb2xlTWVzc2FnZVJlY2VpdmVkKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+
bV9jb25zb2xlTWVzc2FnZSA9PSByZWZlcmVuY2VNZXNzYWdlKTsKKyAgICBnX2Fzc2VydF90cnVl
KHRlc3QtPm1fY29uc29sZU1lc3NhZ2UgPT0gcmVmZXJlbmNlTWVzc2FnZSk7CiAKICAgICByZWZl
cmVuY2VNZXNzYWdlLmxldmVsID0gQ29uc29sZU1lc3NhZ2VUZXN0OjpNZXNzYWdlTGV2ZWw6Oklu
Zm87CiAgICAgcmVmZXJlbmNlTWVzc2FnZS5tZXNzYWdlID0gIkluZm8gQ29uc29sZSBNZXNzYWdl
IjsKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHkgb25sb2FkPSdjb25zb2xlLmluZm8o
XCJJbmZvIENvbnNvbGUgTWVzc2FnZVwiKTsnPjwvYm9keT48L2h0bWw+IiwgImh0dHA6Ly9mb28u
Y29tL2JhciIpOwogICAgIHRlc3QtPndhaXRVbnRpbENvbnNvbGVNZXNzYWdlUmVjZWl2ZWQoKTsK
LSAgICBnX2Fzc2VydCh0ZXN0LT5tX2NvbnNvbGVNZXNzYWdlID09IHJlZmVyZW5jZU1lc3NhZ2Up
OworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9jb25zb2xlTWVzc2FnZSA9PSByZWZlcmVuY2VN
ZXNzYWdlKTsKIAogICAgIHJlZmVyZW5jZU1lc3NhZ2UubGV2ZWwgPSBDb25zb2xlTWVzc2FnZVRl
c3Q6Ok1lc3NhZ2VMZXZlbDo6V2FybmluZzsKICAgICByZWZlcmVuY2VNZXNzYWdlLm1lc3NhZ2Ug
PSAiV2FybmluZyBDb25zb2xlIE1lc3NhZ2UiOwogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48
Ym9keSBvbmxvYWQ9J2NvbnNvbGUud2FybihcIldhcm5pbmcgQ29uc29sZSBNZXNzYWdlXCIpOyc+
PC9ib2R5PjwvaHRtbD4iLCAiaHR0cDovL2Zvby5jb20vYmFyIik7CiAgICAgdGVzdC0+d2FpdFVu
dGlsQ29uc29sZU1lc3NhZ2VSZWNlaXZlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fY29uc29s
ZU1lc3NhZ2UgPT0gcmVmZXJlbmNlTWVzc2FnZSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5t
X2NvbnNvbGVNZXNzYWdlID09IHJlZmVyZW5jZU1lc3NhZ2UpOwogCiAgICAgcmVmZXJlbmNlTWVz
c2FnZS5sZXZlbCA9IENvbnNvbGVNZXNzYWdlVGVzdDo6TWVzc2FnZUxldmVsOjpFcnJvcjsKICAg
ICByZWZlcmVuY2VNZXNzYWdlLm1lc3NhZ2UgPSAiRXJyb3IgQ29uc29sZSBNZXNzYWdlIjsKICAg
ICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHkgb25sb2FkPSdjb25zb2xlLmVycm9yKFwiRXJy
b3IgQ29uc29sZSBNZXNzYWdlXCIpOyc+PC9ib2R5PjwvaHRtbD4iLCAiaHR0cDovL2Zvby5jb20v
YmFyIik7CiAgICAgdGVzdC0+d2FpdFVudGlsQ29uc29sZU1lc3NhZ2VSZWNlaXZlZCgpOwotICAg
IGdfYXNzZXJ0KHRlc3QtPm1fY29uc29sZU1lc3NhZ2UgPT0gcmVmZXJlbmNlTWVzc2FnZSk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2NvbnNvbGVNZXNzYWdlID09IHJlZmVyZW5jZU1lc3Nh
Z2UpOwogCiAgICAgcmVmZXJlbmNlTWVzc2FnZS5sZXZlbCA9IENvbnNvbGVNZXNzYWdlVGVzdDo6
TWVzc2FnZUxldmVsOjpEZWJ1ZzsKICAgICByZWZlcmVuY2VNZXNzYWdlLm1lc3NhZ2UgPSAiRGVi
dWcgQ29uc29sZSBNZXNzYWdlIjsKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHkgb25s
b2FkPSdjb25zb2xlLmRlYnVnKFwiRGVidWcgQ29uc29sZSBNZXNzYWdlXCIpOyc+PC9ib2R5Pjwv
aHRtbD4iLCAiaHR0cDovL2Zvby5jb20vYmFyIik7CiAgICAgdGVzdC0+d2FpdFVudGlsQ29uc29s
ZU1lc3NhZ2VSZWNlaXZlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fY29uc29sZU1lc3NhZ2Ug
PT0gcmVmZXJlbmNlTWVzc2FnZSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2NvbnNvbGVN
ZXNzYWdlID09IHJlZmVyZW5jZU1lc3NhZ2UpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0
Q29uc29sZU1lc3NhZ2VKYXZhU2NyaXB0RXhjZXB0aW9uKENvbnNvbGVNZXNzYWdlVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vi
S2l0Q29uc29sZU1lc3NhZ2VKYXZhU2NyaXB0RXhjZXB0aW9uKENvbnNvbGVNZXNzYWdlVGVzdCog
dGVzdAogICAgICAgICAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGZvbyIs
IDEsICJodHRwOi8vZm9vLmNvbS9iYXIiIH07CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxi
b2R5IG9ubG9hZD0nZm9vKCknPjwvYm9keT48L2h0bWw+IiwgImh0dHA6Ly9mb28uY29tL2JhciIp
OwogICAgIHRlc3QtPndhaXRVbnRpbENvbnNvbGVNZXNzYWdlUmVjZWl2ZWQoKTsKLSAgICBnX2Fz
c2VydCh0ZXN0LT5tX2NvbnNvbGVNZXNzYWdlID09IHJlZmVyZW5jZU1lc3NhZ2UpOworICAgIGdf
YXNzZXJ0X3RydWUodGVzdC0+bV9jb25zb2xlTWVzc2FnZSA9PSByZWZlcmVuY2VNZXNzYWdlKTsK
IH0KIAogc3RhdGljIHZvaWQgdGVzdFdlYktpdENvbnNvbGVNZXNzYWdlTmV0d29ya0Vycm9yKENv
bnNvbGVNZXNzYWdlVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTEyOCw3ICsxMjgsNyBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0Q29uc29sZU1lc3NhZ2VOZXR3b3JrRXJyb3IoQ29uc29s
ZU1lc3NhZ2VUZXN0KiB0ZXN0LCBnY29ucwogICAgICAgICAiRmFpbGVkIHRvIGxvYWQgcmVzb3Vy
Y2U6IFRoZSByZXNvdXJjZSBhdCDigJwvb3JnL3dlYmtpdC9nbGliL3Rlc3RzL25vdC1mb3VuZC5j
c3PigJ0gZG9lcyBub3QgZXhpc3QiLCAwLCAicmVzb3VyY2U6Ly8vb3JnL3dlYmtpdC9nbGliL3Rl
c3RzL25vdC1mb3VuZC5jc3MiIH07CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxoZWFkPjxs
aW5rIHJlbD0nc3R5bGVzaGVldCcgaHJlZj0nbm90LWZvdW5kLmNzcycgdHlwZT0ndGV4dC9jc3Mn
PjwvaGVhZD48Ym9keT48L2JvZHk+PC9odG1sPiIsICJyZXNvdXJjZTovLy9vcmcvd2Via2l0L2ds
aWIvdGVzdHMvIik7CiAgICAgdGVzdC0+d2FpdFVudGlsQ29uc29sZU1lc3NhZ2VSZWNlaXZlZCgp
OwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fY29uc29sZU1lc3NhZ2UgPT0gcmVmZXJlbmNlTWVzc2Fn
ZSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2NvbnNvbGVNZXNzYWdlID09IHJlZmVyZW5j
ZU1lc3NhZ2UpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0Q29uc29sZU1lc3NhZ2VTZWN1
cml0eUVycm9yKENvbnNvbGVNZXNzYWdlVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTEz
Nyw3ICsxMzcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0Q29uc29sZU1lc3NhZ2VTZWN1cml0
eUVycm9yKENvbnNvbGVNZXNzYWdlVGVzdCogdGVzdCwgZ2NvbgogICAgICAgICAiTm90IGFsbG93
ZWQgdG8gbG9hZCBsb2NhbCByZXNvdXJjZTogZmlsZTovLy9mb28vYmFyL3NvdXJjZS5wbmciLCAx
LCAiaHR0cDovL2Zvby5jb20vYmFyIiB9OwogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9k
eT48aW1nIHNyYz1cImZpbGU6Ly8vZm9vL2Jhci9zb3VyY2UucG5nXCIvPjwvYm9keT48L2h0bWw+
IiwgImh0dHA6Ly9mb28uY29tL2JhciIpOwogICAgIHRlc3QtPndhaXRVbnRpbENvbnNvbGVNZXNz
YWdlUmVjZWl2ZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2NvbnNvbGVNZXNzYWdlID09IHJl
ZmVyZW5jZU1lc3NhZ2UpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9jb25zb2xlTWVzc2Fn
ZSA9PSByZWZlcmVuY2VNZXNzYWdlKTsKIH0KIAogdm9pZCBiZWZvcmVBbGwoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5hZ2Vy
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29va2llTWFu
YWdlci5jcHAKaW5kZXggYjA1MTQ1MjRmNzI1OTFmNmNiNTAyOTExMDMxYjdiZmE4YTNhZmEwNy4u
MTBkZmE2ZmM4ZWJiNTVlNmM3YWRjNjYwODhkZGQyMjFjYjkzYzEwYSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5hZ2VyLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFn
ZXIuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBXZWJWaWV3VGVzdCgp
CiAgICAgICAgICwgbV9jb29raWVNYW5hZ2VyKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfY29va2ll
X21hbmFnZXIod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KG1fd2ViVmlldykpKQogICAgIHsK
LSAgICAgICAgZ19hc3NlcnQod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9jb29raWVf
bWFuYWdlcih3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYmtp
dF93ZWJfdmlld19nZXRfY29udGV4dChtX3dlYlZpZXcpKSkgPT0gbV9jb29raWVNYW5hZ2VyKTsK
KyAgICAgICAgZ19hc3NlcnRfY21waGV4KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRf
Y29va2llX21hbmFnZXIod2Via2l0X3dlYl9jb250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdl
cih3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQobV93ZWJWaWV3KSkpLCA9PSwgbV9jb29raWVN
YW5hZ2VyKTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX2Nvb2tpZU1hbmFnZXIsICJjaGFu
Z2VkIiwgR19DQUxMQkFDSyhjb29raWVzQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CiAgICAgfQog
CkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEdVbmlxdWVPdXRQdHI8
R0Vycm9yPiBlcnJvcjsKICAgICAgICAgV2ViS2l0Q29va2llQWNjZXB0UG9saWN5IHBvbGljeSA9
IHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfYWNjZXB0X3BvbGljeV9maW5pc2goV0VCS0lUX0NP
T0tJRV9NQU5BR0VSKG9iamVjdCksIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKTsKLSAgICAgICAg
Z19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3Iu
Z2V0KCkpOwogCiAgICAgICAgIENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8
Q29va2llTWFuYWdlclRlc3QqPih1c2VyRGF0YSk7CiAgICAgICAgIHRlc3QtPm1fYWNjZXB0UG9s
aWN5ID0gcG9saWN5OwpAQCAtMTE4LDggKzExOCw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgYm9vbCBhZGRlZCA9IHdlYmtp
dF9jb29raWVfbWFuYWdlcl9hZGRfY29va2llX2ZpbmlzaChXRUJLSVRfQ09PS0lFX01BTkFHRVIo
b2JqZWN0KSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwotICAgICAgICBnX2Fzc2VydCghZXJy
b3IuZ2V0KCkpOwotICAgICAgICBnX2Fzc2VydChhZGRlZCk7CisgICAgICAgIGdfYXNzZXJ0X25v
X2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShhZGRlZCk7CiAKICAg
ICAgICAgQ29va2llTWFuYWdlclRlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxDb29raWVNYW5hZ2Vy
VGVzdCo+KHVzZXJEYXRhKTsKICAgICAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5M
b29wKTsKQEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIEdMaXN0KiBjb29raWVzID0gd2Via2l0X2Nv
b2tpZV9tYW5hZ2VyX2dldF9jb29raWVzX2ZpbmlzaChXRUJLSVRfQ09PS0lFX01BTkFHRVIob2Jq
ZWN0KSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwotICAgICAgICBnX2Fzc2VydCghZXJyb3Iu
Z2V0KCkpOworICAgICAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAKICAgICAg
ICAgQ29va2llTWFuYWdlclRlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxDb29raWVNYW5hZ2VyVGVz
dCo+KHVzZXJEYXRhKTsKICAgICAgICAgdGVzdC0+bV9jb29raWVzID0gY29va2llczsKQEAgLTE1
Niw4ICsxNTYsOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJv
cj4gZXJyb3I7CiAgICAgICAgIGJvb2wgZGVsZXRlZCA9IHdlYmtpdF9jb29raWVfbWFuYWdlcl9k
ZWxldGVfY29va2llX2ZpbmlzaChXRUJLSVRfQ09PS0lFX01BTkFHRVIob2JqZWN0KSwgcmVzdWx0
LCAmZXJyb3Iub3V0UHRyKCkpOwotICAgICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwotICAg
ICAgICBnX2Fzc2VydChkZWxldGVkKTsKKyAgICAgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3Iu
Z2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKGRlbGV0ZWQpOwogCiAgICAgICAgIENvb2tp
ZU1hbmFnZXJUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q29va2llTWFuYWdlclRlc3QqPih1c2Vy
RGF0YSk7CiAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CkBAIC0x
ODAsNyArMTgwLDcgQEAgcHVibGljOgogICAgICAgICBHX0dOVUNfQkVHSU5fSUdOT1JFX0RFUFJF
Q0FUSU9OUzsKICAgICAgICAgY2hhcioqIGRvbWFpbnMgPSB3ZWJraXRfY29va2llX21hbmFnZXJf
Z2V0X2RvbWFpbnNfd2l0aF9jb29raWVzX2ZpbmlzaChXRUJLSVRfQ09PS0lFX01BTkFHRVIob2Jq
ZWN0KSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwogICAgICAgICBHX0dOVUNfRU5EX0lHTk9S
RV9ERVBSRUNBVElPTlM7Ci0gICAgICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CisgICAgICAg
IGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKIAogICAgICAgICBDb29raWVNYW5hZ2Vy
VGVzdCogdGVzdCA9IHN0YXRpY19jYXN0PENvb2tpZU1hbmFnZXJUZXN0Kj4odXNlckRhdGEpOwog
ICAgICAgICB0ZXN0LT5tX2RvbWFpbnMgPSBkb21haW5zOwpAQCAtMjUyLDcgKzI1Miw3IEBAIHN0
YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2VyQWNjZXB0UG9saWN5KENvb2tpZU1hbmFnZXJUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyCiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklG
b3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZp
bmlzaGVkKCk7CiAgICAgY2hhcioqIGRvbWFpbnMgPSB0ZXN0LT5nZXREb21haW5zKCk7Ci0gICAg
Z19hc3NlcnQoZG9tYWlucyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkb21haW5zKTsKICAgICBn
X2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChkb21haW5zKSwgPT0sIDEpOwogICAgIGdfYXNz
ZXJ0X2NtcHN0cihkb21haW5zWzBdLCA9PSwga0ZpcnN0UGFydHlEb21haW4pOwogICAgIHRlc3Qt
PmRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTI2MiwxMCArMjYyLDEwIEBAIHN0YXRpYyB2b2lkIHRl
c3RDb29raWVNYW5hZ2VyQWNjZXB0UG9saWN5KENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyCiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaW5k
ZXguaHRtbCIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAg
ICAgZG9tYWlucyA9IHRlc3QtPmdldERvbWFpbnMoKTsKLSAgICBnX2Fzc2VydChkb21haW5zKTsK
KyAgICBnX2Fzc2VydF9ub25udWxsKGRvbWFpbnMpOwogICAgIGdfYXNzZXJ0X2NtcGludChnX3N0
cnZfbGVuZ3RoKGRvbWFpbnMpLCA9PSwgMik7Ci0gICAgZ19hc3NlcnQodGVzdC0+aGFzRG9tYWlu
KGtGaXJzdFBhcnR5RG9tYWluKSk7Ci0gICAgZ19hc3NlcnQodGVzdC0+aGFzRG9tYWluKGtUaGly
ZFBhcnR5RG9tYWluKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5oYXNEb21haW4oa0ZpcnN0
UGFydHlEb21haW4pKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmhhc0RvbWFpbihrVGhpcmRQ
YXJ0eURvbWFpbikpOwogICAgIHRlc3QtPmRlbGV0ZUFsbENvb2tpZXMoKTsKIAogICAgIHRlc3Qt
PnNldEFjY2VwdFBvbGljeShXRUJLSVRfQ09PS0lFX1BPTElDWV9BQ0NFUFRfTkVWRVIpOwpAQCAt
MjczLDcgKzI3Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2VyQWNjZXB0UG9saWN5
KENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyCiAgICAgdGVzdC0+bG9hZFVS
SShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CiAgICAgdGVz
dC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAgZG9tYWlucyA9IHRlc3QtPmdldERvbWFp
bnMoKTsKLSAgICBnX2Fzc2VydChkb21haW5zKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRvbWFp
bnMpOwogICAgIGdfYXNzZXJ0X2NtcGludChnX3N0cnZfbGVuZ3RoKGRvbWFpbnMpLCA9PSwgMCk7
CiB9CiAKQEAgLTUyMCwxOSArNTIwLDE5IEBAIHN0YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2Vy
RGVsZXRlQ29va2llcyhDb29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlCiAKIHN0
YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2VyQ29va2llc0NoYW5nZWQoQ29va2llTWFuYWdlclRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1fY29va2ll
c0NoYW5nZWQpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPm1fY29va2llc0NoYW5nZWQpOwog
ICAgIHRlc3QtPnNldEFjY2VwdFBvbGljeShXRUJLSVRfQ09PS0lFX1BPTElDWV9BQ0NFUFRfQUxX
QVlTKTsKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbmRleC5o
dG1sIikuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLSAgICBn
X2Fzc2VydCh0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3Qt
Pm1fY29va2llc0NoYW5nZWQpOwogCiAgICAgdGVzdC0+ZGVsZXRlQ29va2llc0ZvckRvbWFpbihr
Rmlyc3RQYXJ0eURvbWFpbik7CiAgICAgdGVzdC0+d2FpdFVudGlsQ29va2llc0NoYW5nZWQoKTsK
LSAgICBnX2Fzc2VydCh0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkKTsKKyAgICBnX2Fzc2VydF90cnVl
KHRlc3QtPm1fY29va2llc0NoYW5nZWQpOwogCiAgICAgdGVzdC0+ZGVsZXRlQWxsQ29va2llcygp
OwogICAgIHRlc3QtPndhaXRVbnRpbENvb2tpZXNDaGFuZ2VkKCk7Ci0gICAgZ19hc3NlcnQodGVz
dC0+bV9jb29raWVzQ2hhbmdlZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2Nvb2tpZXND
aGFuZ2VkKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdENvb2tpZU1hbmFnZXJQZXJzaXN0ZW50U3Rv
cmFnZShDb29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTU0MiwzNCAr
NTQyLDM0IEBAIHN0YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2VyUGVyc2lzdGVudFN0b3JhZ2Uo
Q29va2llTWFuYWdlclRlc3QqIHRlc3QsIGdjb25zdHBvCiAgICAgLy8gVGV4dCBzdG9yYWdlIHVz
aW5nIGEgbmV3IGZpbGUuCiAgICAgdGVzdC0+c2V0UGVyc2lzdGVudFN0b3JhZ2UoV0VCS0lUX0NP
T0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfVEVYVCk7CiAgICAgY2hhcioqIGRvbWFpbnMgPSB0ZXN0
LT5nZXREb21haW5zKCk7Ci0gICAgZ19hc3NlcnQoZG9tYWlucyk7CisgICAgZ19hc3NlcnRfbm9u
bnVsbChkb21haW5zKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChkb21haW5z
KSwgPT0sIDApOwogCiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIv
aW5kZXguaHRtbCIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7
Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9jb29raWVzQ2hhbmdlZCk7CisgICAgZ19hc3NlcnRfdHJ1
ZSh0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkKTsKICAgICBkb21haW5zID0gdGVzdC0+Z2V0RG9tYWlu
cygpOwotICAgIGdfYXNzZXJ0KGRvbWFpbnMpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZG9tYWlu
cyk7CiAgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9sZW5ndGgoZG9tYWlucyksID09LCAyKTsK
IAogCiAgICAgLy8gU1FMaXRlIHN0b3JhZ2UgdXNpbmcgYSBuZXcgZmlsZS4KICAgICB0ZXN0LT5z
ZXRQZXJzaXN0ZW50U3RvcmFnZShXRUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9TUUxJ
VEUpOwogICAgIGRvbWFpbnMgPSB0ZXN0LT5nZXREb21haW5zKCk7Ci0gICAgZ19hc3NlcnQoZG9t
YWlucyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkb21haW5zKTsKICAgICBnX2Fzc2VydF9jbXBp
bnQoZ19zdHJ2X2xlbmd0aChkb21haW5zKSwgPT0sIDApOwogCiAgICAgdGVzdC0+bG9hZFVSSShr
U2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CiAgICAgdGVzdC0+
d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9jb29raWVzQ2hh
bmdlZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkKTsKICAgICBk
b21haW5zID0gdGVzdC0+Z2V0RG9tYWlucygpOwotICAgIGdfYXNzZXJ0KGRvbWFpbnMpOworICAg
IGdfYXNzZXJ0X25vbm51bGwoZG9tYWlucyk7CiAgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9s
ZW5ndGgoZG9tYWlucyksID09LCAyKTsKIAogICAgIC8vIFRleHQgc3RvcmFnZSB1c2luZyBhbiBl
eGlzdGluZyBmaWxlLgogICAgIHRlc3QtPnNldFBlcnNpc3RlbnRTdG9yYWdlKFdFQktJVF9DT09L
SUVfUEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQpOwogICAgIGRvbWFpbnMgPSB0ZXN0LT5nZXREb21h
aW5zKCk7Ci0gICAgZ19hc3NlcnQoZG9tYWlucyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkb21h
aW5zKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChkb21haW5zKSwgPT0sIDIp
OwogICAgIHRlc3QtPmRlbGV0ZUFsbENvb2tpZXMoKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZ19z
dHJ2X2xlbmd0aCh0ZXN0LT5nZXREb21haW5zKCkpLCA9PSwgMCk7CkBAIC01NzcsNyArNTc3LDcg
QEAgc3RhdGljIHZvaWQgdGVzdENvb2tpZU1hbmFnZXJQZXJzaXN0ZW50U3RvcmFnZShDb29raWVN
YW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG8KICAgICAvLyBTUUxpdGUgc3RvcmFnZSB3aXRoIGFu
IGV4aXN0aW5nIGZpbGUuCiAgICAgdGVzdC0+c2V0UGVyc2lzdGVudFN0b3JhZ2UoV0VCS0lUX0NP
T0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfU1FMSVRFKTsKICAgICBkb21haW5zID0gdGVzdC0+Z2V0
RG9tYWlucygpOwotICAgIGdfYXNzZXJ0KGRvbWFpbnMpOworICAgIGdfYXNzZXJ0X25vbm51bGwo
ZG9tYWlucyk7CiAgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9sZW5ndGgoZG9tYWlucyksID09
LCAyKTsKICAgICB0ZXN0LT5kZWxldGVBbGxDb29raWVzKCk7CiAgICAgZ19hc3NlcnRfY21waW50
KGdfc3Rydl9sZW5ndGgodGVzdC0+Z2V0RG9tYWlucygpKSwgPT0sIDApOwpAQCAtNTkxLDcgKzU5
MSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2VyUGVyc2lzdGVudFN0b3JhZ2VEZWxl
dGVBbGwoQ29va2llTWFuYWdlclRlc3QqIHRlc3QsCiAgICAgdGltZV90IGV4cGlyZXMgPSB0aW1l
KG51bGxwdHIpICsgNjA7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb29raWVzRmlsZUNvbnRlbnRz
KGdfc3RyZHVwX3ByaW50Zihjb29raWVzRmlsZUZvcm1hdCwgZXhwaXJlcywgZXhwaXJlcykpOwog
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29va2llc0ZpbGUoZ19idWlsZF9maWxlbmFtZShUZXN0Ojpk
YXRhRGlyZWN0b3J5KCksICJjb29raWVzLnR4dCIsIG51bGxwdHIpKTsKLSAgICBnX2Fzc2VydChn
X2ZpbGVfc2V0X2NvbnRlbnRzKGNvb2tpZXNGaWxlLmdldCgpLCBjb29raWVzRmlsZUNvbnRlbnRz
LmdldCgpLCAtMSwgbnVsbHB0cikpOworICAgIGdfYXNzZXJ0X3RydWUoZ19maWxlX3NldF9jb250
ZW50cyhjb29raWVzRmlsZS5nZXQoKSwgY29va2llc0ZpbGVDb250ZW50cy5nZXQoKSwgLTEsIG51
bGxwdHIpKTsKIAogICAgIHRlc3QtPnNldFBlcnNpc3RlbnRTdG9yYWdlKFdFQktJVF9DT09LSUVf
UEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQpOwogICAgIHRlc3QtPmRlbGV0ZUFsbENvb2tpZXMoKTsK
QEAgLTYwMiw5ICs2MDIsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29va2llTWFuYWdlclBlcnNpc3Rl
bnRTdG9yYWdlRGVsZXRlQWxsKENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0LAogICAgIHRlc3QtPm1f
Y29va2llc0NoYW5nZWQgPSBmYWxzZTsKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi9uby1jb29raWVzLmh0bWwiKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRp
bExvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkKTsK
KyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkKTsKICAgICBjaGFyKiog
ZG9tYWlucyA9IHRlc3QtPmdldERvbWFpbnMoKTsKLSAgICBnX2Fzc2VydChkb21haW5zKTsKKyAg
ICBnX2Fzc2VydF9ub25udWxsKGRvbWFpbnMpOwogICAgIGdfYXNzZXJ0X2NtcGludChnX3N0cnZf
bGVuZ3RoKGRvbWFpbnMpLCA9PSwgMCk7CiB9CiAKQEAgLTYyMSw3ICs2MjEsNyBAQCBzdGF0aWMg
dm9pZCB0ZXN0Q29va2llTWFuYWdlckVwaGVtZXJhbChDb29raWVNYW5hZ2VyVGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5zZXRBY2NlcHRQb2xpY3koV0VCS0lUX0NPT0tJRV9Q
T0xJQ1lfQUNDRVBUX0FMV0FZUyk7CiAgICAgdGVzdC0+c2V0UGVyc2lzdGVudFN0b3JhZ2UoV0VC
S0lUX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfVEVYVCk7CiAgICAgY2hhcioqIGRvbWFpbnMg
PSB0ZXN0LT5nZXREb21haW5zKCk7Ci0gICAgZ19hc3NlcnQoZG9tYWlucyk7CisgICAgZ19hc3Nl
cnRfbm9ubnVsbChkb21haW5zKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChk
b21haW5zKSwgPT0sIDApOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KGdf
b2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywKQEAgLTYzMSwzMCArNjMxLDMwIEBAIHN0
YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2VyRXBoZW1lcmFsKENvb2tpZU1hbmFnZXJUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAgICAid2ViLWNvbnRleHQiLCB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2NvbnRleHQodGVzdC0+bV93ZWJWaWV3KSwKICAgICAgICAgImlzLWVwaGVtZXJhbCIs
IFRSVUUsCiAgICAgICAgIG51bGxwdHIpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdf
aXNfZXBoZW1lcmFsKHdlYlZpZXcuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9j
b250ZXh0X2lzX2VwaGVtZXJhbCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldy5n
ZXQoKSkpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwo
d2ViVmlldy5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfY29udGV4dF9p
c19lcGhlbWVyYWwod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcuZ2V0KCkpKSk7
CiAKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcuZ2V0KCksICJsb2FkLWNoYW5nZWQiLCBH
X0NBTExCQUNLKGVwaGVtZXJhbFZpZXdsb2FkQ2hhbmdlZCksIHRlc3QpOwogICAgIHdlYmtpdF93
ZWJfdmlld19sb2FkX3VyaSh3ZWJWaWV3LmdldCgpLCBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIv
aW5kZXguaHRtbCIpLmRhdGEoKSk7CiAgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxv
b3ApOwogCiAgICAgZG9tYWlucyA9IHRlc3QtPmdldERvbWFpbnMoKTsKLSAgICBnX2Fzc2VydChk
b21haW5zKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRvbWFpbnMpOwogICAgIGdfYXNzZXJ0X2Nt
cGludChnX3N0cnZfbGVuZ3RoKGRvbWFpbnMpLCA9PSwgMCk7CiAKICAgICBhdXRvKiB2aWV3RGF0
YU1hbmFnZXIgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYlZp
ZXcuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUih2
aWV3RGF0YU1hbmFnZXIpKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19XRUJTSVRFX0RB
VEFfTUFOQUdFUih2aWV3RGF0YU1hbmFnZXIpKTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHZpZXdEYXRhTWFuYWdlcikpOwotICAgIGdf
YXNzZXJ0KHZpZXdEYXRhTWFuYWdlciAhPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyKHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh0ZXN0LT5tX3dlYlZpZXcp
KSk7CisgICAgZ19hc3NlcnRfY21waGV4KHZpZXdEYXRhTWFuYWdlciwgIT0sIHdlYmtpdF93ZWJf
Y29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIod2Via2l0X3dlYl92aWV3X2dldF9jb250
ZXh0KHRlc3QtPm1fd2ViVmlldykpKTsKICAgICBhdXRvKiBjb29raWVNYW5hZ2VyID0gd2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9jb29raWVfbWFuYWdlcih2aWV3RGF0YU1hbmFnZXIp
OwotICAgIGdfYXNzZXJ0KFdFQktJVF9JU19DT09LSUVfTUFOQUdFUihjb29raWVNYW5hZ2VyKSk7
CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfQ09PS0lFX01BTkFHRVIoY29va2llTWFuYWdl
cikpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19P
QkpFQ1QoY29va2llTWFuYWdlcikpOwotICAgIGdfYXNzZXJ0KGNvb2tpZU1hbmFnZXIgIT0gdGVz
dC0+bV9jb29raWVNYW5hZ2VyKTsKKyAgICBnX2Fzc2VydF9jbXBoZXgoY29va2llTWFuYWdlciwg
IT0sIHRlc3QtPm1fY29va2llTWFuYWdlcik7CiAgICAgR19HTlVDX0JFR0lOX0lHTk9SRV9ERVBS
RUNBVElPTlM7CiAgICAgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9kb21haW5zX3dpdGhfY29v
a2llcyhjb29raWVNYW5hZ2VyLCBudWxscHRyLCBbXShHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jl
c3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewogICAgICAgICBhdXRvKiB0ZXN0ID0g
c3RhdGljX2Nhc3Q8Q29va2llTWFuYWdlclRlc3QqPih1c2VyRGF0YSk7CiAgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcio+IGRvbWFpbnMod2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9kb21haW5zX3dp
dGhfY29va2llc19maW5pc2goV0VCS0lUX0NPT0tJRV9NQU5BR0VSKG9iamVjdCksIHJlc3VsdCwg
bnVsbHB0cikpOwotICAgICAgICBnX2Fzc2VydChkb21haW5zKTsKKyAgICAgICAgZ19hc3NlcnRf
bm9ubnVsbChkb21haW5zKTsKICAgICAgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9sZW5ndGgo
ZG9tYWlucy5nZXQoKSksID09LCAxKTsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKGRvbWFpbnMu
Z2V0KClbMF0sID09LCBrRmlyc3RQYXJ0eURvbWFpbik7CiAgICAgICAgIHRlc3QtPnF1aXRNYWlu
TG9vcCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RET01FbGVtZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0RE9NRWxlbWVudC5jcHAKaW5kZXggM2QyODA0NmJmMjQ1NGRkY2M3ZDg4NjQyMTQ4Yjc3
OGViMjhiNmNmZi4uMGI3YmZkYTMyYmNkZDc4MWFlZTJlOWNmZTExMTgwMWQwMTdlNTViZiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RET01FbGVt
ZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERP
TUVsZW1lbnQuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9N
RWxlbWVudEF1dG9GaWxsKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAg
IHN0YXRpYyBjb25zdCBnY2hhciogdGVzdEhUTUwgPSAiPGh0bWw+PGJvZHk+PGZvcm0gYWN0aW9u
PScjJz48aW5wdXQgaWQ9J2F1dG8tZmlsbCc+PC9pbnB1dD48L2Zvcm0+PC9ib2R5PjwvaHRtbD4i
OwotICAgIGdfYXNzZXJ0KHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01FbGVtZW50
IiwgImF1dG8tZmlsbCIsIHRlc3RIVE1MKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5ydW5X
ZWJQcm9jZXNzVGVzdCgiV2ViS2l0RE9NRWxlbWVudCIsICJhdXRvLWZpbGwiLCB0ZXN0SFRNTCkp
OwogfQogCiB2b2lkIGJlZm9yZUFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAKaW5kZXggNTNmZDQyYWVhZGFiMGI0
MDk5MDMwZjgwMGFhY2Y5NjI4Y2I5M2JiZi4uZTkzMzkyZjJiNWRmZmU2YjkzYWFlYmJjOWE3OGQ2
ZDM5ZDM0ZWZlMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3REb3dubG9hZHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0RG93bmxvYWRzLmNwcApAQCAtNDQsMTYgKzQ0LDE2IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyB2b2lkIHJlY2VpdmVkUmVzcG9uc2VDYWxsYmFjayhXZWJLaXREb3dubG9hZCog
ZG93bmxvYWQsIEdQYXJhbVNwZWMqLCBEb3dubG9hZFRlc3QqIHRlc3QpCiAgICAgewotICAgICAg
ICBnX2Fzc2VydCh3ZWJraXRfZG93bmxvYWRfZ2V0X3Jlc3BvbnNlKGRvd25sb2FkKSk7CisgICAg
ICAgIGdfYXNzZXJ0X25vbm51bGwod2Via2l0X2Rvd25sb2FkX2dldF9yZXNwb25zZShkb3dubG9h
ZCkpOwogICAgICAgICB0ZXN0LT5yZWNlaXZlZFJlc3BvbnNlKGRvd25sb2FkKTsKICAgICB9CiAK
ICAgICBzdGF0aWMgdm9pZCBjcmVhdGVkRGVzdGluYXRpb25DYWxsYmFjayhXZWJLaXREb3dubG9h
ZCogZG93bmxvYWQsIGNvbnN0IGdjaGFyKiBkZXN0aW5hdGlvbiwgRG93bmxvYWRUZXN0KiB0ZXN0
KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQod2Via2l0X2Rvd25sb2FkX2dldF9kZXN0aW5hdGlv
bihkb3dubG9hZCkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKHdlYmtpdF9kb3dubG9hZF9n
ZXRfZGVzdGluYXRpb24oZG93bmxvYWQpKTsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtp
dF9kb3dubG9hZF9nZXRfZGVzdGluYXRpb24oZG93bmxvYWQpLCA9PSwgZGVzdGluYXRpb24pOwog
ICAgICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3Vy
aShkZXN0aW5hdGlvbikpOwotICAgICAgICBnX2Fzc2VydChnX2ZpbGVfcXVlcnlfZXhpc3RzKGZp
bGUuZ2V0KCksIG51bGxwdHIpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShnX2ZpbGVfcXVlcnlf
ZXhpc3RzKGZpbGUuZ2V0KCksIG51bGxwdHIpKTsKICAgICAgICAgdGVzdC0+Y3JlYXRlZERlc3Rp
bmF0aW9uKGRvd25sb2FkLCBkZXN0aW5hdGlvbik7CiAgICAgfQogCkBAIC02OSwxMyArNjksMTMg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZmFpbGVkQ2FsbGJhY2soV2ViS2l0RG93bmxv
YWQqIGRvd25sb2FkLCBHRXJyb3IqIGVycm9yLCBEb3dubG9hZFRlc3QqIHRlc3QpCiAgICAgewot
ICAgICAgICBnX2Fzc2VydChlcnJvcik7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoZXJyb3Ip
OwogCiAgICAgICAgIGNvbnN0IGNoYXIqIGRlc3RpbmF0aW9uVVJJID0gd2Via2l0X2Rvd25sb2Fk
X2dldF9kZXN0aW5hdGlvbihkb3dubG9hZCk7CiAgICAgICAgIGlmIChkZXN0aW5hdGlvblVSSSkg
ewogICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiB0ZW1wRmlsZVVSSShnX3N0cmNvbmNhdChk
ZXN0aW5hdGlvblVSSSwgIi53a2Rvd25sb2FkIiwgbnVsbHB0cikpOwogICAgICAgICAgICAgR1Jl
ZlB0cjxHRmlsZT4gdGVtcEZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfdXJpKHRlbXBG
aWxlVVJJLmdldCgpKSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghZ19maWxlX3F1ZXJ5X2V4aXN0
cyh0ZW1wRmlsZS5nZXQoKSwgbnVsbHB0cikpOworICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2Uo
Z19maWxlX3F1ZXJ5X2V4aXN0cyh0ZW1wRmlsZS5nZXQoKSwgbnVsbHB0cikpOwogICAgICAgICB9
CiAKICAgICAgICAgdGVzdC0+ZmFpbGVkKGRvd25sb2FkLCBlcnJvcik7CkBAIC04MywxNCArODMs
MTQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGdib29sZWFuIGRlY2lkZURlc3RpbmF0aW9uQ2Fs
bGJhY2soV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkLCBjb25zdCBnY2hhciogc3VnZ2VzdGVkRmls
ZW5hbWUsIERvd25sb2FkVGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KHN1Z2dl
c3RlZEZpbGVuYW1lKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChzdWdnZXN0ZWRGaWxlbmFt
ZSk7CiAgICAgICAgIHRlc3QtPmRlY2lkZURlc3RpbmF0aW9uKGRvd25sb2FkLCBzdWdnZXN0ZWRG
aWxlbmFtZSk7CiAgICAgICAgIHJldHVybiBUUlVFOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lk
IGRvd25sb2FkU3RhcnRlZENhbGxiYWNrKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYktp
dERvd25sb2FkKiBkb3dubG9hZCwgRG93bmxvYWRUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAg
Z19hc3NlcnQod2Via2l0X2Rvd25sb2FkX2dldF9yZXF1ZXN0KGRvd25sb2FkKSk7CisgICAgICAg
IGdfYXNzZXJ0X25vbm51bGwod2Via2l0X2Rvd25sb2FkX2dldF9yZXF1ZXN0KGRvd25sb2FkKSk7
CiAgICAgICAgIHRlc3QtPnN0YXJ0ZWQoZG93bmxvYWQpOwogICAgICAgICBnX3NpZ25hbF9jb25u
ZWN0KGRvd25sb2FkLCAibm90aWZ5OjpyZXNwb25zZSIsIEdfQ0FMTEJBQ0socmVjZWl2ZWRSZXNw
b25zZUNhbGxiYWNrKSwgdGVzdCk7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QoZG93bmxvYWQs
ICJjcmVhdGVkLWRlc3RpbmF0aW9uIiwgR19DQUxMQkFDSyhjcmVhdGVkRGVzdGluYXRpb25DYWxs
YmFjayksIHRlc3QpOwpAQCAtMTYyLDEyICsxNjIsMTIgQEAgcHVibGljOgogICAgICAgICBHUmVm
UHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX2NvbnRl
eHRfZG93bmxvYWRfdXJpKG1fd2ViQ29udGV4dC5nZXQoKSwgcmVxdWVzdFVSSS5kYXRhKCkpKTsK
ICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChk
b3dubG9hZC5nZXQoKSkpOwogCi0gICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG93bmxvYWRfZ2V0
X2FsbG93X292ZXJ3cml0ZShkb3dubG9hZC5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF9mYWxz
ZSh3ZWJraXRfZG93bmxvYWRfZ2V0X2FsbG93X292ZXJ3cml0ZShkb3dubG9hZC5nZXQoKSkpOwog
ICAgICAgICB3ZWJraXRfZG93bmxvYWRfc2V0X2FsbG93X292ZXJ3cml0ZShkb3dubG9hZC5nZXQo
KSwgbV9hbGxvd092ZXJ3cml0ZSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9kb3dubG9hZF9n
ZXRfYWxsb3dfb3ZlcndyaXRlKGRvd25sb2FkLmdldCgpKSA9PSBtX2FsbG93T3ZlcndyaXRlKTsK
KyAgICAgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9kb3dubG9hZF9nZXRfYWxsb3dfb3Zlcndy
aXRlKGRvd25sb2FkLmdldCgpKSwgPT0sIG1fYWxsb3dPdmVyd3JpdGUpOwogCiAgICAgICAgIFdl
YktpdFVSSVJlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfZG93bmxvYWRfZ2V0X3JlcXVlc3QoZG93
bmxvYWQuZ2V0KCkpOwotICAgICAgICBnX2Fzc2VydChyZXF1ZXN0KTsKKyAgICAgICAgZ19hc3Nl
cnRfbm9ubnVsbChyZXF1ZXN0KTsKICAgICAgICAgQVNTRVJUX0NNUF9DU1RSSU5HKHdlYmtpdF91
cmlfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpLCA9PSwgcmVxdWVzdFVSSSk7CiAKICAgICAgICAg
Z19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwpAQCAtMTk5LDcgKzE5OSw3IEBAIHN0YXRpYyBH
UmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZExvY2FsRmlsZVN1Y2Nlc3NmdWxseShEb3du
bG9hZFRlc3QqIHRlc3QsCiAgICAgR1JlZlB0cjxHRmlsZUluZm8+IHNvdXJjZUluZm8gPSBhZG9w
dEdSZWYoZ19maWxlX3F1ZXJ5X2luZm8oc291cmNlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1NU
QU5EQVJEX1NJWkUsIHN0YXRpY19jYXN0PEdGaWxlUXVlcnlJbmZvRmxhZ3M+KDApLCAwLCAwKSk7
CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzb3VyY2VVUkkoZ19maWxlX2dldF91cmkoc291cmNlLmdl
dCgpKSk7CiAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB0ZXN0LT5kb3du
bG9hZFVSSUFuZFdhaXRVbnRpbEZpbmlzaGVzKHNvdXJjZVVSSS5nZXQoKSk7Ci0gICAgZ19hc3Nl
cnQoIXdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKKyAgICBn
X2Fzc2VydF9udWxsKHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkp
KTsKIAogICAgIFZlY3RvcjxEb3dubG9hZFRlc3Q6OkRvd25sb2FkRXZlbnQ+JiBldmVudHMgPSB0
ZXN0LT5tX2Rvd25sb2FkRXZlbnRzOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgp
LCA9PSwgNSk7CkBAIC0yMTAsMTEgKzIxMCwxMSBAQCBzdGF0aWMgR1JlZlB0cjxXZWJLaXREb3du
bG9hZD4gZG93bmxvYWRMb2NhbEZpbGVTdWNjZXNzZnVsbHkoRG93bmxvYWRUZXN0KiB0ZXN0LAog
ICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbNF0sID09LCBEb3dubG9hZFRlc3Q6OkZpbmlzaGVk
KTsKIAogICAgIFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfZG93bmxvYWRfZ2V0
X3JlcXVlc3QoZG93bmxvYWQuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KHJlcXVlc3QpOworICAgIGdf
YXNzZXJ0X25vbm51bGwocmVxdWVzdCk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF91cmlf
cmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpLCA9PSwgc291cmNlVVJJLmdldCgpKTsKIAogICAgIGdf
YXNzZXJ0X2NtcGludCh0ZXN0LT5tX2Rvd25sb2FkU2l6ZSwgPT0sIGdfZmlsZV9pbmZvX2dldF9z
aXplKHNvdXJjZUluZm8uZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfZG93bmxvYWRfZ2V0
X2Rlc3RpbmF0aW9uKGRvd25sb2FkLmdldCgpKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbCh3ZWJr
aXRfZG93bmxvYWRfZ2V0X2Rlc3RpbmF0aW9uKGRvd25sb2FkLmdldCgpKSk7CiAgICAgZ19hc3Nl
cnRfY21wZmxvYXQod2Via2l0X2Rvd25sb2FkX2dldF9lc3RpbWF0ZWRfcHJvZ3Jlc3MoZG93bmxv
YWQuZ2V0KCkpLCA9PSwgMSk7CiAKICAgICByZXR1cm4gZG93bmxvYWQ7CkBAIC0yMzMsOCArMjMz
LDggQEAgc3RhdGljIHZvaWQgY3JlYXRlRmlsZUF0RGVzdGluYXRpb24oY29uc3QgY2hhciogZmls
ZW5hbWUpCiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zv
cl9wYXRoKHBhdGguZ2V0KCkpKTsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgZ19maWxlX2NyZWF0ZShmaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIG51bGxwdHIs
ICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoIWVycm9yKTsKLSAgICBnX2Fzc2VydChn
X2ZpbGVfcXVlcnlfZXhpc3RzKGZpbGUuZ2V0KCksIG51bGxwdHIpKTsKKyAgICBnX2Fzc2VydF9u
b19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShnX2ZpbGVfcXVlcnlfZXhp
c3RzKGZpbGUuZ2V0KCksIG51bGxwdHIpKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdERvd25sb2Fk
T3ZlcndyaXRlRGVzdGluYXRpb25BbGxvd2VkKERvd25sb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKQEAgLTI3OCw3ICsyNzgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZhaWxlZChXZWJL
aXREb3dubG9hZCogZG93bmxvYWQsIEdFcnJvciogZXJyb3IpCiAgICAgewotICAgICAgICBnX2Fz
c2VydChnX2Vycm9yX21hdGNoZXMoZXJyb3IsIFdFQktJVF9ET1dOTE9BRF9FUlJPUiwgZXhwZWN0
ZWRFcnJvclRvV2ViS2l0RG93bmxvYWRFcnJvcihtX2V4cGVjdGVkRXJyb3IpKSk7CisgICAgICAg
IGdfYXNzZXJ0X2Vycm9yKGVycm9yLCBXRUJLSVRfRE9XTkxPQURfRVJST1IsIGV4cGVjdGVkRXJy
b3JUb1dlYktpdERvd25sb2FkRXJyb3IobV9leHBlY3RlZEVycm9yKSk7CiAgICAgICAgIERvd25s
b2FkVGVzdDo6ZmFpbGVkKGRvd25sb2FkLCBlcnJvcik7CiAgICAgfQogCkBAIC0zMjAsNyArMzIw
LDcgQEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2FkT3ZlcndyaXRlRGVzdGluYXRpb25EaXNhbGxv
d2VkKERvd25sb2FkRXJyb3JUZXN0KiB0ZXN0LAogICAgIEdSZWZQdHI8R0ZpbGU+IHNvdXJjZSA9
IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHNvdXJjZVBhdGguZ2V0KCkpKTsKICAgICBH
VW5pcXVlUHRyPGNoYXI+IHNvdXJjZVVSSShnX2ZpbGVfZ2V0X3VyaShzb3VyY2UuZ2V0KCkpKTsK
ICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHRlc3QtPmRvd25sb2FkVVJJ
QW5kV2FpdFVudGlsRmluaXNoZXMoc291cmNlVVJJLmdldCgpKTsKLSAgICBnX2Fzc2VydCghd2Vi
a2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOworICAgIGdfYXNzZXJ0
X251bGwod2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOwogCiAg
ICAgVmVjdG9yPERvd25sb2FkVGVzdDo6RG93bmxvYWRFdmVudD4mIGV2ZW50cyA9IHRlc3QtPm1f
ZG93bmxvYWRFdmVudHM7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCA0
KTsKQEAgLTMzNyw3ICszMzcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRMb2NhbEZpbGVF
cnJvcihEb3dubG9hZEVycm9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0
LT5tX2V4cGVjdGVkRXJyb3IgPSBEb3dubG9hZEVycm9yVGVzdDo6TmV0d29ya0Vycm9yOwogICAg
IEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gdGVzdC0+ZG93bmxvYWRVUklBbmRX
YWl0VW50aWxGaW5pc2hlcygiZmlsZTovLy9mb28vYmFyIik7Ci0gICAgZ19hc3NlcnQoIXdlYmtp
dF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9u
dWxsKHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKIAogICAg
IFZlY3RvcjxEb3dubG9hZFRlc3Q6OkRvd25sb2FkRXZlbnQ+JiBldmVudHMgPSB0ZXN0LT5tX2Rv
d25sb2FkRXZlbnRzOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgMyk7
CkBAIC0zNTIsNyArMzUyLDcgQEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2FkTG9jYWxGaWxlRXJy
b3IoRG93bmxvYWRFcnJvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgR1JlZlB0cjxH
RmlsZT4gZmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKHBhdGguZ2V0KCkpKTsK
ICAgICBHVW5pcXVlUHRyPGNoYXI+IHVyaShnX2ZpbGVfZ2V0X3VyaShmaWxlLmdldCgpKSk7CiAg
ICAgZG93bmxvYWQgPSB0ZXN0LT5kb3dubG9hZFVSSUFuZFdhaXRVbnRpbEZpbmlzaGVzKHVyaS5n
ZXQoKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxv
YWQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3Zp
ZXcoZG93bmxvYWQuZ2V0KCkpKTsKIAogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgp
LCA9PSwgNCk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1swXSwgPT0sIERvd25sb2FkVGVz
dDo6U3RhcnRlZCk7CkBAIC0zNjUsNyArMzY1LDcgQEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2Fk
TG9jYWxGaWxlRXJyb3IoRG93bmxvYWRFcnJvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAK
ICAgICB0ZXN0LT5tX2V4cGVjdGVkRXJyb3IgPSBEb3dubG9hZEVycm9yVGVzdDo6RG93bmxvYWRD
YW5jZWxsZWQ7CiAgICAgZG93bmxvYWQgPSB0ZXN0LT5kb3dubG9hZFVSSUFuZFdhaXRVbnRpbEZp
bmlzaGVzKHVyaS5nZXQoKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9kb3dubG9hZF9nZXRfd2Vi
X3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9kb3dubG9h
ZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKIAogICAgIGdfYXNzZXJ0X2NtcGludChl
dmVudHMuc2l6ZSgpLCA9PSwgNCk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1swXSwgPT0s
IERvd25sb2FkVGVzdDo6U3RhcnRlZCk7CkBAIC00MzgsNyArNDM4LDcgQEAgc3RhdGljIHZvaWQg
c2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwg
Y29uc3QgY2hhcioKIHN0YXRpYyB2b2lkIHRlc3REb3dubG9hZFJlbW90ZUZpbGUoRG93bmxvYWRU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+
IGRvd25sb2FkID0gdGVzdC0+ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcyhrU2VydmVy
LT5nZXRVUklGb3JQYXRoKCIvdGVzdC5wZGYiKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9kb3du
bG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdl
YmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKIAogICAgIFZlY3Rv
cjxEb3dubG9hZFRlc3Q6OkRvd25sb2FkRXZlbnQ+JiBldmVudHMgPSB0ZXN0LT5tX2Rvd25sb2Fk
RXZlbnRzOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgNSk7CkBAIC00
NTAsMTMgKzQ1MCwxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRSZW1vdGVGaWxlKERvd25s
b2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBldmVudHMuY2xlYXIoKTsKIAogICAg
IFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfZG93bmxvYWRfZ2V0X3JlcXVlc3Qo
ZG93bmxvYWQuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KHJlcXVlc3QpOworICAgIGdfYXNzZXJ0X25v
bm51bGwocmVxdWVzdCk7CiAgICAgQVNTRVJUX0NNUF9DU1RSSU5HKHdlYmtpdF91cmlfcmVxdWVz
dF9nZXRfdXJpKHJlcXVlc3QpLCA9PSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QucGRm
IikpOwogCiAgICAgYXV0byBoZWFkZXJzID0gd2Via2l0X3VyaV9yZXF1ZXN0X2dldF9odHRwX2hl
YWRlcnMocmVxdWVzdCk7CiAgICAgZ19hc3NlcnRfbm9ubnVsbChzb3VwX21lc3NhZ2VfaGVhZGVy
c19nZXRfb25lKGhlYWRlcnMsICJVc2VyLUFnZW50IikpOwogCi0gICAgZ19hc3NlcnQod2Via2l0
X2Rvd25sb2FkX2dldF9kZXN0aW5hdGlvbihkb3dubG9hZC5nZXQoKSkpOworICAgIGdfYXNzZXJ0
X25vbm51bGwod2Via2l0X2Rvd25sb2FkX2dldF9kZXN0aW5hdGlvbihkb3dubG9hZC5nZXQoKSkp
OwogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF9kb3dubG9hZF9nZXRfZXN0aW1hdGVkX3By
b2dyZXNzKGRvd25sb2FkLmdldCgpKSwgPT0sIDEpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZXhw
ZWN0ZWRGaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVzLnBkZiIsIGtTZXJ2ZXJTdWdnZXN0ZWRG
aWxlbmFtZSkpOwogICAgIHRlc3QtPmNoZWNrRGVzdGluYXRpb25BbmREZWxldGVGaWxlKGRvd25s
b2FkLmdldCgpLCBleHBlY3RlZEZpbGVuYW1lLmdldCgpKTsKQEAgLTQ2Niw3ICs0NjYsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRSZW1vdGVGaWxlRXJyb3IoRG93bmxvYWRFcnJvclRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgdGVzdC0+bV9leHBlY3RlZEVycm9yID0gRG93
bmxvYWRFcnJvclRlc3Q6Ok5ldHdvcmtFcnJvcjsKICAgICBHUmVmUHRyPFdlYktpdERvd25sb2Fk
PiBkb3dubG9hZCA9IHRlc3QtPmRvd25sb2FkVVJJQW5kV2FpdFVudGlsRmluaXNoZXMoa1NlcnZl
ci0+Z2V0VVJJRm9yUGF0aCgiL2ZvbyIpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2Rvd25sb2Fk
X2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0
X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOwogCiAgICAgVmVjdG9yPERv
d25sb2FkVGVzdDo6RG93bmxvYWRFdmVudD4mIGV2ZW50cyA9IHRlc3QtPm1fZG93bmxvYWRFdmVu
dHM7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCA0KTsKQEAgLTQ4MSw3
ICs0ODEsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRSZW1vdGVGaWxlRXJyb3IoRG93bmxv
YWRFcnJvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICB0ZXN0LT5tX2V4cGVjdGVk
RXJyb3IgPSBEb3dubG9hZEVycm9yVGVzdDo6SW52YWxpZERlc3RpbmF0aW9uOwogICAgIGRvd25s
b2FkID0gdGVzdC0+ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcyhrU2VydmVyLT5nZXRV
UklGb3JQYXRoKCIvdGVzdC5wZGYiKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9kb3dubG9hZF9n
ZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9k
b3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKIAogICAgIGdfYXNzZXJ0X2Nt
cGludChldmVudHMuc2l6ZSgpLCA9PSwgNCk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1sw
XSwgPT0sIERvd25sb2FkVGVzdDo6U3RhcnRlZCk7CkBAIC00OTQsNyArNDk0LDcgQEAgc3RhdGlj
IHZvaWQgdGVzdERvd25sb2FkUmVtb3RlRmlsZUVycm9yKERvd25sb2FkRXJyb3JUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogCiAgICAgdGVzdC0+bV9leHBlY3RlZEVycm9yID0gRG93bmxvYWRF
cnJvclRlc3Q6OkRvd25sb2FkQ2FuY2VsbGVkOwogICAgIGRvd25sb2FkID0gdGVzdC0+ZG93bmxv
YWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcyhrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvY2FuY2Vs
LWFmdGVyLWRlc3RpbmF0aW9uIikpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG93bmxvYWRfZ2V0
X3dlYl92aWV3KGRvd25sb2FkLmdldCgpKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfZG93
bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25sb2FkLmdldCgpKSk7CiAKICAgICBnX2Fzc2VydF9jbXBp
bnQoZXZlbnRzLnNpemUoKSwgPT0sIDQpOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMF0s
ID09LCBEb3dubG9hZFRlc3Q6OlN0YXJ0ZWQpOwpAQCAtNTA2LDcgKzUwNiw3IEBAIHN0YXRpYyB2
b2lkIHRlc3REb3dubG9hZFJlbW90ZUZpbGVFcnJvcihEb3dubG9hZEVycm9yVGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKICAgICAvLyBDaGVjayB0aGUgaW50ZXJtZWRpYXRlIGZpbGUgaXMgZGVs
ZXRlZCB3aGVuIHRoZSBkb3dubG9hZCBpcyBjYW5jZWxsZWQuCiAgICAgR1VuaXF1ZVB0cjxjaGFy
PiBpbnRlcm1lZGlhdGVVUkkoZ19zdHJkdXBfcHJpbnRmKCIlcy53a2Rvd25sb2FkIiwgd2Via2l0
X2Rvd25sb2FkX2dldF9kZXN0aW5hdGlvbihkb3dubG9hZC5nZXQoKSkpKTsKICAgICBHUmVmUHRy
PEdGaWxlPiBpbnRlcm1lZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3VyaShp
bnRlcm1lZGlhdGVVUkkuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCghZ19maWxlX3F1ZXJ5X2V4aXN0
cyhpbnRlcm1lZGlhdGVGaWxlLmdldCgpLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uo
Z19maWxlX3F1ZXJ5X2V4aXN0cyhpbnRlcm1lZGlhdGVGaWxlLmdldCgpLCBudWxscHRyKSk7CiB9
CiAKIGNsYXNzIFdlYlZpZXdEb3dubG9hZFRlc3Q6IHB1YmxpYyBXZWJWaWV3VGVzdCB7CkBAIC01
MzYsNyArNTM2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9kb3dubG9hZCA9IDA7CiAg
ICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKLSAgICAgICAgZ19hc3NlcnQobV9k
b3dubG9hZC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobV9kb3dubG9hZC5nZXQo
KSk7CiAgICAgfQogCiAgICAgc3RhdGljIGdib29sZWFuIGRvd25sb2FkRGVjaWRlRGVzdGluYXRp
b25DYWxsYmFjayhXZWJLaXREb3dubG9hZCogZG93bmxvYWQsIGNvbnN0IGdjaGFyKiBzdWdnZXN0
ZWRGaWxlbmFtZSwgV2ViVmlld0Rvd25sb2FkVGVzdCogdGVzdCkKQEAgLTU2OCwxMCArNTY4LDEw
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RG93bmxvYWRVUkkoV2ViVmlld0Rvd25sb2FkVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3du
bG9hZCA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX3ZpZXdfZG93bmxvYWRfdXJpKHRlc3QtPm1fd2Vi
Vmlldywga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QucGRmIikuZGF0YSgpKSk7CiAgICAg
dGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkb3du
bG9hZC5nZXQoKSkpOwogICAgIHRlc3QtPndhaXRVbnRpbERvd25sb2FkU3RhcnRlZCgpOwotICAg
IGdfYXNzZXJ0KHRlc3QtPm1fd2ViVmlldyA9PSB3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3
KGRvd25sb2FkLmdldCgpKSk7CisgICAgZ19hc3NlcnRfY21waGV4KHRlc3QtPm1fd2ViVmlldywg
PT0sIHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKIAogICAg
IFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfZG93bmxvYWRfZ2V0X3JlcXVlc3Qo
ZG93bmxvYWQuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KHJlcXVlc3QpOworICAgIGdfYXNzZXJ0X25v
bm51bGwocmVxdWVzdCk7CiAgICAgQVNTRVJUX0NNUF9DU1RSSU5HKHdlYmtpdF91cmlfcmVxdWVz
dF9nZXRfdXJpKHJlcXVlc3QpLCA9PSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Rlc3QucGRm
IikpOwogCiAgICAgYXV0byBoZWFkZXJzID0gd2Via2l0X3VyaV9yZXF1ZXN0X2dldF9odHRwX2hl
YWRlcnMocmVxdWVzdCk7CkBAIC02MjUsMTAgKzYyNSwxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0UG9s
aWN5UmVzcG9uc2VEb3dubG9hZChQb2xpY3lSZXNwb25zZURvd25sb2FkVGVzdCogdGVzdCwgZ2Nv
bnN0cAogICAgIHRlc3QtPndhaXRVbnRpbERvd25sb2FkU3RhcnRlZCgpOwogCiAgICAgV2ViS2l0
VVJJUmVxdWVzdCogcmVxdWVzdCA9IHdlYmtpdF9kb3dubG9hZF9nZXRfcmVxdWVzdCh0ZXN0LT5t
X2Rvd25sb2FkLmdldCgpKTsKLSAgICBnX2Fzc2VydChyZXF1ZXN0KTsKKyAgICBnX2Fzc2VydF9u
b25udWxsKHJlcXVlc3QpOwogICAgIEFTU0VSVF9DTVBfQ1NUUklORyh3ZWJraXRfdXJpX3JlcXVl
c3RfZ2V0X3VyaShyZXF1ZXN0KSwgPT0sIHJlcXVlc3RVUkkpOwogCi0gICAgZ19hc3NlcnQodGVz
dC0+bV93ZWJWaWV3ID09IHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcodGVzdC0+bV9kb3du
bG9hZC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2NtcGhleCh0ZXN0LT5tX3dlYlZpZXcsID09LCB3
ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KHRlc3QtPm1fZG93bmxvYWQuZ2V0KCkpKTsKIAog
ICAgIGF1dG8gaGVhZGVycyA9IHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfaHR0cF9oZWFkZXJzKHJl
cXVlc3QpOwogICAgIGdfYXNzZXJ0X25vbm51bGwoc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X29u
ZShoZWFkZXJzLCAiVXNlci1BZ2VudCIpKTsKQEAgLTY0NywxMCArNjQ3LDEwIEBAIHN0YXRpYyB2
b2lkIHRlc3RQb2xpY3lSZXNwb25zZURvd25sb2FkQ2FuY2VsKFBvbGljeVJlc3BvbnNlRG93bmxv
YWRUZXN0KiB0ZXN0LCBnCiAgICAgdGVzdC0+d2FpdFVudGlsRG93bmxvYWRTdGFydGVkKCk7CiAK
ICAgICBXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X2Rvd25sb2FkX2dldF9yZXF1
ZXN0KHRlc3QtPm1fZG93bmxvYWQuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KHJlcXVlc3QpOworICAg
IGdfYXNzZXJ0X25vbm51bGwocmVxdWVzdCk7CiAgICAgQVNTRVJUX0NNUF9DU1RSSU5HKHdlYmtp
dF91cmlfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpLCA9PSwgcmVxdWVzdFVSSSk7CiAKLSAgICBn
X2Fzc2VydCh0ZXN0LT5tX3dlYlZpZXcgPT0gd2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyh0
ZXN0LT5tX2Rvd25sb2FkLmdldCgpKSk7CisgICAgZ19hc3NlcnRfY21waGV4KHRlc3QtPm1fd2Vi
VmlldywgPT0sIHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcodGVzdC0+bV9kb3dubG9hZC5n
ZXQoKSkpOwogCiAgICAgYXV0byBoZWFkZXJzID0gd2Via2l0X3VyaV9yZXF1ZXN0X2dldF9odHRw
X2hlYWRlcnMocmVxdWVzdCk7CiAgICAgZ19hc3NlcnRfbm9ubnVsbChzb3VwX21lc3NhZ2VfaGVh
ZGVyc19nZXRfb25lKGhlYWRlcnMsICJVc2VyLUFnZW50IikpOwpAQCAtNjYwLDcgKzY2MCw3IEBA
IHN0YXRpYyB2b2lkIHRlc3RQb2xpY3lSZXNwb25zZURvd25sb2FkQ2FuY2VsKFBvbGljeVJlc3Bv
bnNlRG93bmxvYWRUZXN0KiB0ZXN0LCBnCiBzdGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRNSU1FVHlw
ZShEb3dubG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgR1JlZlB0cjxXZWJL
aXREb3dubG9hZD4gZG93bmxvYWQgPSB0ZXN0LT5kb3dubG9hZFVSSUFuZFdhaXRVbnRpbEZpbmlz
aGVzKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi91bmtub3duIikpOwotICAgIGdfYXNzZXJ0KCF3
ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25sb2FkLmdldCgpKSk7CisgICAgZ19hc3Nl
cnRfbnVsbCh3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25sb2FkLmdldCgpKSk7CiAK
ICAgICBWZWN0b3I8RG93bmxvYWRUZXN0OjpEb3dubG9hZEV2ZW50PiYgZXZlbnRzID0gdGVzdC0+
bV9kb3dubG9hZEV2ZW50czsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNpemUoKSwgPT0s
IDUpOwpAQCAtNjgyLDcgKzY4Miw3IEBAIHN0YXRpYyB2b2lkIHRlc3REb3dubG9hZE1JTUVUeXBl
KERvd25sb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBXRUJLSVRfSVNfVVJJX1JF
U1BPTlNFKHJlc3BvbnNlKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3VyaV9yZXNwb25z
ZV9nZXRfbWltZV90eXBlKHJlc3BvbnNlKSwgPT0sICJhcHBsaWNhdGlvbi9wZGYiKTsKIAotICAg
IGdfYXNzZXJ0KHdlYmtpdF9kb3dubG9hZF9nZXRfZGVzdGluYXRpb24oZG93bmxvYWQuZ2V0KCkp
KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHdlYmtpdF9kb3dubG9hZF9nZXRfZGVzdGluYXRpb24o
ZG93bmxvYWQuZ2V0KCkpKTsKICAgICBnX2Fzc2VydF9jbXBmbG9hdCh3ZWJraXRfZG93bmxvYWRf
Z2V0X2VzdGltYXRlZF9wcm9ncmVzcyhkb3dubG9hZC5nZXQoKSksID09LCAxKTsKICAgICBHVW5p
cXVlUHRyPGNoYXI+IGV4cGVjdGVkRmlsZW5hbWUoZ19zdHJkdXBfcHJpbnRmKCIlcy5wZGYiLCBr
U2VydmVyU3VnZ2VzdGVkRmlsZW5hbWUpKTsKICAgICB0ZXN0LT5jaGVja0Rlc3RpbmF0aW9uQW5k
RGVsZXRlRmlsZShkb3dubG9hZC5nZXQoKSwgZXhwZWN0ZWRGaWxlbmFtZS5nZXQoKSk7CkBAIC02
OTEsMTkgKzY5MSwxOSBAQCBzdGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRNSU1FVHlwZShEb3dubG9h
ZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAjaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIGdi
b29sZWFuIGNvbnRleHRNZW51Q2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0
Q29udGV4dE1lbnUqIGNvbnRleHRNZW51LCBHZGtFdmVudCosIFdlYktpdEhpdFRlc3RSZXN1bHQq
IGhpdFRlc3RSZXN1bHQsIFdlYlZpZXdEb3dubG9hZFRlc3QqIHRlc3QpCiB7Ci0gICAgZ19hc3Nl
cnQoV0VCS0lUX0lTX0hJVF9URVNUX1JFU1VMVChoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3Nl
cnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkp
OworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX0hJVF9URVNUX1JFU1VMVChoaXRUZXN0UmVz
dWx0KSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRf
aXNfbGluayhoaXRUZXN0UmVzdWx0KSk7CiAgICAgR0xpc3QqIGl0ZW1zID0gd2Via2l0X2NvbnRl
eHRfbWVudV9nZXRfaXRlbXMoY29udGV4dE1lbnUpOwogICAgIEdSZWZQdHI8V2ViS2l0Q29udGV4
dE1lbnVJdGVtPiBjb250ZXh0TWVudUl0ZW07CiAgICAgZm9yIChHTGlzdCogbCA9IGl0ZW1zOyBs
OyBsID0gZ19saXN0X25leHQobCkpIHsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX0NPTlRF
WFRfTUVOVV9JVEVNKGwtPmRhdGEpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNf
Q09OVEVYVF9NRU5VX0lURU0obC0+ZGF0YSkpOwogICAgICAgICBhdXRvKiBpdGVtID0gV0VCS0lU
X0NPTlRFWFRfTUVOVV9JVEVNKGwtPmRhdGEpOwogICAgICAgICBpZiAod2Via2l0X2NvbnRleHRf
bWVudV9pdGVtX2dldF9zdG9ja19hY3Rpb24oaXRlbSkgPT0gV0VCS0lUX0NPTlRFWFRfTUVOVV9B
Q1RJT05fRE9XTkxPQURfTElOS19UT19ESVNLKSB7CiAgICAgICAgICAgICBjb250ZXh0TWVudUl0
ZW0gPSBpdGVtOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZ19h
c3NlcnQoY29udGV4dE1lbnVJdGVtLmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGNvbnRl
eHRNZW51SXRlbS5nZXQoKSk7CiAgICAgd2Via2l0X2NvbnRleHRfbWVudV9yZW1vdmVfYWxsKGNv
bnRleHRNZW51KTsKICAgICB3ZWJraXRfY29udGV4dF9tZW51X2FwcGVuZChjb250ZXh0TWVudSwg
Y29udGV4dE1lbnVJdGVtLmdldCgpKTsKICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKQEAgLTcz
Niw3ICs3MzYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29udGV4dE1lbnVEb3dubG9hZEFjdGlvbnMo
V2ViVmlld0Rvd25sb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbgogICAgIH0sIHRlc3QpOwogICAg
IHRlc3QtPndhaXRVbnRpbERvd25sb2FkU3RhcnRlZCgpOwogCi0gICAgZ19hc3NlcnQodGVzdC0+
bV93ZWJWaWV3ID09IHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcodGVzdC0+bV9kb3dubG9h
ZC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2NtcGhleCh0ZXN0LT5tX3dlYlZpZXcsID09LCB3ZWJr
aXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KHRlc3QtPm1fZG93bmxvYWQuZ2V0KCkpKTsKIAogICAg
IFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfZG93bmxvYWRfZ2V0X3JlcXVlc3Qo
dGVzdC0+bV9kb3dubG9hZC5nZXQoKSk7CiAgICAgV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVl
c3QpOwpAQCAtNzc1LDcgKzc3NSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RCbG9iRG93bmxvYWQoV2Vi
Vmlld0Rvd25sb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB9LCB0ZXN0KTsKICAg
ICB0ZXN0LT53YWl0VW50aWxEb3dubG9hZFN0YXJ0ZWQoKTsKIAotICAgIGdfYXNzZXJ0KHRlc3Qt
Pm1fd2ViVmlldyA9PSB3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KHRlc3QtPm1fZG93bmxv
YWQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBoZXgodGVzdC0+bV93ZWJWaWV3LCA9PSwgd2Vi
a2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyh0ZXN0LT5tX2Rvd25sb2FkLmdldCgpKSk7CiAgICAg
dGVzdC0+d2FpdFVudGlsRG93bmxvYWRGaW5pc2hlZCgpOwogCiAgICAgR1JlZlB0cjxHRmlsZT4g
ZG93bmxvYWRGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3VyaSh3ZWJraXRfZG93bmxv
YWRfZ2V0X2Rlc3RpbmF0aW9uKHRlc3QtPm1fZG93bmxvYWQuZ2V0KCkpKSk7CkBAIC03ODMsNyAr
NzgzLDcgQEAgc3RhdGljIHZvaWQgdGVzdEJsb2JEb3dubG9hZChXZWJWaWV3RG93bmxvYWRUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZG93bmxvYWRQYXRo
KGdfZmlsZV9nZXRfcGF0aChkb3dubG9hZEZpbGUuZ2V0KCkpKTsKICAgICBHVW5pcXVlT3V0UHRy
PGNoYXI+IGRvd25sb2FkQ29udGVudHM7CiAgICAgZ3NpemUgZG93bmxvYWRDb250ZW50c0xlbmd0
aDsKLSAgICBnX2Fzc2VydChnX2ZpbGVfZ2V0X2NvbnRlbnRzKGRvd25sb2FkUGF0aC5nZXQoKSwg
JmRvd25sb2FkQ29udGVudHMub3V0UHRyKCksICZkb3dubG9hZENvbnRlbnRzTGVuZ3RoLCBudWxs
cHRyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShnX2ZpbGVfZ2V0X2NvbnRlbnRzKGRvd25sb2FkUGF0
aC5nZXQoKSwgJmRvd25sb2FkQ29udGVudHMub3V0UHRyKCksICZkb3dubG9hZENvbnRlbnRzTGVu
Z3RoLCBudWxscHRyKSk7CiAgICAgZ19hc3NlcnRfY21waW50KGdfZmlsZV9pbmZvX2dldF9zaXpl
KGRvd25sb2FkRmlsZUluZm8uZ2V0KCkpLCA9PSwgZG93bmxvYWRDb250ZW50c0xlbmd0aCk7CiAg
ICAgZ19hc3NlcnRfY21wc3RyKGRvd25sb2FkQ29udGVudHMuZ2V0KCksID09LCAiSGVsbG8gd29y
bGQiKTsKICAgICBnX2ZpbGVfZGVsZXRlKGRvd25sb2FkRmlsZS5nZXQoKSwgbnVsbHB0ciwgbnVs
bHB0cik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdEVkaXRvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dEVkaXRvci5jcHAKaW5kZXggNThiZTUzZTNiZWQ0ZWVjZGZlZDg2NjgwYjhhMmRmMzQ0ODk4MDA3
ZC4uM2Y2YWIyNDViZDlhZjhkYTM1OTk5NjE0MTQxZjBmMzUzN2I1OTdkMSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RFZGl0b3IuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0RWRpdG9yLmNwcApAQCAt
MjQsNyArMjQsNyBAQAogc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYkVkaXRvclNlbGVjdGlvbkNo
YW5nZWQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNv
bnN0IGdjaGFyKiB0ZXN0SFRNTCA9ICI8aHRtbD48Ym9keT5BbGwgd29yayBhbmQgbm8gcGxheSBt
YWtlIEphY2sgYSBkdWxsIGJveS48L2JvZHk+PC9odG1sPiI7Ci0gICAgZ19hc3NlcnQodGVzdC0+
cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdFdlYkVkaXRvciIsICJzZWxlY3Rpb24tY2hhbmdlZCIs
IHRlc3RIVE1MKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgi
V2ViS2l0V2ViRWRpdG9yIiwgInNlbGVjdGlvbi1jaGFuZ2VkIiwgdGVzdEhUTUwpKTsKIH0KIAog
dm9pZCBiZWZvcmVBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RGcmFtZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdEZyYW1lLmNwcAppbmRleCA2ZjMzNzI5YjE4MDE5NTc4OTZkMjQzMjIwM2QxZWQ2
YjAxNDFlNDk0Li5mNmQyOTdmMmU0OWU4YjQyZWUzODNiMTgyZWQ0ZDhiODQ3NTE1MTVmIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEZyYW1lLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEZyYW1lLmNw
cApAQCAtMjMsMjMgKzIzLDIzIEBACiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRGcmFtZU1haW5G
cmFtZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBnX2Fzc2VydCh0
ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RnJhbWUiLCAibWFpbi1mcmFtZSIpKTsKKyAg
ICBnX2Fzc2VydF90cnVlKHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRGcmFtZSIsICJt
YWluLWZyYW1lIikpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RnJhbWVVUkkoV2ViVmll
d1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgZ19hc3NlcnQodGVzdC0+cnVuV2Vi
UHJvY2Vzc1Rlc3QoIldlYktpdEZyYW1lIiwgInVyaSIpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRl
c3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRGcmFtZSIsICJ1cmkiKSk7CiB9CiAKIHN0YXRp
YyB2b2lkIHRlc3RXZWJLaXRGcmFtZUphdmFTY3JpcHRDb250ZXh0KFdlYlZpZXdUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogewotICAgIGdfYXNzZXJ0KHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0
KCJXZWJLaXRGcmFtZSIsICJqYXZhc2NyaXB0LWNvbnRleHQiKSk7CisgICAgZ19hc3NlcnRfdHJ1
ZSh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RnJhbWUiLCAiamF2YXNjcmlwdC1jb250
ZXh0IikpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RnJhbWVKYXZhU2NyaXB0VmFsdWVz
KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiB0ZXN0SFRNTCA9ICI8aHRtbD48Ym9keT48cCBpZD0ncGFyYWdyYXBoJz5UaGlzIGlzIGEg
dGVzdDwvcD48aW1nIGlkPSdpbWFnZScgc3JjPSdmb28ucG5nJz48L2JvZHk+PC9odG1sPiI7Ci0g
ICAgZ19hc3NlcnQodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdEZyYW1lIiwgImphdmFz
Y3JpcHQtdmFsdWVzIiwgdGVzdEhUTUwpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPnJ1bldl
YlByb2Nlc3NUZXN0KCJXZWJLaXRGcmFtZSIsICJqYXZhc2NyaXB0LXZhbHVlcyIsIHRlc3RIVE1M
KSk7CiB9CiAKIHZvaWQgYmVmb3JlQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcAppbmRleCBiZjM3MmE1
NjBhMDg5MjYyNjdjZDY0NmJjOGMzMWFmODcyN2M1ZjZkLi5jNjdhZjE2ODRmZmNkZjIzODU5YmM0
NzVkMDkwNWQyYWY5OGE0YmFkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdExvYWRlckNsaWVudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcg
QEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChjb25zdCBnY2hh
ciogZmFpbGluZ1VSSSwgR0Vycm9yKiBlcnJvcikKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KGdf
ZXJyb3JfbWF0Y2hlcyhlcnJvciwgV0VCS0lUX05FVFdPUktfRVJST1IsIFdFQktJVF9ORVRXT1JL
X0VSUk9SX0NBTkNFTExFRCkpOworICAgICAgICBnX2Fzc2VydF9lcnJvcihlcnJvciwgV0VCS0lU
X05FVFdPUktfRVJST1IsIFdFQktJVF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCk7CiAgICAgICAg
IExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRGYWlsZWQoZmFpbGluZ1VSSSwgZXJyb3IpOwogICAgIH0K
IH07CkBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIHZvaWQgdGVzdExvYWRDYW5jZWxsZWQoTG9h
ZFN0b3BUcmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKIHN0YXRpYyB2b2lkIHRl
c3RXZWJWaWV3VGl0bGUoTG9hZFRyYWNraW5nVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsK
LSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2dldF90aXRsZSh0ZXN0LT5tX3dlYlZpZXcp
KTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJfdmlld19nZXRfdGl0bGUodGVzdC0+bV93
ZWJWaWV3KSk7CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxoZWFkPjx0aXRsZT5XZWxjb21l
IHRvIFdlYktpdC1HVEsrITwvdGl0bGU+PC9oZWFkPjwvaHRtbD4iLCAwKTsKICAgICB0ZXN0LT53
YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl92
aWV3X2dldF90aXRsZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgIldlbGNvbWUgdG8gV2ViS2l0LUdU
SyshIik7CkBAIC0yNTMsNyArMjUzLDcgQEAgcHVibGljOgogICAgIFZpZXdVUklUcmFja2luZ1Rl
c3QoKQogICAgICAgICA6IG1fY3VycmVudFVSSSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaShtX3dl
YlZpZXcpKQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQobV9jdXJyZW50VVJJLmlzTnVsbCgpKTsK
KyAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2N1cnJlbnRVUkkuaXNOdWxsKCkpOwogICAgICAgICBt
X2N1cnJlbnRVUklMaXN0Lmdyb3cobV9jdXJyZW50VVJJTGlzdC5jYXBhY2l0eSgpKTsKICAgICAg
ICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJub3RpZnk6OnVyaSIsIEdfQ0FMTEJBQ0so
dXJpQ2hhbmdlZCksIHRoaXMpOwogICAgIH0KQEAgLTI5Miw3ICsyOTIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmIChwYXRoKQogICAgICAgICAgICAgQVNTRVJUX0NNUF9DU1RSSU5HKG1fY3VycmVu
dFVSSUxpc3Rbc3RhdGVdLCA9PSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aChwYXRoKSk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGdfYXNzZXJ0KG1fY3VycmVudFVSSUxpc3Rbc3RhdGVdLmlz
TnVsbCgpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUobV9jdXJyZW50VVJJTGlzdFtzdGF0
ZV0uaXNOdWxsKCkpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTM2MiwxNiArMzYyLDE2IEBAIHB1
YmxpYzoKICAgICB2b2lkIGJlZ2luTG9hZCgpCiAgICAgewogICAgICAgICAvLyBOZXcgbG9hZCwg
bG9hZC1zdGFydGVkIGhhc24ndCBiZWVuIGVtaXR0ZWQgeWV0LgotICAgICAgICBnX2Fzc2VydCht
X2xvYWRFdmVudHMuaXNFbXB0eSgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2xvYWRFdmVu
dHMuaXNFbXB0eSgpKTsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfdmlld19n
ZXRfdXJpKG1fd2ViVmlldyksID09LCBtX2FjdGl2ZVVSSS5kYXRhKCkpOwogICAgIH0KIAogICAg
IHZvaWQgZW5kTG9hZCgpCiAgICAgewogICAgICAgICAvLyBMb2FkIGZpbmlzaCwgbG9hZC1maW5p
c2hlZCBhbmQgbG9hZC1mYWlsZWQgaGF2ZW4ndCBiZWVuIGVtaXR0ZWQgeWV0LgotICAgICAgICBn
X2Fzc2VydCghbV9sb2FkRXZlbnRzLmlzRW1wdHkoKSk7Ci0gICAgICAgIGdfYXNzZXJ0KCFtX2xv
YWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZpbmlzaGVkKSk7Ci0gICAg
ICAgIGdfYXNzZXJ0KCFtX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6TG9h
ZEZhaWxlZCkpOworICAgICAgICBnX2Fzc2VydF9mYWxzZShtX2xvYWRFdmVudHMuaXNFbXB0eSgp
KTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2UobV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFj
a2luZ1Rlc3Q6OkxvYWRGaW5pc2hlZCkpOworICAgICAgICBnX2Fzc2VydF9mYWxzZShtX2xvYWRF
dmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZhaWxlZCkpOwogICAgIH0KIH07
CiAKQEAgLTQzMCw3ICs0MzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZWludGVycHJldF9j
YXN0PEdEQnVzU2lnbmFsQ2FsbGJhY2s+KHdlYlBhZ2VVUklDaGFuZ2VkQ2FsbGJhY2spLAogICAg
ICAgICAgICAgdGhpcywKICAgICAgICAgICAgIDApOwotICAgICAgICBnX2Fzc2VydChtX3VyaUNo
YW5nZWRTaWduYWxJRCk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQobV91cmlDaGFuZ2VkU2ln
bmFsSUQsICE9LCAwKTsKIAogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgIm5v
dGlmeTo6dXJpIiwgR19DQUxMQkFDSyh3ZWJWaWV3VVJJQ2hhbmdlZCksIHRoaXMpOwogICAgIH0K
QEAgLTQ5OCw5ICs0OTgsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViUGFnZVVSSShXZWJQYWdlVVJJ
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHN0YXRpYyB2b2lkIHRlc3RVUklSZXF1ZXN0SFRU
UEhlYWRlcnMoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgR1JlZlB0
cjxXZWJLaXRVUklSZXF1ZXN0PiB1cmlSZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdF91cmlfcmVx
dWVzdF9uZXcoImZpbGU6Ly8vZm9vL2JhciIpKTsKLSAgICBnX2Fzc2VydCh1cmlSZXF1ZXN0Lmdl
dCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHVyaVJlcXVlc3QuZ2V0KCkpOwogICAgIGdfYXNz
ZXJ0X2NtcHN0cih3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X3VyaSh1cmlSZXF1ZXN0LmdldCgpKSwg
PT0sICJmaWxlOi8vL2Zvby9iYXIiKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3VyaV9yZXF1ZXN0
X2dldF9odHRwX2hlYWRlcnModXJpUmVxdWVzdC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X251bGwo
d2Via2l0X3VyaV9yZXF1ZXN0X2dldF9odHRwX2hlYWRlcnModXJpUmVxdWVzdC5nZXQoKSkpOwog
CiAgICAgLy8gTG9hZCBhIHJlcXVlc3Qgd2l0aCBubyBEbyBOb3QgVHJhY2sgaGVhZGVyLgogICAg
IHdlYmtpdF91cmlfcmVxdWVzdF9zZXRfdXJpKHVyaVJlcXVlc3QuZ2V0KCksIGtTZXJ2ZXItPmdl
dFVSSUZvclBhdGgoIi9kby1ub3QtdHJhY2staGVhZGVyIikuZGF0YSgpKTsKQEAgLTUxMCwxOCAr
NTEwLDE4IEBAIHN0YXRpYyB2b2lkIHRlc3RVUklSZXF1ZXN0SFRUUEhlYWRlcnMoV2ViVmlld1Rl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgc2l6ZV90IG1haW5SZXNvdXJjZURhdGFTaXpl
ID0gMDsKICAgICBjb25zdCBjaGFyKiBtYWluUmVzb3VyY2VEYXRhID0gdGVzdC0+bWFpblJlc291
cmNlRGF0YShtYWluUmVzb3VyY2VEYXRhU2l6ZSk7CiAgICAgZ19hc3NlcnRfY21waW50KG1haW5S
ZXNvdXJjZURhdGFTaXplLCA9PSwgc3RybGVuKGtETlRIZWFkZXJOb3RQcmVzZW50KSk7Ci0gICAg
Z19hc3NlcnQoIXN0cm5jbXAobWFpblJlc291cmNlRGF0YSwga0ROVEhlYWRlck5vdFByZXNlbnQs
IG1haW5SZXNvdXJjZURhdGFTaXplKSk7CisgICAgZ19hc3NlcnRfY21waW50KHN0cm5jbXAobWFp
blJlc291cmNlRGF0YSwga0ROVEhlYWRlck5vdFByZXNlbnQsIG1haW5SZXNvdXJjZURhdGFTaXpl
KSwgPT0sIDApOwogCiAgICAgLy8gQWRkIHRoZSBEbyBOb3QgVHJhY2sgaGVhZGVyIGFuZCBsb2Fk
IHRoZSByZXF1ZXN0IGFnYWluLgogICAgIFNvdXBNZXNzYWdlSGVhZGVycyogaGVhZGVycyA9IHdl
YmtpdF91cmlfcmVxdWVzdF9nZXRfaHR0cF9oZWFkZXJzKHVyaVJlcXVlc3QuZ2V0KCkpOwotICAg
IGdfYXNzZXJ0KGhlYWRlcnMpOworICAgIGdfYXNzZXJ0X25vbm51bGwoaGVhZGVycyk7CiAgICAg
c291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKGhlYWRlcnMsICJETlQiLCAiMSIpOwogICAgIHRl
c3QtPmxvYWRSZXF1ZXN0KHVyaVJlcXVlc3QuZ2V0KCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExv
YWRGaW5pc2hlZCgpOwogCiAgICAgbWFpblJlc291cmNlRGF0YSA9IHRlc3QtPm1haW5SZXNvdXJj
ZURhdGEobWFpblJlc291cmNlRGF0YVNpemUpOwogICAgIGdfYXNzZXJ0X2NtcGludChtYWluUmVz
b3VyY2VEYXRhU2l6ZSwgPT0sIDEpOwotICAgIGdfYXNzZXJ0KCFzdHJuY21wKG1haW5SZXNvdXJj
ZURhdGEsICIxIiwgbWFpblJlc291cmNlRGF0YVNpemUpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
c3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCAiMSIsIG1haW5SZXNvdXJjZURhdGFTaXplKSwgPT0s
IDApOwogCiAgICAgLy8gTG9hZCBhIFVSSSBmb3Igd2hpY2ggdGhlIHdlYiBleHRlbnNpb24gd2ls
bCBhZGQgdGhlIERvIE5vdCBUcmFjayBoZWFkZXIuCiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVy
LT5nZXRVUklGb3JQYXRoKCIvYWRkLWRvLW5vdC10cmFjay1oZWFkZXIiKS5kYXRhKCkpOwpAQCAt
NTI5LDE1ICs1MjksMTUgQEAgc3RhdGljIHZvaWQgdGVzdFVSSVJlcXVlc3RIVFRQSGVhZGVycyhX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIG1haW5SZXNvdXJjZURhdGEg
PSB0ZXN0LT5tYWluUmVzb3VyY2VEYXRhKG1haW5SZXNvdXJjZURhdGFTaXplKTsKICAgICBnX2Fz
c2VydF9jbXBpbnQobWFpblJlc291cmNlRGF0YVNpemUsID09LCAxKTsKLSAgICBnX2Fzc2VydCgh
c3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCAiMSIsIG1haW5SZXNvdXJjZURhdGFTaXplKSk7Cisg
ICAgZ19hc3NlcnRfY21waW50KHN0cm5jbXAobWFpblJlc291cmNlRGF0YSwgIjEiLCBtYWluUmVz
b3VyY2VEYXRhU2l6ZSksID09LCAwKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFVSSVJlcXVlc3RI
VFRQTWV0aG9kKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIEdSZWZQ
dHI8V2ViS2l0VVJJUmVxdWVzdD4gdXJpUmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJraXRfdXJpX3Jl
cXVlc3RfbmV3KCJmaWxlOi8vL2Zvby9iYXIiKSk7Ci0gICAgZ19hc3NlcnQodXJpUmVxdWVzdC5n
ZXQoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbCh1cmlSZXF1ZXN0LmdldCgpKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIod2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkodXJpUmVxdWVzdC5nZXQoKSks
ID09LCAiZmlsZTovLy9mb28vYmFyIik7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF91cmlfcmVxdWVz
dF9nZXRfaHR0cF9tZXRob2QodXJpUmVxdWVzdC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X251bGwo
d2Via2l0X3VyaV9yZXF1ZXN0X2dldF9odHRwX21ldGhvZCh1cmlSZXF1ZXN0LmdldCgpKSk7CiAK
ICAgICB3ZWJraXRfdXJpX3JlcXVlc3Rfc2V0X3VyaSh1cmlSZXF1ZXN0LmdldCgpLCBrU2VydmVy
LT5nZXRVUklGb3JQYXRoKCIvaHR0cC1nZXQtbWV0aG9kIikuZGF0YSgpKTsKICAgICB0ZXN0LT5s
b2FkUmVxdWVzdCh1cmlSZXF1ZXN0LmdldCgpKTsKQEAgLTU1MSwxOSArNTUxLDE5IEBAIHN0YXRp
YyB2b2lkIHRlc3RVUklSZXNwb25zZUhUVFBIZWFkZXJzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT5ObyBIVFRQIGhlYWRl
cnM8L2JvZHk+PC9odG1sPiIsICJmaWxlOi8vLyIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOwogICAgIFdlYktpdFdlYlJlc291cmNlKiByZXNvdXJjZSA9IHdlYmtpdF93ZWJf
dmlld19nZXRfbWFpbl9yZXNvdXJjZSh0ZXN0LT5tX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KFdF
QktJVF9JU19XRUJfUkVTT1VSQ0UocmVzb3VyY2UpKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJ
VF9JU19XRUJfUkVTT1VSQ0UocmVzb3VyY2UpKTsKICAgICBXZWJLaXRVUklSZXNwb25zZSogcmVz
cG9uc2UgPSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9yZXNwb25zZShyZXNvdXJjZSk7Ci0gICAg
Z19hc3NlcnQoV0VCS0lUX0lTX1VSSV9SRVNQT05TRShyZXNwb25zZSkpOwotICAgIGdfYXNzZXJ0
KCF3ZWJraXRfdXJpX3Jlc3BvbnNlX2dldF9odHRwX2hlYWRlcnMocmVzcG9uc2UpKTsKKyAgICBn
X2Fzc2VydF90cnVlKFdFQktJVF9JU19VUklfUkVTUE9OU0UocmVzcG9uc2UpKTsKKyAgICBnX2Fz
c2VydF9udWxsKHdlYmtpdF91cmlfcmVzcG9uc2VfZ2V0X2h0dHBfaGVhZGVycyhyZXNwb25zZSkp
OwogCiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaGVhZGVycyIp
LmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAgcmVzb3Vy
Y2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fcmVzb3VyY2UodGVzdC0+bV93ZWJWaWV3KTsK
LSAgICBnX2Fzc2VydChXRUJLSVRfSVNfV0VCX1JFU09VUkNFKHJlc291cmNlKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZShXRUJLSVRfSVNfV0VCX1JFU09VUkNFKHJlc291cmNlKSk7CiAgICAgcmVzcG9u
c2UgPSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9yZXNwb25zZShyZXNvdXJjZSk7Ci0gICAgZ19h
c3NlcnQoV0VCS0lUX0lTX1VSSV9SRVNQT05TRShyZXNwb25zZSkpOworICAgIGdfYXNzZXJ0X3Ry
dWUoV0VCS0lUX0lTX1VSSV9SRVNQT05TRShyZXNwb25zZSkpOwogICAgIFNvdXBNZXNzYWdlSGVh
ZGVycyogaGVhZGVycyA9IHdlYmtpdF91cmlfcmVzcG9uc2VfZ2V0X2h0dHBfaGVhZGVycyhyZXNw
b25zZSk7Ci0gICAgZ19hc3NlcnQoaGVhZGVycyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChoZWFk
ZXJzKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X29uZSho
ZWFkZXJzLCAiRm9vIiksID09LCAiYmFyIik7CiB9CiAKQEAgLTU3Niw3ICs1NzYsNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0UmVkaXJlY3RUb0RhdGFVUkkoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiAgICAgc2l6ZV90IG1haW5SZXNvdXJjZURhdGFTaXplID0gMDsKICAgICBjb25zdCBj
aGFyKiBtYWluUmVzb3VyY2VEYXRhID0gdGVzdC0+bWFpblJlc291cmNlRGF0YShtYWluUmVzb3Vy
Y2VEYXRhU2l6ZSk7CiAgICAgZ19hc3NlcnRfY21waW50KG1haW5SZXNvdXJjZURhdGFTaXplLCA9
PSwgc3RybGVuKGV4cGVjdGVkRGF0YSkpOwotICAgIGdfYXNzZXJ0KCFzdHJuY21wKG1haW5SZXNv
dXJjZURhdGEsIGV4cGVjdGVkRGF0YSwgbWFpblJlc291cmNlRGF0YVNpemUpKTsKKyAgICBnX2Fz
c2VydF9jbXBpbnQoc3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCBleHBlY3RlZERhdGEsIG1haW5S
ZXNvdXJjZURhdGFTaXplKSwgPT0sIDApOwogfQogCiBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFj
ayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBw
YXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9pbnRlcikKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9jZXNz
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9j
ZXNzLmNwcAppbmRleCBiOWI4MTczM2Y3OWQ1ZmY5NWY4Mjk0ZWNlYzAwZDE1MGNhMDc4MzA4Li44
Nzg5NzcyYTBhZDA5MTQ5M2ZhMDNiMDUzMmQ4YjlmZTJkNGNkODg1IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE11bHRpcHJvY2Vzcy5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RNdWx0aXByb2Nlc3Mu
Y3BwCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG51bGxwdHIsCiAgICAg
ICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLAogICAgICAgICAgICAgLTEsIG51bGxwdHIs
IG51bGxwdHIpKTsKLSAgICAgICAgZ19hc3NlcnQocmVzdWx0KTsKKyAgICAgICAgZ19hc3NlcnRf
bm9ubnVsbChyZXN1bHQpOwogCiAgICAgICAgIGd1aW50MzIgaWRlbnRpZmllciA9IDA7CiAgICAg
ICAgIGdfdmFyaWFudF9nZXQocmVzdWx0LmdldCgpLCAiKHUpIiwgJmlkZW50aWZpZXIpOwpAQCAt
MTIyLDggKzEyMiw4IEBAIHN0YXRpYyB2b2lkIHRlc3RQcm9jZXNzUGVyV2ViVmlldyhNdWx0aXBy
b2Nlc3NUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bVZpZXdzOyBpKyspIHsKICAgICAgICAgdGVzdC0+bG9hZFdlYlZpZXdBbmRXYWl0
VW50aWxMb2FkZWQoaSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfVklFVyh0ZXN0
LT5tX3dlYlZpZXdzW2ldLmdldCgpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KHRlc3QtPm1fd2ViVmll
d0J1c05hbWVzW2ldKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfV0VCX1ZJRVco
dGVzdC0+bV93ZWJWaWV3c1tpXS5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKHRl
c3QtPm1fd2ViVmlld0J1c05hbWVzW2ldKTsKICAgICB9CiAKICAgICBnX2Fzc2VydF9jbXB1aW50
KHRlc3QtPm1faW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNTaWduYWxDb3VudCwgPT0sIG51bVZpZXdz
KTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJLaXRXZWJWaWV3KiB2aWV3
Q3JlYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgewotICAgICAgICBnX2Fzc2VydCh3
ZWJWaWV3ID09IG1fd2ViVmlldyk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJWaWV3LCA9
PSwgbV93ZWJWaWV3KTsKIAogICAgICAgICBhdXRvKiBuZXdXZWJWaWV3ID0gVGVzdDo6Y3JlYXRl
V2ViVmlldyh3ZWJWaWV3KTsKICNpZiBQTEFURk9STShHVEspCkBAIC0yMTAsMTMgKzIxMCwxMyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHZpZXdSZWFkeVRvU2hvdyhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQobV93ZWJWaWV3ICE9IHdlYlZpZXcpOworICAg
ICAgICBnX2Fzc2VydF9jbXBoZXgobV93ZWJWaWV3LCAhPSwgd2ViVmlldyk7CiAgICAgICAgIG1f
d2ViVmlld0V2ZW50cy5hcHBlbmQoUmVhZHlUb1Nob3cpOwogICAgIH0KIAogICAgIHZvaWQgdmll
d0Nsb3NlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgewotICAgICAgICBnX2Fzc2VydCht
X3dlYlZpZXcgIT0gd2ViVmlldyk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGhleChtX3dlYlZpZXcs
ICE9LCB3ZWJWaWV3KTsKIAogICAgICAgICBtX3dlYlZpZXdFdmVudHMuYXBwZW5kKENsb3NlKTsK
ICAgICAgICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7CkBAIC0yNTgsNyArMjU4LDcgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYlByb2Nlc3NMaW1pdChNdWx0aXByb2Nlc3NUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogICAgIC8vIENyZWF0ZSB0d28gd2ViIHZpZXdzIGJ1dCB0aGVyZSBzaG91bGQg
YmUgb25seSBvbmUgd2ViIHByb2Nlc3MuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bVZpZXdzOyBpKyspIHsKICAgICAgICAgdGVzdC0+bG9hZFdlYlZpZXdBbmRXYWl0VW50aWxMb2Fk
ZWQoaSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfVklFVyh0ZXN0LT5tX3dlYlZp
ZXdzW2ldLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1dFQl9WSUVX
KHRlc3QtPm1fd2ViVmlld3NbaV0uZ2V0KCkpKTsKICAgICB9CiAKICAgICBnX2Fzc2VydF9jbXB1
aW50KHRlc3QtPm1faW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNTaWduYWxDb3VudCwgPT0sIDEpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RSZXNv
dXJjZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RSZXNv
dXJjZXMuY3BwCmluZGV4IDM0NzA3MjBmNTdkYjBlOTk5MzM4YzhlZDQ1NWRjMDk2YmMwODEzZjAu
LjY1ZWYwZmQ1ODc3MjAyOTc3NDMxZTRkZGNhNWViYmE4MDRlODZjZDMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0UmVzb3VyY2VzLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFJlc291cmNlcy5jcHAK
QEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VSZWNl
aXZlZFJlc3BvbnNlQ2FsbGJhY2soV2ViS2l0V2ViUmVzb3VyY2UqIHJlc291cmNlLCBHUGFyYW1T
cGVjKiwgUmVzb3VyY2VzVGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtp
dF93ZWJfcmVzb3VyY2VfZ2V0X3Jlc3BvbnNlKHJlc291cmNlKSk7CisgICAgICAgIGdfYXNzZXJ0
X25vbm51bGwod2Via2l0X3dlYl9yZXNvdXJjZV9nZXRfcmVzcG9uc2UocmVzb3VyY2UpKTsKICAg
ICAgICAgdGVzdC0+cmVzb3VyY2VSZWNlaXZlZFJlc3BvbnNlKHJlc291cmNlKTsKICAgICB9CiAK
QEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VGYWls
ZWRDYWxsYmFjayhXZWJLaXRXZWJSZXNvdXJjZSogcmVzb3VyY2UsIEdFcnJvciogZXJyb3IsIFJl
c291cmNlc1Rlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBnX2Fzc2VydChlcnJvcik7CisgICAg
ICAgIGdfYXNzZXJ0X25vbm51bGwoZXJyb3IpOwogICAgICAgICB0ZXN0LT5yZXNvdXJjZUZhaWxl
ZChyZXNvdXJjZSwgZXJyb3IpOwogICAgIH0KIApAQCAtMTY0LDggKzE2NCw4IEBAIHB1YmxpYzoK
ICAgICAgICAgc2l6ZV90IGRhdGFTaXplOwogICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4g
ZXJyb3I7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSB3ZWJraXRfd2ViX3Jlc291cmNl
X2dldF9kYXRhX2ZpbmlzaChXRUJLSVRfV0VCX1JFU09VUkNFKG9iamVjdCksIHJlc3VsdCwgJmRh
dGFTaXplLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkp
OwotICAgICAgICBnX2Fzc2VydChkYXRhKTsKKyAgICAgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJy
b3IuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKGRhdGEpOwogICAgICAgICBnX2Fz
c2VydF9jbXBpbnQoZGF0YVNpemUsID4sIDApOwogCiAgICAgICAgIFJlc291cmNlc1Rlc3QqIHRl
c3QgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZXNUZXN0Kj4odXNlckRhdGEpOwpAQCAtMTgzLDIwICsx
ODMsMjAgQEAgcHVibGljOgogICAgICAgICBjb25zdCBjaGFyKiB1cmkgPSB3ZWJraXRfd2ViX3Jl
c291cmNlX2dldF91cmkocmVzb3VyY2UpOwogICAgICAgICBpZiAodXJpID09IGtTZXJ2ZXItPmdl
dFVSSUZvclBhdGgoIi8iKSkgewogICAgICAgICAgICAgZ19hc3NlcnRfY21waW50KG1fcmVzb3Vy
Y2VEYXRhU2l6ZSwgPT0sIHN0cmxlbihrSW5kZXhIdG1sKSk7Ci0gICAgICAgICAgICBnX2Fzc2Vy
dCghc3RybmNtcChtX3Jlc291cmNlRGF0YS5nZXQoKSwga0luZGV4SHRtbCwgbV9yZXNvdXJjZURh
dGFTaXplKSk7CisgICAgICAgICAgICBnX2Fzc2VydF9jbXBpbnQoc3RybmNtcChtX3Jlc291cmNl
RGF0YS5nZXQoKSwga0luZGV4SHRtbCwgbV9yZXNvdXJjZURhdGFTaXplKSwgPT0sIDApOwogICAg
ICAgICB9IGVsc2UgaWYgKHVyaSA9PSBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvc3R5bGUuY3Nz
IikpIHsKICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcGludChtX3Jlc291cmNlRGF0YVNpemUsID09
LCBzdHJsZW4oa1N0eWxlQ1NTKSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghc3RybmNtcChtX3Jl
c291cmNlRGF0YS5nZXQoKSwga1N0eWxlQ1NTLCBtX3Jlc291cmNlRGF0YVNpemUpKTsKKyAgICAg
ICAgICAgIGdfYXNzZXJ0X2NtcGludChzdHJuY21wKG1fcmVzb3VyY2VEYXRhLmdldCgpLCBrU3R5
bGVDU1MsIG1fcmVzb3VyY2VEYXRhU2l6ZSksID09LCAwKTsKICAgICAgICAgfSBlbHNlIGlmICh1
cmkgPT0ga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2phdmFzY3JpcHQuanMiKSkgewogICAgICAg
ICAgICAgZ19hc3NlcnRfY21waW50KG1fcmVzb3VyY2VEYXRhU2l6ZSwgPT0sIHN0cmxlbihrSmF2
YXNjcmlwdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQoIXN0cm5jbXAobV9yZXNvdXJjZURhdGEu
Z2V0KCksIGtKYXZhc2NyaXB0LCBtX3Jlc291cmNlRGF0YVNpemUpKTsKKyAgICAgICAgICAgIGdf
YXNzZXJ0X2NtcGludChzdHJuY21wKG1fcmVzb3VyY2VEYXRhLmdldCgpLCBrSmF2YXNjcmlwdCwg
bV9yZXNvdXJjZURhdGFTaXplKSwgPT0sIDApOwogICAgICAgICB9IGVsc2UgaWYgKHVyaSA9PSBr
U2VydmVyLT5nZXRVUklGb3JQYXRoKCIvYmxhbmsuaWNvIikpIHsKICAgICAgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4gZmlsZVBhdGgoZ19idWlsZF9maWxlbmFtZShUZXN0OjpnZXRSZXNvdXJjZXNE
aXIoKS5kYXRhKCksICJibGFuay5pY28iLCBudWxscHRyKSk7CiAgICAgICAgICAgICBHVW5pcXVl
T3V0UHRyPGNoYXI+IGNvbnRlbnRzOwogICAgICAgICAgICAgZ3NpemUgY29udGVudHNMZW5ndGg7
CiAgICAgICAgICAgICBnX2ZpbGVfZ2V0X2NvbnRlbnRzKGZpbGVQYXRoLmdldCgpLCAmY29udGVu
dHMub3V0UHRyKCksICZjb250ZW50c0xlbmd0aCwgbnVsbHB0cik7CiAgICAgICAgICAgICBnX2Fz
c2VydF9jbXBpbnQobV9yZXNvdXJjZURhdGFTaXplLCA9PSwgY29udGVudHNMZW5ndGgpOwotICAg
ICAgICAgICAgZ19hc3NlcnQoIW1lbWNtcChtX3Jlc291cmNlRGF0YS5nZXQoKSwgY29udGVudHMu
Z2V0KCksIGNvbnRlbnRzTGVuZ3RoKSk7CisgICAgICAgICAgICBnX2Fzc2VydF9jbXBtZW0obV9y
ZXNvdXJjZURhdGEuZ2V0KCksIGNvbnRlbnRzTGVuZ3RoLCBjb250ZW50cy5nZXQoKSwgY29udGVu
dHNMZW5ndGgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFj
aGVkKCk7CiAgICAgICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CkBAIC0yMTIsMjYgKzIxMiwy
NiBAQCBwdWJsaWM6CiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Jlc291cmNlcyhSZXNvdXJjZXNU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIC8vIE5vdGhpbmcgbG9hZGVkIHlldCwg
dGhlcmUgc2hvdWxuZCd0IGJlIHJlc291cmNlcy4KLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92
aWV3X2dldF9tYWluX3Jlc291cmNlKHRlc3QtPm1fd2ViVmlldykpOwotICAgIGdfYXNzZXJ0KCF0
ZXN0LT5zdWJyZXNvdXJjZXMoKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2ViX3ZpZXdf
Z2V0X21haW5fcmVzb3VyY2UodGVzdC0+bV93ZWJWaWV3KSk7CisgICAgZ19hc3NlcnRfbnVsbCh0
ZXN0LT5zdWJyZXNvdXJjZXMoKSk7CiAKICAgICAvLyBMb2FkIHNpbXBsZSBwYWdlIHdpdGhvdXQg
c3VicmVzb3VyY2VzLgogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT5UZXN0aW5nIFdl
YktpdEdUSys8L2JvZHk+PC9odG1sPiIsIDApOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5p
c2hlZCgpOwogICAgIFdlYktpdFdlYlJlc291cmNlKiByZXNvdXJjZSA9IHdlYmtpdF93ZWJfdmll
d19nZXRfbWFpbl9yZXNvdXJjZSh0ZXN0LT5tX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KHJlc291
cmNlKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHJlc291cmNlKTsKICAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X3dlYl92aWV3X2dldF91cmkodGVzdC0+bV93ZWJWaWV3KSwgPT0sIHdlYmtpdF93
ZWJfcmVzb3VyY2VfZ2V0X3VyaShyZXNvdXJjZSkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5zdWJy
ZXNvdXJjZXMoKSk7CisgICAgZ19hc3NlcnRfbnVsbCh0ZXN0LT5zdWJyZXNvdXJjZXMoKSk7CiAK
ICAgICAvLyBMb2FkIHNpbXBsZSBwYWdlIHdpdGggc3VicmVzb3VyY2VzLgogICAgIHRlc3QtPmxv
YWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2Fp
dFVudGlsUmVzb3VyY2VzTG9hZGVkKDQpOwogCiAgICAgcmVzb3VyY2UgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X21haW5fcmVzb3VyY2UodGVzdC0+bV93ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChyZXNv
dXJjZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChyZXNvdXJjZSk7CiAgICAgZ19hc3NlcnRfY21w
c3RyKHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHRlc3QtPm1fd2ViVmlldyksID09LCB3ZWJraXRf
d2ViX3Jlc291cmNlX2dldF91cmkocmVzb3VyY2UpKTsKICAgICBHTGlzdCogc3VicmVzb3VyY2Vz
ID0gdGVzdC0+c3VicmVzb3VyY2VzKCk7Ci0gICAgZ19hc3NlcnQoc3VicmVzb3VyY2VzKTsKKyAg
ICBnX2Fzc2VydF9ub25udWxsKHN1YnJlc291cmNlcyk7CiAgICAgZ19hc3NlcnRfY21waW50KGdf
bGlzdF9sZW5ndGgoc3VicmVzb3VyY2VzKSwgPT0sIDMpOwogCiAjaWYgMApAQCAtMzE1LDcgKzMx
NSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBpZiAoIW1fbG9hZEV2ZW50cy5jb250YWlucyhGYWls
ZWQpKSB7CiAgICAgICAgICAgICBXZWJLaXRVUklSZXNwb25zZSogcmVzcG9uc2UgPSB3ZWJraXRf
d2ViX3Jlc291cmNlX2dldF9yZXNwb25zZShtX3Jlc291cmNlLmdldCgpKTsKLSAgICAgICAgICAg
IGdfYXNzZXJ0KHJlc3BvbnNlKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X25vbm51bGwocmVzcG9u
c2UpOwogICAgICAgICAgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF91cmlfcmVzcG9uc2VfZ2V0
X2NvbnRlbnRfbGVuZ3RoKHJlc3BvbnNlKSwgPT0sIG1fcmVzb3VyY2VEYXRhUmVjZWl2ZWQpOwog
ICAgICAgICB9CiAgICAgICAgIG1fbG9hZEV2ZW50cy5hcHBlbmQoRmluaXNoZWQpOwpAQCAtMzM4
LDcgKzMzOCw3IEBAIHB1YmxpYzoKICAgICBXZWJLaXRVUklSZXNwb25zZSogd2FpdFVudGlsUmVz
b3VyY2VMb2FkRmluaXNoZWRBbmRSZXR1cm5VUklSZXNwb25zZSgpCiAgICAgewogICAgICAgICB3
YWl0VW50aWxSZXNvdXJjZUxvYWRGaW5pc2hlZCgpOwotICAgICAgICBnX2Fzc2VydChtX3Jlc291
cmNlKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChtX3Jlc291cmNlKTsKICAgICAgICAgcmV0
dXJuIHdlYmtpdF93ZWJfcmVzb3VyY2VfZ2V0X3Jlc3BvbnNlKG1fcmVzb3VyY2UuZ2V0KCkpOwog
ICAgIH0KIApAQCAtMzUxLDcgKzM1MSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJSZXNvdXJjZUxv
YWRpbmcoU2luZ2xlUmVzb3VyY2VMb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAg
ICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9qYXZhc2NyaXB0Lmh0bWwi
KS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbFJlc291cmNlTG9hZEZpbmlzaGVkKCk7Ci0g
ICAgZ19hc3NlcnQodGVzdC0+bV9yZXNvdXJjZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbCh0ZXN0
LT5tX3Jlc291cmNlKTsKICAgICBWZWN0b3I8U2luZ2xlUmVzb3VyY2VMb2FkVGVzdDo6TG9hZEV2
ZW50cz4mIGV2ZW50cyA9IHRlc3QtPm1fbG9hZEV2ZW50czsKICAgICBnX2Fzc2VydF9jbXBpbnQo
ZXZlbnRzLnNpemUoKSwgPT0sIDUpOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMF0sID09
LCBTaW5nbGVSZXNvdXJjZUxvYWRUZXN0OjpTdGFydGVkKTsKQEAgLTM2Myw3ICszNjMsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViUmVzb3VyY2VMb2FkaW5nKFNpbmdsZVJlc291cmNlTG9hZFRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi9yZWRpcmVjdGVkLWNzcy5odG1sIikuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0
VW50aWxSZXNvdXJjZUxvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fcmVzb3Vy
Y2UpOworICAgIGdfYXNzZXJ0X25vbm51bGwodGVzdC0+bV9yZXNvdXJjZSk7CiAgICAgZ19hc3Nl
cnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCA2KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZl
bnRzWzBdLCA9PSwgU2luZ2xlUmVzb3VyY2VMb2FkVGVzdDo6U3RhcnRlZCk7CiAgICAgZ19hc3Nl
cnRfY21waW50KGV2ZW50c1sxXSwgPT0sIFNpbmdsZVJlc291cmNlTG9hZFRlc3Q6OlNlbnRSZXF1
ZXN0KTsKQEAgLTM3NSw3ICszNzUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViUmVzb3VyY2VMb2Fk
aW5nKFNpbmdsZVJlc291cmNlTG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICB0
ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbnZhbGlkLWNzcy5odG1sIiku
ZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxSZXNvdXJjZUxvYWRGaW5pc2hlZCgpOwotICAg
IGdfYXNzZXJ0KHRlc3QtPm1fcmVzb3VyY2UpOworICAgIGdfYXNzZXJ0X25vbm51bGwodGVzdC0+
bV9yZXNvdXJjZSk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCA0KTsK
ICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwgU2luZ2xlUmVzb3VyY2VMb2FkVGVz
dDo6U3RhcnRlZCk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1sxXSwgPT0sIFNpbmdsZVJl
c291cmNlTG9hZFRlc3Q6OlNlbnRSZXF1ZXN0KTsKQEAgLTQ0MCw3ICs0NDAsNyBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2ViUmVzb3VyY2VTdWdnZXN0ZWRGaWxlbmFtZShTaW5nbGVSZXNvdXJjZUxvYWRU
ZXN0KiB0ZXN0LCBnY29ucwogCiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQ
YXRoKCIvaW1hZ2UuaHRtbCIpLmRhdGEoKSk7CiAgICAgcmVzcG9uc2UgPSB0ZXN0LT53YWl0VW50
aWxSZXNvdXJjZUxvYWRGaW5pc2hlZEFuZFJldHVyblVSSVJlc3BvbnNlKCk7Ci0gICAgZ19hc3Nl
cnQoIXdlYmtpdF91cmlfcmVzcG9uc2VfZ2V0X3N1Z2dlc3RlZF9maWxlbmFtZShyZXNwb25zZSkp
OworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3VyaV9yZXNwb25zZV9nZXRfc3VnZ2VzdGVkX2Zp
bGVuYW1lKHJlc3BvbnNlKSk7CiB9CiAKIGNsYXNzIFJlc291cmNlVVJJVHJhY2tpbmdUZXN0OiBw
dWJsaWMgU2luZ2xlUmVzb3VyY2VMb2FkVGVzdCB7CkBAIC00NTQsNyArNDU0LDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIHZvaWQgdXJpQ2hhbmdlZChXZWJLaXRXZWJSZXNvdXJjZSogcmVzb3Vy
Y2UsIEdQYXJhbVNwZWMqLCBSZXNvdXJjZVVSSVRyYWNraW5nVGVzdCogdGVzdCkKICAgICB7Ci0g
ICAgICAgIGdfYXNzZXJ0KHJlc291cmNlID09IHRlc3QtPm1fcmVzb3VyY2UuZ2V0KCkpOworICAg
ICAgICBnX2Fzc2VydF9jbXBoZXgocmVzb3VyY2UsID09LCB0ZXN0LT5tX3Jlc291cmNlLmdldCgp
KTsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwgIT0s
IHdlYmtpdF93ZWJfcmVzb3VyY2VfZ2V0X3VyaSh0ZXN0LT5tX3Jlc291cmNlLmdldCgpKSk7CiAg
ICAgICAgIHRlc3QtPm1fYWN0aXZlVVJJID0gd2Via2l0X3dlYl9yZXNvdXJjZV9nZXRfdXJpKHRl
c3QtPm1fcmVzb3VyY2UuZ2V0KCkpOwogICAgIH0KQEAgLTUyOCw3ICs1MjgsNyBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2ViUmVzb3VyY2VHZXREYXRhKFJlc291cmNlc1Rlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiAgICAgdGVzdC0+d2FpdFVudGlsUmVzb3VyY2VzTG9hZGVkKDQpOwogCiAgICAgV2Vi
S2l0V2ViUmVzb3VyY2UqIHJlc291cmNlID0gd2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jlc291
cmNlKHRlc3QtPm1fd2ViVmlldyk7Ci0gICAgZ19hc3NlcnQocmVzb3VyY2UpOworICAgIGdfYXNz
ZXJ0X25vbm51bGwocmVzb3VyY2UpOwogICAgIHRlc3QtPmNoZWNrUmVzb3VyY2VEYXRhKHJlc291
cmNlKTsKIAogICAgIEdMaXN0KiBzdWJyZXNvdXJjZXMgPSB0ZXN0LT5zdWJyZXNvdXJjZXMoKTsK
QEAgLTU1OCw3ICs1NTgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViUmVzb3VyY2VHZXREYXRhRXJy
b3IoVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAgICAgc2l6ZV90IGRhdGFTaXplOwog
ICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIGF1dG8qIGRhdGEg
PSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9kYXRhX2ZpbmlzaChXRUJLSVRfV0VCX1JFU09VUkNF
KHNvdXJjZSksIHJlc3VsdCwgJmRhdGFTaXplLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgICAgICBn
X2Fzc2VydCghZGF0YSk7CisgICAgICAgIGdfYXNzZXJ0X251bGwoZGF0YSk7CiAgICAgICAgIGdf
YXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNFTExF
RCk7CiAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQoc3RhdGljX2Nhc3Q8R01haW5Mb29wKj4odXNl
ckRhdGEpKTsKICAgICB9LCBtYWluTG9vcC5nZXQoKSk7CkBAIC01NzIsMjYgKzU3MiwyNiBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Jlc291cmNlc0hpc3RvcnlDYWNoZShTaW5nbGVSZXNvdXJj
ZUxvYWRUZXN0KiB0ZXN0LCBnY29ucwogICAgIHRlc3QtPmxvYWRVUkkoamF2YXNjcmlwdFVSSS5k
YXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbFJlc291cmNlTG9hZEZpbmlzaGVkKCk7CiAgICAg
V2ViS2l0V2ViUmVzb3VyY2UqIHJlc291cmNlID0gd2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jl
c291cmNlKHRlc3QtPm1fd2ViVmlldyk7Ci0gICAgZ19hc3NlcnQocmVzb3VyY2UpOworICAgIGdf
YXNzZXJ0X25vbm51bGwocmVzb3VyY2UpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vi
X3Jlc291cmNlX2dldF91cmkocmVzb3VyY2UpLCA9PSwgamF2YXNjcmlwdFVSSS5kYXRhKCkpOwog
CiAgICAgQ1N0cmluZyBzaW1wbGVTdHlsZUNTU1VSSSA9IGtTZXJ2ZXItPmdldFVSSUZvclBhdGgo
Ii9zaW1wbGUtc3R5bGUtY3NzLmh0bWwiKTsKICAgICB0ZXN0LT5sb2FkVVJJKHNpbXBsZVN0eWxl
Q1NTVVJJLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsUmVzb3VyY2VMb2FkRmluaXNoZWQo
KTsKICAgICByZXNvdXJjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9yZXNvdXJjZSh0ZXN0
LT5tX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KHJlc291cmNlKTsKKyAgICBnX2Fzc2VydF9ub25u
dWxsKHJlc291cmNlKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9yZXNvdXJjZV9n
ZXRfdXJpKHJlc291cmNlKSwgPT0sIHNpbXBsZVN0eWxlQ1NTVVJJLmRhdGEoKSk7CiAKICAgICB0
ZXN0LT5nb0JhY2soKTsKICAgICB0ZXN0LT53YWl0VW50aWxSZXNvdXJjZUxvYWRGaW5pc2hlZCgp
OwogICAgIHJlc291cmNlID0gd2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jlc291cmNlKHRlc3Qt
Pm1fd2ViVmlldyk7Ci0gICAgZ19hc3NlcnQocmVzb3VyY2UpOworICAgIGdfYXNzZXJ0X25vbm51
bGwocmVzb3VyY2UpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX3Jlc291cmNlX2dl
dF91cmkocmVzb3VyY2UpLCA9PSwgamF2YXNjcmlwdFVSSS5kYXRhKCkpOwogCiAgICAgdGVzdC0+
Z29Gb3J3YXJkKCk7CiAgICAgdGVzdC0+d2FpdFVudGlsUmVzb3VyY2VMb2FkRmluaXNoZWQoKTsK
ICAgICByZXNvdXJjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9yZXNvdXJjZSh0ZXN0LT5t
X3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KHJlc291cmNlKTsKKyAgICBnX2Fzc2VydF9ub25udWxs
KHJlc291cmNlKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9yZXNvdXJjZV9nZXRf
dXJpKHJlc291cmNlKSwgPT0sIHNpbXBsZVN0eWxlQ1NTVVJJLmRhdGEoKSk7CiB9CiAKQEAgLTY0
OSw3ICs2NDksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViUmVzb3VyY2VTZW5kUmVxdWVzdChTZW5k
UmVxdWVzdFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+c2V0RXhwZWN0ZWRO
ZXdSZXNvdXJjZVVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvamF2YXNjcmlwdC5qcyIpKTsK
ICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoInJlbGF0aXZlLWphdmFz
Y3JpcHQuaHRtbCIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsUmVzb3VyY2VMb2FkRmlu
aXNoZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3Jlc291cmNlKTsKKyAgICBnX2Fzc2VydF9u
b25udWxsKHRlc3QtPm1fcmVzb3VyY2UpOwogCiAgICAgVmVjdG9yPFNpbmdsZVJlc291cmNlTG9h
ZFRlc3Q6OkxvYWRFdmVudHM+JiBldmVudHMgPSB0ZXN0LT5tX2xvYWRFdmVudHM7CiAgICAgZ19h
c3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCA1KTsKQEAgLTY2NCw3ICs2NjQsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViUmVzb3VyY2VTZW5kUmVxdWVzdChTZW5kUmVxdWVzdFRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+c2V0RXhwZWN0ZWRDYW5jZWxsZWRSZXNvdXJj
ZVVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvY2FuY2VsLXRoaXMuanMiKSk7CiAgICAgdGVz
dC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvcmVzb3VyY2UtdG8tY2FuY2VsLmh0
bWwiKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbFJlc291cmNlTG9hZEZpbmlzaGVkKCk7
Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9yZXNvdXJjZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbCh0
ZXN0LT5tX3Jlc291cmNlKTsKIAogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9
PSwgMyk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1swXSwgPT0sIFNpbmdsZVJlc291cmNl
TG9hZFRlc3Q6OlN0YXJ0ZWQpOwpAQCAtNjc3LDcgKzY3Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJSZXNvdXJjZVNlbmRSZXF1ZXN0KFNlbmRSZXF1ZXN0VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKICAgICB0ZXN0LT5zZXRFeHBlY3RlZE5ld1Jlc291cmNlVVJJQWZ0ZXJSZWRpcmVjdGlvbihr
U2VydmVyLT5nZXRVUklGb3JQYXRoKCIvamF2YXNjcmlwdC1hZnRlci1yZWRpcmVjdGlvbi5qcyIp
KTsKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoInJlZGlyZWN0ZWQt
amF2YXNjcmlwdC5odG1sIikuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxSZXNvdXJjZUxv
YWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fcmVzb3VyY2UpOworICAgIGdfYXNz
ZXJ0X25vbm51bGwodGVzdC0+bV9yZXNvdXJjZSk7CiAKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZl
bnRzLnNpemUoKSwgPT0sIDYpOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMF0sID09LCBT
aW5nbGVSZXNvdXJjZUxvYWRUZXN0OjpTdGFydGVkKTsKQEAgLTY5Myw3ICs2OTMsNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViUmVzb3VyY2VTZW5kUmVxdWVzdChTZW5kUmVxdWVzdFRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+c2V0RXhwZWN0ZWRDYW5jZWxsZWRSZXNvdXJjZVVS
SShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvcmVkaXJlY3RlZC10by1jYW5jZWwuanMiKSk7CiAg
ICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvcmVkaXJlY3RlZC10by1j
YW5jZWwuaHRtbCIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsUmVzb3VyY2VMb2FkRmlu
aXNoZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3Jlc291cmNlKTsKKyAgICBnX2Fzc2VydF9u
b25udWxsKHRlc3QtPm1fcmVzb3VyY2UpOwogCiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5z
aXplKCksID09LCA0KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwgU2luZ2xl
UmVzb3VyY2VMb2FkVGVzdDo6U3RhcnRlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAKaW5kZXggNzBlNjA2Yjk4NzIxMDZiYTdjMDNjNGE5
YzdhODA1MmNlNjZjY2I2My4uNjZjNzg2MzUxYWRlZGE1NjliZjdlNDJkMjQzNmZjOTg4NDI0ZWM0
NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RT
U0wuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0U1NM
LmNwcApAQCAtNzIsMTkgKzcyLDE4IEBAIHN0YXRpYyB2b2lkIHRlc3RTU0woU1NMVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIHRlc3QtPmxvYWRVUkkoa0h0dHBzU2VydmVyLT5nZXRV
UklGb3JQYXRoKCIvIikuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQo
KTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2NlcnRpZmljYXRlKTsKKyAgICBnX2Fzc2VydF9ub25u
dWxsKHRlc3QtPm1fY2VydGlmaWNhdGUpOwogICAgIC8vIFNlbGYtc2lnbmVkIGNlcnRpZmljYXRl
IGhhcyBhIG51bGxwdHIgaXNzdWVyLgotICAgIGdfYXNzZXJ0KCFnX3Rsc19jZXJ0aWZpY2F0ZV9n
ZXRfaXNzdWVyKHRlc3QtPm1fY2VydGlmaWNhdGUuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9udWxs
KGdfdGxzX2NlcnRpZmljYXRlX2dldF9pc3N1ZXIodGVzdC0+bV9jZXJ0aWZpY2F0ZS5nZXQoKSkp
OwogICAgIC8vIFdlIGFsd2F5cyBleHBlY3QgZXJyb3JzIGJlY2F1c2Ugd2UgYXJlIHVzaW5nIGEg
c2VsZi1zaWduZWQgY2VydGlmaWNhdGUsCiAgICAgLy8gYnV0IG9ubHkgR19UTFNfQ0VSVElGSUNB
VEVfVU5LTk9XTl9DQSBmbGFncyBzaG91bGQgYmUgcHJlc2VudC4KLSAgICBnX2Fzc2VydCh0ZXN0
LT5tX3Rsc0Vycm9ycyk7CiAgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX3Rsc0Vycm9ycywg
PT0sIEdfVExTX0NFUlRJRklDQVRFX1VOS05PV05fQ0EpOwogCiAgICAgLy8gTm9uIEhUVFBTIGxv
YWRzIHNob3VsZG4ndCBoYXZlIGEgY2VydGlmaWNhdGUgbm9yIGVycm9ycy4KICAgICB0ZXN0LT5s
b2FkSHRtbChpbmRleEhUTUwsIDApOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2NlcnRpZmljYXRlKTsKLSAgICBnX2Fzc2VydCghdGVz
dC0+bV90bHNFcnJvcnMpOworICAgIGdfYXNzZXJ0X251bGwodGVzdC0+bV9jZXJ0aWZpY2F0ZSk7
CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX3Rsc0Vycm9ycywgPT0sIDApOwogCiAgICAg
d2Via2l0X3dlYl9jb250ZXh0X3NldF90bHNfZXJyb3JzX3BvbGljeShjb250ZXh0LCBvcmlnaW5h
bFBvbGljeSk7CiB9CkBAIC0xMDIsNyArMTAxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZv
aWQgaW5zZWN1cmVDb250ZW50RGV0ZWN0ZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudCBldmVudCwgSW5zZWN1cmVDb250ZW50VGVzdCog
dGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYlZpZXcgPT0gdGVzdC0+bV93ZWJWaWV3
KTsKKyAgICAgICAgZ19hc3NlcnRfY21waGV4KHdlYlZpZXcsID09LCB0ZXN0LT5tX3dlYlZpZXcp
OwogCiAgICAgICAgIGlmIChldmVudCA9PSBXRUJLSVRfSU5TRUNVUkVfQ09OVEVOVF9SVU4pCiAg
ICAgICAgICAgICB0ZXN0LT5tX2luc2VjdXJlQ29udGVudFJ1biA9IHRydWU7CkBAIC0xMjQsMTAg
KzEyMywxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0SW5zZWN1cmVDb250ZW50KEluc2VjdXJlQ29udGVu
dFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bG9hZFVSSShrSHR0cHNTZXJ2
ZXItPmdldFVSSUZvclBhdGgoIi9pbnNlY3VyZS1jb250ZW50LyIpLmRhdGEoKSk7CiAgICAgdGVz
dC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCghdGVzdC0+bV9pbnNl
Y3VyZUNvbnRlbnRSdW4pOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPm1faW5zZWN1cmVDb250
ZW50UnVuKTsKICAgICAvLyBJbWFnZXMgYXJlIGN1cnJlbnRseSBhbHdheXMgZGlzcGxheWVkLCBl
dmVuIGJ5cGFzc2luZyBtaXhlZCBjb250ZW50IHNldHRpbmdzLiBDaGVjawogICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI0NjkKLSAgICBnX2Fzc2VydCh0
ZXN0LT5tX2luc2VjdXJlQ29udGVudERpc3BsYXllZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0
LT5tX2luc2VjdXJlQ29udGVudERpc3BsYXllZCk7CiAKICAgICB3ZWJraXRfd2ViX2NvbnRleHRf
c2V0X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRleHQsIG9yaWdpbmFsUG9saWN5KTsKIH0KQEAgLTEz
OCwyNiArMTM3LDI2IEBAIHN0YXRpYyB2b2lkIHRlc3RUTFNFcnJvcnNQb2xpY3koU1NMVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0ID0g
d2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldyk7CiAgICAgLy8gVExT
IGVycm9ycyBhcmUgdHJlYXRlZCBhcyB0cmFuc3BvcnQgZmFpbHVyZXMgYnkgZGVmYXVsdC4KLSAg
ICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRl
eHQpID09IFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMKTsKKyAgICBnX2Fzc2VydF9jbXBp
bnQod2Via2l0X3dlYl9jb250ZXh0X2dldF90bHNfZXJyb3JzX3BvbGljeShjb250ZXh0KSwgPT0s
IFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMKTsKIAogICAgIGFzc2VydElmU1NMUmVxdWVz
dFByb2Nlc3NlZCA9IHRydWU7CiAgICAgdGVzdC0+bG9hZFVSSShrSHR0cHNTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi8iKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fbG9hZEZhaWxlZCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+
bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZEZh
aWxlZCkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRy
YWNraW5nVGVzdDo6TG9hZENvbW1pdHRlZCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9s
b2FkRmFpbGVkKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlu
cyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRGYWlsZWQpKTsKKyAgICBnX2Fzc2Vy
dF9mYWxzZSh0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6TG9h
ZENvbW1pdHRlZCkpOwogICAgIGFzc2VydElmU1NMUmVxdWVzdFByb2Nlc3NlZCA9IGZhbHNlOwog
CiAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF90bHNfZXJyb3JzX3BvbGljeShjb250ZXh0LCBX
RUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfSUdOT1JFKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2Vi
X2NvbnRleHRfZ2V0X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRleHQpID09IFdFQktJVF9UTFNfRVJS
T1JTX1BPTElDWV9JR05PUkUpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfd2ViX2NvbnRl
eHRfZ2V0X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRleHQpLCA9PSwgV0VCS0lUX1RMU19FUlJPUlNf
UE9MSUNZX0lHTk9SRSk7CiAKICAgICB0ZXN0LT5tX2xvYWRGYWlsZWQgPSBmYWxzZTsKICAgICB0
ZXN0LT5sb2FkVVJJKGtIdHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CiAg
ICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1f
bG9hZEZhaWxlZCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV9sb2FkRmFpbGVkKTsKIAog
ICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGxzX2Vycm9yc19wb2xpY3koY29udGV4dCwgV0VC
S0lUX1RMU19FUlJPUlNfUE9MSUNZX0ZBSUwpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfY29u
dGV4dF9nZXRfdGxzX2Vycm9yc19wb2xpY3koY29udGV4dCkgPT0gV0VCS0lUX1RMU19FUlJPUlNf
UE9MSUNZX0ZBSUwpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0
X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRleHQpLCA9PSwgV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZ
X0ZBSUwpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0VExTRXJyb3JzUmVkaXJlY3QoU1NMVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTE2OSw5ICsxNjgsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0
VExTRXJyb3JzUmVkaXJlY3QoU1NMVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBhc3Nl
cnRJZlNTTFJlcXVlc3RQcm9jZXNzZWQgPSB0cnVlOwogICAgIHRlc3QtPmxvYWRVUkkoa0h0dHBz
U2VydmVyLT5nZXRVUklGb3JQYXRoKCIvcmVkaXJlY3QiKS5kYXRhKCkpOwogICAgIHRlc3QtPndh
aXRVbnRpbExvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fbG9hZEZhaWxlZCk7
Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rl
c3Q6OlByb3Zpc2lvbmFsTG9hZEZhaWxlZCkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2xvYWRF
dmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6TG9hZENvbW1pdHRlZCkpOworICAgIGdf
YXNzZXJ0X3RydWUodGVzdC0+bV9sb2FkRmFpbGVkKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3Qt
Pm1fbG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRG
YWlsZWQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMo
TG9hZFRyYWNraW5nVGVzdDo6TG9hZENvbW1pdHRlZCkpOwogICAgIGFzc2VydElmU1NMUmVxdWVz
dFByb2Nlc3NlZCA9IGZhbHNlOwogCiAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF90bHNfZXJy
b3JzX3BvbGljeShjb250ZXh0LCBvcmlnaW5hbFBvbGljeSk7CkBAIC0xOTQsOSArMTkzLDkgQEAg
c3RhdGljIHZvaWQgdGVzdFRMU0Vycm9yc0hUVFBBdXRoKFNTTFRlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiAgICAgZ19zaWduYWxfY29ubmVjdCh0ZXN0LT5tX3dlYlZpZXcsICJhdXRoZW50aWNh
dGUiLCBHX0NBTExCQUNLKHdlYlZpZXdBdXRoZW50aWNhdGlvbkNhbGxiYWNrKSwgTlVMTCk7CiAg
ICAgdGVzdC0+bG9hZFVSSShrSHR0cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9hdXRoIikuZGF0
YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLSAgICBnX2Fzc2VydCh0
ZXN0LT5tX2xvYWRGYWlsZWQpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fbG9hZEV2ZW50cy5jb250
YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRGYWlsZWQpKTsKLSAgICBnX2Fz
c2VydCghdGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRD
b21taXR0ZWQpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fbG9hZEZhaWxlZCk7CisgICAg
Z19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVz
dDo6UHJvdmlzaW9uYWxMb2FkRmFpbGVkKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV9s
b2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRDb21taXR0ZWQpKTsKICAg
ICBhc3NlcnRJZlNTTFJlcXVlc3RQcm9jZXNzZWQgPSBmYWxzZTsKIAogICAgIHdlYmtpdF93ZWJf
Y29udGV4dF9zZXRfdGxzX2Vycm9yc19wb2xpY3koY29udGV4dCwgb3JpZ2luYWxQb2xpY3kpOwpA
QCAtMjUxLDcgKzI1MCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RMb2FkRmFpbGVkV2l0aFRMU0Vycm9y
cyhUTFNFcnJvcnNUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIC8vIFRoZSBsb2FkLWZh
aWxlZC13aXRoLXRscy1lcnJvcnMgc2lnbmFsIHNob3VsZCBiZSBlbWl0dGVkIHdoZW4gdGhlcmUg
aXMgYSBUTFMgZmFpbHVyZS4KICAgICB0ZXN0LT5sb2FkVVJJKGtIdHRwc1NlcnZlci0+Z2V0VVJJ
Rm9yUGF0aCgiL3Rlc3QtdGxzLyIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZp
bmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQoR19JU19UTFNfQ0VSVElGSUNBVEUodGVzdC0+Y2VydGlm
aWNhdGUoKSkpOworICAgIGdfYXNzZXJ0X3RydWUoR19JU19UTFNfQ0VSVElGSUNBVEUodGVzdC0+
Y2VydGlmaWNhdGUoKSkpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+dGxzRXJyb3JzKCks
ID09LCBHX1RMU19DRVJUSUZJQ0FURV9VTktOT1dOX0NBKTsKICAgICBnX2Fzc2VydF9jbXBzdHIo
dGVzdC0+aG9zdCgpLCA9PSwgc291cF91cmlfZ2V0X2hvc3Qoa0h0dHBzU2VydmVyLT5iYXNlVVJJ
KCkpKTsKICAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzBdLCA9PSwgTG9h
ZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkU3RhcnRlZCk7CkBAIC0zMzUsNyArMzM0LDcg
QEAgc3RhdGljIHZvaWQgdGVzdFN1YnJlc291cmNlTG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoVExT
U3VicmVzb3VyY2VUZXN0KiB0ZXN0LCBnY28KICAgICBhc3NlcnRJZlNTTFJlcXVlc3RQcm9jZXNz
ZWQgPSB0cnVlOwogICAgIHRlc3QtPmxvYWRVUkkoa0h0dHBTZXJ2ZXItPmdldFVSSUZvclBhdGgo
Ii8iKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbFN1YnJlc291cmNlTG9hZEZhaWwoKTsK
LSAgICBnX2Fzc2VydChHX0lTX1RMU19DRVJUSUZJQ0FURSh0ZXN0LT5tX2NlcnRpZmljYXRlLmdl
dCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShHX0lTX1RMU19DRVJUSUZJQ0FURSh0ZXN0LT5tX2Nl
cnRpZmljYXRlLmdldCgpKSk7CiAgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX3Rsc0Vycm9y
cywgPT0sIEdfVExTX0NFUlRJRklDQVRFX1VOS05PV05fQ0EpOwogICAgIGFzc2VydElmU1NMUmVx
dWVzdFByb2Nlc3NlZCA9IGZhbHNlOwogfQpAQCAtNDQ5LDcgKzQ0OCw3IEBAIHN0YXRpYyB2b2lk
IGh0dHBzU2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVz
c2FnZSwgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGdfYXNzZXJ0KCFhc3Nl
cnRJZlNTTFJlcXVlc3RQcm9jZXNzZWQpOworICAgIGdfYXNzZXJ0X2ZhbHNlKGFzc2VydElmU1NM
UmVxdWVzdFByb2Nlc3NlZCk7CiAKICAgICBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi8iKSkgewog
ICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJ
Q2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlD
bGllbnQuY3BwCmluZGV4IGU1YjZhODllODQ1NWZjM2I1M2I4MDBmMmIwMDg0OGRlN2IxMmYxZTMu
LjUwMWE5NTRiMGNiNjFjYjYzNmQ0ZjcxYjhhZDEyOWE5ZWIxOWQ0OTggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwCkBA
IC0xNDcsNyArMTQ3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHdl
YmtpdF9zY3JpcHRfZGlhbG9nX2dldF9tZXNzYWdlKGRpYWxvZyksID09LCBrQWxlcnREaWFsb2dN
ZXNzYWdlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdFQktJVF9TQ1JJUFRf
RElBTE9HX0NPTkZJUk06Ci0gICAgICAgICAgICBnX2Fzc2VydChtX3NjcmlwdERpYWxvZ0NvbmZp
cm1lZCk7CisgICAgICAgICAgICBnX2Fzc2VydF90cnVlKG1fc2NyaXB0RGlhbG9nQ29uZmlybWVk
KTsKICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2NyaXB0X2RpYWxvZ19nZXRf
bWVzc2FnZShkaWFsb2cpLCA9PSwgImNvbmZpcm1lZCIpOwogCiAgICAgICAgICAgICBicmVhazsK
QEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBtb3VzZVRhcmdl
dENoYW5nZWQoV2ViS2l0V2ViVmlldyosIFdlYktpdEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1
bHQsIGd1aW50IG1vZGlmaWVycywgVUlDbGllbnRUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAg
Z19hc3NlcnQoV0VCS0lUX0lTX0hJVF9URVNUX1JFU1VMVChoaXRUZXN0UmVzdWx0KSk7CisgICAg
ICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX0hJVF9URVNUX1JFU1VMVChoaXRUZXN0UmVzdWx0
KSk7CiAgICAgICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMo
R19PQkpFQ1QoaGl0VGVzdFJlc3VsdCkpOwogCiAgICAgICAgIHRlc3QtPm1fbW91c2VUYXJnZXRI
aXRUZXN0UmVzdWx0ID0gaGl0VGVzdFJlc3VsdDsKQEAgLTIyMywxMyArMjIzLDEzIEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBnYm9vbGVhbiBwZXJtaXNzaW9uUmVxdWVzdGVkKFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzdCogcmVxdWVzdCwgVUlDbGllbnRUZXN0KiB0ZXN0
KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX1BFUk1JU1NJT05fUkVRVUVTVChy
ZXF1ZXN0KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1BFUk1JU1NJT05fUkVR
VUVTVChyZXF1ZXN0KSk7CiAgICAgICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5U
ZXN0RmluaXNoZXMoR19PQkpFQ1QocmVxdWVzdCkpOwogCiAgICAgICAgIGlmICh0ZXN0LT5tX3Zl
cmlmeU1lZGlhVHlwZXMgJiYgV0VCS0lUX0lTX1VTRVJfTUVESUFfUEVSTUlTU0lPTl9SRVFVRVNU
KHJlcXVlc3QpKSB7CiAgICAgICAgICAgICBXZWJLaXRVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dCogdXNlck1lZGlhUmVxdWVzdCA9IFdFQktJVF9VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVT
VChyZXF1ZXN0KTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF91c2VyX21lZGlhX3Blcm1p
c3Npb25faXNfZm9yX2F1ZGlvX2RldmljZSh1c2VyTWVkaWFSZXF1ZXN0KSA9PSB0ZXN0LT5tX2V4
cGVjdGVkQXVkaW9NZWRpYSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfdXNlcl9tZWRp
YV9wZXJtaXNzaW9uX2lzX2Zvcl92aWRlb19kZXZpY2UodXNlck1lZGlhUmVxdWVzdCkgPT0gdGVz
dC0+bV9leHBlY3RlZFZpZGVvTWVkaWEpOworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJr
aXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19kZXZpY2UodXNlck1lZGlhUmVx
dWVzdCkgPT0gdGVzdC0+bV9leHBlY3RlZEF1ZGlvTWVkaWEpOworICAgICAgICAgICAgZ19hc3Nl
cnRfdHJ1ZSh3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl92aWRlb19kZXZpY2Uo
dXNlck1lZGlhUmVxdWVzdCkgPT0gdGVzdC0+bV9leHBlY3RlZFZpZGVvTWVkaWEpOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKHRlc3QtPm1fYWxsb3dQZXJtaXNzaW9uUmVxdWVzdHMpCkBAIC0z
MjcsOCArMzI3LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBXZWJLaXRXZWJWaWV3KiB2aWV3
Q3JlYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5h
dmlnYXRpb24pCiAgICAgewotICAgICAgICBnX2Fzc2VydCh3ZWJWaWV3ID09IG1fd2ViVmlldyk7
Ci0gICAgICAgIGdfYXNzZXJ0KG5hdmlnYXRpb24pOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgo
d2ViVmlldywgPT0sIG1fd2ViVmlldyk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobmF2aWdh
dGlvbik7CiAKICAgICAgICAgYXV0byogbmV3V2ViVmlldyA9IFRlc3Q6OmNyZWF0ZVdlYlZpZXco
d2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcpKTsKICNpZiBQTEFURk9STShHVEsp
CkBAIC0zMzgsNyArMzM4LDcgQEAgcHVibGljOgogICAgICAgICBtX3dlYlZpZXdFdmVudHMuYXBw
ZW5kKENyZWF0ZSk7CiAKICAgICAgICAgV2ViS2l0V2luZG93UHJvcGVydGllcyogd2luZG93UHJv
cGVydGllcyA9IHdlYmtpdF93ZWJfdmlld19nZXRfd2luZG93X3Byb3BlcnRpZXMoV0VCS0lUX1dF
Ql9WSUVXKG5ld1dlYlZpZXcpKTsKLSAgICAgICAgZ19hc3NlcnQod2luZG93UHJvcGVydGllcyk7
CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwod2luZG93UHJvcGVydGllcyk7CiAgICAgICAgIGFz
c2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2luZG93UHJvcGVy
dGllcykpOwogICAgICAgICBtX3dpbmRvd1Byb3BlcnRpZXNDaGFuZ2VkLmNsZWFyKCk7CiAKQEAg
LTM1MSwxMCArMzUxLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCB2aWV3UmVhZHlU
b1Nob3coV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KHdl
YlZpZXcgIT0gbV93ZWJWaWV3KTsKKyAgICAgICAgZ19hc3NlcnRfY21waGV4KHdlYlZpZXcsICE9
LCBtX3dlYlZpZXcpOwogCiAgICAgICAgIFdlYktpdFdpbmRvd1Byb3BlcnRpZXMqIHdpbmRvd1By
b3BlcnRpZXMgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dpbmRvd19wcm9wZXJ0aWVzKHdlYlZpZXcp
OwotICAgICAgICBnX2Fzc2VydCh3aW5kb3dQcm9wZXJ0aWVzKTsKKyAgICAgICAgZ19hc3NlcnRf
bm9ubnVsbCh3aW5kb3dQcm9wZXJ0aWVzKTsKICAgICAgICAgaWYgKCFtX3dpbmRvd1Byb3BlcnRp
ZXMuaXNOdWxsKCkpCiAgICAgICAgICAgICBXaW5kb3dQcm9wZXJ0aWVzKHdpbmRvd1Byb3BlcnRp
ZXMpLmFzc2VydEVxdWFsKG1fd2luZG93UHJvcGVydGllcyk7CiAKQEAgLTM2Myw3ICszNjMsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgdmlld0Nsb3NlKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCiAgICAgewotICAgICAgICBnX2Fzc2VydCh3ZWJWaWV3ICE9IG1fd2ViVmlldyk7Cisg
ICAgICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJWaWV3LCAhPSwgbV93ZWJWaWV3KTsKIAogICAgICAg
ICBtX3dlYlZpZXdFdmVudHMuYXBwZW5kKENsb3NlKTsKICAgICAgICAgZ19vYmplY3RfdW5yZWYo
d2ViVmlldyk7CkBAIC00MjIsOCArNDIyLDggQEAgcHVibGljOgogCiAgICAgV2ViS2l0V2ViVmll
dyogdmlld0NyZWF0ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXROYXZpZ2F0aW9uQWN0
aW9uKiBuYXZpZ2F0aW9uKQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQobmF2aWdhdGlvbik7Ci0g
ICAgICAgIGdfYXNzZXJ0KCFtX25hdmlnYXRpb24pOworICAgICAgICBnX2Fzc2VydF9ub25udWxs
KG5hdmlnYXRpb24pOworICAgICAgICBnX2Fzc2VydF9udWxsKG1fbmF2aWdhdGlvbik7CiAgICAg
ICAgIG1fbmF2aWdhdGlvbiA9IHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9jb3B5KG5hdmlnYXRp
b24pOwogICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3ApOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTQ2NSw3ICs0NjUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0Ny
ZWF0ZU5hdmlnYXRpb25EYXRhKENyZWF0ZU5hdmlnYXRpb25EYXRhVGVzdCogdGVzdCwgZ2Nvbgog
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBidXR0b24gMS4KICAgICBnX2Fzc2VydF9jbXB1
aW50KHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfbW91c2VfYnV0dG9uKHRlc3QtPm1fbmF2
aWdhdGlvbiksID09LCAwKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9uYXZpZ2F0aW9u
X2FjdGlvbl9nZXRfbW9kaWZpZXJzKHRlc3QtPm1fbmF2aWdhdGlvbiksID09LCAwKTsKLSAgICBn
X2Fzc2VydCh3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25faXNfdXNlcl9nZXN0dXJlKHRlc3QtPm1f
bmF2aWdhdGlvbikpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X25hdmlnYXRpb25fYWN0aW9u
X2lzX3VzZXJfZ2VzdHVyZSh0ZXN0LT5tX25hdmlnYXRpb24pKTsKIAogICAgIC8vIENsaWNrIG9u
IGEgbGluay4KICAgICB0ZXN0LT5jbGlja0FuZFdhaXRVbnRpbE1haW5Mb29wRmluaXNoZXMoMjEs
IDIxKTsKQEAgLTQ3Myw3ICs0NzMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NyZWF0ZU5h
dmlnYXRpb25EYXRhKENyZWF0ZU5hdmlnYXRpb25EYXRhVGVzdCogdGVzdCwgZ2NvbgogICAgIGdf
YXNzZXJ0X2NtcHVpbnQod2Via2l0X25hdmlnYXRpb25fYWN0aW9uX2dldF9uYXZpZ2F0aW9uX3R5
cGUodGVzdC0+bV9uYXZpZ2F0aW9uKSwgPT0sIFdFQktJVF9OQVZJR0FUSU9OX1RZUEVfTElOS19D
TElDS0VEKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9n
ZXRfbW91c2VfYnV0dG9uKHRlc3QtPm1fbmF2aWdhdGlvbiksID09LCAxKTsKICAgICBnX2Fzc2Vy
dF9jbXB1aW50KHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfbW9kaWZpZXJzKHRlc3QtPm1f
bmF2aWdhdGlvbiksID09LCAwKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfbmF2aWdhdGlvbl9hY3Rp
b25faXNfdXNlcl9nZXN0dXJlKHRlc3QtPm1fbmF2aWdhdGlvbikpOworICAgIGdfYXNzZXJ0X3Ry
dWUod2Via2l0X25hdmlnYXRpb25fYWN0aW9uX2lzX3VzZXJfZ2VzdHVyZSh0ZXN0LT5tX25hdmln
YXRpb24pKTsKIAogICAgIC8vIE5vIHVzZXIgaW50ZXJhY3Rpb24uCiAgICAgdGVzdC0+bG9hZEhU
TUwoIjxodG1sPjxib2R5IG9uTG9hZD1cIndpbmRvdy5vcGVuKCk7XCI+PC9odG1sPiIpOwpAQCAt
NDgzLDcgKzQ4Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Q3JlYXRlTmF2aWdhdGlvbkRh
dGEoQ3JlYXRlTmF2aWdhdGlvbkRhdGFUZXN0KiB0ZXN0LCBnY29uCiAgICAgZ19hc3NlcnRfY21w
dWludCh3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X25hdmlnYXRpb25fdHlwZSh0ZXN0LT5t
X25hdmlnYXRpb24pLCA9PSwgV0VCS0lUX05BVklHQVRJT05fVFlQRV9PVEhFUik7CiAgICAgZ19h
c3NlcnRfY21wdWludCh3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X21vdXNlX2J1dHRvbih0
ZXN0LT5tX25hdmlnYXRpb24pLCA9PSwgMCk7CiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRf
bmF2aWdhdGlvbl9hY3Rpb25fZ2V0X21vZGlmaWVycyh0ZXN0LT5tX25hdmlnYXRpb24pLCA9PSwg
MCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9pc191c2VyX2dlc3R1
cmUodGVzdC0+bV9uYXZpZ2F0aW9uKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X25hdmln
YXRpb25fYWN0aW9uX2lzX3VzZXJfZ2VzdHVyZSh0ZXN0LT5tX25hdmlnYXRpb24pKTsKIH0KICNl
bmRpZiAvLyBQTEFURk9STShHVEspCiAKQEAgLTUwMywxMyArNTAzLDEzIEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyB2b2lkIGRpYWxvZ1J1bkFzTW9kYWxDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBNb2RhbERpYWxvZ3NUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQo
d2ViVmlldyAhPSB0ZXN0LT5tX3dlYlZpZXcpOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgod2Vi
VmlldywgIT0sIHRlc3QtPm1fd2ViVmlldyk7CiAgICAgICAgIHRlc3QtPm1fd2ViVmlld0V2ZW50
cy5hcHBlbmQoUnVuQXNNb2RhbCk7CiAgICAgfQogCiAgICAgV2ViS2l0V2ViVmlldyogdmlld0Ny
ZWF0ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXROYXZpZ2F0aW9uQWN0aW9uKiBuYXZp
Z2F0aW9uKQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQod2ViVmlldyA9PSBtX3dlYlZpZXcpOwor
ICAgICAgICBnX2Fzc2VydF9jbXBoZXgod2ViVmlldywgPT0sIG1fd2ViVmlldyk7CiAKICAgICAg
ICAgYXV0byogbmV3V2ViVmlldyA9IFVJQ2xpZW50VGVzdDo6dmlld0NyZWF0ZSh3ZWJWaWV3LCBu
YXZpZ2F0aW9uKTsKICAgICAgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3LCAicnVuLWFz
LW1vZGFsIiwgR19DQUxMQkFDSyhkaWFsb2dSdW5Bc01vZGFsQ2FsbGJhY2spLCB0aGlzKTsKQEAg
LTUxOCw3ICs1MTgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHZpZXdSZWFkeVRvU2hvdyhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQod2ViVmlldyAhPSBt
X3dlYlZpZXcpOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgod2ViVmlldywgIT0sIG1fd2ViVmll
dyk7CiAgICAgICAgIG1fd2ViVmlld0V2ZW50cy5hcHBlbmQoUmVhZHlUb1Nob3cpOwogICAgIH0K
IH07CkBAIC02MTMsNyArNjEzLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdKYXZhU2NyaXB0
RGlhbG9ncyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bV9z
Y3JpcHREaWFsb2dDb25maXJtZWQgPSBmYWxzZTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfcmVsb2Fk
KHRlc3QtPm1fd2ViVmlldyk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0g
ICAgZ19hc3NlcnQodGVzdC0+bV9zY3JpcHREaWFsb2dDb25maXJtZWQpOworICAgIGdfYXNzZXJ0
X3RydWUodGVzdC0+bV9zY3JpcHREaWFsb2dDb25maXJtZWQpOwogI2VuZGlmCiAKICAgICAvLyBO
YXZpZ2F0aW9uIHNob3VsZCB0cmlnZ2VyIG9uYmVmb3JldW5sb2FkLgpAQCAtNjIxLDcgKzYyMSw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MoVUlDbGllbnRUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPm1fc2NyaXB0RGlhbG9nQ29uZmlybWVk
ID0gZmFsc2U7CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjwvaHRtbD4iLCBudWxscHRyKTsK
ICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5t
X3NjcmlwdERpYWxvZ0NvbmZpcm1lZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3Njcmlw
dERpYWxvZ0NvbmZpcm1lZCk7CiAKICAgICAvLyBUcnkgY2xvc2Ugc2hvdWxkIHRyaWdnZXIgb25i
ZWZvcmV1bmxvYWQuCiAgICAgdGVzdC0+bV9zY3JpcHREaWFsb2dDb25maXJtZWQgPSBmYWxzZTsK
QEAgLTYyOSw3ICs2MjksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0phdmFTY3JpcHREaWFs
b2dzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT53YWl0VW50
aWxMb2FkRmluaXNoZWQoKTsKICAgICB0ZXN0LT5zaW11bGF0ZVVzZXJJbnRlcmFjdGlvbigpOwog
ICAgIHRlc3QtPnRyeUNsb3NlQW5kV2FpdFVudGlsQ2xvc2VkKCk7Ci0gICAgZ19hc3NlcnQodGVz
dC0+bV9zY3JpcHREaWFsb2dDb25maXJtZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9z
Y3JpcHREaWFsb2dDb25maXJtZWQpOwogCiAgICAgLy8gVHJ5IGNsb3NlIG9uIGEgcGFnZSB3aXRo
IG5vIHVubG9hZCBoYW5kbGVycyBzaG91bGQgbm90IHRyaWdnZXIgb25iZWZvcmV1bmxvYWQsCiAg
ICAgLy8gYnV0IHNob3VsZCBhY3R1YWxseSBjbG9zZSB0aGUgcGFnZS4KQEAgLTYzNywxMCArNjM3
LDEwIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MoVUlDbGllbnRU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9k
eT48L2JvZHk+PC9odG1sPiIsIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5p
c2hlZCgpOwogICAgIC8vIFdlIGdvdCBhIG9uYmVmb3JldW5sb2FkIG9mIHRoZSBwcmV2aW91cyBw
YWdlLgotICAgIGdfYXNzZXJ0KHRlc3QtPm1fc2NyaXB0RGlhbG9nQ29uZmlybWVkKTsKKyAgICBn
X2Fzc2VydF90cnVlKHRlc3QtPm1fc2NyaXB0RGlhbG9nQ29uZmlybWVkKTsKICAgICB0ZXN0LT5t
X3NjcmlwdERpYWxvZ0NvbmZpcm1lZCA9IGZhbHNlOwogICAgIHRlc3QtPnRyeUNsb3NlQW5kV2Fp
dFVudGlsQ2xvc2VkKCk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1fc2NyaXB0RGlhbG9nQ29uZmly
bWVkKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5tX3NjcmlwdERpYWxvZ0NvbmZpcm1lZCk7
CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogfQogCkBAIC02NjEsNyArNjYxLDcgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdXaW5kb3dQcm9wZXJ0aWVzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICAgICAgImxvY2F0aW9uYmFyLXZpc2libGUiLCAibWVudWJhci12aXNp
YmxlIiwgInN0YXR1c2Jhci12aXNpYmxlIiwgInRvb2xiYXItdmlzaWJsZSIsICJzY3JvbGxiYXJz
LXZpc2libGUiCiAgICAgfTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEdfTl9FTEVNRU5U
Uyhwcm9wZXJ0aWVzQ2hhbmdlZCk7ICsraSkKLSAgICAgICAgZ19hc3NlcnQodGVzdC0+bV93aW5k
b3dQcm9wZXJ0aWVzQ2hhbmdlZC5jb250YWlucyhwcm9wZXJ0aWVzQ2hhbmdlZFtpXSkpOworICAg
ICAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fd2luZG93UHJvcGVydGllc0NoYW5nZWQuY29udGFp
bnMocHJvcGVydGllc0NoYW5nZWRbaV0pKTsKIAogICAgIFZlY3RvcjxVSUNsaWVudFRlc3Q6Oldl
YlZpZXdFdmVudHM+JiBldmVudHMgPSB0ZXN0LT5tX3dlYlZpZXdFdmVudHM7CiAgICAgZ19hc3Nl
cnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCAzKTsKQEAgLTY5OSw5MCArNjk5LDkwIEBAIHN0
YXRpYyB2b2lkIHRlc3RXZWJWaWV3TW91c2VUYXJnZXQoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogCiAgICAgLy8gTW92ZSBvdmVyIGxpbmsuCiAgICAgV2ViS2l0SGl0VGVzdFJl
c3VsdCogaGl0VGVzdFJlc3VsdCA9IHRlc3QtPm1vdmVNb3VzZUFuZFdhaXRVbnRpbE1vdXNlVGFy
Z2V0Q2hhbmdlZCgxLCAxKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2Nv
bnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRf
dGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3Nl
cnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0
KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0
YWJsZShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X3Ry
dWUod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkp
OworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19p
bWFnZShoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0
X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9m
YWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJl
c3VsdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4
dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9saW5rX3VyaShoaXRUZXN0UmVzdWx0KSwgPT0sICJodHRw
Oi8vd3d3LndlYmtpdGd0ay5vcmcvIik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9oaXRf
dGVzdF9yZXN1bHRfZ2V0X2xpbmtfdGl0bGUoaGl0VGVzdFJlc3VsdCksID09LCAiV2ViS2l0R1RL
KyBUaXRsZSIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dl
dF9saW5rX2xhYmVsKGhpdFRlc3RSZXN1bHQpLCA9PSwgIldlYktpdEdUSysgV2Vic2l0ZSIpOwot
ICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX21vdXNlVGFyZ2V0TW9kaWZpZXJzKTsKKyAgICBnX2Fzc2Vy
dF9jbXB1aW50KHRlc3QtPm1fbW91c2VUYXJnZXRNb2RpZmllcnMsID09LCAwKTsKIAogICAgIC8v
IE1vdmUgb3V0IG9mIHRoZSBsaW5rLgogICAgIGhpdFRlc3RSZXN1bHQgPSB0ZXN0LT5tb3ZlTW91
c2VBbmRXYWl0VW50aWxNb3VzZVRhcmdldENoYW5nZWQoMCwgMCk7Ci0gICAgZ19hc3NlcnQoIXdl
YmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKLSAg
ICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRl
c3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0
X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0
X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2Vy
dCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVz
dWx0KSk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1fbW91c2VUYXJnZXRNb2RpZmllcnMpOworICAg
IGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5rKGhp
dFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdl
YmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7Cisg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRh
YmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2Vy
dF9jbXB1aW50KHRlc3QtPm1fbW91c2VUYXJnZXRNb2RpZmllcnMsID09LCAwKTsKIAogICAgIC8v
IE1vdmUgb3ZlciBpbWFnZSB3aXRoIEdES19DT05UUk9MX01BU0suCiAgICAgaGl0VGVzdFJlc3Vs
dCA9IHRlc3QtPm1vdmVNb3VzZUFuZFdhaXRVbnRpbE1vdXNlVGFyZ2V0Q2hhbmdlZCgxLCAxMCwg
R0RLX0NPTlRST0xfTUFTSyk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRf
Y29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3Vs
dCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRp
dGFibGUoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVz
dWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCgh
d2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3Njcm9sbGJhcihoaXRUZXN0UmVzdWx0
KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lz
X2xpbmsoaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2hpdF90ZXN0
X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9m
YWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3Vs
dCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9p
c19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hp
dF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CisgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3Njcm9sbGJh
cihoaXRUZXN0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfZ2V0X2ltYWdlX3VyaShoaXRUZXN0UmVzdWx0KSwgPT0sICJmaWxlOi8vLzB4ZGVhZGJl
ZWYiKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX21vdXNlVGFyZ2V0TW9kaWZpZXJzICYgR0RLX0NP
TlRST0xfTUFTSyk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX21vdXNlVGFyZ2V0TW9kaWZp
ZXJzICYgR0RLX0NPTlRST0xfTUFTSyk7CiAKICAgICAvLyBNb3ZlIG92ZXIgaW1hZ2UgbGluay4K
ICAgICBoaXRUZXN0UmVzdWx0ID0gdGVzdC0+bW92ZU1vdXNlQW5kV2FpdFVudGlsTW91c2VUYXJn
ZXRDaGFuZ2VkKDEsIDIwKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2Nv
bnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2Vy
dCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQp
KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRh
YmxlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3Vs
dF9jb250ZXh0X2lzX3Njcm9sbGJhcihoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQoIXdl
YmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkp
OworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xp
bmsoaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxz
ZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkp
OworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19l
ZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3Njcm9sbGJhcihoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19h
c3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbiho
aXRUZXN0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfZ2V0X2xpbmtfdXJpKGhpdFRlc3RSZXN1bHQpLCA9PSwgImh0dHA6Ly93d3cud2Via2l0Z3Rr
Lm9yZy9sb2dvIik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRf
Z2V0X2ltYWdlX3VyaShoaXRUZXN0UmVzdWx0KSwgPT0sICJmaWxlOi8vLzB4ZGVhZGJlZWYiKTsK
ICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfbGlua190aXRs
ZShoaXRUZXN0UmVzdWx0KSwgPT0sICJXZWJLaXRHVEsrIExvZ28iKTsKLSAgICBnX2Fzc2VydCgh
d2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfbGlua19sYWJlbChoaXRUZXN0UmVzdWx0KSk7Ci0g
ICAgZ19hc3NlcnQoIXRlc3QtPm1fbW91c2VUYXJnZXRNb2RpZmllcnMpOworICAgIGdfYXNzZXJ0
X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2xpbmtfbGFiZWwoaGl0VGVzdFJlc3Vs
dCkpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9tb3VzZVRhcmdldE1vZGlmaWVycywg
PT0sIDApOwogCiAgICAgLy8gTW92ZSBvdmVyIG1lZGlhLgogICAgIGhpdFRlc3RSZXN1bHQgPSB0
ZXN0LT5tb3ZlTW91c2VBbmRXYWl0VW50aWxNb3VzZVRhcmdldENoYW5nZWQoMSwgMTAwKTsKLSAg
ICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVz
dFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRf
aXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQoIXdl
YmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7
Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zY3JvbGxi
YXIoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxz
ZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7
CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2lt
YWdlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFs
c2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1
bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRf
aXNfc2Nyb2xsYmFyKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKICAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfbWVkaWFfdXJpKGhp
dFRlc3RSZXN1bHQpLCA9PSwgImZpbGU6Ly8vbW92aWUub2dnIik7Ci0gICAgZ19hc3NlcnQoIXRl
c3QtPm1fbW91c2VUYXJnZXRNb2RpZmllcnMpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+
bV9tb3VzZVRhcmdldE1vZGlmaWVycywgPT0sIDApOwogCiAgICAgLy8gTW92ZXIgb3ZlciBpbnB1
dC4KICAgICBoaXRUZXN0UmVzdWx0ID0gdGVzdC0+bW92ZU1vdXNlQW5kV2FpdFVudGlsTW91c2VU
YXJnZXRDaGFuZ2VkKDUsIDM1KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3Vs
dF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdf
YXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJl
c3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNf
c2Nyb2xsYmFyKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0
KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1
bHQpKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+bV9tb3VzZVRhcmdldE1vZGlmaWVycyk7CisgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0
VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRf
Y29udGV4dF9pc19pbWFnZShoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKKyAg
ICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2Nyb2xs
YmFyKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0
UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX21vdXNlVGFyZ2V0TW9kaWZp
ZXJzLCA9PSwgMCk7CiAKICAgICAvLyBNb3ZlIG92ZXIgc2Nyb2xsYmFyLgogICAgIGhpdFRlc3RS
ZXN1bHQgPSB0ZXN0LT5tb3ZlTW91c2VBbmRXYWl0VW50aWxNb3VzZVRhcmdldENoYW5nZWQoZ3Rr
X3dpZGdldF9nZXRfYWxsb2NhdGVkX3dpZHRoKEdUS19XSURHRVQodGVzdC0+bV93ZWJWaWV3KSkg
LSA0LCA1KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lz
X2xpbmsoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVz
dWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOwotICAg
IGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0
VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4
dF9pc19zY3JvbGxiYXIoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBn
X2Fzc2VydCghdGVzdC0+bV9tb3VzZVRhcmdldE1vZGlmaWVycyk7CisgICAgZ19hc3NlcnRfZmFs
c2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkp
OworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19p
bWFnZShoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0
X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9m
YWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJl
c3VsdCkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0
X2lzX3Njcm9sbGJhcihoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7Cisg
ICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX21vdXNlVGFyZ2V0TW9kaWZpZXJzLCA9PSwgMCk7
CiAKICAgICAvLyBNb3ZlIG92ZXIgc2VsZWN0aW9uLgogICAgIGhpdFRlc3RSZXN1bHQgPSB0ZXN0
LT5tb3ZlTW91c2VBbmRXYWl0VW50aWxNb3VzZVRhcmdldENoYW5nZWQoMiwgMTQ1KTsKLSAgICBn
X2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJl
c3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNf
aW1hZ2UoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVz
dWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOwot
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2Nyb2xsYmFy
KGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2Nv
bnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+
bV9tb3VzZVRhcmdldE1vZGlmaWVycyk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0
X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZShoaXRUZXN0UmVz
dWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0
X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAgIGdf
YXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zY3JvbGxiYXIo
aGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2hpdF90ZXN0X3Jlc3Vs
dF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfY21w
dWludCh0ZXN0LT5tX21vdXNlVGFyZ2V0TW9kaWZpZXJzLCA9PSwgMCk7CiB9CiAjZW5kaWYgLy8g
UExBVEZPUk0oR1RLKQogCkBAIC05OTUsMTYgKzk5NSwxNiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vi
Vmlld0ZpbGVDaG9vc2VyUmVxdWVzdChGaWxlQ2hvb3NlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiAgICAgdGVzdC0+bG9hZEh0bWwoc2ltcGxlRmlsZVVwbG9hZEhUTUwuZ2V0KCksIDApOwog
ICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIFdlYktpdEZpbGVDaG9vc2Vy
UmVxdWVzdCogZmlsZUNob29zZXJSZXF1ZXN0ID0gdGVzdC0+Y2xpY2tNb3VzZUJ1dHRvbkFuZFdh
aXRGb3JGaWxlQ2hvb3NlclJlcXVlc3QoNSwgNSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9maWxl
X2Nob29zZXJfcmVxdWVzdF9nZXRfc2VsZWN0X211bHRpcGxlKGZpbGVDaG9vc2VyUmVxdWVzdCkp
OworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfc2Vs
ZWN0X211bHRpcGxlKGZpbGVDaG9vc2VyUmVxdWVzdCkpOwogCiAgICAgY29uc3QgZ2NoYXIqIGNv
bnN0KiBtaW1lVHlwZXMgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X21pbWVfdHlw
ZXMoZmlsZUNob29zZXJSZXF1ZXN0KTsKLSAgICBnX2Fzc2VydCghbWltZVR5cGVzKTsKKyAgICBn
X2Fzc2VydF9udWxsKG1pbWVUeXBlcyk7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIEd0a0ZpbGVG
aWx0ZXIqIGZpbHRlciA9IHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfbWltZV90eXBl
c19maWx0ZXIoZmlsZUNob29zZXJSZXF1ZXN0KTsKLSAgICBnX2Fzc2VydCghZmlsdGVyKTsKKyAg
ICBnX2Fzc2VydF9udWxsKGZpbHRlcik7CiAjZW5kaWYKICAgICBjb25zdCBnY2hhciogY29uc3Qq
IHNlbGVjdGVkRmlsZXMgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X3NlbGVjdGVk
X2ZpbGVzKGZpbGVDaG9vc2VyUmVxdWVzdCk7Ci0gICAgZ19hc3NlcnQoIXNlbGVjdGVkRmlsZXMp
OworICAgIGdfYXNzZXJ0X251bGwoc2VsZWN0ZWRGaWxlcyk7CiAgICAgd2Via2l0X2ZpbGVfY2hv
b3Nlcl9yZXF1ZXN0X2NhbmNlbChmaWxlQ2hvb3NlclJlcXVlc3QpOwogCiAgICAgLy8gTXVsdGlw
bGUgc2VsZWN0aW9ucyBhbGxvd2VkLCBubyBNSU1FIGZpbHRlcmluZywgc29tZSBwcmUtc2VsZWN0
ZWQgZmlsZXMuCkBAIC0xMDEyLDE2ICsxMDEyLDE2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
RmlsZUNob29zZXJSZXF1ZXN0KEZpbGVDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
ICAgICB0ZXN0LT5sb2FkSHRtbChtdWx0aXBsZVNlbGVjdGlvbkZpbGVVcGxvYWRIVE1MLmdldCgp
LCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICBmaWxlQ2hvb3Nl
clJlcXVlc3QgPSB0ZXN0LT5jbGlja01vdXNlQnV0dG9uQW5kV2FpdEZvckZpbGVDaG9vc2VyUmVx
dWVzdCg1LCA1KTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0
X3NlbGVjdF9tdWx0aXBsZShmaWxlQ2hvb3NlclJlcXVlc3QpKTsKKyAgICBnX2Fzc2VydF90cnVl
KHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfc2VsZWN0X211bHRpcGxlKGZpbGVDaG9v
c2VyUmVxdWVzdCkpOwogCiAgICAgbWltZVR5cGVzID0gd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1
ZXN0X2dldF9taW1lX3R5cGVzKGZpbGVDaG9vc2VyUmVxdWVzdCk7Ci0gICAgZ19hc3NlcnQoIW1p
bWVUeXBlcyk7CisgICAgZ19hc3NlcnRfbnVsbChtaW1lVHlwZXMpOwogI2lmIFBMQVRGT1JNKEdU
SykKICAgICBmaWx0ZXIgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X21pbWVfdHlw
ZXNfZmlsdGVyKGZpbGVDaG9vc2VyUmVxdWVzdCk7Ci0gICAgZ19hc3NlcnQoIWZpbHRlcik7Cisg
ICAgZ19hc3NlcnRfbnVsbChmaWx0ZXIpOwogI2VuZGlmCiAgICAgc2VsZWN0ZWRGaWxlcyA9IHdl
YmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfc2VsZWN0ZWRfZmlsZXMoZmlsZUNob29zZXJS
ZXF1ZXN0KTsKLSAgICBnX2Fzc2VydCghc2VsZWN0ZWRGaWxlcyk7CisgICAgZ19hc3NlcnRfbnVs
bChzZWxlY3RlZEZpbGVzKTsKIAogICAgIC8vIFNlbGVjdCBzb21lIGZpbGVzLgogICAgIGNvbnN0
IGdjaGFyKiBmaWxlc1RvU2VsZWN0WzRdID0geyAiL2ZvbyIsICIvZm9vL2JhciIsICIvZm9vL2Jh
ci9iYXoiLCAwIH07CkBAIC0xMDI5LDIxICsxMDI5LDIxIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3RmlsZUNob29zZXJSZXF1ZXN0KEZpbGVDaG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKIAogICAgIC8vIENoZWNrIHRoZSBmaWxlcyB0aGF0IGhhdmUgYmVlbiBqdXN0IHNlbGVjdGVk
LgogICAgIHNlbGVjdGVkRmlsZXMgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X3Nl
bGVjdGVkX2ZpbGVzKGZpbGVDaG9vc2VyUmVxdWVzdCk7Ci0gICAgZ19hc3NlcnQoc2VsZWN0ZWRG
aWxlcyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChzZWxlY3RlZEZpbGVzKTsKICAgICBnX2Fzc2Vy
dF9jbXBzdHIoc2VsZWN0ZWRGaWxlc1swXSwgPT0sICIvZm9vIik7CiAgICAgZ19hc3NlcnRfY21w
c3RyKHNlbGVjdGVkRmlsZXNbMV0sID09LCAiL2Zvby9iYXIiKTsKICAgICBnX2Fzc2VydF9jbXBz
dHIoc2VsZWN0ZWRGaWxlc1syXSwgPT0sICIvZm9vL2Jhci9iYXoiKTsKLSAgICBnX2Fzc2VydCgh
c2VsZWN0ZWRGaWxlc1szXSk7CisgICAgZ19hc3NlcnRfbnVsbChzZWxlY3RlZEZpbGVzWzNdKTsK
IAogICAgIC8vIFBlcmZvcm0gYW5vdGhlciByZXF1ZXN0IHRvIGNoZWNrIGlmIHRoZSBsaXN0IG9m
IGZpbGVzIHNlbGVjdGVkCiAgICAgLy8gaW4gdGhlIHByZXZpb3VzIHN0ZXAgYXBwZWFycyBub3cg
YXMgcGFydCBvZiB0aGUgbmV3IHJlcXVlc3QuCiAgICAgZmlsZUNob29zZXJSZXF1ZXN0ID0gdGVz
dC0+Y2xpY2tNb3VzZUJ1dHRvbkFuZFdhaXRGb3JGaWxlQ2hvb3NlclJlcXVlc3QoNSwgNSk7CiAg
ICAgc2VsZWN0ZWRGaWxlcyA9IHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfc2VsZWN0
ZWRfZmlsZXMoZmlsZUNob29zZXJSZXF1ZXN0KTsKLSAgICBnX2Fzc2VydChzZWxlY3RlZEZpbGVz
KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHNlbGVjdGVkRmlsZXMpOwogICAgIGdfYXNzZXJ0X2Nt
cHN0cihzZWxlY3RlZEZpbGVzWzBdLCA9PSwgIi9mb28iKTsKICAgICBnX2Fzc2VydF9jbXBzdHIo
c2VsZWN0ZWRGaWxlc1sxXSwgPT0sICIvZm9vL2JhciIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihz
ZWxlY3RlZEZpbGVzWzJdLCA9PSwgIi9mb28vYmFyL2JheiIpOwotICAgIGdfYXNzZXJ0KCFzZWxl
Y3RlZEZpbGVzWzNdKTsKKyAgICBnX2Fzc2VydF9udWxsKHNlbGVjdGVkRmlsZXNbM10pOwogICAg
IHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwoZmlsZUNob29zZXJSZXF1ZXN0KTsK
IAogICAgIC8vIE11bHRpcGxlIHNlbGVjdGlvbnMgbm90IGFsbG93ZWQsIG9ubHkgYWNjZXB0IGlt
YWdlcywgYXVkaW8gYW5kIHZpZGVvIGZpbGVzLi4KQEAgLTEwNTEsMjUgKzEwNTEsMjUgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QoRmlsZUNob29zZXJUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPmxvYWRIdG1sKG1pbWVGaWx0ZXJlZEZpbGVV
cGxvYWRIVE1MLmdldCgpLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsK
ICAgICBmaWxlQ2hvb3NlclJlcXVlc3QgPSB0ZXN0LT5jbGlja01vdXNlQnV0dG9uQW5kV2FpdEZv
ckZpbGVDaG9vc2VyUmVxdWVzdCg1LCA1KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2ZpbGVfY2hv
b3Nlcl9yZXF1ZXN0X2dldF9zZWxlY3RfbXVsdGlwbGUoZmlsZUNob29zZXJSZXF1ZXN0KSk7Cisg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2dldF9zZWxlY3Rf
bXVsdGlwbGUoZmlsZUNob29zZXJSZXF1ZXN0KSk7CiAKICAgICBtaW1lVHlwZXMgPSB3ZWJraXRf
ZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X21pbWVfdHlwZXMoZmlsZUNob29zZXJSZXF1ZXN0KTsK
LSAgICBnX2Fzc2VydChtaW1lVHlwZXMpOworICAgIGdfYXNzZXJ0X25vbm51bGwobWltZVR5cGVz
KTsKICAgICBnX2Fzc2VydF9jbXBzdHIobWltZVR5cGVzWzBdLCA9PSwgImF1ZGlvLyoiKTsKICAg
ICBnX2Fzc2VydF9jbXBzdHIobWltZVR5cGVzWzFdLCA9PSwgInZpZGVvLyoiKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIobWltZVR5cGVzWzJdLCA9PSwgImltYWdlLyoiKTsKLSAgICBnX2Fzc2VydCgh
bWltZVR5cGVzWzNdKTsKKyAgICBnX2Fzc2VydF9udWxsKG1pbWVUeXBlc1szXSk7CiAKICNpZiBQ
TEFURk9STShHVEspCiAgICAgZmlsdGVyID0gd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2dl
dF9taW1lX3R5cGVzX2ZpbHRlcihmaWxlQ2hvb3NlclJlcXVlc3QpOwotICAgIGdfYXNzZXJ0KEdU
S19JU19GSUxFX0ZJTFRFUihmaWx0ZXIpKTsKLSAgICBnX2Fzc2VydChjaGVja01pbWVUeXBlRm9y
RmlsdGVyKGZpbHRlciwgImF1ZGlvLyoiKSk7Ci0gICAgZ19hc3NlcnQoY2hlY2tNaW1lVHlwZUZv
ckZpbHRlcihmaWx0ZXIsICJ2aWRlby8qIikpOwotICAgIGdfYXNzZXJ0KGNoZWNrTWltZVR5cGVG
b3JGaWx0ZXIoZmlsdGVyLCAiaW1hZ2UvKiIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEdUS19JU19G
SUxFX0ZJTFRFUihmaWx0ZXIpKTsKKyAgICBnX2Fzc2VydF90cnVlKGNoZWNrTWltZVR5cGVGb3JG
aWx0ZXIoZmlsdGVyLCAiYXVkaW8vKiIpKTsKKyAgICBnX2Fzc2VydF90cnVlKGNoZWNrTWltZVR5
cGVGb3JGaWx0ZXIoZmlsdGVyLCAidmlkZW8vKiIpKTsKKyAgICBnX2Fzc2VydF90cnVlKGNoZWNr
TWltZVR5cGVGb3JGaWx0ZXIoZmlsdGVyLCAiaW1hZ2UvKiIpKTsKICNlbmRpZgogCiAgICAgc2Vs
ZWN0ZWRGaWxlcyA9IHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfc2VsZWN0ZWRfZmls
ZXMoZmlsZUNob29zZXJSZXF1ZXN0KTsKLSAgICBnX2Fzc2VydCghc2VsZWN0ZWRGaWxlcyk7Cisg
ICAgZ19hc3NlcnRfbnVsbChzZWxlY3RlZEZpbGVzKTsKICAgICB3ZWJraXRfZmlsZV9jaG9vc2Vy
X3JlcXVlc3RfY2FuY2VsKGZpbGVDaG9vc2VyUmVxdWVzdCk7CiB9CiAjZW5kaWYgLy8gUExBVEZP
Uk0oR1RLKQpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQg
cmVxdWVzdEZpbmlzaGVkQ2FsbGJhY2soV2ViS2l0Q29sb3JDaG9vc2VyUmVxdWVzdCogcmVxdWVz
dCwgQ29sb3JDaG9vc2VyVGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KHRlc3Qt
Pm1fcmVxdWVzdC5nZXQoKSA9PSByZXF1ZXN0KTsKKyAgICAgICAgZ19hc3NlcnRfY21waGV4KHRl
c3QtPm1fcmVxdWVzdC5nZXQoKSwgPT0sIHJlcXVlc3QpOwogICAgICAgICB0ZXN0LT5tX3JlcXVl
c3QgPSBudWxscHRyOwogICAgICAgICBpZiAoZ19tYWluX2xvb3BfaXNfcnVubmluZyh0ZXN0LT5t
X21haW5Mb29wKSkKICAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9v
cCk7CkBAIC0xMTAwLDcgKzExMDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJ1bkNvbG9yQ2hv
b3NlcihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQogICAgIHsKLSAgICAgICAg
Z19hc3NlcnQoV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVChyZXF1ZXN0KSk7CisgICAg
ICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVChyZXF1ZXN0
KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpF
Q1QocmVxdWVzdCkpOwogICAgICAgICBtX3JlcXVlc3QgPSByZXF1ZXN0OwogICAgICAgICBnX3Np
Z25hbF9jb25uZWN0KHJlcXVlc3QsICJmaW5pc2hlZCIsIEdfQ0FMTEJBQ0socmVxdWVzdEZpbmlz
aGVkQ2FsbGJhY2spLCB0aGlzKTsKQEAgLTExMDksMjMgKzExMDksMjMgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBmaW5pc2hSZXF1ZXN0KCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KG1fcmVxdWVz
dC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobV9yZXF1ZXN0LmdldCgpKTsKICAg
ICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9maW5pc2gobV9yZXF1ZXN0LmdldCgp
KTsKLSAgICAgICAgZ19hc3NlcnQoIW1fcmVxdWVzdCk7CisgICAgICAgIGdfYXNzZXJ0X251bGwo
bV9yZXF1ZXN0KTsKICAgICB9CiAKICAgICB2b2lkIGNhbmNlbFJlcXVlc3QoKQogICAgIHsKLSAg
ICAgICAgZ19hc3NlcnQobV9yZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVs
bChtX3JlcXVlc3QuZ2V0KCkpOwogICAgICAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9yZXF1ZXN0
X2NhbmNlbChtX3JlcXVlc3QuZ2V0KCkpOwotICAgICAgICBnX2Fzc2VydCghbV9yZXF1ZXN0KTsK
KyAgICAgICAgZ19hc3NlcnRfbnVsbChtX3JlcXVlc3QpOwogICAgIH0KIAogICAgIFdlYktpdENv
bG9yQ2hvb3NlclJlcXVlc3QqIGNsaWNrTW91c2VCdXR0b25BbmRXYWl0Rm9yQ29sb3JDaG9vc2Vy
UmVxdWVzdChpbnQgeCwgaW50IHkpCiAgICAgewogICAgICAgICBjbGlja01vdXNlQnV0dG9uKHgs
IHkpOwogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7Ci0gICAgICAgIGdfYXNz
ZXJ0KG1fcmVxdWVzdC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobV9yZXF1ZXN0
LmdldCgpKTsKICAgICAgICAgcmV0dXJuIG1fcmVxdWVzdC5nZXQoKTsKICAgICB9CiAKQEAgLTEx
NDcsMTMgKzExNDcsMTMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDb2xvckNob29zZXJSZXF1
ZXN0KENvbG9yQ2hvb3NlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIKICAgICBHZGtSR0JBIHJn
YmExOwogICAgIEdka1JHQkEgcmdiYTIgPSB7IDAuLCAwLiwgMC4sIDEuIH07CiAgICAgd2Via2l0
X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfcmdiYShyZXF1ZXN0LCAmcmdiYTEpOwotICAgIGdf
YXNzZXJ0KGdka19yZ2JhX2VxdWFsKCZyZ2JhMSwgJnJnYmEyKSk7CisgICAgZ19hc3NlcnRfdHJ1
ZShnZGtfcmdiYV9lcXVhbCgmcmdiYTEsICZyZ2JhMikpOwogCiAgICAgLy8gU2V0IGEgZGlmZmVy
ZW50IGNvbG9yLgogICAgIHJnYmEyLmdyZWVuID0gMTsKICAgICB3ZWJraXRfY29sb3JfY2hvb3Nl
cl9yZXF1ZXN0X3NldF9yZ2JhKHJlcXVlc3QsICZyZ2JhMik7CiAgICAgd2Via2l0X2NvbG9yX2No
b29zZXJfcmVxdWVzdF9nZXRfcmdiYShyZXF1ZXN0LCAmcmdiYTEpOwotICAgIGdfYXNzZXJ0KGdk
a19yZ2JhX2VxdWFsKCZyZ2JhMSwgJnJnYmEyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShnZGtfcmdi
YV9lcXVhbCgmcmdiYTEsICZyZ2JhMikpOwogCiAgICAgR2RrUmVjdGFuZ2xlIHJlY3Q7CiAgICAg
d2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfZWxlbWVudF9yZWN0YW5nbGUocmVxdWVz
dCwgJnJlY3QpOwpAQCAtMTE3Miw3ICsxMTcyLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdD
b2xvckNob29zZXJSZXF1ZXN0KENvbG9yQ2hvb3NlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIK
IAogICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X3JnYmEocmVxdWVzdCwgJnJn
YmExKTsKICAgICBHZGtSR0JBIHJnYmEzID0geyAxLiwgMC4sIDEuLCAxLiB9OwotICAgIGdfYXNz
ZXJ0KGdka19yZ2JhX2VxdWFsKCZyZ2JhMSwgJnJnYmEzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShn
ZGtfcmdiYV9lcXVhbCgmcmdiYTEsICZyZ2JhMykpOwogCiAgICAgdGVzdC0+Y2FuY2VsUmVxdWVz
dCgpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RXZWJFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKaW5kZXggOThmYTcyNDEyZDZhNDJiMTg3ZWVlNzE1
NTNiNWVmMjM3ZjhjNmMxMC4uOTgxMGE0ZDFkZDg1YWY0YzE0MGFjZDBmNDkwYTY2YmM5MmQ3YmZk
MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RX
ZWJFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJFeHRlbnNpb25HZXRUaXRsZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
ICAgICAgICAgZ192YXJpYW50X25ldygiKHQpIiwgd2Via2l0X3dlYl92aWV3X2dldF9wYWdlX2lk
KHRlc3QtPm1fd2ViVmlldykpLAogICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLAogICAg
ICAgICAtMSwgMCwgMCkpOwotICAgIGdfYXNzZXJ0KHJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9u
bnVsbChyZXN1bHQpOwogCiAgICAgY29uc3QgY2hhciogdGl0bGU7CiAgICAgZ192YXJpYW50X2dl
dChyZXN1bHQuZ2V0KCksICIoJnMpIiwgJnRpdGxlKTsKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0RG9jdW1lbnRMb2FkZWRTaWduYWwoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0RCdXNTaWduYWxDYWxsYmFjaz4o
ZG9jdW1lbnRMb2FkZWRDYWxsYmFjayksCiAgICAgICAgIHRlc3QsCiAgICAgICAgIDApOwotICAg
IGdfYXNzZXJ0KGlkKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KGlkLCAhPSwgMCk7CiAKICAgICB0
ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGhlYWQ+PHRpdGxlPldlYktpdEdUSysgV2ViIEV4dGVuc2lv
bnMgVGVzdDwvdGl0bGU+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+IiwgMCk7CiAgICAgZ19t
YWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJLaXRXZWJWaWV3UHJvY2Vzc0NyYXNoZWQoV2ViVmlld1Rlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAgICAgICAgIDAsCiAgICAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05P
TkUsCiAgICAgICAgIC0xLCAwLCAwKSk7Ci0gICAgZ19hc3NlcnQoIXJlc3VsdCk7CisgICAgZ19h
c3NlcnRfbnVsbChyZXN1bHQpOwogICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29w
KTsKICAgICB0ZXN0LT5tX2V4cGVjdGVkV2ViUHJvY2Vzc0NyYXNoID0gZmFsc2U7CiB9CkBAIC0x
NzUsOCArMTc1LDggQEAgc3RhdGljIHZvaWQgdGVzdFdlYkV4dGVuc2lvbldpbmRvd09iamVjdENs
ZWFyZWQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIKIAogICAgIEdVbmlxdWVPdXRQ
dHI8R0Vycm9yPiBlcnJvcjsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0
UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cu
ZWNobygnRm9vJyk7IiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0
UmVzdWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X25vbm51
bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkp
OwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3Jp
cHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0
cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJGb28iKTsKIH0KQEAgLTIxMCw3ICsyMTAsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0ZWRXb3JsZChXZWJWaWV3VGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBzdHIoc2NyaXB0RGlhbG9nUmVzdWx0
LmdldCgpLCA9PSwgIk1haW4gV29ybGQiKTsKIAogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQq
IGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNo
ZWQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MIiwgMCk7Ci0g
ICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZh
c2NyaXB0UmVzdWx0KTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdU
ZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBn
X2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiRm9vIik7CiAKQEAgLTIzMyw3
ICsyMzMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0ZWRXb3JsZChXZWJW
aWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIC8vIENoZWNrIHRoYXQgJ3RvcC5m
b28nIGRlZmluZWQgaW4gbWFpbiB3b3JsZCBpcyBub3QgdmlzaWJsZSBpbiBpc29sYXRlZCB3b3Js
ZC4KICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRp
bEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCIs
IDApOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vbm51
bGwoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgdmFsdWVTdHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6
OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNz
ZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJ1bmRlZmluZWQiKTsKIApAQCAtMjQ4
LDcgKzI0OCw3IEBAIHN0YXRpYyBnYm9vbGVhbiBwZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrKFdl
YktpdFdlYlZpZXcqLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzCiAKICAgICB0ZXN0LT5hc3NlcnRP
YmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJlcXVlc3QpKTsKICAgICBX
ZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0KiBtaXNzaW5n
UGx1Z2luc1JlcXVlc3QgPSBXRUJLSVRfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BMVUdJTlNfUEVS
TUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9pbnN0YWxsX21p
c3NpbmdfbWVkaWFfcGx1Z2luc19wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X2Rlc2NyaXB0aW9uKG1p
c3NpbmdQbHVnaW5zUmVxdWVzdCkpOworICAgIGdfYXNzZXJ0X25vbm51bGwod2Via2l0X2luc3Rh
bGxfbWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRfZGVzY3JpcHRp
b24obWlzc2luZ1BsdWdpbnNSZXF1ZXN0KSk7CiAgICAgd2Via2l0X3Blcm1pc3Npb25fcmVxdWVz
dF9kZW55KHJlcXVlc3QpOwogICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOwogCkBAIC0yNzgsNyAr
Mjc4LDcgQEAgc3RhdGljIHZvaWQgZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzQ2FsbGJhY2soR0RC
dXNDb25uZWN0aW9uKiwgY29uc3QgY2hhciosIGNvbnMKIHsKICAgICBjb25zdCBjaGFyKiBmb3Jt
SWRzOwogICAgIGdfdmFyaWFudF9nZXQocmVzdWx0LCAiKCZzKSIsICZmb3JtSWRzKTsKLSAgICBn
X2Fzc2VydCghZ19zdHJjbXAwKGZvcm1JZHMsIEZPUk1fSUQgRk9STTJfSUQpIHx8ICFnX3N0cmNt
cDAoZm9ybUlkcywgRk9STTJfSUQgRk9STV9JRCkgfHwgIWdfc3RyY21wMChmb3JtSWRzLCBJTlBV
VF9JRCkpOworICAgIGdfYXNzZXJ0X3RydWUoIWdfc3RyY21wMChmb3JtSWRzLCBGT1JNX0lEIEZP
Uk0yX0lEKSB8fCAhZ19zdHJjbXAwKGZvcm1JZHMsIEZPUk0yX0lEIEZPUk1fSUQpIHx8ICFnX3N0
cmNtcDAoZm9ybUlkcywgSU5QVVRfSUQpKTsKIAogICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOwog
fQpAQCAtMjk5LDcgKzI5OSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJFeHRlbnNpb25Gb3JtQ29u
dHJvbHNBc3NvY2lhdGVkKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2luCiAgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8R0RCdXNTaWduYWxDYWxsYmFjaz4oZGlkQXNzb2NpYXRlRm9ybUNvbnRy
b2xzQ2FsbGJhY2spLAogICAgICAgICB0ZXN0LAogICAgICAgICBudWxscHRyKTsKLSAgICBnX2Fz
c2VydChpZCk7CisgICAgZ19hc3NlcnRfY21wdWludChpZCwgIT0sIDApOwogCiAgICAgdGVzdC0+
bG9hZEh0bWwoIjwhRE9DVFlQRSBodG1sPjxoZWFkPjx0aXRsZT5XZWJLaXRHVEsrIFdlYiBFeHRl
bnNpb25zIFRlc3Q8L3RpdGxlPjwvaGVhZD48ZGl2IGlkPVwicGxhY2Vob2xkZXJcIi8+IiwgMCk7
CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CkBAIC0zNTQsNyArMzU0LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHREJ1c1NpZ25hbENhbGxiYWNr
Pih3aWxsU2VuZERPTUV2ZW50Q2FsbGJhY2spLAogICAgICAgICAgICAgdGhpcywKICAgICAgICAg
ICAgIG51bGxwdHIpOwotICAgICAgICBnX2Fzc2VydChtX3dpbGxTZW5kRE9NRXZlbnRDYWxsYmFj
a0lEKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChtX3dpbGxTZW5kRE9NRXZlbnRDYWxsYmFj
a0lELCAhPSwgMCk7CiAKICAgICAgICAgbV93aWxsQ29tcGxldGVDYWxsYmFja0lEID0gZ19kYnVz
X2Nvbm5lY3Rpb25fc2lnbmFsX3N1YnNjcmliZShjb25uZWN0aW9uLAogICAgICAgICAgICAgbnVs
bHB0ciwKQEAgLTM2Niw3ICszNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZWludGVycHJl
dF9jYXN0PEdEQnVzU2lnbmFsQ2FsbGJhY2s+KHdpbGxDb21wbGV0ZUNhbGxiYWNrKSwKICAgICAg
ICAgICAgIHRoaXMsCiAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgZ19hc3NlcnQobV93
aWxsQ29tcGxldGVDYWxsYmFja0lEKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChtX3dpbGxD
b21wbGV0ZUNhbGxiYWNrSUQsICE9LCAwKTsKICAgICB9CiAKICAgICB+Rm9ybVN1Ym1pc3Npb25U
ZXN0KCkKQEAgLTM4OCw4ICszODgsOCBAQCBwdWJsaWM6CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0
cihmb3JtSUQsID09LCBGT1JNX1NVQk1JU1NJT05fVEVTVF9JRCk7CiAgICAgICAgIGdfYXNzZXJ0
X2NtcHN0cihjb25jYXRlbmF0ZWRUZXh0RmllbGROYW1lcywgPT0sICJmb28sYmFyLCIpOwogICAg
ICAgICBnX2Fzc2VydF9jbXBzdHIoY29uY2F0ZW5hdGVkVGV4dEZpZWxkVmFsdWVzLCA9PSwgImZp
cnN0LHNlY29uZCwiKTsKLSAgICAgICAgZ19hc3NlcnQoIXRhcmdldEZyYW1lSXNNYWluRnJhbWUp
OwotICAgICAgICBnX2Fzc2VydChzb3VyY2VGcmFtZUlzTWFpbkZyYW1lKTsKKyAgICAgICAgZ19h
c3NlcnRfZmFsc2UodGFyZ2V0RnJhbWVJc01haW5GcmFtZSk7CisgICAgICAgIGdfYXNzZXJ0X3Ry
dWUoc291cmNlRnJhbWVJc01haW5GcmFtZSk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgd2ls
bFNlbmRET01FdmVudENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiosIGNvbnN0IGNoYXIqLCBjb25z
dCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBHVmFyaWFudCogcmVzdWx0LCBGb3Jt
U3VibWlzc2lvblRlc3QqIHRlc3QpCkBAIC00MzQsMTYgKzQzNCwxNiBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViRXh0ZW5zaW9uRm9ybVN1Ym1pc3Npb25TdGVwcyhGb3JtU3VibWlzc2lvblRlc3QqIHRl
c3QsIGdjb25zdAogICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGb3JtU3VibWl0
dGVkKHN1Ym1pdEZvcm1TY3JpcHQpOwogICAgIC8vIFN1Ym1pdCBtdXN0IG5vdCBiZSBlbWl0dGVk
IHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkIHZpYSBKUy4KICAgICAvLyBodHRwczovL2RldmVs
b3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEZvcm1FbGVtZW50L3N1Ym1p
dAotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3dpbGxTZW5kRE9NRXZlbnRDYWxsYmFja0V4ZWN1dGVk
KTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3dpbGxDb21wbGV0ZUNhbGxiYWNrRXhlY3V0ZWQpOwor
ICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPm1fd2lsbFNlbmRET01FdmVudENhbGxiYWNrRXhlY3V0
ZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV93aWxsQ29tcGxldGVDYWxsYmFja0V4ZWN1
dGVkKTsKICAgICB0ZXN0LT5tX3dpbGxDb21wbGV0ZUNhbGxiYWNrRXhlY3V0ZWQgPSBmYWxzZTsK
IAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBtYW51YWxseVN1Ym1pdEZvcm1TY3JpcHQgPQogICAg
ICAgICAidmFyIGJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3VibWl0X2J1dHRv
blwiKTsiCiAgICAgICAgICJidXR0b24uY2xpY2soKTsiOwogICAgIHRlc3QtPnJ1bkphdmFTY3Jp
cHRBbmRXYWl0VW50aWxGb3JtU3VibWl0dGVkKG1hbnVhbGx5U3VibWl0Rm9ybVNjcmlwdCk7Ci0g
ICAgZ19hc3NlcnQodGVzdC0+bV93aWxsU2VuZERPTUV2ZW50Q2FsbGJhY2tFeGVjdXRlZCk7Ci0g
ICAgZ19hc3NlcnQodGVzdC0+bV93aWxsQ29tcGxldGVDYWxsYmFja0V4ZWN1dGVkKTsKKyAgICBn
X2Fzc2VydF90cnVlKHRlc3QtPm1fd2lsbFNlbmRET01FdmVudENhbGxiYWNrRXhlY3V0ZWQpOwor
ICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV93aWxsQ29tcGxldGVDYWxsYmFja0V4ZWN1dGVkKTsK
ICAgICB0ZXN0LT5tX3dpbGxTZW5kRE9NRXZlbnRDYWxsYmFja0V4ZWN1dGVkID0gZmFsc2U7CiAg
ICAgdGVzdC0+bV93aWxsQ29tcGxldGVDYWxsYmFja0V4ZWN1dGVkID0gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0RmF2
aWNvbkRhdGFiYXNlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCAyNWViYzRiOTEzNjhmYjAxNTllNmE0
MGUwMDRkMGMzNGQzZDAxYWM4Li40MGVjNzIxNDEyYjM3ZTRmN2JmOGJhNGZkMTEzZDFkZTViN2Jl
MThhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCkBAIC02NSw3ICs2NSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCB2aWV3RmF2aWNvbkNoYW5nZWRDYWxsYmFjayhX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHUGFyYW1TcGVjKiBwc3BlYywgZ3BvaW50ZXIgZGF0YSkK
ICAgICB7CiAgICAgICAgIEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxG
YXZpY29uRGF0YWJhc2VUZXN0Kj4oZGF0YSk7Ci0gICAgICAgIGdfYXNzZXJ0KHRlc3QtPm1fd2Vi
VmlldyA9PSB3ZWJWaWV3KTsKKyAgICAgICAgZ19hc3NlcnRfY21waGV4KHRlc3QtPm1fd2ViVmll
dywgPT0sIHdlYlZpZXcpOwogICAgICAgICB0ZXN0LT5tX2Zhdmljb25Ob3RpZmljYXRpb25SZWNl
aXZlZCA9IHRydWU7CiAgICAgICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOwogICAgIH0KQEAgLTEw
MSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdhaXRVbnRpbEZhdmljb25VUklDaGFu
Z2VkKCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KCFtX3dhaXRpbmdGb3JGYXZpY29uVVJJKTsK
KyAgICAgICAgZ19hc3NlcnRfZmFsc2UobV93YWl0aW5nRm9yRmF2aWNvblVSSSk7CiAgICAgICAg
IG1fZmF2aWNvblVSSSA9IENTdHJpbmcoKTsKICAgICAgICAgbV93YWl0aW5nRm9yRmF2aWNvblVS
SSA9IHRydWU7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKQEAgLTE1NCw4
ICsxNTQsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0Tm90SW5pdGlhbGl6ZWQoRmF2aWNvbkRhdGFiYXNl
VGVzdCogdGVzdCkKIHsKICAgICAvLyBUcnkgdG8gcmV0cmlldmUgYSB2YWxpZCBmYXZpY29uIGZy
b20gYSBub3QgaW5pdGlhbGl6ZWQgZGF0YWJhc2UuCiAgICAgdGVzdC0+Z2V0RmF2aWNvbkZvclBh
Z2VVUklBbmRXYWl0VW50aWxSZWFkeShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvZm9vIikuZGF0
YSgpKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+bV9mYXZpY29uKTsKLSAgICBnX2Fzc2VydCh0ZXN0
LT5tX2Vycm9yKTsKKyAgICBnX2Fzc2VydF9udWxsKHRlc3QtPm1fZmF2aWNvbik7CisgICAgZ19h
c3NlcnRfbm9ubnVsbCh0ZXN0LT5tX2Vycm9yKTsKICAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+
bV9lcnJvci0+Y29kZSwgPT0sIFdFQktJVF9GQVZJQ09OX0RBVEFCQVNFX0VSUk9SX05PVF9JTklU
SUFMSVpFRCk7CiB9CiAjZW5kaWYKQEAgLTE3Myw3ICsxNzMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
Q2xlYXJEYXRhYmFzZShGYXZpY29uRGF0YWJhc2VUZXN0KiB0ZXN0KQogICAgIHdlYmtpdF9mYXZp
Y29uX2RhdGFiYXNlX2NsZWFyKGRhdGFiYXNlKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gaWNv
blVSSSh3ZWJraXRfZmF2aWNvbl9kYXRhYmFzZV9nZXRfZmF2aWNvbl91cmkoZGF0YWJhc2UsIGtT
ZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9mb28iKS5kYXRhKCkpKTsKLSAgICBnX2Fzc2VydCghaWNv
blVSSSk7CisgICAgZ19hc3NlcnRfbnVsbChpY29uVVJJKTsKIH0KIAogc3RhdGljIHZvaWQgZXBo
ZW1lcmFsVmlld0xvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRF
dmVudCBsb2FkRXZlbnQsIFdlYlZpZXdUZXN0KiB0ZXN0KQpAQCAtMTk2LDggKzE5Niw4IEBAIHN0
YXRpYyB2b2lkIHRlc3RQcml2YXRlQnJvd3NpbmcoRmF2aWNvbkRhdGFiYXNlVGVzdCogdGVzdCkK
IAogICAgIC8vIEFuIGVwaGVtZXJhbCB3ZWIgdmlldyBzaG91bGQgbm90IHdyaXRlIHRvIHRoZSBk
YXRhYmFzZS4KICAgICB0ZXN0LT5nZXRGYXZpY29uRm9yUGFnZVVSSUFuZFdhaXRVbnRpbFJlYWR5
KGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9mb28iKS5kYXRhKCkpOwotICAgIGdfYXNzZXJ0KCF0
ZXN0LT5tX2Zhdmljb24pOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXJyb3IpOworICAgIGdfYXNz
ZXJ0X251bGwodGVzdC0+bV9mYXZpY29uKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHRlc3QtPm1f
ZXJyb3IpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0R2V0RmF2aWNvbihGYXZpY29uRGF0YWJhc2VU
ZXN0KiB0ZXN0KQpAQCAtMjEwLDkgKzIxMCw5IEBAIHN0YXRpYyB2b2lkIHRlc3RHZXRGYXZpY29u
KEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3QpCiAKICAgICAvLyBDaGVjayB0aGUgQVBJIHJldHJp
ZXZpbmcgYSB2YWxpZCBmYXZpY29uLgogICAgIHRlc3QtPmdldEZhdmljb25Gb3JQYWdlVVJJQW5k
V2FpdFVudGlsUmVhZHkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2ZvbyIpLmRhdGEoKSk7Ci0g
ICAgZ19hc3NlcnQodGVzdC0+bV9mYXZpY29uKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHRlc3Qt
Pm1fZmF2aWNvbik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fZmF2aWNvblVSSS5kYXRh
KCksID09LCBmYXZpY29uVVJJLmRhdGEoKSk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1fZXJyb3Ip
OworICAgIGdfYXNzZXJ0X25vX2Vycm9yKHRlc3QtPm1fZXJyb3IuZ2V0KCkpOwogCiAgICAgLy8g
Q2hlY2sgdGhhdCB3aWR0aCBhbmQgaGVpZ2h0IG1hdGNoIHRob3NlIGZyb20gYmxhbmsuaWNvICgx
NngxNiBmYXZpY29uKS4KICAgICBnX2Fzc2VydF9jbXBpbnQoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9n
ZXRfd2lkdGgodGVzdC0+bV9mYXZpY29uKSwgPT0sIDE2KTsKQEAgLTIyNiwxMCArMjI2LDEwIEBA
IHN0YXRpYyB2b2lkIHRlc3RHZXRGYXZpY29uKEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3QpCiAg
ICAgdGVzdC0+d2FpdFVudGlsRmF2aWNvbkNoYW5nZWQoKTsKICAgICB0ZXN0LT53YWl0VW50aWxG
YXZpY29uQ2hhbmdlZCgpOwogICAgIHRlc3QtPmdldEZhdmljb25Gb3JQYWdlVVJJQW5kV2FpdFVu
dGlsUmVhZHkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2JhciIpLmRhdGEoKSk7Ci0gICAgZ19h
c3NlcnQodGVzdC0+bV9mYXZpY29uKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHRlc3QtPm1fZmF2
aWNvbik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fZmF2aWNvblVSSS5kYXRhKCksID09
LCBmYXZpY29uVVJJLmRhdGEoKSk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9mYXZpY29uID09IGZh
dmljb24pOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2Vycm9yKTsKKyAgICBnX2Fzc2VydF9jbXBo
ZXgodGVzdC0+bV9mYXZpY29uLCA9PSwgZmF2aWNvbik7CisgICAgZ19hc3NlcnRfbm9fZXJyb3Io
dGVzdC0+bV9lcnJvci5nZXQoKSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KGZhdmljb24p
OwogCiAgICAgLy8gQ2hlY2sgdGhlIEFQSSByZXRyaWV2aW5nIGFuIGludmFsaWQgZmF2aWNvbi4g
RmF2aWNvbiBjaGFuZ2VzIG9ubHkgb25jZSB0byByZXNldCBpdCwgdGhlbgpAQCAtMjM5LDggKzIz
OSw4IEBAIHN0YXRpYyB2b2lkIHRlc3RHZXRGYXZpY29uKEZhdmljb25EYXRhYmFzZVRlc3QqIHRl
c3QpCiAgICAgdGVzdC0+d2FpdFVudGlsRmF2aWNvblVSSUNoYW5nZWQoKTsKIAogICAgIHRlc3Qt
PmdldEZhdmljb25Gb3JQYWdlVVJJQW5kV2FpdFVudGlsUmVhZHkoa1NlcnZlci0+Z2V0VVJJRm9y
UGF0aCgiL25vZmF2aWNvbiIpLmRhdGEoKSk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1fZmF2aWNv
bik7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9lcnJvcik7CisgICAgZ19hc3NlcnRfbnVsbCh0ZXN0
LT5tX2Zhdmljb24pOworICAgIGdfYXNzZXJ0X25vbm51bGwodGVzdC0+bV9lcnJvcik7CiB9CiAK
IHN0YXRpYyB2b2lkIHRlc3RHZXRGYXZpY29uVVJJKEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3Qp
CkBAIC0yNTcsMTcgKzI1NywxNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0Zhdmljb24oRmF2
aWNvbkRhdGFiYXNlVGVzdCogdGVzdCkKICAgICB0ZXN0LT5tX2Zhdmljb25VUkkgPSBDU3RyaW5n
KCk7CiAKICAgICBjYWlyb19zdXJmYWNlX3QqIGljb25Gcm9tV2ViVmlldyA9IHdlYmtpdF93ZWJf
dmlld19nZXRfZmF2aWNvbih0ZXN0LT5tX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KCFpY29uRnJv
bVdlYlZpZXcpOworICAgIGdfYXNzZXJ0X251bGwoaWNvbkZyb21XZWJWaWV3KTsKIAogICAgIHRl
c3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2ZvbyIpLmRhdGEoKSk7CiAgICAg
dGVzdC0+d2FpdFVudGlsRmF2aWNvbkNoYW5nZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2Zh
dmljb25Ob3RpZmljYXRpb25SZWNlaXZlZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2Zh
dmljb25Ob3RpZmljYXRpb25SZWNlaXZlZCk7CiAgICAgLy8gVGhlIGljb24gaXMga25vd24gYW5k
IGhhc24ndCBjaGFuZ2VkIGluIHRoZSBkYXRhYmFzZSwgc28gbm90aWZ5OjpmYXZpY29uIGlzIGVt
aXR0ZWQKICAgICAvLyBidXQgV2ViS2l0RmF2aWNvbkRhdGFiYXNlOjppY29uLWNoYW5nZWQgaXNu
J3QuCi0gICAgZ19hc3NlcnQodGVzdC0+bV9mYXZpY29uVVJJLmlzTnVsbCgpKTsKKyAgICBnX2Fz
c2VydF90cnVlKHRlc3QtPm1fZmF2aWNvblVSSS5pc051bGwoKSk7CiAKICAgICBpY29uRnJvbVdl
YlZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Zhdmljb24odGVzdC0+bV93ZWJWaWV3KTsKLSAg
ICBnX2Fzc2VydChpY29uRnJvbVdlYlZpZXcpOworICAgIGdfYXNzZXJ0X25vbm51bGwoaWNvbkZy
b21XZWJWaWV3KTsKICAgICBnX2Fzc2VydF9jbXB1aW50KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X3dpZHRoKGljb25Gcm9tV2ViVmlldyksID09LCAxNik7CiAgICAgZ19hc3NlcnRfY21wdWludChj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoaWNvbkZyb21XZWJWaWV3KSwgPT0sIDE2KTsK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2ViS2l0RmluZENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RXZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKaW5kZXggNzY1OGY1OTU5OWRkYjhk
M2FmZmM4MTg1MjdmYTQ2NDU1MjdlZjFlOC4uNDgwYTM0YjcxYjBjZmRkNzhmNjVjZWJhODIwYmFj
MjdhZmU3YWU2MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKQEAgLTk4LDcg
Kzk4LDcgQEAgc3RhdGljIHZvaWQgdGVzdEZpbmRDb250cm9sbGVyVGV4dEZvdW5kKEZpbmRDb250
cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5maW5kKCJ0ZXN0aW5n
IiwgV0VCS0lUX0ZJTkRfT1BUSU9OU19OT05FLCAxKTsKICAgICB0ZXN0LT53YWl0VW50aWxGaW5k
RmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0KHRlc3QtPm1fdGV4dEZvdW5kKTsKKyAgICBnX2Fz
c2VydF90cnVlKHRlc3QtPm1fdGV4dEZvdW5kKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdEZpbmRD
b250cm9sbGVyVGV4dE5vdEZvdW5kKEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKQEAgLTEwOSw3ICsxMDksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0RmluZENvbnRyb2xsZXJU
ZXh0Tm90Rm91bmQoRmluZENvbnRyb2xsZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludAogICAgIHRl
c3QtPmZpbmQoIm5vdEZvdW5kIiwgV0VCS0lUX0ZJTkRfT1BUSU9OU19OT05FLCAxKTsKICAgICB0
ZXN0LT53YWl0VW50aWxGaW5kRmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3Rl
eHRGb3VuZCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV90ZXh0Rm91bmQpOwogfQogCiBz
dGF0aWMgdm9pZCB0ZXN0RmluZENvbnRyb2xsZXJNYXRjaENvdW50KEZpbmRDb250cm9sbGVyVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTEyMCw4ICsxMjAsOCBAQCBzdGF0aWMgdm9pZCB0
ZXN0RmluZENvbnRyb2xsZXJNYXRjaENvdW50KEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcgogICAgIHRlc3QtPmZpbmQoInRlc3RpbmciLCBXRUJLSVRfRklORF9PUFRJT05T
X05PTkUsIDIpOwogICAgIHRlc3QtPndhaXRVbnRpbEZpbmRGaW5pc2hlZCgpOwogCi0gICAgZ19h
c3NlcnQodGVzdC0+bV9tYXRjaENvdW50ID09IDIpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fdGV4
dEZvdW5kKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fbWF0Y2hDb3VudCwgPT0sIDIp
OworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV90ZXh0Rm91bmQpOwogfQogCiBzdGF0aWMgdm9p
ZCB0ZXN0RmluZENvbnRyb2xsZXJNYXhNYXRjaENvdW50KEZpbmRDb250cm9sbGVyVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKQEAgLTEzMiw4ICsxMzIsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0Rmlu
ZENvbnRyb2xsZXJNYXhNYXRjaENvdW50KEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0
cG9pbgogICAgIHRlc3QtPmZpbmQoInRlc3RpbmciLCBXRUJLSVRfRklORF9PUFRJT05TX05PTkUs
IDEpOwogICAgIHRlc3QtPndhaXRVbnRpbEZpbmRGaW5pc2hlZCgpOwogCi0gICAgZ19hc3NlcnQo
dGVzdC0+bV9tYXRjaENvdW50ID09IEdfTUFYVUlOVCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV90
ZXh0Rm91bmQpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9tYXRjaENvdW50LCA9PSwg
R19NQVhVSU5UKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fdGV4dEZvdW5kKTsKIH0KIAog
c3RhdGljIHZvaWQgdGVzdEZpbmRDb250cm9sbGVyTmV4dChGaW5kQ29udHJvbGxlclRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCkBAIC0xNDQsMjIgKzE0NCwyMiBAQCBzdGF0aWMgdm9pZCB0ZXN0
RmluZENvbnRyb2xsZXJOZXh0KEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKICAgICB0ZXN0LT5maW5kKCJ0ZXN0aW5nIiwgV0VCS0lUX0ZJTkRfT1BUSU9OU19OT05FLCAy
KTsKICAgICB0ZXN0LT53YWl0VW50aWxGaW5kRmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0KHRl
c3QtPm1fdGV4dEZvdW5kKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX21hdGNoQ291bnQgPT0gMik7
CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3RleHRGb3VuZCk7CisgICAgZ19hc3NlcnRfY21w
dWludCh0ZXN0LT5tX21hdGNoQ291bnQsID09LCAyKTsKIAogICAgIHdlYmtpdF9maW5kX2NvbnRy
b2xsZXJfc2VhcmNoX25leHQodGVzdC0+bV9maW5kQ29udHJvbGxlci5nZXQoKSk7CiAgICAgdGVz
dC0+d2FpdFVudGlsRmluZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3RleHRG
b3VuZCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9tYXRjaENvdW50ID09IDEpOwotICAgIGdfYXNz
ZXJ0KCEod2Via2l0X2ZpbmRfY29udHJvbGxlcl9nZXRfb3B0aW9ucyh0ZXN0LT5tX2ZpbmRDb250
cm9sbGVyLmdldCgpKSAmIFdFQktJVF9GSU5EX09QVElPTlNfQkFDS1dBUkRTKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh0ZXN0LT5tX3RleHRGb3VuZCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0
LT5tX21hdGNoQ291bnQsID09LCAxKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfZmluZF9j
b250cm9sbGVyX2dldF9vcHRpb25zKHRlc3QtPm1fZmluZENvbnRyb2xsZXIuZ2V0KCkpICYgV0VC
S0lUX0ZJTkRfT1BUSU9OU19CQUNLV0FSRFMpOwogCiAgICAgd2Via2l0X2ZpbmRfY29udHJvbGxl
cl9zZWFyY2hfbmV4dCh0ZXN0LT5tX2ZpbmRDb250cm9sbGVyLmdldCgpKTsKICAgICB0ZXN0LT53
YWl0VW50aWxGaW5kRmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3RleHRGb3Vu
ZCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9tYXRjaENvdW50ID09IDEpOwotICAgIGdfYXNzZXJ0
KCEod2Via2l0X2ZpbmRfY29udHJvbGxlcl9nZXRfb3B0aW9ucyh0ZXN0LT5tX2ZpbmRDb250cm9s
bGVyLmdldCgpKSAmIFdFQktJVF9GSU5EX09QVElPTlNfQkFDS1dBUkRTKSk7CisgICAgZ19hc3Nl
cnRfZmFsc2UodGVzdC0+bV90ZXh0Rm91bmQpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+
bV9tYXRjaENvdW50LCA9PSwgMSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2ZpbmRfY29u
dHJvbGxlcl9nZXRfb3B0aW9ucyh0ZXN0LT5tX2ZpbmRDb250cm9sbGVyLmdldCgpKSAmIFdFQktJ
VF9GSU5EX09QVElPTlNfQkFDS1dBUkRTKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdEZpbmRDb250
cm9sbGVyUHJldmlvdXMoRmluZENvbnRyb2xsZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpA
QCAtMTcwLDIyICsxNzAsMjIgQEAgc3RhdGljIHZvaWQgdGVzdEZpbmRDb250cm9sbGVyUHJldmlv
dXMoRmluZENvbnRyb2xsZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPmZp
bmQoInRlc3RpbmciLCBXRUJLSVRfRklORF9PUFRJT05TX05PTkUsIDIpOwogICAgIHRlc3QtPndh
aXRVbnRpbEZpbmRGaW5pc2hlZCgpOwogCi0gICAgZ19hc3NlcnQodGVzdC0+bV9tYXRjaENvdW50
ID09IDIpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fdGV4dEZvdW5kKTsKKyAgICBnX2Fzc2VydF9j
bXB1aW50KHRlc3QtPm1fbWF0Y2hDb3VudCwgPT0sIDIpOworICAgIGdfYXNzZXJ0X3RydWUodGVz
dC0+bV90ZXh0Rm91bmQpOwogCiAgICAgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9zZWFyY2hfbmV4
dCh0ZXN0LT5tX2ZpbmRDb250cm9sbGVyLmdldCgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxGaW5k
RmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0KHRlc3QtPm1fdGV4dEZvdW5kKTsKLSAgICBnX2Fz
c2VydCh0ZXN0LT5tX21hdGNoQ291bnQgPT0gMSk7Ci0gICAgZ19hc3NlcnQoISh3ZWJraXRfZmlu
ZF9jb250cm9sbGVyX2dldF9vcHRpb25zKHRlc3QtPm1fZmluZENvbnRyb2xsZXIuZ2V0KCkpICYg
V0VCS0lUX0ZJTkRfT1BUSU9OU19CQUNLV0FSRFMpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3Qt
Pm1fdGV4dEZvdW5kKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fbWF0Y2hDb3VudCwg
PT0sIDEpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfZ2V0X29w
dGlvbnModGVzdC0+bV9maW5kQ29udHJvbGxlci5nZXQoKSkgJiBXRUJLSVRfRklORF9PUFRJT05T
X0JBQ0tXQVJEUyk7CiAKICAgICB3ZWJraXRfZmluZF9jb250cm9sbGVyX3NlYXJjaF9wcmV2aW91
cyh0ZXN0LT5tX2ZpbmRDb250cm9sbGVyLmdldCgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxGaW5k
RmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0KHRlc3QtPm1fdGV4dEZvdW5kKTsKLSAgICBnX2Fz
c2VydCh0ZXN0LT5tX21hdGNoQ291bnQgPT0gMSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X2ZpbmRf
Y29udHJvbGxlcl9nZXRfb3B0aW9ucyh0ZXN0LT5tX2ZpbmRDb250cm9sbGVyLmdldCgpKSAmIFdF
QktJVF9GSU5EX09QVElPTlNfQkFDS1dBUkRTKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1f
dGV4dEZvdW5kKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fbWF0Y2hDb3VudCwgPT0s
IDEpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2ZpbmRfY29udHJvbGxlcl9nZXRfb3B0aW9u
cyh0ZXN0LT5tX2ZpbmRDb250cm9sbGVyLmdldCgpKSAmIFdFQktJVF9GSU5EX09QVElPTlNfQkFD
S1dBUkRTKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdEZpbmRDb250cm9sbGVyQ291bnRlZE1hdGNo
ZXMoRmluZENvbnRyb2xsZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMTk2LDE3ICsx
OTYsMTcgQEAgc3RhdGljIHZvaWQgdGVzdEZpbmRDb250cm9sbGVyQ291bnRlZE1hdGNoZXMoRmlu
ZENvbnRyb2xsZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2kKICAgICB0ZXN0LT5jb3VudCgidGVzdGlu
ZyIsIFdFQktJVF9GSU5EX09QVElPTlNfTk9ORSwgMik7CiAgICAgdGVzdC0+d2FpdFVudGlsRmlu
ZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX21hdGNoQ291bnQgPT0gMik7Cisg
ICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX21hdGNoQ291bnQsID09LCAyKTsKIAogICAgIHRl
c3QtPmNvdW50KCJmaXJzdCIsIFdFQktJVF9GSU5EX09QVElPTlNfTk9ORSwgMik7CiAgICAgdGVz
dC0+d2FpdFVudGlsRmluZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX21hdGNo
Q291bnQgPT0gMSk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX21hdGNoQ291bnQsID09
LCAxKTsKIAogICAgIHRlc3QtPmNvdW50KCJub3RGb3VuZCIsIFdFQktJVF9GSU5EX09QVElPTlNf
Tk9ORSwgMik7CiAgICAgdGVzdC0+d2FpdFVudGlsRmluZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fz
c2VydCghdGVzdC0+bV9tYXRjaENvdW50KTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1f
bWF0Y2hDb3VudCwgPT0sIDApOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0RmluZENvbnRyb2xsZXJP
cHRpb25zKEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTIxNyw0
NCArMjE3LDQ0IEBAIHN0YXRpYyB2b2lkIHRlc3RGaW5kQ29udHJvbGxlck9wdGlvbnMoRmluZENv
bnRyb2xsZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPmZpbmQoIlRlc3Rp
bmciLCBXRUJLSVRfRklORF9PUFRJT05TX05PTkUsIDIpOwogICAgIHRlc3QtPndhaXRVbnRpbEZp
bmRGaW5pc2hlZCgpOwogCi0gICAgZ19hc3NlcnQoIXRlc3QtPm1fdGV4dEZvdW5kKTsKKyAgICBn
X2Fzc2VydF9mYWxzZSh0ZXN0LT5tX3RleHRGb3VuZCk7CiAKICAgICB0ZXN0LT5maW5kKCJUZXN0
aW5nIiwgV0VCS0lUX0ZJTkRfT1BUSU9OU19DQVNFX0lOU0VOU0lUSVZFLCAyKTsKICAgICB0ZXN0
LT53YWl0VW50aWxGaW5kRmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0KHRlc3QtPm1fdGV4dEZv
dW5kKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fdGV4dEZvdW5kKTsKIAogICAgIHRlc3Qt
PmZpbmQoImVzdGluZyIsIFdFQktJVF9GSU5EX09QVElPTlNfTk9ORSwgMik7CiAgICAgdGVzdC0+
d2FpdFVudGlsRmluZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3RleHRGb3Vu
ZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3RleHRGb3VuZCk7CiAKICAgICB0ZXN0LT5m
aW5kKCJlc3RpbmciLCBXRUJLSVRfRklORF9PUFRJT05TX0FUX1dPUkRfU1RBUlRTLCAyKTsKICAg
ICB0ZXN0LT53YWl0VW50aWxGaW5kRmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0KCF0ZXN0LT5t
X3RleHRGb3VuZCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV90ZXh0Rm91bmQpOwogCiAg
ICAgdGVzdC0+ZmluZCgiSGFsZiIsIFdFQktJVF9GSU5EX09QVElPTlNfQVRfV09SRF9TVEFSVFMs
IDIpOwogICAgIHRlc3QtPndhaXRVbnRpbEZpbmRGaW5pc2hlZCgpOwogCi0gICAgZ19hc3NlcnQo
IXRlc3QtPm1fdGV4dEZvdW5kKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5tX3RleHRGb3Vu
ZCk7CiAKICAgICB0ZXN0LT5maW5kKCJIYWxmIiwgV0VCS0lUX0ZJTkRfT1BUSU9OU19BVF9XT1JE
X1NUQVJUUyB8IFdFQktJVF9GSU5EX09QVElPTlNfVFJFQVRfTUVESUFMX0NBUElUQUxfQVNfV09S
RF9TVEFSVCwgMik7CiAgICAgdGVzdC0+d2FpdFVudGlsRmluZEZpbmlzaGVkKCk7CiAKLSAgICBn
X2Fzc2VydCh0ZXN0LT5tX3RleHRGb3VuZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3Rl
eHRGb3VuZCk7CiAKICAgICB0ZXN0LT5maW5kKCJ0ZXN0aW5nIiwgV0VCS0lUX0ZJTkRfT1BUSU9O
U19XUkFQX0FST1VORCwgMyk7CiAgICAgdGVzdC0+d2FpdFVudGlsRmluZEZpbmlzaGVkKCk7Ci0g
ICAgZ19hc3NlcnQodGVzdC0+bV90ZXh0Rm91bmQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+
bV90ZXh0Rm91bmQpOwogCiAgICAgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9zZWFyY2hfbmV4dCh0
ZXN0LT5tX2ZpbmRDb250cm9sbGVyLmdldCgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxGaW5kRmlu
aXNoZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3RleHRGb3VuZCk7CisgICAgZ19hc3NlcnRf
dHJ1ZSh0ZXN0LT5tX3RleHRGb3VuZCk7CiAKICAgICB3ZWJraXRfZmluZF9jb250cm9sbGVyX3Nl
YXJjaF9uZXh0KHRlc3QtPm1fZmluZENvbnRyb2xsZXIuZ2V0KCkpOwogICAgIHRlc3QtPndhaXRV
bnRpbEZpbmRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fdGV4dEZvdW5kKTsKKyAg
ICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fdGV4dEZvdW5kKTsKIH0KIAogLy8gVE9ETzogUmV3cml0
ZSB0aGlzIHRlc3QgdG8gYXZvaWQgdXNpbmcgc25hcHNob3RzIHNvIGl0IGNhbiBiZSByZS1lbmFi
bGVkCkBAIC0yNjksMTYgKzI2OSwxNiBAQCBzdGF0aWMgdm9pZCB0ZXN0RmluZENvbnRyb2xsZXJI
aWRlKEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIGNhaXJv
X3N1cmZhY2VfdCogb3JpZ2luYWxTdXJmYWNlID0gY2Fpcm9fc3VyZmFjZV9yZWZlcmVuY2UoCiAg
ICAgICAgIHRlc3QtPmdldFNuYXBzaG90QW5kV2FpdFVudGlsUmVhZHkoV0VCS0lUX1NOQVBTSE9U
X1JFR0lPTl9GVUxMX0RPQ1VNRU5ULCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FKSk7Ci0g
ICAgZ19hc3NlcnQob3JpZ2luYWxTdXJmYWNlKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKG9yaWdp
bmFsU3VyZmFjZSk7CiAKICAgICB0ZXN0LT5maW5kKCJ0ZXN0aW5nIiwgV0VCS0lUX0ZJTkRfT1BU
SU9OU19OT05FLCAxKTsKICAgICB0ZXN0LT53YWl0VW50aWxGaW5kRmluaXNoZWQoKTsKLSAgICBn
X2Fzc2VydCh0ZXN0LT5tX3RleHRGb3VuZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3Rl
eHRGb3VuZCk7CiAKICAgICBjYWlyb19zdXJmYWNlX3QqIGhpZ2hsaWdodFN1cmZhY2UgPSBjYWly
b19zdXJmYWNlX3JlZmVyZW5jZSgKICAgICAgICAgdGVzdC0+Z2V0U25hcHNob3RBbmRXYWl0VW50
aWxSZWFkeShXRUJLSVRfU05BUFNIT1RfUkVHSU9OX0ZVTExfRE9DVU1FTlQsIFdFQktJVF9TTkFQ
U0hPVF9PUFRJT05TX05PTkUpKTsKLSAgICBnX2Fzc2VydChoaWdobGlnaHRTdXJmYWNlKTsKLSAg
ICBnX2Fzc2VydCghVGVzdDo6Y2Fpcm9TdXJmYWNlc0VxdWFsKG9yaWdpbmFsU3VyZmFjZSwgaGln
aGxpZ2h0U3VyZmFjZSkpOworICAgIGdfYXNzZXJ0X25vbm51bGwoaGlnaGxpZ2h0U3VyZmFjZSk7
CisgICAgZ19hc3NlcnRfZmFsc2UoVGVzdDo6Y2Fpcm9TdXJmYWNlc0VxdWFsKG9yaWdpbmFsU3Vy
ZmFjZSwgaGlnaGxpZ2h0U3VyZmFjZSkpOwogCiAgICAgV2ViS2l0RmluZENvbnRyb2xsZXIqIGZp
bmRDb250cm9sbGVyID0gd2Via2l0X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xsZXIodGVzdC0+
bV93ZWJWaWV3KTsKICAgICB3ZWJraXRfZmluZF9jb250cm9sbGVyX3NlYXJjaF9maW5pc2goZmlu
ZENvbnRyb2xsZXIpOwpAQCAtMjg2LDggKzI4Niw4IEBAIHN0YXRpYyB2b2lkIHRlc3RGaW5kQ29u
dHJvbGxlckhpZGUoRmluZENvbnRyb2xsZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogCiAg
ICAgY2Fpcm9fc3VyZmFjZV90KiB1bmhpZ2hsaWdodFN1cmZhY2UgPSBjYWlyb19zdXJmYWNlX3Jl
ZmVyZW5jZSgKICAgICAgICAgdGVzdC0+Z2V0U25hcHNob3RBbmRXYWl0VW50aWxSZWFkeShXRUJL
SVRfU05BUFNIT1RfUkVHSU9OX0ZVTExfRE9DVU1FTlQsIFdFQktJVF9TTkFQU0hPVF9PUFRJT05T
X05PTkUpKTsKLSAgICBnX2Fzc2VydCh1bmhpZ2hsaWdodFN1cmZhY2UpOwotICAgIGdfYXNzZXJ0
KFRlc3Q6OmNhaXJvU3VyZmFjZXNFcXVhbChvcmlnaW5hbFN1cmZhY2UsIHVuaGlnaGxpZ2h0U3Vy
ZmFjZSkpOworICAgIGdfYXNzZXJ0X25vbm51bGwodW5oaWdobGlnaHRTdXJmYWNlKTsKKyAgICBn
X2Fzc2VydF90cnVlKFRlc3Q6OmNhaXJvU3VyZmFjZXNFcXVhbChvcmlnaW5hbFN1cmZhY2UsIHVu
aGlnaGxpZ2h0U3VyZmFjZSkpOwogCiAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KG9yaWdpbmFs
U3VyZmFjZSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KGhpZ2hsaWdodFN1cmZhY2UpOwpA
QCAtMzAwLDcgKzMwMCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RGaW5kQ29udHJvbGxlckluc3RhbmNl
KEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBXZWJLaXRGaW5k
Q29udHJvbGxlciogZmluZENvbnRyb2xsZXIxID0gd2Via2l0X3dlYl92aWV3X2dldF9maW5kX2Nv
bnRyb2xsZXIodGVzdC0+bV93ZWJWaWV3KTsKICAgICBXZWJLaXRGaW5kQ29udHJvbGxlciogZmlu
ZENvbnRyb2xsZXIyID0gd2Via2l0X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xsZXIodGVzdC0+
bV93ZWJWaWV3KTsKIAotICAgIGdfYXNzZXJ0KGZpbmRDb250cm9sbGVyMSA9PSBmaW5kQ29udHJv
bGxlcjIpOworICAgIGdfYXNzZXJ0X2NtcGhleChmaW5kQ29udHJvbGxlcjEsID09LCBmaW5kQ29u
dHJvbGxlcjIpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0RmluZENvbnRyb2xsZXJHZXR0ZXJzKEZp
bmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTMxMSwxMCArMzExLDEw
IEBAIHN0YXRpYyB2b2lkIHRlc3RGaW5kQ29udHJvbGxlckdldHRlcnMoRmluZENvbnRyb2xsZXJU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIFdlYktpdEZpbmRDb250cm9sbGVyKiBmaW5k
Q29udHJvbGxlciA9IHdlYmtpdF93ZWJfdmlld19nZXRfZmluZF9jb250cm9sbGVyKHRlc3QtPm1f
d2ViVmlldyk7CiAKICAgICB3ZWJraXRfZmluZF9jb250cm9sbGVyX3NlYXJjaChmaW5kQ29udHJv
bGxlciwgc2VhcmNoVGV4dCwgZmluZE9wdGlvbnMsIG1heE1hdGNoQ291bnQpOwotICAgIGdfYXNz
ZXJ0KHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfZ2V0X3dlYl92aWV3KGZpbmRDb250cm9sbGVyKSA9
PSB0ZXN0LT5tX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KCFnX3N0cmNtcDAod2Via2l0X2ZpbmRf
Y29udHJvbGxlcl9nZXRfc2VhcmNoX3RleHQoZmluZENvbnRyb2xsZXIpLCBzZWFyY2hUZXh0KSk7
Ci0gICAgZ19hc3NlcnQod2Via2l0X2ZpbmRfY29udHJvbGxlcl9nZXRfbWF4X21hdGNoX2NvdW50
KGZpbmRDb250cm9sbGVyKSA9PSBtYXhNYXRjaENvdW50KTsKLSAgICBnX2Fzc2VydCh3ZWJraXRf
ZmluZF9jb250cm9sbGVyX2dldF9vcHRpb25zKGZpbmRDb250cm9sbGVyKSA9PSBmaW5kT3B0aW9u
cyk7CisgICAgZ19hc3NlcnRfY21waGV4KHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfZ2V0X3dlYl92
aWV3KGZpbmRDb250cm9sbGVyKSwgPT0sIHRlc3QtPm1fd2ViVmlldyk7CisgICAgZ19hc3NlcnRf
Y21wc3RyKHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfZ2V0X3NlYXJjaF90ZXh0KGZpbmRDb250cm9s
bGVyKSwgPT0sIHNlYXJjaFRleHQpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2ZpbmRf
Y29udHJvbGxlcl9nZXRfbWF4X21hdGNoX2NvdW50KGZpbmRDb250cm9sbGVyKSwgPT0sIG1heE1h
dGNoQ291bnQpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2ZpbmRfY29udHJvbGxlcl9n
ZXRfb3B0aW9ucyhmaW5kQ29udHJvbGxlciksID09LCBmaW5kT3B0aW9ucyk7CiB9CiAKIHZvaWQg
YmVmb3JlQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcAppbmRleCBhOWZkOWRlMzNi
ZDFmNTQ2NjM0YWMzMTAyY2Y3MGU0ODVmMzU0MzMzLi43NjliY2M4OTE2YmI5YjFjMWFmZTI5ZDZi
YzIwOWRkNDMyODAxNmE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwCkBAIC0xMjIs
NyArMTIyLDcgQEAgc3RhdGljIHZvaWQgdGVzdE5hdmlnYXRpb25Qb2xpY3koUG9saWN5Q2xpZW50
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X25h
dmlnYXRpb25fYWN0aW9uX2dldF9tb3VzZV9idXR0b24obmF2aWdhdGlvbkFjdGlvbiksID09LCAw
KTsKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X25hdmlnYXRpb25fYWN0aW9uX2dldF9tb2Rp
ZmllcnMobmF2aWdhdGlvbkFjdGlvbiksID09LCAwKTsKICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJr
aXRfbmF2aWdhdGlvbl9hY3Rpb25faXNfcmVkaXJlY3QobmF2aWdhdGlvbkFjdGlvbikpOwotICAg
IGdfYXNzZXJ0KCF3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25fZ2V0X2ZyYW1lX25h
bWUoZGVjaXNpb24pKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9uYXZpZ2F0aW9uX3BvbGlj
eV9kZWNpc2lvbl9nZXRfZnJhbWVfbmFtZShkZWNpc2lvbikpOwogICAgIFdlYktpdFVSSVJlcXVl
c3QqIHJlcXVlc3QgPSB3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X3JlcXVlc3QobmF2aWdh
dGlvbkFjdGlvbik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF91cmlfcmVxdWVzdF9nZXRf
dXJpKHJlcXVlc3QpLCA9PSwgImh0dHA6Ly93ZWJraXRndGsub3JnLyIpOwogCkBAIC0xNDEsNyAr
MTQxLDcgQEAgc3RhdGljIHZvaWQgdGVzdE5hdmlnYXRpb25Qb2xpY3koUG9saWN5Q2xpZW50VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBkZWNpc2lvbiA9IFdFQktJVF9OQVZJR0FUSU9O
X1BPTElDWV9ERUNJU0lPTih0ZXN0LT5tX3ByZXZpb3VzUG9saWN5RGVjaXNpb24uZ2V0KCkpOwog
ICAgIG5hdmlnYXRpb25BY3Rpb24gPSB3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb25f
Z2V0X25hdmlnYXRpb25fYWN0aW9uKGRlY2lzaW9uKTsKICAgICBnX2Fzc2VydF90cnVlKHdlYmtp
dF9uYXZpZ2F0aW9uX2FjdGlvbl9pc19yZWRpcmVjdChuYXZpZ2F0aW9uQWN0aW9uKSk7Ci0gICAg
Z19hc3NlcnQoIXdlYmtpdF9uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9nZXRfZnJhbWVfbmFt
ZShkZWNpc2lvbikpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X25hdmlnYXRpb25fcG9saWN5
X2RlY2lzaW9uX2dldF9mcmFtZV9uYW1lKGRlY2lzaW9uKSk7CiAgICAgcmVxdWVzdCA9IHdlYmtp
dF9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfcmVxdWVzdChuYXZpZ2F0aW9uQWN0aW9uKTsKICAgICBn
X2Fzc2VydF9jbXBzdHIod2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCksID09LCBr
U2VydmVyLT5nZXRVUklGb3JQYXRoKCIvIikuZGF0YSgpKTsKIApAQCAtMTc0LDEyICsxNzQsMTIg
QEAgc3RhdGljIHZvaWQgdGVzdFJlc3BvbnNlUG9saWN5KFBvbGljeUNsaWVudFRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAKICAgICBXZWJLaXRSZXNwb25zZVBvbGljeURlY2lzaW9uKiBkZWNp
c2lvbiA9IFdFQktJVF9SRVNQT05TRV9QT0xJQ1lfREVDSVNJT04odGVzdC0+bV9wcmV2aW91c1Bv
bGljeURlY2lzaW9uLmdldCgpKTsKICAgICBXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0ID0gd2Vi
a2l0X3Jlc3BvbnNlX3BvbGljeV9kZWNpc2lvbl9nZXRfcmVxdWVzdChkZWNpc2lvbik7Ci0gICAg
Z19hc3NlcnQoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsKKyAgICBnX2Fzc2VydF90
cnVlKFdFQktJVF9JU19VUklfUkVRVUVTVChyZXF1ZXN0KSk7CiAgICAgQVNTRVJUX0NNUF9DU1RS
SU5HKHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpLCA9PSwga1NlcnZlci0+Z2V0
VVJJRm9yUGF0aCgiLyIpKTsKICAgICBXZWJLaXRVUklSZXNwb25zZSogcmVzcG9uc2UgPSB3ZWJr
aXRfcmVzcG9uc2VfcG9saWN5X2RlY2lzaW9uX2dldF9yZXNwb25zZShkZWNpc2lvbik7Ci0gICAg
Z19hc3NlcnQoV0VCS0lUX0lTX1VSSV9SRVNQT05TRShyZXNwb25zZSkpOworICAgIGdfYXNzZXJ0
X3RydWUoV0VCS0lUX0lTX1VSSV9SRVNQT05TRShyZXNwb25zZSkpOwogICAgIEFTU0VSVF9DTVBf
Q1NUUklORyh3ZWJraXRfdXJpX3Jlc3BvbnNlX2dldF91cmkocmVzcG9uc2UpLCA9PSwga1NlcnZl
ci0+Z2V0VVJJRm9yUGF0aCgiLyIpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfY2Fu
X3Nob3dfbWltZV90eXBlKHRlc3QtPm1fd2ViVmlldywgd2Via2l0X3VyaV9yZXNwb25zZV9nZXRf
bWltZV90eXBlKHJlc3BvbnNlKSkgPT0KKyAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3dlYl92
aWV3X2Nhbl9zaG93X21pbWVfdHlwZSh0ZXN0LT5tX3dlYlZpZXcsIHdlYmtpdF91cmlfcmVzcG9u
c2VfZ2V0X21pbWVfdHlwZShyZXNwb25zZSkpLCA9PSwKICAgICAgICAgd2Via2l0X3Jlc3BvbnNl
X3BvbGljeV9kZWNpc2lvbl9pc19taW1lX3R5cGVfc3VwcG9ydGVkKGRlY2lzaW9uKSk7CiAKICAg
ICB0ZXN0LT5tX3Jlc3BvbmRUb1BvbGljeURlY2lzaW9uQXN5bmNocm9ub3VzbHkgPSB0cnVlOwpA
QCAtMjM1LDcgKzIzNSw3IEBAIHN0YXRpYyB2b2lkIHRlc3ROZXdXaW5kb3dQb2xpY3koUG9saWN5
Q2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5tX3BvbGljeURlY2lz
aW9uUmVzcG9uc2UgPSBQb2xpY3lDbGllbnRUZXN0OjpVc2U7CiAgICAgdGVzdC0+bG9hZEh0bWwo
d2luZG93T3BlbmluZ0hUTUwsICJodHRwOi8vd2Via2l0Z3RrLm9yZy8iKTsKICAgICB0ZXN0LT53
YWl0KDEpOwotICAgIGdfYXNzZXJ0KGRhdGEudHJpZWRUb09wZW5XaW5kb3cpOworICAgIGdfYXNz
ZXJ0X3RydWUoZGF0YS50cmllZFRvT3BlbldpbmRvdyk7CiAKICAgICBXZWJLaXROYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24qIGRlY2lzaW9uID0gV0VCS0lUX05BVklHQVRJT05fUE9MSUNZX0RFQ0lT
SU9OKHRlc3QtPm1fcHJldmlvdXNQb2xpY3lEZWNpc2lvbi5nZXQoKSk7CiAgICAgZ19hc3NlcnRf
Y21wc3RyKHdlYmtpdF9uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9nZXRfZnJhbWVfbmFtZShk
ZWNpc2lvbiksID09LCAiX2JsYW5rIik7CkBAIC0yNDcsNyArMjQ3LDcgQEAgc3RhdGljIHZvaWQg
dGVzdE5ld1dpbmRvd1BvbGljeShQb2xpY3lDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25SZXNwb25zZSA9IFBvbGljeUNsaWVudFRlc3Q6
Oklnbm9yZTsKICAgICB0ZXN0LT5sb2FkSHRtbCh3aW5kb3dPcGVuaW5nSFRNTCwgImh0dHA6Ly93
ZWJraXRndGsub3JnLyIpOwogICAgIHRlc3QtPndhaXQoLjIpOwotICAgIGdfYXNzZXJ0KCFkYXRh
LnRyaWVkVG9PcGVuV2luZG93KTsKKyAgICBnX2Fzc2VydF9mYWxzZShkYXRhLnRyaWVkVG9PcGVu
V2luZG93KTsKIH0KIAogc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2Vy
dmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSos
IFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFNlY3VyaXR5T3JpZ2luLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2VjdXJpdHlPcmln
aW4uY3BwCmluZGV4IDFiYWZkN2UyZGI1ODhlZmM5MTcyNGVjZDhkNjg0Yjk3ZDlmMjVjOTEuLjVk
Yzc0Yzc3OWJlZjMzZTFhNDdmMzhiZTc5MWI5YTM2YTc2NjMwNDkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2VjdXJpdHlPcmlnaW4u
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0
U2VjdXJpdHlPcmlnaW4uY3BwCkBAIC0yNSwxMDUgKzI1LDEwNSBAQAogc3RhdGljIHZvaWQgdGVz
dFNlY3VyaXR5T3JpZ2luQmFzaWNDb25zdHJ1Y3RvcihUZXN0KiwgZ2NvbnN0cG9pbnRlcikKIHsK
ICAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdp
bl9uZXcoImh0dHAiLCAiMTI3LjAuMC4xIiwgMTIzNCk7Ci0gICAgZ19hc3NlcnQob3JpZ2luKTsK
KyAgICBnX2Fzc2VydF9ub25udWxsKG9yaWdpbik7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBhc1N0
cmluZyh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3RvX3N0cmluZyhvcmlnaW4pKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIoYXNTdHJpbmcuZ2V0KCksID09LCAiaHR0cDovLzEyNy4wLjAuMToxMjM0Iik7
CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29s
KG9yaWdpbiksID09LCAiaHR0cCIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJp
dHlfb3JpZ2luX2dldF9ob3N0KG9yaWdpbiksID09LCAiMTI3LjAuMC4xIik7CiAgICAgZ19hc3Nl
cnRfY21waW50KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQob3JpZ2luKSwgPT0sIDEy
MzQpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1ZShvcmln
aW4pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1
ZShvcmlnaW4pKTsKICAgICB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKG9yaWdpbik7CiB9
CiAKIHN0YXRpYyB2b2lkIHRlc3RTZWN1cml0eU9yaWdpblVSSUNvbnN0cnVjdG9yKFRlc3QqLCBn
Y29uc3Rwb2ludGVyKQogewogICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJr
aXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJpKCJodHRwOi8vMTI3LjAuMC4xOjEyMzQiKTsK
LSAgICBnX2Fzc2VydChvcmlnaW4pOworICAgIGdfYXNzZXJ0X25vbm51bGwob3JpZ2luKTsKICAg
ICBHVW5pcXVlUHRyPGNoYXI+IGFzU3RyaW5nKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdG9fc3Ry
aW5nKG9yaWdpbikpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihhc1N0cmluZy5nZXQoKSwgPT0sICJo
dHRwOi8vMTI3LjAuMC4xOjEyMzQiKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3Vy
aXR5X29yaWdpbl9nZXRfcHJvdG9jb2wob3JpZ2luKSwgPT0sICJodHRwIik7CiAgICAgZ19hc3Nl
cnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0sICIx
MjcuMC4wLjEiKTsKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9n
ZXRfcG9ydChvcmlnaW4pLCA9PSwgMTIzNCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1cml0
eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdpbikpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9z
ZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdpbikpOwogICAgIHdlYmtpdF9zZWN1cml0eV9v
cmlnaW5fdW5yZWYob3JpZ2luKTsKIAogICAgIG9yaWdpbiA9IHdlYmtpdF9zZWN1cml0eV9vcmln
aW5fbmV3X2Zvcl91cmkoImh0dHA6Ly8xMjcuMC4wLjE6MTIzNC90aGlzL3BhdGgvP3Nob3VsZD1i
ZSNpZ25vcmVkIik7Ci0gICAgZ19hc3NlcnQob3JpZ2luKTsKKyAgICBnX2Fzc2VydF9ub25udWxs
KG9yaWdpbik7CiAgICAgYXNTdHJpbmcucmVzZXQod2Via2l0X3NlY3VyaXR5X29yaWdpbl90b19z
dHJpbmcob3JpZ2luKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGFzU3RyaW5nLmdldCgpLCA9PSwg
Imh0dHA6Ly8xMjcuMC4wLjE6MTIzNCIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbChvcmlnaW4pLCA9PSwgImh0dHAiKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pLCA9PSwg
IjEyNy4wLjAuMSIpOwogICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X2dldF9wb3J0KG9yaWdpbiksID09LCAxMjM0KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NlY3Vy
aXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0
X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CiAgICAgd2Via2l0X3NlY3VyaXR5
X29yaWdpbl91bnJlZihvcmlnaW4pOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0U2VjdXJpdHlPcmln
aW5EZWZhdWx0UG9ydChUZXN0KiwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBXZWJLaXRTZWN1cml0
eU9yaWdpbiogb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXcoImh0dHAiLCAiMTI3
LjAuMC4xIiwgMCk7Ci0gICAgZ19hc3NlcnQob3JpZ2luKTsKKyAgICBnX2Fzc2VydF9ub25udWxs
KG9yaWdpbik7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBhc1N0cmluZyh3ZWJraXRfc2VjdXJpdHlf
b3JpZ2luX3RvX3N0cmluZyhvcmlnaW4pKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoYXNTdHJpbmcu
Z2V0KCksID09LCAiaHR0cDovLzEyNy4wLjAuMSIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJr
aXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbChvcmlnaW4pLCA9PSwgImh0dHAiKTsKICAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4p
LCA9PSwgIjEyNy4wLjAuMSIpOwogICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJpdHlf
b3JpZ2luX2dldF9wb3J0KG9yaWdpbiksID09LCAwKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CiAgICAgd2Via2l0X3NlY3Vy
aXR5X29yaWdpbl91bnJlZihvcmlnaW4pOwogCiAgICAgb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5
X29yaWdpbl9uZXcoImh0dHAiLCAiMTI3LjAuMC4xIiwgODApOwotICAgIGdfYXNzZXJ0KG9yaWdp
bik7CisgICAgZ19hc3NlcnRfbm9ubnVsbChvcmlnaW4pOwogICAgIGFzU3RyaW5nLnJlc2V0KHdl
YmtpdF9zZWN1cml0eV9vcmlnaW5fdG9fc3RyaW5nKG9yaWdpbikpOwogICAgIGdfYXNzZXJ0X2Nt
cHN0cihhc1N0cmluZy5nZXQoKSwgPT0sICJodHRwOi8vMTI3LjAuMC4xIik7CiAgICAgZ19hc3Nl
cnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiksID09
LCAiaHR0cCIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dl
dF9ob3N0KG9yaWdpbiksID09LCAiMTI3LjAuMC4xIik7CiAgICAgZ19hc3NlcnRfY21waW50KHdl
YmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3BvcnQob3JpZ2luKSwgPT0sIDApOwotICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1ZShvcmlnaW4pKTsKKyAgICBnX2Fz
c2VydF9mYWxzZSh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29wYXF1ZShvcmlnaW4pKTsKICAg
ICB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKG9yaWdpbik7CiAKICAgICBvcmlnaW4gPSB3
ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJpKCJodHRwOi8vMTI3LjAuMC4xIik7Ci0g
ICAgZ19hc3NlcnQob3JpZ2luKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKG9yaWdpbik7CiAgICAg
YXNTdHJpbmcucmVzZXQod2Via2l0X3NlY3VyaXR5X29yaWdpbl90b19zdHJpbmcob3JpZ2luKSk7
CiAgICAgZ19hc3NlcnRfY21wc3RyKGFzU3RyaW5nLmdldCgpLCA9PSwgImh0dHA6Ly8xMjcuMC4w
LjEiKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJv
dG9jb2wob3JpZ2luKSwgPT0sICJodHRwIik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9z
ZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0sICIxMjcuMC4wLjEiKTsKICAgICBn
X2Fzc2VydF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmlnaW4pLCA9
PSwgMCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9y
aWdpbikpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3Bh
cXVlKG9yaWdpbikpOwogICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsK
IAogICAgIG9yaWdpbiA9IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoImh0dHA6
Ly8xMjcuMC4wLjE6ODAiKTsKLSAgICBnX2Fzc2VydChvcmlnaW4pOworICAgIGdfYXNzZXJ0X25v
bm51bGwob3JpZ2luKTsKICAgICBhc1N0cmluZy5yZXNldCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X3RvX3N0cmluZyhvcmlnaW4pKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoYXNTdHJpbmcuZ2V0KCks
ID09LCAiaHR0cDovLzEyNy4wLjAuMSIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbChvcmlnaW4pLCA9PSwgImh0dHAiKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pLCA9PSwg
IjEyNy4wLjAuMSIpOwogICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X2dldF9wb3J0KG9yaWdpbiksID09LCAwKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NlY3VyaXR5
X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CiAgICAgd2Via2l0X3NlY3VyaXR5X29y
aWdpbl91bnJlZihvcmlnaW4pOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0U2VjdXJpdHlPcmlnaW5G
aWxlVVJJKFRlc3QqLCBnY29uc3Rwb2ludGVyKQogewogICAgIFdlYktpdFNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJpKCJmaWxlOi8vL2Fi
Y2RlZmciKTsKLSAgICBnX2Fzc2VydChvcmlnaW4pOworICAgIGdfYXNzZXJ0X25vbm51bGwob3Jp
Z2luKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGFzU3RyaW5nKHdlYmtpdF9zZWN1cml0eV9vcmln
aW5fdG9fc3RyaW5nKG9yaWdpbikpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihhc1N0cmluZy5nZXQo
KSwgPT0sICJmaWxlOi8vIik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9v
cmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiksID09LCAiZmlsZSIpOwotICAgIGdfYXNzZXJ0KCF3
ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdpbikpOworICAgIGdfYXNzZXJ0X251
bGwod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pKTsKICAgICBnX2Fzc2Vy
dF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmlnaW4pLCA9PSwgMCk7
Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdpbikp
OworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9y
aWdpbikpOwogICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKIH0KIAog
c3RhdGljIHZvaWQgdGVzdE9wYXF1ZVNlY3VyaXR5T3JpZ2luKFRlc3QqLCBnY29uc3Rwb2ludGVy
KQogewogICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlf
b3JpZ2luX25ld19mb3JfdXJpKCJkYXRhOkxhbGkgaG8hIik7Ci0gICAgZ19hc3NlcnQob3JpZ2lu
KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKG9yaWdpbik7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBh
c1N0cmluZyh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3RvX3N0cmluZyhvcmlnaW4pKTsKLSAgICBn
X2Fzc2VydCghYXNTdHJpbmcpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X2dldF9wcm90b2NvbChvcmlnaW4pKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NlY3VyaXR5X29y
aWdpbl9nZXRfaG9zdChvcmlnaW4pKTsKKyAgICBnX2Fzc2VydF9udWxsKGFzU3RyaW5nKTsKKyAg
ICBnX2Fzc2VydF9udWxsKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdp
bikpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChv
cmlnaW4pKTsKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRf
cG9ydChvcmlnaW4pLCA9PSwgMCk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3NlY3VyaXR5X29yaWdp
bl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2VjdXJpdHlf
b3JpZ2luX2lzX29wYXF1ZShvcmlnaW4pKTsKICAgICB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3Vu
cmVmKG9yaWdpbik7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2ViS2l0U2V0dGluZ3MuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKaW5kZXggYzU5YjUxMzZhMmY1
ZGNhNGIxYjZiYzZiNmMwYWQ2YmNiMTVhOTVkZC4uM2VkZDUzY2VkOTdkMzJlOTkzNGFkYWE1NmJk
NjEyOTQzNzg4ZTQ5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAKQEAgLTQyLDY0ICs0Miw2NCBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0U2V0dGluZ3MoVGVzdCosIGdjb25zdHBvaW50ZXIpCiAg
ICAgV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3NldHRpbmdzX25ldygpOwogCiAg
ICAgLy8gSmF2YVNjcmlwdCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCi0gICAgZ19hc3NlcnQod2Vi
a2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncykpOworICAgIGdfYXNz
ZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncykp
OwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGluZ3MsIEZB
TFNFKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlw
dChzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX2phdmFzY3JpcHQoc2V0dGluZ3MpKTsKIAogICAgIC8vIEJ5IGRlZmF1bHQgYXV0by1sb2Fk
LWltYWdlIGlzIHRydWUuCi0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9hdXRvX2xv
YWRfaW1hZ2VzKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0
X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MsIEZBTFNFKTsKLSAgICBnX2Fzc2VydCghd2Via2l0
X3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdzKSk7CiAK
ICAgICAvLyBsb2FkLWljb25zLWlnbm9yaW5nLWltYWdlLWxvYWQtc2V0dGluZyBpcyBmYWxzZSBi
eSBkZWZhdWx0LgotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2xvYWRfaWNvbnNf
aWdub3JpbmdfaW1hZ2VfbG9hZF9zZXR0aW5nKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFs
c2Uod2Via2l0X3NldHRpbmdzX2dldF9sb2FkX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfc2V0
dGluZyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfbG9hZF9pY29uc19pZ25v
cmluZ19pbWFnZV9sb2FkX3NldHRpbmcoc2V0dGluZ3MsIFRSVUUpOwotICAgIGdfYXNzZXJ0KHdl
YmtpdF9zZXR0aW5nc19nZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmco
c2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfbG9hZF9p
Y29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmcoc2V0dGluZ3MpKTsKICAgICAKICAgICAv
LyBPZmZsaW5lIGFwcGxpY2F0aW9uIGNhY2hlIGlzIHRydWUgYnkgZGVmYXVsdC4KLSAgICBnX2Fz
c2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9j
YWNoZShzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9l
bmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoc2V0dGluZ3MpKTsKICAgICB3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9vZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0
aW5ncywgRkFMU0UpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9v
ZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2Zh
bHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2Nh
Y2hlKHNldHRpbmdzKSk7CiAKICAgICAvLyBMb2NhbCBzdG9yYWdlIGlzIGVuYWJsZSBieSBkZWZh
dWx0LgotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2Fs
X3N0b3JhZ2Uoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Uoc2V0dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzLCBGQUxTRSk7Ci0g
ICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3Jh
Z2Uoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlKHNldHRpbmdzKSk7CiAKICAgICAvLyBIVE1MNSBkYXRh
YmFzZSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuCi0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdz
X2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2Uoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVl
KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzKSk7CiAg
ICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHRtbDVfZGF0YWJhc2Uoc2V0dGluZ3MsIEZB
TFNFKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0
YWJhc2Uoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9odG1sNV9kYXRhYmFzZShzZXR0aW5ncykpOwogCiAgICAgLy8gWFNTIEF1ZGl0b3Ig
aXMgZW5hYmxlZCBieSBkZWZhdWx0LgotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRf
c2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0aW5ncykpOwogICAgIHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdzLCBGQUxTRSk7Ci0gICAgZ19h
c3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdzKSk7
CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0
b3Ioc2V0dGluZ3MpKTsKIAogICAgIC8vIEZyYW1lIGZsYXR0ZW5pbmcgaXMgZGlzYWJsZWQgYnkg
ZGVmYXVsdC4KLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZnJhbWVf
ZmxhdHRlbmluZyhzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNldHRpbmdzLCBUUlVFKTsKLSAgICBn
X2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVuaW5nKHNldHRp
bmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFt
ZV9mbGF0dGVuaW5nKHNldHRpbmdzKSk7CiAKICAgICAvLyBQbHVnaW5zIGFyZSBlbmFibGVkIGJ5
IGRlZmF1bHQuCi0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcGx1Z2lu
cyhzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfcGx1Z2lucyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3Bs
dWdpbnMoc2V0dGluZ3MsIEZBTFNFKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dl
dF9lbmFibGVfcGx1Z2lucyhzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9z
ZXR0aW5nc19nZXRfZW5hYmxlX3BsdWdpbnMoc2V0dGluZ3MpKTsKIAogICAgIC8vIEphdmEgaXMg
ZW5hYmxlZCBieSBkZWZhdWx0LgotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX2phdmEoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJs
ZV9qYXZhKHNldHRpbmdzLCBGQUxTRSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9qYXZhKHNldHRpbmdzKSk7CiAKICAgICAvLyBCeSBkZWZhdWx0LCBK
YXZhU2NyaXB0IGNhbiBvcGVuIHdpbmRvd3MgYXV0b21hdGljYWxseSBpcyBkaXNhYmxlZC4KLSAg
ICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRv
d3NfYXV0b21hdGljYWxseShzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9z
ZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0
dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2lu
ZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzLCBUUlVFKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRf
c2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNl
dHRpbmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFzY3Jp
cHRfY2FuX29wZW5fd2luZG93c19hdXRvbWF0aWNhbGx5KHNldHRpbmdzKSk7CiAKICAgICAvLyBC
eSBkZWZhdWx0IGh5cGVyIGxpbmsgYXVkaXRpbmcgaXMgZGlzYWJsZWQuCi0gICAgZ19hc3NlcnQo
IXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5ncykp
OworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlu
a19hdWRpdGluZyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2h5
cGVybGlua19hdWRpdGluZyhzZXR0aW5ncywgVFJVRSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRpbmdzKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmco
c2V0dGluZ3MpKTsKIAogICAgIC8vIERlZmF1bHQgZm9udCBmYW1pbHkgaXMgInNhbnMtc2VyaWYi
LgogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2V0dGluZ3NfZ2V0X2RlZmF1bHRfZm9udF9m
YW1pbHkoc2V0dGluZ3MpLCA9PSwgInNhbnMtc2VyaWYiKTsKQEAgLTIwMiwxNDIgKzIwMiwxNDIg
QEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdFNldHRpbmdzKFRlc3QqLCBnY29uc3Rwb2ludGVyKQog
CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIEdfR05VQ19CRUdJTl9JR05PUkVfREVQUkVDQVRJT05T
OwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wcml2YXRlX2Jyb3dz
aW5nKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9l
bmFibGVfcHJpdmF0ZV9icm93c2luZyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19z
ZXRfZW5hYmxlX3ByaXZhdGVfYnJvd3Npbmcoc2V0dGluZ3MsIFRSVUUpOwotICAgIGdfYXNzZXJ0
KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3ByaXZhdGVfYnJvd3Npbmcoc2V0dGluZ3MpKTsK
KyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3ByaXZhdGVfYnJv
d3Npbmcoc2V0dGluZ3MpKTsKICAgICBHX0dOVUNfRU5EX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAj
ZW5kaWYKIAotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9kZXZlbG9w
ZXJfZXh0cmFzKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdz
X2dldF9lbmFibGVfZGV2ZWxvcGVyX2V4dHJhcyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0
aW5nc19zZXRfZW5hYmxlX2RldmVsb3Blcl9leHRyYXMoc2V0dGluZ3MsIFRSVUUpOwotICAgIGdf
YXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2RldmVsb3Blcl9leHRyYXMoc2V0dGlu
Z3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2RldmVs
b3Blcl9leHRyYXMoc2V0dGluZ3MpKTsKIAotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX3Jlc2l6YWJsZV90ZXh0X2FyZWFzKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRf
dHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9yZXNpemFibGVfdGV4dF9hcmVhcyhzZXR0
aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3Jlc2l6YWJsZV90ZXh0X2Fy
ZWFzKHNldHRpbmdzLCBGQUxTRSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX3Jlc2l6YWJsZV90ZXh0X2FyZWFzKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFs
c2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcmVzaXphYmxlX3RleHRfYXJlYXMoc2V0dGlu
Z3MpKTsKIAotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3RhYnNfdG9f
bGlua3Moc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX3RhYnNfdG9fbGlua3Moc2V0dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0
X2VuYWJsZV90YWJzX3RvX2xpbmtzKHNldHRpbmdzLCBGQUxTRSk7Ci0gICAgZ19hc3NlcnQoIXdl
YmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3RhYnNfdG9fbGlua3Moc2V0dGluZ3MpKTsKKyAgICBn
X2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV90YWJzX3RvX2xpbmtzKHNl
dHRpbmdzKSk7CiAKLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZG5z
X3ByZWZldGNoaW5nKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRp
bmdzX2dldF9lbmFibGVfZG5zX3ByZWZldGNoaW5nKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3Nl
dHRpbmdzX3NldF9lbmFibGVfZG5zX3ByZWZldGNoaW5nKHNldHRpbmdzLCBUUlVFKTsKLSAgICBn
X2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9kbnNfcHJlZmV0Y2hpbmcoc2V0dGlu
Z3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2Ruc19w
cmVmZXRjaGluZyhzZXR0aW5ncykpOwogCiAgICAgLy8gQ2FyZXQgYnJvd3NpbmcgaXMgZGlzYWJs
ZWQgYnkgZGVmYXVsdC4KLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
Y2FyZXRfYnJvd3Npbmcoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9jYXJldF9icm93c2luZyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9z
ZXR0aW5nc19zZXRfZW5hYmxlX2NhcmV0X2Jyb3dzaW5nKHNldHRpbmdzLCBUUlVFKTsKLSAgICBn
X2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9jYXJldF9icm93c2luZyhzZXR0aW5n
cykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfY2FyZXRf
YnJvd3Npbmcoc2V0dGluZ3MpKTsKIAogICAgIC8vIEZ1bGxzY3JlZW4gSmF2YVNjcmlwdCBBUEkg
aXMgZW5hYmxlZCBieSBkZWZhdWx0LgotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX2Z1bGxzY3JlZW4oc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9z
ZXR0aW5nc19nZXRfZW5hYmxlX2Z1bGxzY3JlZW4oc2V0dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9mdWxsc2NyZWVuKHNldHRpbmdzLCBGQUxTRSk7Ci0gICAgZ19hc3Nl
cnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2Z1bGxzY3JlZW4oc2V0dGluZ3MpKTsKKyAg
ICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mdWxsc2NyZWVuKHNl
dHRpbmdzKSk7CiAKICAgICAvLyBQcmludCBiYWNrZ3JvdW5kcyBpcyBlbmFibGVkIGJ5IGRlZmF1
bHQKLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X3ByaW50X2JhY2tncm91bmRzKHNl
dHRpbmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X3ByaW50X2Jh
Y2tncm91bmRzKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9wcmludF9iYWNr
Z3JvdW5kcyhzZXR0aW5ncywgRkFMU0UpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3Nf
Z2V0X3ByaW50X2JhY2tncm91bmRzKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X3NldHRpbmdzX2dldF9wcmludF9iYWNrZ3JvdW5kcyhzZXR0aW5ncykpOwogCiAgICAgLy8g
V2ViQXVkaW8gaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KLSAgICBnX2Fzc2VydCghd2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfd2ViYXVkaW8oc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxz
ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV93ZWJhdWRpbyhzZXR0aW5ncykpOwogICAgIHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3dlYmF1ZGlvKHNldHRpbmdzLCBUUlVFKTsKLSAgICBn
X2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV93ZWJhdWRpbyhzZXR0aW5ncykpOwor
ICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfd2ViYXVkaW8oc2V0
dGluZ3MpKTsKIAogICAgIC8vIFdlYkdMIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCi0gICAgZ19h
c3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3dlYmdsKHNldHRpbmdzKSk7CisgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfd2ViZ2woc2V0dGluZ3Mp
KTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV93ZWJnbChzZXR0aW5ncywgVFJVRSk7
Ci0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfd2ViZ2woc2V0dGluZ3Mp
KTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3dlYmdsKHNl
dHRpbmdzKSk7CiAKICAgICAvLyBBbGxvdyBNb2RhbCBEaWFsb2dzIGlzIGRpc2FibGVkIGJ5IGRl
ZmF1bHQuCi0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9kYWxfZGlh
bG9ncyhzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRf
YWxsb3dfbW9kYWxfZGlhbG9ncyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRf
YWxsb3dfbW9kYWxfZGlhbG9ncyhzZXR0aW5ncywgVFJVRSk7Ci0gICAgZ19hc3NlcnQod2Via2l0
X3NldHRpbmdzX2dldF9hbGxvd19tb2RhbF9kaWFsb2dzKHNldHRpbmdzKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X21vZGFsX2RpYWxvZ3Moc2V0dGluZ3Mp
KTsKIAogICAgIC8vIFpvb20gdGV4dCBvbmx5IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQuCi0gICAg
Z19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfem9vbV90ZXh0X29ubHkoc2V0dGluZ3MpKTsK
KyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9vbmx5KHNl
dHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF96b29tX3RleHRfb25seShzZXR0aW5n
cywgVFJVRSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF96b29tX3RleHRfb25s
eShzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF96b29t
X3RleHRfb25seShzZXR0aW5ncykpOwogCiAgICAgLy8gQnkgZGVmYXVsdCwgSmF2YVNjcmlwdCBj
YW5ub3QgYWNjZXNzIHRoZSBjbGlwYm9hcmQuCi0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5n
c19nZXRfamF2YXNjcmlwdF9jYW5fYWNjZXNzX2NsaXBib2FyZChzZXR0aW5ncykpOworICAgIGdf
YXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fYWNjZXNzX2Ns
aXBib2FyZChzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9j
YW5fYWNjZXNzX2NsaXBib2FyZChzZXR0aW5ncywgVFJVRSk7Ci0gICAgZ19hc3NlcnQod2Via2l0
X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9hY2Nlc3NfY2xpcGJvYXJkKHNldHRpbmdzKSk7
CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX2Fj
Y2Vzc19jbGlwYm9hcmQoc2V0dGluZ3MpKTsKIAogICAgIC8vIEJ5IGRlZmF1bHQsIG1lZGlhIHBs
YXliYWNrIGRvZXNuJ3QgcmVxdWlyZSB1c2VyIGdlc3R1cmVzLgotICAgIGdfYXNzZXJ0KCF3ZWJr
aXRfc2V0dGluZ3NfZ2V0X21lZGlhX3BsYXliYWNrX3JlcXVpcmVzX3VzZXJfZ2VzdHVyZShzZXR0
aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfbWVkaWFfcGxh
eWJhY2tfcmVxdWlyZXNfdXNlcl9nZXN0dXJlKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRp
bmdzX3NldF9tZWRpYV9wbGF5YmFja19yZXF1aXJlc191c2VyX2dlc3R1cmUoc2V0dGluZ3MsIFRS
VUUpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfbWVkaWFfcGxheWJhY2tfcmVx
dWlyZXNfdXNlcl9nZXN0dXJlKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRf
c2V0dGluZ3NfZ2V0X21lZGlhX3BsYXliYWNrX3JlcXVpcmVzX3VzZXJfZ2VzdHVyZShzZXR0aW5n
cykpOwogCiAgICAgLy8gQnkgZGVmYXVsdCwgaW5saW5lIG1lZGlhIHBsYXliYWNrIGlzIGFsbG93
ZWQKLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X21lZGlhX3BsYXliYWNrX2FsbG93
c19pbmxpbmUoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19n
ZXRfbWVkaWFfcGxheWJhY2tfYWxsb3dzX2lubGluZShzZXR0aW5ncykpOwogICAgIHdlYmtpdF9z
ZXR0aW5nc19zZXRfbWVkaWFfcGxheWJhY2tfYWxsb3dzX2lubGluZShzZXR0aW5ncywgRkFMU0Up
OwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X21lZGlhX3BsYXliYWNrX2FsbG93
c19pbmxpbmUoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3Nf
Z2V0X21lZGlhX3BsYXliYWNrX2FsbG93c19pbmxpbmUoc2V0dGluZ3MpKTsKIAogICAgIC8vIEJ5
IGRlZmF1bHQsIGRlYnVnIGluZGljYXRvcnMgYXJlIGRpc2FibGVkLgotICAgIGdfYXNzZXJ0KCF3
ZWJraXRfc2V0dGluZ3NfZ2V0X2RyYXdfY29tcG9zaXRpbmdfaW5kaWNhdG9ycyhzZXR0aW5ncykp
OworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfZHJhd19jb21wb3NpdGlu
Z19pbmRpY2F0b3JzKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9kcmF3X2Nv
bXBvc2l0aW5nX2luZGljYXRvcnMoc2V0dGluZ3MsIFRSVUUpOwotICAgIGdfYXNzZXJ0KHdlYmtp
dF9zZXR0aW5nc19nZXRfZHJhd19jb21wb3NpdGluZ19pbmRpY2F0b3JzKHNldHRpbmdzKSk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2RyYXdfY29tcG9zaXRpbmdfaW5k
aWNhdG9ycyhzZXR0aW5ncykpOwogCiAgICAgLy8gQnkgZGVmYXVsdCwgc2l0ZSBzcGVjaWZpYyBx
dWlya3MgYXJlIGVuYWJsZWQuCi0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfc2l0ZV9zcGVjaWZpY19xdWlya3Moc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdl
YmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3NpdGVfc3BlY2lmaWNfcXVpcmtzKHNldHRpbmdzKSk7
CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfc2l0ZV9zcGVjaWZpY19xdWlya3Moc2V0
dGluZ3MsIEZBTFNFKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
c2l0ZV9zcGVjaWZpY19xdWlya3Moc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9zaXRlX3NwZWNpZmljX3F1aXJrcyhzZXR0aW5ncykpOwog
CiAgICAgLy8gQnkgZGVmYXVsdCwgcGFnZSBjYWNoZSBpcyBlbmFibGVkLgotICAgIGdfYXNzZXJ0
KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3BhZ2VfY2FjaGUoc2V0dGluZ3MpKTsKKyAgICBn
X2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3BhZ2VfY2FjaGUoc2V0dGlu
Z3MpKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wYWdlX2NhY2hlKHNldHRpbmdz
LCBGQUxTRSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3BhZ2Vf
Y2FjaGUoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9wYWdlX2NhY2hlKHNldHRpbmdzKSk7CiAKICAgICAvLyBCeSBkZWZhdWx0LCBzbW9v
dGggc2Nyb2xsaW5nIGlzIGRpc2FibGVkLgotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9zbW9vdGhfc2Nyb2xsaW5nKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFs
c2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfc21vb3RoX3Njcm9sbGluZyhzZXR0aW5ncykp
OwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3Ntb290aF9zY3JvbGxpbmcoc2V0dGlu
Z3MsIFRSVUUpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3Ntb290
aF9zY3JvbGxpbmcoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX3Ntb290aF9zY3JvbGxpbmcoc2V0dGluZ3MpKTsKIAogICAgIC8vIEJ5IGRl
ZmF1bHQsIGFjY2VsZXJhdGVkIDJEIGNhbnZhcyBpcyBkaXNhYmxlZC4KLSAgICBnX2Fzc2VydCgh
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfYWNjZWxlcmF0ZWRfMmRfY2FudmFzKHNldHRpbmdz
KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfYWNjZWxl
cmF0ZWRfMmRfY2FudmFzKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFi
bGVfYWNjZWxlcmF0ZWRfMmRfY2FudmFzKHNldHRpbmdzLCBUUlVFKTsKLSAgICBnX2Fzc2VydCh3
ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9hY2NlbGVyYXRlZF8yZF9jYW52YXMoc2V0dGluZ3Mp
KTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2FjY2VsZXJh
dGVkXzJkX2NhbnZhcyhzZXR0aW5ncykpOwogCiAgICAgLy8gQnkgZGVmYXVsdCwgd3JpdGluZyBv
ZiBjb25zb2xlIG1lc3NhZ2VzIHRvIHN0ZG91dCBpcyBkaXNhYmxlZC4KLSAgICBnX2Fzc2VydCgh
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfd3JpdGVfY29uc29sZV9tZXNzYWdlc190b19zdGRv
dXQoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV93cml0ZV9jb25zb2xlX21lc3NhZ2VzX3RvX3N0ZG91dChzZXR0aW5ncykpOwogICAgIHdl
YmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3dyaXRlX2NvbnNvbGVfbWVzc2FnZXNfdG9fc3Rkb3V0
KHNldHRpbmdzLCBUUlVFKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV93cml0ZV9jb25zb2xlX21lc3NhZ2VzX3RvX3N0ZG91dChzZXR0aW5ncykpOworICAgIGdfYXNz
ZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfd3JpdGVfY29uc29sZV9tZXNzYWdl
c190b19zdGRvdXQoc2V0dGluZ3MpKTsKIAogICAgIC8vIE1lZGlhU3RyZWFtIGlzIGRpc2FibGVk
IGJ5IGRlZmF1bHQuCi0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX21l
ZGlhX3N0cmVhbShzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5n
c19zZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncywgVFJVRSk7Ci0gICAgZ19hc3NlcnQo
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzKSk7CisgICAg
Z19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0
dGluZ3MpKTsKIAogICAgIC8vIEJ5IGRlZmF1bHQsIFNwYXRpYWxOYXZpZ2F0aW9uIGlzIGRpc2Fi
bGVkCi0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3NwYXRpYWxfbmF2
aWdhdGlvbihzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX3NwYXRpYWxfbmF2aWdhdGlvbihzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0
aW5nc19zZXRfZW5hYmxlX3NwYXRpYWxfbmF2aWdhdGlvbihzZXR0aW5ncywgVFJVRSk7Ci0gICAg
Z19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfc3BhdGlhbF9uYXZpZ2F0aW9uKHNl
dHRpbmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9z
cGF0aWFsX25hdmlnYXRpb24oc2V0dGluZ3MpKTsKIAogICAgIC8vIE1lZGlhU291cmNlIGlzIGVu
YWJsZWQgYnkgZGVmYXVsdAotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X21lZGlhc291cmNlKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2VuYWJsZV9tZWRpYXNvdXJjZShzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5n
c19zZXRfZW5hYmxlX21lZGlhc291cmNlKHNldHRpbmdzLCBGQUxTRSk7Ci0gICAgZ19hc3NlcnQo
IXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX21lZGlhc291cmNlKHNldHRpbmdzKSk7CisgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfbWVkaWFzb3VyY2Uoc2V0
dGluZ3MpKTsKIAogICAgIC8vIEVuY3J5cHRlZE1lZGlhIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQK
LSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZW5jcnlwdGVkX21lZGlh
KHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfZW5jcnlwdGVkX21lZGlhKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9l
bmFibGVfZW5jcnlwdGVkX21lZGlhKHNldHRpbmdzLCBUUlVFKTsKLSAgICBnX2Fzc2VydCh3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9lbmNyeXB0ZWRfbWVkaWEoc2V0dGluZ3MpKTsKKyAgICBn
X2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2VuY3J5cHRlZF9tZWRpYShz
ZXR0aW5ncykpOwogCiAgICAgLy8gTWVkaWFDYXBhYmlsaXRpZXMgaXMgZGlzYWJsZWQgYnkgZGVm
YXVsdAotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9tZWRpYV9jYXBh
YmlsaXRpZXMoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9tZWRpYV9jYXBhYmlsaXRpZXMoc2V0dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0
dGluZ3Nfc2V0X2VuYWJsZV9tZWRpYV9jYXBhYmlsaXRpZXMoc2V0dGluZ3MsIFRSVUUpOwotICAg
IGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX21lZGlhX2NhcGFiaWxpdGllcyhz
ZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
bWVkaWFfY2FwYWJpbGl0aWVzKHNldHRpbmdzKSk7CiAKICAgICAvLyBGaWxlIGFjY2VzcyBmcm9t
IGZpbGUgVVJMcyBpcyBub3QgYWxsb3dlZCBieSBkZWZhdWx0LgotICAgIGdfYXNzZXJ0KCF3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2FsbG93X2ZpbGVfYWNjZXNzX2Zyb21fZmlsZV91cmxzKHNldHRpbmdz
KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19maWxlX2Fj
Y2Vzc19mcm9tX2ZpbGVfdXJscyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRf
YWxsb3dfZmlsZV9hY2Nlc3NfZnJvbV9maWxlX3VybHMoc2V0dGluZ3MsIFRSVUUpOwotICAgIGdf
YXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfZmlsZV9hY2Nlc3NfZnJvbV9maWxlX3Vy
bHMoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfYWxs
b3dfZmlsZV9hY2Nlc3NfZnJvbV9maWxlX3VybHMoc2V0dGluZ3MpKTsKIAogICAgIC8vIFVuaXZl
cnNhbCBhY2Nlc3MgZnJvbSBmaWxlIFVSTHMgaXMgbm90IGFsbG93ZWQgYnkgZGVmYXVsdC4KLSAg
ICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9hbGxvd191bml2ZXJzYWxfYWNjZXNzX2Zy
b21fZmlsZV91cmxzKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRp
bmdzX2dldF9hbGxvd191bml2ZXJzYWxfYWNjZXNzX2Zyb21fZmlsZV91cmxzKHNldHRpbmdzKSk7
CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9hbGxvd191bml2ZXJzYWxfYWNjZXNzX2Zyb21fZmls
ZV91cmxzKHNldHRpbmdzLCBUUlVFKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0
X2FsbG93X3VuaXZlcnNhbF9hY2Nlc3NfZnJvbV9maWxlX3VybHMoc2V0dGluZ3MpKTsKKyAgICBn
X2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfdW5pdmVyc2FsX2FjY2Vzc19m
cm9tX2ZpbGVfdXJscyhzZXR0aW5ncykpOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIC8vIE9u
ZGVtYW5kIGlzIHRoZSBkZWZhdWx0IGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBwb2xpY3kuCkBAIC0z
NjEsOSArMzYxLDkgQEAgdm9pZCB0ZXN0V2ViS2l0U2V0dGluZ3NOZXdXaXRoU2V0dGluZ3MoVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAgICAgImxvYWQtaWNvbnMtaWdub3JpbmctaW1h
Z2UtbG9hZC1zZXR0aW5nIiwgVFJVRSwKICAgICAgICAgbnVsbHB0cikpOwogICAgIHRlc3QtPmFz
c2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qoc2V0dGluZ3MuZ2V0
KCkpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlw
dChzZXR0aW5ncy5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2F1
dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0
dGluZ3NfZ2V0X2xvYWRfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9zZXR0aW5nKHNldHRpbmdz
LmdldCgpKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
amF2YXNjcmlwdChzZXR0aW5ncy5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9z
ZXR0aW5nc19nZXRfYXV0b19sb2FkX2ltYWdlcyhzZXR0aW5ncy5nZXQoKSkpOworICAgIGdfYXNz
ZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9sb2FkX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xv
YWRfc2V0dGluZyhzZXR0aW5ncy5nZXQoKSkpOwogfQogCiAjaWYgUExBVEZPUk0oR1RLKQpAQCAt
Mzg3LDggKzM4Nyw4IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRTZXR0aW5nc1VzZXJBZ2VudChX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBDU3RyaW5nIGRlZmF1bHRVc2Vy
QWdlbnQgPSB3ZWJraXRfc2V0dGluZ3NfZ2V0X3VzZXJfYWdlbnQoc2V0dGluZ3MuZ2V0KCkpOwog
ICAgIHdlYmtpdF93ZWJfdmlld19zZXRfc2V0dGluZ3ModGVzdC0+bV93ZWJWaWV3LCBzZXR0aW5n
cy5nZXQoKSk7CiAKLSAgICBnX2Fzc2VydChnX3N0cnN0cl9sZW4oZGVmYXVsdFVzZXJBZ2VudC5k
YXRhKCksIC0xLCAiQXBwbGVXZWJLaXQiKSk7Ci0gICAgZ19hc3NlcnQoZ19zdHJzdHJfbGVuKGRl
ZmF1bHRVc2VyQWdlbnQuZGF0YSgpLCAtMSwgIlNhZmFyaSIpKTsKKyAgICBnX2Fzc2VydF9ub25u
dWxsKGdfc3Ryc3RyX2xlbihkZWZhdWx0VXNlckFnZW50LmRhdGEoKSwgLTEsICJBcHBsZVdlYktp
dCIpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGdfc3Ryc3RyX2xlbihkZWZhdWx0VXNlckFnZW50
LmRhdGEoKSwgLTEsICJTYWZhcmkiKSk7CiAKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X3VzZXJf
YWdlbnQoc2V0dGluZ3MuZ2V0KCksIDApOwogICAgIGdfYXNzZXJ0X2NtcHN0cihkZWZhdWx0VXNl
ckFnZW50LmRhdGEoKSwgPT0sIHdlYmtpdF9zZXR0aW5nc19nZXRfdXNlcl9hZ2VudChzZXR0aW5n
cy5nZXQoKSkpOwpAQCAtNDA1LDE1ICs0MDUsMTUgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdFNl
dHRpbmdzVXNlckFnZW50KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHdl
YmtpdF9zZXR0aW5nc19zZXRfdXNlcl9hZ2VudF93aXRoX2FwcGxpY2F0aW9uX2RldGFpbHMoc2V0
dGluZ3MuZ2V0KCksICJXZWJLaXRHVEsrIiwgMCk7CiAgICAgY29uc3QgY2hhciogdXNlckFnZW50
V2l0aE51bGxWZXJzaW9uID0gd2Via2l0X3NldHRpbmdzX2dldF91c2VyX2FnZW50KHNldHRpbmdz
LmdldCgpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoZ19zdHJzdHJfbGVuKHVzZXJBZ2VudFdpdGhO
dWxsVmVyc2lvbiwgLTEsIGRlZmF1bHRVc2VyQWdlbnQuZGF0YSgpKSwgPT0sIHVzZXJBZ2VudFdp
dGhOdWxsVmVyc2lvbik7Ci0gICAgZ19hc3NlcnQoZ19zdHJzdHJfbGVuKHVzZXJBZ2VudFdpdGhO
dWxsVmVyc2lvbiwgLTEsICJXZWJLaXRHVEsrIikpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZ19z
dHJzdHJfbGVuKHVzZXJBZ2VudFdpdGhOdWxsVmVyc2lvbiwgLTEsICJXZWJLaXRHVEsrIikpOwog
CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF91c2VyX2FnZW50X3dpdGhfYXBwbGljYXRpb25fZGV0
YWlscyhzZXR0aW5ncy5nZXQoKSwgIldlYktpdEdUSysiLCAiIik7CiAgICAgZ19hc3NlcnRfY21w
c3RyKHdlYmtpdF9zZXR0aW5nc19nZXRfdXNlcl9hZ2VudChzZXR0aW5ncy5nZXQoKSksID09LCB1
c2VyQWdlbnRXaXRoTnVsbFZlcnNpb24pOwogCiAgICAgd2Via2l0X3NldHRpbmdzX3NldF91c2Vy
X2FnZW50X3dpdGhfYXBwbGljYXRpb25fZGV0YWlscyhzZXR0aW5ncy5nZXQoKSwgIldlYkNhdEdU
SysiLCAiMy40LjUiKTsKICAgICBjb25zdCBjaGFyKiBuZXdVc2VyQWdlbnQgPSB3ZWJraXRfc2V0
dGluZ3NfZ2V0X3VzZXJfYWdlbnQoc2V0dGluZ3MuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KGdfc3Ry
c3RyX2xlbihuZXdVc2VyQWdlbnQsIC0xLCAiMy40LjUiKSk7Ci0gICAgZ19hc3NlcnQoZ19zdHJz
dHJfbGVuKG5ld1VzZXJBZ2VudCwgLTEsICJXZWJDYXRHVEsrIikpOworICAgIGdfYXNzZXJ0X25v
bm51bGwoZ19zdHJzdHJfbGVuKG5ld1VzZXJBZ2VudCwgLTEsICIzLjQuNSIpKTsKKyAgICBnX2Fz
c2VydF9ub25udWxsKGdfc3Ryc3RyX2xlbihuZXdVc2VyQWdlbnQsIC0xLCAiV2ViQ2F0R1RLKyIp
KTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gYXBwbGljYXRpb25Vc2VyQWdlbnQoZ19zdHJkdXBf
cHJpbnRmKCIlcyAlcyIsIGRlZmF1bHRVc2VyQWdlbnQuZGF0YSgpLCAiV2ViQ2F0R1RLKy8zLjQu
NSIpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoYXBwbGljYXRpb25Vc2VyQWdlbnQuZ2V0KCksID09
LCB3ZWJraXRfc2V0dGluZ3NfZ2V0X3VzZXJfYWdlbnQoc2V0dGluZ3MuZ2V0KCkpKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0VXNl
ckNvbnRlbnRNYW5hZ2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAppbmRleCAyZTRlNDlmZjc0NzdkZmNm
ZDU3ZTU1MzZmZGRlMDMwMmY2ZGE0ODA1Li5kOTVhNjFiMGE2YjljNzVjZmVhM2YzNjg5NTU1NWU0
ZjU3ZjY3Yjc1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCkBA
IC00MSwxMCArNDEsMTAgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdOZXdXaXRoVXNlckNvbnRl
bnRNYW5hZ2VyKFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgR1JlZlB0cjxXZWJLaXRV
c2VyQ29udGVudE1hbmFnZXI+IHVzZXJDb250ZW50TWFuYWdlcjEgPSBhZG9wdEdSZWYod2Via2l0
X3VzZXJfY29udGVudF9tYW5hZ2VyX25ldygpKTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHVzZXJDb250ZW50TWFuYWdlcjEuZ2V0KCkp
KTsKICAgICBhdXRvIHdlYlZpZXcxID0gVGVzdDo6YWRvcHRWaWV3KFRlc3Q6OmNyZWF0ZVdlYlZp
ZXcodXNlckNvbnRlbnRNYW5hZ2VyMS5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJf
dmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldzEuZ2V0KCkpID09IHVzZXJDb250
ZW50TWFuYWdlcjEuZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJraXRfd2ViX3ZpZXdf
Z2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcxLmdldCgpKSwgPT0sIHVzZXJDb250ZW50
TWFuYWdlcjEuZ2V0KCkpOwogCiAgICAgYXV0byB3ZWJWaWV3MiA9IFRlc3Q6OmFkb3B0VmlldyhU
ZXN0OjpjcmVhdGVXZWJWaWV3KCkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRf
dXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldzIuZ2V0KCkpICE9IHVzZXJDb250ZW50TWFuYWdl
cjEuZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJf
Y29udGVudF9tYW5hZ2VyKHdlYlZpZXcyLmdldCgpKSwgIT0sIHVzZXJDb250ZW50TWFuYWdlcjEu
Z2V0KCkpOwogfQogCiBzdGF0aWMgYm9vbCBpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0
aChXZWJWaWV3VGVzdCogdGVzdCwgY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciogd29ybGQg
PSBudWxscHRyKQpAQCAtNTUsOCArNTUsOCBAQCBzdGF0aWMgYm9vbCBpc1N0eWxlU2hlZXRJbmpl
Y3RlZEZvclVSTEF0UGF0aChXZWJWaWV3VGVzdCogdGVzdCwgY29uc3QgY2hhciogcGF0aAogICAg
IEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
KiBqYXZhc2NyaXB0UmVzdWx0ID0gd29ybGQgPyB0ZXN0LT5ydW5KYXZhU2NyaXB0SW5Xb3JsZEFu
ZFdhaXRVbnRpbEZpbmlzaGVkKGtTdHlsZVNoZWV0VGVzdFNjcmlwdCwgd29ybGQsICZlcnJvci5v
dXRQdHIoKSkKICAgICAgICAgOiB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNo
ZWQoa1N0eWxlU2hlZXRUZXN0U2NyaXB0LCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0
KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CisgICAgZ19h
c3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihl
cnJvci5nZXQoKSk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc3VsdFN0cmluZyhXZWJWaWV3
VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAg
cmV0dXJuICFnX3N0cmNtcDAocmVzdWx0U3RyaW5nLmdldCgpLCBrU3R5bGVTaGVldFRlc3RTY3Jp
cHRSZXN1bHQpOwpAQCAtNzEsNyArNzEsNyBAQCBzdGF0aWMgYm9vbCBpc1NjcmlwdEluamVjdGVk
Rm9yVVJMQXRQYXRoKFdlYlZpZXdUZXN0KiB0ZXN0LCBjb25zdCBjaGFyKiBwYXRoLCBjbwogICAg
IFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB3b3JsZCA/IHRlc3Qt
PnJ1bkphdmFTY3JpcHRJbldvcmxkQW5kV2FpdFVudGlsRmluaXNoZWQoa1NjcmlwdFRlc3RTY3Jp
cHQsIHdvcmxkLCAmZXJyb3Iub3V0UHRyKCkpCiAgICAgICAgIDogdGVzdC0+cnVuSmF2YVNjcmlw
dEFuZFdhaXRVbnRpbEZpbmlzaGVkKGtTY3JpcHRUZXN0U2NyaXB0LCAmZXJyb3Iub3V0UHRyKCkp
OwogICAgIGlmIChqYXZhc2NyaXB0UmVzdWx0KSB7Ci0gICAgICAgIGdfYXNzZXJ0KCFlcnJvci5n
ZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKIAogICAgICAg
ICBHVW5pcXVlUHRyPGNoYXI+IHJlc3VsdFN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJl
c3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgICAgIHJldHVybiAhZ19zdHJj
bXAwKHJlc3VsdFN0cmluZy5nZXQoKSwga1NjcmlwdFRlc3RTY3JpcHRSZXN1bHQpOwpAQCAtMTIw
LDE5ICsxMjAsMTkgQEAgc3RhdGljIHZvaWQgdGVzdFVzZXJDb250ZW50TWFuYWdlckluamVjdGVk
U3R5bGVTaGVldChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG8KIAogICAgIC8vIFdpdGhvdXQg
YSB3aGl0ZWxpc3Qgb3IgYSBibGFja2xpc3QgYWxsIFVSTHMgc2hvdWxkIGhhdmUgdGhlIGluamVj
dGVkIHN0eWxlIHNoZWV0LgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiByYW5kb21QYXRoID0gInNv
bWVyYW5kb21wYXRoIjsKLSAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxB
dFBhdGgodGVzdCwgcmFuZG9tUGF0aCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKGlzU3R5bGVTaGVl
dEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKICAgICBXZWJLaXRVc2Vy
U3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyhrSW5q
ZWN0ZWRTdHlsZVNoZWV0LCBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBX
RUJLSVRfVVNFUl9TVFlMRV9MRVZFTF9VU0VSLCBudWxscHRyLCBudWxscHRyKTsKICAgICB3ZWJr
aXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0KHRlc3QtPm1fdXNlckNvbnRl
bnRNYW5hZ2VyLmdldCgpLCBzdHlsZVNoZWV0KTsKICAgICB3ZWJraXRfdXNlcl9zdHlsZV9zaGVl
dF91bnJlZihzdHlsZVNoZWV0KTsKLSAgICBnX2Fzc2VydChpc1N0eWxlU2hlZXRJbmplY3RlZEZv
clVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShpc1N0eWxl
U2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7CiAKICAgICByZW1v
dmVPbGRJbmplY3RlZENvbnRlbnRBbmRSZXNldExpc3RzKHRlc3QtPm1fdXNlckNvbnRlbnRNYW5h
Z2VyLmdldCgpLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CiAKLSAgICBnX2Fzc2VydCghaXNTdHls
ZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCwgIldlYkV4dGVuc2lv
blRlc3RTY3JpcHRXb3JsZCIpKTsKKyAgICBnX2Fzc2VydF9mYWxzZShpc1N0eWxlU2hlZXRJbmpl
Y3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoLCAiV2ViRXh0ZW5zaW9uVGVzdFNjcmlw
dFdvcmxkIikpOwogICAgIHN0eWxlU2hlZXQgPSB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9uZXdf
Zm9yX3dvcmxkKGtJbmplY3RlZFN0eWxlU2hlZXQsIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNU
X0FMTF9GUkFNRVMsIFdFQktJVF9VU0VSX1NUWUxFX0xFVkVMX1VTRVIsICJXZWJFeHRlbnNpb25U
ZXN0U2NyaXB0V29ybGQiLCBudWxscHRyLCBudWxscHRyKTsKICAgICB3ZWJraXRfdXNlcl9jb250
ZW50X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0KHRlc3QtPm1fdXNlckNvbnRlbnRNYW5hZ2VyLmdl
dCgpLCBzdHlsZVNoZWV0KTsKICAgICB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZihzdHls
ZVNoZWV0KTsKLSAgICBnX2Fzc2VydChpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0
ZXN0LCByYW5kb21QYXRoLCAiV2ViRXh0ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIikpOworICAgIGdf
YXNzZXJ0X3RydWUoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFuZG9t
UGF0aCwgIldlYkV4dGVuc2lvblRlc3RTY3JpcHRXb3JsZCIpKTsKIAogICAgIHJlbW92ZU9sZElu
amVjdGVkQ29udGVudEFuZFJlc2V0TGlzdHModGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0
KCksIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKIApAQCAtMTQwLDggKzE0MCw4IEBAIHN0YXRpYyB2
b2lkIHRlc3RVc2VyQ29udGVudE1hbmFnZXJJbmplY3RlZFN0eWxlU2hlZXQoV2ViVmlld1Rlc3Qq
IHRlc3QsIGdjb25zdHBvCiAgICAgc3R5bGVTaGVldCA9IHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0
X25ldyhrSW5qZWN0ZWRTdHlsZVNoZWV0LCBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExf
RlJBTUVTLCBXRUJLSVRfVVNFUl9TVFlMRV9MRVZFTF9VU0VSLCBudWxscHRyLCBibGFja2xpc3Qp
OwogICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQodGVzdC0+
bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHN0eWxlU2hlZXQpOwogICAgIHdlYmtpdF91c2Vy
X3N0eWxlX3NoZWV0X3VucmVmKHN0eWxlU2hlZXQpOwotICAgIGdfYXNzZXJ0KCFpc1N0eWxlU2hl
ZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7Ci0gICAgZ19hc3NlcnQo
aXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgInNvbWVvdGhlcnJhbmRvbXBh
dGgiKSk7CisgICAgZ19hc3NlcnRfZmFsc2UoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBh
dGgodGVzdCwgcmFuZG9tUGF0aCkpOworICAgIGdfYXNzZXJ0X3RydWUoaXNTdHlsZVNoZWV0SW5q
ZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgInNvbWVvdGhlcnJhbmRvbXBhdGgiKSk7CiAKICAgICBy
ZW1vdmVPbGRJbmplY3RlZENvbnRlbnRBbmRSZXNldExpc3RzKHRlc3QtPm1fdXNlckNvbnRlbnRN
YW5hZ2VyLmdldCgpLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CiAKQEAgLTE1NCw5ICsxNTQsOSBA
QCBzdGF0aWMgdm9pZCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTdHlsZVNoZWV0KFdl
YlZpZXdUZXN0KiB0ZXN0LCBnY29uc3RwbwogICAgIHN0eWxlU2hlZXQgPSB3ZWJraXRfdXNlcl9z
dHlsZV9zaGVldF9uZXcoa0luamVjdGVkU3R5bGVTaGVldCwgV0VCS0lUX1VTRVJfQ09OVEVOVF9J
TkpFQ1RfQUxMX0ZSQU1FUywgV0VCS0lUX1VTRVJfU1RZTEVfTEVWRUxfVVNFUiwgd2hpdGVsaXN0
LCBibGFja2xpc3QpOwogICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRfc3R5bGVf
c2hlZXQodGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHN0eWxlU2hlZXQpOwogICAg
IHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3VucmVmKHN0eWxlU2hlZXQpOwotICAgIGdfYXNzZXJ0
KGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIGluVGhlV2hpdGVMaXN0KSk7
Ci0gICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIGlu
VGhlV2hpdGVMaXN0QW5kQmxhY2tMaXN0KSk7Ci0gICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVldElu
amVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIG5vdEluV2hpdGVsaXN0KSk7CisgICAgZ19hc3NlcnRf
dHJ1ZShpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBpblRoZVdoaXRlTGlz
dCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRo
KHRlc3QsIGluVGhlV2hpdGVMaXN0QW5kQmxhY2tMaXN0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uo
aXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgbm90SW5XaGl0ZWxpc3QpKTsK
IAogICAgIC8vIEl0J3MgaW1wb3J0YW50IHRvIGNsZWFuIHVwIHRoZSBlbnZpcm9ubWVudCBiZWZv
cmUgb3RoZXIgdGVzdHMuCiAgICAgcmVtb3ZlT2xkSW5qZWN0ZWRDb250ZW50QW5kUmVzZXRMaXN0
cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgd2hpdGVsaXN0LCBibGFja2xpc3Qp
OwpAQCAtMTcxLDE5ICsxNzEsMTkgQEAgc3RhdGljIHZvaWQgdGVzdFVzZXJDb250ZW50TWFuYWdl
ckluamVjdGVkU2NyaXB0KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGUKIAogICAgIC8v
IFdpdGhvdXQgYSB3aGl0ZWxpc3Qgb3IgYSBibGFja2xpc3QgYWxsIFVSTHMgc2hvdWxkIGhhdmUg
dGhlIGluamVjdGVkIHNjcmlwdC4KICAgICBzdGF0aWMgY29uc3QgY2hhciogcmFuZG9tUGF0aCA9
ICJzb21lcmFuZG9tcGF0aCI7Ci0gICAgZ19hc3NlcnQoIWlzU2NyaXB0SW5qZWN0ZWRGb3JVUkxB
dFBhdGgodGVzdCwgcmFuZG9tUGF0aCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKGlzU2NyaXB0SW5q
ZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCkpOwogICAgIFdlYktpdFVzZXJTY3Jp
cHQqIHNjcmlwdCA9IHdlYmtpdF91c2VyX3NjcmlwdF9uZXcoa0luamVjdGVkU2NyaXB0LCBXRUJL
SVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9TQ1JJUFRfSU5K
RUNUX0FUX0RPQ1VNRU5UX0VORCwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgd2Via2l0X3VzZXJf
Y29udGVudF9tYW5hZ2VyX2FkZF9zY3JpcHQodGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0
KCksIHNjcmlwdCk7CiAgICAgd2Via2l0X3VzZXJfc2NyaXB0X3VucmVmKHNjcmlwdCk7Ci0gICAg
Z19hc3NlcnQoaXNTY3JpcHRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7
CisgICAgZ19hc3NlcnRfdHJ1ZShpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJh
bmRvbVBhdGgpKTsKIAogICAgIHJlbW92ZU9sZEluamVjdGVkQ29udGVudEFuZFJlc2V0TGlzdHMo
dGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsK
IAotICAgIGdfYXNzZXJ0KCFpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRv
bVBhdGgsICJXZWJFeHRlbnNpb25UZXN0U2NyaXB0V29ybGQiKSk7CisgICAgZ19hc3NlcnRfZmFs
c2UoaXNTY3JpcHRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoLCAiV2ViRXh0
ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIikpOwogICAgIHNjcmlwdCA9IHdlYmtpdF91c2VyX3Njcmlw
dF9uZXdfZm9yX3dvcmxkKGtJbmplY3RlZFNjcmlwdCwgV0VCS0lUX1VTRVJfQ09OVEVOVF9JTkpF
Q1RfQUxMX0ZSQU1FUywgV0VCS0lUX1VTRVJfU0NSSVBUX0lOSkVDVF9BVF9ET0NVTUVOVF9FTkQs
ICJXZWJFeHRlbnNpb25UZXN0U2NyaXB0V29ybGQiLCBudWxscHRyLCBudWxscHRyKTsKICAgICB3
ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3NjcmlwdCh0ZXN0LT5tX3VzZXJDb250ZW50
TWFuYWdlci5nZXQoKSwgc2NyaXB0KTsKICAgICB3ZWJraXRfdXNlcl9zY3JpcHRfdW5yZWYoc2Ny
aXB0KTsKLSAgICBnX2Fzc2VydChpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJh
bmRvbVBhdGgsICJXZWJFeHRlbnNpb25UZXN0U2NyaXB0V29ybGQiKSk7CisgICAgZ19hc3NlcnRf
dHJ1ZShpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgsICJXZWJF
eHRlbnNpb25UZXN0U2NyaXB0V29ybGQiKSk7CiAKICAgICByZW1vdmVPbGRJbmplY3RlZENvbnRl
bnRBbmRSZXNldExpc3RzKHRlc3QtPm1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCB3aGl0ZWxp
c3QsIGJsYWNrbGlzdCk7CiAKQEAgLTE5MSw4ICsxOTEsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0VXNl
ckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTY3JpcHQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZQogICAgIHNjcmlwdCA9IHdlYmtpdF91c2VyX3NjcmlwdF9uZXcoa0luamVjdGVkU2NyaXB0
LCBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9TQ1JJ
UFRfSU5KRUNUX0FUX0RPQ1VNRU5UX0VORCwgbnVsbHB0ciwgYmxhY2tsaXN0KTsKICAgICB3ZWJr
aXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRkX3NjcmlwdCh0ZXN0LT5tX3VzZXJDb250ZW50TWFu
YWdlci5nZXQoKSwgc2NyaXB0KTsKICAgICB3ZWJraXRfdXNlcl9zY3JpcHRfdW5yZWYoc2NyaXB0
KTsKLSAgICBnX2Fzc2VydCghaXNTY3JpcHRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5k
b21QYXRoKSk7Ci0gICAgZ19hc3NlcnQoaXNTY3JpcHRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0
LCAic29tZW90aGVycmFuZG9tcGF0aCIpKTsKKyAgICBnX2Fzc2VydF9mYWxzZShpc1NjcmlwdElu
amVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKKyAgICBnX2Fzc2VydF90cnVl
KGlzU2NyaXB0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgInNvbWVvdGhlcnJhbmRvbXBhdGgi
KSk7CiAKICAgICByZW1vdmVPbGRJbmplY3RlZENvbnRlbnRBbmRSZXNldExpc3RzKHRlc3QtPm1f
dXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CiAKQEAgLTIw
NSw5ICsyMDUsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRT
Y3JpcHQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZQogICAgIHNjcmlwdCA9IHdlYmtp
dF91c2VyX3NjcmlwdF9uZXcoa0luamVjdGVkU2NyaXB0LCBXRUJLSVRfVVNFUl9DT05URU5UX0lO
SkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9TQ1JJUFRfSU5KRUNUX0FUX0RPQ1VNRU5UX0VO
RCwgd2hpdGVsaXN0LCBibGFja2xpc3QpOwogICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdl
cl9hZGRfc2NyaXB0KHRlc3QtPm1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBzY3JpcHQpOwog
ICAgIHdlYmtpdF91c2VyX3NjcmlwdF91bnJlZihzY3JpcHQpOwotICAgIGdfYXNzZXJ0KGlzU2Ny
aXB0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgaW5UaGVXaGl0ZUxpc3QpKTsKLSAgICBnX2Fz
c2VydCghaXNTY3JpcHRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBpblRoZVdoaXRlTGlzdEFu
ZEJsYWNrTGlzdCkpOwotICAgIGdfYXNzZXJ0KCFpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQYXRo
KHRlc3QsIG5vdEluV2hpdGVsaXN0KSk7CisgICAgZ19hc3NlcnRfdHJ1ZShpc1NjcmlwdEluamVj
dGVkRm9yVVJMQXRQYXRoKHRlc3QsIGluVGhlV2hpdGVMaXN0KSk7CisgICAgZ19hc3NlcnRfZmFs
c2UoaXNTY3JpcHRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBpblRoZVdoaXRlTGlzdEFuZEJs
YWNrTGlzdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKGlzU2NyaXB0SW5qZWN0ZWRGb3JVUkxBdFBh
dGgodGVzdCwgbm90SW5XaGl0ZWxpc3QpKTsKIAogICAgIC8vIEl0J3MgaW1wb3J0YW50IHRvIGNs
ZWFuIHVwIHRoZSBlbnZpcm9ubWVudCBiZWZvcmUgb3RoZXIgdGVzdHMuCiAgICAgcmVtb3ZlT2xk
SW5qZWN0ZWRDb250ZW50QW5kUmVzZXRMaXN0cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5n
ZXQoKSwgd2hpdGVsaXN0LCBibGFja2xpc3QpOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHB1YmxpYzoK
ICAgICAgICAgaWYgKCF0ZXN0LT5tX3dhaXRGb3JTY3JpcHRSdW4pCiAgICAgICAgICAgICBnX21h
aW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwogCi0gICAgICAgIGdfYXNzZXJ0KCF0ZXN0
LT5tX3VzZXJTY3JpcHRNZXNzYWdlKTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbCh0ZXN0LT5tX3Vz
ZXJTY3JpcHRNZXNzYWdlKTsKICAgICAgICAgdGVzdC0+bV91c2VyU2NyaXB0TWVzc2FnZSA9IHdl
YmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9yZWYoanNSZXN1bHQpOwogICAgIH0KIApAQCAtMjYxLDE0
ICsyNjEsMTQgQEAgcHVibGljOgogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fdXNlckNvbnRl
bnRNYW5hZ2VyLmdldCgpLCBzaWduYWxOYW1lLmdldCgpLCBHX0NBTExCQUNLKHNjcmlwdE1lc3Nh
Z2VSZWNlaXZlZCksIHRoaXMpOwogCiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29w
KTsKLSAgICAgICAgZ19hc3NlcnQoIW1fd2FpdEZvclNjcmlwdFJ1bik7Ci0gICAgICAgIGdfYXNz
ZXJ0KG1fdXNlclNjcmlwdE1lc3NhZ2UpOworICAgICAgICBnX2Fzc2VydF9mYWxzZShtX3dhaXRG
b3JTY3JpcHRSdW4pOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKG1fdXNlclNjcmlwdE1lc3Nh
Z2UpOwogICAgICAgICByZXR1cm4gbV91c2VyU2NyaXB0TWVzc2FnZTsKICAgICB9CiAKICAgICBz
dGF0aWMgdm9pZCBydW5KYXZhU2NyaXB0RmluaXNoZWQoR09iamVjdCosIEdBc3luY1Jlc3VsdCog
cmVzdWx0LCBVc2VyU2NyaXB0TWVzc2FnZVRlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBnX2Fz
c2VydCh0ZXN0LT5tX3dhaXRGb3JTY3JpcHRSdW4pOworICAgICAgICBnX2Fzc2VydF90cnVlKHRl
c3QtPm1fd2FpdEZvclNjcmlwdFJ1bik7CiAgICAgICAgIHRlc3QtPm1fd2FpdEZvclNjcmlwdFJ1
biA9IGZhbHNlOwogICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwog
ICAgIH0KQEAgLTI5MSwxMCArMjkxLDEwIEBAIHByaXZhdGU6CiAKIHN0YXRpYyB2b2lkIHRlc3RV
c2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNzYWdlUmVjZWl2ZWQoVXNlclNjcmlwdE1lc3NhZ2VU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIGdfYXNzZXJ0KHRlc3QtPnJlZ2lzdGVy
SGFuZGxlcigibXNnIikpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+cmVnaXN0ZXJIYW5kbGVy
KCJtc2ciKSk7CiAKICAgICAvLyBUcnlpbmcgdG8gcmVnaXN0ZXIgdGhlIHNhbWUgaGFuZGxlciBh
IHNlY29uZCB0aW1lIG11c3QgZmFpbC4KLSAgICBnX2Fzc2VydCghdGVzdC0+cmVnaXN0ZXJIYW5k
bGVyKCJtc2ciKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+cmVnaXN0ZXJIYW5kbGVyKCJt
c2ciKSk7CiAKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PC9odG1sPiIsIG51bGxwdHIpOwog
ICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwpAQCAtMzAyLDE1ICszMDIsMTUgQEAg
c3RhdGljIHZvaWQgdGVzdFVzZXJDb250ZW50TWFuYWdlclNjcmlwdE1lc3NhZ2VSZWNlaXZlZChV
c2VyU2NyaXB0TWVzc2FnZVRlc3QqIHQKICAgICAvLyBDaGVjayB0aGF0IHRoZSAid2luZG93Lndl
YmtpdC5tZXNzYWdlSGFuZGxlcnMiIG5hbWVzcGFjZSBleGlzdHMuCiAgICAgR1VuaXF1ZU91dFB0
cjxHRXJyb3I+IGVycm9yOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRS
ZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIndpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzID8gJ3knIDogJ24nOyIsICZlcnJvci5vdXRQdHIoKSk7Ci0g
ICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgp
KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0
X25vX2Vycm9yKGVycm9yLmdldCgpKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHZhbHVlU3RyaW5n
KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQp
KTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAieSIpOwogCiAg
ICAgLy8gQ2hlY2sgdGhhdCB0aGUgImRvY3VtZW50LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMubXNn
IiBuYW1lc3BhY2UgZXhpc3RzLgogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZh
U2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
Lm1zZyA/ICd5JyA6ICduJzsiLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFz
Y3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRf
bm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5n
ZXQoKSk7CiAgICAgdmFsdWVTdHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1
bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1
ZVN0cmluZy5nZXQoKSwgPT0sICJ5Iik7CiAKQEAgLTMxOCwxOSArMzE4LDE5IEBAIHN0YXRpYyB2
b2lkIHRlc3RVc2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNzYWdlUmVjZWl2ZWQoVXNlclNjcmlw
dE1lc3NhZ2VUZXN0KiB0CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9
PSwgInVzZXIgbWVzc2FnZSIpOwogCiAgICAgLy8gTWVzc2FnZXMgc2hvdWxkIGFycml2ZSBkZXNw
aXRlIG9mIG90aGVyIGhhbmRsZXJzIGJlaW5nIHJlZ2lzdGVyZWQuCi0gICAgZ19hc3NlcnQodGVz
dC0+cmVnaXN0ZXJIYW5kbGVyKCJhbm90aGVySGFuZGxlciIpKTsKKyAgICBnX2Fzc2VydF90cnVl
KHRlc3QtPnJlZ2lzdGVySGFuZGxlcigiYW5vdGhlckhhbmRsZXIiKSk7CiAKICAgICAvLyBDaGVj
ayB0aGF0IHRoZSAiZG9jdW1lbnQud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5tc2ciIG5hbWVzcGFj
ZSBzdGlsbCBleGlzdHMuCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3Jp
cHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMubXNn
ID8gJ3knIDogJ24nOyIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlw
dFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25u
dWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgp
KTsKICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRv
Q1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3Ry
aW5nLmdldCgpLCA9PSwgInkiKTsKIAogICAgIC8vIENoZWNrIHRoYXQgdGhlICJkb2N1bWVudC53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLmFub3RoZXJIYW5kbGVyIiBuYW1lc3BhY2UgZXhpc3RzLgog
ICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmlu
aXNoZWQoIndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmFub3RoZXJIYW5kbGVyID8gJ3kn
IDogJ24nOyIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3Vs
dCk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGph
dmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKICAg
ICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmlu
ZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdl
dCgpLCA9PSwgInkiKTsKIApAQCAtMzQ0LDExICszNDQsMTEgQEAgc3RhdGljIHZvaWQgdGVzdFVz
ZXJDb250ZW50TWFuYWdlclNjcmlwdE1lc3NhZ2VSZWNlaXZlZChVc2VyU2NyaXB0TWVzc2FnZVRl
c3QqIHQKICAgICB0ZXN0LT51bnJlZ2lzdGVySGFuZGxlcigibXNnIik7CiAKICAgICBqYXZhc2Ny
aXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5tc2cucG9zdE1lc3NhZ2UoJzQyJyk7IiwgJmVycm9y
Lm91dFB0cigpKTsKLSAgICBnX2Fzc2VydCghamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3Nl
cnQoZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X251bGwoamF2YXNjcmlwdFJlc3VsdCk7Cisg
ICAgZ19hc3NlcnRfbm9ubnVsbChlcnJvci5nZXQoKSk7CiAKICAgICAvLyBSZS1yZWdpc3Rlcmlu
ZyBhIGhhbmRsZXIgdGhhdCBoYXMgYmVlbiB1bnJlZ2lzdGVyZWQgbXVzdCB3b3JrCi0gICAgZ19h
c3NlcnQodGVzdC0+cmVnaXN0ZXJIYW5kbGVyKCJtc2ciKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0
ZXN0LT5yZWdpc3RlckhhbmRsZXIoIm1zZyIpKTsKICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJW
aWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyh0ZXN0LT5wb3N0TWVzc2FnZUFuZFdh
aXRVbnRpbFJlY2VpdmVkKCJtc2ciLCAiJ2hhbmRsZXI6IG1zZyciKSkpOwogICAgIGdfYXNzZXJ0
X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJoYW5kbGVyOiBtc2ciKTsKIApAQCAtMzU3
LDcgKzM1Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RVc2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNz
YWdlUmVjZWl2ZWQoVXNlclNjcmlwdE1lc3NhZ2VUZXN0KiB0CiAKIHN0YXRpYyB2b2lkIHRlc3RV
c2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNzYWdlSW5Xb3JsZFJlY2VpdmVkKFVzZXJTY3JpcHRN
ZXNzYWdlVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBnX2Fzc2VydCh0ZXN0LT5y
ZWdpc3RlckhhbmRsZXIoIm1zZyIpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPnJlZ2lzdGVy
SGFuZGxlcigibXNnIikpOwogCiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjwvaHRtbD4iLCBu
dWxscHRyKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKQEAgLTM2NSwxNiAr
MzY1LDE2IEBAIHN0YXRpYyB2b2lkIHRlc3RVc2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNzYWdl
SW5Xb3JsZFJlY2VpdmVkKFVzZXJTY3JpcHRNZXNzYWdlCiAgICAgLy8gQ2hlY2sgdGhhdCB0aGUg
IndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzIiBuYW1lc3BhY2UgZG9lc24ndCBleGlzdCBp
biBpc29sYXRlZCB3b3JsZHMuCiAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAg
IFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZh
U2NyaXB0SW5Xb3JsZEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VI
YW5kbGVycyA/ICd5JyA6ICduJzsiLCAiV2ViRXh0ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIiwgJmVy
cm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydCghamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19h
c3NlcnRfbnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5n
ZXQoKSwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1IsIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SX1ND
UklQVF9GQUlMRUQpOwogICAgIHRlc3QtPnVucmVnaXN0ZXJIYW5kbGVyKCJtc2ciKTsKIAotICAg
IGdfYXNzZXJ0KHRlc3QtPnJlZ2lzdGVySGFuZGxlcigibXNnIiwgIldlYkV4dGVuc2lvblRlc3RT
Y3JpcHRXb3JsZCIpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPnJlZ2lzdGVySGFuZGxlcigi
bXNnIiwgIldlYkV4dGVuc2lvblRlc3RTY3JpcHRXb3JsZCIpKTsKIAogICAgIC8vIENoZWNrIHRo
YXQgdGhlICJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycyIgbmFtZXNwYWNlIGV4aXN0cyBp
biB0aGUgd29ybGQuCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRJ
bldvcmxkQW5kV2FpdFVudGlsRmluaXNoZWQoIndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
ID8gJ3knIDogJ24nOyIsICJXZWJFeHRlbnNpb25UZXN0U2NyaXB0V29ybGQiLCAmZXJyb3Iub3V0
UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFl
cnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAg
ICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiB2
YWx1ZVN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2Ny
aXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwg
InkiKTsKIApAQCAtMzgzLDcgKzM4Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RVc2VyQ29udGVudE1h
bmFnZXJTY3JpcHRNZXNzYWdlSW5Xb3JsZFJlY2VpdmVkKFVzZXJTY3JpcHRNZXNzYWdlCiAKICAg
ICAvLyBQb3N0IG1lc3NhZ2UgaW4gbWFpbiB3b3JsZCBzaG91bGQgZmFpbC4KICAgICBqYXZhc2Ny
aXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5tc2cucG9zdE1lc3NhZ2UoJzQyJyk7IiwgJmVycm9y
Lm91dFB0cigpKTsKLSAgICBnX2Fzc2VydCghamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3Nl
cnRfbnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQo
KSwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1IsIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SX1NDUklQ
VF9GQUlMRUQpOwogCiAgICAgdGVzdC0+dW5yZWdpc3RlckhhbmRsZXIoIm1zZyIsICJXZWJFeHRl
bnNpb25UZXN0U2NyaXB0V29ybGQiKTsKQEAgLTM5MiwxMSArMzkyLDExIEBAIHN0YXRpYyB2b2lk
IHRlc3RVc2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNzYWdlSW5Xb3JsZFJlY2VpdmVkKFVzZXJT
Y3JpcHRNZXNzYWdlCiAjaWYgUExBVEZPUk0oR1RLKQogc3RhdGljIHZvaWQgdGVzdFVzZXJDb250
ZW50TWFuYWdlclNjcmlwdE1lc3NhZ2VGcm9tRE9NQmluZGluZ3MoVXNlclNjcmlwdE1lc3NhZ2VU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIGdfYXNzZXJ0KHRlc3QtPnJlZ2lzdGVy
SGFuZGxlcigiZG9tIikpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+cmVnaXN0ZXJIYW5kbGVy
KCJkb20iKSk7CiAKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+MTwvaHRtbD4iLCBudWxscHRy
KTsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+
d2FpdFVudGlsTWVzc2FnZVJlY2VpdmVkKCJkb20iKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0
UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOwogICAgIEdV
bmlxdWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRU
b0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0
cmluZy5nZXQoKSwgPT0sICJEb2N1bWVudExvYWRlZCIpOwogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0
LmNwcAppbmRleCBkNDE0NGY2OTgyZTMzMGVmNmJmZDhjYTllMTA1YjFlZGEwZTc0ZTc4Li40YzQz
NDVlZDM2ZDNjM2IxMTNiMzMxOGRjMjNjM2E2OTJlY2FlZDBmIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29u
dGV4dC5jcHAKQEAgLTM0LDQ2ICszNCw0NiBAQCBzdGF0aWMgV2ViS2l0VGVzdFNlcnZlcioga1Nl
cnZlcjsKIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0RGVmYXVsdChUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogewogICAgIC8vIENoZWNrIHRoZXJlJ3MgYSBzaW5nbGUgaW5zdGFuY2Ugb2Yg
dGhlIGRlZmF1bHQgd2ViIGNvbnRleHQuCi0gICAgZ19hc3NlcnQod2Via2l0X3dlYl9jb250ZXh0
X2dldF9kZWZhdWx0KCkgPT0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkpOwotICAg
IGdfYXNzZXJ0KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpICE9IHRlc3QtPm1fd2Vi
Q29udGV4dC5nZXQoKSk7CisgICAgZ19hc3NlcnRfY21waGV4KHdlYmtpdF93ZWJfY29udGV4dF9n
ZXRfZGVmYXVsdCgpLCA9PSwgd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkpOworICAg
IGdfYXNzZXJ0X2NtcGhleCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSwgIT0sIHRl
c3QtPm1fd2ViQ29udGV4dC5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0
RXBoZW1lcmFsKFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgLy8gQnkgZGVmYXVs
dCB3ZWIgY29udGV4dHMgYXJlIG5vdCBlcGhlbWVyYWwuCi0gICAgZ19hc3NlcnQoIXdlYmtpdF93
ZWJfY29udGV4dF9pc19lcGhlbWVyYWwod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkp
KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbCh0ZXN0LT5t
X3dlYkNvbnRleHQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX2NvbnRl
eHRfaXNfZXBoZW1lcmFsKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpKSk7CisgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbCh0ZXN0LT5tX3dl
YkNvbnRleHQuZ2V0KCkpKTsKIAogICAgIFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlciogbWFuYWdl
ciA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIod2Via2l0X3dl
Yl9jb250ZXh0X2dldF9kZWZhdWx0KCkpOwotICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJTSVRF
X0RBVEFfTUFOQUdFUihtYW5hZ2VyKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9pc19lcGhlbWVyYWwobWFuYWdlcikpOworICAgIGdfYXNzZXJ0X3RydWUoV0VC
S0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpKTsKKyAgICBnX2Fzc2VydF9mYWxz
ZSh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKG1hbmFnZXIpKTsKICAg
ICBtYW5hZ2VyID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih0
ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJTSVRF
X0RBVEFfTUFOQUdFUihtYW5hZ2VyKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9pc19lcGhlbWVyYWwobWFuYWdlcikpOworICAgIGdfYXNzZXJ0X3RydWUoV0VC
S0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpKTsKKyAgICBnX2Fzc2VydF9mYWxz
ZSh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKG1hbmFnZXIpKTsKIAog
ICAgIGF1dG8gd2ViVmlldyA9IFRlc3Q6OmFkb3B0VmlldyhUZXN0OjpjcmVhdGVXZWJWaWV3KCkp
OwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKHdlYlZpZXcuZ2V0
KCkpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyKHdlYlZpZXcuZ2V0KCkpID09IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXIod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkpKTsKKyAgICBnX2Fzc2Vy
dF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKHdlYlZpZXcuZ2V0KCkpKTsKKyAg
ICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdl
cih3ZWJWaWV3LmdldCgpKSwgPT0sIHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXIod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkpKTsKIAogICAgIHdlYlZp
ZXcgPSBUZXN0OjphZG9wdFZpZXcoVGVzdDo6Y3JlYXRlV2ViVmlldyh0ZXN0LT5tX3dlYkNvbnRl
eHQuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh3
ZWJWaWV3LmdldCgpKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRl
X2RhdGFfbWFuYWdlcih3ZWJWaWV3LmdldCgpKSA9PSBtYW5hZ2VyKTsKKyAgICBnX2Fzc2VydF9m
YWxzZSh3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKHdlYlZpZXcuZ2V0KCkpKTsKKyAgICBn
X2Fzc2VydF9jbXBoZXgod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3
ZWJWaWV3LmdldCgpKSwgPT0sIG1hbmFnZXIpOwogCiAgICAgR1JlZlB0cjxXZWJLaXRXZWJDb250
ZXh0PiBjb250ZXh0ID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJfY29udGV4dF9uZXdfZXBoZW1lcmFs
KCkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwoY29udGV4
dC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVt
ZXJhbChjb250ZXh0LmdldCgpKSk7CiAgICAgbWFuYWdlciA9IHdlYmtpdF93ZWJfY29udGV4dF9n
ZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIoY29udGV4dC5nZXQoKSk7Ci0gICAgZ19hc3NlcnQoV0VC
S0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpKTsKLSAgICBnX2Fzc2VydCh3ZWJr
aXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKG1hbmFnZXIpKTsKLSAgICBnX2Fz
c2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYlZpZXcuZ2V0
KCkpICE9IG1hbmFnZXIpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1dFQlNJVEVfREFU
QV9NQU5BR0VSKG1hbmFnZXIpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9pc19lcGhlbWVyYWwobWFuYWdlcikpOworICAgIGdfYXNzZXJ0X2NtcGhleCh3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYlZpZXcuZ2V0KCkpLCAh
PSwgbWFuYWdlcik7CiAKICAgICB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KFRlc3Q6OmNyZWF0
ZVdlYlZpZXcoY29udGV4dC5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19p
c19lcGhlbWVyYWwod2ViVmlldy5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmll
d19nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIod2ViVmlldy5nZXQoKSkgPT0gbWFuYWdlcik7Cisg
ICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKHdlYlZpZXcuZ2V0
KCkpKTsKKyAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcih3ZWJWaWV3LmdldCgpKSwgPT0sIG1hbmFnZXIpOwogCiAgICAgR1JlZlB0cjxX
ZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI+IGVwaGVtZXJhbE1hbmFnZXIgPSBhZG9wdEdSZWYod2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX25ld19lcGhlbWVyYWwoKSk7Ci0gICAgZ19hc3NlcnQo
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChlcGhlbWVyYWxNYW5hZ2Vy
LmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
aXNfZXBoZW1lcmFsKGVwaGVtZXJhbE1hbmFnZXIuZ2V0KCkpKTsKICAgICBjb250ZXh0ID0gYWRv
cHRHUmVmKHdlYmtpdF93ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJzaXRlX2RhdGFfbWFuYWdlcihl
cGhlbWVyYWxNYW5hZ2VyLmdldCgpKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl9jb250ZXh0
X2lzX2VwaGVtZXJhbChjb250ZXh0LmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRf
d2ViX2NvbnRleHRfaXNfZXBoZW1lcmFsKGNvbnRleHQuZ2V0KCkpKTsKIH0KIAogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQpAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKIHN0YXRp
YyB2b2lkIHRlc3RXZWJDb250ZXh0R2V0UGx1Z2lucyhQbHVnaW5zVGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKIHsKICAgICBHTGlzdCogcGx1Z2lucyA9IHRlc3QtPmdldFBsdWdpbnMoKTsKLSAg
ICBnX2Fzc2VydChwbHVnaW5zKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHBsdWdpbnMpOwogCiAg
ICAgR1JlZlB0cjxXZWJLaXRQbHVnaW4+IHRlc3RQbHVnaW47CiAgICAgZm9yIChHTGlzdCogaXRl
bSA9IHBsdWdpbnM7IGl0ZW07IGl0ZW0gPSBnX2xpc3RfbmV4dChpdGVtKSkgewpAQCAtMTI2LDIy
ICsxMjYsMjIgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRHZXRQbHVnaW5zKFBsdWdpbnNU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgZ19hc3NlcnQoV0VCS0lUX0lTX1BMVUdJTih0ZXN0UGx1Z2luLmdldCgpKSk7
CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfUExVR0lOKHRlc3RQbHVnaW4uZ2V0KCkpKTsK
IAogICAgIGNoYXIgbm9ybWFsaXplZFBhdGhbUEFUSF9NQVhdOwotICAgIGdfYXNzZXJ0KHJlYWxw
YXRoKFdFQktJVF9URVNUX1BMVUdJTl9ESVIsIG5vcm1hbGl6ZWRQYXRoKSk7CisgICAgZ19hc3Nl
cnRfbm9ubnVsbChyZWFscGF0aChXRUJLSVRfVEVTVF9QTFVHSU5fRElSLCBub3JtYWxpemVkUGF0
aCkpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gcGx1Z2luUGF0aChnX2J1aWxkX2ZpbGVuYW1lKG5v
cm1hbGl6ZWRQYXRoLCAibGliVGVzdE5ldHNjYXBlUGx1Z0luLnNvIiwgbnVsbHB0cikpOwogICAg
IGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfcGx1Z2luX2dldF9wYXRoKHRlc3RQbHVnaW4uZ2V0KCkp
LCA9PSwgcGx1Z2luUGF0aC5nZXQoKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9wbHVn
aW5fZ2V0X2Rlc2NyaXB0aW9uKHRlc3RQbHVnaW4uZ2V0KCkpLCA9PSwgIlNpbXBsZSBOZXRzY2Fw
ZcKuIHBsdWctaW4gdGhhdCBoYW5kbGVzIHRlc3QgY29udGVudCBmb3IgV2ViS2l0Iik7CiAgICAg
R0xpc3QqIG1pbWVJbmZvTGlzdCA9IHdlYmtpdF9wbHVnaW5fZ2V0X21pbWVfaW5mb19saXN0KHRl
c3RQbHVnaW4uZ2V0KCkpOwotICAgIGdfYXNzZXJ0KG1pbWVJbmZvTGlzdCk7CisgICAgZ19hc3Nl
cnRfbm9ubnVsbChtaW1lSW5mb0xpc3QpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19saXN0X2xl
bmd0aChtaW1lSW5mb0xpc3QpLCA9PSwgMik7CiAKICAgICBXZWJLaXRNaW1lSW5mbyogbWltZUlu
Zm8gPSBzdGF0aWNfY2FzdDxXZWJLaXRNaW1lSW5mbyo+KG1pbWVJbmZvTGlzdC0+ZGF0YSk7CiAg
ICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9taW1lX2luZm9fZ2V0X21pbWVfdHlwZShtaW1lSW5m
byksID09LCAiaW1hZ2UvcG5nIik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9taW1lX2lu
Zm9fZ2V0X2Rlc2NyaXB0aW9uKG1pbWVJbmZvKSwgPT0sICJwbmcgaW1hZ2UiKTsKICAgICBjb25z
dCBnY2hhciogY29uc3QqIGV4dGVuc2lvbnMgPSB3ZWJraXRfbWltZV9pbmZvX2dldF9leHRlbnNp
b25zKG1pbWVJbmZvKTsKLSAgICBnX2Fzc2VydChleHRlbnNpb25zKTsKKyAgICBnX2Fzc2VydF9u
b25udWxsKGV4dGVuc2lvbnMpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihleHRlbnNpb25zWzBdLCA9
PSwgInBuZyIpOwogCiAgICAgbWltZUluZm9MaXN0ID0gZ19saXN0X25leHQobWltZUluZm9MaXN0
KTsKQEAgLTE0OSw3ICsxNDksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dEdldFBsdWdp
bnMoUGx1Z2luc1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21wc3Ry
KHdlYmtpdF9taW1lX2luZm9fZ2V0X21pbWVfdHlwZShtaW1lSW5mbyksID09LCAiYXBwbGljYXRp
b24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRf
bWltZV9pbmZvX2dldF9kZXNjcmlwdGlvbihtaW1lSW5mbyksID09LCAidGVzdCBuZXRzY2FwZSBj
b250ZW50Iik7CiAgICAgZXh0ZW5zaW9ucyA9IHdlYmtpdF9taW1lX2luZm9fZ2V0X2V4dGVuc2lv
bnMobWltZUluZm8pOwotICAgIGdfYXNzZXJ0KGV4dGVuc2lvbnMpOworICAgIGdfYXNzZXJ0X25v
bm51bGwoZXh0ZW5zaW9ucyk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGV4dGVuc2lvbnNbMF0sID09
LCAidGVzdG5ldHNjYXBlIik7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCkBAIC0xOTEsMTEgKzE5MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHRlc3QtPm1fdXJpU2No
ZW1lUmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRl
ZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocmVxdWVzdCkpOwogCi0gICAgICAgIGdfYXNzZXJ0
KHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3dlYl92aWV3KHJlcXVlc3QpID09IHRlc3Qt
Pm1fd2ViVmlldyk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJraXRfdXJpX3NjaGVtZV9y
ZXF1ZXN0X2dldF93ZWJfdmlldyhyZXF1ZXN0KSwgPT0sIHRlc3QtPm1fd2ViVmlldyk7CiAKICAg
ICAgICAgY29uc3QgY2hhciogc2NoZW1lID0gd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRf
c2NoZW1lKHJlcXVlc3QpOwotICAgICAgICBnX2Fzc2VydChzY2hlbWUpOwotICAgICAgICBnX2Fz
c2VydCh0ZXN0LT5tX2hhbmRsZXJzTWFwLmNvbnRhaW5zKFN0cmluZzo6ZnJvbVVURjgoc2NoZW1l
KSkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKHNjaGVtZSk7CisgICAgICAgIGdfYXNzZXJ0
X3RydWUodGVzdC0+bV9oYW5kbGVyc01hcC5jb250YWlucyhTdHJpbmc6OmZyb21VVEY4KHNjaGVt
ZSkpKTsKIAogICAgICAgICBjb25zdCBVUklTY2hlbWVIYW5kbGVyJiBoYW5kbGVyID0gdGVzdC0+
bV9oYW5kbGVyc01hcC5nZXQoU3RyaW5nOjpmcm9tVVRGOChzY2hlbWUpKTsKIApAQCAtMjk3LDcg
KzI5Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0VVJJU2NoZW1lKFVSSVNjaGVtZVRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgc2l6ZV90IG1haW5SZXNvdXJjZURhdGFTaXpl
ID0gMDsKICAgICBjb25zdCBjaGFyKiBtYWluUmVzb3VyY2VEYXRhID0gdGVzdC0+bWFpblJlc291
cmNlRGF0YShtYWluUmVzb3VyY2VEYXRhU2l6ZSk7CiAgICAgZ19hc3NlcnRfY21waW50KG1haW5S
ZXNvdXJjZURhdGFTaXplLCA9PSwgc3RybGVuKGtCYXJIVE1MKSk7Ci0gICAgZ19hc3NlcnQoIXN0
cm5jbXAobWFpblJlc291cmNlRGF0YSwga0JhckhUTUwsIG1haW5SZXNvdXJjZURhdGFTaXplKSk7
CisgICAgZ19hc3NlcnRfY21waW50KHN0cm5jbXAobWFpblJlc291cmNlRGF0YSwga0JhckhUTUws
IG1haW5SZXNvdXJjZURhdGFTaXplKSwgPT0sIDApOwogCiAgICAgdGVzdC0+cmVnaXN0ZXJVUklT
Y2hlbWVIYW5kbGVyKCJlY2hvIiwga0VjaG9IVE1MRm9ybWF0LCAtMSwgInRleHQvaHRtbCIpOwog
ICAgIHRlc3QtPmxvYWRVUkkoImVjaG86aGVsbG8td29ybGQiKTsKQEAgLTMwNiw3ICszMDYsNyBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFVSSVNjaGVtZShVUklTY2hlbWVUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogICAgIG1haW5SZXNvdXJjZURhdGFTaXplID0gMDsKICAgICBtYWlu
UmVzb3VyY2VEYXRhID0gdGVzdC0+bWFpblJlc291cmNlRGF0YShtYWluUmVzb3VyY2VEYXRhU2l6
ZSk7CiAgICAgZ19hc3NlcnRfY21waW50KG1haW5SZXNvdXJjZURhdGFTaXplLCA9PSwgc3RybGVu
KGVjaG9IVE1MLmdldCgpKSk7Ci0gICAgZ19hc3NlcnQoIXN0cm5jbXAobWFpblJlc291cmNlRGF0
YSwgZWNob0hUTUwuZ2V0KCksIG1haW5SZXNvdXJjZURhdGFTaXplKSk7CisgICAgZ19hc3NlcnRf
Y21waW50KHN0cm5jbXAobWFpblJlc291cmNlRGF0YSwgZWNob0hUTUwuZ2V0KCksIG1haW5SZXNv
dXJjZURhdGFTaXplKSwgPT0sIDApOwogCiAgICAgdGVzdC0+bG9hZFVSSSgiZWNobzp3aXRoI2Zy
YWdtZW50Iik7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CkBAIC0zMTYsMjAg
KzMxNiwyMCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFVSSVNjaGVtZShVUklTY2hlbWVU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIG1haW5SZXNvdXJjZURhdGFTaXplID0gMDsK
ICAgICBtYWluUmVzb3VyY2VEYXRhID0gdGVzdC0+bWFpblJlc291cmNlRGF0YShtYWluUmVzb3Vy
Y2VEYXRhU2l6ZSk7CiAgICAgZ19hc3NlcnRfY21waW50KG1haW5SZXNvdXJjZURhdGFTaXplLCA9
PSwgc3RybGVuKGVjaG9IVE1MLmdldCgpKSk7Ci0gICAgZ19hc3NlcnQoIXN0cm5jbXAobWFpblJl
c291cmNlRGF0YSwgZWNob0hUTUwuZ2V0KCksIG1haW5SZXNvdXJjZURhdGFTaXplKSk7CisgICAg
Z19hc3NlcnRfY21waW50KHN0cm5jbXAobWFpblJlc291cmNlRGF0YSwgZWNob0hUTUwuZ2V0KCks
IG1haW5SZXNvdXJjZURhdGFTaXplKSwgPT0sIDApOwogCiAgICAgdGVzdC0+cmVnaXN0ZXJVUklT
Y2hlbWVIYW5kbGVyKCJub21pbWUiLCBrQmFySFRNTCwgLTEsIDApOwogICAgIHRlc3QtPm1fbG9h
ZEV2ZW50cy5jbGVhcigpOwogICAgIHRlc3QtPmxvYWRVUkkoIm5vbWltZTpmb28tYmFyIik7CiAg
ICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9s
b2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZEZhaWxl
ZCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRU
cmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZEZhaWxlZCkpOwogCiAgICAgdGVzdC0+cmVnaXN0
ZXJVUklTY2hlbWVIYW5kbGVyKCJlbXB0eSIsIDAsIDAsICJ0ZXh0L2h0bWwiKTsKICAgICB0ZXN0
LT5tX2xvYWRFdmVudHMuY2xlYXIoKTsKICAgICB0ZXN0LT5sb2FkVVJJKCJlbXB0eTpub3RoaW5n
Iik7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQoIXRl
c3QtPm1fbG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExv
YWRGYWlsZWQpKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExv
YWRUcmFja2luZ1Rlc3Q6OkxvYWRGYWlsZWQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5t
X2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkRmFp
bGVkKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExv
YWRUcmFja2luZ1Rlc3Q6OkxvYWRGYWlsZWQpKTsKIAogICAgIC8vIEFueXRoaW5nIG92ZXIgODE5
MiBieXRlcyB3aWxsIGdldCBtdWx0aXBsZSBjYWxscyB0byBnX2lucHV0X3N0cmVhbV9yZWFkX2Fz
eW5jIGluCiAgICAgLy8gV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCB3aGVuIHJlYWRpbmcgZGF0YSwg
YnV0IHdlIHN0aWxsIG5lZWQgd2F5IG1vcmUgdGhhbiB0aGF0IHRvCkBAIC0zMzksMjUgKzMzOSwy
NSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFVSSVNjaGVtZShVUklTY2hlbWVUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPm1fbG9hZEV2ZW50cy5jbGVhcigpOwogICAg
IHRlc3QtPmxvYWRVUkkoImVycm9yOmVycm9yIik7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZp
bmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRU
cmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZEZhaWxlZCkpOwotICAgIGdfYXNzZXJ0KHRlc3Qt
Pm1fbG9hZEZhaWxlZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2xvYWRFdmVudHMuY29u
dGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkRmFpbGVkKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh0ZXN0LT5tX2xvYWRGYWlsZWQpOwogICAgIGdfYXNzZXJ0X2Vycm9yKHRlc3Qt
Pm1fZXJyb3IuZ2V0KCksIGdfcXVhcmtfZnJvbV9zdHJpbmcoZXJyb3JEb21haW4pLCBlcnJvckNv
ZGUpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2Vycm9yLT5tZXNzYWdlLCA9PSwgZ2Vu
ZXJpY0Vycm9yTWVzc2FnZSk7CiAKICAgICB0ZXN0LT5tX2xvYWRFdmVudHMuY2xlYXIoKTsKICAg
ICB0ZXN0LT5sb2FkVVJJKCJlcnJvcjpiZWZvcmUtcmVzcG9uc2UiKTsKICAgICB0ZXN0LT53YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2xvYWRFdmVudHMuY29u
dGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkRmFpbGVkKSk7Ci0gICAgZ19h
c3NlcnQodGVzdC0+bV9sb2FkRmFpbGVkKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fbG9h
ZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRGYWlsZWQp
KTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fbG9hZEZhaWxlZCk7CiAgICAgZ19hc3NlcnRf
ZXJyb3IodGVzdC0+bV9lcnJvci5nZXQoKSwgZ19xdWFya19mcm9tX3N0cmluZyhlcnJvckRvbWFp
biksIGVycm9yQ29kZSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fZXJyb3ItPm1lc3Nh
Z2UsID09LCBiZWZvcmVSZWNlaXZlUmVzcG9uc2VFcnJvck1lc3NhZ2UpOwogCiAgICAgdGVzdC0+
bV9sb2FkRXZlbnRzLmNsZWFyKCk7CiAgICAgdGVzdC0+bG9hZFVSSSgiZXJyb3I6YWZ0ZXItZmly
c3QtY2h1bmsiKTsKICAgICB0ZXN0LT5maW5pc2hPbkNvbW1pdHRlZEFuZFdhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9h
ZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkRmFpbGVkKSk7Ci0gICAgZ19hc3NlcnQodGVz
dC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRGYWlsZWQpKTsK
LSAgICBnX2Fzc2VydCh0ZXN0LT5tX2xvYWRGYWlsZWQpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRl
c3QtPm1fbG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExv
YWRGYWlsZWQpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlu
cyhMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRmFpbGVkKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0
LT5tX2xvYWRGYWlsZWQpOwogICAgIGdfYXNzZXJ0X2Vycm9yKHRlc3QtPm1fZXJyb3IuZ2V0KCks
IGdfcXVhcmtfZnJvbV9zdHJpbmcoZXJyb3JEb21haW4pLCBlcnJvckNvZGUpOwogICAgIGdfYXNz
ZXJ0X2NtcHN0cih0ZXN0LT5tX2Vycm9yLT5tZXNzYWdlLCA9PSwgYWZ0ZXJJbml0aWFsQ2h1bmtF
cnJvck1lc3NhZ2UpOwogCkBAIC0zNjUsOCArMzY1LDggQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNv
bnRleHRVUklTY2hlbWUoVVJJU2NoZW1lVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0
ZXN0LT5tX2xvYWRFdmVudHMuY2xlYXIoKTsKICAgICB0ZXN0LT5sb2FkVVJJKCJjbG9zZWQ6aW5w
dXQtc3RyZWFtIik7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19h
c3NlcnQodGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zp
c2lvbmFsTG9hZEZhaWxlZCkpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fbG9hZEZhaWxlZCk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5n
VGVzdDo6UHJvdmlzaW9uYWxMb2FkRmFpbGVkKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5t
X2xvYWRGYWlsZWQpOwogICAgIGdfYXNzZXJ0X2Vycm9yKHRlc3QtPm1fZXJyb3IuZ2V0KCksIEdf
SU9fRVJST1IsIEdfSU9fRVJST1JfQ0xPU0VEKTsKIH0KIApAQCAtMzc3LDcgKzM3Nyw3IEBAIHN0
YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0U3BlbGxDaGVja2VyKFRlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiAKICAgICAvLyBDaGVjayB3aGF0IGhhcHBlbnMgaWYgbm8gc3BlbGwgY2hlY2tpbmcg
bGFuZ3VhZ2UgaGFzIGJlZW4gc2V0LgogICAgIGNvbnN0IGdjaGFyKiBjb25zdCogY3VycmVudExh
bmd1YWdlID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9zcGVsbF9jaGVja2luZ19sYW5ndWFnZXMo
d2ViQ29udGV4dCk7Ci0gICAgZ19hc3NlcnQoIWN1cnJlbnRMYW5ndWFnZSk7CisgICAgZ19hc3Nl
cnRfbnVsbChjdXJyZW50TGFuZ3VhZ2UpOwogCiAgICAgLy8gU2V0IHRoZSBsYW5ndWFnZSB0byBh
IHNwZWNpZmljIG9uZS4KICAgICBHUmVmUHRyPEdQdHJBcnJheT4gbGFuZ3VhZ2VzID0gYWRvcHRH
UmVmKGdfcHRyX2FycmF5X25ldygpKTsKQEAgLTQxNSwxMyArNDE1LDEzIEBAIHN0YXRpYyB2b2lk
IHRlc3RXZWJDb250ZXh0U3BlbGxDaGVja2VyKFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAg
ICAgZ19wdHJfYXJyYXlfYWRkKGxhbmd1YWdlcy5nZXQoKSwgMCk7CiAgICAgd2Via2l0X3dlYl9j
b250ZXh0X3NldF9zcGVsbF9jaGVja2luZ19sYW5ndWFnZXMod2ViQ29udGV4dCwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBjaGFyKiBjb25zdCo+KGxhbmd1YWdlcy0+cGRhdGEpKTsKICAgICBjdXJy
ZW50TGFuZ3VhZ2UgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3NwZWxsX2NoZWNraW5nX2xhbmd1
YWdlcyh3ZWJDb250ZXh0KTsKLSAgICBnX2Fzc2VydCghY3VycmVudExhbmd1YWdlKTsKKyAgICBn
X2Fzc2VydF9udWxsKGN1cnJlbnRMYW5ndWFnZSk7CiAKICAgICAvLyBDaGVjayBkaXNhYmxpbmcg
YW5kIHJlLWVuYWJsaW5nIHNwZWxsIGNoZWNraW5nLgogICAgIHdlYmtpdF93ZWJfY29udGV4dF9z
ZXRfc3BlbGxfY2hlY2tpbmdfZW5hYmxlZCh3ZWJDb250ZXh0LCBGQUxTRSk7Ci0gICAgZ19hc3Nl
cnQoIXdlYmtpdF93ZWJfY29udGV4dF9nZXRfc3BlbGxfY2hlY2tpbmdfZW5hYmxlZCh3ZWJDb250
ZXh0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9jb250ZXh0X2dldF9zcGVsbF9j
aGVja2luZ19lbmFibGVkKHdlYkNvbnRleHQpKTsKICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0
X3NwZWxsX2NoZWNraW5nX2VuYWJsZWQod2ViQ29udGV4dCwgVFJVRSk7Ci0gICAgZ19hc3NlcnQo
d2Via2l0X3dlYl9jb250ZXh0X2dldF9zcGVsbF9jaGVja2luZ19lbmFibGVkKHdlYkNvbnRleHQp
KTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfc3BlbGxfY2hlY2tp
bmdfZW5hYmxlZCh3ZWJDb250ZXh0KSk7CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCkBA
IC00MzMsNyArNDMzLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRMYW5ndWFnZXMoV2Vi
Vmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgc2l6ZV90IG1haW5SZXNvdXJjZURh
dGFTaXplID0gMDsKICAgICBjb25zdCBjaGFyKiBtYWluUmVzb3VyY2VEYXRhID0gdGVzdC0+bWFp
blJlc291cmNlRGF0YShtYWluUmVzb3VyY2VEYXRhU2l6ZSk7CiAgICAgZ19hc3NlcnRfY21wdWlu
dChtYWluUmVzb3VyY2VEYXRhU2l6ZSwgPT0sIHN0cmxlbihleHBlY3RlZERlZmF1bHRMYW5ndWFn
ZSkpOwotICAgIGdfYXNzZXJ0KCFzdHJuY21wKG1haW5SZXNvdXJjZURhdGEsIGV4cGVjdGVkRGVm
YXVsdExhbmd1YWdlLCBtYWluUmVzb3VyY2VEYXRhU2l6ZSkpOworICAgIGdfYXNzZXJ0X2NtcGlu
dChzdHJuY21wKG1haW5SZXNvdXJjZURhdGEsIGV4cGVjdGVkRGVmYXVsdExhbmd1YWdlLCBtYWlu
UmVzb3VyY2VEYXRhU2l6ZSksID09LCAwKTsKIAogICAgIEdSZWZQdHI8R1B0ckFycmF5PiBsYW5n
dWFnZXMgPSBhZG9wdEdSZWYoZ19wdHJfYXJyYXlfbmV3KCkpOwogICAgIGdfcHRyX2FycmF5X2Fk
ZChsYW5ndWFnZXMuZ2V0KCksIGNvbnN0X2Nhc3Q8Z3BvaW50ZXI+KHN0YXRpY19jYXN0PGNvbnN0
IHZvaWQqPigiZW4iKSkpOwpAQCAtNDQ4LDE1ICs0NDgsMTUgQEAgc3RhdGljIHZvaWQgdGVzdFdl
YkNvbnRleHRMYW5ndWFnZXMoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAg
bWFpblJlc291cmNlRGF0YVNpemUgPSAwOwogICAgIG1haW5SZXNvdXJjZURhdGEgPSB0ZXN0LT5t
YWluUmVzb3VyY2VEYXRhKG1haW5SZXNvdXJjZURhdGFTaXplKTsKICAgICBnX2Fzc2VydF9jbXB1
aW50KG1haW5SZXNvdXJjZURhdGFTaXplLCA9PSwgc3RybGVuKGV4cGVjdGVkTGFuZ3VhZ2VzKSk7
Ci0gICAgZ19hc3NlcnQoIXN0cm5jbXAobWFpblJlc291cmNlRGF0YSwgZXhwZWN0ZWRMYW5ndWFn
ZXMsIG1haW5SZXNvdXJjZURhdGFTaXplKSk7CisgICAgZ19hc3NlcnRfY21waW50KHN0cm5jbXAo
bWFpblJlc291cmNlRGF0YSwgZXhwZWN0ZWRMYW5ndWFnZXMsIG1haW5SZXNvdXJjZURhdGFTaXpl
KSwgPT0sIDApOwogCiAgICAgLy8gV2hlbiB1c2luZyB0aGUgQyBsb2NhbGUsIGVuLVVTIHNob3Vs
ZCBiZSB1c2VkIGFzIGRlZmF1bHQuCiAgICAgY29uc3QgY2hhciogY0xhbmd1YWdlW10gPSB7ICJD
IiwgbnVsbHB0ciB9OwogICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfcHJlZmVycmVkX2xhbmd1
YWdlcyh0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCksIGNMYW5ndWFnZSk7CiAgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3Jp
cHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIkludGwu
RGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUiLCAmZXJyb3Iub3V0UHRy
KCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJv
cik7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2Vy
dF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBsb2NhbGUoV2Vi
Vmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwog
ICAgIGdfYXNzZXJ0X2NtcHN0cihsb2NhbGUuZ2V0KCksID09LCBleHBlY3RlZERlZmF1bHRMYW5n
dWFnZSk7CiAKQEAgLTQ2NCw4ICs0NjQsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dExh
bmd1YWdlcyhXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBjb25zdCBjaGFy
KiBwb3NpeExhbmd1YWdlW10gPSB7ICJQT1NJWCIsIG51bGxwdHIgfTsKICAgICB3ZWJraXRfd2Vi
X2NvbnRleHRfc2V0X3ByZWZlcnJlZF9sYW5ndWFnZXModGVzdC0+bV93ZWJDb250ZXh0LmdldCgp
LCBwb3NpeExhbmd1YWdlKTsKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNj
cmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRP
cHRpb25zKCkubG9jYWxlIiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2Ny
aXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3IpOworICAgIGdfYXNzZXJ0X25vbm51bGwo
amF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwog
ICAgIGxvY2FsZS5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhq
YXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGxvY2FsZS5nZXQoKSwgPT0s
IGV4cGVjdGVkRGVmYXVsdExhbmd1YWdlKTsKIApAQCAtNDczLDcgKzQ3Myw3IEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJDb250ZXh0TGFuZ3VhZ2VzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQogICAgIGNvbnN0IGNoYXIqIGludmFsaWRMYW5ndWFnZVtdID0geyAiQSIsIG51bGxwdHIg
fTsKICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3ByZWZlcnJlZF9sYW5ndWFnZXModGVzdC0+
bV93ZWJDb250ZXh0LmdldCgpLCBpbnZhbGlkTGFuZ3VhZ2UpOwogICAgIGphdmFzY3JpcHRSZXN1
bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIkludGwuRGF0ZVRp
bWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUiLCAmZXJyb3Iub3V0UHRyKCkpOwot
ICAgIGdfYXNzZXJ0KCFqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGph
dmFzY3JpcHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRf
SkFWQVNDUklQVF9FUlJPUiwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1JfU0NSSVBUX0ZBSUxFRCk7
CiB9CiAKQEAgLTUyNCwyOSArNTI0LDI5IEBAIHB1YmxpYzoKICAgICB2b2lkIHZlcmlmeVRoYXRT
Y2hlbWVNYXRjaGVzUG9saWN5KGNvbnN0IGNoYXIqIHNjaGVtZSwgdW5zaWduZWQgcG9saWN5KQog
ICAgIHsKICAgICAgICAgaWYgKHBvbGljeSAmIExvY2FsKQotICAgICAgICAgICAgZ19hc3NlcnQo
d2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9pc19sb2NhbChtX21hbmFnZXIsIHNj
aGVtZSkpOworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2VjdXJpdHlfbWFuYWdl
cl91cmlfc2NoZW1lX2lzX2xvY2FsKG1fbWFuYWdlciwgc2NoZW1lKSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlfc2NoZW1l
X2lzX2xvY2FsKG1fbWFuYWdlciwgc2NoZW1lKSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxz
ZSh3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlfc2NoZW1lX2lzX2xvY2FsKG1fbWFuYWdlciwg
c2NoZW1lKSk7CiAgICAgICAgIGlmIChwb2xpY3kgJiBOb0FjY2VzcykKLSAgICAgICAgICAgIGdf
YXNzZXJ0KHdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3VyaV9zY2hlbWVfaXNfbm9fYWNjZXNzKG1f
bWFuYWdlciwgc2NoZW1lKSk7CisgICAgICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZWN1
cml0eV9tYW5hZ2VyX3VyaV9zY2hlbWVfaXNfbm9fYWNjZXNzKG1fbWFuYWdlciwgc2NoZW1lKSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2VjdXJpdHlfbWFu
YWdlcl91cmlfc2NoZW1lX2lzX25vX2FjY2VzcyhtX21hbmFnZXIsIHNjaGVtZSkpOworICAgICAg
ICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9p
c19ub19hY2Nlc3MobV9tYW5hZ2VyLCBzY2hlbWUpKTsKICAgICAgICAgaWYgKHBvbGljeSAmIERp
c3BsYXlJc29sYXRlZCkKLSAgICAgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9zZWN1cml0eV9tYW5h
Z2VyX3VyaV9zY2hlbWVfaXNfZGlzcGxheV9pc29sYXRlZChtX21hbmFnZXIsIHNjaGVtZSkpOwor
ICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlfc2No
ZW1lX2lzX2Rpc3BsYXlfaXNvbGF0ZWQobV9tYW5hZ2VyLCBzY2hlbWUpKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3VyaV9zY2hl
bWVfaXNfZGlzcGxheV9pc29sYXRlZChtX21hbmFnZXIsIHNjaGVtZSkpOworICAgICAgICAgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9pc19kaXNw
bGF5X2lzb2xhdGVkKG1fbWFuYWdlciwgc2NoZW1lKSk7CiAgICAgICAgIGlmIChwb2xpY3kgJiBT
ZWN1cmUpCi0gICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlf
c2NoZW1lX2lzX3NlY3VyZShtX21hbmFnZXIsIHNjaGVtZSkpOworICAgICAgICAgICAgZ19hc3Nl
cnRfdHJ1ZSh3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlfc2NoZW1lX2lzX3NlY3VyZShtX21h
bmFnZXIsIHNjaGVtZSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBnX2Fzc2VydCghd2Vi
a2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9pc19zZWN1cmUobV9tYW5hZ2VyLCBzY2hl
bWUpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZWN1cml0eV9tYW5hZ2Vy
X3VyaV9zY2hlbWVfaXNfc2VjdXJlKG1fbWFuYWdlciwgc2NoZW1lKSk7CiAgICAgICAgIGlmIChw
b2xpY3kgJiBDT1JTRW5hYmxlZCkKLSAgICAgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9zZWN1cml0
eV9tYW5hZ2VyX3VyaV9zY2hlbWVfaXNfY29yc19lbmFibGVkKG1fbWFuYWdlciwgc2NoZW1lKSk7
CisgICAgICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3VyaV9z
Y2hlbWVfaXNfY29yc19lbmFibGVkKG1fbWFuYWdlciwgc2NoZW1lKSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlfc2NoZW1l
X2lzX2NvcnNfZW5hYmxlZChtX21hbmFnZXIsIHNjaGVtZSkpOworICAgICAgICAgICAgZ19hc3Nl
cnRfZmFsc2Uod2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9pc19jb3JzX2VuYWJs
ZWQobV9tYW5hZ2VyLCBzY2hlbWUpKTsKICAgICAgICAgaWYgKHBvbGljeSAmIEVtcHR5RG9jdW1l
bnQpCi0gICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlfc2No
ZW1lX2lzX2VtcHR5X2RvY3VtZW50KG1fbWFuYWdlciwgc2NoZW1lKSk7CisgICAgICAgICAgICBn
X2Fzc2VydF90cnVlKHdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3VyaV9zY2hlbWVfaXNfZW1wdHlf
ZG9jdW1lbnQobV9tYW5hZ2VyLCBzY2hlbWUpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
Z19hc3NlcnQoIXdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3VyaV9zY2hlbWVfaXNfZW1wdHlfZG9j
dW1lbnQobV9tYW5hZ2VyLCBzY2hlbWUpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdl
YmtpdF9zZWN1cml0eV9tYW5hZ2VyX3VyaV9zY2hlbWVfaXNfZW1wdHlfZG9jdW1lbnQobV9tYW5h
Z2VyLCBzY2hlbWUpKTsKICAgICB9CiAKICAgICBXZWJLaXRTZWN1cml0eU1hbmFnZXIqIG1fbWFu
YWdlcjsKQEAgLTU4Miw4ICs1ODIsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFNlY3Vy
aXR5UG9saWN5KFNlY3VyaXR5UG9saWN5VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcgogCiBzdGF0
aWMgdm9pZCBjb25zb2xlTWVzc2FnZVJlY2VpdmVkQ2FsbGJhY2soV2ViS2l0VXNlckNvbnRlbnRN
YW5hZ2VyKiwgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogbWVzc2FnZSwgVmVjdG9yPFdlYktpdEph
dmFzY3JpcHRSZXN1bHQqPiogcmVzdWx0KQogewotICAgIGdfYXNzZXJ0KG1lc3NhZ2UpOwotICAg
IGdfYXNzZXJ0KHJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChtZXNzYWdlKTsKKyAgICBn
X2Fzc2VydF9ub25udWxsKHJlc3VsdCk7CiAgICAgcmVzdWx0LT5hcHBlbmQod2Via2l0X2phdmFz
Y3JpcHRfcmVzdWx0X3JlZihtZXNzYWdlKSk7CiB9CiAKQEAgLTYwMywxOCArNjAzLDE4IEBAIHN0
YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0U2VjdXJpdHlGaWxlWEhSKFdlYlZpZXdUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogICAgIC8vIEJ5IGRlZmF1bHQgZmlsZSBhY2Nlc3MgaXMgbm90IGFs
bG93ZWQsIHRoaXMgd2lsbCBzaG93IGEgY29uc29sZSBtZXNzYWdlIHdpdGggYSBjcm9zcy1vcmln
aW4gZXJyb3IuCiAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIFdlYktpdEph
dmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5k
V2FpdFVudGlsRmluaXNoZWQoeGhyLmdldCgpLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNz
ZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvcik7CisgICAgZ19hc3Nl
cnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJv
ci5nZXQoKSk7CiAgICAgZ19hc3NlcnRfY21wdWludChjb25zb2xlTWVzc2FnZXMuc2l6ZSgpLCA9
PSwgMik7CiAgICAgVmVjdG9yPEdVbmlxdWVQdHI8Y2hhcj4sIDI+IGV4cGVjdGVkTWVzc2FnZXM7
CiAgICAgZXhwZWN0ZWRNZXNzYWdlcy5hcHBlbmQoZ19zdHJkdXAoIkNyb3NzIG9yaWdpbiByZXF1
ZXN0cyBhcmUgb25seSBzdXBwb3J0ZWQgZm9yIEhUVFAuIikpOwogICAgIGV4cGVjdGVkTWVzc2Fn
ZXMuYXBwZW5kKGdfc3RyZHVwX3ByaW50ZigiWE1MSHR0cFJlcXVlc3QgY2Fubm90IGxvYWQgJXMg
ZHVlIHRvIGFjY2VzcyBjb250cm9sIGNoZWNrcy4iLCBqc29uVVJMLmdldCgpKSk7CiAgICAgdW5z
aWduZWQgaSA9IDA7CiAgICAgZm9yIChhdXRvKiBjb25zb2xlTWVzc2FnZSA6IGNvbnNvbGVNZXNz
YWdlcykgewotICAgICAgICBnX2Fzc2VydChjb25zb2xlTWVzc2FnZSk7CisgICAgICAgIGdfYXNz
ZXJ0X25vbm51bGwoY29uc29sZU1lc3NhZ2UpOwogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IG1l
c3NhZ2VTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoY29uc29s
ZU1lc3NhZ2UpKTsKICAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFu
dF9wYXJzZShHX1ZBUklBTlRfVFlQRSgiKHV1c3VzKSIpLCBtZXNzYWdlU3RyaW5nLmdldCgpLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgZ19hc3NlcnQodmFyaWFudC5nZXQo
KSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwodmFyaWFudC5nZXQoKSk7CiAgICAgICAgIHVu
c2lnbmVkIGxldmVsOwogICAgICAgICBjb25zdCBjaGFyKiBtZXNzYWdlVGV4dDsKICAgICAgICAg
Z192YXJpYW50X2dldCh2YXJpYW50LmdldCgpLCAiKHV1JnN1JnMpIiwgbnVsbHB0ciwgJmxldmVs
LCAmbWVzc2FnZVRleHQsIG51bGxwdHIsIG51bGxwdHIpOwpAQCAtNjI5LDIxICs2MjksMjEgQEAg
c3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRTZWN1cml0eUZpbGVYSFIoV2ViVmlld1Rlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bG9hZFVSSShmaWxlVVJMLmdldCgpKTsKICAg
ICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0g
dGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKHhoci5nZXQoKSwgJmVycm9y
Lm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2Vy
dCghZXJyb3IpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAg
Z19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwogCiAgICAgLy8gSXQgaXNuJ3Qgc3RpbGwg
cG9zc2libGUgdG8gbG9hZCBmaWxlIGZyb20gYW4gSFRUUCBVUkwuCiAgICAgdGVzdC0+bG9hZFVS
SShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvIikuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50
aWxMb2FkRmluaXNoZWQoKTsKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNj
cmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKHhoci5nZXQoKSwgJmVycm9yLm91dFB0cigpKTsKLSAg
ICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3IpOworICAg
IGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJy
b3IoZXJyb3IuZ2V0KCkpOwogICAgIGkgPSAwOwogICAgIGZvciAoYXV0byogY29uc29sZU1lc3Nh
Z2UgOiBjb25zb2xlTWVzc2FnZXMpIHsKLSAgICAgICAgZ19hc3NlcnQoY29uc29sZU1lc3NhZ2Up
OworICAgICAgICBnX2Fzc2VydF9ub25udWxsKGNvbnNvbGVNZXNzYWdlKTsKICAgICAgICAgR1Vu
aXF1ZVB0cjxjaGFyPiBtZXNzYWdlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0
VG9DU3RyaW5nKGNvbnNvbGVNZXNzYWdlKSk7CiAgICAgICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHZh
cmlhbnQgPSBnX3ZhcmlhbnRfcGFyc2UoR19WQVJJQU5UX1RZUEUoIih1dXN1cykiKSwgbWVzc2Fn
ZVN0cmluZy5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgIGdfYXNz
ZXJ0KHZhcmlhbnQuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKHZhcmlhbnQuZ2V0
KCkpOwogICAgICAgICB1bnNpZ25lZCBsZXZlbDsKICAgICAgICAgY29uc3QgY2hhciogbWVzc2Fn
ZVRleHQ7CiAgICAgICAgIGdfdmFyaWFudF9nZXQodmFyaWFudC5nZXQoKSwgIih1dSZzdSZzKSIs
IG51bGxwdHIsICZsZXZlbCwgJm1lc3NhZ2VUZXh0LCBudWxscHRyLCBudWxscHRyKTsKQEAgLTY4
NCwxMCArNjg0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLy8gYWN0dWFsbHkgYSBwcm94eSBzZXJ2
ZXIuIFdlJ3JlIHRlc3Rpbmcgd2hldGhlciB0aGUgcHJveHkgc2V0dGluZ3MKICAgICAgICAgLy8g
d29yaywgbm90IHdoZXRoZXIgd2UgY2FuIHdyaXRlIGEgc291cCBwcm94eSBzZXJ2ZXIuCiAgICAg
ICAgIG1fcHJveHlTZXJ2ZXIucnVuKHNlcnZlckNhbGxiYWNrKTsKLSAgICAgICAgZ19hc3NlcnQo
bV9wcm94eVNlcnZlci5iYXNlVVJJKCkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKG1fcHJv
eHlTZXJ2ZXIuYmFzZVVSSSgpKTsKICNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjEsIDkwKQog
ICAgICAgICBtX3Byb3h5U2VydmVyLmFkZFdlYlNvY2tldEhhbmRsZXIod2ViU29ja2V0UHJveHlT
ZXJ2ZXJDYWxsYmFjaywgdGhpcyk7Ci0gICAgICAgIGdfYXNzZXJ0KG1fcHJveHlTZXJ2ZXIuYmFz
ZVdlYlNvY2tldFVSSSgpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChtX3Byb3h5U2VydmVy
LmJhc2VXZWJTb2NrZXRVUkkoKSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTc1Niw3ICs3NTYsNyBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFByb3h5U2V0dGluZ3MoUHJveHlUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogICAgIC8vIFdlYlNvY2tldCByZXF1ZXN0cyBzaG91bGQgYWxzbyBi
ZSByZWNlaXZlZCBieSBrU2VydmVyLgogICAgIGtTZXJ2ZXItPmFkZFdlYlNvY2tldEhhbmRsZXIo
d2ViU29ja2V0U2VydmVyQ2FsbGJhY2ssIHRlc3QpOwogICAgIGF1dG8gc2VydmVyVHlwZSA9IHRl
c3QtPmNyZWF0ZVdlYlNvY2tldEFuZFdhaXRVbnRpbENvbm5lY3RlZCgpOwotICAgIGdfYXNzZXJ0
KHNlcnZlclR5cGUgPT0gUHJveHlUZXN0OjpXZWJTb2NrZXRTZXJ2ZXJUeXBlOjpOb1Byb3h5KTsK
KyAgICBnX2Fzc2VydF90cnVlKHNlcnZlclR5cGUgPT0gUHJveHlUZXN0OjpXZWJTb2NrZXRTZXJ2
ZXJUeXBlOjpOb1Byb3h5KTsKICNlbmRpZgogCiAgICAgLy8gU2V0IGRlZmF1bHQgcHJveHkgVVJJ
IHRvIHBvaW50IHRvIHByb3h5U2VydmVyLiBSZXF1ZXN0cyB0byBrU2VydmVyIHNob3VsZCBiZSBy
ZWNlaXZlZCBieSBwcm94eVNlcnZlciBpbnN0ZWFkLgpAQCAtNzcxLDcgKzc3MSw3IEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJDb250ZXh0UHJveHlTZXR0aW5ncyhQcm94eVRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIsIDYxLCA5MCkKICAgICAvLyBXZWJT
b2NrZXQgcmVxdWVzdHMgc2hvdWxkIGFsc28gYmUgcmVjZWl2ZWQgYnkgcHJveHlTZXJ2ZXIuCiAg
ICAgc2VydmVyVHlwZSA9IHRlc3QtPmNyZWF0ZVdlYlNvY2tldEFuZFdhaXRVbnRpbENvbm5lY3Rl
ZCgpOwotICAgIGdfYXNzZXJ0KHNlcnZlclR5cGUgPT0gUHJveHlUZXN0OjpXZWJTb2NrZXRTZXJ2
ZXJUeXBlOjpQcm94eSk7CisgICAgZ19hc3NlcnRfdHJ1ZShzZXJ2ZXJUeXBlID09IFByb3h5VGVz
dDo6V2ViU29ja2V0U2VydmVyVHlwZTo6UHJveHkpOwogI2VuZGlmCiAKICAgICAvLyBQcm94eSBz
ZXR0aW5ncyBhbHNvIGFmZmVjdCBlcGhlbWVyYWwgd2ViIHZpZXdzLgpAQCAtNzgyLDE4ICs3ODIs
MTggQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRQcm94eVNldHRpbmdzKFByb3h5VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAgICAgIndlYi1jb250ZXh0IiwgdGVzdC0+bV93ZWJD
b250ZXh0LmdldCgpLAogICAgICAgICAiaXMtZXBoZW1lcmFsIiwgVFJVRSwKICAgICAgICAgbnVs
bHB0cikpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwod2ViVmll
dy5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFs
KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJWaWV3LmdldCgpKSkpOworICAgIGdfYXNz
ZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh3ZWJWaWV3LmdldCgpKSk7Cisg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbCh3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldy5nZXQoKSkpKTsKIAogICAgIGdfc2lnbmFsX2Nv
bm5lY3Qod2ViVmlldy5nZXQoKSwgImxvYWQtY2hhbmdlZCIsIEdfQ0FMTEJBQ0soZXBoZW1lcmFs
Vmlld2xvYWRDaGFuZ2VkKSwgdGVzdCk7CiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKHdl
YlZpZXcuZ2V0KCksIGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9lY2hvUG9ydCIpLmRhdGEoKSk7
CiAgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOwogICAgIFdlYktpdFdlYlJl
c291cmNlKiByZXNvdXJjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9yZXNvdXJjZSh3ZWJW
aWV3LmdldCgpKTsKLSAgICBnX2Fzc2VydChXRUJLSVRfSVNfV0VCX1JFU09VUkNFKHJlc291cmNl
KSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfV0VCX1JFU09VUkNFKHJlc291cmNlKSk7
CiAgICAgd2Via2l0X3dlYl9yZXNvdXJjZV9nZXRfZGF0YShyZXNvdXJjZSwgbnVsbHB0ciwgW10o
R09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEp
IHsKICAgICAgICAgc2l6ZV90IGRhdGFTaXplOwogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGRh
dGEocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4od2Via2l0X3dlYl9yZXNvdXJjZV9nZXRfZGF0YV9m
aW5pc2goV0VCS0lUX1dFQl9SRVNPVVJDRShvYmplY3QpLCByZXN1bHQsICZkYXRhU2l6ZSwgbnVs
bHB0cikpKTsKLSAgICAgICAgZ19hc3NlcnQoZGF0YSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51
bGwoZGF0YSk7CiAgICAgICAgIGF1dG8qIHRlc3QgPSBzdGF0aWNfY2FzdDxQcm94eVRlc3QqPih1
c2VyRGF0YSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gcHJveHlTZXJ2ZXJQb3J0QXNTdHJp
bmcgPSB0ZXN0LT5wcm94eVNlcnZlclBvcnRBc1N0cmluZygpOwogICAgICAgICBBU1NFUlRfQ01Q
X0NTVFJJTkcoQ1N0cmluZyhkYXRhLmdldCgpLCBkYXRhU2l6ZSksID09LCBwcm94eVNlcnZlclBv
cnRBc1N0cmluZy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCBkNzU3MzQxYjBmYmEz
NGYyNzJmMjY4ZDhkMzMzOTZjNzdmZTg3MDA1Li5lZTAwYWRiNGZhNmI3MDUyMGQ4Njc0ZDRhZGFj
MDVhOGQ0MTYwZDM4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTQ1LDggKzQ1LDggQEAgc3Rh
dGljIFdlYktpdFRlc3RTZXJ2ZXIqIGdTZXJ2ZXI7CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
V2ViQ29udGV4dChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBnX2Fz
c2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQodGVzdC0+bV93ZWJWaWV3KSA9PSB0ZXN0
LT5tX3dlYkNvbnRleHQuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfY29udGV4dF9n
ZXRfZGVmYXVsdCgpICE9IHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSk7CisgICAgZ19hc3NlcnRf
Y21waGV4KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwg
dGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKTsKKyAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X3dl
Yl9jb250ZXh0X2dldF9kZWZhdWx0KCksICE9LCB0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkpOwog
CiAgICAgLy8gQ2hlY2sgdGhhdCBhIHdlYiB2aWV3IGNyZWF0ZWQgd2l0aCBnX29iamVjdF9uZXcg
aGFzIHRoZSBkZWZhdWx0IGNvbnRleHQuCiAgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRW
aWV3KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywKQEAgLTU0LDExICs1NCwxMSBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1dlYkNvbnRleHQoV2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAgICAgICAgICJiYWNrZW5kIiwgVGVzdDo6Y3JlYXRlV2ViVmlld0JhY2tl
bmQoKSwKICNlbmRpZgogICAgICAgICBudWxscHRyKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dl
Yl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcuZ2V0KCkpID09IHdlYmtpdF93ZWJfY29udGV4dF9n
ZXRfZGVmYXVsdCgpKTsKKyAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X3dlYl92aWV3X2dldF9j
b250ZXh0KHdlYlZpZXcuZ2V0KCkpLCA9PSwgd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0
KCkpOwogCiAgICAgLy8gQ2hlY2sgdGhhdCBhIHdlYiB2aWV3IGNyZWF0ZWQgd2l0aCBhIHJlbGF0
ZWQgdmlldyBoYXMgdGhlIHJlbGF0ZWQgdmlldyBjb250ZXh0LgogICAgIHdlYlZpZXcgPSBUZXN0
OjphZG9wdFZpZXcoVGVzdDo6Y3JlYXRlV2ViVmlldyh0ZXN0LT5tX3dlYlZpZXcpKTsKLSAgICBn
X2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldy5nZXQoKSkgPT0gdGVz
dC0+bV93ZWJDb250ZXh0LmdldCgpKTsKKyAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X3dlYl92
aWV3X2dldF9jb250ZXh0KHdlYlZpZXcuZ2V0KCkpLCA9PSwgdGVzdC0+bV93ZWJDb250ZXh0Lmdl
dCgpKTsKIAogICAgIC8vIENoZWNrIHRoYXQgYSB3ZWIgY29udGV4dCBnaXZlbiBhcyBjb25zdHJ1
Y3QgcGFyYW1ldGVyIGlzIGlnbm9yZWQgaWYgYSByZWxhdGVkIHZpZXcgaXMgYWxzbyBwcm92aWRl
ZC4KICAgICB3ZWJWaWV3ID0gVGVzdDo6YWRvcHRWaWV3KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9XRUJfVklFVywKQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdXZWJD
b250ZXh0KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAgICAid2ViLWNv
bnRleHQiLCB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSwKICAgICAgICAgInJlbGF0
ZWQtdmlldyIsIHRlc3QtPm1fd2ViVmlldywKICAgICAgICAgbnVsbHB0cikpOwotICAgIGdfYXNz
ZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJWaWV3LmdldCgpKSA9PSB0ZXN0LT5t
X3dlYkNvbnRleHQuZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2NvbnRleHQod2ViVmlldy5nZXQoKSksID09LCB0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkp
OwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1dlYkNvbnRleHRMaWZldGltZShXZWJWaWV3
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTE0MCw5ICsxNDAsOSBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld1dlYkJhY2tlbmQoVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBH
UmVmUHRyPFdlYktpdFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdEdSZWYod2Via2l0X3dlYl92aWV3
X25ldyh3ZWJraXRfd2ViX3ZpZXdfYmFja2VuZF9uZXcod3BlX3ZpZXdfYmFja2VuZF9jcmVhdGVf
d2l0aF9iYWNrZW5kX2ludGVyZmFjZSgmc190ZXN0aW5nSW50ZXJmYWNlLCBudWxscHRyKSwgbnVs
bHB0ciwgbnVsbHB0cikpKTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKHdlYlZpZXcuZ2V0KCkpKTsKICAgICBhdXRvKiB2aWV3QmFja2Vu
ZCA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja2VuZCh3ZWJWaWV3LmdldCgpKTsKLSAgICBnX2Fz
c2VydCh2aWV3QmFja2VuZCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbCh2aWV3QmFja2VuZCk7CiAg
ICAgYXV0byogd3BlQmFja2VuZCA9IHdlYmtpdF93ZWJfdmlld19iYWNrZW5kX2dldF93cGVfYmFj
a2VuZCh2aWV3QmFja2VuZCk7Ci0gICAgZ19hc3NlcnQod3BlQmFja2VuZCk7CisgICAgZ19hc3Nl
cnRfbm9ubnVsbCh3cGVCYWNrZW5kKTsKICAgICB3ZWJWaWV3ID0gbnVsbHB0cjsKIAogICAgIC8v
IFVzZXIgcHJvdmlkZWQgYmFja2VuZCB3aXRoIGRlc3Ryb3kgbm90aWZ5LgpAQCAtMTU0LDcgKzE1
NCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3V2ViQmFja2VuZChUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogICAgIH0sICZ3cGVCYWNrZW5kKSkpOwogICAgIHRlc3QtPmFzc2VydE9iamVj
dElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2ViVmlldy5nZXQoKSkpOwogICAg
IHdlYlZpZXcgPSBudWxscHRyOwotICAgIGdfYXNzZXJ0KCF3cGVCYWNrZW5kKTsKKyAgICBnX2Fz
c2VydF9udWxsKHdwZUJhY2tlbmQpOwogCiAgICAgLy8gVXNlciBwcm92aWRlZCBiYWNrZW5kIG93
bmVkIGJ5IGFub3RoZXIgb2JqZWN0IHdpdGggZGVzdHJveSBub3RpZnkuCiAgICAgc3RhdGljIGJv
b2wgaGFzSW5zdGFuY2UgPSBmYWxzZTsKQEAgLTE3NCwxNCArMTc0LDE0IEBAIHN0YXRpYyB2b2lk
IHRlc3RXZWJWaWV3V2ViQmFja2VuZChUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAg
ICBzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZCogYmFja2VuZDsKICAgICB9OwogICAgIGF1dG8qIG93
bmVyID0gbmV3IEJhY2tlbmRPd25lcih3cGVfdmlld19iYWNrZW5kX2NyZWF0ZV93aXRoX2JhY2tl
bmRfaW50ZXJmYWNlKCZzX3Rlc3RpbmdJbnRlcmZhY2UsIG51bGxwdHIpKTsKLSAgICBnX2Fzc2Vy
dChoYXNJbnN0YW5jZSk7CisgICAgZ19hc3NlcnRfdHJ1ZShoYXNJbnN0YW5jZSk7CiAgICAgd2Vi
VmlldyA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX3ZpZXdfbmV3KHdlYmtpdF93ZWJfdmlld19iYWNr
ZW5kX25ldyhvd25lci0+YmFja2VuZCwgW10oZ3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAg
ZGVsZXRlIHN0YXRpY19jYXN0PEJhY2tlbmRPd25lcio+KHVzZXJEYXRhKTsKICAgICB9LCBvd25l
cikpKTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdf
T0JKRUNUKHdlYlZpZXcuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydChoYXNJbnN0YW5jZSk7CisgICAg
Z19hc3NlcnRfdHJ1ZShoYXNJbnN0YW5jZSk7CiAgICAgd2ViVmlldyA9IG51bGxwdHI7Ci0gICAg
Z19hc3NlcnQoIWhhc0luc3RhbmNlKTsKKyAgICBnX2Fzc2VydF9mYWxzZShoYXNJbnN0YW5jZSk7
CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oV1BFKQogCkBAIC0xOTUsMTEgKzE5NSwxMSBAQCBzdGF0
aWMgdm9pZCBlcGhlbWVyYWxWaWV3bG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
V2ViS2l0TG9hZEV2ZW50IGxvYQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VwaGVtZXJhbChX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBnX2Fzc2VydCghd2Via2l0
X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh0ZXN0LT5tX3dlYlZpZXcpKTsKLSAgICBnX2Fzc2VydCgh
d2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRl
eHQodGVzdC0+bV93ZWJWaWV3KSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmll
d19pc19lcGhlbWVyYWwodGVzdC0+bV93ZWJWaWV3KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQo
dGVzdC0+bV93ZWJWaWV3KSkpOwogICAgIGF1dG8qIG1hbmFnZXIgPSB3ZWJraXRfd2ViX2NvbnRl
eHRfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSk7Ci0g
ICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhlbWVyYWwobWFu
YWdlcikpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXIodGVzdC0+bV93ZWJWaWV3KSA9PSBtYW5hZ2VyKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKG1hbmFnZXIpKTsKKyAgICBn
X2Fzc2VydF9jbXBoZXgod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih0
ZXN0LT5tX3dlYlZpZXcpLCA9PSwgbWFuYWdlcik7CiAgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2NsZWFyKG1hbmFnZXIsIFdFQktJVF9XRUJTSVRFX0RBVEFfRElTS19DQUNIRSwgMCwg
bnVsbHB0ciwgW10oR09iamVjdCogbWFuYWdlciwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2lu
dGVyIHVzZXJEYXRhKSB7CiAgICAgICAgIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGVh
cl9maW5pc2goV0VCS0lUX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpLCByZXN1bHQsIG51
bGxwdHIpOwogICAgICAgICBzdGF0aWNfY2FzdDxXZWJWaWV3VGVzdCo+KHVzZXJEYXRhKS0+cXVp
dE1haW5Mb29wKCk7CkBAIC0yMTQsOSArMjE0LDkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdF
cGhlbWVyYWwoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgICAgICJ3ZWIt
Y29udGV4dCIsIHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh0ZXN0LT5tX3dlYlZpZXcpLAog
ICAgICAgICAiaXMtZXBoZW1lcmFsIiwgVFJVRSwKICAgICAgICAgbnVsbHB0cikpOwotICAgIGdf
YXNzZXJ0KHdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwod2ViVmlldy5nZXQoKSkpOwotICAg
IGdfYXNzZXJ0KCF3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFsKHdlYmtpdF93ZWJfdmll
d19nZXRfY29udGV4dCh3ZWJWaWV3LmdldCgpKSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJf
dmlld19nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIod2ViVmlldy5nZXQoKSkgIT0gbWFuYWdlcik7
CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKHdlYlZpZXcu
Z2V0KCkpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1l
cmFsKHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJWaWV3LmdldCgpKSkpOworICAgIGdf
YXNzZXJ0X2NtcGhleCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdl
YlZpZXcuZ2V0KCkpLCAhPSwgbWFuYWdlcik7CiAKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZp
ZXcuZ2V0KCksICJsb2FkLWNoYW5nZWQiLCBHX0NBTExCQUNLKGVwaGVtZXJhbFZpZXdsb2FkQ2hh
bmdlZCksIHRlc3QpOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaSh3ZWJWaWV3LmdldCgp
LCBnU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvIikuZGF0YSgpKTsKQEAgLTIyOSw3ICsyMjksNyBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VwaGVtZXJhbChXZWJWaWV3VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKIAogICAgIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9mZXRjaChtYW5h
Z2VyLCBXRUJLSVRfV0VCU0lURV9EQVRBX0RJU0tfQ0FDSEUsIG51bGxwdHIsIFtdKEdPYmplY3Qq
IG1hbmFnZXIsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkgewogICAg
ICAgICBhdXRvKiB0ZXN0ID0gc3RhdGljX2Nhc3Q8V2ViVmlld1Rlc3QqPih1c2VyRGF0YSk7Ci0g
ICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2hfZmluaXNo
KFdFQktJVF9XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSwgcmVzdWx0LCBudWxscHRyKSk7
CisgICAgICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNo
X2ZpbmlzaChXRUJLSVRfV0VCU0lURV9EQVRBX01BTkFHRVIobWFuYWdlciksIHJlc3VsdCwgbnVs
bHB0cikpOwogICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKICAgICB9LCB0ZXN0KTsKICAg
ICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CkBAIC0yMzksNyArMjM5LDcgQEAg
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDdXN0b21DaGFyc2V0KFdlYlZpZXdUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogewogICAgIHRlc3QtPmxvYWRVUkkoZ1NlcnZlci0+Z2V0VVJJRm9yUGF0
aCgiLyIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAg
Z19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19nZXRfY3VzdG9tX2NoYXJzZXQodGVzdC0+bV93ZWJW
aWV3KSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2N1c3RvbV9jaGFy
c2V0KHRlc3QtPm1fd2ViVmlldykpOwogICAgIHdlYmtpdF93ZWJfdmlld19zZXRfY3VzdG9tX2No
YXJzZXQodGVzdC0+bV93ZWJWaWV3LCAidXRmOCIpOwogICAgIC8vIENoYW5naW5nIHRoZSBjaGFy
c2V0IHJlbG9hZHMgdGhlIHBhZ2UsIHNvIHdhaXQgdW50aWwgcmVsb2FkZWQuCiAgICAgdGVzdC0+
d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CkBAIC0yNDgsMTUgKzI0OCwxNSBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld0N1c3RvbUNoYXJzZXQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiAgICAgLy8gR28gYmFjayB0byB0aGUgZGVmYXVsdCBjaGFyc2V0IGFuZCB3YWl0IHVudGls
IHJlbG9hZGVkLgogICAgIHdlYmtpdF93ZWJfdmlld19zZXRfY3VzdG9tX2NoYXJzZXQodGVzdC0+
bV93ZWJWaWV3LCBudWxscHRyKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsK
LSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2dldF9jdXN0b21fY2hhcnNldCh0ZXN0LT5t
X3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJfdmlld19nZXRfY3VzdG9t
X2NoYXJzZXQodGVzdC0+bV93ZWJWaWV3KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
U2V0dGluZ3MoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgV2ViS2l0
U2V0dGluZ3MqIGRlZmF1bHRTZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mo
dGVzdC0+bV93ZWJWaWV3KTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKGRlZmF1bHRTZXR0aW5ncykpOwotICAgIGdfYXNzZXJ0KGRlZmF1
bHRTZXR0aW5ncyk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2
YXNjcmlwdChkZWZhdWx0U2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRlZmF1bHRT
ZXR0aW5ncyk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9q
YXZhc2NyaXB0KGRlZmF1bHRTZXR0aW5ncykpOwogCiAgICAgR1JlZlB0cjxXZWJLaXRTZXR0aW5n
cz4gbmV3U2V0dGluZ3MgPSBhZG9wdEdSZWYod2Via2l0X3NldHRpbmdzX25ldygpKTsKICAgICB0
ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG5ld1Nl
dHRpbmdzLmdldCgpKSk7CkBAIC0yNjQsMjQgKzI2NCwyNCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vi
Vmlld1NldHRpbmdzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHdlYmtp
dF93ZWJfdmlld19zZXRfc2V0dGluZ3ModGVzdC0+bV93ZWJWaWV3LCBuZXdTZXR0aW5ncy5nZXQo
KSk7CiAKICAgICBXZWJLaXRTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X3NldHRpbmdzKHRlc3QtPm1fd2ViVmlldyk7Ci0gICAgZ19hc3NlcnQoc2V0dGluZ3MgIT0gZGVm
YXVsdFNldHRpbmdzKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
amF2YXNjcmlwdChzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2NtcGhleChzZXR0aW5ncywgIT0s
IGRlZmF1bHRTZXR0aW5ncyk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dl
dF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncykpOwogCiAgICAgYXV0byB3ZWJWaWV3MiA9IFRl
c3Q6OmFkb3B0VmlldyhUZXN0OjpjcmVhdGVXZWJWaWV3KCkpOwogICAgIHRlc3QtPmFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2ViVmlldzIuZ2V0KCkpKTsK
ICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKFdFQktJVF9XRUJfVklFVyh3ZWJWaWV3
Mi5nZXQoKSksIHNldHRpbmdzKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nl
dHRpbmdzKFdFQktJVF9XRUJfVklFVyh3ZWJWaWV3Mi5nZXQoKSkpID09IHNldHRpbmdzKTsKKyAg
ICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhXRUJLSVRfV0VC
X1ZJRVcod2ViVmlldzIuZ2V0KCkpKSwgPT0sIHNldHRpbmdzKTsKIAogICAgIEdSZWZQdHI8V2Vi
S2l0U2V0dGluZ3M+IG5ld1NldHRpbmdzMiA9IGFkb3B0R1JlZih3ZWJraXRfc2V0dGluZ3NfbmV3
KCkpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19P
QkpFQ1QobmV3U2V0dGluZ3MyLmdldCgpKSk7CiAgICAgd2Via2l0X3dlYl92aWV3X3NldF9zZXR0
aW5ncyhXRUJLSVRfV0VCX1ZJRVcod2ViVmlldzIuZ2V0KCkpLCBuZXdTZXR0aW5nczIuZ2V0KCkp
OwogICAgIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhXRUJLSVRfV0VC
X1ZJRVcod2ViVmlldzIuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydChzZXR0aW5ncyA9PSBuZXdTZXR0
aW5nczIuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ph
dmFzY3JpcHQoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9jbXBoZXgoc2V0dGluZ3MsID09LCBu
ZXdTZXR0aW5nczIuZ2V0KCkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dl
dF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncykpOwogCiAgICAgYXV0byB3ZWJWaWV3MyA9IFRl
c3Q6OmFkb3B0VmlldyhUZXN0OjpjcmVhdGVXZWJWaWV3KG5ld1NldHRpbmdzMi5nZXQoKSkpOwog
ICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qo
d2ViVmlldzMuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRp
bmdzKFdFQktJVF9XRUJfVklFVyh3ZWJWaWV3My5nZXQoKSkpID09IG5ld1NldHRpbmdzMi5nZXQo
KSk7CisgICAgZ19hc3NlcnRfY21waGV4KHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MoV0VC
S0lUX1dFQl9WSUVXKHdlYlZpZXczLmdldCgpKSksID09LCBuZXdTZXR0aW5nczIuZ2V0KCkpOwog
fQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1pvb21MZXZlbChXZWJWaWV3VGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKQEAgLTMwMyw5OCArMzAzLDk4IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3UnVuSmF2YVNjcmlwdChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAg
IEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0
KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlz
aGVkKCJ3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1dlYktpdExpbmsnKS50aXRsZTsi
LCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAg
IGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgdGVzdC0+YXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9y
ZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7Ci0gICAgZ19hc3NlcnQoIWVy
cm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAgICAgR1Vu
aXF1ZVB0cjxjaGFyPiB2YWx1ZVN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRv
Q1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3Ry
aW5nLmdldCgpLCA9PSwgIldlYktpdEdUSysgVGl0bGUiKTsKIAogICAgIGphdmFzY3JpcHRSZXN1
bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIndpbmRvdy5kb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnV2ViS2l0TGluaycpLmhyZWY7IiwgJmVycm9yLm91dFB0cigp
KTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxs
KGphdmFzY3JpcHRSZXN1bHQpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5U
ZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1
ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CisgICAg
Z19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwogICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdl
YlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsK
ICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiaHR0cDovL3d3dy53
ZWJraXRndGsub3JnLyIpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFT
Y3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdXZWJLaXRMaW5rJykudGV4dENvbnRlbnQiLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNz
ZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJl
c3VsdCk7CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhH
X09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRS
ZXN1bHQpKSk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub19l
cnJvcihlcnJvci5nZXQoKSk7CiAgICAgdmFsdWVTdHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6Omph
dmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0
X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJXZWJLaXRHVEsrIFdlYnNpdGUiKTsKIAog
ICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmlu
aXNoZWQoImEgPSAyNTsiLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3Jp
cHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAg
dGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJr
aXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7Ci0g
ICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5n
ZXQoKSk7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1
bHRUb051bWJlcihqYXZhc2NyaXB0UmVzdWx0KSwgPT0sIDI1KTsKIAogICAgIGphdmFzY3JpcHRS
ZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImEgPSAyLjU7
IiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAg
ICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOwogICAgIHRlc3QtPmFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRf
cmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwotICAgIGdfYXNzZXJ0KCFl
cnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwogICAgIGdf
YXNzZXJ0X2NtcGZsb2F0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIoamF2
YXNjcmlwdFJlc3VsdCksID09LCAyLjUpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3Qt
PnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiYSA9IHRydWUiLCAmZXJyb3Iub3V0
UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25v
bm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVk
V2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pz
X3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsK
LSAgICBnX2Fzc2VydChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihqYXZh
c2NyaXB0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAg
IGdfYXNzZXJ0X3RydWUoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0Jvb2xlYW4oamF2
YXNjcmlwdFJlc3VsdCkpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFT
Y3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiYSA9IGZhbHNlIiwgJmVycm9yLm91dFB0cigpKTsK
LSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGph
dmFzY3JpcHRSZXN1bHQpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0
RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShq
YXZhc2NyaXB0UmVzdWx0KSkpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7Ci0gICAgZ19h
c3NlcnQoIVdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9Cb29sZWFuKGphdmFzY3JpcHRS
ZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgZ19hc3Nl
cnRfZmFsc2UoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0Jvb2xlYW4oamF2YXNjcmlw
dFJlc3VsdCkpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRB
bmRXYWl0VW50aWxGaW5pc2hlZCgiYSA9IG51bGwiLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdf
YXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlw
dFJlc3VsdCk7CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hl
cyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3Jp
cHRSZXN1bHQpKSk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKLSAgICBnX2Fzc2VydChX
ZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdElzTnVsbChqYXZhc2NyaXB0UmVzdWx0KSk7Cisg
ICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X3RydWUoV2Vi
Vmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRJc051bGwoamF2YXNjcmlwdFJlc3VsdCkpOwogCiAg
ICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5p
c2hlZCgiZnVuY3Rpb24gRm9vKCkgeyBhID0gMjU7IH0gRm9vKCk7IiwgJmVycm9yLm91dFB0cigp
KTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxs
KGphdmFzY3JpcHRSZXN1bHQpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5U
ZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1
ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7Ci0gICAg
Z19hc3NlcnQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRJc1VuZGVmaW5lZChqYXZhc2Ny
aXB0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgIGdf
YXNzZXJ0X3RydWUoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRJc1VuZGVmaW5lZChqYXZh
c2NyaXB0UmVzdWx0KSk7CiAKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNj
cmlwdEZyb21HUmVzb3VyY2VBbmRXYWl0VW50aWxGaW5pc2hlZCgiL29yZy93ZWJraXQvZ2xpYi90
ZXN0cy9saW5rLXRpdGxlLmpzIiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZh
c2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOwog
ICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qo
d2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSkp
OwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJy
b3IuZ2V0KCkpOwogICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0
UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIo
dmFsdWVTdHJpbmcuZ2V0KCksID09LCAiV2ViS2l0R1RLKyBUaXRsZSIpOwogCiAgICAgamF2YXNj
cmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRGcm9tR1Jlc291cmNlQW5kV2FpdFVudGls
RmluaXNoZWQoIi93cm9uZy9wYXRoL3RvL3Jlc291cmNlLmpzIiwgJmVycm9yLm91dFB0cigpKTsK
LSAgICBnX2Fzc2VydCghamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbnVsbChqYXZh
c2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgR19SRVNPVVJD
RV9FUlJPUiwgR19SRVNPVVJDRV9FUlJPUl9OT1RfRk9VTkQpOwogCiAgICAgamF2YXNjcmlwdFJl
c3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZm9vKCk7Iiwg
JmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydCghamF2YXNjcmlwdFJlc3VsdCk7CisgICAg
Z19hc3NlcnRfbnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydF9lcnJvcihlcnJv
ci5nZXQoKSwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1IsIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9S
X1NDUklQVF9GQUlMRUQpOwogCiAgICAgLy8gVmFsdWVzIG9mIHRoZSBtYWluIHdvcmxkIGFyZSBu
b3QgYXZhaWxhYmxlIGluIHRoZSBpc29sYXRlZCBvbmUuCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9
IHRlc3QtPnJ1bkphdmFTY3JpcHRJbldvcmxkQW5kV2FpdFVudGlsRmluaXNoZWQoImEiLCAiV2Vi
RXh0ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2Vy
dCghamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbnVsbChqYXZhc2NyaXB0UmVzdWx0
KTsKICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJS
T1IsIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SX1NDUklQVF9GQUlMRUQpOwogCiAgICAgamF2YXNj
cmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRJbldvcmxkQW5kV2FpdFVudGlsRmluaXNo
ZWQoImEgPSA1MCIsICJXZWJFeHRlbnNpb25UZXN0U2NyaXB0V29ybGQiLCAmZXJyb3Iub3V0UHRy
KCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vbm51
bGwoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hl
blRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3Zh
bHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAg
ICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQo
V2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihqYXZhc2NyaXB0UmVzdWx0KSwg
PT0sIDUwKTsKIAogICAgIC8vIFZhbHVlcyBvZiB0aGUgaXNvbGF0ZWQgd29ybGQgYXJlIG5vdCBh
dmFpbGFibGUgaW4gdGhlIG5vcm1hbCBvbmUuCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3Qt
PnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiYSIsICZlcnJvci5vdXRQdHIoKSk7
Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChq
YXZhc2NyaXB0UmVzdWx0KTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUo
amF2YXNjcmlwdFJlc3VsdCkpKTsKLSAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOworICAgIGdf
YXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKICAgICBnX2Fzc2VydF9jbXBmbG9hdChXZWJW
aWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvTnVtYmVyKGphdmFzY3JpcHRSZXN1bHQpLCA9PSwg
MjUpOwogCiAgICAgLy8gUnVubmluZyBhIHNjcmlwdCBpbiBhIHdvcmxkIHRoYXQgZG9lc24ndCBl
eGlzdCBzaG91bGQgZmFpbC4KICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNj
cmlwdEluV29ybGRBbmRXYWl0VW50aWxGaW5pc2hlZCgiYSIsICJJbnZhbGlkU2NyaXB0V29ybGQi
LCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KCFqYXZhc2NyaXB0UmVzdWx0KTsKKyAg
ICBnX2Fzc2VydF9udWxsKGphdmFzY3JpcHRSZXN1bHQpOwogICAgIGdfYXNzZXJ0X2Vycm9yKGVy
cm9yLmdldCgpLCBXRUJLSVRfSkFWQVNDUklQVF9FUlJPUiwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJS
T1JfU0NSSVBUX0ZBSUxFRCk7CiB9CiAKQEAgLTQ3OSwyMSArNDc5LDIxIEBAIHN0YXRpYyB2b2lk
IHRlc3RXZWJWaWV3RnVsbFNjcmVlbihGdWxsU2NyZWVuQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Q2FuU2hvd01JTUVUeXBlKFdlYlZpZXdU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIC8vIFN1cHBvcnRlZCBNSU1FIHR5cGVz
LgotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUodGVzdC0+
bV93ZWJWaWV3LCAidGV4dC9odG1sIikpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19j
YW5fc2hvd19taW1lX3R5cGUodGVzdC0+bV93ZWJWaWV3LCAidGV4dC9wbGFpbiIpKTsKLSAgICBn
X2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlKHRlc3QtPm1fd2ViVmll
dywgImltYWdlL2pwZWciKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfY2Fu
X3Nob3dfbWltZV90eXBlKHRlc3QtPm1fd2ViVmlldywgInRleHQvaHRtbCIpKTsKKyAgICBnX2Fz
c2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUodGVzdC0+bV93ZWJW
aWV3LCAidGV4dC9wbGFpbiIpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19j
YW5fc2hvd19taW1lX3R5cGUodGVzdC0+bV93ZWJWaWV3LCAiaW1hZ2UvanBlZyIpKTsKIAogICAg
IC8vIFVuc3VwcG9ydGVkIE1JTUUgdHlwZXMuCi0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmll
d19jYW5fc2hvd19taW1lX3R5cGUodGVzdC0+bV93ZWJWaWV3LCAidGV4dC92Y2FyZCIpKTsKLSAg
ICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZSh0ZXN0LT5tX3dl
YlZpZXcsICJhcHBsaWNhdGlvbi96aXAiKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmll
d19jYW5fc2hvd19taW1lX3R5cGUodGVzdC0+bV93ZWJWaWV3LCAiYXBwbGljYXRpb24vb2N0ZXQt
c3RyZWFtIikpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19t
aW1lX3R5cGUodGVzdC0+bV93ZWJWaWV3LCAidGV4dC92Y2FyZCIpKTsKKyAgICBnX2Fzc2VydF9m
YWxzZSh3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlKHRlc3QtPm1fd2ViVmlldywg
ImFwcGxpY2F0aW9uL3ppcCIpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdf
Y2FuX3Nob3dfbWltZV90eXBlKHRlc3QtPm1fd2ViVmlldywgImFwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbSIpKTsKIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgIC8vIFBsdWdp
bnMgYXJlIG9ubHkgc3VwcG9ydGVkIHdoZW4gZW5hYmxlZC4KICAgICB3ZWJraXRfd2ViX2NvbnRl
eHRfc2V0X2FkZGl0aW9uYWxfcGx1Z2luc19kaXJlY3Rvcnkod2Via2l0X3dlYl92aWV3X2dldF9j
b250ZXh0KHRlc3QtPm1fd2ViVmlldyksIFdFQktJVF9URVNUX1BMVUdJTl9ESVIpOwotICAgIGdf
YXNzZXJ0KHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUodGVzdC0+bV93ZWJWaWV3
LCAiYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSIpKTsKKyAgICBnX2Fzc2VydF90
cnVlKHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUodGVzdC0+bV93ZWJWaWV3LCAi
YXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSIpKTsKICAgICB3ZWJraXRfc2V0dGlu
Z3Nfc2V0X2VuYWJsZV9wbHVnaW5zKHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3ModGVzdC0+
bV93ZWJWaWV3KSwgRkFMU0UpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfY2FuX3No
b3dfbWltZV90eXBlKHRlc3QtPm1fd2ViVmlldywgImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3Qt
bmV0c2NhcGUiKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2Nhbl9zaG93
X21pbWVfdHlwZSh0ZXN0LT5tX3dlYlZpZXcsICJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5l
dHNjYXBlIikpOwogI2VuZGlmCiB9CiAKQEAgLTU5MSw3ICs1OTEsNyBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViVmlld1N1Ym1pdEZvcm0oRm9ybUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiAKICAgICB0ZXN0LT5zdWJtaXRGb3JtQXRQb3NpdGlvbig1LCA1KTsKICAgICBHSGFzaFRhYmxl
KiB0YWJsZVZhbHVlcyA9IHRlc3QtPmdldFRleHRGaWVsZHNBc0hhc2hUYWJsZSgpOwotICAgIGdf
YXNzZXJ0KHRhYmxlVmFsdWVzKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHRhYmxlVmFsdWVzKTsK
ICAgICBnX2Fzc2VydF9jbXB1aW50KGdfaGFzaF90YWJsZV9zaXplKHRhYmxlVmFsdWVzKSwgPT0s
IDQpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihzdGF0aWNfY2FzdDxjaGFyKj4oZ19oYXNoX3RhYmxl
X2xvb2t1cCh0YWJsZVZhbHVlcywgInRleHQxIikpLCA9PSwgInZhbHVlMSIpOwogICAgIGdfYXNz
ZXJ0X2NtcHN0cihzdGF0aWNfY2FzdDxjaGFyKj4oZ19oYXNoX3RhYmxlX2xvb2t1cCh0YWJsZVZh
bHVlcywgIiIpKSwgPT0sICJ2YWx1ZTMiKTsKQEAgLTU5OSw3ICs1OTksNyBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld1N1Ym1pdEZvcm0oRm9ybUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiAgICAgZ19hc3NlcnRfY21wc3RyKHN0YXRpY19jYXN0PGNoYXIqPihnX2hhc2hfdGFibGVf
bG9va3VwKHRhYmxlVmFsdWVzLCAicGFzc3dvcmQiKSksID09LCAic2VjcmV0Iik7CiAKICAgICBH
UHRyQXJyYXkqIG5hbWVzID0gdGVzdC0+Z2V0VGV4dEZpZWxkTmFtZXMoKTsKLSAgICBnX2Fzc2Vy
dChuYW1lcyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChuYW1lcyk7CiAgICAgZ19hc3NlcnRfY21w
dWludChuYW1lcy0+bGVuLCA9PSwgNSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHN0YXRpY19jYXN0
PGNoYXIqPihuYW1lcy0+cGRhdGFbMF0pLCA9PSwgInRleHQxIik7CiAgICAgZ19hc3NlcnRfY21w
c3RyKHN0YXRpY19jYXN0PGNoYXIqPihuYW1lcy0+cGRhdGFbMV0pLCA9PSwgInRleHQyIik7CkBA
IC02MDgsNyArNjA4LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdTdWJtaXRGb3JtKEZvcm1D
bGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcHN0cihzdGF0
aWNfY2FzdDxjaGFyKj4obmFtZXMtPnBkYXRhWzRdKSwgPT0sICJwYXNzd29yZCIpOwogCiAgICAg
R1B0ckFycmF5KiB2YWx1ZXMgPSB0ZXN0LT5nZXRUZXh0RmllbGRWYWx1ZXMoKTsKLSAgICBnX2Fz
c2VydCh2YWx1ZXMpOworICAgIGdfYXNzZXJ0X25vbm51bGwodmFsdWVzKTsKICAgICBnX2Fzc2Vy
dF9jbXB1aW50KHZhbHVlcy0+bGVuLCA9PSwgNSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHN0YXRp
Y19jYXN0PGNoYXIqPih2YWx1ZXMtPnBkYXRhWzBdKSwgPT0sICJ2YWx1ZTEiKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIoc3RhdGljX2Nhc3Q8Y2hhcio+KHZhbHVlcy0+cGRhdGFbMV0pLCA9PSwgInZh
bHVlMiIpOwpAQCAtNjQzLDggKzY0Myw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEdVbmlx
dWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgdGVzdC0+bV9pbnB1dFN0cmVhbSA9IGFk
b3B0R1JlZih3ZWJraXRfd2ViX3ZpZXdfc2F2ZV9maW5pc2godGVzdC0+bV93ZWJWaWV3LCByZXN1
bHQsICZlcnJvci5vdXRQdHIoKSkpOwotICAgICAgICBnX2Fzc2VydChHX0lTX0lOUFVUX1NUUkVB
TSh0ZXN0LT5tX2lucHV0U3RyZWFtLmdldCgpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KCFlcnJvcik7
CisgICAgICAgIGdfYXNzZXJ0X3RydWUoR19JU19JTlBVVF9TVFJFQU0odGVzdC0+bV9pbnB1dFN0
cmVhbS5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAK
ICAgICAgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7CiAgICAgfQpAQCAtNjUyLDggKzY1Miw4IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCB3ZWJWaWV3U2F2ZWRUb0ZpbGVDYWxsYmFjayhHT2Jq
ZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBTYXZlV2ViVmlld1Rlc3QqIHRlc3Qp
CiAgICAgewogICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7Ci0gICAgICAgIGdf
YXNzZXJ0KHdlYmtpdF93ZWJfdmlld19zYXZlX3RvX2ZpbGVfZmluaXNoKHRlc3QtPm1fd2ViVmll
dywgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKLSAgICAgICAgZ19hc3NlcnQoIWVycm9yKTsK
KyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfc2F2ZV90b19maWxlX2Zpbmlz
aCh0ZXN0LT5tX3dlYlZpZXcsIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSk7CisgICAgICAgIGdf
YXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKIAogICAgICAgICB0ZXN0LT5xdWl0TWFpbkxv
b3AoKTsKICAgICB9CkBAIC03MDUsNyArNzA1LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdT
YXZlKFNhdmVXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnc3NpemUgcmVh
ZEJ5dGVzID0gMDsKICAgICBnc3NpemUgdG90YWxCeXRlc0Zyb21TdHJlYW0gPSAwOwogICAgIHdo
aWxlICgocmVhZEJ5dGVzID0gZ19pbnB1dF9zdHJlYW1fcmVhZCh0ZXN0LT5tX2lucHV0U3RyZWFt
LmdldCgpLCAmYnVmZmVyLCA1MTIsIDAsICZlcnJvci5vdXRQdHIoKSkpKSB7Ci0gICAgICAgIGdf
YXNzZXJ0KCFlcnJvcik7CisgICAgICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsK
ICAgICAgICAgdG90YWxCeXRlc0Zyb21TdHJlYW0gKz0gcmVhZEJ5dGVzOwogICAgIH0KIApAQCAt
NzM0LDQ1ICs3MzQsNDUgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdQYWdlVmlzaWJpbGl0eShX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIEdVbmlxdWVPdXRQdHI8R0Vy
cm9yPiBlcnJvcjsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0
ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC52aXNp
YmlsaXR5U3RhdGU7IiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0
UmVzdWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X25vbm51
bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkp
OwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3Jp
cHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0
cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJwcmVyZW5kZXIiKTsKIAogICAgIGphdmFzY3JpcHRS
ZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50
LmhpZGRlbjsiLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1
bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7Ci0gICAgZ19hc3NlcnQoV2ViVmlld1Rl
c3Q6OmphdmFzY3JpcHRSZXN1bHRUb0Jvb2xlYW4oamF2YXNjcmlwdFJlc3VsdCkpOworICAgIGdf
YXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3Io
ZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X3RydWUoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRS
ZXN1bHRUb0Jvb2xlYW4oamF2YXNjcmlwdFJlc3VsdCkpOwogCiAgICAgLy8gU2hvdyB0aGUgcGFn
ZS4gVGhlIHZpc2liaWxpdHkgc2hvdWxkIGJlIHVwZGF0ZWQgdG8gJ3Zpc2libGUnLgogICAgIHRl
c3QtPnNob3dJbldpbmRvdygpOwogICAgIHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hhbmdlZCgpOwog
CiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxG
aW5pc2hlZCgiZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlOyIsICZlcnJvci5vdXRQdHIoKSk7Ci0g
ICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgp
KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0
X25vX2Vycm9yKGVycm9yLmdldCgpKTsKICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVz
dDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19h
c3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgInZpc2libGUiKTsKIAogICAgIGph
dmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQo
ImRvY3VtZW50LmhpZGRlbjsiLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFz
Y3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7Ci0gICAgZ19hc3NlcnQo
IVdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9Cb29sZWFuKGphdmFzY3JpcHRSZXN1bHQp
KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0
X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9mYWxzZShXZWJWaWV3VGVzdDo6
amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihqYXZhc2NyaXB0UmVzdWx0KSk7CiAKICAgICAvLyBI
aWRlIHRoZSBwYWdlLiBUaGUgdmlzaWJpbGl0eSBzaG91bGQgYmUgdXBkYXRlZCB0byAnaGlkZGVu
Jy4KICAgICB0ZXN0LT5oaWRlVmlldygpOwogICAgIHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hhbmdl
ZCgpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0
VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlOyIsICZlcnJvci5vdXRQdHIo
KSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVycm9y
LmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdf
YXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJW
aWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAg
ICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgImhpZGRlbiIpOwogCiAg
ICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5p
c2hlZCgiZG9jdW1lbnQuaGlkZGVuOyIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQo
amF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKLSAgICBnX2Fz
c2VydChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihqYXZhc2NyaXB0UmVz
dWx0KSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fz
c2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXZWJWaWV3VGVz
dDo6amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihqYXZhc2NyaXB0UmVzdWx0KSk7CiB9CiAKICNp
ZiBQTEFURk9STShHVEspCkBAIC03ODQsNyArNzg0LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICB0ZXN0LT5tX3N1cmZhY2Ug
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCh3ZWJfdmlldywgcmVzLCAmZXJy
b3Iub3V0UHRyKCkpOwotICAgICAgICBnX2Fzc2VydCghdGVzdC0+bV9zdXJmYWNlKTsKKyAgICAg
ICAgZ19hc3NlcnRfbnVsbCh0ZXN0LT5tX3N1cmZhY2UpOwogICAgICAgICBnX2Fzc2VydF9lcnJv
cihlcnJvci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQpOwogICAgICAg
ICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKICAgICB9CkBAIC04MTEsMTEgKzgxMSwxMSBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViVmlld1NuYXBzaG90KFNuYXBzaG90V2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAKICAgICAvLyBXRUJLSVRfU05BUFNIT1RfUkVHSU9OX1ZJU0lCTEUgcmV0
dXJucyBhIG51bGwgc3VyZmFjZSB3aGVuIHRoZSB2aWV3IGlzIG5vdCB2aXNpYmxlLgogICAgIGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZTEgPSB0ZXN0LT5nZXRTbmFwc2hvdEFuZFdhaXRVbnRpbFJl
YWR5KFdFQktJVF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRSwgV0VCS0lUX1NOQVBTSE9UX09QVElP
TlNfTk9ORSk7Ci0gICAgZ19hc3NlcnQoIXN1cmZhY2UxKTsKKyAgICBnX2Fzc2VydF9udWxsKHN1
cmZhY2UxKTsKIAogICAgIC8vIFdFQktJVF9TTkFQU0hPVF9SRUdJT05fRlVMTF9ET0NVTUVOVCB3
b3JrcyBldmVuIGlmIHRoZSB3aW5kb3cgaXMgbm90IHZpc2libGUuCiAgICAgc3VyZmFjZTEgPSB0
ZXN0LT5nZXRTbmFwc2hvdEFuZFdhaXRVbnRpbFJlYWR5KFdFQktJVF9TTkFQU0hPVF9SRUdJT05f
RlVMTF9ET0NVTUVOVCwgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORSk7Ci0gICAgZ19hc3Nl
cnQoc3VyZmFjZTEpOworICAgIGdfYXNzZXJ0X25vbm51bGwoc3VyZmFjZTEpOwogICAgIGdfYXNz
ZXJ0X2NtcHVpbnQoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShzdXJmYWNlMSksID09LCBDQUlST19T
VVJGQUNFX1RZUEVfSU1BR0UpOwogICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF93aWR0aChzdXJmYWNlMSksID09LCAyMDApOwogICAgIGdfYXNzZXJ0X2NtcGludChj
YWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZTEpLCA9PSwgMTAwKTsKQEAgLTgy
Myw3ICs4MjMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1NuYXBzaG90KFNuYXBzaG90V2Vi
Vmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgLy8gU2hvdyB0aGUgV2ViVmlldyBp
biBhIHBvcHVwIHdpZG93IG9mIDUweDUwIGFuZCB0cnkgYWdhaW4gd2l0aCBXRUJLSVRfU05BUFNI
T1RfUkVHSU9OX1ZJU0lCTEUuCiAgICAgdGVzdC0+c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFw
cGVkKEdUS19XSU5ET1dfUE9QVVAsIDUwLCA1MCk7CiAgICAgc3VyZmFjZTEgPSBjYWlyb19zdXJm
YWNlX3JlZmVyZW5jZSh0ZXN0LT5nZXRTbmFwc2hvdEFuZFdhaXRVbnRpbFJlYWR5KFdFQktJVF9T
TkFQU0hPVF9SRUdJT05fVklTSUJMRSwgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORSkpOwot
ICAgIGdfYXNzZXJ0KHN1cmZhY2UxKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHN1cmZhY2UxKTsK
ICAgICBnX2Fzc2VydF9jbXB1aW50KGNhaXJvX3N1cmZhY2VfZ2V0X3R5cGUoc3VyZmFjZTEpLCA9
PSwgQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZTEpLCA9PSwgNTApOwogICAgIGdfYXNzZXJ0
X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZTEpLCA9PSwgNTAp
OwpAQCAtODMxLDggKzgzMSw4IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3U25hcHNob3QoU25h
cHNob3RXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAvLyBTZWxlY3QgYWxs
IHRleHQgaW4gdGhlIFdlYlZpZXcsIHJlcXVlc3QgYSBzbmFwc2hvdCBpZ25vcmluZyBzZWxlY3Rp
b24uCiAgICAgdGVzdC0+c2VsZWN0QWxsKCk7CiAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNl
MiA9IHRlc3QtPmdldFNuYXBzaG90QW5kV2FpdFVudGlsUmVhZHkoV0VCS0lUX1NOQVBTSE9UX1JF
R0lPTl9WSVNJQkxFLCBXRUJLSVRfU05BUFNIT1RfT1BUSU9OU19OT05FKTsKLSAgICBnX2Fzc2Vy
dChzdXJmYWNlMik7Ci0gICAgZ19hc3NlcnQoVGVzdDo6Y2Fpcm9TdXJmYWNlc0VxdWFsKHN1cmZh
Y2UxLCBzdXJmYWNlMikpOworICAgIGdfYXNzZXJ0X25vbm51bGwoc3VyZmFjZTIpOworICAgIGdf
YXNzZXJ0X3RydWUoVGVzdDo6Y2Fpcm9TdXJmYWNlc0VxdWFsKHN1cmZhY2UxLCBzdXJmYWNlMikp
OwogCiAgICAgLy8gUmVxdWVzdCBhIG5ldyBzbmFwc2hvdCwgaW5jbHVkaW5nIHRoZSBzZWxlY3Rp
b24gdGhpcyB0aW1lLiBUaGUgc2l6ZSBzaG91bGQgYmUgdGhlIHNhbWUgYnV0IHRoZSByZXN1bHQK
ICAgICAvLyBtdXN0IGJlIGRpZmZlcmVudCB0byB0aGUgb25lIHByZXZpb3VzbHkgb2J0YWluZWQu
CkBAIC04NDAsMTggKzg0MCwxOCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1NuYXBzaG90KFNu
YXBzaG90V2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21w
dWludChjYWlyb19zdXJmYWNlX2dldF90eXBlKHN1cmZhY2UyKSwgPT0sIENBSVJPX1NVUkZBQ0Vf
VFlQRV9JTUFHRSk7CiAgICAgZ19hc3NlcnRfY21waW50KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0
X3dpZHRoKHN1cmZhY2UxKSwgPT0sIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZh
Y2UyKSk7CiAgICAgZ19hc3NlcnRfY21waW50KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdo
dChzdXJmYWNlMSksID09LCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZTIp
KTsKLSAgICBnX2Fzc2VydCghVGVzdDo6Y2Fpcm9TdXJmYWNlc0VxdWFsKHN1cmZhY2UxLCBzdXJm
YWNlMikpOworICAgIGdfYXNzZXJ0X2ZhbHNlKFRlc3Q6OmNhaXJvU3VyZmFjZXNFcXVhbChzdXJm
YWNlMSwgc3VyZmFjZTIpKTsKIAogICAgIC8vIEdldCBhIHNucGFzaG90IHdpdGggYSB0cmFuc3Bh
cmVudCBiYWNrZ3JvdW5kLCB0aGUgcmVzdWx0IG11c3QgYmUgZGlmZmVyZW50LgogICAgIHN1cmZh
Y2UyID0gdGVzdC0+Z2V0U25hcHNob3RBbmRXYWl0VW50aWxSZWFkeShXRUJLSVRfU05BUFNIT1Rf
UkVHSU9OX1ZJU0lCTEUsIFdFQktJVF9TTkFQU0hPVF9PUFRJT05TX1RSQU5TUEFSRU5UX0JBQ0tH
Uk9VTkQpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQoY2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShzdXJm
YWNlMiksID09LCBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOwogICAgIGdfYXNzZXJ0X2NtcGlu
dChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlMSksID09LCBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlMikpOwogICAgIGdfYXNzZXJ0X2NtcGludChjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZTEpLCA9PSwgY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UyKSk7Ci0gICAgZ19hc3NlcnQoIVRlc3Q6OmNhaXJvU3Vy
ZmFjZXNFcXVhbChzdXJmYWNlMSwgc3VyZmFjZTIpKTsKKyAgICBnX2Fzc2VydF9mYWxzZShUZXN0
OjpjYWlyb1N1cmZhY2VzRXF1YWwoc3VyZmFjZTEsIHN1cmZhY2UyKSk7CiAgICAgY2Fpcm9fc3Vy
ZmFjZV9kZXN0cm95KHN1cmZhY2UxKTsKIAogICAgIC8vIFRlc3QgdGhhdCBjYW5jZWxsYXRpb24g
d29ya3MuCi0gICAgZ19hc3NlcnQodGVzdC0+Z2V0U25hcHNob3RBbmRDYW5jZWwoKSk7CisgICAg
Z19hc3NlcnRfdHJ1ZSh0ZXN0LT5nZXRTbmFwc2hvdEFuZENhbmNlbCgpKTsKIH0KICNlbmRpZiAv
LyBQTEFURk9STShHVEspCiAKQEAgLTg4Miw4ICs4ODIsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgZ2Jvb2xlYW4gcGVybWlzc2lvblJlcXVlc3RDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiwgV2Vi
S2l0UGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3QsIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0KiB0
ZXN0KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX05PVElGSUNBVElPTl9QRVJN
SVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOwotICAgICAgICBnX2Fzc2VydCh0ZXN0LT5tX2lzRXhw
ZWN0aW5nUGVybWlzc2lvblJlcXVlc3QpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9J
U19OT1RJRklDQVRJT05fUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpKTsKKyAgICAgICAgZ19h
c3NlcnRfdHJ1ZSh0ZXN0LT5tX2lzRXhwZWN0aW5nUGVybWlzc2lvblJlcXVlc3QpOwogICAgICAg
ICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJl
cXVlc3QpKTsKIAogICAgICAgICB0ZXN0LT5tX2V2ZW50ID0gUGVybWlzc2lvbjsKQEAgLTg5Nyw3
ICs4OTcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4gbm90aWZpY2F0aW9uQ2xv
c2VkQ2FsbGJhY2soV2ViS2l0Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sIE5vdGlmaWNhdGlv
bldlYlZpZXdUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQodGVzdC0+bV9ub3Rp
ZmljYXRpb24gPT0gbm90aWZpY2F0aW9uKTsKKyAgICAgICAgZ19hc3NlcnRfY21waGV4KHRlc3Qt
Pm1fbm90aWZpY2F0aW9uLCA9PSwgbm90aWZpY2F0aW9uKTsKICAgICAgICAgdGVzdC0+bV9ub3Rp
ZmljYXRpb24gPSBudWxscHRyOwogICAgICAgICB0ZXN0LT5tX2V2ZW50ID0gQ2xvc2VkOwogICAg
ICAgICBpZiAoZ19tYWluX2xvb3BfaXNfcnVubmluZyh0ZXN0LT5tX21haW5Mb29wKSkKQEAgLTkw
NywxNCArOTA3LDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBnYm9vbGVhbiBub3RpZmljYXRp
b25DbGlja2VkQ2FsbGJhY2soV2ViS2l0Tm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sIE5vdGlm
aWNhdGlvbldlYlZpZXdUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQodGVzdC0+
bV9ub3RpZmljYXRpb24gPT0gbm90aWZpY2F0aW9uKTsKKyAgICAgICAgZ19hc3NlcnRfY21waGV4
KHRlc3QtPm1fbm90aWZpY2F0aW9uLCA9PSwgbm90aWZpY2F0aW9uKTsKICAgICAgICAgdGVzdC0+
bV9ldmVudCA9IENsaWNrZWQ7CiAgICAgICAgIHJldHVybiBUUlVFOwogICAgIH0KIAogICAgIHN0
YXRpYyBnYm9vbGVhbiBzaG93Tm90aWZpY2F0aW9uQ2FsbGJhY2soV2ViS2l0V2ViVmlldyosIFdl
YktpdE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBOb3RpZmljYXRpb25XZWJWaWV3VGVzdCog
dGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX25vdGlmaWNhdGlvbik7Cisg
ICAgICAgIGdfYXNzZXJ0X251bGwodGVzdC0+bV9ub3RpZmljYXRpb24pOwogICAgICAgICB0ZXN0
LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG5vdGlmaWNh
dGlvbikpOwogICAgICAgICB0ZXN0LT5tX25vdGlmaWNhdGlvbiA9IG5vdGlmaWNhdGlvbjsKICAg
ICAgICAgZ19zaWduYWxfY29ubmVjdChub3RpZmljYXRpb24sICJjbG9zZWQiLCBHX0NBTExCQUNL
KG5vdGlmaWNhdGlvbkNsb3NlZENhbGxiYWNrKSwgdGVzdCk7CkBAIC05NTUsNyArOTU1LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzUGVybWlzc2lvbigpCiAgICAgewogICAgICAgICBhdXRvKiBy
ZXN1bHQgPSBydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIk5vdGlmaWNhdGlvbi5w
ZXJtaXNzaW9uOyIsIG51bGxwdHIpOwotICAgICAgICBnX2Fzc2VydChyZXN1bHQpOworICAgICAg
ICBnX2Fzc2VydF9ub25udWxsKHJlc3VsdCk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFs
dWUoamF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhyZXN1bHQpKTsKICAgICAgICAgcmV0dXJuICFn
X3N0cmNtcDAodmFsdWUuZ2V0KCksICJncmFudGVkIik7CiAgICAgfQpAQCAtOTkzLDcgKzk5Myw3
IEBAIHB1YmxpYzoKICAgICAgICAgbV9ldmVudCA9IE5vbmU7CiAgICAgICAgIHJ1bkphdmFTY3Jp
cHRBbmRXYWl0VW50aWxGaW5pc2hlZCgibi5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IHdpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLm5vdGlmaWNhdGlvbnMucG9zdE1lc3NhZ2UoJ2NsaWNrZWQn
KTsgfSIsIG51bGxwdHIpOwogICAgICAgICB3ZWJraXRfbm90aWZpY2F0aW9uX2NsaWNrZWQobV9u
b3RpZmljYXRpb24pOwotICAgICAgICBnX2Fzc2VydChtX2V2ZW50ID09IENsaWNrZWQpOworICAg
ICAgICBnX2Fzc2VydF9jbXBpbnQobV9ldmVudCwgPT0sIENsaWNrZWQpOwogICAgICAgICBnX21h
aW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CiAgICAgfQogCkBAIC0xMDA2LDExICsxMDA2LDExIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgY2xvc2VOb3RpZmljYXRpb25BbmRXYWl0VW50aWxPbkNsb3Nl
ZCgpCiAgICAgewotICAgICAgICBnX2Fzc2VydChtX25vdGlmaWNhdGlvbik7CisgICAgICAgIGdf
YXNzZXJ0X25vbm51bGwobV9ub3RpZmljYXRpb24pOwogICAgICAgICBtX2V2ZW50ID0gTm9uZTsK
ICAgICAgICAgcnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJuLm9uY2xvc2UgPSBm
dW5jdGlvbigpIHsgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMubm90aWZpY2F0aW9ucy5w
b3N0TWVzc2FnZSgnY2xvc2VkJyk7IH0iLCBudWxscHRyKTsKICAgICAgICAgd2Via2l0X25vdGlm
aWNhdGlvbl9jbG9zZShtX25vdGlmaWNhdGlvbik7Ci0gICAgICAgIGdfYXNzZXJ0KG1fZXZlbnQg
PT0gQ2xvc2VkKTsKKyAgICAgICAgZ19hc3NlcnRfY21waW50KG1fZXZlbnQsID09LCBDbG9zZWQp
OwogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CiAgICAgfQogCkBAIC0xMDI3
LDQxICsxMDI3LDQxIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Tm90aWZpY2F0aW9uKE5vdGlm
aWNhdGlvbldlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyCiAgICAgLy8gTm90aWZpY2F0
aW9ucyBkb24ndCB3b3JrIHdpdGggbG9jYWwgb3Igc3BlY2lhbCBzY2hlbWVzLgogICAgIHRlc3Qt
PmxvYWRVUkkoZ1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CiAgICAgdGVzdC0+
d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPmhhc1Blcm1pc3Np
b24oKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+aGFzUGVybWlzc2lvbigpKTsKIAogICAg
IHRlc3QtPnJlcXVlc3RQZXJtaXNzaW9uQW5kV2FpdFVudGlsR2l2ZW4oKTsKLSAgICBnX2Fzc2Vy
dCh0ZXN0LT5tX2V2ZW50ID09IE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0OjpQZXJtaXNzaW9uKTsK
LSAgICBnX2Fzc2VydCh0ZXN0LT5oYXNQZXJtaXNzaW9uKCkpOworICAgIGdfYXNzZXJ0X2NtcGlu
dCh0ZXN0LT5tX2V2ZW50LCA9PSwgTm90aWZpY2F0aW9uV2ViVmlld1Rlc3Q6OlBlcm1pc3Npb24p
OworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+aGFzUGVybWlzc2lvbigpKTsKIAogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiB0aXRsZSA9ICJUaGlzIGlzIGEgbm90aWZpY2F0aW9uIjsKICAgICBzdGF0
aWMgY29uc3QgY2hhciogYm9keSA9ICJUaGlzIGlzIHRoZSBib2R5LiI7CiAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIHRhZyA9ICJUaGlzIGlzIHRoZSB0YWcuIjsKICAgICB0ZXN0LT5yZXF1ZXN0Tm90
aWZpY2F0aW9uQW5kV2FpdFVudGlsU2hvd24odGl0bGUsIGJvZHksIHRhZyk7CiAKLSAgICBnX2Fz
c2VydCh0ZXN0LT5tX2V2ZW50ID09IE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0OjpTaG93bik7Ci0g
ICAgZ19hc3NlcnQodGVzdC0+bV9ub3RpZmljYXRpb24pOworICAgIGdfYXNzZXJ0X2NtcGludCh0
ZXN0LT5tX2V2ZW50LCA9PSwgTm90aWZpY2F0aW9uV2ViVmlld1Rlc3Q6OlNob3duKTsKKyAgICBn
X2Fzc2VydF9ub25udWxsKHRlc3QtPm1fbm90aWZpY2F0aW9uKTsKICAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X25vdGlmaWNhdGlvbl9nZXRfdGl0bGUodGVzdC0+bV9ub3RpZmljYXRpb24pLCA9
PSwgdGl0bGUpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfbm90aWZpY2F0aW9uX2dldF9i
b2R5KHRlc3QtPm1fbm90aWZpY2F0aW9uKSwgPT0sIGJvZHkpOwogICAgIGdfYXNzZXJ0X2NtcHN0
cih3ZWJraXRfbm90aWZpY2F0aW9uX2dldF90YWcodGVzdC0+bV9ub3RpZmljYXRpb24pLCA9PSwg
dGFnKTsKIAogICAgIHRlc3QtPmNsaWNrTm90aWZpY2F0aW9uQW5kV2FpdFVudGlsQ2xpY2tlZCgp
OwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXZlbnQgPT0gTm90aWZpY2F0aW9uV2ViVmlld1Rlc3Q6
Ok9uQ2xpY2tlZCk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fZXZlbnQsID09LCBOb3Rp
ZmljYXRpb25XZWJWaWV3VGVzdDo6T25DbGlja2VkKTsKIAogICAgIHRlc3QtPmNsb3NlTm90aWZp
Y2F0aW9uQW5kV2FpdFVudGlsQ2xvc2VkKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9ldmVudCA9
PSBOb3RpZmljYXRpb25XZWJWaWV3VGVzdDo6Q2xvc2VkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
dGVzdC0+bV9ldmVudCwgPT0sIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0OjpDbG9zZWQpOwogCiAg
ICAgdGVzdC0+cmVxdWVzdE5vdGlmaWNhdGlvbkFuZFdhaXRVbnRpbFNob3duKHRpdGxlLCBib2R5
KTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2V2ZW50ID09IE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0
OjpTaG93bik7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fZXZlbnQsID09LCBOb3RpZmlj
YXRpb25XZWJWaWV3VGVzdDo6U2hvd24pOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfbm90
aWZpY2F0aW9uX2dldF90YWcodGVzdC0+bV9ub3RpZmljYXRpb24pLCA9PSwgbnVsbHB0cik7CiAK
ICAgICB0ZXN0LT5jbG9zZU5vdGlmaWNhdGlvbkFuZFdhaXRVbnRpbE9uQ2xvc2VkKCk7Ci0gICAg
Z19hc3NlcnQodGVzdC0+bV9ldmVudCA9PSBOb3RpZmljYXRpb25XZWJWaWV3VGVzdDo6T25DbG9z
ZWQpOworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2V2ZW50LCA9PSwgTm90aWZpY2F0aW9u
V2ViVmlld1Rlc3Q6Ok9uQ2xvc2VkKTsKIAogICAgIC8vIFRoZSBmaXJzdCBub3RpZmljYXRpb24g
c2hvdWxkIGJlIGNsb3NlZCBhdXRvbWF0aWNhbGx5IGJlY2F1c2UgdGhlIHRhZyBpcwogICAgIC8v
IHRoZSBzYW1lLiBJdCB3aWxsIGNyYXNoIGluIHNob3dOb3RpZmljYXRpb25DYWxsYmFjayBvbiBm
YWlsdXJlLgogICAgIHRlc3QtPnJlcXVlc3ROb3RpZmljYXRpb25BbmRXYWl0VW50aWxTaG93bih0
aXRsZSwgYm9keSwgdGFnKTsKICAgICB0ZXN0LT5yZXF1ZXN0Tm90aWZpY2F0aW9uQW5kV2FpdFVu
dGlsU2hvd24odGl0bGUsIGJvZHksIHRhZyk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9ldmVudCA9
PSBOb3RpZmljYXRpb25XZWJWaWV3VGVzdDo6U2hvd24pOworICAgIGdfYXNzZXJ0X2NtcGludCh0
ZXN0LT5tX2V2ZW50LCA9PSwgTm90aWZpY2F0aW9uV2ViVmlld1Rlc3Q6OlNob3duKTsKIH0KIAog
c3RhdGljIHZvaWQgc2V0SW5pdGlhbE5vdGlmaWNhdGlvblBlcm1pc3Npb25zQWxsb3dlZENhbGxi
YWNrKFdlYktpdFdlYkNvbnRleHQqIGNvbnRleHQsIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0KiB0
ZXN0KQpAQCAtMTA4NywxMCArMTA4NywxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05vdGlm
aWNhdGlvbkluaXRpYWxQZXJtaXNzaW9uQWxsb3dlZChOb3RpZmljYXRpb25XZWJWaWV3VAogCiAg
ICAgdGVzdC0+bG9hZFVSSShnU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvIikuZGF0YSgpKTsKICAg
ICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5oYXNQ
ZXJtaXNzaW9uKCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+aGFzUGVybWlzc2lvbigpKTsK
IAogICAgIHRlc3QtPnJlcXVlc3ROb3RpZmljYXRpb25BbmRXYWl0VW50aWxTaG93bigiVGhpcyBp
cyBhIG5vdGlmaWNhdGlvbiIsICJUaGlzIGlzIHRoZSBib2R5LiIpOwotICAgIGdfYXNzZXJ0KHRl
c3QtPm1fZXZlbnQgPT0gTm90aWZpY2F0aW9uV2ViVmlld1Rlc3Q6OlNob3duKTsKKyAgICBnX2Fz
c2VydF9jbXBpbnQodGVzdC0+bV9ldmVudCwgPT0sIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0OjpT
aG93bik7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Tm90aWZpY2F0aW9uSW5pdGlhbFBl
cm1pc3Npb25EaXNhbGxvd2VkKE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQpAQCAtMTEwMCw3ICsxMTAwLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdOb3Rp
ZmljYXRpb25Jbml0aWFsUGVybWlzc2lvbkRpc2FsbG93ZWQoTm90aWZpY2F0aW9uV2ViVmkKIAog
ICAgIHRlc3QtPmxvYWRVUkkoZ1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CiAg
ICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPmhh
c1Blcm1pc3Npb24oKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+aGFzUGVybWlzc2lvbigp
KTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9OUykKIApAQCAtMTExMywyNCArMTEx
MywyNCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0lzUGxheWluZ0F1ZGlvKElzUGxheWluZ0F1
ZGlvV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaQogI2VuZGlmCiAKICAgICAvLyBJbml0aWFs
bHksIHdlYiB2aWV3cyBzaG91bGQgYWx3YXlzIHJlcG9ydCBubyBhdWRpbyBiZWluZyBwbGF5ZWQu
Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19pc19wbGF5aW5nX2F1ZGlvKHRlc3QtPm1f
d2ViVmlldykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19pc19wbGF5aW5n
X2F1ZGlvKHRlc3QtPm1fd2ViVmlldykpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiByZXNvdXJj
ZVBhdGgoZ19idWlsZF9maWxlbmFtZShUZXN0OjpnZXRSZXNvdXJjZXNEaXIoVGVzdDo6V2ViS2l0
MlJlc291cmNlcykuZGF0YSgpLCAiZmlsZS13aXRoLXZpZGVvLmh0bWwiLCBudWxscHRyKSk7CiAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiByZXNvdXJjZVVSTChnX2ZpbGVuYW1lX3RvX3VyaShyZXNvdXJj
ZVBhdGguZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9h
ZF91cmkodGVzdC0+bV93ZWJWaWV3LCByZXNvdXJjZVVSTC5nZXQoKSk7CiAgICAgdGVzdC0+d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19pc19w
bGF5aW5nX2F1ZGlvKHRlc3QtPm1fd2ViVmlldykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtp
dF93ZWJfdmlld19pc19wbGF5aW5nX2F1ZGlvKHRlc3QtPm1fd2ViVmlldykpOwogCiAgICAgdGVz
dC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJwbGF5VmlkZW8oKTsiLCBudWxs
cHRyKTsKICAgICBpZiAoIXdlYmtpdF93ZWJfdmlld19pc19wbGF5aW5nX2F1ZGlvKHRlc3QtPm1f
d2ViVmlldykpCiAgICAgICAgIHRlc3QtPndhaXRVbnRpbElzUGxheWluZ0F1ZGlvQ2hhbmdlZCgp
OwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19pc19wbGF5aW5nX2F1ZGlvKHRlc3QtPm1f
d2ViVmlldykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X2lzX3BsYXlpbmdf
YXVkaW8odGVzdC0+bV93ZWJWaWV3KSk7CiAKICAgICAvLyBQYXVzZSB0aGUgdmlkZW8sIGFuZCBj
aGVjayBhZ2Fpbi4KICAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQo
ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0LXZpZGVvJykucGF1c2UoKTsiLCBudWxscHRy
KTsKICAgICBpZiAod2Via2l0X3dlYl92aWV3X2lzX3BsYXlpbmdfYXVkaW8odGVzdC0+bV93ZWJW
aWV3KSkKICAgICAgICAgdGVzdC0+d2FpdFVudGlsSXNQbGF5aW5nQXVkaW9DaGFuZ2VkKCk7Ci0g
ICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19pc19wbGF5aW5nX2F1ZGlvKHRlc3QtPm1fd2Vi
VmlldykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19pc19wbGF5aW5nX2F1
ZGlvKHRlc3QtPm1fd2ViVmlldykpOwogfQogCiAjaWYgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJzaXRlRGF0YS5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRh
LmNwcAppbmRleCAwMjY2Y2IwZGM4NDRlYzFhZTcwZjVkOWQ5YTNjMGYwZmE5NTBkMjVmLi5lNTQ1
NTJlMDM4ZDg1MzJjMTA2ZDJiZjM0OWNjNmE2OWY0YTMwNWViIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYnNpdGVEYXRhLmNwcApA
QCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgV2Vic2l0ZURhdGFUZXN0KCkKICAgICAgICAg
OiBtX21hbmFnZXIod2Via2l0X3dlYl9jb250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQobV93ZWJWaWV3KSkpCiAgICAgewotICAgICAgICBn
X2Fzc2VydChXRUJLSVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIobV9tYW5hZ2VyKSk7CisgICAg
ICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1fbWFuYWdl
cikpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JK
RUNUKG1fbWFuYWdlcikpOwogICAgICAgICAvLyBXZWJzaXRlRGF0YVN0b3JlIGNyZWF0ZXMgYSBu
ZXcgV2ViUHJvY2Vzc1Bvb2wgd2hlbiB1c2VkIGJlZm9yZSBhbnkgc2Vjb25kYXJ5IHByb2Nlc3Mg
aGFzIGJlZW4gY3JlYXRlZC4KICAgICAgICAgLy8gRW5zdXJlIHdlIGhhdmUgYSB3ZWIgcHJvY2Vz
cyBieSBhbHdheXMgbG9hZGluZyBhYm91dDpibGFuayBoZXJlLgpAQCAtMTExLDcgKzExMSw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9yZW1v
dmUobV9tYW5hZ2VyLCB0eXBlcywgZGF0YUxpc3QsIG51bGxwdHIsIFtdKEdPYmplY3QqLCBHQXN5
bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgICAgIFdlYnNp
dGVEYXRhVGVzdCogdGVzdCA9IHN0YXRpY19jYXN0PFdlYnNpdGVEYXRhVGVzdCo+KHVzZXJEYXRh
KTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9yZW1v
dmVfZmluaXNoKHRlc3QtPm1fbWFuYWdlciwgcmVzdWx0LCBudWxscHRyKSk7CisgICAgICAgICAg
ICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9yZW1vdmVfZmluaXNo
KHRlc3QtPm1fbWFuYWdlciwgcmVzdWx0LCBudWxscHRyKSk7CiAgICAgICAgICAgICB0ZXN0LT5x
dWl0TWFpbkxvb3AoKTsKICAgICAgICAgfSwgdGhpcyk7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1
bihtX21haW5Mb29wKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xlYXIobV9tYW5hZ2VyLCB0eXBlcywgdGlt
ZVNwYW4sIG51bGxwdHIsIFtdKEdPYmplY3QqLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50
ZXIgdXNlckRhdGEpIHsKICAgICAgICAgICAgIFdlYnNpdGVEYXRhVGVzdCogdGVzdCA9IHN0YXRp
Y19jYXN0PFdlYnNpdGVEYXRhVGVzdCo+KHVzZXJEYXRhKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0
KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGVhcl9maW5pc2godGVzdC0+bV9tYW5hZ2Vy
LCByZXN1bHQsIG51bGxwdHIpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyX2ZpbmlzaCh0ZXN0LT5tX21hbmFnZXIsIHJlc3VsdCwg
bnVsbHB0cikpOwogICAgICAgICAgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7CiAgICAgICAgIH0s
IHRoaXMpOwogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CkBAIC0xMzQsMjQg
KzEzNCwyNCBAQCBwdWJsaWM6CiBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFDb25maWd1cmF0
aW9uKFdlYnNpdGVEYXRhVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICAvLyBCYXNl
IGRpcmVjdG9yaWVzIGFyZSBub3QgdXNlZCBieSBUZXN0TWFpbi4KLSAgICBnX2Fzc2VydCghd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9iYXNlX2RhdGFfZGlyZWN0b3J5KHRlc3QtPm1f
bWFuYWdlcikpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0
X2Jhc2VfY2FjaGVfZGlyZWN0b3J5KHRlc3QtPm1fbWFuYWdlcikpOworICAgIGdfYXNzZXJ0X251
bGwod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9iYXNlX2RhdGFfZGlyZWN0b3J5KHRl
c3QtPm1fbWFuYWdlcikpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9iYXNlX2NhY2hlX2RpcmVjdG9yeSh0ZXN0LT5tX21hbmFnZXIpKTsKIAogICAg
IEdVbmlxdWVQdHI8Y2hhcj4gbG9jYWxTdG9yYWdlRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUo
VGVzdDo6ZGF0YURpcmVjdG9yeSgpLCAibG9jYWwtc3RvcmFnZSIsIG51bGxwdHIpKTsKICAgICBn
X2Fzc2VydF9jbXBzdHIobG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpLCA9PSwgd2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdlX2RpcmVjdG9yeSh0ZXN0LT5tX21h
bmFnZXIpKTsKLSAgICBnX2Fzc2VydChnX2ZpbGVfdGVzdChsb2NhbFN0b3JhZ2VEaXJlY3Rvcnku
Z2V0KCksIEdfRklMRV9URVNUX0lTX0RJUikpOworICAgIGdfYXNzZXJ0X3RydWUoZ19maWxlX3Rl
c3QobG9jYWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpLCBHX0ZJTEVfVEVTVF9JU19ESVIpKTsKIAog
ICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2VtcHR5IikuZGF0YSgp
KTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICB0ZXN0LT5ydW5KYXZh
U2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIndpbmRvdy5pbmRleGVkREIub3BlbignVGVzdERh
dGFiYXNlJyk7IiwgbnVsbHB0cik7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBpbmRleGVkREJEaXJl
Y3RvcnkoZ19idWlsZF9maWxlbmFtZShUZXN0OjpkYXRhRGlyZWN0b3J5KCksICJpbmRleGVkZGIi
LCBudWxscHRyKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGluZGV4ZWREQkRpcmVjdG9yeS5nZXQo
KSwgPT0sIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9y
eSh0ZXN0LT5tX21hbmFnZXIpKTsKLSAgICBnX2Fzc2VydChnX2ZpbGVfdGVzdChpbmRleGVkREJE
aXJlY3RvcnkuZ2V0KCksIEdfRklMRV9URVNUX0lTX0RJUikpOworICAgIGdfYXNzZXJ0X3RydWUo
Z19maWxlX3Rlc3QoaW5kZXhlZERCRGlyZWN0b3J5LmdldCgpLCBHX0ZJTEVfVEVTVF9JU19ESVIp
KTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gd2ViU1FMRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5h
bWUoVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCAid2Vic3FsIiwgbnVsbHB0cikpOwogICAgIGdfYXNz
ZXJ0X2NtcHN0cih3ZWJTUUxEaXJlY3RvcnkuZ2V0KCksID09LCB3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfZ2V0X3dlYnNxbF9kaXJlY3RvcnkodGVzdC0+bV9tYW5hZ2VyKSk7CiAgICAgdGVz
dC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkYiA9IG9wZW5EYXRhYmFzZShc
IlRlc3REYXRhYmFzZVwiLCBcIjEuMFwiLCBcIlRlc3REYXRhYmFzZVwiLCAxKTsiLCBudWxscHRy
KTsKLSAgICBnX2Fzc2VydChnX2ZpbGVfdGVzdCh3ZWJTUUxEaXJlY3RvcnkuZ2V0KCksIEdfRklM
RV9URVNUX0lTX0RJUikpOworICAgIGdfYXNzZXJ0X3RydWUoZ19maWxlX3Rlc3Qod2ViU1FMRGly
ZWN0b3J5LmdldCgpLCBHX0ZJTEVfVEVTVF9JU19ESVIpKTsKIAogICAgIHRlc3QtPmxvYWRVUkko
a1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2FwcGNhY2hlIikuZGF0YSgpKTsKICAgICB0ZXN0LT53
YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKQEAgLTE2MSwyMiArMTYxLDIyIEBAIHN0YXRpYyB2b2lk
IHRlc3RXZWJzaXRlRGF0YUNvbmZpZ3VyYXRpb24oV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogICAgIHVuc2lnbmVkIHRyaWVzQ291bnQgPSA0OwogICAgIHdoaWxlICghZ19m
aWxlX3Rlc3QoYXBwbGljYXRpb25DYWNoZURhdGFiYXNlLmdldCgpLCBHX0ZJTEVfVEVTVF9JU19S
RUdVTEFSKSAmJiAtLXRyaWVzQ291bnQpCiAgICAgICAgIHRlc3QtPndhaXQoMC4yNSk7Ci0gICAg
Z19hc3NlcnQodHJpZXNDb3VudCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0cmllc0NvdW50LCA+
LCAwKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZGlza0NhY2hlRGlyZWN0b3J5KGdfYnVpbGRf
ZmlsZW5hbWUoVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCAiZGlzay1jYWNoZSIsIG51bGxwdHIpKTsK
ICAgICBnX2Fzc2VydF9jbXBzdHIoZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpLCA9PSwgd2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9kaXNrX2NhY2hlX2RpcmVjdG9yeSh0ZXN0LT5tX21h
bmFnZXIpKTsKLSAgICBnX2Fzc2VydChnX2ZpbGVfdGVzdChkaXNrQ2FjaGVEaXJlY3RvcnkuZ2V0
KCksIEdfRklMRV9URVNUX0lTX0RJUikpOworICAgIGdfYXNzZXJ0X3RydWUoZ19maWxlX3Rlc3Qo
ZGlza0NhY2hlRGlyZWN0b3J5LmdldCgpLCBHX0ZJTEVfVEVTVF9JU19ESVIpKTsKIAogICAgIC8v
IENsZWFyIGFsbCBwZXJzaXN0ZW50IGNhY2hlcywgc2luY2UgdGhlIGRhdGEgZGlyIGlzIGNvbW1v
biB0byBhbGwgdGVzdCBjYXNlcy4KICAgICBzdGF0aWMgY29uc3QgV2ViS2l0V2Vic2l0ZURhdGFU
eXBlcyBwZXJzaXN0ZW50Q2FjaGVzID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGFUeXBl
cz4oV0VCS0lUX1dFQlNJVEVfREFUQV9ESVNLX0NBQ0hFIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9M
T0NBTF9TVE9SQUdFCiAgICAgICAgIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9XRUJTUUxfREFUQUJB
U0VTIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9JTkRFWEVEREJfREFUQUJBU0VTIHwgV0VCS0lUX1dF
QlNJVEVfREFUQV9PRkZMSU5FX0FQUExJQ0FUSU9OX0NBQ0hFIHwgV0VCS0lUX1dFQlNJVEVfREFU
QV9ERVZJQ0VfSURfSEFTSF9TQUxUKTsKICAgICB0ZXN0LT5jbGVhcihwZXJzaXN0ZW50Q2FjaGVz
LCAwKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+ZmV0Y2gocGVyc2lzdGVudENhY2hlcykpOworICAg
IGdfYXNzZXJ0X251bGwodGVzdC0+ZmV0Y2gocGVyc2lzdGVudENhY2hlcykpOwogCiAgICAgLy8g
VGhlIGRlZmF1bHQgY29udGV4dCBzaG91bGQgaGF2ZSBhIGRpZmZlcmVudCBtYW5hZ2VyIHdpdGgg
ZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCiAgICAgV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyKiBk
ZWZhdWx0TWFuYWdlciA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFn
ZXIod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkpOwotICAgIGdfYXNzZXJ0KFdFQktJ
VF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihkZWZhdWx0TWFuYWdlcikpOwotICAgIGdfYXNzZXJ0
KHRlc3QtPm1fbWFuYWdlciAhPSBkZWZhdWx0TWFuYWdlcik7CisgICAgZ19hc3NlcnRfdHJ1ZShX
RUJLSVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIoZGVmYXVsdE1hbmFnZXIpKTsKKyAgICBnX2Fz
c2VydF9jbXBoZXgodGVzdC0+bV9tYW5hZ2VyLCAhPSwgZGVmYXVsdE1hbmFnZXIpOwogICAgIGdf
YXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0b3Jh
Z2VfZGlyZWN0b3J5KHRlc3QtPm1fbWFuYWdlciksICE9LCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KGRlZmF1bHRNYW5hZ2VyKSk7CiAgICAg
Z19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfaW5kZXhlZGRi
X2RpcmVjdG9yeSh0ZXN0LT5tX21hbmFnZXIpLCAhPSwgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5h
Z2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KGRlZmF1bHRNYW5hZ2VyKSk7CiAgICAgZ19hc3Nl
cnRfY21wc3RyKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJl
Y3RvcnkodGVzdC0+bV9tYW5hZ2VyKSwgIT0sIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfZGlza19jYWNoZV9kaXJlY3RvcnkoZGVmYXVsdE1hbmFnZXIpKTsKQEAgLTE4NSw3ICsxODUs
NyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFDb25maWd1cmF0aW9uKFdlYnNpdGVEYXRh
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIC8vIFVzaW5nIFRlc3Q6OmRhdGFEaXJl
Y3RvcnkoKSB3ZSBnZXQgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBidXQgZm9yIGEgZGlmZmVy
cmVudCBwcmVmaXguCiAgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI+IGJhc2VE
YXRhTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3KCJi
YXNlLWRhdGEtZGlyZWN0b3J5IiwgVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCAiYmFzZS1jYWNoZS1k
aXJlY3RvcnkiLCBUZXN0OjpkYXRhRGlyZWN0b3J5KCksIG51bGxwdHIpKTsKLSAgICBnX2Fzc2Vy
dChXRUJLSVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIoYmFzZURhdGFNYW5hZ2VyLmdldCgpKSk7
CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIoYmFzZURh
dGFNYW5hZ2VyLmdldCgpKSk7CiAKICAgICBsb2NhbFN0b3JhZ2VEaXJlY3RvcnkucmVzZXQoZ19i
dWlsZF9maWxlbmFtZShUZXN0OjpkYXRhRGlyZWN0b3J5KCksICJsb2NhbHN0b3JhZ2UiLCBudWxs
cHRyKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfbG9jYWxfc3RvcmFnZV9kaXJlY3RvcnkoYmFzZURhdGFNYW5hZ2VyLmdldCgpKSwgPT0sIGxv
Y2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CkBAIC0yMjUsMjYgKzIyNSwyNiBAQCBzdGF0aWMg
dm9pZCBlcGhlbWVyYWxWaWV3bG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2Vi
S2l0TG9hZEV2ZW50IGxvYQogc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhRXBoZW1lcmFsKFdl
YlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIEdSZWZQdHI8V2ViS2l0V2Vi
c2l0ZURhdGFNYW5hZ2VyPiBtYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJzaXRlX2RhdGFf
bWFuYWdlcl9uZXdfZXBoZW1lcmFsKCkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9pc19lcGhlbWVyYWwobWFuYWdlci5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KCF3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Jhc2VfZGF0YV9kaXJlY3RvcnkobWFuYWdl
ci5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0
X2Jhc2VfY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCghd2Vi
a2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdlX2RpcmVjdG9yeShtYW5h
Z2VyLmdldCgpKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9n
ZXRfZGlza19jYWNoZV9kaXJlY3RvcnkobWFuYWdlci5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KCF3
ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBwbGljYXRpb25fY2FjaGVf
ZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYnNpdGVf
ZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKLSAg
ICBnX2Fzc2VydCghd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0
b3J5KG1hbmFnZXIuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9pc19lcGhlbWVyYWwobWFuYWdlci5nZXQoKSkpOworICAgIGdfYXNzZXJ0X251
bGwod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9iYXNlX2RhdGFfZGlyZWN0b3J5KG1h
bmFnZXIuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9nZXRfYmFzZV9jYWNoZV9kaXJlY3RvcnkobWFuYWdlci5nZXQoKSkpOworICAgIGdfYXNz
ZXJ0X251bGwod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdlX2Rp
cmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsK
KyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfb2ZmbGlu
ZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkobWFuYWdlci5nZXQoKSkpOworICAgIGdfYXNz
ZXJ0X251bGwod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0
b3J5KG1hbmFnZXIuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJzaXRlX2Rh
dGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7CiAKICAgICAv
LyBDb25maWd1cmF0aW9uIGlzIGlnbm9yZWQgd2hlbiBpcy1lcGhlbWVyYWwgaXMgdXNlZC4KICAg
ICBtYW5hZ2VyID0gYWRvcHRHUmVmKFdFQktJVF9XRUJTSVRFX0RBVEFfTUFOQUdFUihnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfV0VCU0lURV9EQVRBX01BTkFHRVIsICJiYXNlLWRhdGEtZGlyZWN0
b3J5IiwgVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCAiaXMtZXBoZW1lcmFsIiwgVFJVRSwgbnVsbHB0
cikpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1l
cmFsKG1hbmFnZXIuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2dldF9iYXNlX2RhdGFfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKKyAgICBnX2Fz
c2VydF90cnVlKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhlbWVyYWwobWFuYWdl
ci5nZXQoKSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2dldF9iYXNlX2RhdGFfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKIAogICAgIC8vIE5vbiBw
ZXJzaXN0ZW50IGRhdGEgY2FuIGJlIHF1ZXJpZWQgaW4gYW4gZXBoZW1lcmFsIG1hbmFnZXIuCiAg
ICAgR1JlZlB0cjxXZWJLaXRXZWJDb250ZXh0PiB3ZWJDb250ZXh0ID0gYWRvcHRHUmVmKHdlYmtp
dF93ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJzaXRlX2RhdGFfbWFuYWdlcihtYW5hZ2VyLmdldCgp
KSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbCh3ZWJDb250
ZXh0LmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBo
ZW1lcmFsKHdlYkNvbnRleHQuZ2V0KCkpKTsKICAgICBhdXRvIHdlYlZpZXcgPSBUZXN0OjphZG9w
dFZpZXcoVGVzdDo6Y3JlYXRlV2ViVmlldyh3ZWJDb250ZXh0LmdldCgpKSk7Ci0gICAgZ19hc3Nl
cnQod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh3ZWJWaWV3LmdldCgpKSk7Ci0gICAgZ19h
c3NlcnQod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3ZWJWaWV3Lmdl
dCgpKSA9PSBtYW5hZ2VyLmdldCgpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmll
d19pc19lcGhlbWVyYWwod2ViVmlldy5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYlZpZXcuZ2V0KCkpLCA9PSwg
bWFuYWdlci5nZXQoKSk7CiAKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlZpZXcuZ2V0KCksICJs
b2FkLWNoYW5nZWQiLCBHX0NBTExCQUNLKGVwaGVtZXJhbFZpZXdsb2FkQ2hhbmdlZCksIHRlc3Qp
OwogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaSh3ZWJWaWV3LmdldCgpLCBrU2VydmVyLT5n
ZXRVUklGb3JQYXRoKCIvZW1wdHkiKS5kYXRhKCkpOwpAQCAtMjUzLDEwICsyNTMsMTAgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhRXBoZW1lcmFsKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogICAgIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9mZXRjaChtYW5hZ2Vy
LmdldCgpLCBXRUJLSVRfV0VCU0lURV9EQVRBX01FTU9SWV9DQUNIRSwgbnVsbHB0ciwgW10oR09i
amVjdCogbWFuYWdlciwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7
CiAgICAgICAgIGF1dG8qIHRlc3QgPSBzdGF0aWNfY2FzdDxXZWJWaWV3VGVzdCo+KHVzZXJEYXRh
KTsKICAgICAgICAgR0xpc3QqIGRhdGFMaXN0ID0gd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2Vy
X2ZldGNoX2ZpbmlzaChXRUJLSVRfV0VCU0lURV9EQVRBX01BTkFHRVIobWFuYWdlciksIHJlc3Vs
dCwgbnVsbHB0cik7Ci0gICAgICAgIGdfYXNzZXJ0KGRhdGFMaXN0KTsKKyAgICAgICAgZ19hc3Nl
cnRfbm9ubnVsbChkYXRhTGlzdCk7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19saXN0X2xl
bmd0aChkYXRhTGlzdCksID09LCAxKTsKICAgICAgICAgV2ViS2l0V2Vic2l0ZURhdGEqIGRhdGEg
PSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YSo+KGRhdGFMaXN0LT5kYXRhKTsKLSAgICAg
ICAgZ19hc3NlcnQoZGF0YSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YSk7CiAgICAg
ICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X25ld19mb3JfdXJpKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOwogICAgICAg
ICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRfbmFtZShkYXRhKSwgPT0s
IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSk7CiAgICAgICAgIHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKQEAgLTI3MCw3ICsyNzAsNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFDYWNoZShXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IFdlYktpdFdlYnNpdGVEYXRhVHlwZXMgY2Fj
aGVUeXBlcyA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhVHlwZXM+KFdFQktJVF9XRUJT
SVRFX0RBVEFfTUVNT1JZX0NBQ0hFIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9ESVNLX0NBQ0hFKTsK
ICAgICBHTGlzdCogZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChjYWNoZVR5cGVzKTsKLSAgICBnX2Fz
c2VydCghZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X251bGwoZGF0YUxpc3QpOwogCiAgICAgdGVz
dC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvZW1wdHkiKS5kYXRhKCkpOwogICAg
IHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwpAQCAtMjgxLDEwICsyODEsMTAgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhQ2FjaGUoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogICAgIHRlc3QtPndhaXQoMSk7CiAKICAgICBkYXRhTGlzdCA9IHRlc3QtPmZl
dGNoKGNhY2hlVHlwZXMpOwotICAgIGdfYXNzZXJ0KGRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9u
b25udWxsKGRhdGFMaXN0KTsKICAgICBnX2Fzc2VydF9jbXB1aW50KGdfbGlzdF9sZW5ndGgoZGF0
YUxpc3QpLCA9PSwgMSk7CiAgICAgV2ViS2l0V2Vic2l0ZURhdGEqIGRhdGEgPSBzdGF0aWNfY2Fz
dDxXZWJLaXRXZWJzaXRlRGF0YSo+KGRhdGFMaXN0LT5kYXRhKTsKLSAgICBnX2Fzc2VydChkYXRh
KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGEpOwogICAgIFdlYktpdFNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJpKGtTZXJ2ZXItPmdl
dFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vi
c2l0ZV9kYXRhX2dldF9uYW1lKGRhdGEpLCA9PSwgd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRf
aG9zdChvcmlnaW4pKTsKICAgICB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKG9yaWdpbik7
CkBAIC0yOTUsMTIgKzI5NSwxMiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFDYWNoZShX
ZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICAvLyBUcnkgYWdhaW4g
YnV0IG9ubHkgZ2V0dGluZyBkaXNrIGNhY2hlLgogICAgIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2go
V0VCS0lUX1dFQlNJVEVfREFUQV9ESVNLX0NBQ0hFKTsKLSAgICBnX2Fzc2VydChkYXRhTGlzdCk7
CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRhTGlzdCk7CiAgICAgZ19hc3NlcnRfY21wdWludChn
X2xpc3RfbGVuZ3RoKGRhdGFMaXN0KSwgPT0sIDEpOwogICAgIGRhdGEgPSBzdGF0aWNfY2FzdDxX
ZWJLaXRXZWJzaXRlRGF0YSo+KGRhdGFMaXN0LT5kYXRhKTsKLSAgICBnX2Fzc2VydChkYXRhKTsK
LSAgICBnX2Fzc2VydCh3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF90eXBlcyhkYXRhKSAmIFdFQktJ
VF9XRUJTSVRFX0RBVEFfRElTS19DQUNIRSk7Ci0gICAgZ19hc3NlcnQoISh3ZWJraXRfd2Vic2l0
ZV9kYXRhX2dldF90eXBlcyhkYXRhKSAmIFdFQktJVF9XRUJTSVRFX0RBVEFfTUVNT1JZX0NBQ0hF
KSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRhKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtp
dF93ZWJzaXRlX2RhdGFfZ2V0X3R5cGVzKGRhdGEpICYgV0VCS0lUX1dFQlNJVEVfREFUQV9ESVNL
X0NBQ0hFKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF90eXBl
cyhkYXRhKSAmIFdFQktJVF9XRUJTSVRFX0RBVEFfTUVNT1JZX0NBQ0hFKTsKIAogICAgIEdVbmlx
dWVQdHI8Y2hhcj4gZmlsZVVSTChnX3N0cmR1cF9wcmludGYoImZpbGU6Ly8lcy9zaW1wbGUuaHRt
bCIsIFRlc3Q6OmdldFJlc291cmNlc0RpcihUZXN0OjpXZWJLaXQyUmVzb3VyY2VzKS5kYXRhKCkp
KTsKICAgICB0ZXN0LT5sb2FkVVJJKGZpbGVVUkwuZ2V0KCkpOwpAQCAtMzEyLDI0ICszMTIsMjQg
QEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhQ2FjaGUoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogCiAgICAgLy8gTG9jYWwgZmlsZXMgYXJlIGdyb3VwZWQuCiAgICAg
ZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChjYWNoZVR5cGVzKTsKLSAgICBnX2Fzc2VydChkYXRhTGlz
dCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRhTGlzdCk7CiAgICAgZ19hc3NlcnRfY21wdWlu
dChnX2xpc3RfbGVuZ3RoKGRhdGFMaXN0KSwgPT0sIDIpOwogICAgIEdMaXN0KiBpdGVtTGlzdCA9
IGdfbGlzdF9maW5kX2N1c3RvbShkYXRhTGlzdCwgbnVsbHB0ciwgW10oZ2NvbnN0cG9pbnRlciBp
dGVtLCBnY29uc3Rwb2ludGVyKSAtPiBpbnQgewogICAgICAgICBXZWJLaXRXZWJzaXRlRGF0YSog
ZGF0YSA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhKj4oY29uc3RfY2FzdDxncG9pbnRl
cj4oaXRlbSkpOwogICAgICAgICByZXR1cm4gZ19zdHJjbXAwKHdlYmtpdF93ZWJzaXRlX2RhdGFf
Z2V0X25hbWUoZGF0YSksICJMb2NhbCBmaWxlcyIpOwogICAgIH0pOwotICAgIGdfYXNzZXJ0KGl0
ZW1MaXN0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGl0ZW1MaXN0KTsKICAgICBkYXRhID0gc3Rh
dGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGEqPihpdGVtTGlzdC0+ZGF0YSk7Ci0gICAgZ19hc3Nl
cnQoZGF0YSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRfdHlwZXMoZGF0
YSkgJiBXRUJLSVRfV0VCU0lURV9EQVRBX01FTU9SWV9DQUNIRSk7CisgICAgZ19hc3NlcnRfbm9u
bnVsbChkYXRhKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X3R5
cGVzKGRhdGEpICYgV0VCS0lUX1dFQlNJVEVfREFUQV9NRU1PUllfQ0FDSEUpOwogICAgIC8vIExv
Y2FsIGZpbGVzIGFyZSBuZXZlciBzdG9yZWQgaW4gZGlzayBjYWNoZS4KLSAgICBnX2Fzc2VydCgh
KHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X3R5cGVzKGRhdGEpICYgV0VCS0lUX1dFQlNJVEVfREFU
QV9ESVNLX0NBQ0hFKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYnNpdGVfZGF0YV9n
ZXRfdHlwZXMoZGF0YSkgJiBXRUJLSVRfV0VCU0lURV9EQVRBX0RJU0tfQ0FDSEUpOwogCiAgICAg
Ly8gQ2xlYXIgZGF0YSBtb2RpZmllZCBzaW5jZSB0aGUgbGFzdCBtaWNyb3NlY29uZCBzaG91bGQg
bm90IGNsZWFyIGFueXRoaW5nLgogICAgIC8vIFVzZSBkaXNrLWNhY2hlIGJlY2F1c2UgbWVtb3J5
IGNhY2hlIGlnbm9yZXMgdGhlIG1vZGlmaWVkIHNpbmNlLgogICAgIHRlc3QtPmNsZWFyKFdFQktJ
VF9XRUJTSVRFX0RBVEFfRElTS19DQUNIRSwgMSk7CiAgICAgZGF0YUxpc3QgPSB0ZXN0LT5mZXRj
aChjYWNoZVR5cGVzKTsKLSAgICBnX2Fzc2VydChkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbm9u
bnVsbChkYXRhTGlzdCk7CiAgICAgZ19hc3NlcnRfY21wdWludChnX2xpc3RfbGVuZ3RoKGRhdGFM
aXN0KSwgPT0sIDIpOwogCiAgICAgLy8gUmVtb3ZlIG1lbW9yeSBjYWNoZSBvbmx5IGZvciBsb2Nh
bCBmaWxlcy4KQEAgLTMzNywyNiArMzM3LDI2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0
YUNhY2hlKFdlYnNpdGVEYXRhVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAgICAgV2Vi
S2l0V2Vic2l0ZURhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YSo+KGNv
bnN0X2Nhc3Q8Z3BvaW50ZXI+KGl0ZW0pKTsKICAgICAgICAgcmV0dXJuIGdfc3RyY21wMCh3ZWJr
aXRfd2Vic2l0ZV9kYXRhX2dldF9uYW1lKGRhdGEpLCAiTG9jYWwgZmlsZXMiKTsKICAgICB9KTsK
LSAgICBnX2Fzc2VydChpdGVtTGlzdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChpdGVtTGlzdCk7
CiAgICAgR0xpc3QgcmVtb3ZlTGlzdCA9IHsgaXRlbUxpc3QtPmRhdGEsIG51bGxwdHIsIG51bGxw
dHIgfTsKICAgICB0ZXN0LT5yZW1vdmUoV0VCS0lUX1dFQlNJVEVfREFUQV9NRU1PUllfQ0FDSEUs
ICZyZW1vdmVMaXN0KTsKICAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKGNhY2hlVHlwZXMpOwot
ICAgIGdfYXNzZXJ0KGRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGFMaXN0KTsK
ICAgICBnX2Fzc2VydF9jbXB1aW50KGdfbGlzdF9sZW5ndGgoZGF0YUxpc3QpLCA9PSwgMSk7CiAg
ICAgZGF0YSA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhKj4oZGF0YUxpc3QtPmRhdGEp
OwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X3R5cGVzKGRhdGEpICYgV0VC
S0lUX1dFQlNJVEVfREFUQV9ESVNLX0NBQ0hFKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93
ZWJzaXRlX2RhdGFfZ2V0X3R5cGVzKGRhdGEpICYgV0VCS0lUX1dFQlNJVEVfREFUQV9ESVNLX0NB
Q0hFKTsKIAogICAgIC8vIENsZWFyIGFsbC4KICAgICB0ZXN0LT5jbGVhcihjYWNoZVR5cGVzLCAw
KTsKICAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKGNhY2hlVHlwZXMpOwotICAgIGdfYXNzZXJ0
KCFkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbnVsbChkYXRhTGlzdCk7CiB9CiAKIHN0YXRpYyB2
b2lkIHRlc3RXZWJzaXRlRGF0YVN0b3JhZ2UoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogewogICAgIHN0YXRpYyBjb25zdCBXZWJLaXRXZWJzaXRlRGF0YVR5cGVzIHN0b3Jh
Z2VUeXBlcyA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhVHlwZXM+KFdFQktJVF9XRUJT
SVRFX0RBVEFfU0VTU0lPTl9TVE9SQUdFIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9MT0NBTF9TVE9S
QUdFKTsKICAgICBHTGlzdCogZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChzdG9yYWdlVHlwZXMpOwot
ICAgIGdfYXNzZXJ0KCFkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbnVsbChkYXRhTGlzdCk7CiAK
ICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9zZXNzaW9uc3RvcmFn
ZSIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CkBAIC0zNjgs
MTAgKzM2OCwxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFTdG9yYWdlKFdlYnNpdGVE
YXRhVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT53YWl0KDEpOwogCiAgICAg
ZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChzdG9yYWdlVHlwZXMpOwotICAgIGdfYXNzZXJ0KGRhdGFM
aXN0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGFMaXN0KTsKICAgICBnX2Fzc2VydF9jbXB1
aW50KGdfbGlzdF9sZW5ndGgoZGF0YUxpc3QpLCA9PSwgMSk7CiAgICAgV2ViS2l0V2Vic2l0ZURh
dGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YSo+KGRhdGFMaXN0LT5kYXRh
KTsKLSAgICBnX2Fzc2VydChkYXRhKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGEpOwogICAg
IFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25l
d19mb3JfdXJpKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOwogICAgIGdfYXNz
ZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF9uYW1lKGRhdGEpLCA9PSwgd2Via2l0
X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pKTsKICAgICB3ZWJraXRfc2VjdXJpdHlf
b3JpZ2luX3VucmVmKG9yaWdpbik7CkBAIC0zODMsNTIgKzM4Myw1MiBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2Vic2l0ZURhdGFTdG9yYWdlKFdlYnNpdGVEYXRhVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKICAgICAvLyBHZXQgYWxzbyBjYWNoZWQgZGF0YSwgYW5kIGNsZWFyIGl0LgogICAgIHN0YXRp
YyBjb25zdCBXZWJLaXRXZWJzaXRlRGF0YVR5cGVzIGNhY2hlQW5kU3RvcmFnZVR5cGVzID0gc3Rh
dGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGFUeXBlcz4oc3RvcmFnZVR5cGVzIHwgV0VCS0lUX1dF
QlNJVEVfREFUQV9NRU1PUllfQ0FDSEUgfCBXRUJLSVRfV0VCU0lURV9EQVRBX0RJU0tfQ0FDSEUp
OwogICAgIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goY2FjaGVBbmRTdG9yYWdlVHlwZXMpOwotICAg
IGdfYXNzZXJ0KGRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGFMaXN0KTsKICAg
ICBnX2Fzc2VydF9jbXB1aW50KGdfbGlzdF9sZW5ndGgoZGF0YUxpc3QpLCA9PSwgMSk7CiAgICAg
ZGF0YSA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhKj4oZGF0YUxpc3QtPmRhdGEpOwot
ICAgIGdfYXNzZXJ0KGRhdGEpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YSk7CiAgICAgZ19h
c3NlcnRfY21wdWludCh3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF90eXBlcyhkYXRhKSwgPT0sIGNh
Y2hlQW5kU3RvcmFnZVR5cGVzKTsKICAgICB0ZXN0LT5jbGVhcihzdGF0aWNfY2FzdDxXZWJLaXRX
ZWJzaXRlRGF0YVR5cGVzPihXRUJLSVRfV0VCU0lURV9EQVRBX01FTU9SWV9DQUNIRSB8IFdFQktJ
VF9XRUJTSVRFX0RBVEFfRElTS19DQUNIRSksIDApOwogCiAgICAgLy8gR2V0IGFsbCB0eXBlcyBh
Z2FpbiwgYnV0IG9ubHkgc3RvcmFnZSBpcyByZXRyaWV2ZWQgbm93LgogICAgIGRhdGFMaXN0ID0g
dGVzdC0+ZmV0Y2goY2FjaGVBbmRTdG9yYWdlVHlwZXMpOwotICAgIGdfYXNzZXJ0KGRhdGFMaXN0
KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGFMaXN0KTsKICAgICBnX2Fzc2VydF9jbXB1aW50
KGdfbGlzdF9sZW5ndGgoZGF0YUxpc3QpLCA9PSwgMSk7CiAgICAgZGF0YSA9IHN0YXRpY19jYXN0
PFdlYktpdFdlYnNpdGVEYXRhKj4oZGF0YUxpc3QtPmRhdGEpOwotICAgIGdfYXNzZXJ0KGRhdGEp
OworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YSk7CiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJr
aXRfd2Vic2l0ZV9kYXRhX2dldF90eXBlcyhkYXRhKSwgPT0sIHN0b3JhZ2VUeXBlcyk7CiAKICAg
ICAvLyBSZW1vdmUgdGhlIHNlc3Npb24gc3RvcmFnZS4KICAgICBHTGlzdCByZW1vdmVMaXN0ID0g
eyBkYXRhLCBudWxscHRyLCBudWxscHRyIH07CiAgICAgdGVzdC0+cmVtb3ZlKFdFQktJVF9XRUJT
SVRFX0RBVEFfU0VTU0lPTl9TVE9SQUdFLCAmcmVtb3ZlTGlzdCk7CiAgICAgZGF0YUxpc3QgPSB0
ZXN0LT5mZXRjaChzdG9yYWdlVHlwZXMpOwotICAgIGdfYXNzZXJ0KGRhdGFMaXN0KTsKKyAgICBn
X2Fzc2VydF9ub25udWxsKGRhdGFMaXN0KTsKICAgICBnX2Fzc2VydF9jbXB1aW50KGdfbGlzdF9s
ZW5ndGgoZGF0YUxpc3QpLCA9PSwgMSk7CiAgICAgZGF0YSA9IHN0YXRpY19jYXN0PFdlYktpdFdl
YnNpdGVEYXRhKj4oZGF0YUxpc3QtPmRhdGEpOwotICAgIGdfYXNzZXJ0KCEod2Via2l0X3dlYnNp
dGVfZGF0YV9nZXRfdHlwZXMoZGF0YSkgJiBXRUJLSVRfV0VCU0lURV9EQVRBX1NFU1NJT05fU1RP
UkFHRSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X3R5cGVzKGRhdGEp
ICYgV0VCS0lUX1dFQlNJVEVfREFUQV9MT0NBTF9TVE9SQUdFKTsKKyAgICBnX2Fzc2VydF9mYWxz
ZSh3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF90eXBlcyhkYXRhKSAmIFdFQktJVF9XRUJTSVRFX0RB
VEFfU0VTU0lPTl9TVE9SQUdFKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJzaXRlX2Rh
dGFfZ2V0X3R5cGVzKGRhdGEpICYgV0VCS0lUX1dFQlNJVEVfREFUQV9MT0NBTF9TVE9SQUdFKTsK
IAogICAgIC8vIENsZWFyIGFsbC4KICAgICB0ZXN0LT5jbGVhcihjYWNoZUFuZFN0b3JhZ2VUeXBl
cywgMCk7CiAgICAgZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChjYWNoZUFuZFN0b3JhZ2VUeXBlcyk7
Ci0gICAgZ19hc3NlcnQoIWRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9udWxsKGRhdGFMaXN0KTsK
IH0KIAogc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhRGF0YWJhc2VzKFdlYnNpdGVEYXRhVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBzdGF0aWMgY29uc3QgV2ViS2l0V2Vic2l0
ZURhdGFUeXBlcyBkYXRhYmFzZVR5cGVzID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGFU
eXBlcz4oV0VCS0lUX1dFQlNJVEVfREFUQV9XRUJTUUxfREFUQUJBU0VTIHwgV0VCS0lUX1dFQlNJ
VEVfREFUQV9JTkRFWEVEREJfREFUQUJBU0VTKTsKICAgICBHTGlzdCogZGF0YUxpc3QgPSB0ZXN0
LT5mZXRjaChkYXRhYmFzZVR5cGVzKTsKLSAgICBnX2Fzc2VydCghZGF0YUxpc3QpOworICAgIGdf
YXNzZXJ0X251bGwoZGF0YUxpc3QpOwogCiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRV
UklGb3JQYXRoKCIvZW1wdHkiKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5p
c2hlZCgpOwogICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2lu
ZG93LmluZGV4ZWREQi5vcGVuKCdUZXN0RGF0YWJhc2UnKTsiLCBudWxscHRyKTsKIAogICAgIGRh
dGFMaXN0ID0gdGVzdC0+ZmV0Y2goZGF0YWJhc2VUeXBlcyk7Ci0gICAgZ19hc3NlcnQoZGF0YUxp
c3QpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YUxpc3QpOwogICAgIGdfYXNzZXJ0X2NtcHVp
bnQoZ19saXN0X2xlbmd0aChkYXRhTGlzdCksID09LCAxKTsKICAgICBXZWJLaXRXZWJzaXRlRGF0
YSogZGF0YSA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhKj4oZGF0YUxpc3QtPmRhdGEp
OwotICAgIGdfYXNzZXJ0KGRhdGEpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YSk7CiAgICAg
V2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3
X2Zvcl91cmkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CiAgICAgZ19hc3Nl
cnRfY21wc3RyKHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X25hbWUoZGF0YSksID09LCB3ZWJraXRf
c2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdpbikpOwogICAgIHdlYmtpdF9zZWN1cml0eV9v
cmlnaW5fdW5yZWYob3JpZ2luKTsKQEAgLTQzOCwxMCArNDM4LDEwIEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJzaXRlRGF0YURhdGFiYXNlcyhXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiAKICAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImRiID0g
b3BlbkRhdGFiYXNlKFwiVGVzdERhdGFiYXNlXCIsIFwiMS4wXCIsIFwiVGVzdERhdGFiYXNlXCIs
IDEpOyIsIG51bGxwdHIpOwogICAgIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goZGF0YWJhc2VUeXBl
cyk7Ci0gICAgZ19hc3NlcnQoZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YUxp
c3QpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19saXN0X2xlbmd0aChkYXRhTGlzdCksID09LCAx
KTsKICAgICBkYXRhID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGEqPihkYXRhTGlzdC0+
ZGF0YSk7Ci0gICAgZ19hc3NlcnQoZGF0YSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRhKTsK
ICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X3R5cGVzKGRhdGEp
LCA9PSwgZGF0YWJhc2VUeXBlcyk7CiAgICAgLy8gRGF0YWJhc2Ugc2l6ZXMgYXJlIHVua25vd24u
CiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF9zaXplKGRhdGEs
IFdFQktJVF9XRUJTSVRFX0RBVEFfSU5ERVhFRERCX0RBVEFCQVNFUyksID09LCAwKTsKQEAgLTQ1
MSwyOSArNDUxLDI5IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YURhdGFiYXNlcyhXZWJz
aXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgR0xpc3QgcmVtb3ZlTGlzdCA9
IHsgZGF0YSwgbnVsbHB0ciwgbnVsbHB0ciB9OwogICAgIHRlc3QtPnJlbW92ZShkYXRhYmFzZVR5
cGVzLCAmcmVtb3ZlTGlzdCk7CiAgICAgZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChkYXRhYmFzZVR5
cGVzKTsKLSAgICBnX2Fzc2VydCghZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X251bGwoZGF0YUxp
c3QpOwogCiAgICAgLy8gQ2xlYXIgYWxsLgogICAgIHN0YXRpYyBjb25zdCBXZWJLaXRXZWJzaXRl
RGF0YVR5cGVzIGNhY2hlQW5kRGF0YWJhc2VUeXBlcyA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNp
dGVEYXRhVHlwZXM+KGRhdGFiYXNlVHlwZXMgfCBXRUJLSVRfV0VCU0lURV9EQVRBX01FTU9SWV9D
QUNIRSB8IFdFQktJVF9XRUJTSVRFX0RBVEFfRElTS19DQUNIRSk7CiAgICAgdGVzdC0+Y2xlYXIo
Y2FjaGVBbmREYXRhYmFzZVR5cGVzLCAwKTsKICAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKGNh
Y2hlQW5kRGF0YWJhc2VUeXBlcyk7Ci0gICAgZ19hc3NlcnQoIWRhdGFMaXN0KTsKKyAgICBnX2Fz
c2VydF9udWxsKGRhdGFMaXN0KTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhQXBw
Y2FjaGUoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIEdMaXN0
KiBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKFdFQktJVF9XRUJTSVRFX0RBVEFfT0ZGTElORV9BUFBM
SUNBVElPTl9DQUNIRSk7Ci0gICAgZ19hc3NlcnQoIWRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9u
dWxsKGRhdGFMaXN0KTsKIAogICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0
aCgiL2FwcGNhY2hlIikuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQo
KTsKIAogICAgIHRlc3QtPndhaXQoMSk7CiAgICAgZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChXRUJL
SVRfV0VCU0lURV9EQVRBX09GRkxJTkVfQVBQTElDQVRJT05fQ0FDSEUpOwotICAgIGdfYXNzZXJ0
KGRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGFMaXN0KTsKICAgICBnX2Fzc2Vy
dF9jbXB1aW50KGdfbGlzdF9sZW5ndGgoZGF0YUxpc3QpLCA9PSwgMSk7CiAgICAgV2ViS2l0V2Vi
c2l0ZURhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YSo+KGRhdGFMaXN0
LT5kYXRhKTsKLSAgICBnX2Fzc2VydChkYXRhKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGEp
OwogICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX25ld19mb3JfdXJpKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOwogICAg
IGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF9uYW1lKGRhdGEpLCA9PSwg
d2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pKTsKICAgICB3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX3VucmVmKG9yaWdpbik7CkBAIC00ODQsMjggKzQ4NCwyOCBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2Vic2l0ZURhdGFBcHBjYWNoZShXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAgICAgR0xpc3QgcmVtb3ZlTGlzdCA9IHsgZGF0YSwgbnVsbHB0ciwgbnVsbHB0
ciB9OwogICAgIHRlc3QtPnJlbW92ZShXRUJLSVRfV0VCU0lURV9EQVRBX09GRkxJTkVfQVBQTElD
QVRJT05fQ0FDSEUsICZyZW1vdmVMaXN0KTsKICAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKFdF
QktJVF9XRUJTSVRFX0RBVEFfT0ZGTElORV9BUFBMSUNBVElPTl9DQUNIRSk7Ci0gICAgZ19hc3Nl
cnQoIWRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9udWxsKGRhdGFMaXN0KTsKIAogICAgIC8vIENs
ZWFyIGFsbC4KICAgICBzdGF0aWMgY29uc3QgV2ViS2l0V2Vic2l0ZURhdGFUeXBlcyBjYWNoZUFu
ZEFwcGNhY2hlVHlwZXMgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YVR5cGVzPihXRUJL
SVRfV0VCU0lURV9EQVRBX09GRkxJTkVfQVBQTElDQVRJT05fQ0FDSEUgfCBXRUJLSVRfV0VCU0lU
RV9EQVRBX01FTU9SWV9DQUNIRSB8IFdFQktJVF9XRUJTSVRFX0RBVEFfRElTS19DQUNIRSk7CiAg
ICAgdGVzdC0+Y2xlYXIoY2FjaGVBbmRBcHBjYWNoZVR5cGVzLCAwKTsKICAgICBkYXRhTGlzdCA9
IHRlc3QtPmZldGNoKGNhY2hlQW5kQXBwY2FjaGVUeXBlcyk7Ci0gICAgZ19hc3NlcnQoIWRhdGFM
aXN0KTsKKyAgICBnX2Fzc2VydF9udWxsKGRhdGFMaXN0KTsKIH0KIAogc3RhdGljIHZvaWQgdGVz
dFdlYnNpdGVEYXRhQ29va2llcyhXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiB7CiAgICAgR0xpc3QqIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goV0VCS0lUX1dFQlNJVEVfREFU
QV9DT09LSUVTKTsKLSAgICBnX2Fzc2VydCghZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X251bGwo
ZGF0YUxpc3QpOwogCiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIv
ZW1wdHkiKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCiAg
ICAgZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChXRUJLSVRfV0VCU0lURV9EQVRBX0NPT0tJRVMpOwot
ICAgIGdfYXNzZXJ0KGRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGFMaXN0KTsK
ICAgICBnX2Fzc2VydF9jbXB1aW50KGdfbGlzdF9sZW5ndGgoZGF0YUxpc3QpLCA9PSwgMSk7CiAg
ICAgV2ViS2l0V2Vic2l0ZURhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0
YSo+KGRhdGFMaXN0LT5kYXRhKTsKLSAgICBnX2Fzc2VydChkYXRhKTsKKyAgICBnX2Fzc2VydF9u
b25udWxsKGRhdGEpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX2dl
dF9uYW1lKGRhdGEpLCA9PSwgIjEyNy4wLjAuMSIpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Vi
a2l0X3dlYnNpdGVfZGF0YV9nZXRfdHlwZXMoZGF0YSksID09LCBXRUJLSVRfV0VCU0lURV9EQVRB
X0NPT0tJRVMpOwogICAgIC8vIENvb2tpZXMgc2l6ZSBpcyB1bmtub3duLgpAQCAtNTE0LDEzICs1
MTQsMTMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhQ29va2llcyhXZWJzaXRlRGF0YVRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgR0xpc3QgcmVtb3ZlTGlzdCA9IHsgZGF0YSwg
bnVsbHB0ciwgbnVsbHB0ciB9OwogICAgIHRlc3QtPnJlbW92ZShXRUJLSVRfV0VCU0lURV9EQVRB
X0NPT0tJRVMsICZyZW1vdmVMaXN0KTsKICAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKFdFQktJ
VF9XRUJTSVRFX0RBVEFfQ09PS0lFUyk7Ci0gICAgZ19hc3NlcnQoIWRhdGFMaXN0KTsKKyAgICBn
X2Fzc2VydF9udWxsKGRhdGFMaXN0KTsKIAogICAgIC8vIENsZWFyIGFsbC4KICAgICBzdGF0aWMg
Y29uc3QgV2ViS2l0V2Vic2l0ZURhdGFUeXBlcyBjYWNoZUFuZENvb2tpZVR5cGVzID0gc3RhdGlj
X2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGFUeXBlcz4oV0VCS0lUX1dFQlNJVEVfREFUQV9DT09LSUVT
IHwgV0VCS0lUX1dFQlNJVEVfREFUQV9NRU1PUllfQ0FDSEUgfCBXRUJLSVRfV0VCU0lURV9EQVRB
X0RJU0tfQ0FDSEUpOwogICAgIHRlc3QtPmNsZWFyKGNhY2hlQW5kQ29va2llVHlwZXMsIDApOwog
ICAgIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goY2FjaGVBbmRDb29raWVUeXBlcyk7Ci0gICAgZ19h
c3NlcnQoIWRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9udWxsKGRhdGFMaXN0KTsKIH0KIAogc3Rh
dGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhRGV2aWNlSWRIYXNoU2FsdChXZWJzaXRlRGF0YVRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC01MzIsMTcgKzUzMiwxNyBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2Vic2l0ZURhdGFEZXZpY2VJZEhhc2hTYWx0KFdlYnNpdGVEYXRhVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcgogICAgIHRlc3QtPmNsZWFyKFdFQktJVF9XRUJTSVRFX0RBVEFfREVWSUNFX0lE
X0hBU0hfU0FMVCwgMCk7CiAKICAgICBHTGlzdCogZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChXRUJL
SVRfV0VCU0lURV9EQVRBX0RFVklDRV9JRF9IQVNIX1NBTFQpOwotICAgIGdfYXNzZXJ0KCFkYXRh
TGlzdCk7CisgICAgZ19hc3NlcnRfbnVsbChkYXRhTGlzdCk7CiAKICAgICB0ZXN0LT5sb2FkVVJJ
KGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9lbnVtZXJhdGVkZXZpY2VzIikuZGF0YSgpKTsKICAg
ICB0ZXN0LT53YWl0VW50aWxUaXRsZUNoYW5nZWRUbygiRmluaXNoZWQiKTsKIAogICAgIGRhdGFM
aXN0ID0gdGVzdC0+ZmV0Y2goV0VCS0lUX1dFQlNJVEVfREFUQV9ERVZJQ0VfSURfSEFTSF9TQUxU
KTsKLSAgICBnX2Fzc2VydChkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRhTGlz
dCk7CiAKICAgICBnX2Fzc2VydF9jbXB1aW50KGdfbGlzdF9sZW5ndGgoZGF0YUxpc3QpLCA9PSwg
MSk7CiAgICAgV2ViS2l0V2Vic2l0ZURhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJz
aXRlRGF0YSo+KGRhdGFMaXN0LT5kYXRhKTsKLSAgICBnX2Fzc2VydChkYXRhKTsKKyAgICBnX2Fz
c2VydF9ub25udWxsKGRhdGEpOwogICAgIFdlYktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3
ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ld19mb3JfdXJpKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgo
Ii8iKS5kYXRhKCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX2dl
dF9uYW1lKGRhdGEpLCA9PSwgd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4p
KTsKICAgICB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3VucmVmKG9yaWdpbik7CkBAIC01NTEsMjcg
KzU1MSwyNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFEZXZpY2VJZEhhc2hTYWx0KFdl
YnNpdGVEYXRhVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcgogICAgIEdMaXN0IHJlbW92ZUxpc3Qg
PSB7IGRhdGEsIG51bGxwdHIsIG51bGxwdHIgfTsKICAgICB0ZXN0LT5yZW1vdmUoV0VCS0lUX1dF
QlNJVEVfREFUQV9ERVZJQ0VfSURfSEFTSF9TQUxULCAmcmVtb3ZlTGlzdCk7CiAgICAgZGF0YUxp
c3QgPSB0ZXN0LT5mZXRjaChXRUJLSVRfV0VCU0lURV9EQVRBX0RFVklDRV9JRF9IQVNIX1NBTFQp
OwotICAgIGdfYXNzZXJ0KCFkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbnVsbChkYXRhTGlzdCk7
CiAKICAgICAvLyBUZXN0IHJlbW92aW5nIHRoZSBjb29raWVzLgogICAgIHRlc3QtPmxvYWRVUkko
a1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2VudW1lcmF0ZWRldmljZXMiKS5kYXRhKCkpOwogICAg
IHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJGaW5pc2hlZCIpOwogCiAgICAgZGF0YUxp
c3QgPSB0ZXN0LT5mZXRjaChXRUJLSVRfV0VCU0lURV9EQVRBX0RFVklDRV9JRF9IQVNIX1NBTFQp
OwotICAgIGdfYXNzZXJ0KGRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGFMaXN0
KTsKICAgICBkYXRhID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGEqPihkYXRhTGlzdC0+
ZGF0YSk7Ci0gICAgZ19hc3NlcnQoZGF0YSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRhKTsK
IAogICAgIEdMaXN0IHJlbW92ZUNvb2tpZUxpc3QgPSB7IGRhdGEsIG51bGxwdHIsIG51bGxwdHIg
fTsKICAgICB0ZXN0LT5yZW1vdmUoV0VCS0lUX1dFQlNJVEVfREFUQV9DT09LSUVTLCAmcmVtb3Zl
Q29va2llTGlzdCk7CiAgICAgZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChXRUJLSVRfV0VCU0lURV9E
QVRBX0RFVklDRV9JRF9IQVNIX1NBTFQpOwotICAgIGdfYXNzZXJ0KCFkYXRhTGlzdCk7CisgICAg
Z19hc3NlcnRfbnVsbChkYXRhTGlzdCk7CiAKICAgICAvLyBDbGVhciBhbGwuCiAgICAgc3RhdGlj
IGNvbnN0IFdlYktpdFdlYnNpdGVEYXRhVHlwZXMgY2FjaGVBbmRBcHBjYWNoZVR5cGVzID0gc3Rh
dGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGFUeXBlcz4oV0VCS0lUX1dFQlNJVEVfREFUQV9ERVZJ
Q0VfSURfSEFTSF9TQUxUKTsKICAgICB0ZXN0LT5jbGVhcihjYWNoZUFuZEFwcGNhY2hlVHlwZXMs
IDApOwogICAgIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goY2FjaGVBbmRBcHBjYWNoZVR5cGVzKTsK
LSAgICBnX2Fzc2VydCghZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X251bGwoZGF0YUxpc3QpOwog
CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzLCBl
bmFibGVkKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9XZWJFeHRlbnNpb25UZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9XZWJFeHRlbnNpb25UZXN0LmNwcAppbmRleCA5N2E3NWU1MTQxZTg4Mjc0YTMzYTkz
YTYyNzEyMDU1N2RlZDRmODg2Li4wZTI5ZjQxY2U5YmZjYmVmZWNhZGU2OTA1OWNlYmFiMmNmYjkx
NWFlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2Vi
RXh0ZW5zaW9uVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1dlYkV4dGVuc2lvblRlc3QuY3BwCkBAIC0xOCw3ICsxOCw3IEBACiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgotCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Rlc3QuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NvbnRleHRSZWYuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U1JldGFpblB0ci5oPgogI2luY2x1ZGUgPGdpby9naW8uaD4KQEAgLTEzOCw3ICsxMzgsNyBAQCBz
dGF0aWMgdm9pZCBlbWl0RG9jdW1lbnRMb2FkZWQoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9u
KQogICAgICAgICAiRG9jdW1lbnRMb2FkZWQiLAogICAgICAgICAwLAogICAgICAgICAwKTsKLSAg
ICBnX2Fzc2VydChvayk7CisgICAgZ19hc3NlcnRfdHJ1ZShvayk7CiB9CiAKIHN0YXRpYyB2b2lk
IGRvY3VtZW50TG9hZGVkQ2FsbGJhY2soV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgV2ViS2l0V2Vi
RXh0ZW5zaW9uKiBleHRlbnNpb24pCkBAIC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIHZvaWQgZW1p
dFVSSUNoYW5nZWQoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBjaGFyKiB1cmkp
CiAgICAgICAgICJVUklDaGFuZ2VkIiwKICAgICAgICAgZ192YXJpYW50X25ldygiKHMpIiwgdXJp
KSwKICAgICAgICAgMCk7Ci0gICAgZ19hc3NlcnQob2spOworICAgIGdfYXNzZXJ0X3RydWUob2sp
OwogfQogCiBzdGF0aWMgdm9pZCB1cmlDaGFuZ2VkQ2FsbGJhY2soV2ViS2l0V2ViUGFnZSogd2Vi
UGFnZSwgR1BhcmFtU3BlYyogcHNwZWMsIFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQpA
QCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyBnYm9vbGVhbiBzZW5kUmVxdWVzdENhbGxiYWNrKFdl
YktpdFdlYlBhZ2UqLCBXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0LCBXCiB7CiAgICAgZ2Jvb2xl
YW4gcmV0dXJuVmFsdWUgPSBGQUxTRTsKICAgICBjb25zdCBjaGFyKiByZXF1ZXN0VVJJID0gd2Vi
a2l0X3VyaV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCk7Ci0gICAgZ19hc3NlcnQocmVxdWVzdFVS
SSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChyZXF1ZXN0VVJJKTsKIAogICAgIGlmIChjb25zdCBj
aGFyKiBzdWZmaXggPSBnX3N0cnJzdHIocmVxdWVzdFVSSSwgIi9yZW1vdmUtdGhpcy9qYXZhc2Ny
aXB0LmpzIikpIHsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBwcmVmaXgoZ19zdHJuZHVwKHJl
cXVlc3RVUkksIHN0cmxlbihyZXF1ZXN0VVJJKSAtIHN0cmxlbihzdWZmaXgpKSk7CkBAIC0xOTIs
MTggKzE5MiwxOCBAQCBzdGF0aWMgZ2Jvb2xlYW4gc2VuZFJlcXVlc3RDYWxsYmFjayhXZWJLaXRX
ZWJQYWdlKiwgV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgVwogICAgICAgICB3ZWJraXRfdXJp
X3JlcXVlc3Rfc2V0X3VyaShyZXF1ZXN0LCBuZXdVUkkuZ2V0KCkpOwogICAgIH0gZWxzZSBpZiAo
Y29uc3QgY2hhciogc3VmZml4ID0gZ19zdHJyc3RyKHJlcXVlc3RVUkksICIvcmVtb3ZlLXRoaXMv
amF2YXNjcmlwdC1hZnRlci1yZWRpcmVjdGlvbi5qcyIpKSB7CiAgICAgICAgIC8vIFJlZGlyZWN0
ZWQgZnJvbSAvcmVkaXJlY3RlZC5qcywgcmVkaXJlY3RSZXNwb25zZSBzaG91bGQgYmUgbnVsbHB0
ci4KLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX1VSSV9SRVNQT05TRShyZWRpcmVjdFJlc3Bv
bnNlKSk7Ci0gICAgICAgIGdfYXNzZXJ0KGdfc3RyX2hhc19zdWZmaXgod2Via2l0X3VyaV9yZXNw
b25zZV9nZXRfdXJpKHJlZGlyZWN0UmVzcG9uc2UpLCAiL3JlZGlyZWN0ZWQuanMiKSk7CisgICAg
ICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1VSSV9SRVNQT05TRShyZWRpcmVjdFJlc3BvbnNl
KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoZ19zdHJfaGFzX3N1ZmZpeCh3ZWJraXRfdXJpX3Jl
c3BvbnNlX2dldF91cmkocmVkaXJlY3RSZXNwb25zZSksICIvcmVkaXJlY3RlZC5qcyIpKTsKIAog
ICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHByZWZpeChnX3N0cm5kdXAocmVxdWVzdFVSSSwgc3Ry
bGVuKHJlcXVlc3RVUkkpIC0gc3RybGVuKHN1ZmZpeCkpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBuZXdVUkkoZ19zdHJkdXBfcHJpbnRmKCIlcy9qYXZhc2NyaXB0LWFmdGVyLXJlZGlyZWN0
aW9uLmpzIiwgcHJlZml4LmdldCgpKSk7CiAgICAgICAgIHdlYmtpdF91cmlfcmVxdWVzdF9zZXRf
dXJpKHJlcXVlc3QsIG5ld1VSSS5nZXQoKSk7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfc3Vm
Zml4KHJlcXVlc3RVUkksICIvcmVkaXJlY3RlZC5qcyIpKSB7CiAgICAgICAgIC8vIE9yaWdpbmFs
IHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2Ugc2hvdWxkIGJlIG51bGxwdHIuCi0gICAgICAgIGdf
YXNzZXJ0KCFyZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbChyZWRpcmVj
dFJlc3BvbnNlKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19zdWZmaXgocmVxdWVzdFVSSSwg
Ii9hZGQtZG8tbm90LXRyYWNrLWhlYWRlciIpKSB7CiAgICAgICAgIFNvdXBNZXNzYWdlSGVhZGVy
cyogaGVhZGVycyA9IHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfaHR0cF9oZWFkZXJzKHJlcXVlc3Qp
OwotICAgICAgICBnX2Fzc2VydChoZWFkZXJzKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbCho
ZWFkZXJzKTsKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKGhlYWRlcnMsICJE
TlQiLCAiMSIpOwogICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3N1ZmZpeChyZXF1ZXN0VVJJLCAi
L25vcm1hbC1jaGFuZ2UtcmVxdWVzdCIpKSB7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gcHJl
Zml4KGdfc3RybmR1cChyZXF1ZXN0VVJJLCBzdHJsZW4ocmVxdWVzdFVSSSkgLSBzdHJsZW4oIi9u
b3JtYWwtY2hhbmdlLXJlcXVlc3QiKSkpOwpAQCAtMjExLDEwICsyMTEsMTAgQEAgc3RhdGljIGdi
b29sZWFuIHNlbmRSZXF1ZXN0Q2FsbGJhY2soV2ViS2l0V2ViUGFnZSosIFdlYktpdFVSSVJlcXVl
c3QqIHJlcXVlc3QsIFcKICAgICAgICAgd2Via2l0X3VyaV9yZXF1ZXN0X3NldF91cmkocmVxdWVz
dCwgbmV3VVJJLmdldCgpKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19zdWZmaXgocmVxdWVz
dFVSSSwgIi9odHRwLWdldC1tZXRob2QiKSkgewogICAgICAgICBnX2Fzc2VydF9jbXBzdHIod2Vi
a2l0X3VyaV9yZXF1ZXN0X2dldF9odHRwX21ldGhvZChyZXF1ZXN0KSwgPT0sICJHRVQiKTsKLSAg
ICAgICAgZ19hc3NlcnQod2Via2l0X3VyaV9yZXF1ZXN0X2dldF9odHRwX21ldGhvZChyZXF1ZXN0
KSA9PSBTT1VQX01FVEhPRF9HRVQpOworICAgICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3Vy
aV9yZXF1ZXN0X2dldF9odHRwX21ldGhvZChyZXF1ZXN0KSwgPT0sIFNPVVBfTUVUSE9EX0dFVCk7
CiAgICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfc3VmZml4KHJlcXVlc3RVUkksICIvaHR0cC1wb3N0
LW1ldGhvZCIpKSB7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfdXJpX3JlcXVlc3Rf
Z2V0X2h0dHBfbWV0aG9kKHJlcXVlc3QpLCA9PSwgIlBPU1QiKTsKLSAgICAgICAgZ19hc3NlcnQo
d2Via2l0X3VyaV9yZXF1ZXN0X2dldF9odHRwX21ldGhvZChyZXF1ZXN0KSA9PSBTT1VQX01FVEhP
RF9QT1NUKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF91cmlfcmVxdWVzdF9nZXRf
aHR0cF9tZXRob2QocmVxdWVzdCksID09LCBTT1VQX01FVEhPRF9QT1NUKTsKICAgICAgICAgcmV0
dXJuVmFsdWUgPSBUUlVFOwogICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3N1ZmZpeChyZXF1ZXN0
VVJJLCAiL2NhbmNlbC10aGlzLmpzIikpCiAgICAgICAgIHJldHVyblZhbHVlID0gVFJVRTsKQEAg
LTI3Nyw3ICsyNzcsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gY29udGV4dE1lbnVDYWxsYmFjayhXZWJL
aXRXZWJQYWdlKiBwYWdlLCBXZWJLaXRDb250ZXh0TWVudSogbWVudQogCiAgICAgaWYgKCFnX3N0
cmNtcDAocGFnZVVSSSwgIkNvbnRleHRNZW51VGVzdE5vZGUiKSkgewogICAgICAgICBXZWJLaXRE
T01Ob2RlKiBub2RlID0gd2Via2l0X3dlYl9oaXRfdGVzdF9yZXN1bHRfZ2V0X25vZGUoaGl0VGVz
dFJlc3VsdCk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfTk9ERShub2RlKSk7Cisg
ICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19OT0RFKG5vZGUpKTsKICAgICAgICAg
YXV0byogZnJhbWUgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUocGFnZSk7CiAgICAg
ICAgIEdSZWZQdHI8SlNDVmFsdWU+IGpzTm9kZSA9IGFkb3B0R1JlZih3ZWJraXRfZnJhbWVfZ2V0
X2pzX3ZhbHVlX2Zvcl9kb21fb2JqZWN0KGZyYW1lLCBXRUJLSVRfRE9NX09CSkVDVChub2RlKSkp
OwogICAgICAgICB3ZWJraXRfY29udGV4dF9tZW51X3NldF91c2VyX2RhdGEobWVudSwgc2VyaWFs
aXplTm9kZShqc05vZGUuZ2V0KCkpKTsKQEAgLTI4OSwxNyArMjg5LDE3IEBAIHN0YXRpYyBnYm9v
bGVhbiBjb250ZXh0TWVudUNhbGxiYWNrKFdlYktpdFdlYlBhZ2UqIHBhZ2UsIFdlYktpdENvbnRl
eHRNZW51KiBtZW51CiAKIHN0YXRpYyB2b2lkIGNvbnNvbGVNZXNzYWdlU2VudENhbGxiYWNrKFdl
YktpdFdlYlBhZ2UqIHdlYlBhZ2UsIFdlYktpdENvbnNvbGVNZXNzYWdlKiBjb25zb2xlTWVzc2Fn
ZSkKIHsKLSAgICBnX2Fzc2VydChjb25zb2xlTWVzc2FnZSk7CisgICAgZ19hc3NlcnRfbm9ubnVs
bChjb25zb2xlTWVzc2FnZSk7CiAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFy
aWFudF9uZXcoIih1dXN1cykiLCB3ZWJraXRfY29uc29sZV9tZXNzYWdlX2dldF9zb3VyY2UoY29u
c29sZU1lc3NhZ2UpLAogICAgICAgICB3ZWJraXRfY29uc29sZV9tZXNzYWdlX2dldF9sZXZlbChj
b25zb2xlTWVzc2FnZSksIHdlYmtpdF9jb25zb2xlX21lc3NhZ2VfZ2V0X3RleHQoY29uc29sZU1l
c3NhZ2UpLAogICAgICAgICB3ZWJraXRfY29uc29sZV9tZXNzYWdlX2dldF9saW5lKGNvbnNvbGVN
ZXNzYWdlKSwgd2Via2l0X2NvbnNvbGVfbWVzc2FnZV9nZXRfc291cmNlX2lkKGNvbnNvbGVNZXNz
YWdlKSk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBtZXNzYWdlU3RyaW5nKGdfdmFyaWFudF9wcmlu
dCh2YXJpYW50LmdldCgpLCBGQUxTRSkpOwogICAgIEdSZWZQdHI8SlNDQ29udGV4dD4ganNDb250
ZXh0ID0gYWRvcHRHUmVmKHdlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4dCh3ZWJraXRfd2ViX3Bh
Z2VfZ2V0X21haW5fZnJhbWUod2ViUGFnZSkpKTsKICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiBjb25z
b2xlID0gYWRvcHRHUmVmKGpzY19jb250ZXh0X2V2YWx1YXRlKGpzQ29udGV4dC5nZXQoKSwgIndp
bmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmNvbnNvbGUiLCAtMSkpOwotICAgIGdfYXNzZXJ0
KEpTQ19JU19WQUxVRShjb25zb2xlLmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShKU0NfSVNf
VkFMVUUoY29uc29sZS5nZXQoKSkpOwogICAgIGlmIChqc2NfdmFsdWVfaXNfb2JqZWN0KGNvbnNv
bGUuZ2V0KCkpKSB7CiAgICAgICAgIEdSZWZQdHI8SlNDVmFsdWU+IHJlc3VsdCA9IGFkb3B0R1Jl
Zihqc2NfdmFsdWVfb2JqZWN0X2ludm9rZV9tZXRob2QoY29uc29sZS5nZXQoKSwgInBvc3RNZXNz
YWdlIiwgR19UWVBFX1NUUklORywgbWVzc2FnZVN0cmluZy5nZXQoKSwgR19UWVBFX05PTkUpKTsK
LSAgICAgICAgZ19hc3NlcnQoSlNDX0lTX1ZBTFVFKHJlc3VsdC5nZXQoKSkpOworICAgICAgICBn
X2Fzc2VydF90cnVlKEpTQ19JU19WQUxVRShyZXN1bHQuZ2V0KCkpKTsKICAgICB9CiB9CiAKQEAg
LTMxMyw3ICszMTMsNyBAQCBzdGF0aWMgdm9pZCBlbWl0Rm9ybUNvbnRyb2xzQXNzb2NpYXRlZChH
REJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqCiAgICAgICAgICJGb3JtQ29u
dHJvbHNBc3NvY2lhdGVkIiwKICAgICAgICAgZ192YXJpYW50X25ldygiKHMpIiwgZm9ybUlkcyks
CiAgICAgICAgIG51bGxwdHIpOwotICAgIGdfYXNzZXJ0KG9rKTsKKyAgICBnX2Fzc2VydF90cnVl
KG9rKTsKIH0KIAogc3RhdGljIHZvaWQgZm9ybUNvbnRyb2xzQXNzb2NpYXRlZENhbGxiYWNrKFdl
YktpdFdlYlBhZ2UqIHdlYlBhZ2UsIEdQdHJBcnJheSogZm9ybUVsZW1lbnRzLCBXZWJLaXRXZWJF
eHRlbnNpb24qIGV4dGVuc2lvbikKQEAgLTMyMSwxMSArMzIxLDExIEBAIHN0YXRpYyB2b2lkIGZv
cm1Db250cm9sc0Fzc29jaWF0ZWRDYWxsYmFjayhXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBHUHRy
QXJyYXkqIGZvCiAgICAgYXV0byogZnJhbWUgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJh
bWUod2ViUGFnZSk7CiAgICAgR1N0cmluZyogZm9ybUlkc0J1aWxkZXIgPSBnX3N0cmluZ19uZXco
bnVsbHB0cik7CiAgICAgZm9yIChndWludCBpID0gMDsgaSA8IGZvcm1FbGVtZW50cy0+bGVuOyAr
K2kpIHsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19FTEVNRU5UKGdfcHRyX2FycmF5
X2luZGV4KGZvcm1FbGVtZW50cywgaSkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRf
RE9NX0lTX0VMRU1FTlQoZ19wdHJfYXJyYXlfaW5kZXgoZm9ybUVsZW1lbnRzLCBpKSkpOwogICAg
ICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiB2YWx1ZSA9IGFkb3B0R1JlZih3ZWJraXRfZnJhbWVfZ2V0
X2pzX3ZhbHVlX2Zvcl9kb21fb2JqZWN0KGZyYW1lLCBXRUJLSVRfRE9NX09CSkVDVChnX3B0cl9h
cnJheV9pbmRleChmb3JtRWxlbWVudHMsIGkpKSkpOwotICAgICAgICBnX2Fzc2VydChKU0NfSVNf
VkFMVUUodmFsdWUuZ2V0KCkpKTsKLSAgICAgICAgZ19hc3NlcnQoanNjX3ZhbHVlX2lzX29iamVj
dCh2YWx1ZS5nZXQoKSkpOwotICAgICAgICBnX2Fzc2VydChqc2NfdmFsdWVfb2JqZWN0X2lzX2lu
c3RhbmNlX29mKHZhbHVlLmdldCgpLCAiRWxlbWVudCIpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1
ZShKU0NfSVNfVkFMVUUodmFsdWUuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2Nf
dmFsdWVfaXNfb2JqZWN0KHZhbHVlLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoanNj
X3ZhbHVlX29iamVjdF9pc19pbnN0YW5jZV9vZih2YWx1ZS5nZXQoKSwgIkVsZW1lbnQiKSk7CiAg
ICAgICAgIEdSZWZQdHI8SlNDVmFsdWU+IGlkVmFsdWUgPSBhZG9wdEdSZWYoanNjX3ZhbHVlX29i
amVjdF9nZXRfcHJvcGVydHkodmFsdWUuZ2V0KCksICJpZCIpKTsKICAgICAgICAgR1VuaXF1ZVB0
cjxjaGFyPiBlbGVtZW50SUQoanNjX3ZhbHVlX3RvX3N0cmluZyhpZFZhbHVlLmdldCgpKSk7CiAg
ICAgICAgIGdfc3RyaW5nX2FwcGVuZChmb3JtSWRzQnVpbGRlciwgZWxlbWVudElELmdldCgpKTsK
QEAgLTM1Miw3ICszNTIsNyBAQCBzdGF0aWMgdm9pZCBlbWl0Rm9ybVN1Ym1pc3Npb25FdmVudChH
REJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqIG1ldAogICAgICAgICBtZXRo
b2ROYW1lLAogICAgICAgICBnX3ZhcmlhbnRfbmV3KCIoc3NzYmIpIiwgZm9ybUlEID8gZm9ybUlE
IDogIiIsIG5hbWVzLCB2YWx1ZXMsIHRhcmdldEZyYW1lSXNNYWluRnJhbWUsIHNvdXJjZUZyYW1l
SXNNYWluRnJhbWUpLAogICAgICAgICBudWxscHRyKTsKLSAgICBnX2Fzc2VydChvayk7CisgICAg
Z19hc3NlcnRfdHJ1ZShvayk7CiB9CiAKIHN0YXRpYyB2b2lkIGhhbmRsZUZvcm1TdWJtaXNzaW9u
Q2FsbGJhY2soV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgRGVsYXllZFNpZ25hbFR5cGUgZGVsYXll
ZFNpZ25hbFR5cGUsIGNvbnN0IGNoYXIqIG1ldGhvZE5hbWUsIGNvbnN0IGNoYXIqIGZvcm1JRCwg
V2ViS2l0RnJhbWUqIHNvdXJjZUZyYW1lLCBXZWJLaXRGcmFtZSogdGFyZ2V0RnJhbWUsIEdQdHJB
cnJheSogdGV4dEZpZWxkTmFtZXMsIEdQdHJBcnJheSogdGV4dEZpZWxkVmFsdWVzLCBXZWJLaXRX
ZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKQEAgLTM4NCwxMyArMzg0LDEzIEBAIHN0YXRpYyB2b2lk
IHdpbGxTdWJtaXRGb3JtQ2FsbGJhY2soV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgV2ViS2l0RE9N
RWxlbWVudCogZm9yCiB7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIEdfR05VQ19CRUdJTl9JR05P
UkVfREVQUkVDQVRJT05TOwotICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9GT1JNX0VM
RU1FTlQoZm9ybUVsZW1lbnQpKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfSFRN
TF9GT1JNX0VMRU1FTlQoZm9ybUVsZW1lbnQpKTsKICAgICBHX0dOVUNfRU5EX0lHTk9SRV9ERVBS
RUNBVElPTlM7CiAjZW5kaWYKICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiBqc0Zvcm1FbGVtZW50ID0g
YWRvcHRHUmVmKHdlYmtpdF9mcmFtZV9nZXRfanNfdmFsdWVfZm9yX2RvbV9vYmplY3Qod2Via2l0
X3dlYl9wYWdlX2dldF9tYWluX2ZyYW1lKHdlYlBhZ2UpLCBXRUJLSVRfRE9NX09CSkVDVChmb3Jt
RWxlbWVudCkpKTsKLSAgICBnX2Fzc2VydChKU0NfSVNfVkFMVUUoanNGb3JtRWxlbWVudC5nZXQo
KSkpOwotICAgIGdfYXNzZXJ0KGpzY192YWx1ZV9pc19vYmplY3QoanNGb3JtRWxlbWVudC5nZXQo
KSkpOwotICAgIGdfYXNzZXJ0KGpzY192YWx1ZV9vYmplY3RfaXNfaW5zdGFuY2Vfb2YoanNGb3Jt
RWxlbWVudC5nZXQoKSwgIkhUTUxGb3JtRWxlbWVudCIpKTsKKyAgICBnX2Fzc2VydF90cnVlKEpT
Q19JU19WQUxVRShqc0Zvcm1FbGVtZW50LmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShqc2Nf
dmFsdWVfaXNfb2JqZWN0KGpzRm9ybUVsZW1lbnQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVl
KGpzY192YWx1ZV9vYmplY3RfaXNfaW5zdGFuY2Vfb2YoanNGb3JtRWxlbWVudC5nZXQoKSwgIkhU
TUxGb3JtRWxlbWVudCIpKTsKICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiBpZFZhbHVlID0gYWRvcHRH
UmVmKGpzY192YWx1ZV9vYmplY3RfZ2V0X3Byb3BlcnR5KGpzRm9ybUVsZW1lbnQuZ2V0KCksICJp
ZCIpKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1JRChqc2NfdmFsdWVfdG9fc3RyaW5nKGlk
VmFsdWUuZ2V0KCkpKTsKIApAQCAtNDI1LDcgKzQyNSw3IEBAIHN0YXRpYyBjaGFyKiBlY2hvQ2Fs
bGJhY2soY29uc3QgY2hhciogbWVzc2FnZSkKIHN0YXRpYyB2b2lkIHdpbmRvd09iamVjdENsZWFy
ZWQoV2ViS2l0U2NyaXB0V29ybGQqIHdvcmxkLCBXZWJLaXRXZWJQYWdlKiBwYWdlLCBXZWJLaXRG
cmFtZSogZnJhbWUsIGdwb2ludGVyKQogewogICAgIEdSZWZQdHI8SlNDQ29udGV4dD4ganNDb250
ZXh0ID0gYWRvcHRHUmVmKHdlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4dF9mb3Jfc2NyaXB0X3dv
cmxkKGZyYW1lLCB3b3JsZCkpOwotICAgIGdfYXNzZXJ0KEpTQ19JU19DT05URVhUKGpzQ29udGV4
dC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3RydWUoSlNDX0lTX0NPTlRFWFQoanNDb250ZXh0Lmdl
dCgpKSk7CiAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gZnVuY3Rpb24gPSBhZG9wdEdSZWYoanNjX3Zh
bHVlX25ld19mdW5jdGlvbihqc0NvbnRleHQuZ2V0KCksICJlY2hvIiwgR19DQUxMQkFDSyhlY2hv
Q2FsbGJhY2spLCBOVUxMLCBOVUxMLCBHX1RZUEVfU1RSSU5HLCAxLCBHX1RZUEVfU1RSSU5HKSk7
CiAgICAganNjX2NvbnRleHRfc2V0X3ZhbHVlKGpzQ29udGV4dC5nZXQoKSwgImVjaG8iLCBmdW5j
dGlvbi5nZXQoKSk7CiB9CkBAIC00ODUsOCArNDg1LDggQEAgc3RhdGljIHZvaWQgbWV0aG9kQ2Fs
bENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogc2VuZGVy
LAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIEdSZWZQdHI8V2ViS2l0U2NyaXB0V29y
bGQ+IHdvcmxkID0gYWRvcHRHUmVmKHdlYmtpdF9zY3JpcHRfd29ybGRfbmV3KCkpOwotICAgICAg
ICBnX2Fzc2VydCh3ZWJraXRfc2NyaXB0X3dvcmxkX2dldF9kZWZhdWx0KCkgIT0gd29ybGQuZ2V0
KCkpOwotICAgICAgICBnX2Fzc2VydChnX3N0cl9oYXNfcHJlZml4KHdlYmtpdF9zY3JpcHRfd29y
bGRfZ2V0X25hbWUod29ybGQuZ2V0KCkpLCAiVW5pcXVlV29ybGRfIikpOworICAgICAgICBnX2Fz
c2VydF9jbXBoZXgod2Via2l0X3NjcmlwdF93b3JsZF9nZXRfZGVmYXVsdCgpLCAhPSwgd29ybGQu
Z2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKGdfc3RyX2hhc19wcmVmaXgod2Via2l0X3Nj
cmlwdF93b3JsZF9nZXRfbmFtZSh3b3JsZC5nZXQoKSksICJVbmlxdWVXb3JsZF8iKSk7CiAgICAg
ICAgIFdlYktpdEZyYW1lKiBmcmFtZSA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfbWFpbl9mcmFtZShw
YWdlKTsKICAgICAgICAgR1JlZlB0cjxKU0NDb250ZXh0PiBqc0NvbnRleHQgPSBhZG9wdEdSZWYo
d2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0X2Zvcl9zY3JpcHRfd29ybGQoZnJhbWUsIHdvcmxk
LmdldCgpKSk7CiAgICAgICAgIEdSZWZQdHI8SlNDVmFsdWU+IHJlc3VsdCA9IGFkb3B0R1JlZihq
c2NfY29udGV4dF9ldmFsdWF0ZShqc0NvbnRleHQuZ2V0KCksIHNjcmlwdCwgLTEpKTsKQEAgLTU2
MSw3ICs1NjEsNyBAQCBzdGF0aWMgdm9pZCByZWdpc3RlckdSZXNvdXJjZSh2b2lkKQogewogICAg
IEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3VyY2VzUGF0aChnX2J1aWxkX2ZpbGVuYW1lKFdFQktJVF9U
RVNUX1JFU09VUkNFU19ESVIsICJ3ZWJraXRnbGliLXRlc3RzLXJlc291cmNlcy5ncmVzb3VyY2Ui
LCBudWxscHRyKSk7CiAgICAgR1Jlc291cmNlKiByZXNvdXJjZSA9IGdfcmVzb3VyY2VfbG9hZChy
ZXNvdXJjZXNQYXRoLmdldCgpLCBudWxscHRyKTsKLSAgICBnX2Fzc2VydChyZXNvdXJjZSk7Cisg
ICAgZ19hc3NlcnRfbm9ubnVsbChyZXNvdXJjZSk7CiAKICAgICBnX3Jlc291cmNlc19yZWdpc3Rl
cihyZXNvdXJjZSk7CiAgICAgZ19yZXNvdXJjZV91bnJlZihyZXNvdXJjZSk7CkBAIC01NzAsNyAr
NTcwLDcgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJHUmVzb3VyY2Uodm9pZCkKIGV4dGVybiAiQyIg
dm9pZCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0aWFsaXplX3dpdGhfdXNlcl9kYXRhKFdlYktp
dFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBHVmFyaWFudCogdXNlckRhdGEpCiB7CiAgICAgV2Vi
S2l0U2NyaXB0V29ybGQqIGlzb2xhdGVkV29ybGQgPSB3ZWJraXRfc2NyaXB0X3dvcmxkX25ld193
aXRoX25hbWUoIldlYkV4dGVuc2lvblRlc3RTY3JpcHRXb3JsZCIpOwotICAgIGdfYXNzZXJ0KFdF
QktJVF9JU19TQ1JJUFRfV09STEQoaXNvbGF0ZWRXb3JsZCkpOworICAgIGdfYXNzZXJ0X3RydWUo
V0VCS0lUX0lTX1NDUklQVF9XT1JMRChpc29sYXRlZFdvcmxkKSk7CiAgICAgZ19hc3NlcnRfY21w
c3RyKHdlYmtpdF9zY3JpcHRfd29ybGRfZ2V0X25hbWUoaXNvbGF0ZWRXb3JsZCksID09LCAiV2Vi
RXh0ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIik7CiAgICAgZ19vYmplY3Rfc2V0X2RhdGFfZnVsbChH
X09CSkVDVChleHRlbnNpb24pLCAid2stc2NyaXB0LXdvcmxkIiwgaXNvbGF0ZWRXb3JsZCwgZ19v
YmplY3RfdW5yZWYpOwogCkBAIC01NzksOCArNTc5LDggQEAgZXh0ZXJuICJDIiB2b2lkIHdlYmtp
dF93ZWJfZXh0ZW5zaW9uX2luaXRpYWxpemVfd2l0aF91c2VyX2RhdGEoV2ViS2l0V2ViRXh0ZW5z
aW8KIAogICAgIHJlZ2lzdGVyR1Jlc291cmNlKCk7CiAKLSAgICBnX2Fzc2VydCh1c2VyRGF0YSk7
Ci0gICAgZ19hc3NlcnQoZ192YXJpYW50X2lzX29mX3R5cGUodXNlckRhdGEsIEdfVkFSSUFOVF9U
WVBFX1VJTlQzMikpOworICAgIGdfYXNzZXJ0X25vbm51bGwodXNlckRhdGEpOworICAgIGdfYXNz
ZXJ0X3RydWUoZ192YXJpYW50X2lzX29mX3R5cGUodXNlckRhdGEsIEdfVkFSSUFOVF9UWVBFX1VJ
TlQzMikpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gYnVzTmFtZShnX3N0cmR1cF9wcmludGYoIm9y
Zy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3QldSIsIGdfdmFyaWFudF9nZXRfdWludDMyKHVz
ZXJEYXRhKSkpOwogICAgIGdfYnVzX293bl9uYW1lKAogICAgICAgICBHX0JVU19UWVBFX1NFU1NJ
T04sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2Vi
UHJvY2Vzc1Rlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dl
YlByb2Nlc3NUZXN0LmNwcAppbmRleCBkYTA2ZjQyZGU0ZmI5ZmYzOGZmOTNhMmQ0ZTk3NjY1YTRl
ZDJiZTJjLi5mNDQxYTcxOWE4MjM2ODJlM2ExNzg1OGM3NTBhMTRkYmQ3ZGQ4ZDhhIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2ViUHJvY2Vzc1Rlc3Qu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNz
VGVzdC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tMZWFrcygpCiAgICAg
ICAgIGdfcHJpbnQoIiAlcyglcCkiLCBnX3R5cGVfbmFtZV9mcm9tX2luc3RhbmNlKHJlaW50ZXJw
cmV0X2Nhc3Q8R1R5cGVJbnN0YW5jZSo+KG9iamVjdCkpLCBvYmplY3QpOwogICAgIGdfcHJpbnQo
IlxuIik7CiAKLSAgICBnX2Fzc2VydChzX3dhdGNoZWRPYmplY3RzLmlzRW1wdHkoKSk7CisgICAg
Z19hc3NlcnRfdHJ1ZShzX3dhdGNoZWRPYmplY3RzLmlzRW1wdHkoKSk7CiB9CiAKIHZvaWQgV2Vi
UHJvY2Vzc1Rlc3Q6OmFkZChjb25zdCBTdHJpbmcmIHRlc3ROYW1lLCBzdGQ6OmZ1bmN0aW9uPHN0
ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVzdD4gKCk+IGNsb3N1cmUpCkBAIC02NCwxNSArNjQs
MTUgQEAgdm9pZCBXZWJQcm9jZXNzVGVzdDo6YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RG
aW5pc2hlcyhHT2JqZWN0KiBvYmplY3QpCiAKIHN0ZDo6dW5pcXVlX3B0cjxXZWJQcm9jZXNzVGVz
dD4gV2ViUHJvY2Vzc1Rlc3Q6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRlc3ROYW1lKQogewotICAg
IGdfYXNzZXJ0KHRlc3RzTWFwKCkuY29udGFpbnModGVzdE5hbWUpKTsKKyAgICBnX2Fzc2VydF90
cnVlKHRlc3RzTWFwKCkuY29udGFpbnModGVzdE5hbWUpKTsKICAgICByZXR1cm4gdGVzdHNNYXAo
KS5nZXQodGVzdE5hbWUpKCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiBydW5UZXN0KFdlYktpdFdl
YlBhZ2UqIHdlYlBhZ2UsIGNvbnN0IGNoYXIqIHRlc3RQYXRoKQogewotICAgIGdfYXNzZXJ0KFdF
QktJVF9JU19XRUJfUEFHRSh3ZWJQYWdlKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNf
V0VCX1BBR0Uod2ViUGFnZSkpOwogICAgIFdlYlByb2Nlc3NUZXN0Ojphc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYlBhZ2UpKTsKLSAgICBnX2Fzc2VydCh0
ZXN0UGF0aCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbCh0ZXN0UGF0aCk7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+IHRlc3QgPSBXZWJQcm9jZXNzVGVzdDo6Y3JlYXRlKFN0
cmluZzo6ZnJvbVVURjgodGVzdFBhdGgpKTsKICAgICByZXR1cm4gdGVzdC0+cnVuVGVzdChnX3N0
cnJzdHIodGVzdFBhdGgsICIvIikgKyAxLCB3ZWJQYWdlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9XZWJQcm9jZXNzVGVzdC5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKaW5kZXggN2E0NGNi
MDVjZDRiYzAyN2UxMmQxMTAzZmFmNmEwMDdhYzZmNDBmMy4uZTBmNjNiOTM4N2RkNjRjNTc1NTc1
NDY5NTJhMzA2YWE5NWFjM2EyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmgKQEAgLTE3LDYgKzE3LDggQEAKICAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKKyNpbmNsdWRlICJUZXN0VXRpbHMuaCIK
KwogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEd0ay9BdXRvY2xlYW51cHNUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R3RrL0F1dG9jbGVhbnVwc1Rlc3QuY3BwCmluZGV4IDBlZGU3MmZhYzQ2
ZDM1YTgyMGQ0YjE1YTJjMjNhNGQ0ODk5MDk5YmYuLmY3OWNmMzQ1MTgyOWY0ZjUyNmNjYmQzYTY1
YWRjYTk3NmNiMjk0MzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R3RrL0F1dG9jbGVhbnVwc1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL0F1dG9jbGVhbnVwc1Rlc3QuY3BwCkBAIC0zMywyNSArMzMsMjUgQEAgcHJp
dmF0ZToKICAgICB7CiAgICAgICAgIC8vIFRyYW5zZmVyIG5vbmUKICAgICAgICAgZ19hdXRvcHRy
KFdlYktpdFdlYlBhZ2UpIHBhZ2UgPSBXRUJLSVRfV0VCX1BBR0UoZ19vYmplY3RfcmVmKEdfT0JK
RUNUKHdlYlBhZ2UpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfUEFHRShwYWdl
KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1dFQl9QQUdFKHBhZ2UpKTsKICAg
ICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChwYWdl
KSk7CiAKICAgICAgICAgLy8gVHJhbnNmZXIgbm9uZQogICAgICAgICBnX2F1dG9wdHIoV2ViS2l0
RE9NRG9jdW1lbnQpIGRvY3VtZW50ID0gV0VCS0lUX0RPTV9ET0NVTUVOVChnX29iamVjdF9yZWYo
R19PQkpFQ1Qod2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQocGFnZSkpKSk7Ci0gICAg
ICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKKyAgICAgICAg
Z19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CiAgICAgICAg
IGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZG9jdW1lbnQp
KTsKIAogICAgICAgICAvLyBUcmFuc2ZlciBmdWxsCiAgICAgICAgIEdfR05VQ19CRUdJTl9JR05P
UkVfREVQUkVDQVRJT05TOwogICAgICAgICBnX2F1dG9wdHIoV2ViS2l0RE9NRE9NV2luZG93KSB3
aW5kb3cgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9kZWZhdWx0X3ZpZXcoZG9jdW1lbnQpOwot
ICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RPTV9XSU5ET1cod2luZG93KSk7CisgICAg
ICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19ET01fV0lORE9XKHdpbmRvdykpOwogICAg
ICAgICBHX0dOVUNfRU5EX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAgICAgICAgIGFzc2VydE9iamVj
dElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2luZG93KSk7CiAKICAgICAgICAg
Ly8gVHJhbnNmZXIgZnVsbAogICAgICAgICBHX0dOVUNfQkVHSU5fSUdOT1JFX0RFUFJFQ0FUSU9O
UzsKICAgICAgICAgZ19hdXRvcHRyKFdlYktpdERPTVJhbmdlKSByYW5nZSA9IHdlYmtpdF9kb21f
ZG9jdW1lbnRfY3JlYXRlX3JhbmdlKGRvY3VtZW50KTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lU
X0RPTV9JU19SQU5HRShyYW5nZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01f
SVNfUkFOR0UocmFuZ2UpKTsKICAgICAgICAgR19HTlVDX0VORF9JR05PUkVfREVQUkVDQVRJT05T
OwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNU
KHJhbmdlKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R3RrL0RPTUNsaWVudFJlY3RUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R3RrL0RPTUNsaWVudFJlY3RUZXN0LmNwcAppbmRleCAyMGNkZmU1ZWY5MWM0MWMyMTUwNGYx
MWM4NWM4NDE2OGYxMWUxMTE1Li4yZTBkMTg2MGQ1Yjg4YmJiNDRjMzczZTQzMTQzMWYzMTI2ZjYy
YWRlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01D
bGllbnRSZWN0VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
dGsvRE9NQ2xpZW50UmVjdFRlc3QuY3BwCkBAIC00NSwxNSArNDUsMTUgQEAgcHJpdmF0ZToKICAg
ICBib29sIHRlc3REaXZCb3VuZGluZ0NsaWVudFJlY3RQb3NpdGlvbihXZWJLaXRXZWJQYWdlKiBw
YWdlKQogICAgIHsKICAgICAgICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0
X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQocGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJ
VF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJL
SVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVs
ZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZG9jdW1lbnQpKTsKIAogICAgICAgICBXZWJL
aXRET01FbGVtZW50KiBkaXYgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9lbGVtZW50X2J5X2lk
KGRvY3VtZW50LCAicmVjdCIpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxf
RUxFTUVOVChkaXYpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0hUTUxf
RUxFTUVOVChkaXYpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5p
c2hlcyhHX09CSkVDVChkaXYpKTsKIAogICAgICAgICBHUmVmUHRyPFdlYktpdERPTUNsaWVudFJl
Y3Q+IGNsaWVudFJlY3QgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9lbGVtZW50X2dldF9ib3VuZGlu
Z19jbGllbnRfcmVjdChkaXYpKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19DTElF
TlRfUkVDVChjbGllbnRSZWN0LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lU
X0RPTV9JU19DTElFTlRfUkVDVChjbGllbnRSZWN0LmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoY2xpZW50UmVjdC5nZXQoKSkp
OwogICAgICAgICBjaGVja0NsaWVudFJlY3RQb3NpdGlvbihjbGllbnRSZWN0LmdldCgpKTsKIApA
QCAtNjMsMjcgKzYzLDI3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB0ZXN0RGl2Q2xpZW50UmVjdHNQ
b3NpdGlvbkFuZExlbmd0aChXZWJLaXRXZWJQYWdlKiBwYWdlKQogICAgIHsKICAgICAgICAgV2Vi
S2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1l
bnQocGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1l
bnQpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3Vt
ZW50KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19P
QkpFQ1QoZG9jdW1lbnQpKTsKIAogICAgICAgICBXZWJLaXRET01FbGVtZW50KiBkaXYgPSB3ZWJr
aXRfZG9tX2RvY3VtZW50X2dldF9lbGVtZW50X2J5X2lkKGRvY3VtZW50LCAicmVjdCIpOwotICAg
ICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChkaXYpKTsKKyAgICAgICAg
Z19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChkaXYpKTsKICAgICAgICAg
YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkaXYpKTsKIAog
ICAgICAgICBHUmVmUHRyPFdlYktpdERPTUNsaWVudFJlY3RMaXN0PiBjbGllbnRSZWN0TGlzdCA9
IGFkb3B0R1JlZih3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X2NsaWVudF9yZWN0cyhkaXYpKTsKLSAg
ICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19DTElFTlRfUkVDVF9MSVNUKGNsaWVudFJlY3RM
aXN0LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19DTElFTlRf
UkVDVF9MSVNUKGNsaWVudFJlY3RMaXN0LmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoY2xpZW50UmVjdExpc3QuZ2V0KCkpKTsK
IAogICAgICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9kb21fY2xpZW50X3JlY3RfbGlzdF9n
ZXRfbGVuZ3RoKGNsaWVudFJlY3RMaXN0LmdldCgpKSwgPT0sIDEpOwogCiAgICAgICAgIEdSZWZQ
dHI8V2ViS2l0RE9NQ2xpZW50UmVjdD4gY2xpZW50UmVjdCA9IGFkb3B0R1JlZih3ZWJraXRfZG9t
X2NsaWVudF9yZWN0X2xpc3RfaXRlbShjbGllbnRSZWN0TGlzdC5nZXQoKSwgMCkpOwotICAgICAg
ICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0NMSUVOVF9SRUNUKGNsaWVudFJlY3QuZ2V0KCkpKTsK
KyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0NMSUVOVF9SRUNUKGNsaWVudFJl
Y3QuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hl
cyhHX09CSkVDVChjbGllbnRSZWN0LmdldCgpKSk7CiAgICAgICAgIGNoZWNrQ2xpZW50UmVjdFBv
c2l0aW9uKGNsaWVudFJlY3QuZ2V0KCkpOwogCiAgICAgICAgIC8vIEdldHRpbmcgdGhlIGNsaWVu
dFJlY3QgdHdpY2Ugc2hvdWxkIHJldHVybiB0aGUgc2FtZSBwb2ludGVyLgogICAgICAgICBHUmVm
UHRyPFdlYktpdERPTUNsaWVudFJlY3Q+IGNsaWVudFJlY3QyID0gYWRvcHRHUmVmKHdlYmtpdF9k
b21fY2xpZW50X3JlY3RfbGlzdF9pdGVtKGNsaWVudFJlY3RMaXN0LmdldCgpLCAwKSk7Ci0gICAg
ICAgIGdfYXNzZXJ0KGNsaWVudFJlY3QuZ2V0KCkgPT0gY2xpZW50UmVjdDIuZ2V0KCkpOworICAg
ICAgICBnX2Fzc2VydF9jbXBoZXgoY2xpZW50UmVjdC5nZXQoKSwgPT0sIGNsaWVudFJlY3QyLmdl
dCgpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01ET01XaW5kb3dUZXN0LmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwCmluZGV4
IGZjOGNlZmI1MjlkMTM3ZTY1NmRlZWMyNzk1YTcxY2NjNGI0Mjg3NzUuLjEyNTYyNDE5NmE3MWM2
ZDNhZDViY2RkMjlmMTQyYjg2YWJiOWZkMTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rlc3QuY3BwCkBAIC01NCwxMiAr
NTQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgbm90aWZ5KCJyZWFkeSIsICIiKTsKIAogICAgICAg
ICBXZWJLaXRXZWJQYWdlKiBwYWdlID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2UoZXh0
ZW5zaW9uLCB3ZWJQYWdlRnJvbUFyZ3MoYXJncykpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRf
SVNfV0VCX1BBR0UocGFnZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19XRUJf
UEFHRShwYWdlKSk7CiAgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtp
dF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOwotICAgICAgICBnX2Fzc2VydChXRUJL
SVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VC
S0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOwogCiAgICAgICAgIFdlYktpdERPTURPTVdp
bmRvdyogZG9tV2luZG93ID0gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZGVmYXVsdF92aWV3KGRv
Y3VtZW50KTsKLSAgICAgICAgZ19hc3NlcnQoZG9tV2luZG93KTsKKyAgICAgICAgZ19hc3NlcnRf
bm9ubnVsbChkb21XaW5kb3cpOwogCiAgICAgICAgIC8vIFRoZSAibG9hZCIgV2ViS2l0RE9NRE9N
V2luZG93IHNpZ25hbCBpcyBpc3N1ZWQgYmVmb3JlIHRoaXMgdGVzdCBpcwogICAgICAgICAvLyBj
YWxsZWQuIFRoZXJlJ3Mgbm8gd2F5IHRvIGNhcHR1cmUgaXQgaGVyZS4gV2Ugc2ltcGx5IGFzc3Vt
ZSB0aGF0CkBAIC03NywxMCArNzcsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgUnVuTG9vcDo6cnVu
KCk7CiAKICAgICAgICAgZG9jdW1lbnQgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVu
dChwYWdlKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVu
dCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1l
bnQpKTsKIAogICAgICAgICBXZWJLaXRET01FbGVtZW50KiBlbGVtZW50ID0gd2Via2l0X2RvbV9k
b2N1bWVudF9nZXRfZWxlbWVudF9ieV9pZChkb2N1bWVudCwgInRlc3QiKTsKLSAgICAgICAgZ19h
c3NlcnQoZWxlbWVudCk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoZWxlbWVudCk7CiAKICAg
ICAgICAgd2Via2l0X2RvbV9ldmVudF90YXJnZXRfYWRkX2V2ZW50X2xpc3RlbmVyKAogICAgICAg
ICAgICAgV0VCS0lUX0RPTV9FVkVOVF9UQVJHRVQoZWxlbWVudCksCkBAIC0xMDIsMTIgKzEwMiwx
MiBAQCBwcml2YXRlOgogICAgICAgICBub3RpZnkoInJlYWR5IiwgIiIpOwogCiAgICAgICAgIFdl
YktpdFdlYlBhZ2UqIHBhZ2UgPSB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFnZShleHRlbnNp
b24sIHdlYlBhZ2VGcm9tQXJncyhhcmdzKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19X
RUJfUEFHRShwYWdlKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1dFQl9QQUdF
KHBhZ2UpKTsKICAgICAgICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0X3dl
Yl9wYWdlX2dldF9kb21fZG9jdW1lbnQocGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9E
T01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRf
RE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CiAKICAgICAgICAgV2ViS2l0RE9NRE9NV2luZG93
KiBkb21XaW5kb3cgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9kZWZhdWx0X3ZpZXcoZG9jdW1l
bnQpOwotICAgICAgICBnX2Fzc2VydChkb21XaW5kb3cpOworICAgICAgICBnX2Fzc2VydF9ub25u
dWxsKGRvbVdpbmRvdyk7CiAKICAgICAgICAgLy8gVGhlICJsb2FkIiBXZWJLaXRET01ET01XaW5k
b3cgc2lnbmFsIGlzIGlzc3VlZCBiZWZvcmUgdGhpcyB0ZXN0IGlzCiAgICAgICAgIC8vIGNhbGxl
ZC4gVGhlcmUncyBubyB3YXkgdG8gY2FwdHVyZSBpdCBoZXJlLiBXZSBzaW1wbHkgYXNzdW1lIHRo
YXQKQEAgLTEyNSwxNSArMTI1LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIFJ1bkxvb3A6OnJ1bigp
OwogCiAgICAgICAgIGRvY3VtZW50ID0gd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQo
cGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQp
KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50
KSk7CiAKICAgICAgICAgV2ViS2l0RE9NRWxlbWVudCogZWxlbWVudCA9IHdlYmtpdF9kb21fZG9j
dW1lbnRfZ2V0X2VsZW1lbnRfYnlfaWQoZG9jdW1lbnQsICJ0ZXN0Iik7Ci0gICAgICAgIGdfYXNz
ZXJ0KGVsZW1lbnQpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKGVsZW1lbnQpOwogCiAgICAg
ICAgIFdlYktpdERPTUV2ZW50KiBldmVudCA9IHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX2V2
ZW50KGRvY3VtZW50LCAiTW91c2VFdmVudCIsIDApOwotICAgICAgICBnX2Fzc2VydChldmVudCk7
Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRVZFTlQoZXZlbnQpKTsKLSAgICAgICAg
Z19hc3NlcnQoV0VCS0lUX0RPTV9JU19NT1VTRV9FVkVOVChldmVudCkpOworICAgICAgICBnX2Fz
c2VydF9ub25udWxsKGV2ZW50KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lT
X0VWRU5UKGV2ZW50KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19NT1VT
RV9FVkVOVChldmVudCkpOwogCiAgICAgICAgIGdsb25nIGNsaWVudFgsIGNsaWVudFk7CiAgICAg
ICAgIGNsaWVudFggPSB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X2NsaWVudF9sZWZ0KGVsZW1lbnQp
OwpAQCAtMTYzLDE0ICsxNjMsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIHRlc3RHZXRDb21wdXRl
ZFN0eWxlKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBHVmFyaWFudCogYXJncykKICAg
ICB7CiAgICAgICAgIFdlYktpdFdlYlBhZ2UqIHBhZ2UgPSB3ZWJraXRfd2ViX2V4dGVuc2lvbl9n
ZXRfcGFnZShleHRlbnNpb24sIHdlYlBhZ2VGcm9tQXJncyhhcmdzKSk7Ci0gICAgICAgIGdfYXNz
ZXJ0KFdFQktJVF9JU19XRUJfUEFHRShwYWdlKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VC
S0lUX0lTX1dFQl9QQUdFKHBhZ2UpKTsKICAgICAgICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQocGFnZSk7Ci0gICAgICAgIGdf
YXNzZXJ0KFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKKyAgICAgICAgZ19hc3Nl
cnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CiAgICAgICAgIFdlYktp
dERPTURPTVdpbmRvdyogZG9tV2luZG93ID0gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZGVmYXVs
dF92aWV3KGRvY3VtZW50KTsKLSAgICAgICAgZ19hc3NlcnQoZG9tV2luZG93KTsKKyAgICAgICAg
Z19hc3NlcnRfbm9ubnVsbChkb21XaW5kb3cpOwogICAgICAgICBXZWJLaXRET01FbGVtZW50KiBl
bGVtZW50ID0gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudF9ieV9pZChkb2N1bWVudCwg
InRlc3QiKTsKLSAgICAgICAgZ19hc3NlcnQoZWxlbWVudCk7Ci0gICAgICAgIGdfYXNzZXJ0KFdF
QktJVF9ET01fSVNfRUxFTUVOVChlbGVtZW50KSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwo
ZWxlbWVudCk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19FTEVNRU5UKGVs
ZW1lbnQpKTsKICAgICAgICAgV2ViS2l0RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiogY3NzU3R5bGUg
PSB3ZWJraXRfZG9tX2RvbV93aW5kb3dfZ2V0X2NvbXB1dGVkX3N0eWxlKGRvbVdpbmRvdywgZWxl
bWVudCwgMCk7CiAgICAgICAgIGdjaGFyKiBmb250U2l6ZSA9IHdlYmtpdF9kb21fY3NzX3N0eWxl
X2RlY2xhcmF0aW9uX2dldF9wcm9wZXJ0eV92YWx1ZShjc3NTdHlsZSwgImZvbnQtc2l6ZSIpOwog
ICAgICAgICBnX2Fzc2VydF9jbXBzdHIoZm9udFNpemUsID09LCAiMTZweCIpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NTm9kZUZpbHRlclRlc3Qu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NTm9kZUZpbHRlclRl
c3QuY3BwCmluZGV4IDg5NzA4MzZmNTBiNjljMjllYWQxYmU5MGFkNjM1YjUyZDQyZWQwNmIuLjVk
ZjMxMDUyYzIwMTQxNmYzN2E2ODI1YTBhMzY3MzRjOTgzODgxYTkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVGaWx0ZXJUZXN0LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlRmlsdGVyVGVzdC5j
cHAKQEAgLTY3LDE4ICs2NywxOCBAQCBwcml2YXRlOgogICAgIGJvb2wgdGVzdFRyZWVXYWxrZXIo
V2ViS2l0V2ViUGFnZSogcGFnZSkKICAgICB7CiAgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBk
b2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOwotICAgICAg
ICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CisgICAgICAgIGdf
YXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOwogICAgICAgICBh
c3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRvY3VtZW50KSk7
CiAKICAgICAgICAgV2ViS2l0RE9NRWxlbWVudCogcm9vdCA9IHdlYmtpdF9kb21fZG9jdW1lbnRf
Z2V0X2VsZW1lbnRfYnlfaWQoZG9jdW1lbnQsICJyb290Iik7Ci0gICAgICAgIGdfYXNzZXJ0KFdF
QktJVF9ET01fSVNfTk9ERShyb290KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RP
TV9JU19OT0RFKHJvb3QpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RG
aW5pc2hlcyhHX09CSkVDVChyb290KSk7CiAKICAgICAgICAgLy8gTm8gZmlsdGVyLgogICAgICAg
ICBHUmVmUHRyPFdlYktpdERPTVRyZWVXYWxrZXI+IHdhbGtlciA9IGFkb3B0R1JlZih3ZWJraXRf
ZG9tX2RvY3VtZW50X2NyZWF0ZV90cmVlX3dhbGtlcihkb2N1bWVudCwgV0VCS0lUX0RPTV9OT0RF
KHJvb3QpLCBXRUJLSVRfRE9NX05PREVfRklMVEVSX1NIT1dfQUxMLCBudWxscHRyLCBGQUxTRSwg
bnVsbHB0cikpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX1RSRUVfV0FMS0VSKHdh
bGtlci5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfVFJFRV9X
QUxLRVIod2Fsa2VyLmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5U
ZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Fsa2VyLmdldCgpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KCF3
ZWJraXRfZG9tX3RyZWVfd2Fsa2VyX2dldF9maWx0ZXIod2Fsa2VyLmdldCgpKSk7CisgICAgICAg
IGdfYXNzZXJ0X251bGwod2Via2l0X2RvbV90cmVlX3dhbGtlcl9nZXRfZmlsdGVyKHdhbGtlci5n
ZXQoKSkpOwogCiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAgICBmb3IgKFdlYktpdERP
TU5vZGUqIG5vZGUgPSBXRUJLSVRfRE9NX05PREUocm9vdCk7IG5vZGU7IG5vZGUgPSB3ZWJraXRf
ZG9tX3RyZWVfd2Fsa2VyX25leHRfbm9kZSh3YWxrZXIuZ2V0KCkpLCArK2kpIHsKQEAgLTkyLDkg
KzkyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgLy8gSW5wdXQgZWxlbWVudHMgZmlsdGVyLgogICAg
ICAgICBHUmVmUHRyPFdlYktpdERPTU5vZGVGaWx0ZXI+IGZpbHRlciA9IGFkb3B0R1JlZihzdGF0
aWNfY2FzdDxXZWJLaXRET01Ob2RlRmlsdGVyKj4oZ19vYmplY3RfbmV3KHdlYmtpdF9ub2RlX2Zp
bHRlcl9nZXRfdHlwZSgpLCBudWxscHRyKSkpOwogICAgICAgICB3YWxrZXIgPSBhZG9wdEdSZWYo
d2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfdHJlZV93YWxrZXIoZG9jdW1lbnQsIFdFQktJVF9E
T01fTk9ERShyb290KSwgV0VCS0lUX0RPTV9OT0RFX0ZJTFRFUl9TSE9XX0FMTCwgZmlsdGVyLmdl
dCgpLCBGQUxTRSwgbnVsbHB0cikpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX1RS
RUVfV0FMS0VSKHdhbGtlci5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9E
T01fSVNfVFJFRV9XQUxLRVIod2Fsa2VyLmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZmlsdGVyLmdldCgpKSk7Ci0gICAgICAg
IGdfYXNzZXJ0KHdlYmtpdF9kb21fdHJlZV93YWxrZXJfZ2V0X2ZpbHRlcih3YWxrZXIuZ2V0KCkp
ID09IGZpbHRlci5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJraXRfZG9tX3Ry
ZWVfd2Fsa2VyX2dldF9maWx0ZXIod2Fsa2VyLmdldCgpKSwgPT0sIGZpbHRlci5nZXQoKSk7CiAK
ICAgICAgICAgaSA9IDA7CiAgICAgICAgIGZvciAoV2ViS2l0RE9NTm9kZSogbm9kZSA9IFdFQktJ
VF9ET01fTk9ERShyb290KTsgbm9kZTsgbm9kZSA9IHdlYmtpdF9kb21fdHJlZV93YWxrZXJfbmV4
dF9ub2RlKHdhbGtlci5nZXQoKSksICsraSkgewpAQCAtMTA3LDkgKzEwNyw5IEBAIHByaXZhdGU6
CiAKICAgICAgICAgLy8gU2hvdyBvbmx5IGVsZW1lbnRzLCByZXVzaW5nIHRoZSBpbnB1dCBmaWx0
ZXIuCiAgICAgICAgIHdhbGtlciA9IGFkb3B0R1JlZih3ZWJraXRfZG9tX2RvY3VtZW50X2NyZWF0
ZV90cmVlX3dhbGtlcihkb2N1bWVudCwgV0VCS0lUX0RPTV9OT0RFKHJvb3QpLCBXRUJLSVRfRE9N
X05PREVfRklMVEVSX1NIT1dfRUxFTUVOVCwgZmlsdGVyLmdldCgpLCBGQUxTRSwgbnVsbHB0cikp
OwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX1RSRUVfV0FMS0VSKHdhbGtlci5nZXQo
KSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfVFJFRV9XQUxLRVIod2Fs
a2VyLmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNo
ZXMoR19PQkpFQ1Qod2Fsa2VyLmdldCgpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9kb21f
dHJlZV93YWxrZXJfZ2V0X2ZpbHRlcih3YWxrZXIuZ2V0KCkpID09IGZpbHRlci5nZXQoKSk7Cisg
ICAgICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJraXRfZG9tX3RyZWVfd2Fsa2VyX2dldF9maWx0ZXIo
d2Fsa2VyLmdldCgpKSwgPT0sIGZpbHRlci5nZXQoKSk7CiAKICAgICAgICAgaSA9IDA7CiAgICAg
ICAgIGZvciAoV2ViS2l0RE9NTm9kZSogbm9kZSA9IFdFQktJVF9ET01fTk9ERShyb290KTsgbm9k
ZTsgbm9kZSA9IHdlYmtpdF9kb21fdHJlZV93YWxrZXJfbmV4dF9ub2RlKHdhbGtlci5nZXQoKSks
ICsraSkgewpAQCAtMTI2LDE4ICsxMjYsMTggQEAgcHJpdmF0ZToKICAgICBib29sIHRlc3ROb2Rl
SXRlcmF0b3IoV2ViS2l0V2ViUGFnZSogcGFnZSkKICAgICB7CiAgICAgICAgIFdlYktpdERPTURv
Y3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2Up
OwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7Cisg
ICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOwog
ICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRv
Y3VtZW50KSk7CiAKICAgICAgICAgV2ViS2l0RE9NRWxlbWVudCogcm9vdCA9IHdlYmtpdF9kb21f
ZG9jdW1lbnRfZ2V0X2VsZW1lbnRfYnlfaWQoZG9jdW1lbnQsICJyb290Iik7Ci0gICAgICAgIGdf
YXNzZXJ0KFdFQktJVF9ET01fSVNfTk9ERShyb290KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUo
V0VCS0lUX0RPTV9JU19OT0RFKHJvb3QpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVk
V2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChyb290KSk7CiAKICAgICAgICAgLy8gTm8gZmlsdGVy
LgogICAgICAgICBHUmVmUHRyPFdlYktpdERPTU5vZGVJdGVyYXRvcj4gaXRlciA9IGFkb3B0R1Jl
Zih3ZWJraXRfZG9tX2RvY3VtZW50X2NyZWF0ZV9ub2RlX2l0ZXJhdG9yKGRvY3VtZW50LCBXRUJL
SVRfRE9NX05PREUocm9vdCksIFdFQktJVF9ET01fTk9ERV9GSUxURVJfU0hPV19BTEwsIG51bGxw
dHIsIEZBTFNFLCBudWxscHRyKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfTk9E
RV9JVEVSQVRPUihpdGVyLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RP
TV9JU19OT0RFX0lURVJBVE9SKGl0ZXIuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNE
ZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChpdGVyLmdldCgpKSk7Ci0gICAgICAgIGdf
YXNzZXJ0KCF3ZWJraXRfZG9tX25vZGVfaXRlcmF0b3JfZ2V0X2ZpbHRlcihpdGVyLmdldCgpKSk7
CisgICAgICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2RvbV9ub2RlX2l0ZXJhdG9yX2dldF9maWx0
ZXIoaXRlci5nZXQoKSkpOwogCiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAgICB3aGls
ZSAoV2ViS2l0RE9NTm9kZSogbm9kZSA9IHdlYmtpdF9kb21fbm9kZV9pdGVyYXRvcl9uZXh0X25v
ZGUoaXRlci5nZXQoKSwgbnVsbHB0cikpIHsKQEAgLTE1Miw5ICsxNTIsOSBAQCBwcml2YXRlOgog
ICAgICAgICAvLyBJbnB1dCBlbGVtZW50cyBmaWx0ZXIuCiAgICAgICAgIEdSZWZQdHI8V2ViS2l0
RE9NTm9kZUZpbHRlcj4gZmlsdGVyID0gYWRvcHRHUmVmKHN0YXRpY19jYXN0PFdlYktpdERPTU5v
ZGVGaWx0ZXIqPihnX29iamVjdF9uZXcod2Via2l0X25vZGVfZmlsdGVyX2dldF90eXBlKCksIG51
bGxwdHIpKSk7CiAgICAgICAgIGl0ZXIgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9kb2N1bWVudF9j
cmVhdGVfbm9kZV9pdGVyYXRvcihkb2N1bWVudCwgV0VCS0lUX0RPTV9OT0RFKHJvb3QpLCBXRUJL
SVRfRE9NX05PREVfRklMVEVSX1NIT1dfQUxMLCBmaWx0ZXIuZ2V0KCksIEZBTFNFLCBudWxscHRy
KSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfTk9ERV9JVEVSQVRPUihpdGVyLmdl
dCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19OT0RFX0lURVJBVE9S
KGl0ZXIuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5p
c2hlcyhHX09CSkVDVChpdGVyLmdldCgpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9kb21f
bm9kZV9pdGVyYXRvcl9nZXRfZmlsdGVyKGl0ZXIuZ2V0KCkpID09IGZpbHRlci5nZXQoKSk7Cisg
ICAgICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJraXRfZG9tX25vZGVfaXRlcmF0b3JfZ2V0X2ZpbHRl
cihpdGVyLmdldCgpKSwgPT0sIGZpbHRlci5nZXQoKSk7CiAKICAgICAgICAgaSA9IDA7CiAgICAg
ICAgIHdoaWxlIChXZWJLaXRET01Ob2RlKiBub2RlID0gd2Via2l0X2RvbV9ub2RlX2l0ZXJhdG9y
X25leHRfbm9kZShpdGVyLmdldCgpLCBudWxscHRyKSkgewpAQCAtMTY4LDkgKzE2OCw5IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgLy8gU2hvdyBvbmx5IGVsZW1lbnRzLCByZXVzaW5nIHRoZSBpbnB1
dCBmaWx0ZXIuCiAgICAgICAgIGl0ZXIgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9kb2N1bWVudF9j
cmVhdGVfbm9kZV9pdGVyYXRvcihkb2N1bWVudCwgV0VCS0lUX0RPTV9OT0RFKHJvb3QpLCBXRUJL
SVRfRE9NX05PREVfRklMVEVSX1NIT1dfRUxFTUVOVCwgZmlsdGVyLmdldCgpLCBGQUxTRSwgbnVs
bHB0cikpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX05PREVfSVRFUkFUT1IoaXRl
ci5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfTk9ERV9JVEVS
QVRPUihpdGVyLmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0
RmluaXNoZXMoR19PQkpFQ1QoaXRlci5nZXQoKSkpOwotICAgICAgICBnX2Fzc2VydCh3ZWJraXRf
ZG9tX25vZGVfaXRlcmF0b3JfZ2V0X2ZpbHRlcihpdGVyLmdldCgpKSA9PSBmaWx0ZXIuZ2V0KCkp
OworICAgICAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X2RvbV9ub2RlX2l0ZXJhdG9yX2dldF9m
aWx0ZXIoaXRlci5nZXQoKSksID09LCBmaWx0ZXIuZ2V0KCkpOwogCiAgICAgICAgIGkgPSAwOwog
ICAgICAgICB3aGlsZSAoV2ViS2l0RE9NTm9kZSogbm9kZSA9IHdlYmtpdF9kb21fbm9kZV9pdGVy
YXRvcl9uZXh0X25vZGUoaXRlci5nZXQoKSwgbnVsbHB0cikpIHsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVUZXN0LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5vZGVUZXN0LmNwcAppbmRleCA3OWQ3NmFl
N2QyMzlmOWE2MjNlYTY3OWE2NWM1ODk0NDBiYzBkNjIzLi5iYTdmYWI5OWNmNmE2ZjUyMDZmYjBh
MzY5OTMyMjNkNTZiNWZmYzQzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEd0ay9ET01Ob2RlVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvRE9NTm9kZVRlc3QuY3BwCkBAIC0zNCw0MSArMzQsNDEgQEAgcHJpdmF0ZToK
ICAgICBib29sIHRlc3RIaWVyYXJjaHlOYXZpZ2F0aW9uKFdlYktpdFdlYlBhZ2UqIHBhZ2UpCiAg
ICAgewogICAgICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQgPSB3ZWJraXRfd2ViX3Bh
Z2VfZ2V0X2RvbV9kb2N1bWVudChwYWdlKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9J
U19ET0NVTUVOVChkb2N1bWVudCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01f
SVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hl
blRlc3RGaW5pc2hlcyhHX09CSkVDVChkb2N1bWVudCkpOwogCiAgICAgICAgIFdlYktpdERPTUhU
TUxIZWFkRWxlbWVudCogaGVhZCA9IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2hlYWQoZG9jdW1l
bnQpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxfSEVBRF9FTEVNRU5UKGhl
YWQpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0hUTUxfSEVBRF9FTEVN
RU5UKGhlYWQpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hl
cyhHX09CSkVDVChoZWFkKSk7CiAKICAgICAgICAgLy8gVGl0bGUsIGhlYWQncyBjaGlsZC4KLSAg
ICAgICAgZ19hc3NlcnQod2Via2l0X2RvbV9ub2RlX2hhc19jaGlsZF9ub2RlcyhXRUJLSVRfRE9N
X05PREUoaGVhZCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfZG9tX25vZGVfaGFz
X2NoaWxkX25vZGVzKFdFQktJVF9ET01fTk9ERShoZWFkKSkpOwogICAgICAgICBHUmVmUHRyPFdl
YktpdERPTU5vZGVMaXN0PiBsaXN0ID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fbm9kZV9nZXRfY2hp
bGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGhlYWQpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJ
VF9ET01fSVNfTk9ERV9MSVNUKGxpc3QuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShX
RUJLSVRfRE9NX0lTX05PREVfTElTVChsaXN0LmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9iamVj
dElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobGlzdC5nZXQoKSkpOwogICAgICAg
ICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2RvbV9ub2RlX2xpc3RfZ2V0X2xlbmd0aChsaXN0Lmdl
dCgpKSwgPT0sIDEpOwogICAgICAgICBXZWJLaXRET01Ob2RlKiBub2RlID0gd2Via2l0X2RvbV9u
b2RlX2xpc3RfaXRlbShsaXN0LmdldCgpLCAwKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RP
TV9JU19IVE1MX1RJVExFX0VMRU1FTlQobm9kZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdF
QktJVF9ET01fSVNfSFRNTF9USVRMRV9FTEVNRU5UKG5vZGUpKTsKICAgICAgICAgYXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChub2RlKSk7CiAKICAgICAgICAg
Ly8gQm9keSwgSGVhZCBzaWJsaW5nLgogICAgICAgICBub2RlID0gd2Via2l0X2RvbV9ub2RlX2dl
dF9uZXh0X3NpYmxpbmcoV0VCS0lUX0RPTV9OT0RFKGhlYWQpKTsKLSAgICAgICAgZ19hc3NlcnQo
V0VCS0lUX0RPTV9JU19IVE1MX0JPRFlfRUxFTUVOVChub2RlKSk7CisgICAgICAgIGdfYXNzZXJ0
X3RydWUoV0VCS0lUX0RPTV9JU19IVE1MX0JPRFlfRUxFTUVOVChub2RlKSk7CiAgICAgICAgIGFz
c2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qobm9kZSkpOwogICAg
ICAgICBXZWJLaXRET01IVE1MQm9keUVsZW1lbnQqIGJvZHkgPSBXRUJLSVRfRE9NX0hUTUxfQk9E
WV9FTEVNRU5UKG5vZGUpOwogCiAgICAgICAgIC8vIFRoZXJlIGlzIG5vIHRoaXJkIHNpYmxpbmcK
LSAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9kb21fbm9kZV9nZXRfbmV4dF9zaWJsaW5nKG5vZGUp
KTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfZG9tX25vZGVfZ2V0X25leHRfc2libGlu
Zyhub2RlKSk7CiAKICAgICAgICAgLy8gQm9keSdzIHByZXZpb3VzIHNpYmxpbmcgaXMgSGVhZC4K
ICAgICAgICAgbm9kZSA9IHdlYmtpdF9kb21fbm9kZV9nZXRfcHJldmlvdXNfc2libGluZyhXRUJL
SVRfRE9NX05PREUoYm9keSkpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxf
SEVBRF9FTEVNRU5UKG5vZGUpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lT
X0hUTUxfSEVBRF9FTEVNRU5UKG5vZGUpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVk
V2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChub2RlKSk7CiAKICAgICAgICAgLy8gQm9keSBoYXMg
MyBjaGlsZHJlbi4KLSAgICAgICAgZ19hc3NlcnQod2Via2l0X2RvbV9ub2RlX2hhc19jaGlsZF9u
b2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJr
aXRfZG9tX25vZGVfaGFzX2NoaWxkX25vZGVzKFdFQktJVF9ET01fTk9ERShib2R5KSkpOwogICAg
ICAgICBsaXN0ID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fbm9kZV9nZXRfY2hpbGRfbm9kZXMoV0VC
S0lUX0RPTV9OT0RFKGJvZHkpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfTk9E
RV9MSVNUKGxpc3QuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lT
X05PREVfTElTVChsaXN0LmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdo
ZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobGlzdC5nZXQoKSkpOwogICAgICAgICB1bnNpZ25lZCBs
b25nIGxlbmd0aCA9IHdlYmtpdF9kb21fbm9kZV9saXN0X2dldF9sZW5ndGgobGlzdC5nZXQoKSk7
CiAgICAgICAgIGdfYXNzZXJ0X2NtcGludChsZW5ndGgsID09LCAzKTsKQEAgLTc2LDcgKzc2LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgLy8gVGhlIHRocmVlIG9mIHRoZW0gYXJlIFAgdGFncy4KICAg
ICAgICAgZm9yICh1bnNpZ25lZCBsb25nIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAg
ICAgICAgIG5vZGUgPSB3ZWJraXRfZG9tX25vZGVfbGlzdF9pdGVtKGxpc3QuZ2V0KCksIGkpOwot
ICAgICAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19IVE1MX1BBUkFHUkFQSF9FTEVNRU5U
KG5vZGUpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19IVE1MX1BB
UkFHUkFQSF9FTEVNRU5UKG5vZGUpKTsKICAgICAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRl
ZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qobm9kZSkpOwogICAgICAgICB9CiAKQEAgLTkxLDkx
ICs5MSw5MSBAQCBwcml2YXRlOgogICAgIGJvb2wgdGVzdEluc2VydGlvbihXZWJLaXRXZWJQYWdl
KiBwYWdlKQogICAgIHsKICAgICAgICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Vi
a2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQocGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdF
QktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShX
RUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZG9jdW1lbnQpKTsKIAogICAgICAgICBX
ZWJLaXRET01IVE1MRWxlbWVudCogYm9keSA9IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2JvZHko
ZG9jdW1lbnQpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChi
b2R5KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19IVE1MX0VMRU1FTlQo
Ym9keSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdf
T0JKRUNUKGJvZHkpKTsKIAogICAgICAgICAvLyBCb2R5IHNob3VsZG4ndCBoYXZlIGFueSBjaGls
ZHJlbiBhdCB0aGlzIHBvaW50LgotICAgICAgICBnX2Fzc2VydCghd2Via2l0X2RvbV9ub2RlX2hh
c19jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkpKTsKKyAgICAgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X2RvbV9ub2RlX2hhc19jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9k
eSkpKTsKIAogICAgICAgICAvLyBUaGUgdmFsdWUgb2YgYSBub24tZXhpc3RlbnQgYXR0cmlidXRl
IHNob3VsZCBiZSBudWxsLCBub3QgYW4gZW1wdHkgc3RyaW5nCi0gICAgICAgIGdfYXNzZXJ0KCF3
ZWJraXRfZG9tX2h0bWxfYm9keV9lbGVtZW50X2dldF9iYWNrZ3JvdW5kKFdFQktJVF9ET01fSFRN
TF9CT0RZX0VMRU1FTlQoYm9keSkpKTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfZG9t
X2h0bWxfYm9keV9lbGVtZW50X2dldF9iYWNrZ3JvdW5kKFdFQktJVF9ET01fSFRNTF9CT0RZX0VM
RU1FTlQoYm9keSkpKTsKIAogICAgICAgICAvLyBJbnNlcnQgb25lIFAgZWxlbWVudC4KICAgICAg
ICAgV2ViS2l0RE9NRWxlbWVudCogcCA9IHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX2VsZW1l
bnQoZG9jdW1lbnQsICJQIiwgMCk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRN
TF9FTEVNRU5UKHApKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0hUTUxf
RUxFTUVOVChwKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNo
ZXMoR19PQkpFQ1QocCkpOwogICAgICAgICB3ZWJraXRfZG9tX25vZGVfYXBwZW5kX2NoaWxkKFdF
QktJVF9ET01fTk9ERShib2R5KSwgV0VCS0lUX0RPTV9OT0RFKHApLCAwKTsKIAogICAgICAgICAv
LyBOb3cgaXQgc2hvdWxkIGhhdmUgb25lLCB0aGUgc2FtZSB0aGF0IHdlIGluc2VydGVkLgotICAg
ICAgICBnX2Fzc2VydCh3ZWJraXRfZG9tX25vZGVfaGFzX2NoaWxkX25vZGVzKFdFQktJVF9ET01f
Tk9ERShib2R5KSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9kb21fbm9kZV9oYXNf
Y2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7CiAgICAgICAgIEdSZWZQdHI8V2Vi
S2l0RE9NTm9kZUxpc3Q+IGxpc3QgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9ub2RlX2dldF9jaGls
ZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkpKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lU
X0RPTV9JU19OT0RFX0xJU1QobGlzdC5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdF
QktJVF9ET01fSVNfTk9ERV9MSVNUKGxpc3QuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0
SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChsaXN0LmdldCgpKSk7CiAgICAgICAg
IGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfZG9tX25vZGVfbGlzdF9nZXRfbGVuZ3RoKGxpc3QuZ2V0
KCkpLCA9PSwgMSk7CiAgICAgICAgIFdlYktpdERPTU5vZGUqIG5vZGUgPSB3ZWJraXRfZG9tX25v
ZGVfbGlzdF9pdGVtKGxpc3QuZ2V0KCksIDApOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9N
X0lTX0hUTUxfRUxFTUVOVChub2RlKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RP
TV9JU19IVE1MX0VMRU1FTlQobm9kZSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRX
aGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG5vZGUpKTsKLSAgICAgICAgZ19hc3NlcnQod2Via2l0
X2RvbV9ub2RlX2lzX3NhbWVfbm9kZShXRUJLSVRfRE9NX05PREUocCksIG5vZGUpKTsKKyAgICAg
ICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfZG9tX25vZGVfaXNfc2FtZV9ub2RlKFdFQktJVF9ET01f
Tk9ERShwKSwgbm9kZSkpOwogCiAgICAgICAgIC8vIFJlcGxhY2UgdGhlIFAgdGFnIHdpdGggYSBE
SVYgdGFnLgogICAgICAgICBXZWJLaXRET01FbGVtZW50KiBkaXYgPSB3ZWJraXRfZG9tX2RvY3Vt
ZW50X2NyZWF0ZV9lbGVtZW50KGRvY3VtZW50LCAiRElWIiwgMCk7Ci0gICAgICAgIGdfYXNzZXJ0
KFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5UKGRpdikpOworICAgICAgICBnX2Fzc2VydF90cnVl
KFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5UKGRpdikpOwogICAgICAgICBhc3NlcnRPYmplY3RJ
c0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRpdikpOwogICAgICAgICB3ZWJraXRf
ZG9tX25vZGVfcmVwbGFjZV9jaGlsZChXRUJLSVRfRE9NX05PREUoYm9keSksIFdFQktJVF9ET01f
Tk9ERShkaXYpLCBXRUJLSVRfRE9NX05PREUocCksIDApOwotICAgICAgICBnX2Fzc2VydCh3ZWJr
aXRfZG9tX25vZGVfaGFzX2NoaWxkX25vZGVzKFdFQktJVF9ET01fTk9ERShib2R5KSkpOworICAg
ICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9kb21fbm9kZV9oYXNfY2hpbGRfbm9kZXMoV0VCS0lU
X0RPTV9OT0RFKGJvZHkpKSk7CiAgICAgICAgIGxpc3QgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9u
b2RlX2dldF9jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkpKTsKLSAgICAgICAgZ19h
c3NlcnQoV0VCS0lUX0RPTV9JU19OT0RFX0xJU1QobGlzdC5nZXQoKSkpOworICAgICAgICBnX2Fz
c2VydF90cnVlKFdFQktJVF9ET01fSVNfTk9ERV9MSVNUKGxpc3QuZ2V0KCkpKTsKICAgICAgICAg
YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChsaXN0LmdldCgp
KSk7CiAgICAgICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfZG9tX25vZGVfbGlzdF9nZXRfbGVu
Z3RoKGxpc3QuZ2V0KCkpLCA9PSwgMSk7CiAgICAgICAgIG5vZGUgPSB3ZWJraXRfZG9tX25vZGVf
bGlzdF9pdGVtKGxpc3QuZ2V0KCksIDApOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lT
X0hUTUxfRUxFTUVOVChub2RlKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9J
U19IVE1MX0VMRU1FTlQobm9kZSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVu
VGVzdEZpbmlzaGVzKEdfT0JKRUNUKG5vZGUpKTsKLSAgICAgICAgZ19hc3NlcnQod2Via2l0X2Rv
bV9ub2RlX2lzX3NhbWVfbm9kZShXRUJLSVRfRE9NX05PREUoZGl2KSwgbm9kZSkpOworICAgICAg
ICBnX2Fzc2VydF90cnVlKHdlYmtpdF9kb21fbm9kZV9pc19zYW1lX25vZGUoV0VCS0lUX0RPTV9O
T0RFKGRpdiksIG5vZGUpKTsKIAogICAgICAgICAvLyBOb3cgcmVtb3ZlIHRoZSB0YWcuCiAgICAg
ICAgIHdlYmtpdF9kb21fbm9kZV9yZW1vdmVfY2hpbGQoV0VCS0lUX0RPTV9OT0RFKGJvZHkpLCBu
b2RlLCAwKTsKICAgICAgICAgbGlzdCA9IGFkb3B0R1JlZih3ZWJraXRfZG9tX25vZGVfZ2V0X2No
aWxkX25vZGVzKFdFQktJVF9ET01fTk9ERShib2R5KSkpOwotICAgICAgICBnX2Fzc2VydChXRUJL
SVRfRE9NX0lTX05PREVfTElTVChsaXN0LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUo
V0VCS0lUX0RPTV9JU19OT0RFX0xJU1QobGlzdC5nZXQoKSkpOwogICAgICAgICBhc3NlcnRPYmpl
Y3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGxpc3QuZ2V0KCkpKTsKICAgICAg
ICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9kb21fbm9kZV9saXN0X2dldF9sZW5ndGgobGlzdC5n
ZXQoKSksID09LCAwKTsKIAogICAgICAgICAvLyBUZXN0IGluc2VydCBiZWZvcmUuIElmIHJlZkNo
aWxkIGlzIG51bGwsIGluc2VydCBuZXdDaGlsZCBhcyBsYXN0IGVsZW1lbnQgb2YgcGFyZW50Lgog
ICAgICAgICBkaXYgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2NyZWF0ZV9lbGVtZW50KGRvY3VtZW50
LCAiRElWIiwgMCk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5U
KGRpdikpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5U
KGRpdikpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdf
T0JKRUNUKGRpdikpOwogICAgICAgICB3ZWJraXRfZG9tX25vZGVfaW5zZXJ0X2JlZm9yZShXRUJL
SVRfRE9NX05PREUoYm9keSksIFdFQktJVF9ET01fTk9ERShkaXYpLCAwLCAwKTsKLSAgICAgICAg
Z19hc3NlcnQod2Via2l0X2RvbV9ub2RlX2hhc19jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUo
Ym9keSkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfZG9tX25vZGVfaGFzX2NoaWxk
X25vZGVzKFdFQktJVF9ET01fTk9ERShib2R5KSkpOwogICAgICAgICBsaXN0ID0gYWRvcHRHUmVm
KHdlYmtpdF9kb21fbm9kZV9nZXRfY2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7
Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfTk9ERV9MSVNUKGxpc3QuZ2V0KCkpKTsK
KyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX05PREVfTElTVChsaXN0LmdldCgp
KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpF
Q1QobGlzdC5nZXQoKSkpOwogICAgICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2RvbV9ub2Rl
X2xpc3RfZ2V0X2xlbmd0aChsaXN0LmdldCgpKSwgPT0sIDEpOwogICAgICAgICBub2RlID0gd2Vi
a2l0X2RvbV9ub2RlX2xpc3RfaXRlbShsaXN0LmdldCgpLCAwKTsKLSAgICAgICAgZ19hc3NlcnQo
V0VCS0lUX0RPTV9JU19IVE1MX0VMRU1FTlQobm9kZSkpOworICAgICAgICBnX2Fzc2VydF90cnVl
KFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5UKG5vZGUpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0
SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChub2RlKSk7Ci0gICAgICAgIGdfYXNz
ZXJ0KHdlYmtpdF9kb21fbm9kZV9pc19zYW1lX25vZGUoV0VCS0lUX0RPTV9OT0RFKGRpdiksIG5v
ZGUpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfZG9tX25vZGVfaXNfc2FtZV9ub2Rl
KFdFQktJVF9ET01fTk9ERShkaXYpLCBub2RlKSk7CiAKICAgICAgICAgLy8gTm93IGluc2VydCBh
ICdwJyBiZWZvcmUgJ2RpdicuCiAgICAgICAgIHAgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2NyZWF0
ZV9lbGVtZW50KGRvY3VtZW50LCAiUCIsIDApOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9N
X0lTX0hUTUxfRUxFTUVOVChwKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9J
U19IVE1MX0VMRU1FTlQocCkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKHApKTsKICAgICAgICAgd2Via2l0X2RvbV9ub2RlX2luc2VydF9i
ZWZvcmUoV0VCS0lUX0RPTV9OT0RFKGJvZHkpLCBXRUJLSVRfRE9NX05PREUocCksIFdFQktJVF9E
T01fTk9ERShkaXYpLCAwKTsKLSAgICAgICAgZ19hc3NlcnQod2Via2l0X2RvbV9ub2RlX2hhc19j
aGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1
ZSh3ZWJraXRfZG9tX25vZGVfaGFzX2NoaWxkX25vZGVzKFdFQktJVF9ET01fTk9ERShib2R5KSkp
OwogICAgICAgICBsaXN0ID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fbm9kZV9nZXRfY2hpbGRfbm9k
ZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01f
SVNfTk9ERV9MSVNUKGxpc3QuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRf
RE9NX0lTX05PREVfTElTVChsaXN0LmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVs
ZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobGlzdC5nZXQoKSkpOwogICAgICAgICBnX2Fz
c2VydF9jbXBpbnQod2Via2l0X2RvbV9ub2RlX2xpc3RfZ2V0X2xlbmd0aChsaXN0LmdldCgpKSwg
PT0sIDIpOwogICAgICAgICBub2RlID0gd2Via2l0X2RvbV9ub2RlX2xpc3RfaXRlbShsaXN0Lmdl
dCgpLCAwKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19IVE1MX0VMRU1FTlQobm9k
ZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5UKG5v
ZGUpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09C
SkVDVChub2RlKSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9kb21fbm9kZV9pc19zYW1lX25v
ZGUoV0VCS0lUX0RPTV9OT0RFKHApLCBub2RlKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Vi
a2l0X2RvbV9ub2RlX2lzX3NhbWVfbm9kZShXRUJLSVRfRE9NX05PREUocCksIG5vZGUpKTsKICAg
ICAgICAgbm9kZSA9IHdlYmtpdF9kb21fbm9kZV9saXN0X2l0ZW0obGlzdC5nZXQoKSwgMSk7Ci0g
ICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5UKG5vZGUpKTsKKyAgICAg
ICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChub2RlKSk7CiAgICAg
ICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qobm9kZSkp
OwotICAgICAgICBnX2Fzc2VydCh3ZWJraXRfZG9tX25vZGVfaXNfc2FtZV9ub2RlKFdFQktJVF9E
T01fTk9ERShkaXYpLCBub2RlKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2RvbV9u
b2RlX2lzX3NhbWVfbm9kZShXRUJLSVRfRE9NX05PREUoZGl2KSwgbm9kZSkpOwogCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTE4NSwxNyArMTg1LDE3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBleHBlY3RlZFRhZ05hbWVzW10gPSB7ICJIVE1MIiwgIkhF
QUQiLCAiQk9EWSIsICJWSURFTyIsICJTT1VSQ0UiLCAiVklERU8iLCAiU09VUkNFIiwgIklOUFVU
IiB9OwogCiAgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJf
cGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9N
X0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RP
TV9JU19ET0NVTUVOVChkb2N1bWVudCkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRX
aGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRvY3VtZW50KSk7CiAKICAgICAgICAgR1JlZlB0cjxX
ZWJLaXRET01Ob2RlTGlzdD4gbGlzdCA9IGFkb3B0R1JlZih3ZWJraXRfZG9tX2RvY3VtZW50X3F1
ZXJ5X3NlbGVjdG9yX2FsbChkb2N1bWVudCwgIioiLCBudWxscHRyKSk7Ci0gICAgICAgIGdfYXNz
ZXJ0KFdFQktJVF9ET01fSVNfTk9ERV9MSVNUKGxpc3QuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3Nl
cnRfdHJ1ZShXRUJLSVRfRE9NX0lTX05PREVfTElTVChsaXN0LmdldCgpKSk7CiAgICAgICAgIGFz
c2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobGlzdC5nZXQoKSkp
OwogICAgICAgICBndWxvbmcgbm9kZUNvdW50ID0gd2Via2l0X2RvbV9ub2RlX2xpc3RfZ2V0X2xl
bmd0aChsaXN0LmdldCgpKTsKICAgICAgICAgZ19hc3NlcnRfY21wdWludChub2RlQ291bnQsID09
LCBHX05fRUxFTUVOVFMoZXhwZWN0ZWRUYWdOYW1lcykpOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbm9kZUNvdW50OyBpKyspIHsKICAgICAgICAgICAgIFdlYktpdERPTU5vZGUq
IG5vZGUgPSB3ZWJraXRfZG9tX25vZGVfbGlzdF9pdGVtKGxpc3QuZ2V0KCksIGkpOwotICAgICAg
ICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19OT0RFKG5vZGUpKTsKKyAgICAgICAgICAgIGdf
YXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19OT0RFKG5vZGUpKTsKICAgICAgICAgICAgIGFzc2Vy
dE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qobm9kZSkpOwogICAgICAg
ICAgICAgR1VuaXF1ZVB0cjxjaGFyPiB0YWdOYW1lKHdlYmtpdF9kb21fbm9kZV9nZXRfbm9kZV9u
YW1lKG5vZGUpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih0YWdOYW1lLmdldCgpLCA9
PSwgZXhwZWN0ZWRUYWdOYW1lc1tpXSk7CkBAIC0yMDksMTcgKzIwOSwxNyBAQCBwcml2YXRlOgog
ICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogZXhwZWN0ZWRUYWdOYW1lc1tdID0geyAiSFRNTCIs
ICJIRUFEIiwgIkJPRFkiLCAiVklERU8iLCAiU09VUkNFIiwgIlZJREVPIiwgIlNPVVJDRSIsICJJ
TlBVVCIgfTsKIAogICAgICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQgPSB3ZWJraXRf
d2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudChwYWdlKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lU
X0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJ
VF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxl
dGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkb2N1bWVudCkpOwogCiAgICAgICAgIEdSZWZQ
dHI8V2ViS2l0RE9NSFRNTENvbGxlY3Rpb24+IGNvbGxlY3Rpb24gPSBhZG9wdEdSZWYod2Via2l0
X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudHNfYnlfdGFnX25hbWVfYXNfaHRtbF9jb2xsZWN0aW9u
KGRvY3VtZW50LCAiKiIpKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19IVE1MX0NP
TExFQ1RJT04oY29sbGVjdGlvbi5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJ
VF9ET01fSVNfSFRNTF9DT0xMRUNUSU9OKGNvbGxlY3Rpb24uZ2V0KCkpKTsKICAgICAgICAgYXNz
ZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChjb2xsZWN0aW9uLmdl
dCgpKSk7CiAgICAgICAgIGd1bG9uZyBub2RlQ291bnQgPSB3ZWJraXRfZG9tX2h0bWxfY29sbGVj
dGlvbl9nZXRfbGVuZ3RoKGNvbGxlY3Rpb24uZ2V0KCkpOwogICAgICAgICBnX2Fzc2VydF9jbXB1
aW50KG5vZGVDb3VudCwgPT0sIEdfTl9FTEVNRU5UUyhleHBlY3RlZFRhZ05hbWVzKSk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBub2RlQ291bnQ7IGkrKykgewogICAgICAgICAg
ICAgV2ViS2l0RE9NTm9kZSogbm9kZSA9IHdlYmtpdF9kb21faHRtbF9jb2xsZWN0aW9uX2l0ZW0o
Y29sbGVjdGlvbi5nZXQoKSwgaSk7Ci0gICAgICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lT
X05PREUobm9kZSkpOworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX05P
REUobm9kZSkpOwogICAgICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5p
c2hlcyhHX09CSkVDVChub2RlKSk7CiAgICAgICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHRhZ05h
bWUod2Via2l0X2RvbV9ub2RlX2dldF9ub2RlX25hbWUobm9kZSkpOwogICAgICAgICAgICAgZ19h
c3NlcnRfY21wc3RyKHRhZ05hbWUuZ2V0KCksID09LCBleHBlY3RlZFRhZ05hbWVzW2ldKTsKQEAg
LTIzMSw0MSArMjMxLDQxIEBAIHByaXZhdGU6CiAgICAgYm9vbCB0ZXN0RE9NQ2FjaGUoV2ViS2l0
V2ViUGFnZSogcGFnZSkKICAgICB7CiAgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVu
dCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOwotICAgICAgICBnX2Fz
c2VydChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CisgICAgICAgIGdfYXNzZXJ0
X3RydWUoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOwogICAgICAgICBhc3NlcnRP
YmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRvY3VtZW50KSk7CiAKICAg
ICAgICAgLy8gRE9NIG9iamVjdHMgYWxyZWFkeSBpbiB0aGUgZG9jdW1lbnQgc2hvdWxkIGJlIGF1
dG9tYXRpY2FsbHkgaGFuZGxlZCBieSB0aGUgY2FjaGUuCiAgICAgICAgIFdlYktpdERPTUVsZW1l
bnQqIGRpdiA9IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2VsZW1lbnRfYnlfaWQoZG9jdW1lbnQs
ICJjb250YWluZXIiKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19IVE1MX0VMRU1F
TlQoZGl2KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19IVE1MX0VMRU1F
TlQoZGl2KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMo
R19PQkpFQ1QoZGl2KSk7CiAKICAgICAgICAgLy8gR2V0IHRoZSBzYW1lIGVsbWVudCB0d2ljZSBz
aG91bGQgcmV0dXJuIHRoZSBzYW1lIHBvaW50ZXIuCi0gICAgICAgIGdfYXNzZXJ0KGRpdiA9PSB3
ZWJraXRfZG9tX2RvY3VtZW50X2dldF9lbGVtZW50X2J5X2lkKGRvY3VtZW50LCAiY29udGFpbmVy
IikpOworICAgICAgICBnX2Fzc2VydF90cnVlKGRpdiA9PSB3ZWJraXRfZG9tX2RvY3VtZW50X2dl
dF9lbGVtZW50X2J5X2lkKGRvY3VtZW50LCAiY29udGFpbmVyIikpOwogCiAgICAgICAgIC8vIEEg
bmV3IERPTSBvYmplY3QgY3JlYXRlZCB0aGF0IGlzIGRlcml2ZWQgZnJvbSBOb2RlIHNob3VsZCBi
ZSBhdXRvbWF0aWNhbGx5IGhhbmRsZWQgYnkgdGhlIGNhY2hlLgogICAgICAgICBXZWJLaXRET01F
bGVtZW50KiBwID0gd2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfZWxlbWVudChkb2N1bWVudCwg
IlAiLCBudWxscHRyKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19IVE1MX1BBUkFH
UkFQSF9FTEVNRU5UKHApKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0hU
TUxfUEFSQUdSQVBIX0VMRU1FTlQocCkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRX
aGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHApKTsKIAogICAgICAgICAvLyBBIG5ldyBET00gb2Jq
ZWN0IGNyZWF0ZWQgdGhhdCBpc24ndCBkZXJpdmVkIGZyb20gTm9kZSBzaG91bGQgYmUgbWFudWFs
bHkgaGFuZGxlZC4KICAgICAgICAgR1JlZlB0cjxXZWJLaXRET01Ob2RlSXRlcmF0b3I+IGl0ZXIg
PSBhZG9wdEdSZWYod2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfbm9kZV9pdGVyYXRvcihkb2N1
bWVudCwgV0VCS0lUX0RPTV9OT0RFKGRpdiksIFdFQktJVF9ET01fTk9ERV9GSUxURVJfU0hPV19B
TEwsIG51bGxwdHIsIEZBTFNFLCBudWxscHRyKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9E
T01fSVNfTk9ERV9JVEVSQVRPUihpdGVyLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUo
V0VCS0lUX0RPTV9JU19OT0RFX0lURVJBVE9SKGl0ZXIuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0
T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChpdGVyLmdldCgpKSk7CiAK
ICAgICAgICAgLy8gV2UgY2FuIGFsc28gbWFudWFsbHkgaGFuZGxlIGEgRE9NIG9iamVjdCBoYW5k
bGVkIGJ5IHRoZSBjYWNoZS4KICAgICAgICAgR1JlZlB0cjxXZWJLaXRET01FbGVtZW50PiBwMiA9
IGFkb3B0R1JlZih3ZWJraXRfZG9tX2RvY3VtZW50X2NyZWF0ZV9lbGVtZW50KGRvY3VtZW50LCAi
UCIsIG51bGxwdHIpKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19IVE1MX1BBUkFH
UkFQSF9FTEVNRU5UKHAyLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RP
TV9JU19IVE1MX1BBUkFHUkFQSF9FTEVNRU5UKHAyLmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocDIuZ2V0KCkpKTsKIAogICAg
ICAgICAvLyBNYW51YWxseSBoYW5kbGluZyBhIERPTSBvYmplY3Qgb3duZWQgYnkgdGhlIGNhY2hl
IHNob3VsZG4ndCBjcmFzaCB3aGVuIHRoZSBjYWNoZSBoYXMgbW9yZSB0aGFuIG9uZSByZWZlcmVu
Y2UuCiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RE9NRWxlbWVudD4gcDMgPSBhZG9wdEdSZWYod2Vi
a2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfZWxlbWVudChkb2N1bWVudCwgIlAiLCBudWxscHRyKSk7
Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9QQVJBR1JBUEhfRUxFTUVOVChw
My5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfSFRNTF9QQVJB
R1JBUEhfRUxFTUVOVChwMy5nZXQoKSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRX
aGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHAzLmdldCgpKSk7CiAgICAgICAgIHdlYmtpdF9kb21f
bm9kZV9hcHBlbmRfY2hpbGQoV0VCS0lUX0RPTV9OT0RFKGRpdiksIFdFQktJVF9ET01fTk9ERShw
My5nZXQoKSksIG51bGxwdHIpOwogCiAgICAgICAgIC8vIERPTSBvYmplY3RzIHJlbW92ZWQgZnJv
bSB0aGUgZG9jdW1lbnQgYXJlIGFsc28gY29ycmVjdGx5IGhhbmRsZWQgYnkgdGhlIGNhY2hlLgog
ICAgICAgICBXZWJLaXRET01FbGVtZW50KiBhID0gd2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVf
ZWxlbWVudChkb2N1bWVudCwgIkEiLCBudWxscHRyKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lU
X0RPTV9JU19FTEVNRU5UKGEpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lT
X0VMRU1FTlQoYSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlz
aGVzKEdfT0JKRUNUKGEpKTsKICAgICAgICAgd2Via2l0X2RvbV9ub2RlX3JlbW92ZV9jaGlsZChX
RUJLSVRfRE9NX05PREUoZGl2KSwgV0VCS0lUX0RPTV9OT0RFKGEpLCBudWxscHRyKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NWFBhdGhOU1Jl
c29sdmVyVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Y
UGF0aE5TUmVzb2x2ZXJUZXN0LmNwcAppbmRleCBlYmI4ZjM5MjRhMjE4NzljNWFiZGQwNGY0ZTM3
OWE0ZDNhYjdmMWFjLi4zNWVlMzUwM2E0MGFhYTEzYmFhOGFkYzA4ODkyM2NmOTIwZThkNzhiIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01YUGF0aE5T
UmVzb2x2ZXJUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9ET01YUGF0aE5TUmVzb2x2ZXJUZXN0LmNwcApAQCAtNjUsMTUgKzY1LDE1IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBldmFsdWF0ZUZvb0NoaWxkVGV4dEFuZENoZWNrUmVzdWx0KFdlYktpdERPTURv
Y3VtZW50KiBkb2N1bWVudCwgV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyKiByZXNvbHZlcikKICAg
ICB7CiAgICAgICAgIFdlYktpdERPTUVsZW1lbnQqIGRvY3VtZW50RWxlbWVudCA9IHdlYmtpdF9k
b21fZG9jdW1lbnRfZ2V0X2RvY3VtZW50X2VsZW1lbnQoZG9jdW1lbnQpOwotICAgICAgICBnX2Fz
c2VydChXRUJLSVRfRE9NX0lTX0VMRU1FTlQoZG9jdW1lbnRFbGVtZW50KSk7CisgICAgICAgIGdf
YXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19FTEVNRU5UKGRvY3VtZW50RWxlbWVudCkpOwogICAg
ICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRvY3Vt
ZW50RWxlbWVudCkpOwogCiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RE9NWFBhdGhSZXN1bHQ+IHJl
c3VsdCA9IGFkb3B0R1JlZih3ZWJraXRfZG9tX2RvY3VtZW50X2V2YWx1YXRlKGRvY3VtZW50LCAi
Zm9vOmNoaWxkL3RleHQoKSIsIFdFQktJVF9ET01fTk9ERShkb2N1bWVudEVsZW1lbnQpLCByZXNv
bHZlciwgV0VCS0lUX0RPTV9YUEFUSF9SRVNVTFRfT1JERVJFRF9OT0RFX0lURVJBVE9SX1RZUEUs
IG51bGxwdHIsIG51bGxwdHIpKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19YUEFU
SF9SRVNVTFQocmVzdWx0LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RP
TV9JU19YUEFUSF9SRVNVTFQocmVzdWx0LmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocmVzdWx0LmdldCgpKSk7CiAKICAgICAg
ICAgV2ViS2l0RE9NTm9kZSogbm9kZVJlc3VsdCA9IHdlYmtpdF9kb21feHBhdGhfcmVzdWx0X2l0
ZXJhdGVfbmV4dChyZXN1bHQuZ2V0KCksIG51bGxwdHIpOwotICAgICAgICBnX2Fzc2VydChXRUJL
SVRfRE9NX0lTX05PREUobm9kZVJlc3VsdCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJ
VF9ET01fSVNfTk9ERShub2RlUmVzdWx0KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRl
ZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qobm9kZVJlc3VsdCkpOwogCiAgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4gbm9kZVZhbHVlKHdlYmtpdF9kb21fbm9kZV9nZXRfbm9kZV92YWx1ZShub2Rl
UmVzdWx0KSk7CkBAIC04MywxMSArODMsMTEgQEAgcHJpdmF0ZToKICAgICBib29sIHRlc3RYUGF0
aE5TUmVzb2x2ZXJOYXRpdmUoV2ViS2l0V2ViUGFnZSogcGFnZSkKICAgICB7CiAgICAgICAgIFdl
YktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3Vt
ZW50KHBhZ2UpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3Vt
ZW50KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1
bWVudCkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdf
T0JKRUNUKGRvY3VtZW50KSk7CiAKICAgICAgICAgR1JlZlB0cjxXZWJLaXRET01YUGF0aE5TUmVz
b2x2ZXI+IHJlc29sdmVyID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX25z
X3Jlc29sdmVyKGRvY3VtZW50LCBXRUJLSVRfRE9NX05PREUod2Via2l0X2RvbV9kb2N1bWVudF9n
ZXRfZG9jdW1lbnRfZWxlbWVudChkb2N1bWVudCkpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJ
VF9ET01fSVNfWFBBVEhfTlNfUkVTT0xWRVIocmVzb2x2ZXIuZ2V0KCkpKTsKKyAgICAgICAgZ19h
c3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX1hQQVRIX05TX1JFU09MVkVSKHJlc29sdmVyLmdldCgp
KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpF
Q1QocmVzb2x2ZXIuZ2V0KCkpKTsKICAgICAgICAgZXZhbHVhdGVGb29DaGlsZFRleHRBbmRDaGVj
a1Jlc3VsdChkb2N1bWVudCwgcmVzb2x2ZXIuZ2V0KCkpOwogCkBAIC05Nyw3ICs5Nyw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCB0ZXN0WFBhdGhOU1Jlc29sdmVyQ3VzdG9tKFdlYktpdFdlYlBhZ2Uq
IHBhZ2UpCiAgICAgewogICAgICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQgPSB3ZWJr
aXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudChwYWdlKTsKLSAgICAgICAgZ19hc3NlcnQoV0VC
S0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdF
QktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNE
ZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkb2N1bWVudCkpOwogCiAgICAgICAgIEdS
ZWZQdHI8V2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyPiByZXNvbHZlciA9IGFkb3B0R1JlZihXRUJL
SVRfRE9NX1hQQVRIX05TX1JFU09MVkVSKGdfb2JqZWN0X25ldyh3ZWJraXRfeHBhdGhfbnNfcmVz
b2x2ZXJfZ2V0X3R5cGUoKSwgbnVsbHB0cikpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RBdXRvY2xlYW51cHMuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdEF1dG9jbGVhbnVwcy5jcHAKaW5kZXggNTBlODJh
OWM2ZjVhNGU0OTY5MzRkZmIxYTUwM2UxODU3ZDVkNGI1OS4uODUzMDc3YzhhNzcyYTc1MGFiZTJj
Yzc0MGFhZGMwZjNiYTlmN2VmYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvVGVzdEF1dG9jbGVhbnVwcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHdGsvVGVzdEF1dG9jbGVhbnVwcy5jcHAKQEAgLTI4LDIzICsyOCwyMyBA
QCBzdGF0aWMgdm9pZCB0ZXN0VUlQcm9jZXNzQXV0b2NsZWFudXBzKFdlYlZpZXdUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogewogICAgIC8vIFNhbml0eS1jaGVjayBhIGNvdXBsZSBVSSBwcm9j
ZXNzIEFQSSBhdXRvY2xlYW51cHMgdGhhdCBhcmUgZWFzeSB0byB0ZXN0Li4uLgogICAgIGdfYXV0
b3B0cihXZWJLaXRXZWJDb250ZXh0KSBjb250ZXh0ID0gd2Via2l0X3dlYl9jb250ZXh0X25ldygp
OwotICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfQ09OVEVYVChjb250ZXh0KSk7CisgICAgZ19h
c3NlcnRfdHJ1ZShXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOwogICAgIHRlc3QtPmFz
c2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoY29udGV4dCkpOwog
CiAgICAgZ19hdXRvcHRyKFdlYktpdFdlYnNpdGVEYXRhTWFuYWdlcikgbWFuYWdlciA9IHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXcobnVsbHB0cik7Ci0gICAgZ19hc3NlcnQoV0VCS0lU
X0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpKTsKKyAgICBnX2Fzc2VydF90cnVlKFdF
QktJVF9JU19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSk7CiAgICAgdGVzdC0+YXNzZXJ0
T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChjb250ZXh0KSk7CiAKICAg
ICBnX2F1dG9wdHIoV2ViS2l0VXNlclNjcmlwdCkgdXNlclNjcmlwdCA9IHdlYmtpdF91c2VyX3Nj
cmlwdF9uZXcoIiIsCiAgICAgICAgIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFN
RVMsIFdFQktJVF9VU0VSX1NDUklQVF9JTkpFQ1RfQVRfRE9DVU1FTlRfU1RBUlQsCiAgICAgICAg
IG51bGxwdHIsIG51bGxwdHIpOwotICAgIGdfYXNzZXJ0KHVzZXJTY3JpcHQpOworICAgIGdfYXNz
ZXJ0X25vbm51bGwodXNlclNjcmlwdCk7CiAgICAgLy8gTm90IGEgR09iamVjdCwgc28ganVzdCBj
aGVja2luZyB0aGF0IHRoaXMgZG9lc24ndCBjcmFzaC4uLi4KIH0KIAogc3RhdGljIHZvaWQgdGVz
dFdlYlByb2Nlc3NBdXRvY2xlYW51cHMoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiB7Ci0gICAgZ19hc3NlcnQodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIkF1dG9jbGVhbnVwcyIs
ICJ3ZWItcHJvY2Vzcy1hdXRvY2xlYW51cHMiKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5y
dW5XZWJQcm9jZXNzVGVzdCgiQXV0b2NsZWFudXBzIiwgIndlYi1wcm9jZXNzLWF1dG9jbGVhbnVw
cyIpKTsKIH0KIAogdm9pZCBiZWZvcmVBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdENvbnRleHRNZW51LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RDb250ZXh0TWVudS5jcHAKaW5kZXggZDkzZDViMjQ0
ZGZkZTE0NzE5NDEwMzY4NjY3MDczMDIxYzRmY2Q1Yy4uMWE4ODQyZTllMjc5MDY5ZjFhMjUyZTQ0
MGJmOWI2OTFiYmE0NjNmNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvVGVzdENvbnRleHRNZW51LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9UZXN0Q29udGV4dE1lbnUuY3BwCkBAIC0zMiw3ICszMiw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgY2hlY2tDb250ZXh0TWVudUV2ZW50KEdka0V2ZW50KiBldmVudCkKICAg
ICB7Ci0gICAgICAgIGdfYXNzZXJ0KGV2ZW50KTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChl
dmVudCk7CiAgICAgICAgIGdfYXNzZXJ0X2NtcGludChldmVudC0+dHlwZSwgPT0sIG1fZXhwZWN0
ZWRFdmVudFR5cGUpOwogCiAgICAgICAgIHN3aXRjaCAobV9leHBlY3RlZEV2ZW50VHlwZSkgewpA
QCAtNTUsMTAgKzU1LDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBnYm9vbGVhbiBjb250ZXh0
TWVudUNhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdENvbnRleHRNZW51KiBj
b250ZXh0TWVudSwgR2RrRXZlbnQqIGV2ZW50LCBXZWJLaXRIaXRUZXN0UmVzdWx0KiBoaXRUZXN0
UmVzdWx0LCBDb250ZXh0TWVudVRlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBnX2Fzc2VydChX
RUJLSVRfSVNfQ09OVEVYVF9NRU5VKGNvbnRleHRNZW51KSk7CisgICAgICAgIGdfYXNzZXJ0X3Ry
dWUoV0VCS0lUX0lTX0NPTlRFWFRfTUVOVShjb250ZXh0TWVudSkpOwogICAgICAgICB0ZXN0LT5h
c3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGNvbnRleHRNZW51
KSk7CiAgICAgICAgIHRlc3QtPmNoZWNrQ29udGV4dE1lbnVFdmVudChldmVudCk7Ci0gICAgICAg
IGdfYXNzZXJ0KFdFQktJVF9JU19ISVRfVEVTVF9SRVNVTFQoaGl0VGVzdFJlc3VsdCkpOworICAg
ICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19ISVRfVEVTVF9SRVNVTFQoaGl0VGVzdFJlc3Vs
dCkpOwogICAgICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVz
KEdfT0JKRUNUKGhpdFRlc3RSZXN1bHQpKTsKIAogICAgICAgICByZXR1cm4gdGVzdC0+Y29udGV4
dE1lbnUoY29udGV4dE1lbnUsIGV2ZW50LCBoaXRUZXN0UmVzdWx0KTsKQEAgLTExMSwzOCArMTEx
LDM4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNoZWNrQWN0aW9uU3RhdGUoR3RrQWN0aW9uKiBhY3Rp
b24sIHVuc2lnbmVkIHN0YXRlKQogICAgIHsKICAgICAgICAgaWYgKHN0YXRlICYgVmlzaWJsZSkK
LSAgICAgICAgICAgIGdfYXNzZXJ0KGd0a19hY3Rpb25fZ2V0X3Zpc2libGUoYWN0aW9uKSk7Cisg
ICAgICAgICAgICBnX2Fzc2VydF90cnVlKGd0a19hY3Rpb25fZ2V0X3Zpc2libGUoYWN0aW9uKSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdfYXNzZXJ0KCFndGtfYWN0aW9uX2dldF92aXNp
YmxlKGFjdGlvbikpOworICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2UoZ3RrX2FjdGlvbl9nZXRf
dmlzaWJsZShhY3Rpb24pKTsKIAogICAgICAgICBpZiAoc3RhdGUgJiBFbmFibGVkKQotICAgICAg
ICAgICAgZ19hc3NlcnQoZ3RrX2FjdGlvbl9nZXRfc2Vuc2l0aXZlKGFjdGlvbikpOworICAgICAg
ICAgICAgZ19hc3NlcnRfdHJ1ZShndGtfYWN0aW9uX2dldF9zZW5zaXRpdmUoYWN0aW9uKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdfYXNzZXJ0KCFndGtfYWN0aW9uX2dldF9zZW5zaXRp
dmUoYWN0aW9uKSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZShndGtfYWN0aW9uX2dldF9z
ZW5zaXRpdmUoYWN0aW9uKSk7CiAKICAgICAgICAgaWYgKEdUS19JU19UT0dHTEVfQUNUSU9OKGFj
dGlvbikpIHsKICAgICAgICAgICAgIGlmIChzdGF0ZSAmIENoZWNrZWQpCi0gICAgICAgICAgICAg
ICAgZ19hc3NlcnQoZ3RrX3RvZ2dsZV9hY3Rpb25fZ2V0X2FjdGl2ZShHVEtfVE9HR0xFX0FDVElP
TihhY3Rpb24pKSk7CisgICAgICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZShndGtfdG9nZ2xlX2Fj
dGlvbl9nZXRfYWN0aXZlKEdUS19UT0dHTEVfQUNUSU9OKGFjdGlvbikpKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBnX2Fzc2VydCghZ3RrX3RvZ2dsZV9hY3Rpb25fZ2V0X2Fj
dGl2ZShHVEtfVE9HR0xFX0FDVElPTihhY3Rpb24pKSk7CisgICAgICAgICAgICAgICAgZ19hc3Nl
cnRfZmFsc2UoZ3RrX3RvZ2dsZV9hY3Rpb25fZ2V0X2FjdGl2ZShHVEtfVE9HR0xFX0FDVElPTihh
Y3Rpb24pKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBHTGlzdCogY2hlY2tDdXJyZW50SXRl
bUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KEdMaXN0KiBpdGVtcywgV2ViS2l0Q29udGV4dE1lbnVB
Y3Rpb24gc3RvY2tBY3Rpb24sIHVuc2lnbmVkIHN0YXRlKQogICAgIHsKLSAgICAgICAgZ19hc3Nl
cnQoaXRlbXMpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfSVNfQ09OVEVYVF9NRU5VX0lURU0o
aXRlbXMtPmRhdGEpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChpdGVtcyk7CisgICAgICAg
IGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX0NPTlRFWFRfTUVOVV9JVEVNKGl0ZW1zLT5kYXRhKSk7
CiAKICAgICAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NPTlRFWFRf
TUVOVV9JVEVNKGl0ZW1zLT5kYXRhKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hl
blRlc3RGaW5pc2hlcyhHX09CSkVDVChpdGVtKSk7CiAKICAgICAgICAgR19HTlVDX0JFR0lOX0lH
Tk9SRV9ERVBSRUNBVElPTlM7CiAgICAgICAgIEd0a0FjdGlvbiogYWN0aW9uID0gd2Via2l0X2Nv
bnRleHRfbWVudV9pdGVtX2dldF9hY3Rpb24oaXRlbSk7Ci0gICAgICAgIGdfYXNzZXJ0KEdUS19J
U19BQ1RJT04oYWN0aW9uKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoR1RLX0lTX0FDVElPTihh
Y3Rpb24pKTsKICAgICAgICAgR19HTlVDX0VORF9JR05PUkVfREVQUkVDQVRJT05TOwogCiAgICAg
ICAgIEdBY3Rpb24qIGdBY3Rpb24gPSB3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X2dhY3Rp
b24oaXRlbSk7Ci0gICAgICAgIGdfYXNzZXJ0KEdfSVNfQUNUSU9OKGdBY3Rpb24pKTsKKyAgICAg
ICAgZ19hc3NlcnRfdHJ1ZShHX0lTX0FDVElPTihnQWN0aW9uKSk7CiAKICAgICAgICAgZ19hc3Nl
cnRfY21waW50KHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfc3RvY2tfYWN0aW9uKGl0ZW0p
LCA9PSwgc3RvY2tBY3Rpb24pOwogCkBAIC0xNTMsMjcgKzE1MywyNyBAQCBwdWJsaWM6CiAKICAg
ICBHTGlzdCogY2hlY2tDdXJyZW50SXRlbUlzQ3VzdG9tQWN0aW9uQW5kR2V0TmV4dChHTGlzdCog
aXRlbXMsIGNvbnN0IGNoYXIqIGxhYmVsLCB1bnNpZ25lZCBzdGF0ZSkKICAgICB7Ci0gICAgICAg
IGdfYXNzZXJ0KGl0ZW1zKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX0NPTlRFWFRfTUVO
VV9JVEVNKGl0ZW1zLT5kYXRhKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoaXRlbXMpOwor
ICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19DT05URVhUX01FTlVfSVRFTShpdGVtcy0+
ZGF0YSkpOwogCiAgICAgICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9D
T05URVhUX01FTlVfSVRFTShpdGVtcy0+ZGF0YSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVs
ZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoaXRlbSkpOwogCiAgICAgICAgIEdfR05VQ19C
RUdJTl9JR05PUkVfREVQUkVDQVRJT05TOwogICAgICAgICBHdGtBY3Rpb24qIGFjdGlvbiA9IHdl
YmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfYWN0aW9uKGl0ZW0pOwotICAgICAgICBnX2Fzc2Vy
dChHVEtfSVNfQUNUSU9OKGFjdGlvbikpOworICAgICAgICBnX2Fzc2VydF90cnVlKEdUS19JU19B
Q1RJT04oYWN0aW9uKSk7CiAgICAgICAgIEdfR05VQ19FTkRfSUdOT1JFX0RFUFJFQ0FUSU9OUzsK
IAogICAgICAgICBHQWN0aW9uKiBnQWN0aW9uID0gd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dl
dF9nYWN0aW9uKGl0ZW0pOwotICAgICAgICBnX2Fzc2VydChHX0lTX0FDVElPTihnQWN0aW9uKSk7
CisgICAgICAgIGdfYXNzZXJ0X3RydWUoR19JU19BQ1RJT04oZ0FjdGlvbikpOwogICAgICAgICBn
X2Fzc2VydF9jbXBzdHIoZ3RrX2FjdGlvbl9nZXRfbmFtZShhY3Rpb24pLCA9PSwgZ19hY3Rpb25f
Z2V0X25hbWUoZ0FjdGlvbikpOwotICAgICAgICBnX2Fzc2VydChndGtfYWN0aW9uX2dldF9zZW5z
aXRpdmUoYWN0aW9uKSA9PSBnX2FjdGlvbl9nZXRfZW5hYmxlZChnQWN0aW9uKSk7CisgICAgICAg
IGdfYXNzZXJ0X2NtcGludChndGtfYWN0aW9uX2dldF9zZW5zaXRpdmUoYWN0aW9uKSwgPT0sIGdf
YWN0aW9uX2dldF9lbmFibGVkKGdBY3Rpb24pKTsKICAgICAgICAgaWYgKEdUS19JU19UT0dHTEVf
QUNUSU9OKGFjdGlvbikpIHsKLSAgICAgICAgICAgIGdfYXNzZXJ0KGdfdmFyaWFudF90eXBlX2Vx
dWFsKGdfYWN0aW9uX2dldF9zdGF0ZV90eXBlKGdBY3Rpb24pLCBHX1ZBUklBTlRfVFlQRV9CT09M
RUFOKSk7CisgICAgICAgICAgICBnX2Fzc2VydF90cnVlKGdfdmFyaWFudF90eXBlX2VxdWFsKGdf
YWN0aW9uX2dldF9zdGF0ZV90eXBlKGdBY3Rpb24pLCBHX1ZBUklBTlRfVFlQRV9CT09MRUFOKSk7
CiAgICAgICAgICAgICBHUmVmUHRyPEdWYXJpYW50PiBzdGF0ZSA9IGFkb3B0R1JlZihnX2FjdGlv
bl9nZXRfc3RhdGUoZ0FjdGlvbikpOwotICAgICAgICAgICAgZ19hc3NlcnQoZ3RrX3RvZ2dsZV9h
Y3Rpb25fZ2V0X2FjdGl2ZShHVEtfVE9HR0xFX0FDVElPTihhY3Rpb24pKSA9PSBnX3ZhcmlhbnRf
Z2V0X2Jvb2xlYW4oc3RhdGUuZ2V0KCkpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2NtcGludChn
dGtfdG9nZ2xlX2FjdGlvbl9nZXRfYWN0aXZlKEdUS19UT0dHTEVfQUNUSU9OKGFjdGlvbikpLCA9
PSwgZ192YXJpYW50X2dldF9ib29sZWFuKHN0YXRlLmdldCgpKSk7CiAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgZ19hc3NlcnQoIWdfYWN0aW9uX2dldF9zdGF0ZV90eXBlKGdBY3Rpb24pKTsK
KyAgICAgICAgICAgIGdfYXNzZXJ0X251bGwoZ19hY3Rpb25fZ2V0X3N0YXRlX3R5cGUoZ0FjdGlv
bikpOwogCiAgICAgICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1f
Z2V0X3N0b2NrX2FjdGlvbihpdGVtKSwgPT0sIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0NV
U1RPTSk7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihndGtfYWN0aW9uX2dldF9sYWJlbChhY3Rp
b24pLCA9PSwgbGFiZWwpOwpAQCAtMTg1LDI1ICsxODUsMjUgQEAgcHVibGljOgogCiAgICAgR0xp
c3QqIGNoZWNrQ3VycmVudEl0ZW1Jc1N1Yk1lbnVBbmRHZXROZXh0KEdMaXN0KiBpdGVtcywgY29u
c3QgY2hhciogbGFiZWwsIHVuc2lnbmVkIHN0YXRlLCBHTGlzdCoqIHN1Yk1lbnVJdGVyKQogICAg
IHsKLSAgICAgICAgZ19hc3NlcnQoaXRlbXMpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfSVNf
Q09OVEVYVF9NRU5VX0lURU0oaXRlbXMtPmRhdGEpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVs
bChpdGVtcyk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX0NPTlRFWFRfTUVOVV9J
VEVNKGl0ZW1zLT5kYXRhKSk7CiAKICAgICAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVt
ID0gV0VCS0lUX0NPTlRFWFRfTUVOVV9JVEVNKGl0ZW1zLT5kYXRhKTsKICAgICAgICAgYXNzZXJ0
T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChpdGVtKSk7CiAKICAgICAg
ICAgR19HTlVDX0JFR0lOX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAgICAgICAgIEd0a0FjdGlvbiog
YWN0aW9uID0gd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF9hY3Rpb24oaXRlbSk7Ci0gICAg
ICAgIGdfYXNzZXJ0KEdUS19JU19BQ1RJT04oYWN0aW9uKSk7CisgICAgICAgIGdfYXNzZXJ0X3Ry
dWUoR1RLX0lTX0FDVElPTihhY3Rpb24pKTsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKGd0a19h
Y3Rpb25fZ2V0X2xhYmVsKGFjdGlvbiksID09LCBsYWJlbCk7CiAgICAgICAgIEdfR05VQ19FTkRf
SUdOT1JFX0RFUFJFQ0FUSU9OUzsKIAogICAgICAgICBHQWN0aW9uKiBnQWN0aW9uID0gd2Via2l0
X2NvbnRleHRfbWVudV9pdGVtX2dldF9nYWN0aW9uKGl0ZW0pOwotICAgICAgICBnX2Fzc2VydChH
X0lTX0FDVElPTihnQWN0aW9uKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoR19JU19BQ1RJT04o
Z0FjdGlvbikpOwogCiAgICAgICAgIGNoZWNrQWN0aW9uU3RhdGUoYWN0aW9uLCBzdGF0ZSk7CiAK
ICAgICAgICAgV2ViS2l0Q29udGV4dE1lbnUqIHN1Yk1lbnUgPSB3ZWJraXRfY29udGV4dF9tZW51
X2l0ZW1fZ2V0X3N1Ym1lbnUoaXRlbSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19DT05U
RVhUX01FTlUoc3ViTWVudSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19DT05U
RVhUX01FTlUoc3ViTWVudSkpOwogICAgICAgICBpZiAoc3ViTWVudUl0ZXIpCiAgICAgICAgICAg
ICAqc3ViTWVudUl0ZXIgPSB3ZWJraXRfY29udGV4dF9tZW51X2dldF9pdGVtcyhzdWJNZW51KTsK
IApAQCAtMjEyLDExICsyMTIsMTEgQEAgcHVibGljOgogCiAgICAgR0xpc3QqIGNoZWNrQ3VycmVu
dEl0ZW1Jc1NlcGFyYXRvckFuZEdldE5leHQoR0xpc3QqIGl0ZW1zKQogICAgIHsKLSAgICAgICAg
Z19hc3NlcnQoaXRlbXMpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfSVNfQ09OVEVYVF9NRU5V
X0lURU0oaXRlbXMtPmRhdGEpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChpdGVtcyk7Cisg
ICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX0NPTlRFWFRfTUVOVV9JVEVNKGl0ZW1zLT5k
YXRhKSk7CiAKICAgICAgICAgV2ViS2l0Q29udGV4dE1lbnVJdGVtKiBpdGVtID0gV0VCS0lUX0NP
TlRFWFRfTUVOVV9JVEVNKGl0ZW1zLT5kYXRhKTsKLSAgICAgICAgZ19hc3NlcnQod2Via2l0X2Nv
bnRleHRfbWVudV9pdGVtX2lzX3NlcGFyYXRvcihpdGVtKSk7CisgICAgICAgIGdfYXNzZXJ0X3Ry
dWUod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2lzX3NlcGFyYXRvcihpdGVtKSk7CiAKICAgICAg
ICAgcmV0dXJuIGdfbGlzdF9uZXh0KGl0ZW1zKTsKICAgICB9CkBAIC0zMTAsNDQgKzMxMCw0NCBA
QCBwdWJsaWM6CiAKICAgICAgICAgc3dpdGNoIChtX2V4cGVjdGVkTWVudVR5cGUpIHsKICAgICAg
ICAgY2FzZSBOYXZpZ2F0aW9uOgotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVz
dF9yZXN1bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKLSAgICAgICAgICAgIGdf
YXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJl
c3VsdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29u
dGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsK
LSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNf
c2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdl
YmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKKyAg
ICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9p
c19pbWFnZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOworICAg
ICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lz
X2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdl
YmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkp
OwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0
TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9HT19CQUNLLCBWaXNpYmxlKTsK
ICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5l
eHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fR09fRk9SV0FSRCwgVmlzaWJsZSk7
CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXRO
ZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX1NUT1AsIFZpc2libGUpOwogICAg
ICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChp
dGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9SRUxPQUQsIFZpc2libGUgfCBFbmFibGVk
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIExpbms6Ci0gICAgICAgICAgICBn
X2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVz
dWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250
ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOwotICAg
ICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0
YWJsZShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CisgICAgICAg
ICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5r
KGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRf
dGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAg
ICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEo
aGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAg
ICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxl
Y3Rpb24oaGl0VGVzdFJlc3VsdCkpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0
ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElP
Tl9PUEVOX0xJTkssIFZpc2libGUgfCBFbmFibGVkKTsKICAgICAgICAgICAgIGl0ZXIgPSBjaGVj
a0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRf
TUVOVV9BQ1RJT05fT1BFTl9MSU5LX0lOX05FV19XSU5ET1csIFZpc2libGUgfCBFbmFibGVkKTsK
ICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5l
eHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fRE9XTkxPQURfTElOS19UT19ESVNL
LCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRl
bUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9O
X0NPUFlfTElOS19UT19DTElQQk9BUkQsIFZpc2libGUgfCBFbmFibGVkKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIEltYWdlOgotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtp
dF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKLSAgICAg
ICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZSho
aXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKLSAgICAgICAgICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJl
c3VsdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29u
dGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3Vs
dCkpOworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2Nv
bnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRfZmFs
c2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQp
KTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29u
dGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9m
YWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RS
ZXN1bHQpKTsKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlv
bkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fT1BFTl9JTUFHRV9J
Tl9ORVdfV0lORE9XLCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAgICAgICAgICAgICBpdGVyID0gY2hl
Y2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhU
X01FTlVfQUNUSU9OX0RPV05MT0FEX0lNQUdFX1RPX0RJU0ssIFZpc2libGUgfCBFbmFibGVkKTsK
ICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5l
eHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fQ09QWV9JTUFHRV9UT19DTElQQk9B
UkQsIFZpc2libGUgfCBFbmFibGVkKTsKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJ
dGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJ
T05fQ09QWV9JTUFHRV9VUkxfVE9fQ0xJUEJPQVJELCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBMaW5rSW1hZ2U6Ci0gICAgICAgICAgICBnX2Fz
c2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0
KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRf
aXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9o
aXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAg
ICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxl
KGhpdFRlc3RSZXN1bHQpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAg
IGdfYXNzZXJ0X3RydWUod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0
VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19h
c3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRl
c3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBn
X2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9u
KGhpdFRlc3RSZXN1bHQpKTsKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNT
dG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fT1BF
Tl9MSU5LLCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJy
ZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVf
QUNUSU9OX09QRU5fTElOS19JTl9ORVdfV0lORE9XLCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAgICAg
ICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0
ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0RPV05MT0FEX0xJTktfVE9fRElTSywgVmlz
aWJsZSB8IEVuYWJsZWQpOwpAQCAtMzU5LDExICszNTksMTEgQEAgcHVibGljOgogICAgICAgICAg
ICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBX
RUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9DT1BZX0lNQUdFX1VSTF9UT19DTElQQk9BUkQsIFZp
c2libGUgfCBFbmFibGVkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZpZGVv
OgotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9p
c19saW5rKGhpdFRlc3RSZXN1bHQpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOwotICAgICAgICAg
ICAgZ19hc3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRl
c3RSZXN1bHQpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOwotICAgICAgICAgICAgZ19hc3Nl
cnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJl
c3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3Vs
dF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1
bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9j
b250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2Zh
bHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVz
dWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKICAgICAgICAgICAgIGl0ZXIg
PSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NP
TlRFWFRfTUVOVV9BQ1RJT05fTUVESUFfUExBWSwgVmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAg
ICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVy
LCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9NRURJQV9NVVRFLCBWaXNpYmxlKTsKICAgICAg
ICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRl
ciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fVE9HR0xFX01FRElBX0NPTlRST0xTLCBWaXNp
YmxlIHwgRW5hYmxlZCB8IENoZWNrZWQpOwpAQCAtMzc1LDExICszNzUsMTEgQEAgcHVibGljOgog
ICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4
dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9ET1dOTE9BRF9WSURFT19UT19ESVNL
LCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBB
dWRpbzoKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRl
eHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICAg
ICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYSho
aXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICAgICAgICAgIGdf
YXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRl
c3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNz
ZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZShoaXRUZXN0
UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2Vy
dF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVz
dFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CiAgICAgICAgICAgICBp
dGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJ
VF9DT05URVhUX01FTlVfQUNUSU9OX01FRElBX1BMQVksIFZpc2libGUgfCBFbmFibGVkKTsKICAg
ICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQo
aXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fTUVESUFfTVVURSwgVmlzaWJsZSk7CiAg
ICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0
KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX1RPR0dMRV9NRURJQV9DT05UUk9MUywg
VmlzaWJsZSB8IEVuYWJsZWQgfCBDaGVja2VkKTsKQEAgLTM5MSwxMSArMzkxLDExIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdl
dE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fRE9XTkxPQURfQVVESU9fVE9f
RElTSywgVmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgRWRpdGFibGU6Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3Vs
dF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQo
IXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZShoaXRUZXN0UmVzdWx0KSk7
Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lz
X21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9oaXRf
dGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAg
ICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlv
bihoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAg
ICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2Uo
aGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAg
IGdfYXNzZXJ0X3RydWUod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxl
KGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRf
dGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOwogICAgICAg
ICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVy
LCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9DVVQsIFZpc2libGUpOwogICAgICAgICAgICAg
aXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJL
SVRfQ09OVEVYVF9NRU5VX0FDVElPTl9DT1BZLCBWaXNpYmxlKTsKICAgICAgICAgICAgIGl0ZXIg
PSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NP
TlRFWFRfTUVOVV9BQ1RJT05fUEFTVEUsIFZpc2libGUgfCBFbmFibGVkKTsKQEAgLTQwNiwxMSAr
NDA2LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNT
dG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fVU5J
Q09ERSwgVmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgU2VsZWN0aW9uOgotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0
KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkp
OwotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9p
c19tZWRpYShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hp
dF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICAg
ICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rp
b24oaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hp
dF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdl
KGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRf
dGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAg
ICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFi
bGUoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKICAgICAg
ICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRl
ciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fQ09QWSwgVmlzaWJsZSB8IEVuYWJsZWQpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC00MjEsNyArNDIxLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1NlcGFyYXRvckFu
ZEdldE5leHQoaXRlcik7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3Rv
Y2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0lOU1BF
Q1RfRUxFTUVOVCwgVmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAgICB9Ci0gICAgICAgIGdfYXNz
ZXJ0KCFpdGVyKTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbChpdGVyKTsKIAogICAgICAgICBxdWl0
TWFpbkxvb3AoKTsKIApAQCAtNTUwLDcgKzU1MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWN0
aXZhdGVNZW51SXRlbSgpCiAgICAgewotICAgICAgICBnX2Fzc2VydChtX2l0ZW1Ub0FjdGl2YXRl
TGFiZWwpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKG1faXRlbVRvQWN0aXZhdGVMYWJlbCk7
CiAgICAgICAgIEd0a01lbnUqIG1lbnUgPSBnZXRQb3B1cE1lbnUoKTsKICAgICAgICAgR3RrTWVu
dUl0ZW0qIGl0ZW0gPSBnZXRNZW51SXRlbShtZW51LCBtX2l0ZW1Ub0FjdGl2YXRlTGFiZWwpOwog
ICAgICAgICBndGtfbWVudV9zaGVsbF9hY3RpdmF0ZV9pdGVtKEdUS19NRU5VX1NIRUxMKG1lbnUp
LCBHVEtfV0lER0VUKGl0ZW0pLCBUUlVFKTsKQEAgLTU4Niw5ICs1ODYsOSBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHRlc3QtPm1fYWN0aXZhdGVkID0g
dHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAodGVzdC0+bV9leHBlY3RlZFRhcmdldCkKLSAgICAg
ICAgICAgICAgICAgICAgZ19hc3NlcnQoZ192YXJpYW50X2VxdWFsKHRlc3QtPm1fZXhwZWN0ZWRU
YXJnZXQuZ2V0KCksIHRhcmdldCkpOworICAgICAgICAgICAgICAgICAgICBnX2Fzc2VydF90cnVl
KGdfdmFyaWFudF9lcXVhbCh0ZXN0LT5tX2V4cGVjdGVkVGFyZ2V0LmdldCgpLCB0YXJnZXQpKTsK
ICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGdfYXNzZXJ0KCF0YXJn
ZXQpOworICAgICAgICAgICAgICAgICAgICBnX2Fzc2VydF9udWxsKHRhcmdldCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdGVzdC0+bV9hY3RpdmF0ZWQgPSB0
cnVlOwpAQCAtNjQyLDM5ICs2NDIsMzkgQEAgc3RhdGljIHZvaWQgdGVzdENvbnRleHRNZW51UG9w
dWxhdGVNZW51KENvbnRleHRNZW51Q3VzdG9tVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnQKICAgICB0
ZXN0LT5zZXRBY3Rpb24oYWN0aW9uLmdldCgpKTsKICAgICB0ZXN0LT5zaG93Q29udGV4dE1lbnVB
bmRXYWl0VW50aWxGaW5pc2hlZCgpOwogICAgIHRlc3QtPmFjdGl2YXRlQ3VzdG9tTWVudUl0ZW1B
bmRXYWl0VW50aWxBY3RpdmF0ZWQoZ3RrX2FjdGlvbl9nZXRfbGFiZWwoYWN0aW9uLmdldCgpKSk7
Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9hY3RpdmF0ZWQpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5t
X3RvZ2dsZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9hY3RpdmF0ZWQpOworICAgIGdf
YXNzZXJ0X2ZhbHNlKHRlc3QtPm1fdG9nZ2xlZCk7CiAKICAgICAvLyBDcmVhdGUgYSBjdXN0b20g
dG9nZ2xlIG1lbnUgaXRlbS4KICAgICBHUmVmUHRyPEd0a0FjdGlvbj4gdG9nZ2xlQWN0aW9uID0g
YWRvcHRHUmVmKEdUS19BQ1RJT04oZ3RrX3RvZ2dsZV9hY3Rpb25fbmV3KCJXZWJLaXRHVEsrQ3Vz
dG9tVG9nZ2xlQWN0aW9uIiwgIkN1c3RvbSBfVG9nZ2xlIEFjdGlvbiIsIG51bGxwdHIsIG51bGxw
dHIpKSk7CiAgICAgdGVzdC0+c2V0QWN0aW9uKHRvZ2dsZUFjdGlvbi5nZXQoKSk7CiAgICAgdGVz
dC0+c2hvd0NvbnRleHRNZW51QW5kV2FpdFVudGlsRmluaXNoZWQoKTsKICAgICB0ZXN0LT50b2dn
bGVDdXN0b21NZW51SXRlbUFuZFdhaXRVbnRpbFRvZ2dsZWQoZ3RrX2FjdGlvbl9nZXRfbGFiZWwo
dG9nZ2xlQWN0aW9uLmdldCgpKSk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1fYWN0aXZhdGVkKTsK
LSAgICBnX2Fzc2VydCh0ZXN0LT5tX3RvZ2dsZWQpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3Qt
Pm1fYWN0aXZhdGVkKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fdG9nZ2xlZCk7CiAKICAg
ICAvLyBDcmVhdGUgYSBjdXN0b20gbWVudSBpdGVtIHVzaW5nIEdBY3Rpb24uCiAgICAgR1JlZlB0
cjxHQWN0aW9uPiBnQWN0aW9uID0gYWRvcHRHUmVmKEdfQUNUSU9OKGdfc2ltcGxlX2FjdGlvbl9u
ZXcoIldlYktpdEdUSytDdXN0b21HQWN0aW9uIiwgbnVsbHB0cikpKTsKICAgICB0ZXN0LT5zZXRB
Y3Rpb24oZ0FjdGlvbi5nZXQoKSwgIkN1c3RvbSBfR0FjdGlvbiIpOwogICAgIHRlc3QtPnNob3dD
b250ZXh0TWVudUFuZFdhaXRVbnRpbEZpbmlzaGVkKCk7CiAgICAgdGVzdC0+YWN0aXZhdGVDdXN0
b21NZW51SXRlbUFuZFdhaXRVbnRpbEFjdGl2YXRlZCgiQ3VzdG9tIF9HQWN0aW9uIik7Ci0gICAg
Z19hc3NlcnQodGVzdC0+bV9hY3RpdmF0ZWQpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3RvZ2ds
ZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9hY3RpdmF0ZWQpOworICAgIGdfYXNzZXJ0
X2ZhbHNlKHRlc3QtPm1fdG9nZ2xlZCk7CiAKICAgICAvLyBDcmVhdGUgYSBjdXN0b20gdG9nZ2xl
IG1lbnUgaXRlbSB1c2luZyBHQWN0aW9uLgogICAgIEdSZWZQdHI8R0FjdGlvbj4gdG9nZ2xlR0Fj
dGlvbiA9IGFkb3B0R1JlZihHX0FDVElPTihnX3NpbXBsZV9hY3Rpb25fbmV3X3N0YXRlZnVsKCJX
ZWJLaXRHVEsrQ3VzdG9tVG9nZ2xlR0FjdGlvbiIsIG51bGxwdHIsIGdfdmFyaWFudF9uZXdfYm9v
bGVhbihGQUxTRSkpKSk7CiAgICAgdGVzdC0+c2V0QWN0aW9uKHRvZ2dsZUdBY3Rpb24uZ2V0KCks
ICJDdXN0b20gX1RvZ2dsZSBHQWN0aW9uIik7CiAgICAgdGVzdC0+c2hvd0NvbnRleHRNZW51QW5k
V2FpdFVudGlsRmluaXNoZWQoKTsKICAgICB0ZXN0LT50b2dnbGVDdXN0b21NZW51SXRlbUFuZFdh
aXRVbnRpbFRvZ2dsZWQoIkN1c3RvbSBfVG9nZ2xlIEdBY3Rpb24iKTsKLSAgICBnX2Fzc2VydCgh
dGVzdC0+bV9hY3RpdmF0ZWQpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fdG9nZ2xlZCk7CisgICAg
Z19hc3NlcnRfZmFsc2UodGVzdC0+bV9hY3RpdmF0ZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVz
dC0+bV90b2dnbGVkKTsKIAogICAgIC8vIENyZWF0ZSBhIGN1c3RvbSBtZW51IGl0ZW0gdXNpbmcg
R0FjdGlvbiB3aXRoIGEgdGFyZ2V0LgogICAgIGdBY3Rpb24gPSBhZG9wdEdSZWYoR19BQ1RJT04o
Z19zaW1wbGVfYWN0aW9uX25ldygiV2ViS2l0R1RLK0N1c3RvbUdBY3Rpb25XaXRoVGFyZ2V0Iiwg
R19WQVJJQU5UX1RZUEVfU1RSSU5HKSkpOwogICAgIHRlc3QtPnNldEFjdGlvbihnQWN0aW9uLmdl
dCgpLCAiQ3VzdG9tIF9HQWN0aW9uIFdpdGggVGFyZ2V0IiwgZ192YXJpYW50X25ld19zdHJpbmco
IldlYktpdEdUSytDdXN0b21HQWN0aW9uVGFyZ2V0IikpOwogICAgIHRlc3QtPnNob3dDb250ZXh0
TWVudUFuZFdhaXRVbnRpbEZpbmlzaGVkKCk7CiAgICAgdGVzdC0+YWN0aXZhdGVDdXN0b21NZW51
SXRlbUFuZFdhaXRVbnRpbEFjdGl2YXRlZCgiQ3VzdG9tIF9HQWN0aW9uIFdpdGggVGFyZ2V0Iik7
Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9hY3RpdmF0ZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVz
dC0+bV9hY3RpdmF0ZWQpOwogfQogCiBjbGFzcyBDb250ZXh0TWVudUN1c3RvbUZ1bGxUZXN0OiBw
dWJsaWMgQ29udGV4dE1lbnVUZXN0IHsKQEAgLTc0Myw3ICs3NDMsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTZXBhcmF0b3JBbmRHZXROZXh0KGl0ZXIpOwog
ICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzQ3VzdG9tQWN0aW9uQW5kR2V0TmV4dChp
dGVyLCAiQ3VzdG9tIF9HQWN0aW9uIiwgVmlzaWJsZSk7CiAgICAgICAgIGl0ZXIgPSBjaGVja0N1
cnJlbnRJdGVtSXNDdXN0b21BY3Rpb25BbmRHZXROZXh0KGl0ZXIsICJDdXN0b20gVF9vZ2dsZSBH
QWN0aW9uIiwgVmlzaWJsZSB8IEVuYWJsZWQgfCBDaGVja2VkKTsKLSAgICAgICAgZ19hc3NlcnQo
IWl0ZXIpOworICAgICAgICBnX2Fzc2VydF9udWxsKGl0ZXIpOwogCiAgICAgICAgIHF1aXRNYWlu
TG9vcCgpOwogCkBAIC04MzQsMjMgKzgzNCwyMyBAQCBwdWJsaWM6CiAgICAgICAgIEdSZWZQdHI8
V2ViS2l0Q29udGV4dE1lbnVJdGVtPiBpdGVtID0gd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX25l
d19mcm9tX3N0b2NrX2FjdGlvbihXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9PUEVOX0xJTksp
OwogCiAgICAgICAgIC8vIEFkZCBzdWJtZW51IHRvIG5ld2x5IGNyZWF0ZWQgaXRlbS4KLSAgICAg
ICAgZ19hc3NlcnQoIXdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfc3VibWVudShpdGVtLmdl
dCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dl
dF9zdWJtZW51KGl0ZW0uZ2V0KCkpKTsKICAgICAgICAgd2Via2l0X2NvbnRleHRfbWVudV9pdGVt
X3NldF9zdWJtZW51KGl0ZW0uZ2V0KCksIHN1Yk1lbnUyLmdldCgpKTsKLSAgICAgICAgZ19hc3Nl
cnQod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF9zdWJtZW51KGl0ZW0uZ2V0KCkpID09IHN1
Yk1lbnUyLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfY21waGV4KHdlYmtpdF9jb250ZXh0X21l
bnVfaXRlbV9nZXRfc3VibWVudShpdGVtLmdldCgpKSwgPT0sIHN1Yk1lbnUyLmdldCgpKTsKIAog
ICAgICAgICAvLyBSZXBsYWNlIHRoZSBzdWJtZW51LgogICAgICAgICB3ZWJraXRfY29udGV4dF9t
ZW51X2l0ZW1fc2V0X3N1Ym1lbnUoaXRlbS5nZXQoKSwgMCk7Ci0gICAgICAgIGdfYXNzZXJ0KCF3
ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X3N1Ym1lbnUoaXRlbS5nZXQoKSkpOworICAgICAg
ICBnX2Fzc2VydF9udWxsKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfc3VibWVudShpdGVt
LmdldCgpKSk7CiAKICAgICAgICAgLy8gVHJ5IHRvIGFkZCBhIHN1Ym1lbnUgYWxyZWFkeSBhZGRl
ZCB0byBhbm90aGVyIGl0ZW0uCiAgICAgICAgIHJlbW92ZUxvZ0ZhdGFsRmxhZyhHX0xPR19MRVZF
TF9XQVJOSU5HKTsKICAgICAgICAgd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX3NldF9zdWJtZW51
KGl0ZW0uZ2V0KCksIHN1Yk1lbnUuZ2V0KCkpOwogICAgICAgICBhZGRMb2dGYXRhbEZsYWcoR19M
T0dfTEVWRUxfV0FSTklORyk7Ci0gICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfY29udGV4dF9tZW51
X2l0ZW1fZ2V0X3N1Ym1lbnUoaXRlbS5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF9udWxsKHdl
YmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfc3VibWVudShpdGVtLmdldCgpKSk7CiAKICAgICAg
ICAgLy8gQSByZW1vdmVkIHN1Ym1lbnUgc2hvdWxkbid0IGhhdmUgYSBwYXJlbnQuCiAgICAgICAg
IHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9zZXRfc3VibWVudShpdGVtLmdldCgpLCBzdWJNZW51
Mi5nZXQoKSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRf
c3VibWVudShpdGVtLmdldCgpKSA9PSBzdWJNZW51Mi5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0
X2NtcGhleCh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X3N1Ym1lbnUoaXRlbS5nZXQoKSks
ID09LCBzdWJNZW51Mi5nZXQoKSk7CiAKICAgICAgICAgcXVpdE1haW5Mb29wKCk7CiAKQEAgLTkw
Nyw3ICs5MDcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29udGV4dE1lbnVEaXNtaXNzZWQoQ29udGV4
dE1lbnVEaXNtaXNzZWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludAogICAgIHRlc3QtPndhaXRVbnRp
bExvYWRGaW5pc2hlZCgpOwogCiAgICAgdGVzdC0+c2hvd0NvbnRleHRNZW51QW5kV2FpdFVudGls
RGlzbWlzc2VkKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9kaXNtaXNzZWQpOworICAgIGdfYXNz
ZXJ0X3RydWUodGVzdC0+bV9kaXNtaXNzZWQpOwogfQogCiBjbGFzcyBDb250ZXh0TWVudVdlYkV4
dGVuc2lvblRlc3Q6IHB1YmxpYyBDb250ZXh0TWVudVRlc3QgewpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdERPTUNsaWVudFJlY3QuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdERPTUNsaWVudFJlY3QuY3BwCmlu
ZGV4IGZmYjQ3NDcxNTM3OWEwZWVjNmI4NDYxNzk3OGY5MjI3Y2JmYzliMzIuLjAxYzgwNzNlNjc3
MDE5ODc4Zjc1MWQ3NDIwNWQ1N2U1OGYyNjQ1MmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RET01DbGllbnRSZWN0LmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NQ2xpZW50UmVjdC5jcHAKQEAgLTMw
LDEyICszMCwxMiBAQCBzdGF0aWMgY29uc3QgY2hhciogdGVzdEhUTUwgPSAiPGh0bWw+PGhlYWQ+
PC9oZWFkPjxib2R5PiIKIAogc3RhdGljIHZvaWQgdGVzdFdlYktpdERPTUNsaWVudFJlY3REaXZC
b3VuZGluZ0NsaWVudFJlY3RQb3NpdGlvbihXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKIHsKLSAgICBnX2Fzc2VydCh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RE9NQ2xp
ZW50UmVjdCIsICJkaXYtYm91bmRpbmctY2xpZW50LXJlY3QtcG9zaXRpb24iLCB0ZXN0SFRNTCkp
OworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdERPTUNs
aWVudFJlY3QiLCAiZGl2LWJvdW5kaW5nLWNsaWVudC1yZWN0LXBvc2l0aW9uIiwgdGVzdEhUTUwp
KTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFdlYktpdERPTUNsaWVudFJlY3REaXZDbGllbnRSZWN0
c1Bvc2l0aW9uQW5kTGVuZ3RoKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewot
ICAgIGdfYXNzZXJ0KHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01DbGllbnRSZWN0
IiwgImRpdi1jbGllbnQtcmVjdHMtcG9zaXRpb24tYW5kLWxlbmd0aCIsIHRlc3RIVE1MKSk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RE9NQ2xpZW50
UmVjdCIsICJkaXYtY2xpZW50LXJlY3RzLXBvc2l0aW9uLWFuZC1sZW5ndGgiLCB0ZXN0SFRNTCkp
OwogfQogCiB2b2lkIGJlZm9yZUFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NRE9NV2luZG93LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RET01ET01XaW5kb3cuY3BwCmluZGV4IDk4YzZlMTA2NDFm
NTlkOGYyZmM0YmFhOTU1MWNiOWE2ZTRlNzJiZGEuLjU1MGE1OTc2ZTE0YjFmYWI2YWRkNWQ2YmI0
YmUxODQ0NjM3YTJmODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R3RrL1Rlc3RET01ET01XaW5kb3cuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL1Rlc3RET01ET01XaW5kb3cuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJLaXRET01ET01XaW5kb3dTaWduYWxzKFdlYlZpZXdUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogICAgIGdfdmFyaWFudF9idWlsZGVyX2luaXQoJmJ1aWxkZXIsIEdfVkFS
SUFOVF9UWVBFX1ZBUkRJQ1QpOwogICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmYnVpbGRlciwg
Intzdn0iLCAicGFnZUlEIiwgZ192YXJpYW50X25ld191aW50NjQod2Via2l0X3dlYl92aWV3X2dl
dF9wYWdlX2lkKHN0YXR1cy50ZXN0LT5tX3dlYlZpZXcpKSk7CiAgICAgc3RhdHVzLnRlc3RSdW5u
ZXItPnJ1blRlc3RBbmRXYWl0KCJXZWJLaXRET01ET01XaW5kb3ciLCAic2lnbmFscyIsIGdfdmFy
aWFudF9idWlsZGVyX2VuZCgmYnVpbGRlcikpOwotICAgIGdfYXNzZXJ0KHN0YXR1cy50ZXN0UnVu
bmVyLT5nZXRUZXN0UmVzdWx0KCkpOworICAgIGdfYXNzZXJ0X3RydWUoc3RhdHVzLnRlc3RSdW5u
ZXItPmdldFRlc3RSZXN1bHQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRET01ET01X
aW5kb3dEaXNwYXRjaEV2ZW50KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAt
MTE3LDcgKzExNyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRET01ET01XaW5kb3dEaXNwYXRj
aEV2ZW50KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyCiAgICAgZ192YXJpYW50X2J1
aWxkZXJfaW5pdCgmYnVpbGRlciwgR19WQVJJQU5UX1RZUEVfVkFSRElDVCk7CiAgICAgZ192YXJp
YW50X2J1aWxkZXJfYWRkKCZidWlsZGVyLCAie3N2fSIsICJwYWdlSUQiLCBnX3ZhcmlhbnRfbmV3
X3VpbnQ2NCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3BhZ2VfaWQoc3RhdHVzLnRlc3QtPm1fd2ViVmll
dykpKTsKICAgICBzdGF0dXMudGVzdFJ1bm5lci0+cnVuVGVzdEFuZFdhaXQoIldlYktpdERPTURP
TVdpbmRvdyIsICJkaXNwYXRjaC1ldmVudCIsIGdfdmFyaWFudF9idWlsZGVyX2VuZCgmYnVpbGRl
cikpOwotICAgIGdfYXNzZXJ0KHN0YXR1cy50ZXN0UnVubmVyLT5nZXRUZXN0UmVzdWx0KCkpOwor
ICAgIGdfYXNzZXJ0X3RydWUoc3RhdHVzLnRlc3RSdW5uZXItPmdldFRlc3RSZXN1bHQoKSk7CiB9
CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRET01ET01XaW5kb3dHZXRDb21wdXRlZFN0eWxlKFdl
YlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMTMzLDcgKzEzMyw3IEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJLaXRET01ET01XaW5kb3dHZXRDb21wdXRlZFN0eWxlKFdlYlZpZXdUZXN0
KiB0ZXN0LCBnY29uc3Rwb2luCiAgICAgR1ZhcmlhbnRCdWlsZGVyIGJ1aWxkZXI7CiAgICAgZ192
YXJpYW50X2J1aWxkZXJfaW5pdCgmYnVpbGRlciwgR19WQVJJQU5UX1RZUEVfVkFSRElDVCk7CiAg
ICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZidWlsZGVyLCAie3N2fSIsICJwYWdlSUQiLCBnX3Zh
cmlhbnRfbmV3X3VpbnQ2NCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3BhZ2VfaWQoc3RhdHVzLnRlc3Qt
Pm1fd2ViVmlldykpKTsKLSAgICBnX2Fzc2VydChzdGF0dXMudGVzdFJ1bm5lci0+cnVuVGVzdCgi
V2ViS2l0RE9NRE9NV2luZG93IiwgImdldC1jb21wdXRlZC1zdHlsZSIsIGdfdmFyaWFudF9idWls
ZGVyX2VuZCgmYnVpbGRlcikpKTsKKyAgICBnX2Fzc2VydF90cnVlKHN0YXR1cy50ZXN0UnVubmVy
LT5ydW5UZXN0KCJXZWJLaXRET01ET01XaW5kb3ciLCAiZ2V0LWNvbXB1dGVkLXN0eWxlIiwgZ192
YXJpYW50X2J1aWxkZXJfZW5kKCZidWlsZGVyKSkpOwogfQogCiB2b2lkIGJlZm9yZUFsbCgpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NTm9k
ZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NTm9kZS5j
cHAKaW5kZXggNDZlMGRhYmU1MDYzODExZWU0N2U3MDY1ODE1YjIyNGZmMGJiMmJmNy4uYTY5OGEy
N2UyN2M0YmEzNTc2Njc0MmU0YWI5YmM4ZTJmNmVlYWI1OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdERPTU5vZGUuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RET01Ob2RlLmNwcApAQCAtMjYsMTIgKzI2
LDEyIEBACiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NTm9kZUhpZXJhcmNoeU5hdmlnYXRpb24o
V2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIHRlc3RIVE1MID0gIjxodG1sPjxoZWFkPjx0aXRsZT5UaGlzIGlzIHRoZSB0aXRsZTwvdGl0
bGU+PC9oZWFkPjxib2R5PjxwPjE8L3A+PHA+MjwvcD48cD4zPC9wPjwvYm9keT48L2h0bWw+IjsK
LSAgICBnX2Fzc2VydCh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RE9NTm9kZSIsICJo
aWVyYXJjaHktbmF2aWdhdGlvbiIsIHRlc3RIVE1MKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0
LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RE9NTm9kZSIsICJoaWVyYXJjaHktbmF2aWdhdGlv
biIsIHRlc3RIVE1MKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRET01Ob2RlSW5zZXJ0
aW9uKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIGdfYXNzZXJ0KHRl
c3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01Ob2RlIiwgImluc2VydGlvbiIpKTsKKyAg
ICBnX2Fzc2VydF90cnVlKHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01Ob2RlIiwg
Imluc2VydGlvbiIpKTsKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIqIHRhZ05hbWVzVGVzdEhUTUwg
PSAiPGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PiIKQEAgLTQ3LDE4ICs0NywxOCBAQCBzdGF0aWMg
Y29uc3QgY2hhciogdGFnTmFtZXNUZXN0SFRNTCA9ICI8aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+
IgogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NTm9kZVRhZ05hbWVzTm9kZUxpc3QoV2ViVmll
d1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgZ19hc3NlcnQodGVzdC0+cnVuV2Vi
UHJvY2Vzc1Rlc3QoIldlYktpdERPTU5vZGUiLCAidGFnLW5hbWVzLW5vZGUtbGlzdCIsIHRhZ05h
bWVzVGVzdEhUTUwpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0
KCJXZWJLaXRET01Ob2RlIiwgInRhZy1uYW1lcy1ub2RlLWxpc3QiLCB0YWdOYW1lc1Rlc3RIVE1M
KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRET01Ob2RlVGFnTmFtZXNIVE1MQ29sbGVj
dGlvbihXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBnX2Fzc2VydCh0
ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RE9NTm9kZSIsICJ0YWctbmFtZXMtaHRtbC1j
b2xsZWN0aW9uIiwgdGFnTmFtZXNUZXN0SFRNTCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+
cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdERPTU5vZGUiLCAidGFnLW5hbWVzLWh0bWwtY29sbGVj
dGlvbiIsIHRhZ05hbWVzVGVzdEhUTUwpKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFdlYktpdERP
TU9iamVjdENhY2hlKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiB0ZXN0SFRNTCA9ICI8aHRtbD48Ym9keT48ZGl2IGlkPSdjb250YWlu
ZXInPjxwPkRPTSBDYWNoZSB0ZXN0PC9wPjxhIGlkPSdsaW5rIGhyZWY9JyMnPmxpbms8L2E+PC9k
aXY+PC9ib2R5PjwvaHRtbD4iOwotICAgIGdfYXNzZXJ0KHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0
KCJXZWJLaXRET01Ob2RlIiwgImRvbS1jYWNoZSIsIHRlc3RIVE1MKSk7CisgICAgZ19hc3NlcnRf
dHJ1ZSh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RE9NTm9kZSIsICJkb20tY2FjaGUi
LCB0ZXN0SFRNTCkpOwogfQogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL1Rlc3RET01Ob2RlRmlsdGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL1Rlc3RET01Ob2RlRmlsdGVyLmNwcAppbmRleCBlMGMwYWRkODhlYTI4
YWVjYzZmODM1ZWNhNTIwNTRiYTUzNDdjYzA1Li4wZGFmNDc5ZmI4OTlkMTE3Njc0YmMyZWEzZWIx
OTUxNjcwZjEzOGJlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEd0ay9UZXN0RE9NTm9kZUZpbHRlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvVGVzdERPTU5vZGVGaWx0ZXIuY3BwCkBAIC0yOCwxMiArMjgsMTIgQEAgc3Rh
dGljIGNvbnN0IGNoYXIqIHRlc3RIVE1MID0gIjxodG1sIGlkPSdyb290Jz48aGVhZD48dGl0bGU+
RE9NTm9kZVRyZWVXYWxrZXI8L3QKIAogc3RhdGljIHZvaWQgdGVzdFdlYktpdERPTU5vZGVGaWx0
ZXJUcmVlV2Fsa2VyKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIGdf
YXNzZXJ0KHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01Ob2RlRmlsdGVyIiwgInRy
ZWUtd2Fsa2VyIiwgdGVzdEhUTUwpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPnJ1bldlYlBy
b2Nlc3NUZXN0KCJXZWJLaXRET01Ob2RlRmlsdGVyIiwgInRyZWUtd2Fsa2VyIiwgdGVzdEhUTUwp
KTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFdlYktpdERPTU5vZGVGaWx0ZXJOb2RlSXRlcmF0b3Io
V2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgZ19hc3NlcnQodGVzdC0+
cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdERPTU5vZGVGaWx0ZXIiLCAibm9kZS1pdGVyYXRvciIs
IHRlc3RIVE1MKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgi
V2ViS2l0RE9NTm9kZUZpbHRlciIsICJub2RlLWl0ZXJhdG9yIiwgdGVzdEhUTUwpKTsKIH0KIAog
dm9pZCBiZWZvcmVBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvVGVzdERPTVhQYXRoTlNSZXNvbHZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NWFBhdGhOU1Jlc29sdmVyLmNwcAppbmRleCA2M2VkZjQ2
Y2M0NmEyMzQzZjVlMThhOTA0YjQ3YzllMTEyYmQ2ZTc0Li4yMmQ3OWYxNWVlZjk4MTY2YzRlZWEx
YzBhMzkxNTQyMzQzMjU3OWExIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEd0ay9UZXN0RE9NWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NWFBhdGhOU1Jlc29sdmVyLmNwcApAQCAtMjYs
MTMgKzI2LDEzIEBACiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyTmF0
aXZlKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBuYXRpdmVYTUwgPSAiPHJvb3QgeG1sbnM6Zm9vPSdodHRwOi8vd3d3LmV4YW1wbGUu
b3JnJz48Zm9vOmNoaWxkPlNVQ0NFU1M8L2ZvbzpjaGlsZD48L3Jvb3Q+IjsKLSAgICBnX2Fzc2Vy
dCh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyIiwgIm5h
dGl2ZSIsIG5hdGl2ZVhNTCwgInRleHQveG1sIikpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+
cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdERPTVhQYXRoTlNSZXNvbHZlciIsICJuYXRpdmUiLCBu
YXRpdmVYTUwsICJ0ZXh0L3htbCIpKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFdlYktpdERPTVhQ
YXRoTlNSZXNvbHZlckN1c3RvbShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsK
ICAgICBzdGF0aWMgY29uc3QgY2hhciogY3VzdG9tWE1MID0gIjxyb290IHhtbG5zPSdodHRwOi8v
d3d3LmV4YW1wbGUuY29tJz48Y2hpbGQ+U1VDQ0VTUzwvY2hpbGQ+PC9yb290PiI7Ci0gICAgZ19h
c3NlcnQodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdERPTVhQYXRoTlNSZXNvbHZlciIs
ICJjdXN0b20iLCBjdXN0b21YTUwsICJ0ZXh0L3htbCIpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRl
c3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIiLCAiY3VzdG9t
IiwgY3VzdG9tWE1MLCAidGV4dC94bWwiKSk7CiB9CiAKIHZvaWQgYmVmb3JlQWxsKCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RJbnNwZWN0b3Iu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdEluc3BlY3Rvci5j
cHAKaW5kZXggM2Q5OTNlMjRmMWI0OGU3N2VmNzlmNmY5ZTgwYTIyYmViOTBlMjdhMC4uMTMzYjI0
ZTNjOGIwYzEzOWRkM2YxNDhkMmE0ZWEwODBkMWU0MmJmNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdEluc3BlY3Rvci5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdEluc3BlY3Rvci5jcHAKQEAgLTE0MCw3
ICsxNDAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5l
Y3QobV9pbnNwZWN0b3IsIGhhbmRsZXIpOwogICAgICAgICB9CiAKLSAgICAgICAgZ19hc3NlcnQo
d2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X2Nhbl9hdHRhY2gobV9pbnNwZWN0b3IpKTsKKyAgICAg
ICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfY2FuX2F0dGFjaChtX2lu
c3BlY3RvcikpOwogICAgICAgICB3ZWJraXRfd2ViX2luc3BlY3Rvcl9hdHRhY2gobV9pbnNwZWN0
b3IpOwogICAgIH0KIApAQCAtMTc1LDExICsxNzUsMTEgQEAgc3RhdGljIHZvaWQgdGVzdEluc3Bl
Y3RvckRlZmF1bHQoSW5zcGVjdG9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0
LT5zaG93KCk7CiAgICAgLy8gV2UgZG9uJ3QgYWRkIHRoZSB2aWV3IHRvIGEgY29udGFpbmVyLCBz
byBjb25zdW1lIHRoZSB3ZWFrIHJlZiB3aXRoIEdSZWZQdHIuCiAgICAgR1JlZlB0cjxXZWJLaXRX
ZWJWaWV3QmFzZT4gaW5zcGVjdG9yVmlldyA9IHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF93ZWJf
dmlldyh0ZXN0LT5tX2luc3BlY3Rvcik7Ci0gICAgZ19hc3NlcnQoaW5zcGVjdG9yVmlldy5nZXQo
KSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChpbnNwZWN0b3JWaWV3LmdldCgpKTsKICAgICB0ZXN0
LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGluc3BlY3Rv
clZpZXcuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9pbnNwZWN0b3JfaXNfYXR0
YWNoZWQodGVzdC0+bV9pbnNwZWN0b3IpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2Vi
X2luc3BlY3Rvcl9pc19hdHRhY2hlZCh0ZXN0LT5tX2luc3BlY3RvcikpOwogICAgIGdfYXNzZXJ0
X2NtcHVpbnQod2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X2F0dGFjaGVkX2hlaWdodCh0ZXN0LT5t
X2luc3BlY3RvciksID09LCAwKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9pbnNwZWN0b3Jf
Z2V0X2Nhbl9hdHRhY2godGVzdC0+bV9pbnNwZWN0b3IpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3
ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfY2FuX2F0dGFjaCh0ZXN0LT5tX2luc3BlY3RvcikpOwog
ICAgIFZlY3RvcjxJbnNwZWN0b3JUZXN0OjpJbnNwZWN0b3JFdmVudHM+JiBldmVudHMgPSB0ZXN0
LT5tX2V2ZW50czsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNpemUoKSwgPT0sIDEpOwog
ICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMF0sID09LCBJbnNwZWN0b3JUZXN0OjpPcGVuV2lu
ZG93KTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0SW5zcGVjdG9yRGVmYXVs
dChJbnNwZWN0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPm1fZXZlbnRz
LmNsZWFyKCk7CiAKICAgICB0ZXN0LT5yZXNpemVWaWV3QW5kQXR0YWNoKCk7Ci0gICAgZ19hc3Nl
cnQod2Via2l0X3dlYl9pbnNwZWN0b3JfaXNfYXR0YWNoZWQodGVzdC0+bV9pbnNwZWN0b3IpKTsK
KyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfaW5zcGVjdG9yX2lzX2F0dGFjaGVkKHRlc3Qt
Pm1faW5zcGVjdG9yKSk7CiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2ViX2luc3BlY3Rv
cl9nZXRfYXR0YWNoZWRfaGVpZ2h0KHRlc3QtPm1faW5zcGVjdG9yKSwgPj0sIEluc3BlY3RvclRl
c3Q6OmdNaW5pbXVtQXR0YWNoZWRJbnNwZWN0b3JIZWlnaHQpOwogICAgIGV2ZW50cyA9IHRlc3Qt
Pm1fZXZlbnRzOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgMSk7CkBA
IC0yMDAsNyArMjAwLDcgQEAgc3RhdGljIHZvaWQgdGVzdEluc3BlY3RvckRlZmF1bHQoSW5zcGVj
dG9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5tX2V2ZW50cy5jbGVhcigp
OwogCiAgICAgdGVzdC0+ZGV0YWNoQW5kV2FpdFVudGlsV2luZG93T3BlbmVkKCk7Ci0gICAgZ19h
c3NlcnQoIXdlYmtpdF93ZWJfaW5zcGVjdG9yX2lzX2F0dGFjaGVkKHRlc3QtPm1faW5zcGVjdG9y
KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9pbnNwZWN0b3JfaXNfYXR0YWNoZWQo
dGVzdC0+bV9pbnNwZWN0b3IpKTsKICAgICBldmVudHMgPSB0ZXN0LT5tX2V2ZW50czsKICAgICBn
X2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNpemUoKSwgPT0sIDIpOwogICAgIGdfYXNzZXJ0X2NtcGlu
dChldmVudHNbMF0sID09LCBJbnNwZWN0b3JUZXN0OjpEZXRhY2gpOwpAQCAtMjMyLDEwICsyMzIs
MTAgQEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVuV2luZG93KCkKICAgICB7Ci0gICAgICAgIGdf
YXNzZXJ0KCFtX2luc3BlY3RvcldpbmRvdyk7CisgICAgICAgIGdfYXNzZXJ0X251bGwobV9pbnNw
ZWN0b3JXaW5kb3cpOwogICAgICAgICBtX2luc3BlY3RvcldpbmRvdyA9IGd0a193aW5kb3dfbmV3
KEdUS19XSU5ET1dfVE9QTEVWRUwpOwogICAgICAgICBXZWJLaXRXZWJWaWV3QmFzZSogaW5zcGVj
dG9yVmlldyA9IHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF93ZWJfdmlldyhtX2luc3BlY3Rvcik7
Ci0gICAgICAgIGdfYXNzZXJ0KGluc3BlY3RvclZpZXcpOworICAgICAgICBnX2Fzc2VydF9ub25u
dWxsKGluc3BlY3RvclZpZXcpOwogICAgICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJ
TkVSKG1faW5zcGVjdG9yV2luZG93KSwgR1RLX1dJREdFVChpbnNwZWN0b3JWaWV3KSk7CiAgICAg
ICAgIGd0a193aWRnZXRfc2hvd19hbGwobV9pbnNwZWN0b3JXaW5kb3cpOwogCkBAIC0yODEsMTQg
KzI4MSwxNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXdC
YXNlPiBpbnNwZWN0b3JWaWV3ID0gd2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X3dlYl92aWV3KG1f
aW5zcGVjdG9yKTsKICAgICAgICAgR3RrV2lkZ2V0KiBwYW5lID0gZ3RrX2Jpbl9nZXRfY2hpbGQo
R1RLX0JJTihtX3BhcmVudFdpbmRvdykpOwotICAgICAgICBnX2Fzc2VydChHVEtfSVNfUEFORUQo
cGFuZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKEdUS19JU19QQU5FRChwYW5lKSk7CiAgICAg
ICAgIGd0a19jb250YWluZXJfcmVtb3ZlKEdUS19DT05UQUlORVIocGFuZSksIEdUS19XSURHRVQo
aW5zcGVjdG9yVmlldy5nZXQoKSkpOwogICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdDo6ZGV0
YWNoKCk7CiAgICAgfQogCiAgICAgdm9pZCBkZXN0cm95V2luZG93KCkKICAgICB7Ci0gICAgICAg
IGdfYXNzZXJ0KG1faW5zcGVjdG9yV2luZG93KTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbCht
X2luc3BlY3RvcldpbmRvdyk7CiAgICAgICAgIGd0a193aWRnZXRfZGVzdHJveShtX2luc3BlY3Rv
cldpbmRvdyk7CiAgICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gMDsKICAgICB9CkBAIC0zMDUs
MTQgKzMwNSwxNCBAQCBzdGF0aWMgdm9pZCB0ZXN0SW5zcGVjdG9yTWFudWFsQXR0YWNoRGV0YWNo
KEN1c3RvbUluc3BlY3RvclRlc3QqIHRlc3QsIGdjb25zdHBvaQogCiAgICAgdGVzdC0+c2hvdygp
OwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpF
Q1Qod2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X3dlYl92aWV3KHRlc3QtPm1faW5zcGVjdG9yKSkp
OwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX2luc3BlY3Rvcl9pc19hdHRhY2hlZCh0ZXN0LT5t
X2luc3BlY3RvcikpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfaW5zcGVjdG9yX2lz
X2F0dGFjaGVkKHRlc3QtPm1faW5zcGVjdG9yKSk7CiAgICAgVmVjdG9yPEluc3BlY3RvclRlc3Q6
Okluc3BlY3RvckV2ZW50cz4mIGV2ZW50cyA9IHRlc3QtPm1fZXZlbnRzOwogICAgIGdfYXNzZXJ0
X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgMSk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50
c1swXSwgPT0sIEluc3BlY3RvclRlc3Q6Ok9wZW5XaW5kb3cpOwogICAgIHRlc3QtPm1fZXZlbnRz
LmNsZWFyKCk7CiAKICAgICB0ZXN0LT5yZXNpemVWaWV3QW5kQXR0YWNoKCk7Ci0gICAgZ19hc3Nl
cnQod2Via2l0X3dlYl9pbnNwZWN0b3JfaXNfYXR0YWNoZWQodGVzdC0+bV9pbnNwZWN0b3IpKTsK
KyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfaW5zcGVjdG9yX2lzX2F0dGFjaGVkKHRlc3Qt
Pm1faW5zcGVjdG9yKSk7CiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfd2ViX2luc3BlY3Rv
cl9nZXRfYXR0YWNoZWRfaGVpZ2h0KHRlc3QtPm1faW5zcGVjdG9yKSwgPj0sIEluc3BlY3RvclRl
c3Q6OmdNaW5pbXVtQXR0YWNoZWRJbnNwZWN0b3JIZWlnaHQpOwogICAgIGV2ZW50cyA9IHRlc3Qt
Pm1fZXZlbnRzOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgMSk7CkBA
IC0zMjAsNyArMzIwLDcgQEAgc3RhdGljIHZvaWQgdGVzdEluc3BlY3Rvck1hbnVhbEF0dGFjaERl
dGFjaChDdXN0b21JbnNwZWN0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2kKICAgICB0ZXN0LT5tX2V2
ZW50cy5jbGVhcigpOwogCiAgICAgdGVzdC0+ZGV0YWNoQW5kV2FpdFVudGlsV2luZG93T3BlbmVk
KCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfaW5zcGVjdG9yX2lzX2F0dGFjaGVkKHRlc3Qt
Pm1faW5zcGVjdG9yKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9pbnNwZWN0b3Jf
aXNfYXR0YWNoZWQodGVzdC0+bV9pbnNwZWN0b3IpKTsKICAgICBldmVudHMgPSB0ZXN0LT5tX2V2
ZW50czsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNpemUoKSwgPT0sIDIpOwogICAgIGdf
YXNzZXJ0X2NtcGludChldmVudHNbMF0sID09LCBJbnNwZWN0b3JUZXN0OjpEZXRhY2gpOwpAQCAt
MzI4LDcgKzMyOCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RJbnNwZWN0b3JNYW51YWxBdHRhY2hEZXRh
Y2goQ3VzdG9tSW5zcGVjdG9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAgICAgdGVzdC0+bV9ldmVu
dHMuY2xlYXIoKTsKIAogICAgIHRlc3QtPnJlc2l6ZVZpZXdBbmRBdHRhY2goKTsKLSAgICBnX2Fz
c2VydCh3ZWJraXRfd2ViX2luc3BlY3Rvcl9pc19hdHRhY2hlZCh0ZXN0LT5tX2luc3BlY3Rvcikp
OworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9pbnNwZWN0b3JfaXNfYXR0YWNoZWQodGVz
dC0+bV9pbnNwZWN0b3IpKTsKICAgICB0ZXN0LT5tX2V2ZW50cy5jbGVhcigpOwogICAgIHRlc3Qt
PmNsb3NlKCk7CiAgICAgZXZlbnRzID0gdGVzdC0+bV9ldmVudHM7CkBAIC0zNDcsNyArMzQ3LDcg
QEAgc3RhdGljIHZvaWQgdGVzdEluc3BlY3RvckN1c3RvbUNvbnRhaW5lckRlc3Ryb3llZChDdXN0
b21JbnNwZWN0b3JUZXN0KiB0ZXN0LCBnY28KIAogICAgIHRlc3QtPnNob3coKTsKICAgICB0ZXN0
LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF93
ZWJfaW5zcGVjdG9yX2dldF93ZWJfdmlldyh0ZXN0LT5tX2luc3BlY3RvcikpKTsKLSAgICBnX2Fz
c2VydCghd2Via2l0X3dlYl9pbnNwZWN0b3JfaXNfYXR0YWNoZWQodGVzdC0+bV9pbnNwZWN0b3Ip
KTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX2luc3BlY3Rvcl9pc19hdHRhY2hlZCh0
ZXN0LT5tX2luc3BlY3RvcikpOwogCiAgICAgdGVzdC0+bV9ldmVudHMuY2xlYXIoKTsKICAgICB0
ZXN0LT5kZXN0cm95V2luZG93KCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9UZXN0SW5zcGVjdG9yU2VydmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIuY3BwCmluZGV4IDkzYTkxZDgx
ZDI2ODBkNDdmM2RiMmJjYjQyNzE1MzM5ZTQxOGI3YjQuLmJjMjYxNDNlMTU3NDg0YWNiMWRlNjQw
NTQ1YzM1MjE0MWY0MTg5ODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIuY3BwCkBAIC05OSw3ICs5OSw3
IEBAIHN0YXRpYyB2b2lkIHN0YXJ0VGVzdFNlcnZlcigpCiAgICAgdGVzdFNlcnZlckFyZ3ZbMF0g
PSB0ZXN0U2VydmVyUGF0aC5nZXQoKTsKICAgICB0ZXN0U2VydmVyQXJndlsxXSA9IG51bGxwdHI7
CiAKLSAgICBnX2Fzc2VydChnX3NwYXduX2FzeW5jKG51bGxwdHIsIHRlc3RTZXJ2ZXJBcmd2LCBu
dWxscHRyLCBHX1NQQVdOX0RFRkFVTFQsIG51bGxwdHIsIG51bGxwdHIsICZnQ2hpbGRQcm9jZXNz
UGlkLCBudWxscHRyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShnX3NwYXduX2FzeW5jKG51bGxwdHIs
IHRlc3RTZXJ2ZXJBcmd2LCBudWxscHRyLCBHX1NQQVdOX0RFRkFVTFQsIG51bGxwdHIsIG51bGxw
dHIsICZnQ2hpbGRQcm9jZXNzUGlkLCBudWxscHRyKSk7CiAKICAgICB3YWl0VW50aWxJbnNwZWN0
b3JTZXJ2ZXJJc1JlYWR5KCk7CiAgICAgaWYgKCFnU2VydmVySXNSZWFkeSkKQEAgLTExNyw3ICsx
MTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA1OyArK2kp
IHsKICAgICAgICAgICAgIHNpemVfdCBtYWluUmVzb3VyY2VEYXRhU2l6ZSA9IDA7CiAgICAgICAg
ICAgICBjb25zdCBjaGFyKiBtYWluUmVzb3VyY2VEYXRhID0gdGhpcy0+bWFpblJlc291cmNlRGF0
YShtYWluUmVzb3VyY2VEYXRhU2l6ZSk7Ci0gICAgICAgICAgICBnX2Fzc2VydChtYWluUmVzb3Vy
Y2VEYXRhKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobWFpblJlc291cmNlRGF0YSk7
CiAgICAgICAgICAgICBpZiAoZ19zdHJyc3RyX2xlbihtYWluUmVzb3VyY2VEYXRhLCBtYWluUmVz
b3VyY2VEYXRhU2l6ZSwgIk5vIHRhcmdldHMgZm91bmQiKSkKICAgICAgICAgICAgICAgICB3YWl0
KDAuMSk7CiAgICAgICAgICAgICBlbHNlIGlmIChnX3N0cnJzdHJfbGVuKG1haW5SZXNvdXJjZURh
dGEsIG1haW5SZXNvdXJjZURhdGFTaXplLCAiSW5zcGVjdGFibGUgdGFyZ2V0cyIpKQpAQCAtMTM1
LDE3ICsxMzUsMTcgQEAgc3RhdGljIHZvaWQgdGVzdEluc3BlY3RvclNlcnZlclBhZ2VMaXN0KElu
c3BlY3RvclNlcnZlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIKICAgICBHVW5pcXVlT3V0UHRy
PEdFcnJvcj4gZXJyb3I7CiAKICAgICB0ZXN0LT5zaG93SW5XaW5kb3dBbmRXYWl0VW50aWxNYXBw
ZWQoR1RLX1dJTkRPV19UT1BMRVZFTCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+Z2V0UGFnZUxpc3Qo
KSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5nZXRQYWdlTGlzdCgpKTsKIAogICAgIFdlYktp
dEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0
QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3Rh
cmdldG5hbWUnKS5sZW5ndGg7IiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZh
c2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0
X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3Iu
Z2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcGludChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3Vs
dFRvTnVtYmVyKGphdmFzY3JpcHRSZXN1bHQpLCA9PSwgMSk7CiAKICAgICBHVW5pcXVlUHRyPGNo
YXI+IHZhbHVlU3RyaW5nOwogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2Ny
aXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
J3RhcmdldHVybCcpWzBdLmlubmVyVGV4dDsiLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNz
ZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CisgICAg
Z19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJv
cihlcnJvci5nZXQoKSk7CiAgICAgdmFsdWVTdHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFz
Y3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2Nt
cHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJodHRwOi8vMTI3LjAuMC4xOjI5OTkvIik7CiB9
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0T3B0
aW9uTWVudS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0T3B0
aW9uTWVudS5jcHAKaW5kZXggZWE2MWJjNGQyYTRiOGI4NmZiY2M5YjMwNTFhM2U5ZGNmYWUyZmVh
NS4uYzUwZGQwNTAxYmY3MjQwNGMzNTBkODc3NjFmMjE2ZWM4MTlkNTFmMyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdE9wdGlvbk1lbnUuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RPcHRpb25NZW51LmNw
cApAQCAtNDksOSArNDksOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4gc2hvd09w
dGlvbk1lbnVDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRPcHRpb25NZW51
KiBtZW51LCBHZGtFdmVudCogZXZlbnQsIEdka1JlY3RhbmdsZSogcmVjdCwgT3B0aW9uTWVudVRl
c3QqIHRlc3QpCiAgICAgewotICAgICAgICBnX2Fzc2VydCh0ZXN0LT5tX3dlYlZpZXcgPT0gd2Vi
Vmlldyk7Ci0gICAgICAgIGdfYXNzZXJ0KHJlY3QpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRf
SVNfT1BUSU9OX01FTlUobWVudSkpOworICAgICAgICBnX2Fzc2VydF9jbXBoZXgodGVzdC0+bV93
ZWJWaWV3LCA9PSwgd2ViVmlldyk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwocmVjdCk7Cisg
ICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX09QVElPTl9NRU5VKG1lbnUpKTsKICAgICAg
ICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCht
ZW51KSk7CiAgICAgICAgIHRlc3QtPnNob3dPcHRpb25NZW51KG1lbnUsIHJlY3QpOwogICAgICAg
ICByZXR1cm4gVFJVRTsKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZv
aWQgbWVudUNsb3NlQ2FsbGJhY2soV2ViS2l0T3B0aW9uTWVudSogbWVudSwgT3B0aW9uTWVudVRl
c3QqIHRlc3QpCiAgICAgewotICAgICAgICBnX2Fzc2VydCh0ZXN0LT5tX21lbnUuZ2V0KCkgPT0g
bWVudSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGhleCh0ZXN0LT5tX21lbnUuZ2V0KCksID09LCBt
ZW51KTsKICAgICAgICAgdGVzdC0+ZGVzdHJveU1lbnUoKTsKICAgICB9CiAKQEAgLTgwLDIzICs4
MCwyMyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsb3NlKCkKICAgICB7Ci0gICAgICAgIGdfYXNz
ZXJ0KG1fbWVudS5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobV9tZW51LmdldCgp
KTsKICAgICAgICAgd2Via2l0X29wdGlvbl9tZW51X2Nsb3NlKG1fbWVudS5nZXQoKSk7Ci0gICAg
ICAgIGdfYXNzZXJ0KCFtX21lbnUuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF9udWxsKG1fbWVu
dS5nZXQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBhY3RpdmF0ZUl0ZW0odW5zaWduZWQgaXRlbSkK
ICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KG1fbWVudS5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0
X25vbm51bGwobV9tZW51LmdldCgpKTsKICAgICAgICAgd2Via2l0X29wdGlvbl9tZW51X2FjdGl2
YXRlX2l0ZW0obV9tZW51LmdldCgpLCBpdGVtKTsKLSAgICAgICAgZ19hc3NlcnQobV9tZW51Lmdl
dCgpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChtX21lbnUuZ2V0KCkpOwogICAgIH0KIAog
ICAgIHZvaWQgc2VsZWN0SXRlbSh1bnNpZ25lZCBpdGVtKQogICAgIHsKLSAgICAgICAgZ19hc3Nl
cnQobV9tZW51LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChtX21lbnUuZ2V0KCkp
OwogICAgICAgICB3ZWJraXRfb3B0aW9uX21lbnVfc2VsZWN0X2l0ZW0obV9tZW51LmdldCgpLCBp
dGVtKTsKLSAgICAgICAgZ19hc3NlcnQobV9tZW51LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRf
bm9ubnVsbChtX21lbnUuZ2V0KCkpOwogICAgIH0KIAogICAgIEdSZWZQdHI8V2ViS2l0T3B0aW9u
TWVudT4gbV9tZW51OwpAQCAtMTE3LDMyICsxMTcsMzIgQEAgc3RhdGljIHZvaWQgdGVzdE9wdGlv
bk1lbnVTaW1wbGUoT3B0aW9uTWVudVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVz
dC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKICAgICB0ZXN0LT5jbGlja0F0UG9zaXRpb25B
bmRXYWl0VW50aWxPcHRpb25NZW51U2hvd24oNSwgMTUpOwotICAgIGdfYXNzZXJ0KFdFQktJVF9J
U19PUFRJT05fTUVOVSh0ZXN0LT5tX21lbnUuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKFdF
QktJVF9JU19PUFRJT05fTUVOVSh0ZXN0LT5tX21lbnUuZ2V0KCkpKTsKICAgICBnX2Fzc2VydF9j
bXBpbnQod2Via2l0X29wdGlvbl9tZW51X2dldF9uX2l0ZW1zKHRlc3QtPm1fbWVudS5nZXQoKSks
ID09LCAzKTsKICAgICBhdXRvKiBpdGVtID0gd2Via2l0X29wdGlvbl9tZW51X2dldF9pdGVtKHRl
c3QtPm1fbWVudS5nZXQoKSwgMCk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9vcHRpb25f
bWVudV9pdGVtX2dldF9sYWJlbChpdGVtKSwgPT0sICJGb28iKTsKICAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X3Rvb2x0aXAoaXRlbSksID09LCAiVGhlIEZv
byBPcHRpb24iKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3Jv
dXBfbGFiZWwoaXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9p
c19ncm91cF9jaGlsZChpdGVtKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X29wdGlvbl9tZW51X2l0
ZW1faXNfZW5hYmxlZChpdGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9p
dGVtX2lzX3NlbGVjdGVkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfb3B0aW9u
X21lbnVfaXRlbV9pc19ncm91cF9sYWJlbChpdGVtKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfY2hpbGQoaXRlbSkpOworICAgIGdfYXNzZXJ0
X3RydWUod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZW5hYmxlZChpdGVtKSk7CisgICAgZ19h
c3NlcnRfZmFsc2Uod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfc2VsZWN0ZWQoaXRlbSkpOwog
ICAgIGl0ZW0gPSB3ZWJraXRfb3B0aW9uX21lbnVfZ2V0X2l0ZW0odGVzdC0+bV9tZW51LmdldCgp
LCAxKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X2xh
YmVsKGl0ZW0pLCA9PSwgIkJhciIpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVf
aXRlbV9nZXRfdG9vbHRpcChpdGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVu
dV9pdGVtX2lzX2dyb3VwX2xhYmVsKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlv
bl9tZW51X2l0ZW1faXNfZ3JvdXBfY2hpbGQoaXRlbSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9v
cHRpb25fbWVudV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9v
cHRpb25fbWVudV9pdGVtX2lzX3NlbGVjdGVkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9udWxsKHdl
YmtpdF9vcHRpb25fbWVudV9pdGVtX2dldF90b29sdGlwKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9m
YWxzZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9sYWJlbChpdGVtKSk7CisgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfY2hpbGQoaXRl
bSkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZW5hYmxl
ZChpdGVtKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19z
ZWxlY3RlZChpdGVtKSk7CiAgICAgaXRlbSA9IHdlYmtpdF9vcHRpb25fbWVudV9nZXRfaXRlbSh0
ZXN0LT5tX21lbnUuZ2V0KCksIDIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfb3B0aW9u
X21lbnVfaXRlbV9nZXRfbGFiZWwoaXRlbSksID09LCAiQmF6Iik7Ci0gICAgZ19hc3NlcnQoIXdl
YmtpdF9vcHRpb25fbWVudV9pdGVtX2dldF90b29sdGlwKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCgh
d2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfbGFiZWwoaXRlbSkpOwotICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9jaGlsZChpdGVtKSk7Ci0gICAg
Z19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkpOwotICAg
IGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19zZWxlY3RlZChpdGVtKSk7Cisg
ICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfdG9vbHRpcChpdGVt
KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBf
bGFiZWwoaXRlbSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVt
X2lzX2dyb3VwX2NoaWxkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfb3B0aW9u
X21lbnVfaXRlbV9pc19lbmFibGVkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRf
b3B0aW9uX21lbnVfaXRlbV9pc19zZWxlY3RlZChpdGVtKSk7CiAKICAgICB0ZXN0LT5jbG9zZSgp
OwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX21lbnUuZ2V0KCkpOworICAgIGdfYXNzZXJ0X251bGwo
dGVzdC0+bV9tZW51LmdldCgpKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdE9wdGlvbk1lbnVHcm91
cHMoT3B0aW9uTWVudVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC0xNjYsNjQgKzE2Niw2
NCBAQCBzdGF0aWMgdm9pZCB0ZXN0T3B0aW9uTWVudUdyb3VwcyhPcHRpb25NZW51VGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAog
ICAgIHRlc3QtPmNsaWNrQXRQb3NpdGlvbkFuZFdhaXRVbnRpbE9wdGlvbk1lbnVTaG93big1LCAx
NSk7Ci0gICAgZ19hc3NlcnQoV0VCS0lUX0lTX09QVElPTl9NRU5VKHRlc3QtPm1fbWVudS5nZXQo
KSkpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX09QVElPTl9NRU5VKHRlc3QtPm1fbWVu
dS5nZXQoKSkpOwogICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfb3B0aW9uX21lbnVfZ2V0X25f
aXRlbXModGVzdC0+bV9tZW51LmdldCgpKSwgPT0sIDgpOwogICAgIGF1dG8qIGl0ZW0gPSB3ZWJr
aXRfb3B0aW9uX21lbnVfZ2V0X2l0ZW0odGVzdC0+bV9tZW51LmdldCgpLCAwKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIod2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X2xhYmVsKGl0ZW0pLCA9PSwg
IlJvb3QiKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X3Rvb2x0
aXAoaXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91
cF9sYWJlbChpdGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lz
X2dyb3VwX2NoaWxkKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfb3B0aW9uX21lbnVfaXRl
bV9pc19lbmFibGVkKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0
ZW1faXNfc2VsZWN0ZWQoaXRlbSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X29wdGlvbl9t
ZW51X2l0ZW1fZ2V0X3Rvb2x0aXAoaXRlbSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9v
cHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2xhYmVsKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxz
ZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9jaGlsZChpdGVtKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19lbmFibGVkKGl0ZW0pKTsKKyAg
ICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19zZWxlY3RlZChpdGVt
KSk7CiAgICAgaXRlbSA9IHdlYmtpdF9vcHRpb25fbWVudV9nZXRfaXRlbSh0ZXN0LT5tX21lbnUu
Z2V0KCksIDEpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9n
ZXRfbGFiZWwoaXRlbSksID09LCAiR3JvdXAgMSIpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0
aW9uX21lbnVfaXRlbV9nZXRfdG9vbHRpcChpdGVtKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X29w
dGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfbGFiZWwoaXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJr
aXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9jaGlsZChpdGVtKSk7Ci0gICAgZ19hc3NlcnQo
IXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkpOwotICAgIGdfYXNzZXJ0
KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19zZWxlY3RlZChpdGVtKSk7CisgICAgZ19hc3Nl
cnRfbnVsbCh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfdG9vbHRpcChpdGVtKSk7CisgICAg
Z19hc3NlcnRfdHJ1ZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9sYWJlbChpdGVt
KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBf
Y2hpbGQoaXRlbSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVt
X2lzX2VuYWJsZWQoaXRlbSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVu
dV9pdGVtX2lzX3NlbGVjdGVkKGl0ZW0pKTsKICAgICBpdGVtID0gd2Via2l0X29wdGlvbl9tZW51
X2dldF9pdGVtKHRlc3QtPm1fbWVudS5nZXQoKSwgMik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdl
YmtpdF9vcHRpb25fbWVudV9pdGVtX2dldF9sYWJlbChpdGVtKSwgPT0sICJDaGlsZCAxLTEiKTsK
LSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X3Rvb2x0aXAoaXRlbSkp
OwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9sYWJlbChp
dGVtKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfY2hp
bGQoaXRlbSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2VuYWJs
ZWQoaXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19zZWxl
Y3RlZChpdGVtKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9n
ZXRfdG9vbHRpcChpdGVtKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X29wdGlvbl9tZW51
X2l0ZW1faXNfZ3JvdXBfbGFiZWwoaXRlbSkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X29w
dGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfY2hpbGQoaXRlbSkpOworICAgIGdfYXNzZXJ0X3RydWUo
d2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZW5hYmxlZChpdGVtKSk7CisgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfc2VsZWN0ZWQoaXRlbSkpOwogICAgIGl0
ZW0gPSB3ZWJraXRfb3B0aW9uX21lbnVfZ2V0X2l0ZW0odGVzdC0+bV9tZW51LmdldCgpLCAzKTsK
ICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X2xhYmVsKGl0
ZW0pLCA9PSwgIkNoaWxkIDEtMiIpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVf
aXRlbV9nZXRfdG9vbHRpcChpdGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVu
dV9pdGVtX2lzX2dyb3VwX2xhYmVsKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfb3B0aW9u
X21lbnVfaXRlbV9pc19ncm91cF9jaGlsZChpdGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9v
cHRpb25fbWVudV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRf
b3B0aW9uX21lbnVfaXRlbV9pc19zZWxlY3RlZChpdGVtKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3
ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfdG9vbHRpcChpdGVtKSk7CisgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfbGFiZWwoaXRlbSkpOworICAg
IGdfYXNzZXJ0X3RydWUod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfY2hpbGQoaXRl
bSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2VuYWJs
ZWQoaXRlbSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lz
X3NlbGVjdGVkKGl0ZW0pKTsKICAgICBpdGVtID0gd2Via2l0X29wdGlvbl9tZW51X2dldF9pdGVt
KHRlc3QtPm1fbWVudS5nZXQoKSwgNCk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9vcHRp
b25fbWVudV9pdGVtX2dldF9sYWJlbChpdGVtKSwgPT0sICJHcm91cCAyIik7Ci0gICAgZ19hc3Nl
cnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2dldF90b29sdGlwKGl0ZW0pKTsKLSAgICBnX2Fz
c2VydCh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9sYWJlbChpdGVtKSk7Ci0gICAg
Z19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2NoaWxkKGl0ZW0pKTsK
LSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZW5hYmxlZChpdGVtKSk7
Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX3NlbGVjdGVkKGl0ZW0p
KTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2dldF90b29sdGlw
KGl0ZW0pKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dy
b3VwX2xhYmVsKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfb3B0aW9uX21lbnVf
aXRlbV9pc19ncm91cF9jaGlsZChpdGVtKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X29w
dGlvbl9tZW51X2l0ZW1faXNfZW5hYmxlZChpdGVtKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X29wdGlvbl9tZW51X2l0ZW1faXNfc2VsZWN0ZWQoaXRlbSkpOwogICAgIGl0ZW0gPSB3ZWJr
aXRfb3B0aW9uX21lbnVfZ2V0X2l0ZW0odGVzdC0+bV9tZW51LmdldCgpLCA1KTsKICAgICBnX2Fz
c2VydF9jbXBzdHIod2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X2xhYmVsKGl0ZW0pLCA9PSwg
IkNoaWxkIDItMSIpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRf
dG9vbHRpcChpdGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lz
X2dyb3VwX2xhYmVsKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfb3B0aW9uX21lbnVfaXRl
bV9pc19ncm91cF9jaGlsZChpdGVtKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X29wdGlvbl9tZW51
X2l0ZW1faXNfZW5hYmxlZChpdGVtKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X29wdGlvbl9tZW51
X2l0ZW1faXNfc2VsZWN0ZWQoaXRlbSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X29wdGlv
bl9tZW51X2l0ZW1fZ2V0X3Rvb2x0aXAoaXRlbSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtp
dF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2xhYmVsKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF90
cnVlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2NoaWxkKGl0ZW0pKTsKKyAgICBn
X2Fzc2VydF90cnVlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkpOwor
ICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfc2VsZWN0ZWQoaXRl
bSkpOwogICAgIGl0ZW0gPSB3ZWJraXRfb3B0aW9uX21lbnVfZ2V0X2l0ZW0odGVzdC0+bV9tZW51
LmdldCgpLCA2KTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X29wdGlvbl9tZW51X2l0ZW1f
Z2V0X2xhYmVsKGl0ZW0pLCA9PSwgIkNoaWxkIDItMiIpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRf
b3B0aW9uX21lbnVfaXRlbV9nZXRfdG9vbHRpcChpdGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtp
dF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2xhYmVsKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCh3
ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9jaGlsZChpdGVtKSk7Ci0gICAgZ19hc3Nl
cnQod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZW5hYmxlZChpdGVtKSk7Ci0gICAgZ19hc3Nl
cnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX3NlbGVjdGVkKGl0ZW0pKTsKKyAgICBnX2Fz
c2VydF9udWxsKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2dldF90b29sdGlwKGl0ZW0pKTsKKyAg
ICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9sYWJlbChp
dGVtKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91
cF9jaGlsZChpdGVtKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRl
bV9pc19lbmFibGVkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfb3B0aW9uX21l
bnVfaXRlbV9pc19zZWxlY3RlZChpdGVtKSk7CiAgICAgaXRlbSA9IHdlYmtpdF9vcHRpb25fbWVu
dV9nZXRfaXRlbSh0ZXN0LT5tX21lbnUuZ2V0KCksIDcpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3
ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfbGFiZWwoaXRlbSksID09LCAiVGFpbCIpOwotICAg
IGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfdG9vbHRpcChpdGVtKSk7Ci0g
ICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2xhYmVsKGl0ZW0p
KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfY2hpbGQo
aXRlbSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2VuYWJsZWQo
aXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19zZWxlY3Rl
ZChpdGVtKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRf
dG9vbHRpcChpdGVtKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X29wdGlvbl9tZW51X2l0
ZW1faXNfZ3JvdXBfbGFiZWwoaXRlbSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRp
b25fbWVudV9pdGVtX2lzX2dyb3VwX2NoaWxkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF90cnVlKHdl
YmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkpOworICAgIGdfYXNzZXJ0X2Zh
bHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX3NlbGVjdGVkKGl0ZW0pKTsKIH0KIAogc3Rh
dGljIHZvaWQgdGVzdE9wdGlvbk1lbnVBY3RpdmF0ZShPcHRpb25NZW51VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKQEAgLTI0MCwxNyArMjQwLDE3IEBAIHN0YXRpYyB2b2lkIHRlc3RPcHRpb25N
ZW51QWN0aXZhdGUoT3B0aW9uTWVudVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVz
dC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKICAgICB0ZXN0LT5jbGlja0F0UG9zaXRpb25B
bmRXYWl0VW50aWxPcHRpb25NZW51U2hvd24oNSwgMTUpOwotICAgIGdfYXNzZXJ0KFdFQktJVF9J
U19PUFRJT05fTUVOVSh0ZXN0LT5tX21lbnUuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKFdF
QktJVF9JU19PUFRJT05fTUVOVSh0ZXN0LT5tX21lbnUuZ2V0KCkpKTsKICAgICBnX2Fzc2VydF9j
bXBpbnQod2Via2l0X29wdGlvbl9tZW51X2dldF9uX2l0ZW1zKHRlc3QtPm1fbWVudS5nZXQoKSks
ID09LCAzKTsKICAgICB0ZXN0LT5hY3RpdmF0ZUl0ZW0oMSk7CiAgICAgYXV0byogcmVzdWx0ID0g
dGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29tYm8nKS5zZWxlY3RlZEluZGV4IiwgbnVsbHB0cik7Ci0gICAgZ19hc3NlcnQo
cmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHJlc3VsdCk7CiAgICAgZ19hc3NlcnRfY21w
ZmxvYXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihyZXN1bHQpLCA9PSwg
MSk7CiAKICAgICAvLyBXZSBzaG91bGQgY2xvc2UgdGhlIG1lbnUgYWZ0ZXIgYWN0aXZhdGUsIGZ1
cnRoZXIgYWN0aXZhdGVzIHdpbGwgYmUgaWdub3JlZC4KICAgICB0ZXN0LT5hY3RpdmF0ZUl0ZW0o
Mik7CiAgICAgcmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVk
KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29tYm8nKS5zZWxlY3RlZEluZGV4IiwgbnVsbHB0
cik7Ci0gICAgZ19hc3NlcnQocmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHJlc3VsdCk7
CiAgICAgZ19hc3NlcnRfY21wZmxvYXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051
bWJlcihyZXN1bHQpLCA9PSwgMSk7CiAKICAgICB0ZXN0LT5jbG9zZSgpOwpAQCAtMjcwLDI1ICsy
NzAsMjUgQEAgc3RhdGljIHZvaWQgdGVzdE9wdGlvbk1lbnVTZWxlY3QoT3B0aW9uTWVudVRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7
CiAKICAgICB0ZXN0LT5jbGlja0F0UG9zaXRpb25BbmRXYWl0VW50aWxPcHRpb25NZW51U2hvd24o
NSwgMTUpOwotICAgIGdfYXNzZXJ0KFdFQktJVF9JU19PUFRJT05fTUVOVSh0ZXN0LT5tX21lbnUu
Z2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19PUFRJT05fTUVOVSh0ZXN0LT5t
X21lbnUuZ2V0KCkpKTsKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X29wdGlvbl9tZW51X2dl
dF9uX2l0ZW1zKHRlc3QtPm1fbWVudS5nZXQoKSksID09LCAzKTsKIAogICAgIC8vIFNlbGVjdCBp
dGVtIGNoYW5nZXMgdGhlIGNvbWJvIHRleHQsIGJ1dCBub3QgdGhlIGN1cnJlbnRseSBzZWxlY3Rl
ZCBpdGVtLgogICAgIHRlc3QtPnNlbGVjdEl0ZW0oMik7CiAgICAgYXV0byogcmVzdWx0ID0gdGVz
dC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY29tYm8nKS5zZWxlY3RlZEluZGV4IiwgbnVsbHB0cik7Ci0gICAgZ19hc3NlcnQocmVz
dWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHJlc3VsdCk7CiAgICAgZ19hc3NlcnRfY21wZmxv
YXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihyZXN1bHQpLCA9PSwgMCk7
CiAKICAgICAvLyBJdCBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLgogICAgIHRlc3QtPnNl
bGVjdEl0ZW0oMSk7CiAgICAgcmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRp
bEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29tYm8nKS5zZWxlY3RlZEluZGV4
IiwgbnVsbHB0cik7Ci0gICAgZ19hc3NlcnQocmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxs
KHJlc3VsdCk7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRS
ZXN1bHRUb051bWJlcihyZXN1bHQpLCA9PSwgMCk7CiAKICAgICAvLyBBbmQgY2xvc2luZyB0aGUg
bWVudSBhY3RpdmF0ZXMgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtLgogICAgIHRlc3QtPmNs
b3NlKCk7CiAgICAgcmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlz
aGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29tYm8nKS5zZWxlY3RlZEluZGV4IiwgbnVs
bHB0cik7Ci0gICAgZ19hc3NlcnQocmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHJlc3Vs
dCk7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRU
b051bWJlcihyZXN1bHQpLCA9PSwgMSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RQcmludGluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0UHJpbnRpbmcuY3BwCmluZGV4IDcxMGFlOWM2YmNiZWIz
NjdhYmE1NjA1ODg2NTc1OTI1ZTllMmRlZjEuLjJjOGViOTJhNzRiZDIwYmUzNDlmMzM0OGNhYWQz
Y2JiNWNiYzM3OTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R3RrL1Rlc3RQcmludGluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHdGsvVGVzdFByaW50aW5nLmNwcApAQCAtMzEsOCArMzEsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0
UHJpbnRPcGVyYXRpb25QcmludFNldHRpbmdzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQogICAgIEdSZWZQdHI8V2ViS2l0UHJpbnRPcGVyYXRpb24+IHByaW50T3BlcmF0aW9uID0g
YWRvcHRHUmVmKHdlYmtpdF9wcmludF9vcGVyYXRpb25fbmV3KHRlc3QtPm1fd2ViVmlldykpOwog
ICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qo
cHJpbnRPcGVyYXRpb24uZ2V0KCkpKTsKIAotICAgIGdfYXNzZXJ0KCF3ZWJraXRfcHJpbnRfb3Bl
cmF0aW9uX2dldF9wcmludF9zZXR0aW5ncyhwcmludE9wZXJhdGlvbi5nZXQoKSkpOwotICAgIGdf
YXNzZXJ0KCF3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX2dldF9wYWdlX3NldHVwKHByaW50T3BlcmF0
aW9uLmdldCgpKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX2dl
dF9wcmludF9zZXR0aW5ncyhwcmludE9wZXJhdGlvbi5nZXQoKSkpOworICAgIGdfYXNzZXJ0X251
bGwod2Via2l0X3ByaW50X29wZXJhdGlvbl9nZXRfcGFnZV9zZXR1cChwcmludE9wZXJhdGlvbi5n
ZXQoKSkpOwogCiAgICAgR1JlZlB0cjxHdGtQcmludFNldHRpbmdzPiBwcmludFNldHRpbmdzID0g
YWRvcHRHUmVmKGd0a19wcmludF9zZXR0aW5nc19uZXcoKSk7CiAgICAgdGVzdC0+YXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChwcmludFNldHRpbmdzLmdldCgp
KSk7CkBAIC00MywxOSArNDMsMTkgQEAgc3RhdGljIHZvaWQgdGVzdFByaW50T3BlcmF0aW9uUHJp
bnRTZXR0aW5ncyhXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB3ZWJraXRf
cHJpbnRfb3BlcmF0aW9uX3NldF9wcmludF9zZXR0aW5ncyhwcmludE9wZXJhdGlvbi5nZXQoKSwg
cHJpbnRTZXR0aW5ncy5nZXQoKSk7CiAgICAgd2Via2l0X3ByaW50X29wZXJhdGlvbl9zZXRfcGFn
ZV9zZXR1cChwcmludE9wZXJhdGlvbi5nZXQoKSwgcGFnZVNldHVwLmdldCgpKTsKIAotICAgIGdf
YXNzZXJ0KHdlYmtpdF9wcmludF9vcGVyYXRpb25fZ2V0X3ByaW50X3NldHRpbmdzKHByaW50T3Bl
cmF0aW9uLmdldCgpKSA9PSBwcmludFNldHRpbmdzLmdldCgpKTsKLSAgICBnX2Fzc2VydCh3ZWJr
aXRfcHJpbnRfb3BlcmF0aW9uX2dldF9wYWdlX3NldHVwKHByaW50T3BlcmF0aW9uLmdldCgpKSA9
PSBwYWdlU2V0dXAuZ2V0KCkpOworICAgIGdfYXNzZXJ0X2NtcGhleCh3ZWJraXRfcHJpbnRfb3Bl
cmF0aW9uX2dldF9wcmludF9zZXR0aW5ncyhwcmludE9wZXJhdGlvbi5nZXQoKSksID09LCBwcmlu
dFNldHRpbmdzLmdldCgpKTsKKyAgICBnX2Fzc2VydF9jbXBoZXgod2Via2l0X3ByaW50X29wZXJh
dGlvbl9nZXRfcGFnZV9zZXR1cChwcmludE9wZXJhdGlvbi5nZXQoKSksID09LCBwYWdlU2V0dXAu
Z2V0KCkpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2ViVmlld1ByaW50Q2FsbGJhY2soV2ViS2l0
V2ViVmlldyogd2ViVmlldywgV2ViS2l0UHJpbnRPcGVyYXRpb24qIHByaW50T3BlcmF0aW9uLCBX
ZWJWaWV3VGVzdCogdGVzdCkKIHsKLSAgICBnX2Fzc2VydCh3ZWJWaWV3ID09IHRlc3QtPm1fd2Vi
Vmlldyk7CisgICAgZ19hc3NlcnRfY21waGV4KHdlYlZpZXcsID09LCB0ZXN0LT5tX3dlYlZpZXcp
OwogCi0gICAgZ19hc3NlcnQoV0VCS0lUX0lTX1BSSU5UX09QRVJBVElPTihwcmludE9wZXJhdGlv
bikpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1BSSU5UX09QRVJBVElPTihwcmludE9w
ZXJhdGlvbikpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNo
ZXMoR19PQkpFQ1QocHJpbnRPcGVyYXRpb24pKTsKIAotICAgIGdfYXNzZXJ0KCF3ZWJraXRfcHJp
bnRfb3BlcmF0aW9uX2dldF9wcmludF9zZXR0aW5ncyhwcmludE9wZXJhdGlvbikpOwotICAgIGdf
YXNzZXJ0KCF3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX2dldF9wYWdlX3NldHVwKHByaW50T3BlcmF0
aW9uKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX2dldF9wcmlu
dF9zZXR0aW5ncyhwcmludE9wZXJhdGlvbikpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3By
aW50X29wZXJhdGlvbl9nZXRfcGFnZV9zZXR1cChwcmludE9wZXJhdGlvbikpOwogCiAgICAgZ19t
YWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKIApAQCAtOTgsOSArOTgsOSBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgdm9pZCBwcmludEZhaWxlZENhbGxiYWNrKFdlYktpdFByaW50T3Bl
cmF0aW9uKiwgR0Vycm9yKiBlcnJvciwgUHJpbnRUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAg
Z19hc3NlcnQodGVzdC0+bV9leHBlY3RlZEVycm9yKTsKLSAgICAgICAgZ19hc3NlcnQoZXJyb3Ip
OwotICAgICAgICBnX2Fzc2VydChnX2Vycm9yX21hdGNoZXMoZXJyb3IsIFdFQktJVF9QUklOVF9F
UlJPUiwgdGVzdC0+bV9leHBlY3RlZEVycm9yKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQo
dGVzdC0+bV9leHBlY3RlZEVycm9yLCAhPSwgMCk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwo
ZXJyb3IpOworICAgICAgICBnX2Fzc2VydF9lcnJvcihlcnJvciwgV0VCS0lUX1BSSU5UX0VSUk9S
LCB0ZXN0LT5tX2V4cGVjdGVkRXJyb3IpOwogICAgIH0KIAogICAgIFByaW50VGVzdCgpCkBAIC0x
NDcsNyArMTQ3LDcgQEAgc3RhdGljIHZvaWQgdGVzdFByaW50T3BlcmF0aW9uUHJpbnQoUHJpbnRU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5m
byA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfaW5mbyhvdXRwdXRGaWxlLmdldCgpLAogICAgICAg
ICBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NJWkUgIiwiIEdfRklMRV9BVFRSSUJVVEVfU1RB
TkRBUkRfQ09OVEVOVF9UWVBFLAogICAgICAgICBzdGF0aWNfY2FzdDxHRmlsZVF1ZXJ5SW5mb0Zs
YWdzPigwKSwgMCwgMCkpOwotICAgIGdfYXNzZXJ0KGZpbGVJbmZvLmdldCgpKTsKKyAgICBnX2Fz
c2VydF9ub25udWxsKGZpbGVJbmZvLmdldCgpKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZ19maWxl
X2luZm9fZ2V0X3NpemUoZmlsZUluZm8uZ2V0KCkpLCA+LCAwKTsKICAgICBnX2Fzc2VydF9jbXBz
dHIoZ19maWxlX2luZm9fZ2V0X2NvbnRlbnRfdHlwZShmaWxlSW5mby5nZXQoKSksID09LCAiYXBw
bGljYXRpb24vcGRmIik7CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBtX3ByaW50RmluaXNoZWQgPSB0cnVlOwogICAgICAgICBtX3ByaW50T3BlcmF0aW9uID0g
bnVsbHB0cjsKLSAgICAgICAgZ19hc3NlcnQobV9vdXRwdXRGaWxlKTsKKyAgICAgICAgZ19hc3Nl
cnRfbm9ubnVsbChtX291dHB1dEZpbGUpOwogICAgICAgICBnX2ZpbGVfZGVsZXRlKG1fb3V0cHV0
RmlsZS5nZXQoKSwgMCwgMCk7CiAgICAgICAgIG1fb3V0cHV0RmlsZSA9IG51bGxwdHI7CiAgICAg
ICAgIGlmIChtX3dlYlZpZXdDbG9zZWQpCkBAIC0zMDUsNyArMzA1LDcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIHZvaWQgdXBkYXRlQ2FsbGJhY2soV2ViS2l0UHJpbnRDdXN0b21XaWRnZXQqIGN1
c3RvbVdpZGdldCwgR3RrUGFnZVNldHVwKiwgR3RrUHJpbnRTZXR0aW5ncyosIFByaW50Q3VzdG9t
V2lkZ2V0VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KHRlc3QtPm1fd2lkZ2V0
ID09IHdlYmtpdF9wcmludF9jdXN0b21fd2lkZ2V0X2dldF93aWRnZXQoY3VzdG9tV2lkZ2V0KSk7
CisgICAgICAgIGdfYXNzZXJ0X2NtcGhleCh0ZXN0LT5tX3dpZGdldCwgPT0sIHdlYmtpdF9wcmlu
dF9jdXN0b21fd2lkZ2V0X2dldF93aWRnZXQoY3VzdG9tV2lkZ2V0KSk7CiAKICAgICAgICAgdGVz
dC0+bV91cGRhdGVFbWl0dGVkID0gdHJ1ZTsKICAgICAgICAgLy8gV291bGQgYmUgbmljZSB0byBh
dm9pZCB0aGUgMSBzZWNvbmQgdGltZW91dCBoZXJlIC0gYnV0IEkgZGlkbid0IGZvdW5kCkBAIC0z
MTUsOCArMzE1LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgd2lkZ2V0UmVhbGl6ZUNh
bGxiYWNrKEd0a1dpZGdldCogd2lkZ2V0LCBQcmludEN1c3RvbVdpZGdldFRlc3QqIHRlc3QpCiAg
ICAgewotICAgICAgICBnX2Fzc2VydChHVEtfSVNfTEFCRUwod2lkZ2V0KSk7Ci0gICAgICAgIGdf
YXNzZXJ0KCFnX3N0cmNtcDAoZ3RrX2xhYmVsX2dldF90ZXh0KEdUS19MQUJFTCh3aWRnZXQpKSwg
IkxhYmVsIikpOworICAgICAgICBnX2Fzc2VydF90cnVlKEdUS19JU19MQUJFTCh3aWRnZXQpKTsK
KyAgICAgICAgZ19hc3NlcnRfY21wc3RyKGd0a19sYWJlbF9nZXRfdGV4dChHVEtfTEFCRUwod2lk
Z2V0KSksID09LCAiTGFiZWwiKTsKIAogICAgICAgICB0ZXN0LT5tX3dpZGdldFJlYWxpemVkID0g
dHJ1ZTsKICAgICAgICAgdGVzdC0+c3RhcnRQcmludGluZygpOwpAQCAtMzU5LDcgKzM1OSw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgcHJpbnRGaW5pc2hlZCgpCiAgICAgewotICAgICAgICBnX2Fz
c2VydChtX291dHB1dEZpbGUpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKG1fb3V0cHV0Rmls
ZSk7CiAgICAgICAgIGdfZmlsZV9kZWxldGUobV9vdXRwdXRGaWxlLmdldCgpLCBudWxscHRyLCBu
dWxscHRyKTsKICAgICAgICAgbV9vdXRwdXRGaWxlID0gbnVsbHB0cjsKICAgICAgICAgZ19tYWlu
X2xvb3BfcXVpdChtX21haW5Mb29wKTsKQEAgLTM2OCw3ICszNjgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjcmVhdGVXZWJLaXRQcmludE9wZXJhdGlvbigpCiAgICAgewogICAgICAgICBtX3ByaW50
T3BlcmF0aW9uID0gYWRvcHRHUmVmKHdlYmtpdF9wcmludF9vcGVyYXRpb25fbmV3KG1fd2ViVmll
dykpOwotICAgICAgICBnX2Fzc2VydChtX3ByaW50T3BlcmF0aW9uKTsKKyAgICAgICAgZ19hc3Nl
cnRfbm9ubnVsbChtX3ByaW50T3BlcmF0aW9uKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxl
dGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChtX3ByaW50T3BlcmF0aW9uLmdldCgpKSk7CiAK
ICAgICAgICAgZ19zaWduYWxfY29ubmVjdChtX3ByaW50T3BlcmF0aW9uLmdldCgpLCAiY3JlYXRl
LWN1c3RvbS13aWRnZXQiLCBHX0NBTExCQUNLKGNyZWF0ZUN1c3RvbVdpZGdldENhbGxiYWNrKSwg
dGhpcyk7CkBAIC00NDQsMTEgKzQ0NCwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0UHJpbnRDdXN0b21X
aWRnZXQoUHJpbnRDdXN0b21XaWRnZXRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogCiAgICAg
dGVzdC0+b3BlbkRpYWxvZ01vdmVUaHJvdWdoSXRBbmRXYWl0VW50aWxDbG9zZWQoKTsKIAotICAg
IGdfYXNzZXJ0KHRlc3QtPm1fcmVzcG9uc2UgPT0gV0VCS0lUX1BSSU5UX09QRVJBVElPTl9SRVNQ
T05TRV9QUklOVCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9jcmVhdGVFbWl0dGVkKTsKLSAgICBn
X2Fzc2VydCh0ZXN0LT5tX3dpZGdldFJlYWxpemVkKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3Vw
ZGF0ZUVtaXR0ZWQpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fYXBwbHlFbWl0dGVkKTsKKyAgICBn
X2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fcmVzcG9uc2UsID09LCBXRUJLSVRfUFJJTlRfT1BFUkFU
SU9OX1JFU1BPTlNFX1BSSU5UKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fY3JlYXRlRW1p
dHRlZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3dpZGdldFJlYWxpemVkKTsKKyAgICBn
X2Fzc2VydF90cnVlKHRlc3QtPm1fdXBkYXRlRW1pdHRlZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0
ZXN0LT5tX2FwcGx5RW1pdHRlZCk7CiB9CiAjZW5kaWYgLy8gSEFWRV9HVEtfVU5JWF9QUklOVElO
RwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0
V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAKaW5kZXggOWM2YmJkZDdjM2VkMzc2ODhi
ZDk1YTkyMjc2YjdkZTY3NjRkYmMwOS4uNTEwNDg3MjM5OWMwYzg0MDk5MTc3NTEyY2MzZDRjYzcy
YzU5YmMzYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsv
VGVzdFdlYktpdEFjY2Vzc2liaWxpdHkuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcApAQCAtMTIyLDcgKzEyMiw3
IEBAIHN0YXRpYyB2b2lkIHN0YXJ0VGVzdFNlcnZlcigpCiAKIHN0YXRpYyB2b2lkIGNoZWNrQXRz
cGlBY2Nlc3NpYmxlKEF0c3BpQWNjZXNzaWJsZSogYWNjZXNzaWJsZSwgY29uc3QgY2hhciogdGFy
Z2V0TmFtZSwgQXRzcGlSb2xlIHRhcmdldFJvbGUpCiB7Ci0gICAgZ19hc3NlcnQoQVRTUElfSVNf
QUNDRVNTSUJMRShhY2Nlc3NpYmxlKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19BQ0NF
U1NJQkxFKGFjY2Vzc2libGUpKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gbmFtZShhdHNwaV9h
Y2Nlc3NpYmxlX2dldF9uYW1lKGFjY2Vzc2libGUsIDApKTsKICAgICBnX2Fzc2VydF9jbXBzdHIo
dGFyZ2V0TmFtZSwgPT0sIG5hbWUuZ2V0KCkpOwpAQCAtMTUwLDU4ICsxNTAsNTggQEAgc3RhdGlj
IHZvaWQgdGVzdEF0c3BpQmFzaWNIaWVyYXJjaHkoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiB7CiAgICAgLy8gVGhlIHRlc3Qgc2VydmVyJ3MgYWNjZXNzaWJpbGl0eSBvYmplY3Qg
KFVJIFByb2Nlc3MpLgogICAgIEdSZWZQdHI8QXRzcGlBY2Nlc3NpYmxlPiB0ZXN0U2VydmVyQXBw
ID0gZmluZFRlc3RTZXJ2ZXJBcHBsaWNhdGlvbigpOwotICAgIGdfYXNzZXJ0KEFUU1BJX0lTX0FD
Q0VTU0lCTEUodGVzdFNlcnZlckFwcC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElf
SVNfQUNDRVNTSUJMRSh0ZXN0U2VydmVyQXBwLmdldCgpKSk7CiAgICAgY2hlY2tBdHNwaUFjY2Vz
c2libGUodGVzdFNlcnZlckFwcC5nZXQoKSwgIkFjY2Vzc2liaWxpdHlUZXN0U2VydmVyIiwgQVRT
UElfUk9MRV9BUFBMSUNBVElPTik7CiAKICAgICAvLyBUaGUgbWFpbiB3aW5kb3cncyBhY2Nlc3Np
YmlsaXR5IG9iamVjdCAoVUkgUHJvY2VzcykuCiAgICAgR1JlZlB0cjxBdHNwaUFjY2Vzc2libGU+
IGN1cnJlbnRQYXJlbnQgPSB0ZXN0U2VydmVyQXBwOwogICAgIEdSZWZQdHI8QXRzcGlBY2Nlc3Np
YmxlPiBjdXJyZW50Q2hpbGQgPSBhZG9wdEdSZWYoYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRf
YXRfaW5kZXgoY3VycmVudFBhcmVudC5nZXQoKSwgMCwgMCkpOwotICAgIGdfYXNzZXJ0KEFUU1BJ
X0lTX0FDQ0VTU0lCTEUoY3VycmVudENoaWxkLmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShB
VFNQSV9JU19BQ0NFU1NJQkxFKGN1cnJlbnRDaGlsZC5nZXQoKSkpOwogICAgIGNoZWNrQXRzcGlB
Y2Nlc3NpYmxlKGN1cnJlbnRDaGlsZC5nZXQoKSwgIiIsIEFUU1BJX1JPTEVfRlJBTUUpOwogCiAg
ICAgLy8gVGhlIFdlYlZpZXcncyBhY2Nlc3NpYmlsaXR5IG9iamVjdCAoVUkgUHJvY2VzcykuCiAg
ICAgY3VycmVudFBhcmVudCA9IGN1cnJlbnRDaGlsZDsKICAgICBjdXJyZW50Q2hpbGQgPSBhdHNw
aV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9hdF9pbmRleChjdXJyZW50UGFyZW50LmdldCgpLCAwLCAw
KTsKLSAgICBnX2Fzc2VydChBVFNQSV9JU19BQ0NFU1NJQkxFKGN1cnJlbnRDaGlsZC5nZXQoKSkp
OworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShjdXJyZW50Q2hpbGQuZ2V0
KCkpKTsKICAgICBjaGVja0F0c3BpQWNjZXNzaWJsZShjdXJyZW50Q2hpbGQuZ2V0KCksICIiLCBB
VFNQSV9ST0xFX0ZJTExFUik7CiAKICAgICAvLyBUaGUgV2ViUGFnZSdzIGFjY2Vzc2liaWxpdHkg
b2JqZWN0IChXZWIgUHJvY2VzcykuCiAgICAgY3VycmVudFBhcmVudCA9IGN1cnJlbnRDaGlsZDsK
ICAgICBjdXJyZW50Q2hpbGQgPSBhdHNwaV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9hdF9pbmRleChj
dXJyZW50UGFyZW50LmdldCgpLCAwLCAwKTsKLSAgICBnX2Fzc2VydChBVFNQSV9JU19BQ0NFU1NJ
QkxFKGN1cnJlbnRDaGlsZC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfQUND
RVNTSUJMRShjdXJyZW50Q2hpbGQuZ2V0KCkpKTsKICAgICBjaGVja0F0c3BpQWNjZXNzaWJsZShj
dXJyZW50Q2hpbGQuZ2V0KCksICIiLCBBVFNQSV9ST0xFX0ZJTExFUik7CiAKICAgICAvLyBIVE1M
IHJvb3QgZWxlbWVudCdzIGFjY2Vzc2libGUgZWxlbWVudCAoV2ViIFByb2Nlc3MpLgogICAgIGN1
cnJlbnRQYXJlbnQgPSBjdXJyZW50Q2hpbGQ7CiAgICAgY3VycmVudENoaWxkID0gYXRzcGlfYWNj
ZXNzaWJsZV9nZXRfY2hpbGRfYXRfaW5kZXgoY3VycmVudFBhcmVudC5nZXQoKSwgMCwgMCk7Ci0g
ICAgZ19hc3NlcnQoQVRTUElfSVNfQUNDRVNTSUJMRShjdXJyZW50Q2hpbGQuZ2V0KCkpKTsKKyAg
ICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUoY3VycmVudENoaWxkLmdldCgpKSk7
CiAKICAgICAvLyBIVE1MIGJvZHkncyBhY2Nlc3NpYmxlIGVsZW1lbnQgKFdlYiBQcm9jZXNzKS4K
ICAgICBjdXJyZW50UGFyZW50ID0gY3VycmVudENoaWxkOwogICAgIGN1cnJlbnRDaGlsZCA9IGF0
c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2F0X2luZGV4KGN1cnJlbnRQYXJlbnQuZ2V0KCksIDAs
IDApOwotICAgIGdfYXNzZXJ0KEFUU1BJX0lTX0FDQ0VTU0lCTEUoY3VycmVudENoaWxkLmdldCgp
KSk7CisgICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKGN1cnJlbnRDaGlsZC5n
ZXQoKSkpOwogICAgIGNoZWNrQXRzcGlBY2Nlc3NpYmxlKGN1cnJlbnRDaGlsZC5nZXQoKSwgIiIs
IEFUU1BJX1JPTEVfRE9DVU1FTlRfV0VCKTsKIAogICAgIC8vIEhUTUwgSDEncyBhY2Nlc3NpYmxl
IGVsZW1lbnQgKFdlYiBQcm9jZXNzKS4KICAgICBjdXJyZW50UGFyZW50ID0gY3VycmVudENoaWxk
OwogICAgIGN1cnJlbnRDaGlsZCA9IGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2F0X2luZGV4
KGN1cnJlbnRQYXJlbnQuZ2V0KCksIDAsIDApOwotICAgIGdfYXNzZXJ0KEFUU1BJX0lTX0FDQ0VT
U0lCTEUoY3VycmVudENoaWxkLmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19B
Q0NFU1NJQkxFKGN1cnJlbnRDaGlsZC5nZXQoKSkpOwogICAgIGNoZWNrQXRzcGlBY2Nlc3NpYmxl
KGN1cnJlbnRDaGlsZC5nZXQoKSwgIlRoaXMgaXMgYSB0ZXN0IiwgQVRTUElfUk9MRV9IRUFESU5H
KTsKIAogICAgIC8vIEhUTUwgZmlyc3QgcGFyYWdyYXBoJ3MgYWNjZXNzaWJsZSBlbGVtZW50IChX
ZWIgUHJvY2VzcykuCiAgICAgY3VycmVudENoaWxkID0gYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hp
bGRfYXRfaW5kZXgoY3VycmVudFBhcmVudC5nZXQoKSwgMSwgMCk7Ci0gICAgZ19hc3NlcnQoQVRT
UElfSVNfQUNDRVNTSUJMRShjdXJyZW50Q2hpbGQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVl
KEFUU1BJX0lTX0FDQ0VTU0lCTEUoY3VycmVudENoaWxkLmdldCgpKSk7CiAgICAgY2hlY2tBdHNw
aUFjY2Vzc2libGUoY3VycmVudENoaWxkLmdldCgpLCAiIiwgQVRTUElfUk9MRV9QQVJBR1JBUEgp
OwogCiAgICAgLy8gSFRNTCBzZWNvbmQgcGFyYWdyYXBoJ3MgYWNjZXNzaWJsZSBlbGVtZW50IChX
ZWIgUHJvY2VzcykuCiAgICAgY3VycmVudENoaWxkID0gYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hp
bGRfYXRfaW5kZXgoY3VycmVudFBhcmVudC5nZXQoKSwgMiwgMCk7Ci0gICAgZ19hc3NlcnQoQVRT
UElfSVNfQUNDRVNTSUJMRShjdXJyZW50Q2hpbGQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVl
KEFUU1BJX0lTX0FDQ0VTU0lCTEUoY3VycmVudENoaWxkLmdldCgpKSk7CiAgICAgY2hlY2tBdHNw
aUFjY2Vzc2libGUoY3VycmVudENoaWxkLmdldCgpLCAiIiwgQVRTUElfUk9MRV9QQVJBR1JBUEgp
OwogCiAgICAgLy8gSFRNTCBsaW5rJ3MgYWNjZXNzaWJsZSBlbGVtZW50IChXZWIgUHJvY2Vzcyku
CiAgICAgY3VycmVudFBhcmVudCA9IGN1cnJlbnRDaGlsZDsKICAgICBjdXJyZW50Q2hpbGQgPSBh
dHNwaV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9hdF9pbmRleChjdXJyZW50UGFyZW50LmdldCgpLCAw
LCAwKTsKLSAgICBnX2Fzc2VydChBVFNQSV9JU19BQ0NFU1NJQkxFKGN1cnJlbnRDaGlsZC5nZXQo
KSkpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShjdXJyZW50Q2hpbGQu
Z2V0KCkpKTsKICAgICBjaGVja0F0c3BpQWNjZXNzaWJsZShjdXJyZW50Q2hpbGQuZ2V0KCksICJh
IGxpbmsiLCBBVFNQSV9ST0xFX0xJTkspOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0VmVyc2lvbi5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0VmVyc2lvbi5jcHAKaW5kZXggZTc0
N2ZmOTYyMjAwZGJkMjQ0OTkzZjUyMWQyZDE2M2MxMmFkMjNjMy4uYWEzOGExNTA4NDBjNTVjZDNi
NTY1ZDBhYWMxNWE5YjE0MjQzNWRiZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHdGsvVGVzdFdlYktpdFZlcnNpb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJLaXRWZXJzaW9uLmNwcApAQCAtMzMsMTAgKzMz
LDEwIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRWZXJzaW9uKFRlc3QqLCBnY29uc3Rwb2ludGVy
KQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0Q2hlY2tWZXJzaW9uKFRlc3QqLCBnY29uc3Rwb2lu
dGVyKQogewotICAgIGdfYXNzZXJ0KFdFQktJVF9DSEVDS19WRVJTSU9OKFdFQktJVF9NQUpPUl9W
RVJTSU9OLCBXRUJLSVRfTUlOT1JfVkVSU0lPTiwgV0VCS0lUX01JQ1JPX1ZFUlNJT04pKTsKLSAg
ICBnX2Fzc2VydCghV0VCS0lUX0NIRUNLX1ZFUlNJT04oV0VCS0lUX01BSk9SX1ZFUlNJT04gKyAx
LCBXRUJLSVRfTUlOT1JfVkVSU0lPTiwgV0VCS0lUX01JQ1JPX1ZFUlNJT04pKTsKLSAgICBnX2Fz
c2VydCghV0VCS0lUX0NIRUNLX1ZFUlNJT04oV0VCS0lUX01BSk9SX1ZFUlNJT04sIFdFQktJVF9N
SU5PUl9WRVJTSU9OICsgMSwgV0VCS0lUX01JQ1JPX1ZFUlNJT04pKTsKLSAgICBnX2Fzc2VydCgh
V0VCS0lUX0NIRUNLX1ZFUlNJT04oV0VCS0lUX01BSk9SX1ZFUlNJT04sIFdFQktJVF9NSU5PUl9W
RVJTSU9OLCBXRUJLSVRfTUlDUk9fVkVSU0lPTiArIDEpKTsKKyAgICBnX2Fzc2VydF90cnVlKFdF
QktJVF9DSEVDS19WRVJTSU9OKFdFQktJVF9NQUpPUl9WRVJTSU9OLCBXRUJLSVRfTUlOT1JfVkVS
U0lPTiwgV0VCS0lUX01JQ1JPX1ZFUlNJT04pKTsKKyAgICBnX2Fzc2VydF9mYWxzZShXRUJLSVRf
Q0hFQ0tfVkVSU0lPTihXRUJLSVRfTUFKT1JfVkVSU0lPTiArIDEsIFdFQktJVF9NSU5PUl9WRVJT
SU9OLCBXRUJLSVRfTUlDUk9fVkVSU0lPTikpOworICAgIGdfYXNzZXJ0X2ZhbHNlKFdFQktJVF9D
SEVDS19WRVJTSU9OKFdFQktJVF9NQUpPUl9WRVJTSU9OLCBXRUJLSVRfTUlOT1JfVkVSU0lPTiAr
IDEsIFdFQktJVF9NSUNST19WRVJTSU9OKSk7CisgICAgZ19hc3NlcnRfZmFsc2UoV0VCS0lUX0NI
RUNLX1ZFUlNJT04oV0VCS0lUX01BSk9SX1ZFUlNJT04sIFdFQktJVF9NSU5PUl9WRVJTSU9OLCBX
RUJLSVRfTUlDUk9fVkVSU0lPTiArIDEpKTsKIH0KIAogdm9pZCBiZWZvcmVBbGwoKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYlZpZXdFZGl0
b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYlZpZXdF
ZGl0b3IuY3BwCmluZGV4IDg4NzExOTUxZGYwM2I1NTA2NTk2YmQzMjg3MDU0NTRlZWYzNGNkZWUu
LjBkMDlmMDJjMmU3ODgzZjlhZGI4MDNlNzE3ZmRjYWM2ZDViYzRiZjEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViVmlld0VkaXRv
ci5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgR1VuaXF1ZU91
dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICB0ZXN0LT5tX2NhbkV4ZWN1dGVFZGl0aW5nQ29t
bWFuZCA9IHdlYmtpdF93ZWJfdmlld19jYW5fZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmRfZmluaXNo
KHRlc3QtPm1fd2ViVmlldywgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpOwotICAgICAgICBnX2Fz
c2VydCghZXJyb3IuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQo
KSk7CiAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CiAgICAgfQog
CkBAIC02NywxNyArNjcsMTcgQEAgcHVibGljOgogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9t
YWluTG9vcCk7CiAKICAgICAgICAgaWYgKCFzdHJjbXAoY29tbWFuZCwgV0VCS0lUX0VESVRJTkdf
Q09NTUFORF9DVVQpKQotICAgICAgICAgICAgZ19hc3NlcnQobV9jYW5FeGVjdXRlRWRpdGluZ0Nv
bW1hbmQgPT0gd2Via2l0X2VkaXRvcl9zdGF0ZV9pc19jdXRfYXZhaWxhYmxlKGVkaXRvclN0YXRl
KCkpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2NtcGludChtX2NhbkV4ZWN1dGVFZGl0aW5nQ29t
bWFuZCwgPT0sIHdlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfY3V0X2F2YWlsYWJsZShlZGl0b3JTdGF0
ZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoY29tbWFuZCwgV0VCS0lUX0VESVRJTkdf
Q09NTUFORF9DT1BZKSkKLSAgICAgICAgICAgIGdfYXNzZXJ0KG1fY2FuRXhlY3V0ZUVkaXRpbmdD
b21tYW5kID09IHdlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfY29weV9hdmFpbGFibGUoZWRpdG9yU3Rh
dGUoKSkpOworICAgICAgICAgICAgZ19hc3NlcnRfY21waW50KG1fY2FuRXhlY3V0ZUVkaXRpbmdD
b21tYW5kLCA9PSwgd2Via2l0X2VkaXRvcl9zdGF0ZV9pc19jb3B5X2F2YWlsYWJsZShlZGl0b3JT
dGF0ZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoY29tbWFuZCwgV0VCS0lUX0VESVRJ
TkdfQ09NTUFORF9QQVNURSkpCi0gICAgICAgICAgICBnX2Fzc2VydChtX2NhbkV4ZWN1dGVFZGl0
aW5nQ29tbWFuZCA9PSB3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX3Bhc3RlX2F2YWlsYWJsZShlZGl0
b3JTdGF0ZSgpKSk7CisgICAgICAgICAgICBnX2Fzc2VydF9jbXBpbnQobV9jYW5FeGVjdXRlRWRp
dGluZ0NvbW1hbmQsID09LCB3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX3Bhc3RlX2F2YWlsYWJsZShl
ZGl0b3JTdGF0ZSgpKSk7CiAgICAgICAgIC8vIEZJWE1FOiBGaWd1cmUgb3V0IGhvdyB0byBhZGQg
dGVzdHMgZm9yIHVuZG8gYW5kIHJlZG8uIEl0IHdpbGwgcHJvYmFibHkgcmVxdWlyZSB1c2luZyB1
c2VyCiAgICAgICAgIC8vIHNjcmlwdHMgdG8gbWVzc2FnZSB0aGUgVUkgcHJvY2VzcyB3aGVuIHRo
ZSBjb250ZW50IGhhcyBiZWVuIGFsdGVyZWQuCiAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoY29t
bWFuZCwgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9VTkRPKSkKLSAgICAgICAgICAgIGdfYXNzZXJ0
KG1fY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kID09IHdlYmtpdF9lZGl0b3Jfc3RhdGVfaXNfdW5k
b19hdmFpbGFibGUoZWRpdG9yU3RhdGUoKSkpOworICAgICAgICAgICAgZ19hc3NlcnRfY21waW50
KG1fY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kLCA9PSwgd2Via2l0X2VkaXRvcl9zdGF0ZV9pc191
bmRvX2F2YWlsYWJsZShlZGl0b3JTdGF0ZSgpKSk7CiAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAo
Y29tbWFuZCwgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9SRURPKSkKLSAgICAgICAgICAgIGdfYXNz
ZXJ0KG1fY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kID09IHdlYmtpdF9lZGl0b3Jfc3RhdGVfaXNf
cmVkb19hdmFpbGFibGUoZWRpdG9yU3RhdGUoKSkpOworICAgICAgICAgICAgZ19hc3NlcnRfY21w
aW50KG1fY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kLCA9PSwgd2Via2l0X2VkaXRvcl9zdGF0ZV9p
c19yZWRvX2F2YWlsYWJsZShlZGl0b3JTdGF0ZSgpKSk7CiAKICAgICAgICAgcmV0dXJuIG1fY2Fu
RXhlY3V0ZUVkaXRpbmdDb21tYW5kOwogICAgIH0KQEAgLTEwNSw4ICsxMDUsOCBAQCBwdWJsaWM6
CiAKICAgICBnY2hhciogY3V0U2VsZWN0aW9uKCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KGNh
bkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVCkpOwotICAg
ICAgICBnX2Fzc2VydChjYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09N
TUFORF9QQVNURSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKGNhbkV4ZWN1dGVFZGl0aW5nQ29t
bWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVCkpOworICAgICAgICBnX2Fzc2VydF90cnVl
KGNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1BBU1RFKSk7
CiAKICAgICAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKG1fd2Vi
VmlldywgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQpOwogICAgICAgICAvLyBUaGVyZSdzIG5v
IHdheSB0byBrbm93IHdoZW4gdGhlIHNlbGVjdGlvbiBoYXMgYmVlbiBjdXQgdG8KQEAgLTE2Miwy
MCArMTYyLDIwIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzZWxlY3RlZFNwYW5IVE1MRm9ybWF0ID0K
IHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RWRpdG9yQ3V0Q29weVBhc3RlTm9uRWRpdGFibGUoRWRp
dG9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICAvLyBOb3RoaW5nIGxvYWRlZCB5
ZXQuCi0gICAgZ19hc3NlcnQoIXRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRf
RURJVElOR19DT01NQU5EX0NVVCkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5jYW5FeGVjdXRlRWRp
dGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DT1BZKSk7Ci0gICAgZ19hc3NlcnQo
IXRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1BB
U1RFKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5k
KFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+
Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ09QWSkpOwor
ICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRf
RURJVElOR19DT01NQU5EX1BBU1RFKSk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNlbGVjdGVk
U3BhbkhUTUwoZ19zdHJkdXBfcHJpbnRmKHNlbGVjdGVkU3BhbkhUTUxGb3JtYXQsICJmYWxzZSIp
KTsKICAgICB0ZXN0LT5sb2FkSHRtbChzZWxlY3RlZFNwYW5IVE1MLmdldCgpLCBudWxscHRyKTsK
ICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICB0ZXN0LT5mbHVzaEVkaXRv
clN0YXRlKCk7CiAKLSAgICBnX2Fzc2VydCh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQo
V0VCS0lUX0VESVRJTkdfQ09NTUFORF9DT1BZKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5j
YW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DT1BZKSk7CiAg
ICAgLy8gSXQncyBub3QgcG9zc2libGUgdG8gY3V0IGFuZCBwYXN0ZSB3aGVuIGNvbnRlbnQgaXMg
bm90IGVkaXRhYmxlCiAgICAgLy8gZXZlbiBpZiB0aGVyZSdzIGEgc2VsZWN0aW9uLgotICAgIGdf
YXNzZXJ0KCF0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09N
TUFORF9DVVQpKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5k
KFdFQktJVF9FRElUSU5HX0NPTU1BTkRfUEFTVEUpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0
LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQpKTsK
KyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lU
X0VESVRJTkdfQ09NTUFORF9QQVNURSkpOwogCiAgICAgdGVzdC0+Y29weUNsaXBib2FyZCgpOwog
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gY2xpcGJvYXJkVGV4dChndGtfY2xpcGJvYXJkX3dhaXRfZm9y
X3RleHQodGVzdC0+bV9jbGlwYm9hcmQpKTsKQEAgLTE4NSwxMyArMTg1LDEzIEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3RWRpdG9yQ3V0Q29weVBhc3RlTm9uRWRpdGFibGUoRWRpdG9yVGVzdCog
dGVzdCwgZ2NvbnN0cG9pCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvckN1dENvcHlQYXN0
ZUVkaXRhYmxlKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgLy8gTm90
aGluZyBsb2FkZWQgeWV0LgotICAgIGdfYXNzZXJ0KCF0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0Nv
bW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQpKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+
Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ09QWSkpOwot
ICAgIGdfYXNzZXJ0KCF0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJ
TkdfQ09NTUFORF9QQVNURSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmNhbkV4ZWN1dGVF
ZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVCkpOworICAgIGdfYXNzZXJ0
X2ZhbHNlKHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01N
QU5EX0NPUFkpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0Nv
bW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9QQVNURSkpOwogCi0gICAgZ19hc3NlcnQoIXRl
c3QtPmlzRWRpdGFibGUoKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+aXNFZGl0YWJsZSgp
KTsKICAgICB0ZXN0LT5zZXRFZGl0YWJsZSh0cnVlKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5pc0Vk
aXRhYmxlKCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+aXNFZGl0YWJsZSgpKTsKIAogICAg
IEdVbmlxdWVQdHI8Y2hhcj4gc2VsZWN0ZWRTcGFuSFRNTChnX3N0cmR1cF9wcmludGYoc2VsZWN0
ZWRTcGFuSFRNTEZvcm1hdCwgImZhbHNlIikpOwogICAgIHRlc3QtPmxvYWRIdG1sKHNlbGVjdGVk
U3BhbkhUTUwuZ2V0KCksIG51bGxwdHIpOwpAQCAtMTk5LDkgKzE5OSw5IEBAIHN0YXRpYyB2b2lk
IHRlc3RXZWJWaWV3RWRpdG9yQ3V0Q29weVBhc3RlRWRpdGFibGUoRWRpdG9yVGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlCiAgICAgdGVzdC0+Zmx1c2hFZGl0b3JTdGF0ZSgpOwogCiAgICAgLy8gVGhl
cmUncyBhIHNlbGVjdGlvbi4KLSAgICBnX2Fzc2VydCh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0Nv
bW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQpKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5j
YW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DT1BZKSk7Ci0g
ICAgZ19hc3NlcnQodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5H
X0NPTU1BTkRfUEFTVEUpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmNhbkV4ZWN1dGVFZGl0
aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVCkpOworICAgIGdfYXNzZXJ0X3Ry
dWUodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRf
Q09QWSkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5k
KFdFQktJVF9FRElUSU5HX0NPTU1BTkRfUEFTVEUpKTsKIAogICAgIHRlc3QtPmNvcHlDbGlwYm9h
cmQoKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNsaXBib2FyZFRleHQoZ3RrX2NsaXBib2FyZF93
YWl0X2Zvcl90ZXh0KHRlc3QtPm1fY2xpcGJvYXJkKSk7CkBAIC0yMTAsMTQgKzIxMCwxNCBAQCBz
dGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvckN1dENvcHlQYXN0ZUVkaXRhYmxlKEVkaXRvclRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvclNl
bGVjdEFsbE5vbkVkaXRhYmxlKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0g
ICAgZ19hc3NlcnQodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5H
X0NPTU1BTkRfU0VMRUNUX0FMTCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+Y2FuRXhlY3V0
ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfU0VMRUNUX0FMTCkpOwogCiAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBzZWxlY3RlZFNwYW5IVE1MKGdfc3RyZHVwX3ByaW50ZihzZWxl
Y3RlZFNwYW5IVE1MRm9ybWF0LCAiZmFsc2UiKSk7CiAgICAgdGVzdC0+bG9hZEh0bWwoc2VsZWN0
ZWRTcGFuSFRNTC5nZXQoKSwgbnVsbHB0cik7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlz
aGVkKCk7CiAgICAgdGVzdC0+Zmx1c2hFZGl0b3JTdGF0ZSgpOwogCi0gICAgZ19hc3NlcnQodGVz
dC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfU0VMRUNU
X0FMTCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5k
KFdFQktJVF9FRElUSU5HX0NPTU1BTkRfU0VMRUNUX0FMTCkpOwogCiAgICAgdGVzdC0+Y29weUNs
aXBib2FyZCgpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY2xpcGJvYXJkVGV4dChndGtfY2xpcGJv
YXJkX3dhaXRfZm9yX3RleHQodGVzdC0+bV9jbGlwYm9hcmQpKTsKQEAgLTIzNSwxOCArMjM1LDE4
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RWRpdG9yU2VsZWN0QWxsTm9uRWRpdGFibGUoRWRp
dG9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlCiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RWRp
dG9yU2VsZWN0QWxsRWRpdGFibGUoRWRpdG9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsK
LSAgICBnX2Fzc2VydCh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJ
TkdfQ09NTUFORF9TRUxFQ1RfQUxMKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5jYW5FeGVj
dXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9TRUxFQ1RfQUxMKSk7CiAK
LSAgICBnX2Fzc2VydCghdGVzdC0+aXNFZGl0YWJsZSgpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0
ZXN0LT5pc0VkaXRhYmxlKCkpOwogICAgIHRlc3QtPnNldEVkaXRhYmxlKHRydWUpOwotICAgIGdf
YXNzZXJ0KHRlc3QtPmlzRWRpdGFibGUoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5pc0Vk
aXRhYmxlKCkpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzZWxlY3RlZFNwYW5IVE1MKGdfc3Ry
ZHVwX3ByaW50ZihzZWxlY3RlZFNwYW5IVE1MRm9ybWF0LCAiZmFsc2UiKSk7CiAgICAgdGVzdC0+
bG9hZEh0bWwoc2VsZWN0ZWRTcGFuSFRNTC5nZXQoKSwgbnVsbHB0cik7CiAgICAgdGVzdC0+d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAgdGVzdC0+Zmx1c2hFZGl0b3JTdGF0ZSgpOwogCi0g
ICAgZ19hc3NlcnQodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5H
X0NPTU1BTkRfU0VMRUNUX0FMTCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+Y2FuRXhlY3V0
ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfU0VMRUNUX0FMTCkpOwogCiAg
ICAgdGVzdC0+Y29weUNsaXBib2FyZCgpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY2xpcGJvYXJk
VGV4dChndGtfY2xpcGJvYXJkX3dhaXRfZm9yX3RleHQodGVzdC0+bV9jbGlwYm9hcmQpKTsKQEAg
LTI2NSwxNiArMjY1LDE2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RWRpdG9yU2VsZWN0QWxs
RWRpdGFibGUoRWRpdG9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHN0YXRpYyB2b2lkIGxv
YWRDb250ZW50c0FuZFRyeVRvQ3V0U2VsZWN0aW9uKEVkaXRvclRlc3QqIHRlc3QsIGJvb2wgY29u
dGVudEVkaXRhYmxlKQogewogICAgIC8vIFZpZXcgaXMgbm90IGVkaXRhYmxlIGJ5IGRlZmF1bHQu
Ci0gICAgZ19hc3NlcnQoIXRlc3QtPmlzRWRpdGFibGUoKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uo
dGVzdC0+aXNFZGl0YWJsZSgpKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gc2VsZWN0ZWRTcGFu
SFRNTChnX3N0cmR1cF9wcmludGYoc2VsZWN0ZWRTcGFuSFRNTEZvcm1hdCwgY29udGVudEVkaXRh
YmxlID8gInRydWUiIDogImZhbHNlIikpOwogICAgIHRlc3QtPmxvYWRIdG1sKHNlbGVjdGVkU3Bh
bkhUTUwuZ2V0KCksIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OwogICAgIHRlc3QtPmZsdXNoRWRpdG9yU3RhdGUoKTsKIAotICAgIGdfYXNzZXJ0KCF0ZXN0LT5p
c0VkaXRhYmxlKCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmlzRWRpdGFibGUoKSk7CiAg
ICAgdGVzdC0+c2V0RWRpdGFibGUodHJ1ZSk7Ci0gICAgZ19hc3NlcnQodGVzdC0+aXNFZGl0YWJs
ZSgpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmlzRWRpdGFibGUoKSk7CiAKICAgICB0ZXN0
LT5mbHVzaEVkaXRvclN0YXRlKCk7CiAKQEAgLTI4NCw3ICsyODQsNyBAQCBzdGF0aWMgdm9pZCBs
b2FkQ29udGVudHNBbmRUcnlUb0N1dFNlbGVjdGlvbihFZGl0b3JUZXN0KiB0ZXN0LCBib29sIGNv
bnRlbnRFZGl0YQogCiAgICAgLy8gUmVzZXQgdGhlIGVkaXRhYmxlIGZvciBuZXh0IHRlc3QuCiAg
ICAgdGVzdC0+c2V0RWRpdGFibGUoZmFsc2UpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5pc0VkaXRh
YmxlKCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmlzRWRpdGFibGUoKSk7CiB9CiAKIHN0
YXRpYyB2b2lkIHRlc3RXZWJWaWV3RWRpdG9yTm9uRWRpdGFibGUoRWRpdG9yVGVzdCogdGVzdCkK
QEAgLTI5NCwxNSArMjk0LDE1IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RWRpdG9yTm9uRWRp
dGFibGUoRWRpdG9yVGVzdCogdGVzdCkKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQo
KTsKICAgICB0ZXN0LT5mbHVzaEVkaXRvclN0YXRlKCk7CiAKLSAgICBnX2Fzc2VydCghdGVzdC0+
aXNFZGl0YWJsZSgpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5pc0VkaXRhYmxlKCkpOwog
ICAgIHRlc3QtPnNldEVkaXRhYmxlKHRydWUpOwotICAgIGdfYXNzZXJ0KHRlc3QtPmlzRWRpdGFi
bGUoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5pc0VkaXRhYmxlKCkpOwogICAgIHRlc3Qt
PnNldEVkaXRhYmxlKGZhbHNlKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+aXNFZGl0YWJsZSgpKTsK
KyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5pc0VkaXRhYmxlKCkpOwogCiAgICAgLy8gQ2hlY2sg
aWYgdmlldyBpcyBpbmRlZWQgbm9uLWVkaXRhYmxlLgotICAgIGdfYXNzZXJ0KCF0ZXN0LT5jYW5F
eGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQpKTsKLSAgICBn
X2Fzc2VydCghdGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NP
TU1BTkRfUEFTVEUpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5jYW5FeGVjdXRlRWRpdGlu
Z0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQpKTsKKyAgICBnX2Fzc2VydF9mYWxz
ZSh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9Q
QVNURSkpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvckVkaXRhYmxlKEVkaXRv
clRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC0zMTEsMTMgKzMxMSwxMyBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2ViVmlld0VkaXRvckVkaXRhYmxlKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiAKICAgICAvLyBSZXNldCB0aGUgZWRpdGFibGUgZm9yIG5leHQgdGVzdC4KICAgICB0
ZXN0LT5zZXRFZGl0YWJsZShmYWxzZSk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPmlzRWRpdGFibGUo
KSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+aXNFZGl0YWJsZSgpKTsKIAogICAgIGxvYWRD
b250ZW50c0FuZFRyeVRvQ3V0U2VsZWN0aW9uKHRlc3QsIHRydWUpOwogCiAgICAgLy8gUmVzZXQg
dGhlIGVkaXRhYmxlIGZvciBuZXh0IHRlc3QuCiAgICAgdGVzdC0+c2V0RWRpdGFibGUoZmFsc2Up
OwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5pc0VkaXRhYmxlKCkpOworICAgIGdfYXNzZXJ0X2ZhbHNl
KHRlc3QtPmlzRWRpdGFibGUoKSk7CiAKICAgICBsb2FkQ29udGVudHNBbmRUcnlUb0N1dFNlbGVj
dGlvbih0ZXN0LCBmYWxzZSk7CiB9CkBAIC0zNDIsNDYgKzM0Miw0NiBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViVmlld0VkaXRvckVkaXRvclN0YXRlVHlwaW5nQXR0cmlidXRlcyhFZGl0b3JUZXN0KiB0
ZXN0LCBnY29ucwogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0
ZXN0LT5tX3dlYlZpZXcsICJNb3ZlRm9yd2FyZCIpOwogICAgIHdlYmtpdF93ZWJfdmlld19leGVj
dXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJNb3ZlRm9yd2FyZCIpOwogICAg
IHR5cGluZ0F0dHJpYnV0ZXMgPSB0ZXN0LT53YWl0VW50aWxUeXBpbmdBdHRyaWJ1dGVzQ2hhbmdl
ZCgpOwotICAgIGdfYXNzZXJ0KHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElO
R19BVFRSSUJVVEVfQk9MRCk7Ci0gICAgZ19hc3NlcnQoISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VC
S0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0lUQUxJQykpOwotICAgIGdfYXNzZXJ0KCEodHlw
aW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9VTkRFUkxJTkUp
KTsKLSAgICBnX2Fzc2VydCghKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElO
R19BVFRSSUJVVEVfU1RSSUtFVEhST1VHSCkpOworICAgIGdfYXNzZXJ0X3RydWUodHlwaW5nQXR0
cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9CT0xEKTsKKyAgICBnX2Fz
c2VydF9mYWxzZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklC
VVRFX0lUQUxJQyk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJ
VF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9VTkRFUkxJTkUpOworICAgIGdfYXNzZXJ0X2ZhbHNl
KHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfU1RSSUtF
VEhST1VHSCk7CiAKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQo
dGVzdC0+bV93ZWJWaWV3LCAiTW92ZVdvcmRGb3J3YXJkIik7CiAgICAgd2Via2l0X3dlYl92aWV3
X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywgIk1vdmVGb3J3YXJkIik7
CiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2Vi
VmlldywgIk1vdmVGb3J3YXJkIik7CiAgICAgdHlwaW5nQXR0cmlidXRlcyA9IHRlc3QtPndhaXRV
bnRpbFR5cGluZ0F0dHJpYnV0ZXNDaGFuZ2VkKCk7Ci0gICAgZ19hc3NlcnQoISh0eXBpbmdBdHRy
aWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0JPTEQpKTsKLSAgICBnX2Fz
c2VydCh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0lU
QUxJQyk7Ci0gICAgZ19hc3NlcnQoISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9U
WVBJTkdfQVRUUklCVVRFX1VOREVSTElORSkpOwotICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0cmli
dXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9TVFJJS0VUSFJPVUdIKSk7Cisg
ICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5H
X0FUVFJJQlVURV9CT0xEKTsKKyAgICBnX2Fzc2VydF90cnVlKHR5cGluZ0F0dHJpYnV0ZXMgJiBX
RUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfSVRBTElDKTsKKyAgICBnX2Fzc2VydF9mYWxz
ZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1VOREVS
TElORSk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElU
T1JfVFlQSU5HX0FUVFJJQlVURV9TVFJJS0VUSFJPVUdIKTsKIAogICAgIHdlYmtpdF93ZWJfdmll
d19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJNb3ZlV29yZEZvcndh
cmQiKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+
bV93ZWJWaWV3LCAiTW92ZUZvcndhcmQiKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9l
ZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZUZvcndhcmQiKTsKICAgICB0eXBp
bmdBdHRyaWJ1dGVzID0gdGVzdC0+d2FpdFVudGlsVHlwaW5nQXR0cmlidXRlc0NoYW5nZWQoKTsK
LSAgICBnX2Fzc2VydCghKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19B
VFRSSUJVVEVfQk9MRCkpOwotICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJ
VF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9JVEFMSUMpKTsKLSAgICBnX2Fzc2VydCh0eXBpbmdB
dHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1VOREVSTElORSk7Ci0g
ICAgZ19hc3NlcnQoISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRU
UklCVVRFX1NUUklLRVRIUk9VR0gpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0eXBpbmdBdHRyaWJ1
dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0JPTEQpOworICAgIGdfYXNzZXJ0
X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVf
SVRBTElDKTsKKyAgICBnX2Fzc2VydF90cnVlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJ
VE9SX1RZUElOR19BVFRSSUJVVEVfVU5ERVJMSU5FKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0eXBp
bmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1NUUklLRVRIUk9V
R0gpOwogCiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3Qt
Pm1fd2ViVmlldywgIk1vdmVXb3JkRm9yd2FyZCIpOwogICAgIHdlYmtpdF93ZWJfdmlld19leGVj
dXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJNb3ZlRm9yd2FyZCIpOwogICAg
IHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcs
ICJNb3ZlRm9yd2FyZCIpOwogICAgIHR5cGluZ0F0dHJpYnV0ZXMgPSB0ZXN0LT53YWl0VW50aWxU
eXBpbmdBdHRyaWJ1dGVzQ2hhbmdlZCgpOwotICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0cmlidXRl
cyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9CT0xEKSk7Ci0gICAgZ19hc3NlcnQo
ISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0lUQUxJ
QykpOwotICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQ
SU5HX0FUVFJJQlVURV9VTkRFUkxJTkUpKTsKLSAgICBnX2Fzc2VydCh0eXBpbmdBdHRyaWJ1dGVz
ICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1NUUklLRVRIUk9VR0gpOworICAgIGdf
YXNzZXJ0X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRS
SUJVVEVfQk9MRCk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJ
VF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9JVEFMSUMpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHR5
cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfVU5ERVJMSU5F
KTsKKyAgICBnX2Fzc2VydF90cnVlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZ
UElOR19BVFRSSUJVVEVfU1RSSUtFVEhST1VHSCk7CiAKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhl
Y3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZVdvcmRGb3J3YXJkIik7
CiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2Vi
VmlldywgIk1vdmVGb3J3YXJkIik7CiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGlu
Z19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywgIk1vdmVGb3J3YXJkIik7CiAgICAgdHlwaW5nQXR0
cmlidXRlcyA9IHRlc3QtPndhaXRVbnRpbFR5cGluZ0F0dHJpYnV0ZXNDaGFuZ2VkKCk7Ci0gICAg
Z19hc3NlcnQodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVU
RV9CT0xEKTsKLSAgICBnX2Fzc2VydCh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9U
WVBJTkdfQVRUUklCVVRFX0lUQUxJQyk7Ci0gICAgZ19hc3NlcnQoISh0eXBpbmdBdHRyaWJ1dGVz
ICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1VOREVSTElORSkpOwotICAgIGdfYXNz
ZXJ0KCEodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9T
VFJJS0VUSFJPVUdIKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VC
S0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0JPTEQpOworICAgIGdfYXNzZXJ0X3RydWUodHlw
aW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9JVEFMSUMpOwor
ICAgIGdfYXNzZXJ0X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElO
R19BVFRSSUJVVEVfVU5ERVJMSU5FKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0eXBpbmdBdHRyaWJ1
dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1NUUklLRVRIUk9VR0gpOwogCiAg
ICAgLy8gU2VsZWN0aW9ucy4KICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2Nv
bW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIpOwpAQCAt
MzkzLDQ2ICszOTMsNDYgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JFZGl0b3JTdGF0
ZVR5cGluZ0F0dHJpYnV0ZXMoRWRpdG9yVGVzdCogdGVzdCwgZ2NvbnMKICAgICB3ZWJraXRfd2Vi
X3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZUZvcndh
cmQiKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+
bV93ZWJWaWV3LCAiTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIik7CiAgICAgdHlw
aW5nQXR0cmlidXRlcyA9IHRlc3QtPndhaXRVbnRpbFR5cGluZ0F0dHJpYnV0ZXNDaGFuZ2VkKCk7
Ci0gICAgZ19hc3NlcnQodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FU
VFJJQlVURV9CT0xEKTsKLSAgICBnX2Fzc2VydCghKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRf
RURJVE9SX1RZUElOR19BVFRSSUJVVEVfSVRBTElDKSk7Ci0gICAgZ19hc3NlcnQoISh0eXBpbmdB
dHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1VOREVSTElORSkpOwot
ICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FU
VFJJQlVURV9TVFJJS0VUSFJPVUdIKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0eXBpbmdBdHRyaWJ1
dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0JPTEQpOworICAgIGdfYXNzZXJ0
X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVf
SVRBTElDKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VE
SVRPUl9UWVBJTkdfQVRUUklCVVRFX1VOREVSTElORSk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlw
aW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9TVFJJS0VUSFJP
VUdIKTsKIAogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0
LT5tX3dlYlZpZXcsICJNb3ZlRm9yd2FyZCIpOwogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRl
X2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJNb3ZlRm9yd2FyZCIpOwogICAgIHdl
YmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJN
b3ZlV29yZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iKTsKICAgICB0eXBpbmdBdHRyaWJ1dGVz
ID0gdGVzdC0+d2FpdFVudGlsVHlwaW5nQXR0cmlidXRlc0NoYW5nZWQoKTsKLSAgICBnX2Fzc2Vy
dCghKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfQk9M
RCkpOwotICAgIGdfYXNzZXJ0KHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElO
R19BVFRSSUJVVEVfSVRBTElDKTsKLSAgICBnX2Fzc2VydCghKHR5cGluZ0F0dHJpYnV0ZXMgJiBX
RUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfVU5ERVJMSU5FKSk7Ci0gICAgZ19hc3NlcnQo
ISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1NUUklL
RVRIUk9VR0gpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lU
X0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0JPTEQpOworICAgIGdfYXNzZXJ0X3RydWUodHlwaW5n
QXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9JVEFMSUMpOworICAg
IGdfYXNzZXJ0X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19B
VFRSSUJVVEVfVU5ERVJMSU5FKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0eXBpbmdBdHRyaWJ1dGVz
ICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1NUUklLRVRIUk9VR0gpOwogCiAgICAg
d2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywg
Ik1vdmVGb3J3YXJkIik7CiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21t
YW5kKHRlc3QtPm1fd2ViVmlldywgIk1vdmVGb3J3YXJkIik7CiAgICAgd2Via2l0X3dlYl92aWV3
X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywgIk1vdmVXb3JkRm9yd2Fy
ZEFuZE1vZGlmeVNlbGVjdGlvbiIpOwogICAgIHR5cGluZ0F0dHJpYnV0ZXMgPSB0ZXN0LT53YWl0
VW50aWxUeXBpbmdBdHRyaWJ1dGVzQ2hhbmdlZCgpOwotICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0
cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9CT0xEKSk7Ci0gICAgZ19h
c3NlcnQoISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRF
X0lUQUxJQykpOwotICAgIGdfYXNzZXJ0KHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9S
X1RZUElOR19BVFRSSUJVVEVfVU5ERVJMSU5FKTsKLSAgICBnX2Fzc2VydCghKHR5cGluZ0F0dHJp
YnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfU1RSSUtFVEhST1VHSCkpOwor
ICAgIGdfYXNzZXJ0X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElO
R19BVFRSSUJVVEVfQk9MRCk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRlcyAm
IFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9JVEFMSUMpOworICAgIGdfYXNzZXJ0X3Ry
dWUodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9VTkRF
UkxJTkUpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJ
VE9SX1RZUElOR19BVFRSSUJVVEVfU1RSSUtFVEhST1VHSCk7CiAKICAgICB3ZWJraXRfd2ViX3Zp
ZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZUZvcndhcmQi
KTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93
ZWJWaWV3LCAiTW92ZUZvcndhcmQiKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0
aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2Vs
ZWN0aW9uIik7CiAgICAgdHlwaW5nQXR0cmlidXRlcyA9IHRlc3QtPndhaXRVbnRpbFR5cGluZ0F0
dHJpYnV0ZXNDaGFuZ2VkKCk7Ci0gICAgZ19hc3NlcnQoISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VC
S0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0JPTEQpKTsKLSAgICBnX2Fzc2VydCghKHR5cGlu
Z0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfSVRBTElDKSk7Ci0g
ICAgZ19hc3NlcnQoISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRU
UklCVVRFX1VOREVSTElORSkpOwotICAgIGdfYXNzZXJ0KHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJL
SVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfU1RSSUtFVEhST1VHSCk7CisgICAgZ19hc3NlcnRf
ZmFsc2UodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9C
T0xEKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRP
Ul9UWVBJTkdfQVRUUklCVVRFX0lUQUxJQyk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0
cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9VTkRFUkxJTkUpOworICAg
IGdfYXNzZXJ0X3RydWUodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FU
VFJJQlVURV9TVFJJS0VUSFJPVUdIKTsKIAogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2Vk
aXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJNb3ZlRm9yd2FyZCIpOwogICAgIHdlYmtp
dF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJNb3Zl
Rm9yd2FyZCIpOwogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0
ZXN0LT5tX3dlYlZpZXcsICJNb3ZlV29yZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iKTsKICAg
ICB0eXBpbmdBdHRyaWJ1dGVzID0gdGVzdC0+d2FpdFVudGlsVHlwaW5nQXR0cmlidXRlc0NoYW5n
ZWQoKTsKLSAgICBnX2Fzc2VydCh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJ
TkdfQVRUUklCVVRFX0JPTEQpOwotICAgIGdfYXNzZXJ0KHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJL
SVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfSVRBTElDKTsKLSAgICBnX2Fzc2VydCghKHR5cGlu
Z0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfVU5ERVJMSU5FKSk7
Ci0gICAgZ19hc3NlcnQoISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdf
QVRUUklCVVRFX1NUUklLRVRIUk9VR0gpKTsKKyAgICBnX2Fzc2VydF90cnVlKHR5cGluZ0F0dHJp
YnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfQk9MRCk7CisgICAgZ19hc3Nl
cnRfdHJ1ZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRF
X0lUQUxJQyk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9F
RElUT1JfVFlQSU5HX0FUVFJJQlVURV9VTkRFUkxJTkUpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHR5
cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfU1RSSUtFVEhS
T1VHSCk7CiAKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVz
dC0+bV93ZWJWaWV3LCAiU2VsZWN0QWxsIik7CiAgICAgdHlwaW5nQXR0cmlidXRlcyA9IHRlc3Qt
PndhaXRVbnRpbFR5cGluZ0F0dHJpYnV0ZXNDaGFuZ2VkKCk7CkBAIC00NTEsOCArNDUxLDggQEAg
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JJbnNlcnRJbWFnZShFZGl0b3JUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29t
bWFuZF93aXRoX2FyZ3VtZW50KHRlc3QtPm1fd2ViVmlldywgV0VCS0lUX0VESVRJTkdfQ09NTUFO
RF9JTlNFUlRfSU1BR0UsIGltYWdlVVJJLmdldCgpKTsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJv
cj4gZXJyb3I7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9
IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ0lNRycpWzBdLnNyYyIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19h
c3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVycm9yKTsKKyAgICBnX2Fz
c2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVy
cm9yLmdldCgpKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc3VsdFN0cmluZyhXZWJWaWV3VGVz
dDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19h
c3NlcnRfY21wc3RyKHJlc3VsdFN0cmluZy5nZXQoKSwgPT0sIGltYWdlVVJJLmdldCgpKTsKIH0K
QEAgLTQ2OCwxMyArNDY4LDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RWRpdG9yQ3JlYXRl
TGluayhFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHdlYmtpdF93ZWJfdmll
d19leGVjdXRlX2VkaXRpbmdfY29tbWFuZF93aXRoX2FyZ3VtZW50KHRlc3QtPm1fd2ViVmlldywg
V0VCS0lUX0VESVRJTkdfQ09NTUFORF9DUkVBVEVfTElOSywgd2Via2l0R1RLVVJMKTsKICAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCog
amF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hl
ZCgiZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ0EnKVswXS5ocmVmOyIsICZlcnJvci5v
dXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQo
IWVycm9yKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdf
YXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc3Vs
dFN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0
UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHJlc3VsdFN0cmluZy5nZXQoKSwgPT0sIHdl
YmtpdEdUS1VSTCk7CiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRB
bmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ0EnKVsw
XS5pbm5lclRleHQ7IiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0
UmVzdWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3IpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2
YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwogICAg
IHJlc3VsdFN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmlu
ZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHJlc3VsdFN0cmluZy5n
ZXQoKSwgPT0sICJ3ZWJraXRndGsub3JnIik7CiAKQEAgLTQ4MiwxMyArNDgyLDEzIEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJWaWV3RWRpdG9yQ3JlYXRlTGluayhFZGl0b3JUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0
ZXN0LT5tX3dlYlZpZXcsICJNb3ZlVG9FbmRPZkxpbmUiKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdf
ZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmRfd2l0aF9hcmd1bWVudCh0ZXN0LT5tX3dlYlZpZXcsIFdF
QktJVF9FRElUSU5HX0NPTU1BTkRfQ1JFQVRFX0xJTkssIHdlYmtpdEdUS1VSTCk7CiAgICAgamF2
YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgi
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ0EnKVsxXS5ocmVmOyIsICZlcnJvci5vdXRQ
dHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVy
cm9yKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNz
ZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKICAgICByZXN1bHRTdHJpbmcucmVzZXQoV2ViVmll
d1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAg
IGdfYXNzZXJ0X2NtcHN0cihyZXN1bHRTdHJpbmcuZ2V0KCksID09LCB3ZWJraXRHVEtVUkwpOwog
ICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmlu
aXNoZWQoImRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdBJylbMV0uaW5uZXJUZXh0OyIs
ICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAg
Z19hc3NlcnQoIWVycm9yKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQp
OworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKICAgICByZXN1bHRTdHJpbmcu
cmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJl
c3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihyZXN1bHRTdHJpbmcuZ2V0KCksID09LCB3ZWJr
aXRHVEtVUkwpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktp
dEdMaWIvTG9hZFRyYWNraW5nVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNwcAppbmRleCBlNmEzNDgyZDNlOTFkNzViOWVkODdk
MjFmMmE4Yzc1YzM5NjYzOTAxLi4yZGRkZWNhMzYyZTliMjI4MjQ3NmY5OTVkMzI2NzcxYjVhODg1
MjBlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2Fk
VHJhY2tpbmdUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9Mb2FkVHJhY2tpbmdUZXN0LmNwcApAQCAtMjQsMzggKzI0LDM4IEBAIHN0YXRpYyB2b2lkIGxv
YWRDaGFuZ2VkQ2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50
IGxvYWRFdmVuCiB7CiAgICAgc3dpdGNoIChsb2FkRXZlbnQpIHsKICAgICBjYXNlIFdFQktJVF9M
T0FEX1NUQVJURUQ6Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5n
KHdlYlZpZXcpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9h
ZGluZyh3ZWJWaWV3KSk7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVS
SS5kYXRhKCksID09LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSk7CiAgICAgICAg
IHRlc3QtPnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBXRUJLSVRfTE9BRF9SRURJUkVDVEVEOgotICAgICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3Zp
ZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dl
Yl92aWV3X2lzX2xvYWRpbmcod2ViVmlldykpOwogICAgICAgICB0ZXN0LT5tX2FjdGl2ZVVSSSA9
IHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpOwogICAgICAgICBpZiAoIXRlc3QtPm1f
cmVkaXJlY3RVUkkuaXNOdWxsKCkpCiAgICAgICAgICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+
bV9yZWRpcmVjdFVSSS5kYXRhKCksID09LCB0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRhKCkpOwogICAg
ICAgICB0ZXN0LT5wcm92aXNpb25hbExvYWRSZWNlaXZlZFNlcnZlclJlZGlyZWN0KCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgV0VCS0lUX0xPQURfQ09NTUlUVEVEOiB7Ci0gICAgICAgIGdf
YXNzZXJ0KHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHdlYlZpZXcpKTsKKyAgICAgICAgZ19h
c3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSk7CiAgICAgICAg
IHRlc3QtPm1fYWN0aXZlVVJJID0gd2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldyk7CiAK
ICAgICAgICAgLy8gQ2hlY2sgdGhhdCBvbiBjb21taXR0ZWQgd2UgYWx3YXlzIGhhdmUgYSBtYWlu
IHJlc291cmNlIHdpdGggYSByZXNwb25zZS4KICAgICAgICAgV2ViS2l0V2ViUmVzb3VyY2UqIHJl
c291cmNlID0gd2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jlc291cmNlKHdlYlZpZXcpOwotICAg
ICAgICBnX2Fzc2VydChyZXNvdXJjZSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfcmVz
b3VyY2VfZ2V0X3Jlc3BvbnNlKHJlc291cmNlKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwo
cmVzb3VyY2UpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKHdlYmtpdF93ZWJfcmVzb3VyY2Vf
Z2V0X3Jlc3BvbnNlKHJlc291cmNlKSk7CiAKICAgICAgICAgdGVzdC0+bG9hZENvbW1pdHRlZCgp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBXRUJLSVRfTE9BRF9GSU5JU0hFRDoK
ICAgICAgICAgaWYgKCF0ZXN0LT5tX2xvYWRGYWlsZWQpIHsKLSAgICAgICAgICAgIGdfYXNzZXJ0
KCF3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSk7CisgICAgICAgICAgICBnX2Fz
c2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSk7CiAgICAgICAg
ICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9hY3RpdmVVUkkuZGF0YSgpLCA9PSwgd2Via2l0
X3dlYl92aWV3X2dldF91cmkod2ViVmlldykpOwogICAgICAgICB9IGVsc2UgaWYgKCFnX2Vycm9y
X21hdGNoZXModGVzdC0+bV9lcnJvci5nZXQoKSwgV0VCS0lUX05FVFdPUktfRVJST1IsIFdFQktJ
VF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCkpIHsKICAgICAgICAgICAgIC8vIFdoZW4gYSBuZXcg
bG9hZCBpcyBzdGFydGVkIGJlZm9yZSB0aGUgcHJldmlvdXMgb25lIGhhcyBmaW5pc2hlZCwgd2Ug
cmVjZWl2ZSB0aGUgbG9hZC1maW5pc2hlZCBzaWduYWwKICAgICAgICAgICAgIC8vIG9mIHRoZSBv
bmdvaW5nIGxvYWQgd2hpbGUgd2UgYWxyZWFkeSBoYXZlIGEgcHJvdmlzaW9uYWwgVVJMIGZvciB0
aGUgbmV3IGxvYWQuIFRoaXMgaXMgdGhlIG9ubHkgY2FzZQogICAgICAgICAgICAgLy8gd2hlcmUg
aXNsb2FkaW5nIGlzIHRydWUgd2hlbiB0aGUgbG9hZCBoYXMgZmluaXNoZWQuCi0gICAgICAgICAg
ICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmlldykpOworICAgICAg
ICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmlldykp
OwogICAgICAgICB9CiAgICAgICAgIHRlc3QtPmxvYWRGaW5pc2hlZCgpOwogICAgICAgICBicmVh
azsKQEAgLTY4LDE0ICs2OCwxNCBAQCBzdGF0aWMgdm9pZCBsb2FkRmFpbGVkQ2FsbGJhY2soV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudAogewogICAgIHRl
c3QtPm1fbG9hZEZhaWxlZCA9IHRydWU7CiAKLSAgICBnX2Fzc2VydChlcnJvcik7CisgICAgZ19h
c3NlcnRfbm9ubnVsbChlcnJvcik7CiAgICAgdGVzdC0+bV9lcnJvci5yZXNldChnX2Vycm9yX2Nv
cHkoZXJyb3IpKTsKIAogICAgIGlmICghZ19lcnJvcl9tYXRjaGVzKGVycm9yLCBXRUJLSVRfTkVU
V09SS19FUlJPUiwgV0VCS0lUX05FVFdPUktfRVJST1JfQ0FOQ0VMTEVEKSkgewogICAgICAgICAv
LyBXaGVuIGEgbmV3IGxvYWQgaXMgc3RhcnRlZCBiZWZvcmUgdGhlIHByZXZpb3VzIG9uZSBoYXMg
ZmluaXNoZWQsIHdlIHJlY2VpdmUgdGhlIGxvYWQtZmFpbGVkIHNpZ25hbAogICAgICAgICAvLyBv
ZiB0aGUgb25nb2luZyBsb2FkIHdoaWxlIHdlIGFscmVhZHkgaGF2ZSBhIHByb3Zpc2lvbmFsIFVS
TCBmb3IgdGhlIG5ldyBsb2FkLiBUaGlzIGlzIHRoZSBvbmx5IGNhc2UKICAgICAgICAgLy8gd2hl
cmUgaXMtbG9hZGluZyBpcyB0cnVlIHdoZW4gdGhlIGxvYWQgaGFzIGZhaWxlZC4KLSAgICAgICAg
Z19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHdlYlZpZXcpKTsKKyAgICAgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmlldykpOwogICAg
IH0KIAogICAgIHN3aXRjaCAobG9hZEV2ZW50KSB7CkBAIC05NSwxMCArOTUsMTAgQEAgc3RhdGlj
IHZvaWQgbG9hZEZhaWxlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExv
YWRFdmVudCBsb2FkRXZlbnQKIHN0YXRpYyBnYm9vbGVhbiBsb2FkRmFpbGVkV2l0aFRMU0Vycm9y
c0NhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkks
IEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUsIEdUbHNDZXJ0aWZpY2F0ZUZsYWdzIHRsc0Vy
cm9ycywgTG9hZFRyYWNraW5nVGVzdCogdGVzdCkKIHsKICAgICB0ZXN0LT5tX2xvYWRGYWlsZWQg
PSB0cnVlOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3
KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmll
dykpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2ZVVSSS5kYXRhKCksID09LCBm
YWlsaW5nVVJJKTsKLSAgICBnX2Fzc2VydChHX0lTX1RMU19DRVJUSUZJQ0FURShjZXJ0aWZpY2F0
ZSkpOwotICAgIGdfYXNzZXJ0KHRsc0Vycm9ycyk7CisgICAgZ19hc3NlcnRfdHJ1ZShHX0lTX1RM
U19DRVJUSUZJQ0FURShjZXJ0aWZpY2F0ZSkpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGxzRXJy
b3JzLCAhPSwgMCk7CiAgICAgcmV0dXJuIHRlc3QtPmxvYWRGYWlsZWRXaXRoVExTRXJyb3JzKGZh
aWxpbmdVUkksIGNlcnRpZmljYXRlLCB0bHNFcnJvcnMpOwogfQogCkBAIC0xMTYsNyArMTE2LDcg
QEAgTG9hZFRyYWNraW5nVGVzdDo6TG9hZFRyYWNraW5nVGVzdCgpCiAgICAgZ19zaWduYWxfY29u
bmVjdChtX3dlYlZpZXcsICJsb2FkLWZhaWxlZC13aXRoLXRscy1lcnJvcnMiLCBHX0NBTExCQUNL
KGxvYWRGYWlsZWRXaXRoVExTRXJyb3JzQ2FsbGJhY2spLCB0aGlzKTsKICAgICBnX3NpZ25hbF9j
b25uZWN0KG1fd2ViVmlldywgIm5vdGlmeTo6ZXN0aW1hdGVkLWxvYWQtcHJvZ3Jlc3MiLCBHX0NB
TExCQUNLKGVzdGltYXRlZFByb2dyZXNzQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7CiAKLSAgICBn
X2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2dldF91cmkobV93ZWJWaWV3KSk7CisgICAgZ19hc3Nl
cnRfbnVsbCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaShtX3dlYlZpZXcpKTsKIH0KIAogTG9hZFRy
YWNraW5nVGVzdDo6fkxvYWRUcmFja2luZ1Rlc3QoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwCmluZGV4IGM3Njk5ZDQ0YzI0Y2FjM2M3NDg1
MDk0ZDhlYTk5ZmMyZDBmZmNjMmQuLmExNTVhNTEwMGE2YmJhZWRmMGFlMWI1Mjc2OWE3Mzg3MThh
MGY1Y2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rl
c3RNYWluLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0
TWFpbi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJHUmVzb3VyY2Uo
dm9pZCkKIHsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNlc1BhdGgoZ19idWlsZF9maWxl
bmFtZShXRUJLSVRfVEVTVF9SRVNPVVJDRVNfRElSLCAid2Via2l0Z2xpYi10ZXN0cy1yZXNvdXJj
ZXMuZ3Jlc291cmNlIiwgbnVsbHB0cikpOwogICAgIEdSZXNvdXJjZSogcmVzb3VyY2UgPSBnX3Jl
c291cmNlX2xvYWQocmVzb3VyY2VzUGF0aC5nZXQoKSwgbnVsbHB0cik7Ci0gICAgZ19hc3NlcnQo
cmVzb3VyY2UpOworICAgIGdfYXNzZXJ0X25vbm51bGwocmVzb3VyY2UpOwogCiAgICAgZ19yZXNv
dXJjZXNfcmVnaXN0ZXIocmVzb3VyY2UpOwogICAgIGdfcmVzb3VyY2VfdW5yZWYocmVzb3VyY2Up
OwpAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgdm9pZCByZWdpc3RlckdSZXNvdXJjZSh2b2lkKQog
c3RhdGljIHZvaWQgcmVtb3ZlTm9uRW1wdHlEaXJlY3RvcnkoY29uc3QgY2hhciogZGlyZWN0b3J5
UGF0aCkKIHsKICAgICBHRGlyKiBkaXJlY3RvcnkgPSBnX2Rpcl9vcGVuKGRpcmVjdG9yeVBhdGgs
IDAsIDApOwotICAgIGdfYXNzZXJ0KGRpcmVjdG9yeSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChk
aXJlY3RvcnkpOwogICAgIGNvbnN0IGNoYXIqIGZpbGVOYW1lOwogICAgIHdoaWxlICgoZmlsZU5h
bWUgPSBnX2Rpcl9yZWFkX25hbWUoZGlyZWN0b3J5KSkpIHsKICAgICAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBmaWxlUGF0aChnX2J1aWxkX2ZpbGVuYW1lKGRpcmVjdG9yeVBhdGgsIGZpbGVOYW1lLCBu
dWxscHRyKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9UZXN0TWFpbi5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1h
aW4uaAppbmRleCAzMTNmMjE3NzFiY2ZiMzJmNDkxZGZiZTU4YWRmNzkyNWMwYjIyNzNmLi44Yjgz
Mjg2NmU4NmQxZmE3YjAyYzUyMmEyOTdmZWRkNmY0OTNhMjA2IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5oCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmgKQEAgLTE5LDYgKzE5LDggQEAKIAog
I3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJUZXN0VXRpbHMuaCIKKwogI2luY2x1ZGUgPGNhaXJv
Lmg+CiAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpA
QCAtNjcsMjcgKzY5LDE1IEBACiAgICAgICAgIGdfdGVzdF9hZGQodGVzdFBhdGguZ2V0KCksIENs
YXNzTmFtZSwgMCwgQ2xhc3NOYW1lOjpzZXRVcCwgdGVzdEZ1bmMsIENsYXNzTmFtZTo6dGVhckRv
d24pOyBcCiAgICAgfQogCi0jZGVmaW5lIEFTU0VSVF9DTVBfQ1NUUklORyhzMSwgY21wLCBzMikg
XAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgQ1N0cmluZyBfX3MxID0gKHMxKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIENTdHJpbmcg
X19zMiA9IChzMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgICAgICBpZiAoZ19zdHJjbXAwKF9fczEuZGF0YSgpLCBfX3MyLmRhdGEoKSkgY21wIDAp
IDsgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBnX2Fz
c2VydGlvbl9tZXNzYWdlX2NtcHN0cihHX0xPR19ET01BSU4sIF9fRklMRV9fLCBfX0xJTkVfXywg
XAotICAgICAgICAgICAgICAgIEdfU1RSRlVOQywgI3MxICIgIiAjY21wICIgIiAjczIsIF9fczEu
ZGF0YSgpLCAjY21wLCBfX3MyLmRhdGEoKSk7IFwKLSAgICAgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSB3
aGlsZSAoMCkKLQotCiBjbGFzcyBUZXN0IHsKIHB1YmxpYzoKICAgICBNQUtFX0dMSUJfVEVTVF9G
SVhUVVJFKFRlc3QpOwogCiAgICAgc3RhdGljIEdSZWZQdHI8V2ViS2l0V2ViVmlldz4gYWRvcHRW
aWV3KGdwb2ludGVyIHZpZXcpCiAgICAgewotICAgICAgICBnX2Fzc2VydChXRUJLSVRfSVNfV0VC
X1ZJRVcodmlldykpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19XRUJfVklFVyh2
aWV3KSk7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICBnX2Fzc2VydChnX29iamVjdF9pc19m
bG9hdGluZyh2aWV3KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoZ19vYmplY3RfaXNfZmxvYXRp
bmcodmlldykpOwogICAgICAgICByZXR1cm4gR1JlZlB0cjxXZWJLaXRXZWJWaWV3PihXRUJLSVRf
V0VCX1ZJRVcodmlldykpOwogI2VsaWYgUExBVEZPUk0oV1BFKQogICAgICAgICByZXR1cm4gYWRv
cHRHUmVmKFdFQktJVF9XRUJfVklFVyh2aWV3KSk7CkBAIC0xMzAsNyArMTIwLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgZ19wcmludCgiICVzKCVwKSIsIGdfdHlwZV9uYW1lX2Zyb21faW5zdGFu
Y2UocmVpbnRlcnByZXRfY2FzdDxHVHlwZUluc3RhbmNlKj4oKml0KSksICppdCk7CiAgICAgICAg
IGdfcHJpbnQoIlxuIik7CiAKLSAgICAgICAgZ19hc3NlcnQobV93YXRjaGVkT2JqZWN0cy5pc0Vt
cHR5KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKG1fd2F0Y2hlZE9iamVjdHMuaXNFbXB0eSgp
KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnMoKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdFV0aWxz
LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0VXRpbHMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yYWYzODRmYmM3MTkwNDgzM2FkNTY4NzM5N2QzODA2OGQyN2ViZDBmCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdFV0aWxz
LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxOCBJZ2Fs
aWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYv
Q29tcGlsZXIuaD4KKworI2RlZmluZSBBU1NFUlRfQ01QX0NTVFJJTkcoczEsIGNtcCwgczIpIFwK
KyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIENTdHJpbmcgX19zMSA9IChzMSk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBDU3RyaW5nIF9f
czIgPSAoczIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgaWYgKGdfc3RyY21wMChfX3MxLmRhdGEoKSwgX19zMi5kYXRhKCkpIGNtcCAwKSA7
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZ19hc3Nl
cnRpb25fbWVzc2FnZV9jbXBzdHIoR19MT0dfRE9NQUlOLCBfX0ZJTEVfXywgX19MSU5FX18sIFwK
KyAgICAgICAgICAgICAgICBHX1NUUkZVTkMsICNzMSAiICIgI2NtcCAiICIgI3MyLCBfX3MxLmRh
dGEoKSwgI2NtcCwgX19zMi5kYXRhKCkpOyBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hp
bGUgKDApCisKKy8vIFJlZGVmaW5lZCB3aXRoIHN0cm9uZ2VyIGNhc3RzLCB0byBtYWtlIHRoaXMg
dXNlYWJsZSBpbiBDKysuCisjdW5kZWYgZ19hc3NlcnRfY21waGV4CisjZGVmaW5lIGdfYXNzZXJ0
X2NtcGhleChuMSwgY21wLCBuMikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYXV0byBfX24xID0gcmVpbnRlcnByZXRfY2Fz
dDxpbnRwdHJfdD4objEpOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGF1dG8gX19u
MiA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KG4yKTsgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBpZiAoX19uMSBjbXAgX19uMikgOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBnX2Fz
c2VydGlvbl9tZXNzYWdlX2NtcG51bShHX0xPR19ET01BSU4sIF9fRklMRV9fLCBfX0xJTkVfXywg
XAorICAgICAgICAgICAgICAgIEdfU1RSRlVOQywgI24xICIgIiAjY21wICIgIiAjbjIsIChsb25n
IGRvdWJsZSkoX19uMSksICNjbXAsIChsb25nIGRvdWJsZSkoX19uMiksICd4Jyk7IFwKKyAgICAg
ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworLy8gUmVkZWZpbmVkIGZvciBudWxscHRy
IHR5cGUgY2hlY2tpbmcuCisjdW5kZWYgZ19hc3NlcnRfbnVsbAorI2RlZmluZSBnX2Fzc2VydF9u
dWxsKGV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIEdfTElLRUxZKChleHByKSA9PSBudWxscHRy
KSA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbHNlIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgIGdfYXNzZXJ0aW9uX21lc3NhZ2UoR19MT0dfRE9NQUlOLCBfX0ZJTEVfXywg
X19MSU5FX18sICAgICAgICBcCisgICAgICAgICAgICAgICAgR19TVFJGVU5DLCAiJyIgI2V4cHIg
Iicgc2hvdWxkIG5vdCBiZSBOVUxMIik7ICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB9IHdoaWxlICgwKQorCisvLyBSZWRlZmluZWQgdG8gc2lsZW5jZSAtV3BvaW50ZXItYXJp
dGgsIGFuZCBmb3IgbnVsbHB0ciB0eXBlIGNoZWNraW5nLgorI3VuZGVmIGdfYXNzZXJ0X25vbm51
bGwKKyNkZWZpbmUgZ19hc3NlcnRfbm9ubnVsbChleHByKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJR05PUkVf
V0FSTklOR1NfQkVHSU4oInBvaW50ZXItYXJpdGgiKSAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgaWYgR19MSUtFTFkoKGV4cHIpICE9IG51bGxwdHIpIDsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZ19h
c3NlcnRpb25fbWVzc2FnZShHX0xPR19ET01BSU4sIF9fRklMRV9fLCBfX0xJTkVfXywgICAgICAg
IFwKKyAgICAgICAgICAgICAgICBHX1NUUkZVTkMsICInIiAjZXhwciAiJyBzaG91bGQgbm90IGJl
IE5VTEwiKTsgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJR05PUkVf
V0FSTklOR1NfRU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB9IHdoaWxlICgwKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGli
L1dlYktpdEdMaWIvV2ViS2l0VGVzdEJ1cy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9XZWJLaXRUZXN0QnVzLmNwcAppbmRleCA4NGRkYzVkZDg5ODk4OTM0Y2IwYTA0
M2RkMjcyNzhlMjQ5NzQyMTRiLi5iYTY0NzZjOGRhMTViYjRiM2I4NDY2NDBhYTM5N2E1NjdkNjQ1
MjViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJL
aXRUZXN0QnVzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9X
ZWJLaXRUZXN0QnVzLmNwcApAQCAtNDgsMTEgKzQ4LDExIEBAIEdEQnVzQ29ubmVjdGlvbiogV2Vi
S2l0VGVzdEJ1czo6Z2V0T3JDcmVhdGVDb25uZWN0aW9uKCkKICAgICBpZiAobV9jb25uZWN0aW9u
KQogICAgICAgICByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOwogCi0gICAgZ19hc3NlcnQoIW1f
YWRkcmVzcy5pc051bGwoKSk7CisgICAgZ19hc3NlcnRfZmFsc2UobV9hZGRyZXNzLmlzTnVsbCgp
KTsKICAgICBtX2Nvbm5lY3Rpb24gPSBhZG9wdEdSZWYoZ19kYnVzX2Nvbm5lY3Rpb25fbmV3X2Zv
cl9hZGRyZXNzX3N5bmMobV9hZGRyZXNzLmRhdGEoKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8R0RC
dXNDb25uZWN0aW9uRmxhZ3M+KEdfREJVU19DT05ORUNUSU9OX0ZMQUdTX0FVVEhFTlRJQ0FUSU9O
X0NMSUVOVCB8IEdfREJVU19DT05ORUNUSU9OX0ZMQUdTX01FU1NBR0VfQlVTX0NPTk5FQ1RJT04p
LAogICAgICAgICBudWxscHRyLCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAgZ19hc3NlcnQobV9j
b25uZWN0aW9uLmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKG1fY29ubmVjdGlvbi5nZXQo
KSk7CiAgICAgcmV0dXJuIG1fY29ubmVjdGlvbi5nZXQoKTsKIH0KIApAQCAtNzYsNiArNzYsNiBA
QCBHREJ1c1Byb3h5KiBXZWJLaXRUZXN0QnVzOjpjcmVhdGVQcm94eShjb25zdCBjaGFyKiBzZXJ2
aWNlTmFtZSwgY29uc3QgY2hhciogb2JqZQogICAgICAgICBpbnRlcmZhY2VOYW1lLAogICAgICAg
ICBudWxscHRyLCAvLyBHQ2FuY2VsbGFibGUKICAgICAgICAgbnVsbHB0cik7Ci0gICAgZ19hc3Nl
cnQocHJveHkpOworICAgIGdfYXNzZXJ0X25vbm51bGwocHJveHkpOwogICAgIHJldHVybiBwcm94
eTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dl
YktpdFRlc3RTZXJ2ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIv
V2ViS2l0VGVzdFNlcnZlci5jcHAKaW5kZXggZmQxNjIzYzlmNmM3ZTk3YWZkYTdkYjhlNzhlMzA4
MGVjNTg4N2E4Yi4uNzgyZmUzOTNjOGY1ODRjZWI1YTAyNzdkZjU2ZTRiMzU4YzFlNDE2ZSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNl
cnZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0
VGVzdFNlcnZlci5jcHAKQEAgLTEwMSw4ICsxMDEsOCBAQCB2b2lkIFdlYktpdFRlc3RTZXJ2ZXI6
OnJlbW92ZVdlYlNvY2tldEhhbmRsZXIoKQogCiBDU3RyaW5nIFdlYktpdFRlc3RTZXJ2ZXI6Omdl
dFdlYlNvY2tldFVSSUZvclBhdGgoY29uc3QgY2hhciogcGF0aCkgY29uc3QKIHsKLSAgICBnX2Fz
c2VydChtX2Jhc2VXZWJTb2NrZXRVUkkpOwotICAgIGdfYXNzZXJ0KHBhdGggJiYgKnBhdGggPT0g
Jy8nKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKG1fYmFzZVdlYlNvY2tldFVSSSk7CisgICAgZ19h
c3NlcnRfdHJ1ZShwYXRoICYmICpwYXRoID09ICcvJyk7CiAgICAgU291cFVSSSogdXJpID0gc291
cF91cmlfbmV3X3dpdGhfYmFzZShtX2Jhc2VXZWJTb2NrZXRVUkksIHBhdGggKyAxKTsgLy8gSWdu
b3JlIHRoZSBsZWFkaW5nIHNsYXNoLgogICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHVyaVN0cmluZyhz
b3VwX3VyaV90b19zdHJpbmcodXJpLCBGQUxTRSkpOwogICAgIHNvdXBfdXJpX2ZyZWUodXJpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdU
ZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0
LmNwcAppbmRleCBlNDIwYzNlMmI0NzM0YTkyOTE2ODdmYzc3Mzk4MGVlY2E1ZTYxZDU0Li5lZmQ5
ZmJmNDU0NDk1NmUyNzJiOWMzNjdmMTg3YTBlOGRlMzc2ZTdhIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCkBAIC00Nyw3ICs0
Nyw3IEBAIFdlYlZpZXdUZXN0Ojp+V2ViVmlld1Rlc3QoKQogCiB2b2lkIFdlYlZpZXdUZXN0Ojpp
bml0aWFsaXplV2ViVmlldygpCiB7Ci0gICAgZ19hc3NlcnQoIW1fd2ViVmlldyk7CisgICAgZ19h
c3NlcnRfbnVsbChtX3dlYlZpZXcpOwogCiAgICAgbV93ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVX
KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywKICNpZiBQTEFURk9STShXUEUpCkBA
IC03Niw3ICs3Niw3IEBAIHZvaWQgV2ViVmlld1Rlc3Q6OmxvYWRVUkkoY29uc3QgY2hhciogdXJp
KQogewogICAgIG1fYWN0aXZlVVJJID0gdXJpOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3Vy
aShtX3dlYlZpZXcsIHVyaSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2xvYWRp
bmcobV93ZWJWaWV3KSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9h
ZGluZyhtX3dlYlZpZXcpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl92aWV3X2dl
dF91cmkobV93ZWJWaWV3KSwgPT0sIG1fYWN0aXZlVVJJLmRhdGEoKSk7CiB9CiAKQEAgLTg3LDcg
Kzg3LDcgQEAgdm9pZCBXZWJWaWV3VGVzdDo6bG9hZEh0bWwoY29uc3QgY2hhciogaHRtbCwgY29u
c3QgY2hhciogYmFzZVVSSSkKICAgICBlbHNlCiAgICAgICAgIG1fYWN0aXZlVVJJID0gYmFzZVVS
STsKICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9odG1sKG1fd2ViVmlldywgaHRtbCwgYmFzZVVS
SSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcobV93ZWJWaWV3KSk7
CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyhtX3dlYlZpZXcp
KTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl92aWV3X2dldF91cmkobV93ZWJWaWV3
KSwgPT0sIG1fYWN0aXZlVVJJLmRhdGEoKSk7CiB9CiAKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBX
ZWJWaWV3VGVzdDo6bG9hZFBsYWluVGV4dChjb25zdCBjaGFyKiBwbGFpblRleHQpCiB7CiAgICAg
bV9hY3RpdmVVUkkgPSAiYWJvdXQ6YmxhbmsiOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3Bs
YWluX3RleHQobV93ZWJWaWV3LCBwbGFpblRleHQpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJf
dmlld19pc19sb2FkaW5nKG1fd2ViVmlldykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dl
Yl92aWV3X2lzX2xvYWRpbmcobV93ZWJWaWV3KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtp
dF93ZWJfdmlld19nZXRfdXJpKG1fd2ViVmlldyksID09LCBtX2FjdGl2ZVVSSS5kYXRhKCkpOwog
fQogCkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBXZWJWaWV3VGVzdDo6bG9hZEJ5dGVzKEdCeXRl
cyogYnl0ZXMsIGNvbnN0IGNoYXIqIG1pbWVUeXBlLCBjb25zdCBjaGFyKiBlbmMKICAgICBlbHNl
CiAgICAgICAgIG1fYWN0aXZlVVJJID0gYmFzZVVSSTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9h
ZF9ieXRlcyhtX3dlYlZpZXcsIGJ5dGVzLCBtaW1lVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkkpOwot
ICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKG1fd2ViVmlldykpOworICAg
IGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcobV93ZWJWaWV3KSk7CiAg
ICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKG1fd2ViVmlldyksID09
LCBtX2FjdGl2ZVVSSS5kYXRhKCkpOwogfQogCkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBXZWJW
aWV3VGVzdDo6bG9hZFJlcXVlc3QoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBt
X2FjdGl2ZVVSSSA9IHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpOwogICAgIHdl
YmtpdF93ZWJfdmlld19sb2FkX3JlcXVlc3QobV93ZWJWaWV3LCByZXF1ZXN0KTsKLSAgICBnX2Fz
c2VydCh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyhtX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKG1fd2ViVmlldykpOwogICAgIGdfYXNz
ZXJ0X2NtcHN0cih3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaShtX3dlYlZpZXcpLCA9PSwgbV9hY3Rp
dmVVUkkuZGF0YSgpKTsKIH0KIApAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgV2ViVmlld1Rlc3Q6
OmxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0IGNoYXIqIGh0bWwsIGNvbnN0IGNoYXIqIGNvbnRlbnRV
UkksIGNvCiB7CiAgICAgbV9hY3RpdmVVUkkgPSBjb250ZW50VVJJOwogICAgIHdlYmtpdF93ZWJf
dmlld19sb2FkX2FsdGVybmF0ZV9odG1sKG1fd2ViVmlldywgaHRtbCwgY29udGVudFVSSSwgYmFz
ZVVSSSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcobV93ZWJWaWV3
KSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyhtX3dlYlZp
ZXcpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl92aWV3X2dldF91cmkobV93ZWJW
aWV3KSwgPT0sIG1fYWN0aXZlVVJJLmRhdGEoKSk7CiB9CiAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2
b2lkIFdlYlZpZXdUZXN0Ojpnb0JhY2soKQogICAgIC8vIENhbGwgZ29fYmFjayBldmVuIHdoZW4g
Y2FuX2dvX2JhY2sgcmV0dXJucyBGQUxTRSB0byBjaGVjayBub3RoaW5nIGhhcHBlbnMuCiAgICAg
d2Via2l0X3dlYl92aWV3X2dvX2JhY2sobV93ZWJWaWV3KTsKICAgICBpZiAoY2FuR29CYWNrKSB7
Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKG1fd2ViVmlldykp
OworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKG1fd2Vi
VmlldykpOwogICAgICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl92aWV3X2dldF91cmko
bV93ZWJWaWV3KSwgPT0sIG1fYWN0aXZlVVJJLmRhdGEoKSk7CiAgICAgfQogfQpAQCAtMTU1LDcg
KzE1NSw3IEBAIHZvaWQgV2ViVmlld1Rlc3Q6OmdvRm9yd2FyZCgpCiAgICAgLy8gQ2FsbCBnb19m
b3J3YXJkIGV2ZW4gd2hlbiBjYW5fZ29fZm9yd2FyZCByZXR1cm5zIEZBTFNFIHRvIGNoZWNrIG5v
dGhpbmcgaGFwcGVucy4KICAgICB3ZWJraXRfd2ViX3ZpZXdfZ29fZm9yd2FyZChtX3dlYlZpZXcp
OwogICAgIGlmIChjYW5Hb0ZvcndhcmQpIHsKLSAgICAgICAgZ19hc3NlcnQod2Via2l0X3dlYl92
aWV3X2lzX2xvYWRpbmcobV93ZWJWaWV3KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0
X3dlYl92aWV3X2lzX2xvYWRpbmcobV93ZWJWaWV3KSk7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0
cih3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaShtX3dlYlZpZXcpLCA9PSwgbV9hY3RpdmVVUkkuZGF0
YSgpKTsKICAgICB9CiB9CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBXZWJWaWV3VGVzdDo6Z29U
b0JhY2tGb3J3YXJkTGlzdEl0ZW0oV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSkKIHsK
ICAgICBtX2FjdGl2ZVVSSSA9IHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9pdGVtX2dldF9vcmln
aW5hbF91cmkoaXRlbSk7CiAgICAgd2Via2l0X3dlYl92aWV3X2dvX3RvX2JhY2tfZm9yd2FyZF9s
aXN0X2l0ZW0obV93ZWJWaWV3LCBpdGVtKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdf
aXNfbG9hZGluZyhtX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmll
d19pc19sb2FkaW5nKG1fd2ViVmlldykpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3VyaShtX3dlYlZpZXcpLCA9PSwgbV9hY3RpdmVVUkkuZGF0YSgpKTsKIH0KIApA
QCAtMjM4LDcgKzIzOCw3IEBAIHN0YXRpYyB2b2lkIHJlc291cmNlR2V0RGF0YUNhbGxiYWNrKEdP
YmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2luCiAgICAgc2l6ZV90IGRh
dGFTaXplOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICB1bnNpZ25lZCBj
aGFyKiBkYXRhID0gd2Via2l0X3dlYl9yZXNvdXJjZV9nZXRfZGF0YV9maW5pc2goV0VCS0lUX1dF
Ql9SRVNPVVJDRShvYmplY3QpLCByZXN1bHQsICZkYXRhU2l6ZSwgJmVycm9yLm91dFB0cigpKTsK
LSAgICBnX2Fzc2VydChkYXRhKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGEpOwogCiAgICAg
V2ViVmlld1Rlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxXZWJWaWV3VGVzdCo+KHVzZXJEYXRhKTsK
ICAgICB0ZXN0LT5tX3Jlc291cmNlRGF0YS5yZXNldChyZWludGVycHJldF9jYXN0PGNoYXIqPihk
YXRhKSk7CkBAIC0yNTEsNyArMjUxLDcgQEAgY29uc3QgY2hhciogV2ViVmlld1Rlc3Q6Om1haW5S
ZXNvdXJjZURhdGEoc2l6ZV90JiBtYWluUmVzb3VyY2VEYXRhU2l6ZSkKICAgICBtX3Jlc291cmNl
RGF0YVNpemUgPSAwOwogICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CiAgICAgV2ViS2l0V2Vi
UmVzb3VyY2UqIHJlc291cmNlID0gd2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jlc291cmNlKG1f
d2ViVmlldyk7Ci0gICAgZ19hc3NlcnQocmVzb3VyY2UpOworICAgIGdfYXNzZXJ0X25vbm51bGwo
cmVzb3VyY2UpOwogCiAgICAgd2Via2l0X3dlYl9yZXNvdXJjZV9nZXRfZGF0YShyZXNvdXJjZSwg
MCwgcmVzb3VyY2VHZXREYXRhQ2FsbGJhY2ssIHRoaXMpOwogICAgIGdfbWFpbl9sb29wX3J1biht
X21haW5Mb29wKTsKQEAgLTMxNywzOCArMzE3LDM4IEBAIFdlYktpdEphdmFzY3JpcHRSZXN1bHQq
IFdlYlZpZXdUZXN0OjpydW5KYXZhU2NyaXB0SW5Xb3JsZEFuZFdhaXRVbnRpbEZpbmlzaGVkKGNv
CiBjaGFyKiBXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhXZWJLaXRKYXZh
c2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0KQogewogICAgIGF1dG8qIHZhbHVlID0gd2Vi
a2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KTsKLSAg
ICBnX2Fzc2VydChKU0NfSVNfVkFMVUUodmFsdWUpKTsKLSAgICBnX2Fzc2VydChqc2NfdmFsdWVf
aXNfc3RyaW5nKHZhbHVlKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShKU0NfSVNfVkFMVUUodmFsdWUp
KTsKKyAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9pc19zdHJpbmcodmFsdWUpKTsKICAgICBy
ZXR1cm4ganNjX3ZhbHVlX3RvX3N0cmluZyh2YWx1ZSk7CiB9CiAKIGRvdWJsZSBXZWJWaWV3VGVz
dDo6amF2YXNjcmlwdFJlc3VsdFRvTnVtYmVyKFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFz
Y3JpcHRSZXN1bHQpCiB7CiAgICAgYXV0byogdmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1
bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KEpTQ19JU19W
QUxVRSh2YWx1ZSkpOwotICAgIGdfYXNzZXJ0KGpzY192YWx1ZV9pc19udW1iZXIodmFsdWUpKTsK
KyAgICBnX2Fzc2VydF90cnVlKEpTQ19JU19WQUxVRSh2YWx1ZSkpOworICAgIGdfYXNzZXJ0X3Ry
dWUoanNjX3ZhbHVlX2lzX251bWJlcih2YWx1ZSkpOwogICAgIHJldHVybiBqc2NfdmFsdWVfdG9f
ZG91YmxlKHZhbHVlKTsKIH0KIAogYm9vbCBXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRv
Qm9vbGVhbihXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0KQogewogICAg
IGF1dG8qIHZhbHVlID0gd2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZh
c2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydChKU0NfSVNfVkFMVUUodmFsdWUpKTsKLSAgICBn
X2Fzc2VydChqc2NfdmFsdWVfaXNfYm9vbGVhbih2YWx1ZSkpOworICAgIGdfYXNzZXJ0X3RydWUo
SlNDX0lTX1ZBTFVFKHZhbHVlKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfYm9v
bGVhbih2YWx1ZSkpOwogICAgIHJldHVybiBqc2NfdmFsdWVfdG9fYm9vbGVhbih2YWx1ZSk7CiB9
CiAKIGJvb2wgV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRJc051bGwoV2ViS2l0SmF2YXNj
cmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkKIHsKICAgICBhdXRvKiB2YWx1ZSA9IHdlYmtp
dF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAg
Z19hc3NlcnQoSlNDX0lTX1ZBTFVFKHZhbHVlKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShKU0NfSVNf
VkFMVUUodmFsdWUpKTsKICAgICByZXR1cm4ganNjX3ZhbHVlX2lzX251bGwodmFsdWUpOwogfQog
CiBib29sIFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0SXNVbmRlZmluZWQoV2ViS2l0SmF2
YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCkKIHsKICAgICBhdXRvKiB2YWx1ZSA9IHdl
YmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7Ci0g
ICAgZ19hc3NlcnQoSlNDX0lTX1ZBTFVFKHZhbHVlKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShKU0Nf
SVNfVkFMVUUodmFsdWUpKTsKICAgICByZXR1cm4ganNjX3ZhbHVlX2lzX3VuZGVmaW5lZCh2YWx1
ZSk7CiB9CiAKQEAgLTM1Nyw3ICszNTcsNyBAQCBzdGF0aWMgdm9pZCBvblNuYXBzaG90UmVhZHko
V2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIEdBc3luY1Jlc3VsdCogcmVzLCBXZWJWaWV3VAogewog
ICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICB0ZXN0LT5tX3N1cmZhY2UgPSB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90X2ZpbmlzaCh3ZWJfdmlldywgcmVzLCAmZXJyb3Iu
b3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3N1cmZhY2UgfHwgIWVycm9yLmdldCgp
KTsKKyAgICBnX2Fzc2VydF90cnVlKCF0ZXN0LT5tX3N1cmZhY2UgfHwgIWVycm9yLmdldCgpKTsK
ICAgICBpZiAoZXJyb3IpCiAgICAgICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJL
SVRfU05BUFNIT1RfRVJST1IsIFdFQktJVF9TTkFQU0hPVF9FUlJPUl9GQUlMRURfVE9fQ1JFQVRF
KTsKICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKQEAgLTM4OCw3ICszODgsNyBAQCBib29sIFdl
YlZpZXdUZXN0OjpydW5XZWJQcm9jZXNzVGVzdChjb25zdCBjaGFyKiBzdWl0ZU5hbWUsIGNvbnN0
IGNoYXIqIHRlc3ROYW1lLAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gc2NyaXB0KGdfc3RyZHVwX3By
aW50ZigiV2ViUHJvY2Vzc1Rlc3RSdW5uZXIucnVuVGVzdCgnJXMvJXMnKTsiLCBzdWl0ZU5hbWUs
IHRlc3ROYW1lKSk7CiAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIFdlYktp
dEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSBydW5KYXZhU2NyaXB0QW5kV2Fp
dFVudGlsRmluaXNoZWQoc2NyaXB0LmdldCgpLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNz
ZXJ0KCFlcnJvcik7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwogICAgIGxv
YWRVUkkoImFib3V0OmJsYW5rIik7CiAgICAgd2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAg
cmV0dXJuIGphdmFzY3JpcHRSZXN1bHRUb0Jvb2xlYW4oamF2YXNjcmlwdFJlc3VsdCk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9ndGsvV2ViVmlld1Rl
c3RHdGsuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dlYlZp
ZXdUZXN0R3RrLmNwcAppbmRleCBhMTM0MWE2ODQ4ZGYxZWNhMjc4Y2E4ZDY0MmQ3ZDZhODdhNDhj
M2E0Li5iYmE4NGIwMmQ5NjZkYTg2MmJhNWM0N2UwNDNlODFlNDQ2YWNiOWRiIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9ndGsvV2ViVmlld1Rlc3RHdGsu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL2d0ay9XZWJWaWV3
VGVzdEd0ay5jcHAKQEAgLTMyLDggKzMyLDggQEAgdm9pZCBXZWJWaWV3VGVzdDo6cGxhdGZvcm1E
ZXN0cm95KCkKIAogdm9pZCBXZWJWaWV3VGVzdDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViVmlldygp
CiB7Ci0gICAgZ19hc3NlcnQoV0VCS0lUX1dFQl9WSUVXKG1fd2ViVmlldykpOwotICAgIGdfYXNz
ZXJ0KGdfb2JqZWN0X2lzX2Zsb2F0aW5nKG1fd2ViVmlldykpOworICAgIGdfYXNzZXJ0X3RydWUo
V0VCS0lUX1dFQl9WSUVXKG1fd2ViVmlldykpOworICAgIGdfYXNzZXJ0X3RydWUoZ19vYmplY3Rf
aXNfZmxvYXRpbmcobV93ZWJWaWV3KSk7CiAgICAgZ19vYmplY3RfcmVmX3NpbmsobV93ZWJWaWV3
KTsKIH0KIApAQCAtNzAsNyArNzAsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gcGFyZW50V2luZG93TWFw
cGVkKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudCosIFdlYlZpZXdUZXN0KiB0ZQogCiB2b2lk
IFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3coR3RrV2luZG93VHlwZSB3aW5kb3dUeXBlKQogewot
ICAgIGdfYXNzZXJ0KCFtX3BhcmVudFdpbmRvdyk7CisgICAgZ19hc3NlcnRfbnVsbChtX3BhcmVu
dFdpbmRvdyk7CiAgICAgbV9wYXJlbnRXaW5kb3cgPSBndGtfd2luZG93X25ldyh3aW5kb3dUeXBl
KTsKICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKG1fcGFyZW50V2luZG93KSwg
R1RLX1dJREdFVChtX3dlYlZpZXcpKTsKICAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVCht
X3dlYlZpZXcpKTsKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBXZWJWaWV3VGVzdDo6c2hvd0luV2lu
ZG93KEd0a1dpbmRvd1R5cGUgd2luZG93VHlwZSkKIAogdm9pZCBXZWJWaWV3VGVzdDo6c2hvd0lu
V2luZG93QW5kV2FpdFVudGlsTWFwcGVkKEd0a1dpbmRvd1R5cGUgd2luZG93VHlwZSwgaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0KQogewotICAgIGdfYXNzZXJ0KCFtX3BhcmVudFdpbmRvdyk7CisgICAg
Z19hc3NlcnRfbnVsbChtX3BhcmVudFdpbmRvdyk7CiAgICAgbV9wYXJlbnRXaW5kb3cgPSBndGtf
d2luZG93X25ldyh3aW5kb3dUeXBlKTsKICAgICBpZiAod2lkdGggJiYgaGVpZ2h0KQogICAgICAg
ICBndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKG1fcGFyZW50V2luZG93KSwgd2lkdGgsIGhl
aWdodCk7CkBAIC05Myw5ICs5Myw5IEBAIHZvaWQgV2ViVmlld1Rlc3Q6OnNob3dJbldpbmRvd0Fu
ZFdhaXRVbnRpbE1hcHBlZChHdGtXaW5kb3dUeXBlIHdpbmRvd1R5cGUsIGludCB3CiAKIHZvaWQg
V2ViVmlld1Rlc3Q6Om1vdXNlTW92ZVRvKGludCB4LCBpbnQgeSwgdW5zaWduZWQgbW91c2VNb2Rp
ZmllcnMpCiB7Ci0gICAgZ19hc3NlcnQobV9wYXJlbnRXaW5kb3cpOworICAgIGdfYXNzZXJ0X25v
bm51bGwobV9wYXJlbnRXaW5kb3cpOwogICAgIEd0a1dpZGdldCogdmlld1dpZGdldCA9IEdUS19X
SURHRVQobV93ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChndGtfd2lkZ2V0X2dldF9yZWFsaXplZCh2
aWV3V2lkZ2V0KSk7CisgICAgZ19hc3NlcnRfdHJ1ZShndGtfd2lkZ2V0X2dldF9yZWFsaXplZCh2
aWV3V2lkZ2V0KSk7CiAKICAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRf
bmV3KEdES19NT1RJT05fTk9USUZZKSk7CiAgICAgZXZlbnQtPm1vdGlvbi54ID0geDsKQEAgLTEy
NCw3ICsxMjQsNyBAQCB2b2lkIFdlYlZpZXdUZXN0OjpjbGlja01vdXNlQnV0dG9uKGludCB4LCBp
bnQgeSwgdW5zaWduZWQgYnV0dG9uLCB1bnNpZ25lZCBtb3VzZQogdm9pZCBXZWJWaWV3VGVzdDo6
ZW1pdFBvcHVwTWVudVNpZ25hbCgpCiB7CiAgICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0ID0gR1RL
X1dJREdFVChtX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KGd0a193aWRnZXRfZ2V0X3JlYWxpemVk
KHZpZXdXaWRnZXQpKTsKKyAgICBnX2Fzc2VydF90cnVlKGd0a193aWRnZXRfZ2V0X3JlYWxpemVk
KHZpZXdXaWRnZXQpKTsKIAogICAgIGdib29sZWFuIGhhbmRsZWQ7CiAgICAgZ19zaWduYWxfZW1p
dF9ieV9uYW1lKHZpZXdXaWRnZXQsICJwb3B1cC1tZW51IiwgJmhhbmRsZWQpOwpAQCAtMTMyLDkg
KzEzMiw5IEBAIHZvaWQgV2ViVmlld1Rlc3Q6OmVtaXRQb3B1cE1lbnVTaWduYWwoKQogCiB2b2lk
IFdlYlZpZXdUZXN0OjprZXlTdHJva2UodW5zaWduZWQga2V5VmFsLCB1bnNpZ25lZCBrZXlNb2Rp
ZmllcnMpCiB7Ci0gICAgZ19hc3NlcnQobV9wYXJlbnRXaW5kb3cpOworICAgIGdfYXNzZXJ0X25v
bm51bGwobV9wYXJlbnRXaW5kb3cpOwogICAgIEd0a1dpZGdldCogdmlld1dpZGdldCA9IEdUS19X
SURHRVQobV93ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChndGtfd2lkZ2V0X2dldF9yZWFsaXplZCh2
aWV3V2lkZ2V0KSk7CisgICAgZ19hc3NlcnRfdHJ1ZShndGtfd2lkZ2V0X2dldF9yZWFsaXplZCh2
aWV3V2lkZ2V0KSk7CiAKICAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRf
bmV3KEdES19LRVlfUFJFU1MpKTsKICAgICBldmVudC0+a2V5LmtleXZhbCA9IGtleVZhbDsKQEAg
LTE1OCw5ICsxNTgsOSBAQCB2b2lkIFdlYlZpZXdUZXN0OjprZXlTdHJva2UodW5zaWduZWQga2V5
VmFsLCB1bnNpZ25lZCBrZXlNb2RpZmllcnMpCiAKIHZvaWQgV2ViVmlld1Rlc3Q6OmRvTW91c2VC
dXR0b25FdmVudChHZGtFdmVudFR5cGUgZXZlbnRUeXBlLCBpbnQgeCwgaW50IHksIHVuc2lnbmVk
IGJ1dHRvbiwgdW5zaWduZWQgbW91c2VNb2RpZmllcnMpCiB7Ci0gICAgZ19hc3NlcnQobV9wYXJl
bnRXaW5kb3cpOworICAgIGdfYXNzZXJ0X25vbm51bGwobV9wYXJlbnRXaW5kb3cpOwogICAgIEd0
a1dpZGdldCogdmlld1dpZGdldCA9IEdUS19XSURHRVQobV93ZWJWaWV3KTsKLSAgICBnX2Fzc2Vy
dChndGtfd2lkZ2V0X2dldF9yZWFsaXplZCh2aWV3V2lkZ2V0KSk7CisgICAgZ19hc3NlcnRfdHJ1
ZShndGtfd2lkZ2V0X2dldF9yZWFsaXplZCh2aWV3V2lkZ2V0KSk7CiAKICAgICBHVW5pcXVlUHRy
PEdka0V2ZW50PiBldmVudChnZGtfZXZlbnRfbmV3KGV2ZW50VHlwZSkpOwogICAgIGV2ZW50LT5i
dXR0b24ud2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KHZpZXdXaWRnZXQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358207</attachid>
            <date>2019-01-02 14:35:15 -0800</date>
            <delta_ts>2019-01-09 00:58:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192841-20190102163513.patch</filename>
            <type>text/plain</type>
            <size>471205</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NTc4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2VmMzU2ZWJlMDg1YzY5Zjg4NTgwNzk4YTFhYjU5NzAy
YjJkYWUwYS4uNmVjN2JjNzE4NWYwOTUwZTBlNTAyOTAzMDE1ZWIyMzk2MjIzOTdkYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1
MCBAQAorMjAxOS0wMS0wMiAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5j
b20+CisKKyAgICAgICAgW1dQRV1bR1RLXSBQdXJnZSB1c2Ugb2YgZ19hc3NlcnQoKSB1bmRlciBU
ZXN0V2ViS2l0QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTI4NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGVyZSBhcmUgc2VwYXJhdGUgZ19hc3NlcnRfKigpIG1hY3JvcyBmb3IgdXNlIGluIHRl
c3RzLCB3aGljaCB3ZSB1c2UgaW5jb25zaXN0ZW50bHkKKyAgICAgICAgY3VycmVudGx5LiBVc2Ug
dGhlbSBhbHdheXMuIFdlJ2xsIGdldCBuaWNlciBlcnJvciBtZXNzYWdlcyBub3cgd2hlbiB0ZXN0
cyBmYWlsLCBhbmQgdGhlCisgICAgICAgIGFzc2VydGlvbnMgd2lsbCBub3cgcnVuIGR1cmluZyB0
ZXN0cyBldmVuIGlmIEdfRElTQUJMRV9BU1NFUlQgaXMgdXNlZCB3aGVuIGJ1aWxkaW5nLgorCisg
ICAgICAgIE5vdGUgdGhhdCB0aGUgZG9jdW1lbnRhdGlvbiBvZiBnX2Fzc2VydCgpIHNheXMgdGhh
dCBpdCBpcyBub3QgdG8gYmUgdXNlZCB3aGVuIHdyaXRpbmcgdGVzdHMuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5jcHA6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0VkaXRvclRlc3QuY3BwOgorICAg
ICAgICAoV2ViS2l0V2ViRWRpdG9yVGVzdDo6dGVzdFNlbGVjdGlvbkNoYW5nZWQpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwOgorICAgICAg
ICAoV2ViS2l0RnJhbWVUZXN0Ojp0ZXN0TWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdEZyYW1l
VGVzdDo6dGVzdFVSSSk6CisgICAgICAgIChXZWJLaXRGcmFtZVRlc3Q6OnRlc3RKYXZhU2NyaXB0
Q29udGV4dCk6CisgICAgICAgIChXZWJLaXRGcmFtZVRlc3Q6OnRlc3RKYXZhU2NyaXB0VmFsdWVz
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRp
Y2F0aW9uLmNwcDoKKyAgICAgICAgKHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25SZXF1ZXN0KToK
KyAgICAgICAgKHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25Mb2FkQ2FuY2VsbGVkKToKKyAgICAg
ICAgKHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25GYWlsdXJlKToKKyAgICAgICAgKHRlc3RXZWJW
aWV3QXV0aGVudGljYXRpb25TdG9yYWdlKToKKyAgICAgICAgKFByb3h5QXV0aGVudGljYXRpb25U
ZXN0OjpQcm94eUF1dGhlbnRpY2F0aW9uVGVzdCk6CisgICAgICAgICh0ZXN0V2ViVmlld0F1dGhl
bnRpY2F0aW9uUHJveHkpOgorICAgICAgICAodGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblByb3h5
SFRUUFMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0
b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAodGVzdEF1dG9tYXRpb25TZXNzaW9uUmVxdWVz
dFNlc3Npb24pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
QmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgKHRlc3RCYWNrRm9yd2FyZExpc3ROYXZpZ2F0
aW9uKToKKyAgICAgICAgKHRlc3RXZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlKToKKyAgICAgICAg
KHRlc3RXZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRlV2l0aEZvcm1EYXRhKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvbnNvbGVNZXNzYWdlLmNwcDoKKyAg
ICAgICAgKENvbnNvbGVNZXNzYWdlVGVzdDo6Y29uc29sZU1lc3NhZ2VSZWNlaXZlZENhbGxiYWNr
KToKKyAgICAgICAgKHRlc3RXZWJLaXRDb25zb2xlTWVzc2FnZUNvbnNvbGVBUEkpOgorICAgICAg
ICAodGVzdFdlYktpdENvbnNvbGVNZXNzYWdlSmF2YVNjcmlwdEV4Y2VwdGlvbik6CisgICAgICAg
ICh0ZXN0V2ViS2l0Q29uc29sZU1lc3NhZ2VOZXR3b3JrRXJyb3IpOgorICAgICAgICAodGVzdFdl
YktpdENvbnNvbGVNZXNzYWdlU2VjdXJpdHlFcnJvcik6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHRlc3RD
b29raWVNYW5hZ2VyQWNjZXB0UG9saWN5KToKKyAgICAgICAgKHRlc3RDb29raWVNYW5hZ2VyQ29v
a2llc0NoYW5nZWQpOgorICAgICAgICAodGVzdENvb2tpZU1hbmFnZXJQZXJzaXN0ZW50U3RvcmFn
ZSk6CisgICAgICAgICh0ZXN0Q29va2llTWFuYWdlclBlcnNpc3RlbnRTdG9yYWdlRGVsZXRlQWxs
KToKKyAgICAgICAgKHRlc3RDb29raWVNYW5hZ2VyRXBoZW1lcmFsKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERPTUVsZW1lbnQuY3BwOgorICAgICAgICAo
dGVzdFdlYktpdERPTUVsZW1lbnRBdXRvRmlsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3REb3dubG9hZHMuY3BwOgorICAgICAgICAoZG93bmxvYWRMb2Nh
bEZpbGVTdWNjZXNzZnVsbHkpOgorICAgICAgICAoY3JlYXRlRmlsZUF0RGVzdGluYXRpb24pOgor
ICAgICAgICAodGVzdERvd25sb2FkT3ZlcndyaXRlRGVzdGluYXRpb25EaXNhbGxvd2VkKToKKyAg
ICAgICAgKHRlc3REb3dubG9hZExvY2FsRmlsZUVycm9yKToKKyAgICAgICAgKHRlc3REb3dubG9h
ZFJlbW90ZUZpbGUpOgorICAgICAgICAodGVzdERvd25sb2FkUmVtb3RlRmlsZUVycm9yKToKKyAg
ICAgICAgKHRlc3RXZWJWaWV3RG93bmxvYWRVUkkpOgorICAgICAgICAodGVzdFBvbGljeVJlc3Bv
bnNlRG93bmxvYWQpOgorICAgICAgICAodGVzdFBvbGljeVJlc3BvbnNlRG93bmxvYWRDYW5jZWwp
OgorICAgICAgICAodGVzdERvd25sb2FkTUlNRVR5cGUpOgorICAgICAgICAoY29udGV4dE1lbnVD
YWxsYmFjayk6CisgICAgICAgICh0ZXN0Q29udGV4dE1lbnVEb3dubG9hZEFjdGlvbnMpOgorICAg
ICAgICAodGVzdEJsb2JEb3dubG9hZCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RFZGl0b3IuY3BwOgorICAgICAgICAodGVzdFdlYktpdFdlYkVkaXRvclNl
bGVjdGlvbkNoYW5nZWQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0RnJhbWUuY3BwOgorICAgICAgICAodGVzdFdlYktpdEZyYW1lTWFpbkZyYW1lKToKKyAg
ICAgICAgKHRlc3RXZWJLaXRGcmFtZVVSSSk6CisgICAgICAgICh0ZXN0V2ViS2l0RnJhbWVKYXZh
U2NyaXB0Q29udGV4dCk6CisgICAgICAgICh0ZXN0V2ViS2l0RnJhbWVKYXZhU2NyaXB0VmFsdWVz
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdExvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChMb2FkU3RvcFRyYWNraW5nVGVzdDo6bG9hZEZhaWxlZCk6Cisg
ICAgICAgICh0ZXN0V2ViVmlld1RpdGxlKToKKyAgICAgICAgKHRlc3RVUklSZXF1ZXN0SFRUUEhl
YWRlcnMpOgorICAgICAgICAodGVzdFVSSVJlcXVlc3RIVFRQTWV0aG9kKToKKyAgICAgICAgKHRl
c3RVUklSZXNwb25zZUhUVFBIZWFkZXJzKToKKyAgICAgICAgKHRlc3RSZWRpcmVjdFRvRGF0YVVS
SSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RNdWx0aXBy
b2Nlc3MuY3BwOgorICAgICAgICAodGVzdFByb2Nlc3NQZXJXZWJWaWV3KToKKyAgICAgICAgKHRl
c3RXZWJQcm9jZXNzTGltaXQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0UmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKHRlc3RXZWJWaWV3UmVzb3VyY2VzKToK
KyAgICAgICAgKHRlc3RXZWJSZXNvdXJjZUxvYWRpbmcpOgorICAgICAgICAodGVzdFdlYlJlc291
cmNlU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAodGVzdFdlYlJlc291cmNlR2V0RGF0YSk6
CisgICAgICAgICh0ZXN0V2ViUmVzb3VyY2VHZXREYXRhRXJyb3IpOgorICAgICAgICAodGVzdFdl
YlZpZXdSZXNvdXJjZXNIaXN0b3J5Q2FjaGUpOgorICAgICAgICAodGVzdFdlYlJlc291cmNlU2Vu
ZFJlcXVlc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
U1NMLmNwcDoKKyAgICAgICAgKHRlc3RTU0wpOgorICAgICAgICAodGVzdEluc2VjdXJlQ29udGVu
dCk6CisgICAgICAgICh0ZXN0VExTRXJyb3JzUG9saWN5KToKKyAgICAgICAgKHRlc3RUTFNFcnJv
cnNSZWRpcmVjdCk6CisgICAgICAgICh0ZXN0VExTRXJyb3JzSFRUUEF1dGgpOgorICAgICAgICAo
dGVzdExvYWRGYWlsZWRXaXRoVExTRXJyb3JzKToKKyAgICAgICAgKHRlc3RTdWJyZXNvdXJjZUxv
YWRGYWlsZWRXaXRoVExTRXJyb3JzKToKKyAgICAgICAgKGh0dHBzU2VydmVyQ2FsbGJhY2spOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3Bw
OgorICAgICAgICAodGVzdFdlYlZpZXdDcmVhdGVOYXZpZ2F0aW9uRGF0YSk6CisgICAgICAgICh0
ZXN0V2ViVmlld0phdmFTY3JpcHREaWFsb2dzKToKKyAgICAgICAgKHRlc3RXZWJWaWV3V2luZG93
UHJvcGVydGllcyk6CisgICAgICAgICh0ZXN0V2ViVmlld01vdXNlVGFyZ2V0KToKKyAgICAgICAg
KHRlc3RXZWJWaWV3RmlsZUNob29zZXJSZXF1ZXN0KToKKyAgICAgICAgKHRlc3RXZWJWaWV3Q29s
b3JDaG9vc2VyUmVxdWVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKHRlc3RXZWJFeHRlbnNpb25HZXRU
aXRsZSk6CisgICAgICAgICh0ZXN0RG9jdW1lbnRMb2FkZWRTaWduYWwpOgorICAgICAgICAodGVz
dFdlYktpdFdlYlZpZXdQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgICh0ZXN0V2ViRXh0ZW5zaW9u
V2luZG93T2JqZWN0Q2xlYXJlZCk6CisgICAgICAgICh0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0ZWRX
b3JsZCk6CisgICAgICAgIChwZXJtaXNzaW9uUmVxdWVzdENhbGxiYWNrKToKKyAgICAgICAgKGRp
ZEFzc29jaWF0ZUZvcm1Db250cm9sc0NhbGxiYWNrKToKKyAgICAgICAgKHRlc3RXZWJFeHRlbnNp
b25Gb3JtQ29udHJvbHNBc3NvY2lhdGVkKToKKyAgICAgICAgKEZvcm1TdWJtaXNzaW9uVGVzdDo6
Rm9ybVN1Ym1pc3Npb25UZXN0KToKKyAgICAgICAgKEZvcm1TdWJtaXNzaW9uVGVzdDo6dGVzdEZv
cm1TdWJtaXNzaW9uUmVzdWx0KToKKyAgICAgICAgKHRlc3RXZWJFeHRlbnNpb25Gb3JtU3VibWlz
c2lvblN0ZXBzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHA6CisgICAgICAgICh0ZXN0Tm90SW5pdGlhbGl6ZWQp
OgorICAgICAgICAodGVzdENsZWFyRGF0YWJhc2UpOgorICAgICAgICAodGVzdFByaXZhdGVCcm93
c2luZyk6CisgICAgICAgICh0ZXN0R2V0RmF2aWNvbik6CisgICAgICAgICh0ZXN0V2ViVmlld0Zh
dmljb24pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vi
S2l0RmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAodGVzdEZpbmRDb250cm9sbGVyVGV4dEZv
dW5kKToKKyAgICAgICAgKHRlc3RGaW5kQ29udHJvbGxlclRleHROb3RGb3VuZCk6CisgICAgICAg
ICh0ZXN0RmluZENvbnRyb2xsZXJNYXRjaENvdW50KToKKyAgICAgICAgKHRlc3RGaW5kQ29udHJv
bGxlck1heE1hdGNoQ291bnQpOgorICAgICAgICAodGVzdEZpbmRDb250cm9sbGVyTmV4dCk6Cisg
ICAgICAgICh0ZXN0RmluZENvbnRyb2xsZXJQcmV2aW91cyk6CisgICAgICAgICh0ZXN0RmluZENv
bnRyb2xsZXJDb3VudGVkTWF0Y2hlcyk6CisgICAgICAgICh0ZXN0RmluZENvbnRyb2xsZXJPcHRp
b25zKToKKyAgICAgICAgKHRlc3RGaW5kQ29udHJvbGxlckhpZGUpOgorICAgICAgICAodGVzdEZp
bmRDb250cm9sbGVySW5zdGFuY2UpOgorICAgICAgICAodGVzdEZpbmRDb250cm9sbGVyR2V0dGVy
cyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRQ
b2xpY3lDbGllbnQuY3BwOgorICAgICAgICAodGVzdE5hdmlnYXRpb25Qb2xpY3kpOgorICAgICAg
ICAodGVzdFJlc3BvbnNlUG9saWN5KToKKyAgICAgICAgKHRlc3ROZXdXaW5kb3dQb2xpY3kpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2VjdXJp
dHlPcmlnaW4uY3BwOgorICAgICAgICAodGVzdFNlY3VyaXR5T3JpZ2luQmFzaWNDb25zdHJ1Y3Rv
cik6CisgICAgICAgICh0ZXN0U2VjdXJpdHlPcmlnaW5VUklDb25zdHJ1Y3Rvcik6CisgICAgICAg
ICh0ZXN0U2VjdXJpdHlPcmlnaW5EZWZhdWx0UG9ydCk6CisgICAgICAgICh0ZXN0U2VjdXJpdHlP
cmlnaW5GaWxlVVJJKToKKyAgICAgICAgKHRlc3RPcGFxdWVTZWN1cml0eU9yaWdpbik6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5j
cHA6CisgICAgICAgICh0ZXN0V2ViS2l0U2V0dGluZ3MpOgorICAgICAgICAodGVzdFdlYktpdFNl
dHRpbmdzTmV3V2l0aFNldHRpbmdzKToKKyAgICAgICAgKHRlc3RXZWJLaXRTZXR0aW5nc1VzZXJB
Z2VudCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdOZXdXaXRoVXNl
ckNvbnRlbnRNYW5hZ2VyKToKKyAgICAgICAgKGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQ
YXRoKToKKyAgICAgICAgKGlzU2NyaXB0SW5qZWN0ZWRGb3JVUkxBdFBhdGgpOgorICAgICAgICAo
dGVzdFVzZXJDb250ZW50TWFuYWdlckluamVjdGVkU3R5bGVTaGVldCk6CisgICAgICAgICh0ZXN0
VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAoVXNlclNjcmlwdE1l
c3NhZ2VUZXN0OjpzY3JpcHRNZXNzYWdlUmVjZWl2ZWQpOgorICAgICAgICAoVXNlclNjcmlwdE1l
c3NhZ2VUZXN0Ojp3YWl0VW50aWxNZXNzYWdlUmVjZWl2ZWQpOgorICAgICAgICAoVXNlclNjcmlw
dE1lc3NhZ2VUZXN0OjpydW5KYXZhU2NyaXB0RmluaXNoZWQpOgorICAgICAgICAodGVzdFVzZXJD
b250ZW50TWFuYWdlclNjcmlwdE1lc3NhZ2VSZWNlaXZlZCk6CisgICAgICAgICh0ZXN0VXNlckNv
bnRlbnRNYW5hZ2VyU2NyaXB0TWVzc2FnZUluV29ybGRSZWNlaXZlZCk6CisgICAgICAgICh0ZXN0
VXNlckNvbnRlbnRNYW5hZ2VyU2NyaXB0TWVzc2FnZUZyb21ET01CaW5kaW5ncyk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNw
cDoKKyAgICAgICAgKHRlc3RXZWJDb250ZXh0RGVmYXVsdCk6CisgICAgICAgICh0ZXN0V2ViQ29u
dGV4dEVwaGVtZXJhbCk6CisgICAgICAgICh0ZXN0V2ViQ29udGV4dEdldFBsdWdpbnMpOgorICAg
ICAgICAodGVzdFdlYkNvbnRleHRVUklTY2hlbWUpOgorICAgICAgICAodGVzdFdlYkNvbnRleHRT
cGVsbENoZWNrZXIpOgorICAgICAgICAodGVzdFdlYkNvbnRleHRMYW5ndWFnZXMpOgorICAgICAg
ICAoY29uc29sZU1lc3NhZ2VSZWNlaXZlZENhbGxiYWNrKToKKyAgICAgICAgKHRlc3RXZWJDb250
ZXh0U2VjdXJpdHlGaWxlWEhSKToKKyAgICAgICAgKFByb3h5VGVzdDo6UHJveHlUZXN0KToKKyAg
ICAgICAgKHRlc3RXZWJDb250ZXh0UHJveHlTZXR0aW5ncyk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAgKHRl
c3RXZWJWaWV3V2ViQ29udGV4dCk6CisgICAgICAgICh0ZXN0V2ViVmlld1dlYkJhY2tlbmQpOgor
ICAgICAgICAodGVzdFdlYlZpZXdFcGhlbWVyYWwpOgorICAgICAgICAodGVzdFdlYlZpZXdDdXN0
b21DaGFyc2V0KToKKyAgICAgICAgKHRlc3RXZWJWaWV3U2V0dGluZ3MpOgorICAgICAgICAodGVz
dFdlYlZpZXdSdW5KYXZhU2NyaXB0KToKKyAgICAgICAgKHRlc3RXZWJWaWV3Q2FuU2hvd01JTUVU
eXBlKToKKyAgICAgICAgKHRlc3RXZWJWaWV3U3VibWl0Rm9ybSk6CisgICAgICAgICh0ZXN0V2Vi
Vmlld1NhdmUpOgorICAgICAgICAodGVzdFdlYlZpZXdQYWdlVmlzaWJpbGl0eSk6CisgICAgICAg
ICh0ZXN0V2ViVmlld1NuYXBzaG90KToKKyAgICAgICAgKHRlc3RXZWJWaWV3Tm90aWZpY2F0aW9u
KToKKyAgICAgICAgKHRlc3RXZWJWaWV3Tm90aWZpY2F0aW9uSW5pdGlhbFBlcm1pc3Npb25BbGxv
d2VkKToKKyAgICAgICAgKHRlc3RXZWJWaWV3Tm90aWZpY2F0aW9uSW5pdGlhbFBlcm1pc3Npb25E
aXNhbGxvd2VkKToKKyAgICAgICAgKHRlc3RXZWJWaWV3SXNQbGF5aW5nQXVkaW8pOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vic2l0ZURhdGEuY3BwOgor
ICAgICAgICAoV2Vic2l0ZURhdGFUZXN0OjpXZWJzaXRlRGF0YVRlc3QpOgorICAgICAgICAoV2Vi
c2l0ZURhdGFUZXN0OjpyZW1vdmUpOgorICAgICAgICAoV2Vic2l0ZURhdGFUZXN0OjpjbGVhcik6
CisgICAgICAgICh0ZXN0V2Vic2l0ZURhdGFDb25maWd1cmF0aW9uKToKKyAgICAgICAgKHRlc3RX
ZWJzaXRlRGF0YUVwaGVtZXJhbCk6CisgICAgICAgICh0ZXN0V2Vic2l0ZURhdGFDYWNoZSk6Cisg
ICAgICAgICh0ZXN0V2Vic2l0ZURhdGFTdG9yYWdlKToKKyAgICAgICAgKHRlc3RXZWJzaXRlRGF0
YURhdGFiYXNlcyk6CisgICAgICAgICh0ZXN0V2Vic2l0ZURhdGFBcHBjYWNoZSk6CisgICAgICAg
ICh0ZXN0V2Vic2l0ZURhdGFDb29raWVzKToKKyAgICAgICAgKHRlc3RXZWJzaXRlRGF0YURldmlj
ZUlkSGFzaFNhbHQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9X
ZWJFeHRlbnNpb25UZXN0LmNwcDoKKyAgICAgICAgKGVtaXREb2N1bWVudExvYWRlZCk6CisgICAg
ICAgIChlbWl0VVJJQ2hhbmdlZCk6CisgICAgICAgIChzZW5kUmVxdWVzdENhbGxiYWNrKToKKyAg
ICAgICAgKGNvbnRleHRNZW51Q2FsbGJhY2spOgorICAgICAgICAoY29uc29sZU1lc3NhZ2VTZW50
Q2FsbGJhY2spOgorICAgICAgICAoZW1pdEZvcm1Db250cm9sc0Fzc29jaWF0ZWQpOgorICAgICAg
ICAoZm9ybUNvbnRyb2xzQXNzb2NpYXRlZENhbGxiYWNrKToKKyAgICAgICAgKGVtaXRGb3JtU3Vi
bWlzc2lvbkV2ZW50KToKKyAgICAgICAgKHdpbGxTdWJtaXRGb3JtQ2FsbGJhY2spOgorICAgICAg
ICAod2luZG93T2JqZWN0Q2xlYXJlZCk6CisgICAgICAgIChtZXRob2RDYWxsQ2FsbGJhY2spOgor
ICAgICAgICAocmVnaXN0ZXJHUmVzb3VyY2UpOgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNp
b25faW5pdGlhbGl6ZV93aXRoX3VzZXJfZGF0YSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nlc3NUZXN0LmNwcDoKKyAgICAgICAgKGNoZWNrTGVha3Mp
OgorICAgICAgICAoV2ViUHJvY2Vzc1Rlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChydW5UZXN0KToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9BdXRvY2xlYW51cHNUZXN0
LmNwcDoKKyAgICAgICAgKEF1dG9jbGVhbnVwc1Rlc3Q6OnRlc3RXZWJQcm9jZXNzQXV0b2NsZWFu
dXBzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01DbGllbnRS
ZWN0VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRET01DbGllbnRSZWN0VGVzdDo6dGVzdERpdkJv
dW5kaW5nQ2xpZW50UmVjdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdERPTUNsaWVudFJlY3RU
ZXN0Ojp0ZXN0RGl2Q2xpZW50UmVjdHNQb3NpdGlvbkFuZExlbmd0aCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHA6CisgICAgICAg
IChXZWJLaXRET01ET01XaW5kb3dUZXN0Ojp0ZXN0U2lnbmFscyk6CisgICAgICAgIChXZWJLaXRE
T01ET01XaW5kb3dUZXN0Ojp0ZXN0RGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXRET01E
T01XaW5kb3dUZXN0Ojp0ZXN0R2V0Q29tcHV0ZWRTdHlsZSk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NTm9kZUZpbHRlclRlc3QuY3BwOgorICAgICAgICAoV2Vi
S2l0RE9NTm9kZUZpbHRlclRlc3Q6OnRlc3RUcmVlV2Fsa2VyKToKKyAgICAgICAgKFdlYktpdERP
TU5vZGVGaWx0ZXJUZXN0Ojp0ZXN0Tm9kZUl0ZXJhdG9yKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRET01O
b2RlVGVzdDo6dGVzdEhpZXJhcmNoeU5hdmlnYXRpb24pOgorICAgICAgICAoV2ViS2l0RE9NTm9k
ZVRlc3Q6OnRlc3RJbnNlcnRpb24pOgorICAgICAgICAoV2ViS2l0RE9NTm9kZVRlc3Q6OnRlc3RU
YWdOYW1lc05vZGVMaXN0KToKKyAgICAgICAgKFdlYktpdERPTU5vZGVUZXN0Ojp0ZXN0VGFnTmFt
ZXNIVE1MQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJLaXRET01Ob2RlVGVzdDo6dGVzdERPTUNh
Y2hlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01YUGF0aE5T
UmVzb2x2ZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdERPTVhQYXRoTlNSZXNvbHZlclRlc3Q6
OmV2YWx1YXRlRm9vQ2hpbGRUZXh0QW5kQ2hlY2tSZXN1bHQpOgorICAgICAgICAoV2ViS2l0RE9N
WFBhdGhOU1Jlc29sdmVyVGVzdDo6dGVzdFhQYXRoTlNSZXNvbHZlck5hdGl2ZSk6CisgICAgICAg
IChXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJUZXN0Ojp0ZXN0WFBhdGhOU1Jlc29sdmVyQ3VzdG9t
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0QXV0b2NsZWFu
dXBzLmNwcDoKKyAgICAgICAgKHRlc3RVSVByb2Nlc3NBdXRvY2xlYW51cHMpOgorICAgICAgICAo
dGVzdFdlYlByb2Nlc3NBdXRvY2xlYW51cHMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL1Rlc3RDb250ZXh0TWVudS5jcHA6CisgICAgICAgICh0ZXN0Q29udGV4dE1l
bnVQb3B1bGF0ZU1lbnUpOgorICAgICAgICAodGVzdENvbnRleHRNZW51RGlzbWlzc2VkKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NQ2xpZW50UmVjdC5j
cHA6CisgICAgICAgICh0ZXN0V2ViS2l0RE9NQ2xpZW50UmVjdERpdkJvdW5kaW5nQ2xpZW50UmVj
dFBvc2l0aW9uKToKKyAgICAgICAgKHRlc3RXZWJLaXRET01DbGllbnRSZWN0RGl2Q2xpZW50UmVj
dHNQb3NpdGlvbkFuZExlbmd0aCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHdGsvVGVzdERPTURPTVdpbmRvdy5jcHA6CisgICAgICAgICh0ZXN0V2ViS2l0RE9NRE9NV2lu
ZG93U2lnbmFscyk6CisgICAgICAgICh0ZXN0V2ViS2l0RE9NRE9NV2luZG93RGlzcGF0Y2hFdmVu
dCk6CisgICAgICAgICh0ZXN0V2ViS2l0RE9NRE9NV2luZG93R2V0Q29tcHV0ZWRTdHlsZSk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdERPTU5vZGUuY3BwOgor
ICAgICAgICAodGVzdFdlYktpdERPTU5vZGVIaWVyYXJjaHlOYXZpZ2F0aW9uKToKKyAgICAgICAg
KHRlc3RXZWJLaXRET01Ob2RlSW5zZXJ0aW9uKToKKyAgICAgICAgKHRlc3RXZWJLaXRET01Ob2Rl
VGFnTmFtZXNOb2RlTGlzdCk6CisgICAgICAgICh0ZXN0V2ViS2l0RE9NTm9kZVRhZ05hbWVzSFRN
TENvbGxlY3Rpb24pOgorICAgICAgICAodGVzdFdlYktpdERPTU9iamVjdENhY2hlKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NTm9kZUZpbHRlci5jcHA6
CisgICAgICAgICh0ZXN0V2ViS2l0RE9NTm9kZUZpbHRlclRyZWVXYWxrZXIpOgorICAgICAgICAo
dGVzdFdlYktpdERPTU5vZGVGaWx0ZXJOb2RlSXRlcmF0b3IpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RET01YUGF0aE5TUmVzb2x2ZXIuY3BwOgorICAgICAg
ICAodGVzdFdlYktpdERPTVhQYXRoTlNSZXNvbHZlck5hdGl2ZSk6CisgICAgICAgICh0ZXN0V2Vi
S2l0RE9NWFBhdGhOU1Jlc29sdmVyQ3VzdG9tKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9UZXN0SW5zcGVjdG9yLmNwcDoKKyAgICAgICAgKHRlc3RJbnNwZWN0b3JE
ZWZhdWx0KToKKyAgICAgICAgKHRlc3RJbnNwZWN0b3JNYW51YWxBdHRhY2hEZXRhY2gpOgorICAg
ICAgICAodGVzdEluc3BlY3RvckN1c3RvbUNvbnRhaW5lckRlc3Ryb3llZCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdEluc3BlY3RvclNlcnZlci5jcHA6Cisg
ICAgICAgIChzdGFydFRlc3RTZXJ2ZXIpOgorICAgICAgICAodGVzdEluc3BlY3RvclNlcnZlclBh
Z2VMaXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0T3B0
aW9uTWVudS5jcHA6CisgICAgICAgIChPcHRpb25NZW51VGVzdDo6c2hvd09wdGlvbk1lbnVDYWxs
YmFjayk6CisgICAgICAgIChPcHRpb25NZW51VGVzdDo6bWVudUNsb3NlQ2FsbGJhY2spOgorICAg
ICAgICAoT3B0aW9uTWVudVRlc3Q6OmNsb3NlKToKKyAgICAgICAgKE9wdGlvbk1lbnVUZXN0Ojph
Y3RpdmF0ZUl0ZW0pOgorICAgICAgICAoT3B0aW9uTWVudVRlc3Q6OnNlbGVjdEl0ZW0pOgorICAg
ICAgICAodGVzdE9wdGlvbk1lbnVTaW1wbGUpOgorICAgICAgICAodGVzdE9wdGlvbk1lbnVHcm91
cHMpOgorICAgICAgICAodGVzdE9wdGlvbk1lbnVBY3RpdmF0ZSk6CisgICAgICAgICh0ZXN0T3B0
aW9uTWVudVNlbGVjdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsv
VGVzdFByaW50aW5nLmNwcDoKKyAgICAgICAgKHRlc3RQcmludE9wZXJhdGlvblByaW50U2V0dGlu
Z3MpOgorICAgICAgICAod2ViVmlld1ByaW50Q2FsbGJhY2spOgorICAgICAgICAodGVzdFByaW50
T3BlcmF0aW9uUHJpbnQpOgorICAgICAgICAodGVzdFByaW50Q3VzdG9tV2lkZ2V0KToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0
eS5jcHA6CisgICAgICAgIChjaGVja0F0c3BpQWNjZXNzaWJsZSk6CisgICAgICAgICh0ZXN0QXRz
cGlCYXNpY0hpZXJhcmNoeSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
dGsvVGVzdFdlYktpdFZlcnNpb24uY3BwOgorICAgICAgICAodGVzdFdlYktpdENoZWNrVmVyc2lv
bik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYlZpZXdF
ZGl0b3IuY3BwOgorICAgICAgICAodGVzdFdlYlZpZXdFZGl0b3JDdXRDb3B5UGFzdGVOb25FZGl0
YWJsZSk6CisgICAgICAgICh0ZXN0V2ViVmlld0VkaXRvckN1dENvcHlQYXN0ZUVkaXRhYmxlKToK
KyAgICAgICAgKHRlc3RXZWJWaWV3RWRpdG9yU2VsZWN0QWxsTm9uRWRpdGFibGUpOgorICAgICAg
ICAodGVzdFdlYlZpZXdFZGl0b3JTZWxlY3RBbGxFZGl0YWJsZSk6CisgICAgICAgIChsb2FkQ29u
dGVudHNBbmRUcnlUb0N1dFNlbGVjdGlvbik6CisgICAgICAgICh0ZXN0V2ViVmlld0VkaXRvck5v
bkVkaXRhYmxlKToKKyAgICAgICAgKHRlc3RXZWJWaWV3RWRpdG9yRWRpdGFibGUpOgorICAgICAg
ICAodGVzdFdlYlZpZXdFZGl0b3JFZGl0b3JTdGF0ZVR5cGluZ0F0dHJpYnV0ZXMpOgorICAgICAg
ICAodGVzdFdlYlZpZXdFZGl0b3JJbnNlcnRJbWFnZSk6CisgICAgICAgICh0ZXN0V2ViVmlld0Vk
aXRvckNyZWF0ZUxpbmspOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGli
L0xvYWRUcmFja2luZ1Rlc3QuY3BwOgorICAgICAgICAobG9hZENoYW5nZWRDYWxsYmFjayk6Cisg
ICAgICAgIChsb2FkRmFpbGVkQ2FsbGJhY2spOgorICAgICAgICAobG9hZEZhaWxlZFdpdGhUTFNF
cnJvcnNDYWxsYmFjayk6CisgICAgICAgIChMb2FkVHJhY2tpbmdUZXN0OjpMb2FkVHJhY2tpbmdU
ZXN0KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5j
cHA6CisgICAgICAgIChyZWdpc3RlckdSZXNvdXJjZSk6CisgICAgICAgIChyZW1vdmVOb25FbXB0
eURpcmVjdG9yeSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVz
dE1haW4uaDoKKyAgICAgICAgKFRlc3Q6OmFkb3B0Vmlldyk6CisgICAgICAgIChUZXN0Ojp+VGVz
dCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdEJ1
cy5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0QnVzOjpnZXRPckNyZWF0ZUNvbm5lY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0VGVzdEJ1czo6Y3JlYXRlUHJveHkpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0VGVzdFNlcnZlcjo6Z2V0V2ViU29ja2V0VVJJRm9yUGF0aCBjb25zdCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwOgorICAgICAgICAo
V2ViVmlld1Rlc3Q6OmluaXRpYWxpemVXZWJWaWV3KToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojps
b2FkVVJJKToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojpsb2FkSHRtbCk6CisgICAgICAgIChXZWJW
aWV3VGVzdDo6bG9hZFBsYWluVGV4dCk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6bG9hZEJ5dGVz
KToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJWaWV3
VGVzdDo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OmdvQmFjayk6
CisgICAgICAgIChXZWJWaWV3VGVzdDo6Z29Gb3J3YXJkKToKKyAgICAgICAgKFdlYlZpZXdUZXN0
Ojpnb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChyZXNvdXJjZUdldERhdGFDYWxs
YmFjayk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6bWFpblJlc291cmNlRGF0YSk6CisgICAgICAg
IChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyk6CisgICAgICAgIChXZWJW
aWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvTnVtYmVyKToKKyAgICAgICAgKFdlYlZpZXdUZXN0
OjpqYXZhc2NyaXB0UmVzdWx0VG9Cb29sZWFuKToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpqYXZh
c2NyaXB0UmVzdWx0SXNOdWxsKToKKyAgICAgICAgKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVz
dWx0SXNVbmRlZmluZWQpOgorICAgICAgICAob25TbmFwc2hvdFJlYWR5KToKKyAgICAgICAgKFdl
YlZpZXdUZXN0OjpydW5XZWJQcm9jZXNzVGVzdCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9n
bGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3RrLmNwcDoKKyAgICAgICAgKFdlYlZpZXdU
ZXN0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJWaWV3KToKKyAgICAgICAgKFdlYlZpZXdUZXN0Ojpz
aG93SW5XaW5kb3cpOgorICAgICAgICAoV2ViVmlld1Rlc3Q6OnNob3dJbldpbmRvd0FuZFdhaXRV
bnRpbE1hcHBlZCk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6bW91c2VNb3ZlVG8pOgorICAgICAg
ICAoV2ViVmlld1Rlc3Q6OmVtaXRQb3B1cE1lbnVTaWduYWwpOgorICAgICAgICAoV2ViVmlld1Rl
c3Q6OmtleVN0cm9rZSk6CisgICAgICAgIChXZWJWaWV3VGVzdDo6ZG9Nb3VzZUJ1dHRvbkV2ZW50
KToKKwogMjAxOS0wMS0wMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW2xsZGItd2Via2l0XSBSZW1vdmUgYnJva2VuIGNvZGUgdG8gcHJpbnQgV1RGOjpPcHRp
b25TZXQ6Om1fc3RvcmFnZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9K
YXZhU2NyaXB0Q29yZS9nbGliL1Rlc3RKU0MuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9KYXZhU2NyaXB0Q29yZS9nbGliL1Rlc3RKU0MuY3BwCmluZGV4IGY3ZmE2YWFjZGMzM2QyMGI3
MTdiYzZiZTJkNTUxYjIwNWIwZjA3YTQuLjdlMzcyYzMzMjQwOWY2MzdjZjMzYzQ4NDBhYTFjMDAy
MjhjNjFhMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvSmF2YVNjcmlw
dENvcmUvZ2xpYi9UZXN0SlNDLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0ph
dmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5jcHAKQEAgLTY1NSw3ICs2NTUsNyBAQCBzdGF0aWMg
dm9pZCB0ZXN0SlNDRXZhbHVhdGVJbk9iamVjdCgpCiAKICAgICAgICAgR1JlZlB0cjxKU0NWYWx1
ZT4gcm9vdEZvbyA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0eShnbG9i
YWxPYmplY3QuZ2V0KCksICJmb28iKSk7CiAgICAgICAgIGNoZWNrZXIud2F0Y2gocm9vdEZvby5n
ZXQoKSk7Ci0gICAgICAgIGdfYXNzZXJ0KGpzY192YWx1ZV9pc19mdW5jdGlvbihyb290Rm9vLmdl
dCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVlX2lzX2Z1bmN0aW9uKHJvb3RG
b28uZ2V0KCkpKTsKICAgICAgICAgcmVzdWx0ID0gYWRvcHRHUmVmKGpzY192YWx1ZV9mdW5jdGlv
bl9jYWxsKHJvb3RGb28uZ2V0KCksIEdfVFlQRV9OT05FKSk7CiAgICAgICAgIGNoZWNrZXIud2F0
Y2gocmVzdWx0LmdldCgpKTsKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfbnVt
YmVyKHJlc3VsdC5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL0VkaXRvclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL0VkaXRvclRlc3QuY3BwCmluZGV4IGMzZDE3ZTM5YTM0MjczZmM0ZTE0ZDQ1YzE0
ZjEwN2FmYmJlOTVmNWEuLjVmNzYzZTRiYmNkZGI5M2YxZDJkNDYxYWU5MWFhM2E5OTNkMDA5ZDEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9FZGl0b3JU
ZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvRWRpdG9y
VGVzdC5jcHAKQEAgLTM2LDEyICszNiwxMiBAQCBwcml2YXRlOgogICAgICAgICBib29sIHNlbGVj
dGlvbkNoYW5nZWQgPSBmYWxzZTsKIAogICAgICAgICBXZWJLaXRXZWJFZGl0b3IqIGVkaXRvciA9
IHdlYmtpdF93ZWJfcGFnZV9nZXRfZWRpdG9yKHBhZ2UpOwotICAgICAgICBnX2Fzc2VydChXRUJL
SVRfSVNfV0VCX0VESVRPUihlZGl0b3IpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRf
SVNfV0VCX0VESVRPUihlZGl0b3IpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hl
blRlc3RGaW5pc2hlcyhHX09CSkVDVChlZGl0b3IpKTsKICAgICAgICAgZ19zaWduYWxfY29ubmVj
dF9zd2FwcGVkKGVkaXRvciwgInNlbGVjdGlvbi1jaGFuZ2VkIiwgR19DQUxMQkFDSyhzZWxlY3Rp
b25DaGFuZ2VkQ2FsbGJhY2spLCAmc2VsZWN0aW9uQ2hhbmdlZCk7CiAKICAgICAgICAgR1JlZlB0
cjxKU0NDb250ZXh0PiBqc0NvbnRleHQgPSBhZG9wdEdSZWYod2Via2l0X2ZyYW1lX2dldF9qc19j
b250ZXh0KHdlYmtpdF93ZWJfcGFnZV9nZXRfbWFpbl9mcmFtZShwYWdlKSkpOwotICAgICAgICBn
X2Fzc2VydChKU0NfSVNfQ09OVEVYVChqc0NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3Nl
cnRfdHJ1ZShKU0NfSVNfQ09OVEVYVChqc0NvbnRleHQuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0
T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChqc0NvbnRleHQuZ2V0KCkp
KTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogc3RlcHNbXSA9IHsKQEAgLTU2LDEwICs1
NiwxMCBAQCBwcml2YXRlOgogICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiByZXN1bHQ7CiAgICAg
ICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAgICB3aGlsZSAoY29uc3QgY2hhciogY29tbWFuZCA9
IHN0ZXBzW2krK10pIHsKLSAgICAgICAgICAgIGdfYXNzZXJ0KCFzZWxlY3Rpb25DaGFuZ2VkKTsK
KyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHNlbGVjdGlvbkNoYW5nZWQpOwogICAgICAgICAg
ICAgcmVzdWx0ID0gYWRvcHRHUmVmKGpzY19jb250ZXh0X2V2YWx1YXRlKGpzQ29udGV4dC5nZXQo
KSwgY29tbWFuZCwgLTEpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KEpTQ19JU19WQUxVRShyZXN1
bHQuZ2V0KCkpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KHNlbGVjdGlvbkNoYW5nZWQpOworICAg
ICAgICAgICAgZ19hc3NlcnRfdHJ1ZShKU0NfSVNfVkFMVUUocmVzdWx0LmdldCgpKSk7CisgICAg
ICAgICAgICBnX2Fzc2VydF90cnVlKHNlbGVjdGlvbkNoYW5nZWQpOwogICAgICAgICAgICAgc2Vs
ZWN0aW9uQ2hhbmdlZCA9IGZhbHNlOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9GcmFtZVRlc3QuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL0ZyYW1lVGVzdC5jcHAKaW5kZXggNDYxYjFjYjIyZmNi
YTk1Y2Q3ZjhjNzZmYzdmZDNiNDdhNTZkYjQ3NC4uMmU2N2MwYTdhMzJmMjIxZmUwZDYyYjdhZDQ0
ZTQyMDFhYzEwMjNjMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL0ZyYW1lVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL0ZyYW1lVGVzdC5jcHAKQEAgLTMxLDggKzMxLDggQEAgcHJpdmF0ZToKICAgICBib29s
IHRlc3RNYWluRnJhbWUoV2ViS2l0V2ViUGFnZSogcGFnZSkKICAgICB7CiAgICAgICAgIFdlYktp
dEZyYW1lKiBmcmFtZSA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfbWFpbl9mcmFtZShwYWdlKTsKLSAg
ICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX0ZSQU1FKGZyYW1lKSk7Ci0gICAgICAgIGdfYXNzZXJ0
KHdlYmtpdF9mcmFtZV9pc19tYWluX2ZyYW1lKGZyYW1lKSk7CisgICAgICAgIGdfYXNzZXJ0X3Ry
dWUoV0VCS0lUX0lTX0ZSQU1FKGZyYW1lKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0
X2ZyYW1lX2lzX21haW5fZnJhbWUoZnJhbWUpKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CkBAIC00MCw3ICs0MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB0ZXN0VVJJKFdlYktpdFdl
YlBhZ2UqIHBhZ2UpCiAgICAgewogICAgICAgICBXZWJLaXRGcmFtZSogZnJhbWUgPSB3ZWJraXRf
d2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUocGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9J
U19GUkFNRShmcmFtZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19GUkFNRShm
cmFtZSkpOwogICAgICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl9wYWdlX2dldF91cmko
cGFnZSksID09LCB3ZWJraXRfZnJhbWVfZ2V0X3VyaShmcmFtZSkpOwogCiAgICAgICAgIHJldHVy
biB0cnVlOwpAQCAtNDksMTUgKzQ5LDE1IEBAIHByaXZhdGU6CiAgICAgYm9vbCB0ZXN0SmF2YVNj
cmlwdENvbnRleHQoV2ViS2l0V2ViUGFnZSogcGFnZSkKICAgICB7CiAgICAgICAgIFdlYktpdEZy
YW1lKiBmcmFtZSA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfbWFpbl9mcmFtZShwYWdlKTsKLSAgICAg
ICAgZ19hc3NlcnQoV0VCS0lUX0lTX0ZSQU1FKGZyYW1lKSk7CisgICAgICAgIGdfYXNzZXJ0X3Ry
dWUoV0VCS0lUX0lTX0ZSQU1FKGZyYW1lKSk7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICBH
X0dOVUNfQkVHSU5fSUdOT1JFX0RFUFJFQ0FUSU9OUzsKLSAgICAgICAgZ19hc3NlcnQod2Via2l0
X2ZyYW1lX2dldF9qYXZhc2NyaXB0X2dsb2JhbF9jb250ZXh0KGZyYW1lKSk7CisgICAgICAgIGdf
YXNzZXJ0X25vbm51bGwod2Via2l0X2ZyYW1lX2dldF9qYXZhc2NyaXB0X2dsb2JhbF9jb250ZXh0
KGZyYW1lKSk7CiAgICAgICAgIEdfR05VQ19FTkRfSUdOT1JFX0RFUFJFQ0FUSU9OUzsKICNlbmRp
ZgogCiAgICAgICAgIEdSZWZQdHI8SlNDQ29udGV4dD4ganNDb250ZXh0ID0gYWRvcHRHUmVmKHdl
YmtpdF9mcmFtZV9nZXRfanNfY29udGV4dChmcmFtZSkpOwotICAgICAgICBnX2Fzc2VydChKU0Nf
SVNfQ09OVEVYVChqc0NvbnRleHQuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShKU0Nf
SVNfQ09OVEVYVChqc0NvbnRleHQuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxl
dGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChqc0NvbnRleHQuZ2V0KCkpKTsKIAogICAgICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTY2LDY1ICs2Niw2NSBAQCBwcml2YXRlOgogICAgIGJvb2wgdGVz
dEphdmFTY3JpcHRWYWx1ZXMoV2ViS2l0V2ViUGFnZSogcGFnZSkKICAgICB7CiAgICAgICAgIFdl
YktpdEZyYW1lKiBmcmFtZSA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfbWFpbl9mcmFtZShwYWdlKTsK
LSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX0ZSQU1FKGZyYW1lKSk7CisgICAgICAgIGdfYXNz
ZXJ0X3RydWUoV0VCS0lUX0lTX0ZSQU1FKGZyYW1lKSk7CiAKICAgICAgICAgR1JlZlB0cjxKU0ND
b250ZXh0PiBqc0NvbnRleHQgPSBhZG9wdEdSZWYod2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0
KGZyYW1lKSk7Ci0gICAgICAgIGdfYXNzZXJ0KEpTQ19JU19DT05URVhUKGpzQ29udGV4dC5nZXQo
KSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKEpTQ19JU19DT05URVhUKGpzQ29udGV4dC5nZXQo
KSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JK
RUNUKGpzQ29udGV4dC5nZXQoKSkpOwogCiAgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1
bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOwotICAgICAgICBn
X2Fzc2VydChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CisgICAgICAgIGdfYXNz
ZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOwogICAgICAgICBhc3Nl
cnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRvY3VtZW50KSk7CiAK
ICAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4ganNEb2N1bWVudCA9IGFkb3B0R1JlZih3ZWJraXRf
ZnJhbWVfZ2V0X2pzX3ZhbHVlX2Zvcl9kb21fb2JqZWN0KGZyYW1lLCBXRUJLSVRfRE9NX09CSkVD
VChkb2N1bWVudCkpKTsKLSAgICAgICAgZ19hc3NlcnQoSlNDX0lTX1ZBTFVFKGpzRG9jdW1lbnQu
Z2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShKU0NfSVNfVkFMVUUoanNEb2N1bWVudC5n
ZXQoKSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdf
T0JKRUNUKGpzRG9jdW1lbnQuZ2V0KCkpKTsKLSAgICAgICAgZ19hc3NlcnQoanNjX3ZhbHVlX2dl
dF9jb250ZXh0KGpzRG9jdW1lbnQuZ2V0KCkpID09IGpzQ29udGV4dC5nZXQoKSk7CisgICAgICAg
IGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVlX2dldF9jb250ZXh0KGpzRG9jdW1lbnQuZ2V0KCkpID09
IGpzQ29udGV4dC5nZXQoKSk7CiAKICAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gdmFsdWUgPSBh
ZG9wdEdSZWYoanNjX2NvbnRleHRfZ2V0X3ZhbHVlKGpzQ29udGV4dC5nZXQoKSwgImRvY3VtZW50
IikpOwotICAgICAgICBnX2Fzc2VydCh2YWx1ZS5nZXQoKSA9PSBqc0RvY3VtZW50LmdldCgpKTsK
KyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh2YWx1ZS5nZXQoKSA9PSBqc0RvY3VtZW50LmdldCgpKTsK
IAogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgR19HTlVDX0JFR0lOX0lHTk9SRV9ERVBSRUNB
VElPTlM7CiAgICAgICAgIFdlYktpdERPTUVsZW1lbnQqIHAgPSB3ZWJraXRfZG9tX2RvY3VtZW50
X2dldF9lbGVtZW50X2J5X2lkKGRvY3VtZW50LCAicGFyYWdyYXBoIik7CiAgICAgICAgIEdfR05V
Q19FTkRfSUdOT1JFX0RFUFJFQ0FUSU9OUzsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9J
U19FTEVNRU5UKHApKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0VMRU1F
TlQocCkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdf
T0JKRUNUKHApKTsKIAogICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiBqc1AgPSBhZG9wdEdSZWYo
d2Via2l0X2ZyYW1lX2dldF9qc192YWx1ZV9mb3JfZG9tX29iamVjdChmcmFtZSwgV0VCS0lUX0RP
TV9PQkpFQ1QocCkpKTsKICNlbHNlCiAgICAgICAgIEdSZWZQdHI8SlNDVmFsdWU+IGpzUCA9IGFk
b3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2ludm9rZV9tZXRob2QoanNEb2N1bWVudC5nZXQoKSwg
ImdldEVsZW1lbnRCeUlkIiwgR19UWVBFX1NUUklORywgInBhcmFncmFwaCIsIEdfVFlQRV9OT05F
KSk7CiAjZW5kaWYKLSAgICAgICAgZ19hc3NlcnQoSlNDX0lTX1ZBTFVFKGpzUC5nZXQoKSkpOwor
ICAgICAgICBnX2Fzc2VydF90cnVlKEpTQ19JU19WQUxVRShqc1AuZ2V0KCkpKTsKICAgICAgICAg
YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChqc1AuZ2V0KCkp
KTsKLSAgICAgICAgZ19hc3NlcnQoanNjX3ZhbHVlX2lzX29iamVjdChqc1AuZ2V0KCkpKTsKLSAg
ICAgICAgZ19hc3NlcnQoanNjX3ZhbHVlX2dldF9jb250ZXh0KGpzUC5nZXQoKSkgPT0ganNDb250
ZXh0LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfb2JqZWN0KGpz
UC5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9nZXRfY29udGV4dChq
c1AuZ2V0KCkpID09IGpzQ29udGV4dC5nZXQoKSk7CiAKICAgICAgICAgdmFsdWUgPSBhZG9wdEdS
ZWYoanNjX2NvbnRleHRfZXZhbHVhdGUoanNDb250ZXh0LmdldCgpLCAiZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3BhcmFncmFwaCcpIiwgLTEpKTsKLSAgICAgICAgZ19hc3NlcnQodmFsdWUuZ2V0
KCkgPT0ganNQLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh2YWx1ZS5nZXQoKSA9PSBq
c1AuZ2V0KCkpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgdmFsdWUgPSBhZG9wdEdSZWYo
anNjX3ZhbHVlX29iamVjdF9pbnZva2VfbWV0aG9kKGpzRG9jdW1lbnQuZ2V0KCksICJnZXRFbGVt
ZW50QnlJZCIsIEdfVFlQRV9TVFJJTkcsICJwYXJhZ3JhcGgiLCBHX1RZUEVfTk9ORSkpOwotICAg
ICAgICBnX2Fzc2VydCh2YWx1ZS5nZXQoKSA9PSBqc1AuZ2V0KCkpOworICAgICAgICBnX2Fzc2Vy
dF90cnVlKHZhbHVlLmdldCgpID09IGpzUC5nZXQoKSk7CiAjZW5kaWYKIAogICAgICAgICB2YWx1
ZSA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0eShqc1AuZ2V0KCksICJp
bm5lclRleHQiKSk7Ci0gICAgICAgIGdfYXNzZXJ0KEpTQ19JU19WQUxVRSh2YWx1ZS5nZXQoKSkp
OworICAgICAgICBnX2Fzc2VydF90cnVlKEpTQ19JU19WQUxVRSh2YWx1ZS5nZXQoKSkpOwogICAg
ICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHZhbHVl
LmdldCgpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KGpzY192YWx1ZV9pc19zdHJpbmcodmFsdWUuZ2V0
KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfc3RyaW5nKHZhbHVlLmdl
dCgpKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gc3RyVmFsdWUoanNjX3ZhbHVlX3RvX3N0
cmluZyh2YWx1ZS5nZXQoKSkpOwogICAgICAgICBnX2Fzc2VydF9jbXBzdHIoc3RyVmFsdWUuZ2V0
KCksID09LCAiVGhpcyBpcyBhIHRlc3QiKTsKIAogICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiBq
c0ltYWdlID0gYWRvcHRHUmVmKGpzY192YWx1ZV9vYmplY3RfaW52b2tlX21ldGhvZChqc0RvY3Vt
ZW50LmdldCgpLCAiZ2V0RWxlbWVudEJ5SWQiLCBHX1RZUEVfU1RSSU5HLCAiaW1hZ2UiLCBHX1RZ
UEVfTk9ORSkpOwotICAgICAgICBnX2Fzc2VydChKU0NfSVNfVkFMVUUoanNJbWFnZS5nZXQoKSkp
OworICAgICAgICBnX2Fzc2VydF90cnVlKEpTQ19JU19WQUxVRShqc0ltYWdlLmdldCgpKSk7CiAg
ICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoanNJ
bWFnZS5nZXQoKSkpOwotICAgICAgICBnX2Fzc2VydChqc2NfdmFsdWVfaXNfb2JqZWN0KGpzSW1h
Z2UuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfb2JqZWN0KGpz
SW1hZ2UuZ2V0KCkpKTsKIAogICAgICAgICBXZWJLaXRET01Ob2RlKiBpbWFnZSA9IHdlYmtpdF9k
b21fbm9kZV9mb3JfanNfdmFsdWUoanNJbWFnZS5nZXQoKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdF
QktJVF9ET01fSVNfRUxFTUVOVChpbWFnZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJ
VF9ET01fSVNfRUxFTUVOVChpbWFnZSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRX
aGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGltYWdlKSk7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
ICAgICBHX0dOVUNfQkVHSU5fSUdOT1JFX0RFUFJFQ0FUSU9OUzsKLSAgICAgICAgZ19hc3NlcnQo
d2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudF9ieV9pZChkb2N1bWVudCwgImltYWdlIikg
PT0gV0VCS0lUX0RPTV9FTEVNRU5UKGltYWdlKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Vi
a2l0X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudF9ieV9pZChkb2N1bWVudCwgImltYWdlIikgPT0g
V0VCS0lUX0RPTV9FTEVNRU5UKGltYWdlKSk7CiAgICAgICAgIEdfR05VQ19FTkRfSUdOT1JFX0RF
UFJFQ0FUSU9OUzsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdEF1dGhlbnRpY2F0aW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwCmluZGV4IDU2ZGVkZjcw
NDJmZTNkYTEzMWEwYzdhMmNiM2EyZGI0NDhjYzgyOGIuLmQ2Y2MyZmIyNDdlNTYyMDY2OTc3NjEw
YjI1Njc5YjdlZDFkY2M4YmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0aGVudGljYXRpb24uY3BwCkBAIC0xMDMsOSArMTAz
LDkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblJlcXVlc3QoQXV0aGVu
dGljYXRpb25UZXN0KiB0ZXN0LCBnY29uc3Rwb2kKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0
X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X2hvc3QocmVxdWVzdCksID09LCBzb3VwX3VyaV9n
ZXRfaG9zdChrU2VydmVyLT5iYXNlVVJJKCkpKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtp
dF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2dldF9wb3J0KHJlcXVlc3QpLCA9PSwgc291cF91cmlf
Z2V0X3BvcnQoa1NlcnZlci0+YmFzZVVSSSgpKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtp
dF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2dldF9yZWFsbShyZXF1ZXN0KSwgPT0sICJteSByZWFs
bSIpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2dldF9zY2hl
bWUocmVxdWVzdCkgPT0gV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX1NDSEVNRV9IVFRQX0JBU0lDKTsK
LSAgICBnX2Fzc2VydCghd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfaXNfZm9yX3Byb3h5
KHJlcXVlc3QpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3Rf
aXNfcmV0cnkocmVxdWVzdCkpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfYXV0aGVudGlj
YXRpb25fcmVxdWVzdF9nZXRfc2NoZW1lKHJlcXVlc3QpLCA9PSwgV0VCS0lUX0FVVEhFTlRJQ0FU
SU9OX1NDSEVNRV9IVFRQX0JBU0lDKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfYXV0aGVu
dGljYXRpb25fcmVxdWVzdF9pc19mb3JfcHJveHkocmVxdWVzdCkpOworICAgIGdfYXNzZXJ0X2Zh
bHNlKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2lzX3JldHJ5KHJlcXVlc3QpKTsKIH0K
IAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvbkNhbmNlbChBdXRoZW50aWNh
dGlvblRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvbkxvYWRDYW5jZWxsZWQoQXV0aGVudGljYXRp
b25UZXN0KiB0ZXN0LCBnY28KICAgICB3ZWJraXRfd2ViX3ZpZXdfc3RvcF9sb2FkaW5nKHRlc3Qt
Pm1fd2ViVmlldyk7CiAgICAgLy8gRXhwZWN0IGVtcHR5IHBhZ2UuCiAgICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+YXV0aGVudGljYXRpb25DYW5j
ZWxsZWRSZWNlaXZlZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5hdXRoZW50aWNhdGlvbkNh
bmNlbGxlZFJlY2VpdmVkKTsKIAogICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVu
dHMuc2l6ZSgpLCA9PSwgMyk7CiAgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50
c1swXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOwpAQCAt
MTQ3LDEzICsxNDcsMTMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvbkZh
aWx1cmUoQXV0aGVudGljYXRpb25UZXN0KiB0ZXN0LCBnY29uc3Rwb2kKICAgICAvLyBUZXN0IGF1
dGhlbnRpY2F0aW9uIGZhaWx1cmVzLgogICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJ
Rm9yUGF0aCgiL2F1dGgtdGVzdC5odG1sIikuZGF0YSgpKTsKICAgICBXZWJLaXRBdXRoZW50aWNh
dGlvblJlcXVlc3QqIHJlcXVlc3QgPSB0ZXN0LT53YWl0Rm9yQXV0aGVudGljYXRpb25SZXF1ZXN0
KCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2lzX3JldHJ5
KHJlcXVlc3QpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfYXV0aGVudGljYXRpb25fcmVx
dWVzdF9pc19yZXRyeShyZXF1ZXN0KSk7CiAgICAgV2ViS2l0Q3JlZGVudGlhbCogY3JlZGVudGlh
bCA9IHdlYmtpdF9jcmVkZW50aWFsX25ldyhhdXRoVGVzdFVzZXJuYW1lLCAid3JvbmdwYXNzd29y
ZCIsIFdFQktJVF9DUkVERU5USUFMX1BFUlNJU1RFTkNFX05PTkUpOwogICAgIHdlYmtpdF9hdXRo
ZW50aWNhdGlvbl9yZXF1ZXN0X2F1dGhlbnRpY2F0ZShyZXF1ZXN0LCBjcmVkZW50aWFsKTsKICAg
ICB3ZWJraXRfY3JlZGVudGlhbF9mcmVlKGNyZWRlbnRpYWwpOwogICAgIC8vIEV4cGVjdCBhIHNl
Y29uZCBhdXRoZW50aWNhdGlvbiByZXF1ZXN0LgogICAgIHJlcXVlc3QgPSB0ZXN0LT53YWl0Rm9y
QXV0aGVudGljYXRpb25SZXF1ZXN0KCk7Ci0gICAgZ19hc3NlcnQod2Via2l0X2F1dGhlbnRpY2F0
aW9uX3JlcXVlc3RfaXNfcmV0cnkocmVxdWVzdCkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0
X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfaXNfcmV0cnkocmVxdWVzdCkpOwogICAgIC8vIFRlc3Qg
c2Vjb25kIGZhaWx1cmUuCiAgICAgY3JlZGVudGlhbCA9IHdlYmtpdF9jcmVkZW50aWFsX25ldyhh
dXRoVGVzdFVzZXJuYW1lLCAid3JvbmdwYXNzd29yZDIiLCBXRUJLSVRfQ1JFREVOVElBTF9QRVJT
SVNURU5DRV9OT05FKTsKICAgICB3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9hdXRoZW50
aWNhdGUocmVxdWVzdCwgY3JlZGVudGlhbCk7CkBAIC0xOTQsOCArMTk0LDggQEAgc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblN0b3JhZ2UoQXV0aGVudGljYXRpb25UZXN0KiB0
ZXN0LCBnY29uc3Rwb2kKICAgICBHX0dOVUNfRU5EX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAgICAg
dGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvYXV0aC10ZXN0Lmh0bWwiKS5k
YXRhKCkpOwogICAgIFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCogcmVxdWVzdCA9IHRlc3Qt
PndhaXRGb3JBdXRoZW50aWNhdGlvblJlcXVlc3QoKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2F1
dGhlbnRpY2F0aW9uX3JlcXVlc3RfZ2V0X3Byb3Bvc2VkX2NyZWRlbnRpYWwocmVxdWVzdCkpOwot
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9jYW5fc2F2ZV9jcmVk
ZW50aWFscyhyZXF1ZXN0KSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfYXV0aGVudGljYXRp
b25fcmVxdWVzdF9nZXRfcHJvcG9zZWRfY3JlZGVudGlhbChyZXF1ZXN0KSk7CisgICAgZ19hc3Nl
cnRfZmFsc2Uod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfY2FuX3NhdmVfY3JlZGVudGlh
bHMocmVxdWVzdCkpOwogCiAgICAgLy8gSWYgV2ViS2l0IGhhcyBiZWVuIGNvbXBpbGVkIHdpdGgg
bGlic2VjcmV0LCBhbmQgcHJpdmF0ZSBicm93c2luZyBpcyBkaXNhYmxlZAogICAgIC8vIHRoZW4g
Y2hlY2sgdGhhdCBjcmVkZW50aWFscyBjYW4gYmUgc2F2ZWQuCkBAIC0yMDUsOCArMjA1LDggQEAg
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblN0b3JhZ2UoQXV0aGVudGljYXRp
b25UZXN0KiB0ZXN0LCBnY29uc3Rwb2kKICAgICBHX0dOVUNfRU5EX0lHTk9SRV9ERVBSRUNBVElP
TlM7CiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvYXV0aC10ZXN0
Lmh0bWwiKS5kYXRhKCkpOwogICAgIHJlcXVlc3QgPSB0ZXN0LT53YWl0Rm9yQXV0aGVudGljYXRp
b25SZXF1ZXN0KCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0
X2dldF9wcm9wb3NlZF9jcmVkZW50aWFsKHJlcXVlc3QpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRf
YXV0aGVudGljYXRpb25fcmVxdWVzdF9jYW5fc2F2ZV9jcmVkZW50aWFscyhyZXF1ZXN0KSk7Cisg
ICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9nZXRfcHJvcG9z
ZWRfY3JlZGVudGlhbChyZXF1ZXN0KSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfYXV0aGVu
dGljYXRpb25fcmVxdWVzdF9jYW5fc2F2ZV9jcmVkZW50aWFscyhyZXF1ZXN0KSk7CiAjZW5kaWYK
IH0KICNlbmRpZgpAQCAtMzU3LDcgKzM1Nyw3IEBAIHB1YmxpYzoKICAgICBQcm94eUF1dGhlbnRp
Y2F0aW9uVGVzdCgpCiAgICAgewogICAgICAgICBtX3Byb3h5U2VydmVyLnJ1bihzZXJ2ZXJDYWxs
YmFjayk7Ci0gICAgICAgIGdfYXNzZXJ0KG1fcHJveHlTZXJ2ZXIuYmFzZVVSSSgpKTsKKyAgICAg
ICAgZ19hc3NlcnRfbm9ubnVsbChtX3Byb3h5U2VydmVyLmJhc2VVUkkoKSk7CiAgICAgICAgIGdQ
cm94eVNlcnZlclBvcnQgPSBzb3VwX3VyaV9nZXRfcG9ydChtX3Byb3h5U2VydmVyLmJhc2VVUkko
KSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gcHJveHlVUkkoc291cF91cmlfdG9fc3RyaW5n
KG1fcHJveHlTZXJ2ZXIuYmFzZVVSSSgpLCBGQUxTRSkpOwogICAgICAgICBXZWJLaXROZXR3b3Jr
UHJveHlTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRfbmV0d29ya19wcm94eV9zZXR0aW5nc19u
ZXcocHJveHlVUkkuZ2V0KCksIG51bGxwdHIpOwpAQCAtMzg3LDkgKzM4Nyw5IEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25Qcm94eShQcm94eUF1dGhlbnRpY2F0aW9uVGVz
dCogdGVzdCwgZ2NvbnN0CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9hdXRoZW50aWNhdGlv
bl9yZXF1ZXN0X2dldF9ob3N0KHJlcXVlc3QpLCA9PSwgc291cF91cmlfZ2V0X2hvc3Qoa1NlcnZl
ci0+YmFzZVVSSSgpKSk7CiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfYXV0aGVudGljYXRp
b25fcmVxdWVzdF9nZXRfcG9ydChyZXF1ZXN0KSwgPT0sIHNvdXBfdXJpX2dldF9wb3J0KGtTZXJ2
ZXItPmJhc2VVUkkoKSkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfYXV0aGVudGljYXRp
b25fcmVxdWVzdF9nZXRfcmVhbG0ocmVxdWVzdCksID09LCAiUHJveHkgcmVhbG0iKTsKLSAgICBn
X2Fzc2VydCh3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9nZXRfc2NoZW1lKHJlcXVlc3Qp
ID09IFdFQktJVF9BVVRIRU5USUNBVElPTl9TQ0hFTUVfSFRUUF9CQVNJQyk7Ci0gICAgZ19hc3Nl
cnQod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfaXNfZm9yX3Byb3h5KHJlcXVlc3QpKTsK
LSAgICBnX2Fzc2VydCghd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfaXNfcmV0cnkocmVx
dWVzdCkpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVz
dF9nZXRfc2NoZW1lKHJlcXVlc3QpLCA9PSwgV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX1NDSEVNRV9I
VFRQX0JBU0lDKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1
ZXN0X2lzX2Zvcl9wcm94eShyZXF1ZXN0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2F1
dGhlbnRpY2F0aW9uX3JlcXVlc3RfaXNfcmV0cnkocmVxdWVzdCkpOwogfQogCiBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHlIVFRQUyhQcm94eUF1dGhlbnRpY2F0aW9u
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTQwMyw5ICs0MDMsOSBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uUHJveHlIVFRQUyhQcm94eUF1dGhlbnRpY2F0aW9u
VGVzdCogdGVzdCwgZwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfYXV0aGVudGljYXRpb25f
cmVxdWVzdF9nZXRfaG9zdChyZXF1ZXN0KSwgPT0sIHNvdXBfdXJpX2dldF9ob3N0KGh0dHBzU2Vy
dmVyLT5iYXNlVVJJKCkpKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9hdXRoZW50aWNh
dGlvbl9yZXF1ZXN0X2dldF9wb3J0KHJlcXVlc3QpLCA9PSwgc291cF91cmlfZ2V0X3BvcnQoaHR0
cHNTZXJ2ZXItPmJhc2VVUkkoKSkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfYXV0aGVu
dGljYXRpb25fcmVxdWVzdF9nZXRfcmVhbG0ocmVxdWVzdCksID09LCAiUHJveHkgcmVhbG0iKTsK
LSAgICBnX2Fzc2VydCh3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9nZXRfc2NoZW1lKHJl
cXVlc3QpID09IFdFQktJVF9BVVRIRU5USUNBVElPTl9TQ0hFTUVfSFRUUF9CQVNJQyk7Ci0gICAg
Z19hc3NlcnQod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfaXNfZm9yX3Byb3h5KHJlcXVl
c3QpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfaXNfcmV0
cnkocmVxdWVzdCkpOworICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfYXV0aGVudGljYXRpb25f
cmVxdWVzdF9nZXRfc2NoZW1lKHJlcXVlc3QpLCA9PSwgV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX1ND
SEVNRV9IVFRQX0JBU0lDKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9hdXRoZW50aWNhdGlv
bl9yZXF1ZXN0X2lzX2Zvcl9wcm94eShyZXF1ZXN0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfaXNfcmV0cnkocmVxdWVzdCkpOwogfQogCiB2b2lk
IGJlZm9yZUFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDI1NjJjYjQ4ZGZh
ZTE4ZjVjOTAyNDBkYTM3ZmVjMTY0NzZiMjMxZTAuLjk5OGFiMmYyYTI5YzI2ZjdmYTY1ZDJiODFl
OWUxZWYyN2I0ZTVkM2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0xMTcsNyAr
MTE3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDb25uZWN0aW9uKEdSZWZQdHI8R0RCdXND
b25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCiAgICAgewotICAgICAgICBnX2Fzc2VydChHX0lTX0RC
VVNfQ09OTkVDVElPTihjb25uZWN0aW9uLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUo
R19JU19EQlVTX0NPTk5FQ1RJT04oY29ubmVjdGlvbi5nZXQoKSkpOwogICAgICAgICBtX2Nvbm5l
Y3Rpb24gPSBXVEZNb3ZlKGNvbm5lY3Rpb24pOwogICAgICAgICByZWdpc3RlckRCdXNPYmplY3Qo
KTsKICAgICAgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wLmdldCgpKTsKQEAgLTEzNSw4
ICsxMzUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlY2VpdmVkTWVzc2FnZShndWludDY0IGNv
bm5lY3Rpb25JRCwgZ3VpbnQ2NCB0YXJnZXRJRCwgY29uc3QgY2hhciogbWVzc2FnZSkKICAgICB7
Ci0gICAgICAgIGdfYXNzZXJ0KGNvbm5lY3Rpb25JRCA9PSBtX2Nvbm5lY3Rpb25JRCk7Ci0gICAg
ICAgIGdfYXNzZXJ0KHRhcmdldElEID09IG1fdGFyZ2V0LmlkKTsKKyAgICAgICAgZ19hc3NlcnRf
Y21wdWludChjb25uZWN0aW9uSUQsID09LCBtX2Nvbm5lY3Rpb25JRCk7CisgICAgICAgIGdfYXNz
ZXJ0X2NtcHVpbnQodGFyZ2V0SUQsID09LCBtX3RhcmdldC5pZCk7CiAgICAgICAgIG1fbWVzc2Fn
ZSA9IG1lc3NhZ2U7CiAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQobV9tYWluTG9vcC5nZXQoKSk7
CiAgICAgfQpAQCAtMTcwLDE5ICsxNzAsMTkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9z
ZXNzaW9uID0gc2Vzc2lvbjsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RG
aW5pc2hlcyhHX09CSkVDVChtX3Nlc3Npb24pKTsKLSAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9h
dXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2FwcGxpY2F0aW9uX2luZm8oc2Vzc2lvbikpOworICAgICAg
ICBnX2Fzc2VydF9udWxsKHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2FwcGxpY2F0aW9u
X2luZm8oc2Vzc2lvbikpOwogICAgICAgICBXZWJLaXRBcHBsaWNhdGlvbkluZm8qIGluZm8gPSB3
ZWJraXRfYXBwbGljYXRpb25faW5mb19uZXcoKTsKICAgICAgICAgd2Via2l0X2FwcGxpY2F0aW9u
X2luZm9fc2V0X25hbWUoaW5mbywgIkF1dG9tYXRpb25UZXN0QnJvd3NlciIpOwogICAgICAgICB3
ZWJraXRfYXBwbGljYXRpb25faW5mb19zZXRfdmVyc2lvbihpbmZvLCBXRUJLSVRfTUFKT1JfVkVS
U0lPTiwgV0VCS0lUX01JTk9SX1ZFUlNJT04sIFdFQktJVF9NSUNST19WRVJTSU9OKTsKICAgICAg
ICAgd2Via2l0X2F1dG9tYXRpb25fc2Vzc2lvbl9zZXRfYXBwbGljYXRpb25faW5mbyhzZXNzaW9u
LCBpbmZvKTsKICAgICAgICAgd2Via2l0X2FwcGxpY2F0aW9uX2luZm9fdW5yZWYoaW5mbyk7Ci0g
ICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9hdXRvbWF0aW9uX3Nlc3Npb25fZ2V0X2FwcGxpY2F0aW9u
X2luZm8oc2Vzc2lvbikgPT0gaW5mbyk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2F1
dG9tYXRpb25fc2Vzc2lvbl9nZXRfYXBwbGljYXRpb25faW5mbyhzZXNzaW9uKSA9PSBpbmZvKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBhdXRvbWF0aW9uU3RhcnRlZENhbGxiYWNrKFdlYktp
dFdlYkNvbnRleHQqIHdlYkNvbnRleHQsIFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9u
LCBBdXRvbWF0aW9uVGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYkNvbnRl
eHQgPT0gdGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lU
X0lTX0FVVE9NQVRJT05fU0VTU0lPTihzZXNzaW9uKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUo
d2ViQ29udGV4dCA9PSB0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkpOworICAgICAgICBnX2Fzc2Vy
dF90cnVlKFdFQktJVF9JU19BVVRPTUFUSU9OX1NFU1NJT04oc2Vzc2lvbikpOwogICAgICAgICB0
ZXN0LT5hdXRvbWF0aW9uU3RhcnRlZChzZXNzaW9uKTsKICAgICB9CiAKQEAgLTIwOCw3ICsyMDgs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAg
ICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IGNhcGFiaWxpdGllcyA9IGFkb3B0R1JlZihnX2RidXNfY29u
bmVjdGlvbl9jYWxsX2ZpbmlzaChHX0RCVVNfQ09OTkVDVElPTihzb3VyY2UpLCByZXN1bHQsIG51
bGxwdHIpKTsKLSAgICAgICAgICAgICAgICBnX2Fzc2VydChjYXBhYmlsaXRpZXMuZ2V0KCkpOwor
ICAgICAgICAgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoY2FwYWJpbGl0aWVzLmdldCgpKTsKICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyKiBicm93c2VyTmFtZTsKICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyKiBicm93c2VyVmVyc2lvbjsKICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfZ2V0
KGNhcGFiaWxpdGllcy5nZXQoKSwgIigmcyZzKSIsICZicm93c2VyTmFtZSwgJmJyb3dzZXJWZXJz
aW9uKTsKQEAgLTIzNCwxMSArMjM0LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICht
X3RhcmdldC5pc1BhaXJlZCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZ19hc3NlcnQo
bV90YXJnZXQuaWQpOworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KG1fdGFyZ2V0LmlkLCAhPSwg
MCk7CiAgICAgICAgIGdfZGJ1c19jb25uZWN0aW9uX2NhbGwobV9jb25uZWN0aW9uLmdldCgpLCBu
dWxscHRyLCAiL29yZy93ZWJraXQvSW5zcGVjdG9yIiwgIm9yZy53ZWJraXQuSW5zcGVjdG9yIiwK
ICAgICAgICAgICAgICJTZXR1cCIsIGdfdmFyaWFudF9uZXcoIih0dCkiLCBtX2Nvbm5lY3Rpb25J
RCwgbV90YXJnZXQuaWQpLCBudWxscHRyLCBHX0RCVVNfQ0FMTF9GTEFHU19OT19BVVRPX1NUQVJU
LCAtMSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1
bihtX21haW5Mb29wLmdldCgpKTsKLSAgICAgICAgZ19hc3NlcnQobV90YXJnZXQuaXNQYWlyZWQp
OworICAgICAgICBnX2Fzc2VydF90cnVlKG1fdGFyZ2V0LmlzUGFpcmVkKTsKICAgICB9CiAKICAg
ICBib29sIGNyZWF0ZVRvcExldmVsQnJvd3NpbmdDb250ZXh0KFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcpCkBAIC0yNTEsOCArMjUxLDggQEAgcHVibGljOgogICAgICAgICBzZW5kQ29tbWFuZFRvQmFj
a2VuZCgiY3JlYXRlQnJvd3NpbmdDb250ZXh0Iik7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1biht
X21haW5Mb29wLmdldCgpKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1f
c2Vzc2lvbiwgc2lnbmFsSUQpOwotICAgICAgICBnX2Fzc2VydChtX2NyZWF0ZVdlYlZpZXdXYXND
YWxsZWQpOwotICAgICAgICBnX2Fzc2VydCghbV9tZXNzYWdlLmlzTnVsbCgpKTsKKyAgICAgICAg
Z19hc3NlcnRfdHJ1ZShtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQpOworICAgICAgICBnX2Fzc2Vy
dF9mYWxzZShtX21lc3NhZ2UuaXNOdWxsKCkpOwogICAgICAgICBtX3dlYlZpZXdGb3JBdXRvbWF0
aW9uID0gbnVsbHB0cjsKIAogICAgICAgICBpZiAoc3Ryc3RyKG1fbWVzc2FnZS5kYXRhKCksICJU
aGUgcmVtb3RlIHNlc3Npb24gZmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyBicm93c2luZyBjb250ZXh0
IikpCkBAIC0yNzcsMzMgKzI3NywzMyBAQCBzdGF0aWMgdm9pZCB0ZXN0QXV0b21hdGlvblNlc3Np
b25SZXF1ZXN0U2Vzc2lvbihBdXRvbWF0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9pbgogewogICAg
IFN0cmluZyBzZXNzaW9uSUQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CiAgICAgLy8g
V2ViS2l0QXV0b21hdGlvblNlc3Npb246OmF1dG9tYXRpb24tc3RhcnRlZCBpcyBuZXZlciBlbWl0
dGVkIGlmIGF1dG9tYXRpb24gaXMgbm90IGVuYWJsZWQuCi0gICAgZ19hc3NlcnQoIXdlYmtpdF93
ZWJfY29udGV4dF9pc19hdXRvbWF0aW9uX2FsbG93ZWQodGVzdC0+bV93ZWJDb250ZXh0LmdldCgp
KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRpb25f
YWxsb3dlZCh0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkpKTsKICAgICBhdXRvKiBzZXNzaW9uID0g
dGVzdC0+cmVxdWVzdFNlc3Npb24oc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCkpOwotICAgIGdfYXNz
ZXJ0KCFzZXNzaW9uKTsKKyAgICBnX2Fzc2VydF9udWxsKHNlc3Npb24pOwogCiAgICAgd2Via2l0
X3dlYl9jb250ZXh0X3NldF9hdXRvbWF0aW9uX2FsbG93ZWQodGVzdC0+bV93ZWJDb250ZXh0Lmdl
dCgpLCBUUlVFKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfaXNfYXV0b21hdGlv
bl9hbGxvd2VkKHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3RydWUo
d2Via2l0X3dlYl9jb250ZXh0X2lzX2F1dG9tYXRpb25fYWxsb3dlZCh0ZXN0LT5tX3dlYkNvbnRl
eHQuZ2V0KCkpKTsKIAogICAgIC8vIFRoZXJlIGNhbid0IGJlIG1vcmUgdGhhbiBvbmUgY29udGV4
dCB3aXRoIGF1dG9tYXRpb24gZW5hYmxlZAogICAgIEdSZWZQdHI8V2ViS2l0V2ViQ29udGV4dD4g
b3RoZXJDb250ZXh0ID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJfY29udGV4dF9uZXcoKSk7CiAgICAg
dGVzdC0+cmVtb3ZlTG9nRmF0YWxGbGFnKEdfTE9HX0xFVkVMX1dBUk5JTkcpOwogICAgIHdlYmtp
dF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9hbGxvd2VkKG90aGVyQ29udGV4dC5nZXQoKSwg
VFJVRSk7CiAgICAgdGVzdC0+YWRkTG9nRmF0YWxGbGFnKEdfTE9HX0xFVkVMX1dBUk5JTkcpOwot
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX2NvbnRleHRfaXNfYXV0b21hdGlvbl9hbGxvd2VkKG90
aGVyQ29udGV4dC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfY29udGV4
dF9pc19hdXRvbWF0aW9uX2FsbG93ZWQob3RoZXJDb250ZXh0LmdldCgpKSk7CiAKICAgICBzZXNz
aW9uID0gdGVzdC0+cmVxdWVzdFNlc3Npb24oc2Vzc2lvbklELnV0ZjgoKS5kYXRhKCkpOwogICAg
IGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfYXV0b21hdGlvbl9zZXNzaW9uX2dldF9pZChzZXNzaW9u
KSwgPT0sIHNlc3Npb25JRC51dGY4KCkuZGF0YSgpKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHRl
c3QtPm1fdGFyZ2V0LmlkLCA+LCAwKTsKICAgICBBU1NFUlRfQ01QX0NTVFJJTkcodGVzdC0+bV90
YXJnZXQubmFtZSwgPT0sIHNlc3Npb25JRC51dGY4KCkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5t
X3RhcmdldC5pc1BhaXJlZCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV90YXJnZXQuaXNQ
YWlyZWQpOwogCiAgICAgLy8gV2lsbCBmYWlsIHRvIGNyZWF0ZSBhIGJyb3dzaW5nIGNvbnRleHQg
d2hlbiBub3QgY3JlYXRpbmcgYSB3ZWIgdmlldyAob3Igbm90IGhhbmRsaW5nIHRoZSBzaWduYWwp
LgotICAgIGdfYXNzZXJ0KCF0ZXN0LT5jcmVhdGVUb3BMZXZlbEJyb3dzaW5nQ29udGV4dChudWxs
cHRyKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+Y3JlYXRlVG9wTGV2ZWxCcm93c2luZ0Nv
bnRleHQobnVsbHB0cikpOwogCiAgICAgLy8gV2lsbCBhbHNvIGZhaWwgaWYgdGhlIHdlYiB2aWV3
IGlzIG5vdCBjb250cm9sbGVkIGJ5IGF1dG9tYXRpb24uCiAgICAgYXV0byB3ZWJWaWV3ID0gVGVz
dDo6YWRvcHRWaWV3KFRlc3Q6OmNyZWF0ZVdlYlZpZXcodGVzdC0+bV93ZWJDb250ZXh0LmdldCgp
KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19pc19jb250cm9sbGVkX2J5X2F1dG9t
YXRpb24od2ViVmlldy5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5jcmVhdGVUb3BMZXZl
bEJyb3dzaW5nQ29udGV4dCh3ZWJWaWV3LmdldCgpKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X3dlYl92aWV3X2lzX2NvbnRyb2xsZWRfYnlfYXV0b21hdGlvbih3ZWJWaWV3LmdldCgpKSk7
CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+Y3JlYXRlVG9wTGV2ZWxCcm93c2luZ0NvbnRleHQo
d2ViVmlldy5nZXQoKSkpOwogCiAgICAgLy8gQW5kIHdpbGwgd29yayB3aXRoIGEgcHJvcGVyIHdl
YiB2aWV3LgogICAgIHdlYlZpZXcgPSBUZXN0OjphZG9wdFZpZXcoZ19vYmplY3RfbmV3KFdFQktJ
VF9UWVBFX1dFQl9WSUVXLApAQCAtMzEzLDggKzMxMyw4IEBAIHN0YXRpYyB2b2lkIHRlc3RBdXRv
bWF0aW9uU2Vzc2lvblJlcXVlc3RTZXNzaW9uKEF1dG9tYXRpb25UZXN0KiB0ZXN0LCBnY29uc3Rw
b2luCiAgICAgICAgICJ3ZWItY29udGV4dCIsIHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwKICAg
ICAgICAgImlzLWNvbnRyb2xsZWQtYnktYXV0b21hdGlvbiIsIFRSVUUsCiAgICAgICAgIG51bGxw
dHIpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRv
bWF0aW9uKHdlYlZpZXcuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5jcmVhdGVUb3BMZXZl
bEJyb3dzaW5nQ29udGV4dCh3ZWJWaWV3LmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJr
aXRfd2ViX3ZpZXdfaXNfY29udHJvbGxlZF9ieV9hdXRvbWF0aW9uKHdlYlZpZXcuZ2V0KCkpKTsK
KyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmNyZWF0ZVRvcExldmVsQnJvd3NpbmdDb250ZXh0KHdl
YlZpZXcuZ2V0KCkpKTsKIAogICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfYXV0b21hdGlvbl9h
bGxvd2VkKHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwgRkFMU0UpOwogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RCYWNrRm9yd2FyZExpc3Qu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RCYWNrRm9yd2Fy
ZExpc3QuY3BwCmluZGV4IDAzNjNlNGQ2NTdjYjI1ZDY1MmVkMWQyODFhMWNjODdiNTQ5MjMyZmIu
Ljg1ZDJmYzAyMmEwMTlhYTE3ZTUwYmVhYmViMzg3YmFhNTJkN2M2YmUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QmFja0ZvcndhcmRMaXN0LmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEJhY2tGb3J3
YXJkTGlzdC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQg
Y2hlY2tJdGVtKFdlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0sIGNvbnN0IGNoYXIqIHRp
dGxlLCBjb25zdCBjaGFyKiB1cmksIGNvbnN0IGNoYXIqIG9yaWdpbmFsVVJJKQogICAgIHsKLSAg
ICAgICAgZ19hc3NlcnQoaXRlbSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoaXRlbSk7CiAg
ICAgICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9nZXRf
dXJpKGl0ZW0pLCA9PSwgdXJpKTsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9iYWNr
X2ZvcndhcmRfbGlzdF9pdGVtX2dldF90aXRsZShpdGVtKSwgPT0gLCB0aXRsZSk7CiAgICAgICAg
IGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfaXRlbV9nZXRfb3JpZ2lu
YWxfdXJpKGl0ZW0pLCA9PSwgb3JpZ2luYWxVUkkpOwpAQCAtNzQsMjEgKzc0LDIxIEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyB2b2lkIGNoZWNrSXRlbUluZGV4KFdlYktpdEJhY2tGb3J3YXJkTGlz
dCogbGlzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlz
dF9nZXRfbnRoX2l0ZW0obGlzdCwgLTEpID09IHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRf
YmFja19pdGVtKGxpc3QpKTsKLSAgICAgICAgZ19hc3NlcnQod2Via2l0X2JhY2tfZm9yd2FyZF9s
aXN0X2dldF9udGhfaXRlbShsaXN0LCAwKSA9PSB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0
X2N1cnJlbnRfaXRlbShsaXN0KSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9iYWNrX2Zvcndh
cmRfbGlzdF9nZXRfbnRoX2l0ZW0obGlzdCwgMSkgPT0gd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0
X2dldF9mb3J3YXJkX2l0ZW0obGlzdCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9i
YWNrX2ZvcndhcmRfbGlzdF9nZXRfbnRoX2l0ZW0obGlzdCwgLTEpID09IHdlYmtpdF9iYWNrX2Zv
cndhcmRfbGlzdF9nZXRfYmFja19pdGVtKGxpc3QpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3
ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X250aF9pdGVtKGxpc3QsIDApID09IHdlYmtpdF9i
YWNrX2ZvcndhcmRfbGlzdF9nZXRfY3VycmVudF9pdGVtKGxpc3QpKTsKKyAgICAgICAgZ19hc3Nl
cnRfdHJ1ZSh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X250aF9pdGVtKGxpc3QsIDEpID09
IHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfZm9yd2FyZF9pdGVtKGxpc3QpKTsKICAgICB9
CiAKICAgICBzdGF0aWMgdm9pZCBjaGVja0xpc3QoV2ViS2l0QmFja0ZvcndhcmRMaXN0KiBsaXN0
LCB1bnNpZ25lZCB0eXBlLCBXZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtKiogaXRlbXMsIHVuc2ln
bmVkIG5JdGVtcykKICAgICB7CiAgICAgICAgIEdMaXN0KiBsaXN0SXRlbXMgPSB0eXBlID09IEJh
Y2tGb3J3YXJkTGlzdFRlc3Q6OkJhY2t3YXJkID8gd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dl
dF9iYWNrX2xpc3QobGlzdCkgOgogICAgICAgICAgICAgd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0
X2dldF9mb3J3YXJkX2xpc3QobGlzdCk7Ci0gICAgICAgIGdfYXNzZXJ0KGxpc3RJdGVtcyk7Cisg
ICAgICAgIGdfYXNzZXJ0X25vbm51bGwobGlzdEl0ZW1zKTsKIAogICAgICAgICB1bnNpZ25lZCBp
ID0gMDsKICAgICAgICAgZm9yIChHTGlzdCogbGlzdEl0ZW0gPSBsaXN0SXRlbXM7IGxpc3RJdGVt
OyBsaXN0SXRlbSA9IGdfbGlzdF9uZXh0KGxpc3RJdGVtKSwgaSsrKSB7CiAgICAgICAgICAgICBn
X2Fzc2VydF9jbXB1aW50KGksIDwsIG5JdGVtcyk7Ci0gICAgICAgICAgICBnX2Fzc2VydChsaXN0
SXRlbS0+ZGF0YSA9PSBpdGVtc1tpXSk7CisgICAgICAgICAgICBnX2Fzc2VydF90cnVlKGxpc3RJ
dGVtLT5kYXRhID09IGl0ZW1zW2ldKTsKICAgICAgICAgfQogICAgICAgICBnX2xpc3RfZnJlZShs
aXN0SXRlbXMpOwogICAgIH0KQEAgLTk4LDIxICs5OCwyMSBAQCBwdWJsaWM6CiAgICAgICAgIHRl
c3QtPm1faGFzQ2hhbmdlZCA9IHRydWU7CiAKICAgICAgICAgaWYgKHRlc3QtPm1fY2hhbmdlZEZs
YWdzICYgQmFja0ZvcndhcmRMaXN0VGVzdDo6QWRkZWRJdGVtKSB7Ci0gICAgICAgICAgICBnX2Fz
c2VydChXRUJLSVRfSVNfQkFDS19GT1JXQVJEX0xJU1RfSVRFTShhZGRlZEl0ZW0pKTsKKyAgICAg
ICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX0JBQ0tfRk9SV0FSRF9MSVNUX0lURU0oYWRk
ZWRJdGVtKSk7CiAgICAgICAgICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKGFkZGVkSXRlbSkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIGdfYXNzZXJ0KCFhZGRlZEl0ZW0pOworICAgICAgICAgICAgZ19hc3NlcnRfbnVsbChhZGRl
ZEl0ZW0pOwogCiAgICAgICAgIGlmICh0ZXN0LT5tX2NoYW5nZWRGbGFncyAmIEJhY2tGb3J3YXJk
TGlzdFRlc3Q6OlJlbW92ZWRJdGVtcykgewotICAgICAgICAgICAgZ19hc3NlcnQocmVtb3ZlZEl0
ZW1zKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X25vbm51bGwocmVtb3ZlZEl0ZW1zKTsKICAgICAg
ICAgICAgIGZvciAoR0xpc3QqIGl0ZXIgPSByZW1vdmVkSXRlbXM7IGl0ZXI7IGl0ZXIgPSBpdGVy
LT5uZXh0KSB7Ci0gICAgICAgICAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX0JBQ0tfRk9SV0FS
RF9MSVNUX0lURU0oaXRlci0+ZGF0YSkpOworICAgICAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUo
V0VCS0lUX0lTX0JBQ0tfRk9SV0FSRF9MSVNUX0lURU0oaXRlci0+ZGF0YSkpOwogICAgICAgICAg
ICAgICAgIGlmICh0ZXN0LT5tX2V4cGVjdGVkUmVtb3ZlZEl0ZW1zKQotICAgICAgICAgICAgICAg
ICAgICBnX2Fzc2VydChnX2xpc3RfZmluZCh0ZXN0LT5tX2V4cGVjdGVkUmVtb3ZlZEl0ZW1zLCBp
dGVyLT5kYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoZ19saXN0
X2ZpbmQodGVzdC0+bV9leHBlY3RlZFJlbW92ZWRJdGVtcywgaXRlci0+ZGF0YSkpOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZ19hc3NlcnQoIXJlbW92ZWRJ
dGVtcyk7CisgICAgICAgICAgICBnX2Fzc2VydF9udWxsKHJlbW92ZWRJdGVtcyk7CiAgICAgfQog
CiAgICAgQmFja0ZvcndhcmRMaXN0VGVzdCgpCkBAIC0xMzQsNyArMTM0LDcgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgbV9oYXNDaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIFdlYlZpZXdUZXN0
Ojp3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLSAgICAgICAgZ19hc3NlcnQobV9oYXNDaGFuZ2Vk
KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2hhc0NoYW5nZWQpOwogICAgIH0KIAogICAgIHZv
aWQgd2FpdFVudGlsTG9hZEZpbmlzaGVkQW5kQ2hlY2tSZW1vdmVkSXRlbXMoR0xpc3QqIHJlbW92
ZWRJdGVtcykKQEAgLTE1NCw2NiArMTU0LDY2IEBAIHN0YXRpYyB2b2lkIHRlc3RCYWNrRm9yd2Fy
ZExpc3ROYXZpZ2F0aW9uKEJhY2tGb3J3YXJkTGlzdFRlc3QqIHRlc3QsIGdjb25zdHBvaW50CiB7
CiAgICAgV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbXNbMV07CiAKLSAgICBnX2Fzc2Vy
dCghd2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrKHRlc3QtPm1fd2ViVmlldykpOwotICAgIGdf
YXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2ZvcndhcmQodGVzdC0+bV93ZWJWaWV3KSk7
CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrKHRlc3QtPm1f
d2ViVmlldykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19jYW5fZ29fZm9y
d2FyZCh0ZXN0LT5tX3dlYlZpZXcpKTsKIAogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2Jh
Y2tfZm9yd2FyZF9saXN0X2dldF9sZW5ndGgodGVzdC0+bV9saXN0KSwgPT0sIDApOwotICAgIGdf
YXNzZXJ0KCF3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2N1cnJlbnRfaXRlbSh0ZXN0LT5t
X2xpc3QpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNr
X2l0ZW0odGVzdC0+bV9saXN0KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9iYWNrX2ZvcndhcmRf
bGlzdF9nZXRfZm9yd2FyZF9pdGVtKHRlc3QtPm1fbGlzdCkpOworICAgIGdfYXNzZXJ0X251bGwo
d2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9jdXJyZW50X2l0ZW0odGVzdC0+bV9saXN0KSk7
CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfaXRl
bSh0ZXN0LT5tX2xpc3QpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9iYWNrX2ZvcndhcmRf
bGlzdF9nZXRfZm9yd2FyZF9pdGVtKHRlc3QtPm1fbGlzdCkpOwogICAgIEJhY2tGb3J3YXJkTGlz
dFRlc3Q6OmNoZWNrSXRlbUluZGV4KHRlc3QtPm1fbGlzdCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtp
dF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfYmFja19saXN0KHRlc3QtPm1fbGlzdCkpOwotICAgIGdf
YXNzZXJ0KCF3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRfbGlzdCh0ZXN0LT5t
X2xpc3QpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRf
YmFja19saXN0KHRlc3QtPm1fbGlzdCkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2JhY2tf
Zm9yd2FyZF9saXN0X2dldF9mb3J3YXJkX2xpc3QodGVzdC0+bV9saXN0KSk7CiAKICAgICBDU3Ry
aW5nIHVyaVBhZ2UxID0ga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL1BhZ2UxIik7CiAgICAgdGVz
dC0+bV9jaGFuZ2VkRmxhZ3MgPSBCYWNrRm9yd2FyZExpc3RUZXN0OjpDdXJyZW50SXRlbSB8IEJh
Y2tGb3J3YXJkTGlzdFRlc3Q6OkFkZGVkSXRlbTsKICAgICB0ZXN0LT5sb2FkVVJJKHVyaVBhZ2Ux
LmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fz
c2VydCghd2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrKHRlc3QtPm1fd2ViVmlldykpOwotICAg
IGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2ZvcndhcmQodGVzdC0+bV93ZWJWaWV3
KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3X2Nhbl9nb19iYWNrKHRlc3Qt
Pm1fd2ViVmlldykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19jYW5fZ29f
Zm9yd2FyZCh0ZXN0LT5tX3dlYlZpZXcpKTsKIAogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0
X2JhY2tfZm9yd2FyZF9saXN0X2dldF9sZW5ndGgodGVzdC0+bV9saXN0KSwgPT0sIDEpOwogICAg
IFdlYktpdEJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW1QYWdlMSA9IHdlYmtpdF9iYWNrX2Zvcndh
cmRfbGlzdF9nZXRfY3VycmVudF9pdGVtKHRlc3QtPm1fbGlzdCk7CiAgICAgQmFja0ZvcndhcmRM
aXN0VGVzdDo6Y2hlY2tJdGVtKGl0ZW1QYWdlMSwgIlBhZ2UxIiwgdXJpUGFnZTEuZGF0YSgpLCB1
cmlQYWdlMS5kYXRhKCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfYmFja19mb3J3YXJkX2xpc3Rf
Z2V0X2JhY2tfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2JhY2tf
Zm9yd2FyZF9saXN0X2dldF9mb3J3YXJkX2l0ZW0odGVzdC0+bV9saXN0KSk7CisgICAgZ19hc3Nl
cnRfbnVsbCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfaXRlbSh0ZXN0LT5tX2xp
c3QpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfZm9y
d2FyZF9pdGVtKHRlc3QtPm1fbGlzdCkpOwogICAgIEJhY2tGb3J3YXJkTGlzdFRlc3Q6OmNoZWNr
SXRlbUluZGV4KHRlc3QtPm1fbGlzdCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9iYWNrX2Zvcndh
cmRfbGlzdF9nZXRfYmFja19saXN0KHRlc3QtPm1fbGlzdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJr
aXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRfbGlzdCh0ZXN0LT5tX2xpc3QpKTsKKyAg
ICBnX2Fzc2VydF9udWxsKHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfYmFja19saXN0KHRl
c3QtPm1fbGlzdCkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0
X2dldF9mb3J3YXJkX2xpc3QodGVzdC0+bV9saXN0KSk7CiAKICAgICBDU3RyaW5nIHVyaVBhZ2Uy
ID0ga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL1BhZ2UyIik7CiAgICAgdGVzdC0+bV9jaGFuZ2Vk
RmxhZ3MgPSBCYWNrRm9yd2FyZExpc3RUZXN0OjpDdXJyZW50SXRlbSB8IEJhY2tGb3J3YXJkTGlz
dFRlc3Q6OkFkZGVkSXRlbTsKICAgICB0ZXN0LT5sb2FkVVJJKHVyaVBhZ2UyLmRhdGEoKSk7CiAg
ICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCh3ZWJraXRf
d2ViX3ZpZXdfY2FuX2dvX2JhY2sodGVzdC0+bV93ZWJWaWV3KSk7Ci0gICAgZ19hc3NlcnQoIXdl
YmtpdF93ZWJfdmlld19jYW5fZ29fZm9yd2FyZCh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICBnX2Fz
c2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19jYW5fZ29fYmFjayh0ZXN0LT5tX3dlYlZpZXcpKTsK
KyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2ZvcndhcmQodGVzdC0+
bV93ZWJWaWV3KSk7CiAKICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9iYWNrX2ZvcndhcmRf
bGlzdF9nZXRfbGVuZ3RoKHRlc3QtPm1fbGlzdCksID09LCAyKTsKICAgICBXZWJLaXRCYWNrRm9y
d2FyZExpc3RJdGVtKiBpdGVtUGFnZTIgPSB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2N1
cnJlbnRfaXRlbSh0ZXN0LT5tX2xpc3QpOwogICAgIEJhY2tGb3J3YXJkTGlzdFRlc3Q6OmNoZWNr
SXRlbShpdGVtUGFnZTIsICJQYWdlMiIsIHVyaVBhZ2UyLmRhdGEoKSwgdXJpUGFnZTIuZGF0YSgp
KTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfaXRlbSh0
ZXN0LT5tX2xpc3QpID09IGl0ZW1QYWdlMSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9iYWNrX2Zv
cndhcmRfbGlzdF9nZXRfZm9yd2FyZF9pdGVtKHRlc3QtPm1fbGlzdCkpOworICAgIGdfYXNzZXJ0
X3RydWUod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2l0ZW0odGVzdC0+bV9saXN0
KSA9PSBpdGVtUGFnZTEpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2JhY2tfZm9yd2FyZF9s
aXN0X2dldF9mb3J3YXJkX2l0ZW0odGVzdC0+bV9saXN0KSk7CiAgICAgQmFja0ZvcndhcmRMaXN0
VGVzdDo6Y2hlY2tJdGVtSW5kZXgodGVzdC0+bV9saXN0KTsKICAgICBpdGVtc1swXSA9IGl0ZW1Q
YWdlMTsKICAgICBCYWNrRm9yd2FyZExpc3RUZXN0OjpjaGVja0xpc3QodGVzdC0+bV9saXN0LCBC
YWNrRm9yd2FyZExpc3RUZXN0OjpCYWNrd2FyZCwgaXRlbXMsIDEpOwotICAgIGdfYXNzZXJ0KCF3
ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRfbGlzdCh0ZXN0LT5tX2xpc3QpKTsK
KyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfZm9yd2FyZF9s
aXN0KHRlc3QtPm1fbGlzdCkpOwogCiAgICAgdGVzdC0+bV9jaGFuZ2VkRmxhZ3MgPSBCYWNrRm9y
d2FyZExpc3RUZXN0OjpDdXJyZW50SXRlbTsKICAgICB0ZXN0LT5nb0JhY2soKTsKICAgICB0ZXN0
LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3Zp
ZXdfY2FuX2dvX2JhY2sodGVzdC0+bV93ZWJWaWV3KSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dl
Yl92aWV3X2Nhbl9nb19mb3J3YXJkKHRlc3QtPm1fd2ViVmlldykpOworICAgIGdfYXNzZXJ0X2Zh
bHNlKHdlYmtpdF93ZWJfdmlld19jYW5fZ29fYmFjayh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICBn
X2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19jYW5fZ29fZm9yd2FyZCh0ZXN0LT5tX3dlYlZp
ZXcpKTsKIAogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dl
dF9sZW5ndGgodGVzdC0+bV9saXN0KSwgPT0sIDIpOwotICAgIGdfYXNzZXJ0KGl0ZW1QYWdlMSA9
PSB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2N1cnJlbnRfaXRlbSh0ZXN0LT5tX2xpc3Qp
KTsKKyAgICBnX2Fzc2VydF90cnVlKGl0ZW1QYWdlMSA9PSB3ZWJraXRfYmFja19mb3J3YXJkX2xp
c3RfZ2V0X2N1cnJlbnRfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKICAgICBCYWNrRm9yd2FyZExpc3RU
ZXN0OjpjaGVja0l0ZW0od2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9jdXJyZW50X2l0ZW0o
dGVzdC0+bV9saXN0KSwgIlBhZ2UxIiwgdXJpUGFnZTEuZGF0YSgpLCB1cmlQYWdlMS5kYXRhKCkp
OwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfaXRlbSh0
ZXN0LT5tX2xpc3QpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0
X2ZvcndhcmRfaXRlbSh0ZXN0LT5tX2xpc3QpID09IGl0ZW1QYWdlMik7CisgICAgZ19hc3NlcnRf
bnVsbCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfaXRlbSh0ZXN0LT5tX2xpc3Qp
KTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfZm9yd2Fy
ZF9pdGVtKHRlc3QtPm1fbGlzdCkgPT0gaXRlbVBhZ2UyKTsKICAgICBCYWNrRm9yd2FyZExpc3RU
ZXN0OjpjaGVja0l0ZW1JbmRleCh0ZXN0LT5tX2xpc3QpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRf
YmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfbGlzdCh0ZXN0LT5tX2xpc3QpKTsKKyAgICBnX2Fz
c2VydF9udWxsKHdlYmtpdF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfYmFja19saXN0KHRlc3QtPm1f
bGlzdCkpOwogICAgIGl0ZW1zWzBdID0gaXRlbVBhZ2UyOwogICAgIEJhY2tGb3J3YXJkTGlzdFRl
c3Q6OmNoZWNrTGlzdCh0ZXN0LT5tX2xpc3QsIEJhY2tGb3J3YXJkTGlzdFRlc3Q6OkZvcndhcmQs
IGl0ZW1zLCAxKTsKIApAQCAtMjIxLDI0ICsyMjEsMjQgQEAgc3RhdGljIHZvaWQgdGVzdEJhY2tG
b3J3YXJkTGlzdE5hdmlnYXRpb24oQmFja0ZvcndhcmRMaXN0VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnQKICAgICB0ZXN0LT5nb0ZvcndhcmQoKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNo
ZWQoKTsKIAotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19jYW5fZ29fYmFjayh0ZXN0LT5t
X3dlYlZpZXcpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2Nhbl9nb19mb3J3YXJk
KHRlc3QtPm1fd2ViVmlldykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X2Nh
bl9nb19iYWNrKHRlc3QtPm1fd2ViVmlldykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93
ZWJfdmlld19jYW5fZ29fZm9yd2FyZCh0ZXN0LT5tX3dlYlZpZXcpKTsKIAogICAgIGdfYXNzZXJ0
X2NtcHVpbnQod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9sZW5ndGgodGVzdC0+bV9saXN0
KSwgPT0sIDIpOwotICAgIGdfYXNzZXJ0KGl0ZW1QYWdlMiA9PSB3ZWJraXRfYmFja19mb3J3YXJk
X2xpc3RfZ2V0X2N1cnJlbnRfaXRlbSh0ZXN0LT5tX2xpc3QpKTsKKyAgICBnX2Fzc2VydF90cnVl
KGl0ZW1QYWdlMiA9PSB3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2N1cnJlbnRfaXRlbSh0
ZXN0LT5tX2xpc3QpKTsKICAgICBCYWNrRm9yd2FyZExpc3RUZXN0OjpjaGVja0l0ZW0od2Via2l0
X2JhY2tfZm9yd2FyZF9saXN0X2dldF9jdXJyZW50X2l0ZW0odGVzdC0+bV9saXN0KSwgIlBhZ2Uy
IiwgdXJpUGFnZTIuZGF0YSgpLCB1cmlQYWdlMi5kYXRhKCkpOwotICAgIGdfYXNzZXJ0KHdlYmtp
dF9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfYmFja19pdGVtKHRlc3QtPm1fbGlzdCkgPT0gaXRlbVBh
Z2UxKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3YXJk
X2l0ZW0odGVzdC0+bV9saXN0KSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfYmFja19mb3J3
YXJkX2xpc3RfZ2V0X2JhY2tfaXRlbSh0ZXN0LT5tX2xpc3QpID09IGl0ZW1QYWdlMSk7CisgICAg
Z19hc3NlcnRfbnVsbCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRfaXRlbSh0
ZXN0LT5tX2xpc3QpKTsKICAgICBCYWNrRm9yd2FyZExpc3RUZXN0OjpjaGVja0l0ZW1JbmRleCh0
ZXN0LT5tX2xpc3QpOwogICAgIGl0ZW1zWzBdID0gaXRlbVBhZ2UxOwogICAgIEJhY2tGb3J3YXJk
TGlzdFRlc3Q6OmNoZWNrTGlzdCh0ZXN0LT5tX2xpc3QsIEJhY2tGb3J3YXJkTGlzdFRlc3Q6OkJh
Y2t3YXJkLCBpdGVtcywgMSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9iYWNrX2ZvcndhcmRfbGlz
dF9nZXRfZm9yd2FyZF9saXN0KHRlc3QtPm1fbGlzdCkpOworICAgIGdfYXNzZXJ0X251bGwod2Vi
a2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3YXJkX2xpc3QodGVzdC0+bV9saXN0KSk7CiAK
ICAgICB0ZXN0LT5tX2NoYW5nZWRGbGFncyA9IEJhY2tGb3J3YXJkTGlzdFRlc3Q6OkN1cnJlbnRJ
dGVtOwogICAgIHRlc3QtPmdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKGl0ZW1QYWdlMSk7CiAgICAg
dGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydChpdGVtUGFnZTEg
PT0gd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9jdXJyZW50X2l0ZW0odGVzdC0+bV9saXN0
KSk7CisgICAgZ19hc3NlcnRfdHJ1ZShpdGVtUGFnZTEgPT0gd2Via2l0X2JhY2tfZm9yd2FyZF9s
aXN0X2dldF9jdXJyZW50X2l0ZW0odGVzdC0+bV9saXN0KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRl
c3RCYWNrRm9yd2FyZExpc3RMaW1pdEFuZENhY2hlKEJhY2tGb3J3YXJkTGlzdFRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCkBAIC0yNjUsMTYgKzI2NSwxNiBAQCBzdGF0aWMgdm9pZCB0ZXN0QmFj
a0ZvcndhcmRMaXN0TGltaXRBbmRDYWNoZShCYWNrRm9yd2FyZExpc3RUZXN0KiB0ZXN0LCBnY29u
c3Rwbwogc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlZpZXdTZXNzaW9uU3RhdGUoQmFja0Zvcndh
cmRMaXN0VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBXZWJLaXRXZWJWaWV3U2Vz
c2lvblN0YXRlKiBzdGF0ZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2Vzc2lvbl9zdGF0ZSh0ZXN0
LT5tX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KHN0YXRlKTsKKyAgICBnX2Fzc2VydF9ub25udWxs
KHN0YXRlKTsKICAgICBhdXRvIHZpZXcgPSBUZXN0OjphZG9wdFZpZXcoVGVzdDo6Y3JlYXRlV2Vi
VmlldygpKTsKICAgICBXZWJLaXRCYWNrRm9yd2FyZExpc3QqIGJmTGlzdCA9IHdlYmtpdF93ZWJf
dmlld19nZXRfYmFja19mb3J3YXJkX2xpc3Qodmlldy5nZXQoKSk7CiAgICAgZ19hc3NlcnRfY21w
dWludCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2xlbmd0aChiZkxpc3QpLCA9PSwgMCk7
CiAgICAgd2Via2l0X3dlYl92aWV3X3Jlc3RvcmVfc2Vzc2lvbl9zdGF0ZSh2aWV3LmdldCgpLCBz
dGF0ZSk7CiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0
X2xlbmd0aChiZkxpc3QpLCA9PSwgMCk7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGRhdGEgPSBhZG9w
dEdSZWYod2Via2l0X3dlYl92aWV3X3Nlc3Npb25fc3RhdGVfc2VyaWFsaXplKHN0YXRlKSk7Ci0g
ICAgZ19hc3NlcnQoZGF0YSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRhKTsKICAgICBzdGF0
ZSA9IHdlYmtpdF93ZWJfdmlld19zZXNzaW9uX3N0YXRlX25ldyhkYXRhLmdldCgpKTsKLSAgICBn
X2Fzc2VydChzdGF0ZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChzdGF0ZSk7CiAgICAgdmlldyA9
IFRlc3Q6OmFkb3B0VmlldyhUZXN0OjpjcmVhdGVXZWJWaWV3KCkpOwogICAgIGJmTGlzdCA9IHdl
YmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3Qodmlldy5nZXQoKSk7CiAgICAgZ19h
c3NlcnRfY21wdWludCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2xlbmd0aChiZkxpc3Qp
LCA9PSwgMCk7CkBAIC0zMDIsNyArMzAyLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYlZp
ZXdTZXNzaW9uU3RhdGUoQmFja0ZvcndhcmRMaXN0VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnQKICAg
ICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAogICAgIHN0YXRlID0gd2Via2l0X3dl
Yl92aWV3X2dldF9zZXNzaW9uX3N0YXRlKHRlc3QtPm1fd2ViVmlldyk7Ci0gICAgZ19hc3NlcnQo
c3RhdGUpOworICAgIGdfYXNzZXJ0X25vbm51bGwoc3RhdGUpOwogCiAgICAgZ19hc3NlcnRfY21w
dWludCh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2xlbmd0aChiZkxpc3QpLCA9PSwgMCk7
CiAgICAgd2Via2l0X3dlYl92aWV3X3Jlc3RvcmVfc2Vzc2lvbl9zdGF0ZSh2aWV3LmdldCgpLCBz
dGF0ZSk7CkBAIC0zMTMsMTAgKzMxMywxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViVmll
d1Nlc3Npb25TdGF0ZShCYWNrRm9yd2FyZExpc3RUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludAogICAg
IEJhY2tGb3J3YXJkTGlzdFRlc3Q6OmNoZWNrSXRlbSh3ZWJraXRfYmFja19mb3J3YXJkX2xpc3Rf
Z2V0X250aF9pdGVtKGJmTGlzdCwgMSksICJQYWdlMyIsIHVyaVBhZ2UzLmRhdGEoKSwgdXJpUGFn
ZTMuZGF0YSgpKTsKIAogICAgIGRhdGEgPSBhZG9wdEdSZWYod2Via2l0X3dlYl92aWV3X3Nlc3Np
b25fc3RhdGVfc2VyaWFsaXplKHN0YXRlKSk7Ci0gICAgZ19hc3NlcnQoZGF0YSk7CisgICAgZ19h
c3NlcnRfbm9ubnVsbChkYXRhKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2Vzc2lvbl9zdGF0ZV91
bnJlZihzdGF0ZSk7CiAgICAgc3RhdGUgPSB3ZWJraXRfd2ViX3ZpZXdfc2Vzc2lvbl9zdGF0ZV9u
ZXcoZGF0YS5nZXQoKSk7Ci0gICAgZ19hc3NlcnQoc3RhdGUpOworICAgIGdfYXNzZXJ0X25vbm51
bGwoc3RhdGUpOwogCiAgICAgdmlldyA9IFRlc3Q6OmFkb3B0VmlldyhUZXN0OjpjcmVhdGVXZWJW
aWV3KCkpOwogICAgIGJmTGlzdCA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xp
c3Qodmlldy5nZXQoKSk7CkBAIC0zMzEsNyArMzMxLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktp
dFdlYlZpZXdTZXNzaW9uU3RhdGUoQmFja0ZvcndhcmRMaXN0VGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnQKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpbnZhbGlkU2Vzc2lvbkRhdGEgPSAiaW52YWxp
ZCBzZXNzaW9uIGRhdGEiOwogICAgIGRhdGEgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfc3RhdGlj
KGludmFsaWRTZXNzaW9uRGF0YSwgc3RybGVuKGludmFsaWRTZXNzaW9uRGF0YSkpKTsKLSAgICBn
X2Fzc2VydCghd2Via2l0X3dlYl92aWV3X3Nlc3Npb25fc3RhdGVfbmV3KGRhdGEuZ2V0KCkpKTsK
KyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJfdmlld19zZXNzaW9uX3N0YXRlX25ldyhkYXRh
LmdldCgpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJWaWV3U2Vzc2lvblN0YXRl
V2l0aEZvcm1EYXRhKEJhY2tGb3J3YXJkTGlzdFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCkBA
IC0zNDYsMTYgKzM0NiwxNiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0V2ViVmlld1Nlc3Npb25T
dGF0ZVdpdGhGb3JtRGF0YShCYWNrRm9yd2FyZExpc3RUZXN0KiB0ZXN0LAogICAgIHRlc3QtPndh
aXRVbnRpbExvYWRGaW5pc2hlZCgpOwogCiAgICAgV2ViS2l0V2ViVmlld1Nlc3Npb25TdGF0ZSog
c3RhdGUgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nlc3Npb25fc3RhdGUodGVzdC0+bV93ZWJWaWV3
KTsKLSAgICBnX2Fzc2VydChzdGF0ZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChzdGF0ZSk7CiAg
ICAgYXV0byB2aWV3ID0gVGVzdDo6YWRvcHRWaWV3KFRlc3Q6OmNyZWF0ZVdlYlZpZXcoKSk7CiAg
ICAgV2ViS2l0QmFja0ZvcndhcmRMaXN0KiBiZkxpc3QgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Jh
Y2tfZm9yd2FyZF9saXN0KHZpZXcuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0
X2JhY2tfZm9yd2FyZF9saXN0X2dldF9sZW5ndGgoYmZMaXN0KSwgPT0sIDApOwogICAgIHdlYmtp
dF93ZWJfdmlld19yZXN0b3JlX3Nlc3Npb25fc3RhdGUodmlldy5nZXQoKSwgc3RhdGUpOwogICAg
IGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9sZW5ndGgoYmZM
aXN0KSwgPT0sIDIpOwogICAgIEdSZWZQdHI8R0J5dGVzPiBkYXRhID0gYWRvcHRHUmVmKHdlYmtp
dF93ZWJfdmlld19zZXNzaW9uX3N0YXRlX3NlcmlhbGl6ZShzdGF0ZSkpOwotICAgIGdfYXNzZXJ0
KGRhdGEpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YSk7CiAgICAgc3RhdGUgPSB3ZWJraXRf
d2ViX3ZpZXdfc2Vzc2lvbl9zdGF0ZV9uZXcoZGF0YS5nZXQoKSk7Ci0gICAgZ19hc3NlcnQoc3Rh
dGUpOworICAgIGdfYXNzZXJ0X25vbm51bGwoc3RhdGUpOwogICAgIHZpZXcgPSBUZXN0OjphZG9w
dFZpZXcoVGVzdDo6Y3JlYXRlV2ViVmlldygpKTsKICAgICBiZkxpc3QgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2JhY2tfZm9yd2FyZF9saXN0KHZpZXcuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcHVp
bnQod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9sZW5ndGgoYmZMaXN0KSwgPT0sIDApOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb25z
b2xlTWVzc2FnZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dENvbnNvbGVNZXNzYWdlLmNwcAppbmRleCA4NjgxNDkzYzE3Y2M4ZDc1MWZlN2RiYjljZjUxYTY2
YzA3NTk2MGVmLi44NzhhMWM2NGRlMWQ5MmUyNTVlNTI3OGEyNDEyOWJiNDJjMGE1MWIxIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdENvbnNvbGVN
ZXNzYWdlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dENvbnNvbGVNZXNzYWdlLmNwcApAQCAtNDcsMTAgKzQ3LDEwIEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyB2b2lkIGNvbnNvbGVNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayhXZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIqLCBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBtZXNzYWdlLCBDb25zb2xlTWVzc2Fn
ZVRlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBnX2Fzc2VydChtZXNzYWdlKTsKKyAgICAgICAg
Z19hc3NlcnRfbm9ubnVsbChtZXNzYWdlKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBtZXNz
YWdlU3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKG1lc3NhZ2Up
KTsKICAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9wYXJzZShH
X1ZBUklBTlRfVFlQRSgiKHV1c3VzKSIpLCBtZXNzYWdlU3RyaW5nLmdldCgpLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgZ19hc3NlcnQodmFyaWFudC5nZXQoKSk7CisgICAg
ICAgIGdfYXNzZXJ0X25vbm51bGwodmFyaWFudC5nZXQoKSk7CiAKICAgICAgICAgdW5zaWduZWQg
c291cmNlLCBsZXZlbCwgbGluZU51bWJlcjsKICAgICAgICAgY29uc3QgY2hhciogbWVzc2FnZVRl
eHQ7CkBAIC04NiwzMSArODYsMzEgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdENvbnNvbGVNZXNz
YWdlQ29uc29sZUFQSShDb25zb2xlTWVzc2FnZVRlc3QqIHRlc3QsIGdjb25zdHAKICAgICBDb25z
b2xlTWVzc2FnZVRlc3Q6OkNvbnNvbGVNZXNzYWdlIHJlZmVyZW5jZU1lc3NhZ2UgPSB7IENvbnNv
bGVNZXNzYWdlVGVzdDo6TWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgQ29uc29sZU1lc3NhZ2VU
ZXN0OjpNZXNzYWdlTGV2ZWw6OkxvZywgIkxvZyBDb25zb2xlIE1lc3NhZ2UiLCAxLCAiaHR0cDov
L2Zvby5jb20vYmFyIiB9OwogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keSBvbmxvYWQ9
J2NvbnNvbGUubG9nKFwiTG9nIENvbnNvbGUgTWVzc2FnZVwiKTsnPjwvYm9keT48L2h0bWw+Iiwg
Imh0dHA6Ly9mb28uY29tL2JhciIpOwogICAgIHRlc3QtPndhaXRVbnRpbENvbnNvbGVNZXNzYWdl
UmVjZWl2ZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2NvbnNvbGVNZXNzYWdlID09IHJlZmVy
ZW5jZU1lc3NhZ2UpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9jb25zb2xlTWVzc2FnZSA9
PSByZWZlcmVuY2VNZXNzYWdlKTsKIAogICAgIHJlZmVyZW5jZU1lc3NhZ2UubGV2ZWwgPSBDb25z
b2xlTWVzc2FnZVRlc3Q6Ok1lc3NhZ2VMZXZlbDo6SW5mbzsKICAgICByZWZlcmVuY2VNZXNzYWdl
Lm1lc3NhZ2UgPSAiSW5mbyBDb25zb2xlIE1lc3NhZ2UiOwogICAgIHRlc3QtPmxvYWRIdG1sKCI8
aHRtbD48Ym9keSBvbmxvYWQ9J2NvbnNvbGUuaW5mbyhcIkluZm8gQ29uc29sZSBNZXNzYWdlXCIp
Oyc+PC9ib2R5PjwvaHRtbD4iLCAiaHR0cDovL2Zvby5jb20vYmFyIik7CiAgICAgdGVzdC0+d2Fp
dFVudGlsQ29uc29sZU1lc3NhZ2VSZWNlaXZlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fY29u
c29sZU1lc3NhZ2UgPT0gcmVmZXJlbmNlTWVzc2FnZSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0
LT5tX2NvbnNvbGVNZXNzYWdlID09IHJlZmVyZW5jZU1lc3NhZ2UpOwogCiAgICAgcmVmZXJlbmNl
TWVzc2FnZS5sZXZlbCA9IENvbnNvbGVNZXNzYWdlVGVzdDo6TWVzc2FnZUxldmVsOjpXYXJuaW5n
OwogICAgIHJlZmVyZW5jZU1lc3NhZ2UubWVzc2FnZSA9ICJXYXJuaW5nIENvbnNvbGUgTWVzc2Fn
ZSI7CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5IG9ubG9hZD0nY29uc29sZS53YXJu
KFwiV2FybmluZyBDb25zb2xlIE1lc3NhZ2VcIik7Jz48L2JvZHk+PC9odG1sPiIsICJodHRwOi8v
Zm9vLmNvbS9iYXIiKTsKICAgICB0ZXN0LT53YWl0VW50aWxDb25zb2xlTWVzc2FnZVJlY2VpdmVk
KCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9jb25zb2xlTWVzc2FnZSA9PSByZWZlcmVuY2VNZXNz
YWdlKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fY29uc29sZU1lc3NhZ2UgPT0gcmVmZXJl
bmNlTWVzc2FnZSk7CiAKICAgICByZWZlcmVuY2VNZXNzYWdlLmxldmVsID0gQ29uc29sZU1lc3Nh
Z2VUZXN0OjpNZXNzYWdlTGV2ZWw6OkVycm9yOwogICAgIHJlZmVyZW5jZU1lc3NhZ2UubWVzc2Fn
ZSA9ICJFcnJvciBDb25zb2xlIE1lc3NhZ2UiOwogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48
Ym9keSBvbmxvYWQ9J2NvbnNvbGUuZXJyb3IoXCJFcnJvciBDb25zb2xlIE1lc3NhZ2VcIik7Jz48
L2JvZHk+PC9odG1sPiIsICJodHRwOi8vZm9vLmNvbS9iYXIiKTsKICAgICB0ZXN0LT53YWl0VW50
aWxDb25zb2xlTWVzc2FnZVJlY2VpdmVkKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9jb25zb2xl
TWVzc2FnZSA9PSByZWZlcmVuY2VNZXNzYWdlKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1f
Y29uc29sZU1lc3NhZ2UgPT0gcmVmZXJlbmNlTWVzc2FnZSk7CiAKICAgICByZWZlcmVuY2VNZXNz
YWdlLmxldmVsID0gQ29uc29sZU1lc3NhZ2VUZXN0OjpNZXNzYWdlTGV2ZWw6OkRlYnVnOwogICAg
IHJlZmVyZW5jZU1lc3NhZ2UubWVzc2FnZSA9ICJEZWJ1ZyBDb25zb2xlIE1lc3NhZ2UiOwogICAg
IHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keSBvbmxvYWQ9J2NvbnNvbGUuZGVidWcoXCJEZWJ1
ZyBDb25zb2xlIE1lc3NhZ2VcIik7Jz48L2JvZHk+PC9odG1sPiIsICJodHRwOi8vZm9vLmNvbS9i
YXIiKTsKICAgICB0ZXN0LT53YWl0VW50aWxDb25zb2xlTWVzc2FnZVJlY2VpdmVkKCk7Ci0gICAg
Z19hc3NlcnQodGVzdC0+bV9jb25zb2xlTWVzc2FnZSA9PSByZWZlcmVuY2VNZXNzYWdlKTsKKyAg
ICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fY29uc29sZU1lc3NhZ2UgPT0gcmVmZXJlbmNlTWVzc2Fn
ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRDb25zb2xlTWVzc2FnZUphdmFTY3JpcHRF
eGNlcHRpb24oQ29uc29sZU1lc3NhZ2VUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMTE5
LDcgKzExOSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRDb25zb2xlTWVzc2FnZUphdmFTY3Jp
cHRFeGNlcHRpb24oQ29uc29sZU1lc3NhZ2VUZXN0KiB0ZXN0CiAgICAgICAgICJSZWZlcmVuY2VF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogZm9vIiwgMSwgImh0dHA6Ly9mb28uY29tL2JhciIg
fTsKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGJvZHkgb25sb2FkPSdmb28oKSc+PC9ib2R5
PjwvaHRtbD4iLCAiaHR0cDovL2Zvby5jb20vYmFyIik7CiAgICAgdGVzdC0+d2FpdFVudGlsQ29u
c29sZU1lc3NhZ2VSZWNlaXZlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fY29uc29sZU1lc3Nh
Z2UgPT0gcmVmZXJlbmNlTWVzc2FnZSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2NvbnNv
bGVNZXNzYWdlID09IHJlZmVyZW5jZU1lc3NhZ2UpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2Vi
S2l0Q29uc29sZU1lc3NhZ2VOZXR3b3JrRXJyb3IoQ29uc29sZU1lc3NhZ2VUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQpAQCAtMTI4LDcgKzEyOCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRD
b25zb2xlTWVzc2FnZU5ldHdvcmtFcnJvcihDb25zb2xlTWVzc2FnZVRlc3QqIHRlc3QsIGdjb25z
CiAgICAgICAgICJGYWlsZWQgdG8gbG9hZCByZXNvdXJjZTogVGhlIHJlc291cmNlIGF0IOKAnC9v
cmcvd2Via2l0L2dsaWIvdGVzdHMvbm90LWZvdW5kLmNzc+KAnSBkb2VzIG5vdCBleGlzdCIsIDAs
ICJyZXNvdXJjZTovLy9vcmcvd2Via2l0L2dsaWIvdGVzdHMvbm90LWZvdW5kLmNzcyIgfTsKICAg
ICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGhlYWQ+PGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBocmVm
PSdub3QtZm91bmQuY3NzJyB0eXBlPSd0ZXh0L2Nzcyc+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0
bWw+IiwgInJlc291cmNlOi8vL29yZy93ZWJraXQvZ2xpYi90ZXN0cy8iKTsKICAgICB0ZXN0LT53
YWl0VW50aWxDb25zb2xlTWVzc2FnZVJlY2VpdmVkKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9j
b25zb2xlTWVzc2FnZSA9PSByZWZlcmVuY2VNZXNzYWdlKTsKKyAgICBnX2Fzc2VydF90cnVlKHRl
c3QtPm1fY29uc29sZU1lc3NhZ2UgPT0gcmVmZXJlbmNlTWVzc2FnZSk7CiB9CiAKIHN0YXRpYyB2
b2lkIHRlc3RXZWJLaXRDb25zb2xlTWVzc2FnZVNlY3VyaXR5RXJyb3IoQ29uc29sZU1lc3NhZ2VU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMTM3LDcgKzEzNyw3IEBAIHN0YXRpYyB2b2lk
IHRlc3RXZWJLaXRDb25zb2xlTWVzc2FnZVNlY3VyaXR5RXJyb3IoQ29uc29sZU1lc3NhZ2VUZXN0
KiB0ZXN0LCBnY29uCiAgICAgICAgICJOb3QgYWxsb3dlZCB0byBsb2FkIGxvY2FsIHJlc291cmNl
OiBmaWxlOi8vL2Zvby9iYXIvc291cmNlLnBuZyIsIDEsICJodHRwOi8vZm9vLmNvbS9iYXIiIH07
CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxib2R5PjxpbWcgc3JjPVwiZmlsZTovLy9mb28v
YmFyL3NvdXJjZS5wbmdcIi8+PC9ib2R5PjwvaHRtbD4iLCAiaHR0cDovL2Zvby5jb20vYmFyIik7
CiAgICAgdGVzdC0+d2FpdFVudGlsQ29uc29sZU1lc3NhZ2VSZWNlaXZlZCgpOwotICAgIGdfYXNz
ZXJ0KHRlc3QtPm1fY29uc29sZU1lc3NhZ2UgPT0gcmVmZXJlbmNlTWVzc2FnZSk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh0ZXN0LT5tX2NvbnNvbGVNZXNzYWdlID09IHJlZmVyZW5jZU1lc3NhZ2UpOwog
fQogCiB2b2lkIGJlZm9yZUFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RDb29raWVNYW5hZ2VyLmNwcAppbmRleCBiMDUxNDUyNGY3
MjU5MWY2Y2I1MDI5MTEwMzFiN2JmYThhM2FmYTA3Li45ZTQ4ZDJlN2M4NDQxMTgwY2RiZDAyMzZh
ZWM3NjRiYjZiNmMxMWNiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdENvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0Q29va2llTWFuYWdlci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAg
cHVibGljOgogICAgICAgICA6IFdlYlZpZXdUZXN0KCkKICAgICAgICAgLCBtX2Nvb2tpZU1hbmFn
ZXIod2Via2l0X3dlYl9jb250ZXh0X2dldF9jb29raWVfbWFuYWdlcih3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2NvbnRleHQobV93ZWJWaWV3KSkpCiAgICAgewotICAgICAgICBnX2Fzc2VydCh3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Nvb2tpZV9tYW5hZ2VyKHdlYmtpdF93ZWJfY29udGV4
dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KG1f
d2ViVmlldykpKSA9PSBtX2Nvb2tpZU1hbmFnZXIpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfY29va2llX21hbmFnZXIod2Via2l0X3dlYl9j
b250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRl
eHQobV93ZWJWaWV3KSkpID09IG1fY29va2llTWFuYWdlcik7CiAgICAgICAgIGdfc2lnbmFsX2Nv
bm5lY3QobV9jb29raWVNYW5hZ2VyLCAiY2hhbmdlZCIsIEdfQ0FMTEJBQ0soY29va2llc0NoYW5n
ZWRDYWxsYmFjayksIHRoaXMpOwogICAgIH0KIApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIFdlYktp
dENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kgPSB3ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2Fj
Y2VwdF9wb2xpY3lfZmluaXNoKFdFQktJVF9DT09LSUVfTUFOQUdFUihvYmplY3QpLCByZXN1bHQs
ICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CisgICAg
ICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKIAogICAgICAgICBDb29raWVNYW5h
Z2VyVGVzdCogdGVzdCA9IHN0YXRpY19jYXN0PENvb2tpZU1hbmFnZXJUZXN0Kj4odXNlckRhdGEp
OwogICAgICAgICB0ZXN0LT5tX2FjY2VwdFBvbGljeSA9IHBvbGljeTsKQEAgLTExOCw4ICsxMTgs
OCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7
CiAgICAgICAgIGJvb2wgYWRkZWQgPSB3ZWJraXRfY29va2llX21hbmFnZXJfYWRkX2Nvb2tpZV9m
aW5pc2goV0VCS0lUX0NPT0tJRV9NQU5BR0VSKG9iamVjdCksIHJlc3VsdCwgJmVycm9yLm91dFB0
cigpKTsKLSAgICAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKLSAgICAgICAgZ19hc3NlcnQo
YWRkZWQpOworICAgICAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CisgICAgICAg
IGdfYXNzZXJ0X3RydWUoYWRkZWQpOwogCiAgICAgICAgIENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0
ID0gc3RhdGljX2Nhc3Q8Q29va2llTWFuYWdlclRlc3QqPih1c2VyRGF0YSk7CiAgICAgICAgIGdf
bWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7CkBAIC0xMzUsNyArMTM1LDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAg
ICBHTGlzdCogY29va2llcyA9IHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfY29va2llc19maW5p
c2goV0VCS0lUX0NPT0tJRV9NQU5BR0VSKG9iamVjdCksIHJlc3VsdCwgJmVycm9yLm91dFB0cigp
KTsKLSAgICAgICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9f
ZXJyb3IoZXJyb3IuZ2V0KCkpOwogCiAgICAgICAgIENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0ID0g
c3RhdGljX2Nhc3Q8Q29va2llTWFuYWdlclRlc3QqPih1c2VyRGF0YSk7CiAgICAgICAgIHRlc3Qt
Pm1fY29va2llcyA9IGNvb2tpZXM7CkBAIC0xNTYsOCArMTU2LDggQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICBib29sIGRlbGV0
ZWQgPSB3ZWJraXRfY29va2llX21hbmFnZXJfZGVsZXRlX2Nvb2tpZV9maW5pc2goV0VCS0lUX0NP
T0tJRV9NQU5BR0VSKG9iamVjdCksIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKTsKLSAgICAgICAg
Z19hc3NlcnQoIWVycm9yLmdldCgpKTsKLSAgICAgICAgZ19hc3NlcnQoZGVsZXRlZCk7CisgICAg
ICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1
ZShkZWxldGVkKTsKIAogICAgICAgICBDb29raWVNYW5hZ2VyVGVzdCogdGVzdCA9IHN0YXRpY19j
YXN0PENvb2tpZU1hbmFnZXJUZXN0Kj4odXNlckRhdGEpOwogICAgICAgICBnX21haW5fbG9vcF9x
dWl0KHRlc3QtPm1fbWFpbkxvb3ApOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgR19HTlVDX0JFR0lOX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAgICAgICAgIGNoYXIqKiBkb21h
aW5zID0gd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9kb21haW5zX3dpdGhfY29va2llc19maW5p
c2goV0VCS0lUX0NPT0tJRV9NQU5BR0VSKG9iamVjdCksIHJlc3VsdCwgJmVycm9yLm91dFB0cigp
KTsKICAgICAgICAgR19HTlVDX0VORF9JR05PUkVfREVQUkVDQVRJT05TOwotICAgICAgICBnX2Fz
c2VydCghZXJyb3IuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQo
KSk7CiAKICAgICAgICAgQ29va2llTWFuYWdlclRlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxDb29r
aWVNYW5hZ2VyVGVzdCo+KHVzZXJEYXRhKTsKICAgICAgICAgdGVzdC0+bV9kb21haW5zID0gZG9t
YWluczsKQEAgLTI1Miw3ICsyNTIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29va2llTWFuYWdlckFj
Y2VwdFBvbGljeShDb29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcgogICAgIHRl
c3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2luZGV4Lmh0bWwiKS5kYXRhKCkp
OwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIGNoYXIqKiBkb21haW5z
ID0gdGVzdC0+Z2V0RG9tYWlucygpOwotICAgIGdfYXNzZXJ0KGRvbWFpbnMpOworICAgIGdfYXNz
ZXJ0X25vbm51bGwoZG9tYWlucyk7CiAgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9sZW5ndGgo
ZG9tYWlucyksID09LCAxKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoZG9tYWluc1swXSwgPT0sIGtG
aXJzdFBhcnR5RG9tYWluKTsKICAgICB0ZXN0LT5kZWxldGVBbGxDb29raWVzKCk7CkBAIC0yNjIs
MTAgKzI2MiwxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29va2llTWFuYWdlckFjY2VwdFBvbGljeShD
b29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcgogICAgIHRlc3QtPmxvYWRVUkko
a1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2luZGV4Lmh0bWwiKS5kYXRhKCkpOwogICAgIHRlc3Qt
PndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIGRvbWFpbnMgPSB0ZXN0LT5nZXREb21haW5z
KCk7Ci0gICAgZ19hc3NlcnQoZG9tYWlucyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkb21haW5z
KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChkb21haW5zKSwgPT0sIDIpOwot
ICAgIGdfYXNzZXJ0KHRlc3QtPmhhc0RvbWFpbihrRmlyc3RQYXJ0eURvbWFpbikpOwotICAgIGdf
YXNzZXJ0KHRlc3QtPmhhc0RvbWFpbihrVGhpcmRQYXJ0eURvbWFpbikpOworICAgIGdfYXNzZXJ0
X3RydWUodGVzdC0+aGFzRG9tYWluKGtGaXJzdFBhcnR5RG9tYWluKSk7CisgICAgZ19hc3NlcnRf
dHJ1ZSh0ZXN0LT5oYXNEb21haW4oa1RoaXJkUGFydHlEb21haW4pKTsKICAgICB0ZXN0LT5kZWxl
dGVBbGxDb29raWVzKCk7CiAKICAgICB0ZXN0LT5zZXRBY2NlcHRQb2xpY3koV0VCS0lUX0NPT0tJ
RV9QT0xJQ1lfQUNDRVBUX05FVkVSKTsKQEAgLTI3Myw3ICsyNzMsNyBAQCBzdGF0aWMgdm9pZCB0
ZXN0Q29va2llTWFuYWdlckFjY2VwdFBvbGljeShDb29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcgogICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2lu
ZGV4Lmh0bWwiKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwog
ICAgIGRvbWFpbnMgPSB0ZXN0LT5nZXREb21haW5zKCk7Ci0gICAgZ19hc3NlcnQoZG9tYWlucyk7
CisgICAgZ19hc3NlcnRfbm9ubnVsbChkb21haW5zKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZ19z
dHJ2X2xlbmd0aChkb21haW5zKSwgPT0sIDApOwogfQogCkBAIC01MjAsMTkgKzUyMCwxOSBAQCBz
dGF0aWMgdm9pZCB0ZXN0Q29va2llTWFuYWdlckRlbGV0ZUNvb2tpZXMoQ29va2llTWFuYWdlclRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZQogCiBzdGF0aWMgdm9pZCB0ZXN0Q29va2llTWFuYWdlckNv
b2tpZXNDaGFuZ2VkKENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewot
ICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkKTsKKyAgICBnX2Fzc2VydF9mYWxz
ZSh0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkKTsKICAgICB0ZXN0LT5zZXRBY2NlcHRQb2xpY3koV0VC
S0lUX0NPT0tJRV9QT0xJQ1lfQUNDRVBUX0FMV0FZUyk7CiAgICAgdGVzdC0+bG9hZFVSSShrU2Vy
dmVyLT5nZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9jb29raWVzQ2hhbmdl
ZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkKTsKIAogICAgIHRl
c3QtPmRlbGV0ZUNvb2tpZXNGb3JEb21haW4oa0ZpcnN0UGFydHlEb21haW4pOwogICAgIHRlc3Qt
PndhaXRVbnRpbENvb2tpZXNDaGFuZ2VkKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9jb29raWVz
Q2hhbmdlZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkKTsKIAog
ICAgIHRlc3QtPmRlbGV0ZUFsbENvb2tpZXMoKTsKICAgICB0ZXN0LT53YWl0VW50aWxDb29raWVz
Q2hhbmdlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fY29va2llc0NoYW5nZWQpOworICAgIGdf
YXNzZXJ0X3RydWUodGVzdC0+bV9jb29raWVzQ2hhbmdlZCk7CiB9CiAKIHN0YXRpYyB2b2lkIHRl
c3RDb29raWVNYW5hZ2VyUGVyc2lzdGVudFN0b3JhZ2UoQ29va2llTWFuYWdlclRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCkBAIC01NDIsMzQgKzU0MiwzNCBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29v
a2llTWFuYWdlclBlcnNpc3RlbnRTdG9yYWdlKENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0LCBnY29u
c3RwbwogICAgIC8vIFRleHQgc3RvcmFnZSB1c2luZyBhIG5ldyBmaWxlLgogICAgIHRlc3QtPnNl
dFBlcnNpc3RlbnRTdG9yYWdlKFdFQktJVF9DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQp
OwogICAgIGNoYXIqKiBkb21haW5zID0gdGVzdC0+Z2V0RG9tYWlucygpOwotICAgIGdfYXNzZXJ0
KGRvbWFpbnMpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZG9tYWlucyk7CiAgICAgZ19hc3NlcnRf
Y21waW50KGdfc3Rydl9sZW5ndGgoZG9tYWlucyksID09LCAwKTsKIAogICAgIHRlc3QtPmxvYWRV
Ukkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2luZGV4Lmh0bWwiKS5kYXRhKCkpOwogICAgIHRl
c3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fY29va2ll
c0NoYW5nZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9jb29raWVzQ2hhbmdlZCk7CiAg
ICAgZG9tYWlucyA9IHRlc3QtPmdldERvbWFpbnMoKTsKLSAgICBnX2Fzc2VydChkb21haW5zKTsK
KyAgICBnX2Fzc2VydF9ub25udWxsKGRvbWFpbnMpOwogICAgIGdfYXNzZXJ0X2NtcGludChnX3N0
cnZfbGVuZ3RoKGRvbWFpbnMpLCA9PSwgMik7CiAKIAogICAgIC8vIFNRTGl0ZSBzdG9yYWdlIHVz
aW5nIGEgbmV3IGZpbGUuCiAgICAgdGVzdC0+c2V0UGVyc2lzdGVudFN0b3JhZ2UoV0VCS0lUX0NP
T0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfU1FMSVRFKTsKICAgICBkb21haW5zID0gdGVzdC0+Z2V0
RG9tYWlucygpOwotICAgIGdfYXNzZXJ0KGRvbWFpbnMpOworICAgIGdfYXNzZXJ0X25vbm51bGwo
ZG9tYWlucyk7CiAgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9sZW5ndGgoZG9tYWlucyksID09
LCAwKTsKIAogICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2luZGV4
Lmh0bWwiKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotICAg
IGdfYXNzZXJ0KHRlc3QtPm1fY29va2llc0NoYW5nZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVz
dC0+bV9jb29raWVzQ2hhbmdlZCk7CiAgICAgZG9tYWlucyA9IHRlc3QtPmdldERvbWFpbnMoKTsK
LSAgICBnX2Fzc2VydChkb21haW5zKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRvbWFpbnMpOwog
ICAgIGdfYXNzZXJ0X2NtcGludChnX3N0cnZfbGVuZ3RoKGRvbWFpbnMpLCA9PSwgMik7CiAKICAg
ICAvLyBUZXh0IHN0b3JhZ2UgdXNpbmcgYW4gZXhpc3RpbmcgZmlsZS4KICAgICB0ZXN0LT5zZXRQ
ZXJzaXN0ZW50U3RvcmFnZShXRUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9URVhUKTsK
ICAgICBkb21haW5zID0gdGVzdC0+Z2V0RG9tYWlucygpOwotICAgIGdfYXNzZXJ0KGRvbWFpbnMp
OworICAgIGdfYXNzZXJ0X25vbm51bGwoZG9tYWlucyk7CiAgICAgZ19hc3NlcnRfY21waW50KGdf
c3Rydl9sZW5ndGgoZG9tYWlucyksID09LCAyKTsKICAgICB0ZXN0LT5kZWxldGVBbGxDb29raWVz
KCk7CiAgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9sZW5ndGgodGVzdC0+Z2V0RG9tYWlucygp
KSwgPT0sIDApOwpAQCAtNTc3LDcgKzU3Nyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RDb29raWVNYW5h
Z2VyUGVyc2lzdGVudFN0b3JhZ2UoQ29va2llTWFuYWdlclRlc3QqIHRlc3QsIGdjb25zdHBvCiAg
ICAgLy8gU1FMaXRlIHN0b3JhZ2Ugd2l0aCBhbiBleGlzdGluZyBmaWxlLgogICAgIHRlc3QtPnNl
dFBlcnNpc3RlbnRTdG9yYWdlKFdFQktJVF9DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1NRTElU
RSk7CiAgICAgZG9tYWlucyA9IHRlc3QtPmdldERvbWFpbnMoKTsKLSAgICBnX2Fzc2VydChkb21h
aW5zKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRvbWFpbnMpOwogICAgIGdfYXNzZXJ0X2NtcGlu
dChnX3N0cnZfbGVuZ3RoKGRvbWFpbnMpLCA9PSwgMik7CiAgICAgdGVzdC0+ZGVsZXRlQWxsQ29v
a2llcygpOwogICAgIGdfYXNzZXJ0X2NtcGludChnX3N0cnZfbGVuZ3RoKHRlc3QtPmdldERvbWFp
bnMoKSksID09LCAwKTsKQEAgLTU5MSw3ICs1OTEsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29va2ll
TWFuYWdlclBlcnNpc3RlbnRTdG9yYWdlRGVsZXRlQWxsKENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0
LAogICAgIHRpbWVfdCBleHBpcmVzID0gdGltZShudWxscHRyKSArIDYwOwogICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gY29va2llc0ZpbGVDb250ZW50cyhnX3N0cmR1cF9wcmludGYoY29va2llc0ZpbGVG
b3JtYXQsIGV4cGlyZXMsIGV4cGlyZXMpKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvb2tpZXNG
aWxlKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCAiY29va2llcy50eHQi
LCBudWxscHRyKSk7Ci0gICAgZ19hc3NlcnQoZ19maWxlX3NldF9jb250ZW50cyhjb29raWVzRmls
ZS5nZXQoKSwgY29va2llc0ZpbGVDb250ZW50cy5nZXQoKSwgLTEsIG51bGxwdHIpKTsKKyAgICBn
X2Fzc2VydF90cnVlKGdfZmlsZV9zZXRfY29udGVudHMoY29va2llc0ZpbGUuZ2V0KCksIGNvb2tp
ZXNGaWxlQ29udGVudHMuZ2V0KCksIC0xLCBudWxscHRyKSk7CiAKICAgICB0ZXN0LT5zZXRQZXJz
aXN0ZW50U3RvcmFnZShXRUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9URVhUKTsKICAg
ICB0ZXN0LT5kZWxldGVBbGxDb29raWVzKCk7CkBAIC02MDIsOSArNjAyLDkgQEAgc3RhdGljIHZv
aWQgdGVzdENvb2tpZU1hbmFnZXJQZXJzaXN0ZW50U3RvcmFnZURlbGV0ZUFsbChDb29raWVNYW5h
Z2VyVGVzdCogdGVzdCwKICAgICB0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkID0gZmFsc2U7CiAgICAg
dGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvbm8tY29va2llcy5odG1sIiku
ZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLSAgICBnX2Fzc2Vy
dCghdGVzdC0+bV9jb29raWVzQ2hhbmdlZCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV9j
b29raWVzQ2hhbmdlZCk7CiAgICAgY2hhcioqIGRvbWFpbnMgPSB0ZXN0LT5nZXREb21haW5zKCk7
Ci0gICAgZ19hc3NlcnQoZG9tYWlucyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkb21haW5zKTsK
ICAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChkb21haW5zKSwgPT0sIDApOwogfQog
CkBAIC02MjEsNyArNjIxLDcgQEAgc3RhdGljIHZvaWQgdGVzdENvb2tpZU1hbmFnZXJFcGhlbWVy
YWwoQ29va2llTWFuYWdlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+c2V0
QWNjZXB0UG9saWN5KFdFQktJVF9DT09LSUVfUE9MSUNZX0FDQ0VQVF9BTFdBWVMpOwogICAgIHRl
c3QtPnNldFBlcnNpc3RlbnRTdG9yYWdlKFdFQktJVF9DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdF
X1RFWFQpOwogICAgIGNoYXIqKiBkb21haW5zID0gdGVzdC0+Z2V0RG9tYWlucygpOwotICAgIGdf
YXNzZXJ0KGRvbWFpbnMpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZG9tYWlucyk7CiAgICAgZ19h
c3NlcnRfY21waW50KGdfc3Rydl9sZW5ndGgoZG9tYWlucyksID09LCAwKTsKIAogICAgIGF1dG8g
d2ViVmlldyA9IFRlc3Q6OmFkb3B0VmlldyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX1ZJ
RVcsCkBAIC02MzEsMzAgKzYzMSwzMCBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29va2llTWFuYWdlckVw
aGVtZXJhbChDb29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAgICAg
IndlYi1jb250ZXh0Iiwgd2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHRlc3QtPm1fd2ViVmll
dyksCiAgICAgICAgICJpcy1lcGhlbWVyYWwiLCBUUlVFLAogICAgICAgICBudWxscHRyKSk7Ci0g
ICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh3ZWJWaWV3LmdldCgpKSk7
Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwod2Via2l0X3dl
Yl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcuZ2V0KCkpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3
ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKHdlYlZpZXcuZ2V0KCkpKTsKKyAgICBnX2Fzc2Vy
dF9mYWxzZSh3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFsKHdlYmtpdF93ZWJfdmlld19n
ZXRfY29udGV4dCh3ZWJWaWV3LmdldCgpKSkpOwogCiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJW
aWV3LmdldCgpLCAibG9hZC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhlcGhlbWVyYWxWaWV3bG9hZENo
YW5nZWQpLCB0ZXN0KTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkod2ViVmlldy5nZXQo
KSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2luZGV4Lmh0bWwiKS5kYXRhKCkpOwogICAgIGdf
bWFpbl9sb29wX3J1bih0ZXN0LT5tX21haW5Mb29wKTsKIAogICAgIGRvbWFpbnMgPSB0ZXN0LT5n
ZXREb21haW5zKCk7Ci0gICAgZ19hc3NlcnQoZG9tYWlucyk7CisgICAgZ19hc3NlcnRfbm9ubnVs
bChkb21haW5zKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChkb21haW5zKSwg
PT0sIDApOwogCiAgICAgYXV0byogdmlld0RhdGFNYW5hZ2VyID0gd2Via2l0X3dlYl92aWV3X2dl
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3ZWJWaWV3LmdldCgpKTsKLSAgICBnX2Fzc2VydChXRUJL
SVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIodmlld0RhdGFNYW5hZ2VyKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZShXRUJLSVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIodmlld0RhdGFNYW5hZ2VyKSk7
CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVD
VCh2aWV3RGF0YU1hbmFnZXIpKTsKLSAgICBnX2Fzc2VydCh2aWV3RGF0YU1hbmFnZXIgIT0gd2Vi
a2l0X3dlYl9jb250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2NvbnRleHQodGVzdC0+bV93ZWJWaWV3KSkpOworICAgIGdfYXNzZXJ0X3RydWUodmlld0Rh
dGFNYW5hZ2VyICE9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIo
d2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldykpKTsKICAgICBhdXRv
KiBjb29raWVNYW5hZ2VyID0gd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9jb29raWVf
bWFuYWdlcih2aWV3RGF0YU1hbmFnZXIpOwotICAgIGdfYXNzZXJ0KFdFQktJVF9JU19DT09LSUVf
TUFOQUdFUihjb29raWVNYW5hZ2VyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfQ09P
S0lFX01BTkFHRVIoY29va2llTWFuYWdlcikpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVs
ZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoY29va2llTWFuYWdlcikpOwotICAgIGdfYXNz
ZXJ0KGNvb2tpZU1hbmFnZXIgIT0gdGVzdC0+bV9jb29raWVNYW5hZ2VyKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKGNvb2tpZU1hbmFnZXIgIT0gdGVzdC0+bV9jb29raWVNYW5hZ2VyKTsKICAgICBHX0dO
VUNfQkVHSU5fSUdOT1JFX0RFUFJFQ0FUSU9OUzsKICAgICB3ZWJraXRfY29va2llX21hbmFnZXJf
Z2V0X2RvbWFpbnNfd2l0aF9jb29raWVzKGNvb2tpZU1hbmFnZXIsIG51bGxwdHIsIFtdKEdPYmpl
Y3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CiAg
ICAgICAgIGF1dG8qIHRlc3QgPSBzdGF0aWNfY2FzdDxDb29raWVNYW5hZ2VyVGVzdCo+KHVzZXJE
YXRhKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyKj4gZG9tYWlucyh3ZWJraXRfY29va2llX21h
bmFnZXJfZ2V0X2RvbWFpbnNfd2l0aF9jb29raWVzX2ZpbmlzaChXRUJLSVRfQ09PS0lFX01BTkFH
RVIob2JqZWN0KSwgcmVzdWx0LCBudWxscHRyKSk7Ci0gICAgICAgIGdfYXNzZXJ0KGRvbWFpbnMp
OworICAgICAgICBnX2Fzc2VydF9ub25udWxsKGRvbWFpbnMpOwogICAgICAgICBnX2Fzc2VydF9j
bXBpbnQoZ19zdHJ2X2xlbmd0aChkb21haW5zLmdldCgpKSwgPT0sIDEpOwogICAgICAgICBnX2Fz
c2VydF9jbXBzdHIoZG9tYWlucy5nZXQoKVswXSwgPT0sIGtGaXJzdFBhcnR5RG9tYWluKTsKICAg
ICAgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERPTUVsZW1lbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RET01FbGVtZW50LmNwcAppbmRleCAzZDI4MDQ2YmYy
NDU0ZGRjYzdkODg2NDIxNDhiNzc4ZWIyOGI2Y2ZmLi4wYjdiZmRhMzJiY2RkNzgxYWVlMmU5Y2Zl
MTExODAxZDAxN2U1NWJmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdERPTUVsZW1lbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0RE9NRWxlbWVudC5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKIHN0YXRp
YyB2b2lkIHRlc3RXZWJLaXRET01FbGVtZW50QXV0b0ZpbGwoV2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IGdjaGFyKiB0ZXN0SFRNTCA9ICI8aHRt
bD48Ym9keT48Zm9ybSBhY3Rpb249JyMnPjxpbnB1dCBpZD0nYXV0by1maWxsJz48L2lucHV0Pjwv
Zm9ybT48L2JvZHk+PC9odG1sPiI7Ci0gICAgZ19hc3NlcnQodGVzdC0+cnVuV2ViUHJvY2Vzc1Rl
c3QoIldlYktpdERPTUVsZW1lbnQiLCAiYXV0by1maWxsIiwgdGVzdEhUTUwpKTsKKyAgICBnX2Fz
c2VydF90cnVlKHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01FbGVtZW50IiwgImF1
dG8tZmlsbCIsIHRlc3RIVE1MKSk7CiB9CiAKIHZvaWQgYmVmb3JlQWxsKCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0RG93bmxvYWRzLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0RG93bmxvYWRzLmNwcApp
bmRleCA1M2ZkNDJhZWFkYWIwYjQwOTkwMzBmODAwYWFjZjk2MjhjYjkzYmJmLi5lMDM5MTk5YzE3
MmVjN2QyM2Q5MjRlMDllOTNkYzBmODhkZjExMTRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdERvd25sb2Fkcy5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3REb3dubG9hZHMuY3BwCkBAIC00NCwxNiAr
NDQsMTYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVjZWl2ZWRSZXNwb25zZUNhbGxi
YWNrKFdlYktpdERvd25sb2FkKiBkb3dubG9hZCwgR1BhcmFtU3BlYyosIERvd25sb2FkVGVzdCog
dGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9kb3dubG9hZF9nZXRfcmVzcG9u
c2UoZG93bmxvYWQpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbCh3ZWJraXRfZG93bmxvYWRf
Z2V0X3Jlc3BvbnNlKGRvd25sb2FkKSk7CiAgICAgICAgIHRlc3QtPnJlY2VpdmVkUmVzcG9uc2Uo
ZG93bmxvYWQpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIGNyZWF0ZWREZXN0aW5hdGlvbkNh
bGxiYWNrKFdlYktpdERvd25sb2FkKiBkb3dubG9hZCwgY29uc3QgZ2NoYXIqIGRlc3RpbmF0aW9u
LCBEb3dubG9hZFRlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBnX2Fzc2VydCh3ZWJraXRfZG93
bmxvYWRfZ2V0X2Rlc3RpbmF0aW9uKGRvd25sb2FkKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51
bGwod2Via2l0X2Rvd25sb2FkX2dldF9kZXN0aW5hdGlvbihkb3dubG9hZCkpOwogICAgICAgICBn
X2Fzc2VydF9jbXBzdHIod2Via2l0X2Rvd25sb2FkX2dldF9kZXN0aW5hdGlvbihkb3dubG9hZCks
ID09LCBkZXN0aW5hdGlvbik7CiAgICAgICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdS
ZWYoZ19maWxlX25ld19mb3JfdXJpKGRlc3RpbmF0aW9uKSk7Ci0gICAgICAgIGdfYXNzZXJ0KGdf
ZmlsZV9xdWVyeV9leGlzdHMoZmlsZS5nZXQoKSwgbnVsbHB0cikpOworICAgICAgICBnX2Fzc2Vy
dF90cnVlKGdfZmlsZV9xdWVyeV9leGlzdHMoZmlsZS5nZXQoKSwgbnVsbHB0cikpOwogICAgICAg
ICB0ZXN0LT5jcmVhdGVkRGVzdGluYXRpb24oZG93bmxvYWQsIGRlc3RpbmF0aW9uKTsKICAgICB9
CiAKQEAgLTY5LDEzICs2OSwxMyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBmYWlsZWRD
YWxsYmFjayhXZWJLaXREb3dubG9hZCogZG93bmxvYWQsIEdFcnJvciogZXJyb3IsIERvd25sb2Fk
VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KGVycm9yKTsKKyAgICAgICAgZ19h
c3NlcnRfbm9ubnVsbChlcnJvcik7CiAKICAgICAgICAgY29uc3QgY2hhciogZGVzdGluYXRpb25V
UkkgPSB3ZWJraXRfZG93bmxvYWRfZ2V0X2Rlc3RpbmF0aW9uKGRvd25sb2FkKTsKICAgICAgICAg
aWYgKGRlc3RpbmF0aW9uVVJJKSB7CiAgICAgICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHRlbXBG
aWxlVVJJKGdfc3RyY29uY2F0KGRlc3RpbmF0aW9uVVJJLCAiLndrZG93bmxvYWQiLCBudWxscHRy
KSk7CiAgICAgICAgICAgICBHUmVmUHRyPEdGaWxlPiB0ZW1wRmlsZSA9IGFkb3B0R1JlZihnX2Zp
bGVfbmV3X2Zvcl91cmkodGVtcEZpbGVVUkkuZ2V0KCkpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0
KCFnX2ZpbGVfcXVlcnlfZXhpc3RzKHRlbXBGaWxlLmdldCgpLCBudWxscHRyKSk7CisgICAgICAg
ICAgICBnX2Fzc2VydF9mYWxzZShnX2ZpbGVfcXVlcnlfZXhpc3RzKHRlbXBGaWxlLmdldCgpLCBu
dWxscHRyKSk7CiAgICAgICAgIH0KIAogICAgICAgICB0ZXN0LT5mYWlsZWQoZG93bmxvYWQsIGVy
cm9yKTsKQEAgLTgzLDE0ICs4MywxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4g
ZGVjaWRlRGVzdGluYXRpb25DYWxsYmFjayhXZWJLaXREb3dubG9hZCogZG93bmxvYWQsIGNvbnN0
IGdjaGFyKiBzdWdnZXN0ZWRGaWxlbmFtZSwgRG93bmxvYWRUZXN0KiB0ZXN0KQogICAgIHsKLSAg
ICAgICAgZ19hc3NlcnQoc3VnZ2VzdGVkRmlsZW5hbWUpOworICAgICAgICBnX2Fzc2VydF9ub25u
dWxsKHN1Z2dlc3RlZEZpbGVuYW1lKTsKICAgICAgICAgdGVzdC0+ZGVjaWRlRGVzdGluYXRpb24o
ZG93bmxvYWQsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKICAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAg
fQogCiAgICAgc3RhdGljIHZvaWQgZG93bmxvYWRTdGFydGVkQ2FsbGJhY2soV2ViS2l0V2ViQ29u
dGV4dCogY29udGV4dCwgV2ViS2l0RG93bmxvYWQqIGRvd25sb2FkLCBEb3dubG9hZFRlc3QqIHRl
c3QpCiAgICAgewotICAgICAgICBnX2Fzc2VydCh3ZWJraXRfZG93bmxvYWRfZ2V0X3JlcXVlc3Qo
ZG93bmxvYWQpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbCh3ZWJraXRfZG93bmxvYWRfZ2V0
X3JlcXVlc3QoZG93bmxvYWQpKTsKICAgICAgICAgdGVzdC0+c3RhcnRlZChkb3dubG9hZCk7CiAg
ICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QoZG93bmxvYWQsICJub3RpZnk6OnJlc3BvbnNlIiwgR19D
QUxMQkFDSyhyZWNlaXZlZFJlc3BvbnNlQ2FsbGJhY2spLCB0ZXN0KTsKICAgICAgICAgZ19zaWdu
YWxfY29ubmVjdChkb3dubG9hZCwgImNyZWF0ZWQtZGVzdGluYXRpb24iLCBHX0NBTExCQUNLKGNy
ZWF0ZWREZXN0aW5hdGlvbkNhbGxiYWNrKSwgdGVzdCk7CkBAIC0xNjIsMTIgKzE2MiwxMiBAQCBw
dWJsaWM6CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gYWRvcHRH
UmVmKHdlYmtpdF93ZWJfY29udGV4dF9kb3dubG9hZF91cmkobV93ZWJDb250ZXh0LmdldCgpLCBy
ZXF1ZXN0VVJJLmRhdGEoKSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKGRvd25sb2FkLmdldCgpKSk7CiAKLSAgICAgICAgZ19hc3NlcnQo
IXdlYmtpdF9kb3dubG9hZF9nZXRfYWxsb3dfb3ZlcndyaXRlKGRvd25sb2FkLmdldCgpKSk7Cisg
ICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9kb3dubG9hZF9nZXRfYWxsb3dfb3ZlcndyaXRl
KGRvd25sb2FkLmdldCgpKSk7CiAgICAgICAgIHdlYmtpdF9kb3dubG9hZF9zZXRfYWxsb3dfb3Zl
cndyaXRlKGRvd25sb2FkLmdldCgpLCBtX2FsbG93T3ZlcndyaXRlKTsKLSAgICAgICAgZ19hc3Nl
cnQod2Via2l0X2Rvd25sb2FkX2dldF9hbGxvd19vdmVyd3JpdGUoZG93bmxvYWQuZ2V0KCkpID09
IG1fYWxsb3dPdmVyd3JpdGUpOworICAgICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2Rvd25s
b2FkX2dldF9hbGxvd19vdmVyd3JpdGUoZG93bmxvYWQuZ2V0KCkpLCA9PSwgbV9hbGxvd092ZXJ3
cml0ZSk7CiAKICAgICAgICAgV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCA9IHdlYmtpdF9kb3du
bG9hZF9nZXRfcmVxdWVzdChkb3dubG9hZC5nZXQoKSk7Ci0gICAgICAgIGdfYXNzZXJ0KHJlcXVl
c3QpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKHJlcXVlc3QpOwogICAgICAgICBBU1NFUlRf
Q01QX0NTVFJJTkcod2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCksID09LCByZXF1
ZXN0VVJJKTsKIAogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CkBAIC0xOTks
NyArMTk5LDcgQEAgc3RhdGljIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkTG9jYWxG
aWxlU3VjY2Vzc2Z1bGx5KERvd25sb2FkVGVzdCogdGVzdCwKICAgICBHUmVmUHRyPEdGaWxlSW5m
bz4gc291cmNlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfaW5mbyhzb3VyY2UuZ2V0KCks
IEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfU0laRSwgc3RhdGljX2Nhc3Q8R0ZpbGVRdWVyeUlu
Zm9GbGFncz4oMCksIDAsIDApKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNvdXJjZVVSSShnX2Zp
bGVfZ2V0X3VyaShzb3VyY2UuZ2V0KCkpKTsKICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBk
b3dubG9hZCA9IHRlc3QtPmRvd25sb2FkVVJJQW5kV2FpdFVudGlsRmluaXNoZXMoc291cmNlVVJJ
LmdldCgpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3du
bG9hZC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2Rvd25sb2FkX2dldF93ZWJf
dmlldyhkb3dubG9hZC5nZXQoKSkpOwogCiAgICAgVmVjdG9yPERvd25sb2FkVGVzdDo6RG93bmxv
YWRFdmVudD4mIGV2ZW50cyA9IHRlc3QtPm1fZG93bmxvYWRFdmVudHM7CiAgICAgZ19hc3NlcnRf
Y21waW50KGV2ZW50cy5zaXplKCksID09LCA1KTsKQEAgLTIxMCwxMSArMjEwLDExIEBAIHN0YXRp
YyBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZExvY2FsRmlsZVN1Y2Nlc3NmdWxseShE
b3dubG9hZFRlc3QqIHRlc3QsCiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1s0XSwgPT0sIERv
d25sb2FkVGVzdDo6RmluaXNoZWQpOwogCiAgICAgV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCA9
IHdlYmtpdF9kb3dubG9hZF9nZXRfcmVxdWVzdChkb3dubG9hZC5nZXQoKSk7Ci0gICAgZ19hc3Nl
cnQocmVxdWVzdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChyZXF1ZXN0KTsKICAgICBnX2Fzc2Vy
dF9jbXBzdHIod2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCksID09LCBzb3VyY2VV
UkkuZ2V0KCkpOwogCiAgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fZG93bmxvYWRTaXplLCA9
PSwgZ19maWxlX2luZm9fZ2V0X3NpemUoc291cmNlSW5mby5nZXQoKSkpOwotICAgIGdfYXNzZXJ0
KHdlYmtpdF9kb3dubG9hZF9nZXRfZGVzdGluYXRpb24oZG93bmxvYWQuZ2V0KCkpKTsKKyAgICBn
X2Fzc2VydF9ub25udWxsKHdlYmtpdF9kb3dubG9hZF9nZXRfZGVzdGluYXRpb24oZG93bmxvYWQu
Z2V0KCkpKTsKICAgICBnX2Fzc2VydF9jbXBmbG9hdCh3ZWJraXRfZG93bmxvYWRfZ2V0X2VzdGlt
YXRlZF9wcm9ncmVzcyhkb3dubG9hZC5nZXQoKSksID09LCAxKTsKIAogICAgIHJldHVybiBkb3du
bG9hZDsKQEAgLTIzMyw4ICsyMzMsOCBAQCBzdGF0aWMgdm9pZCBjcmVhdGVGaWxlQXREZXN0aW5h
dGlvbihjb25zdCBjaGFyKiBmaWxlbmFtZSkKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRv
cHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgocGF0aC5nZXQoKSkpOwogICAgIEdVbmlxdWVPdXRQ
dHI8R0Vycm9yPiBlcnJvcjsKICAgICBnX2ZpbGVfY3JlYXRlKGZpbGUuZ2V0KCksIEdfRklMRV9D
UkVBVEVfTk9ORSwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydCghZXJy
b3IpOwotICAgIGdfYXNzZXJ0KGdfZmlsZV9xdWVyeV9leGlzdHMoZmlsZS5nZXQoKSwgbnVsbHB0
cikpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF90
cnVlKGdfZmlsZV9xdWVyeV9leGlzdHMoZmlsZS5nZXQoKSwgbnVsbHB0cikpOwogfQogCiBzdGF0
aWMgdm9pZCB0ZXN0RG93bmxvYWRPdmVyd3JpdGVEZXN0aW5hdGlvbkFsbG93ZWQoRG93bmxvYWRU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMjc4LDcgKzI3OCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZmFpbGVkKFdlYktpdERvd25sb2FkKiBkb3dubG9hZCwgR0Vycm9yKiBlcnJvcikK
ICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KGdfZXJyb3JfbWF0Y2hlcyhlcnJvciwgV0VCS0lUX0RP
V05MT0FEX0VSUk9SLCBleHBlY3RlZEVycm9yVG9XZWJLaXREb3dubG9hZEVycm9yKG1fZXhwZWN0
ZWRFcnJvcikpKTsKKyAgICAgICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IsIFdFQktJVF9ET1dOTE9B
RF9FUlJPUiwgZXhwZWN0ZWRFcnJvclRvV2ViS2l0RG93bmxvYWRFcnJvcihtX2V4cGVjdGVkRXJy
b3IpKTsKICAgICAgICAgRG93bmxvYWRUZXN0OjpmYWlsZWQoZG93bmxvYWQsIGVycm9yKTsKICAg
ICB9CiAKQEAgLTMyMCw3ICszMjAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRPdmVyd3Jp
dGVEZXN0aW5hdGlvbkRpc2FsbG93ZWQoRG93bmxvYWRFcnJvclRlc3QqIHRlc3QsCiAgICAgR1Jl
ZlB0cjxHRmlsZT4gc291cmNlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoc291cmNl
UGF0aC5nZXQoKSkpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gc291cmNlVVJJKGdfZmlsZV9nZXRf
dXJpKHNvdXJjZS5nZXQoKSkpOwogICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2Fk
ID0gdGVzdC0+ZG93bmxvYWRVUklBbmRXYWl0VW50aWxGaW5pc2hlcyhzb3VyY2VVUkkuZ2V0KCkp
OwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25sb2FkLmdl
dCgpKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRv
d25sb2FkLmdldCgpKSk7CiAKICAgICBWZWN0b3I8RG93bmxvYWRUZXN0OjpEb3dubG9hZEV2ZW50
PiYgZXZlbnRzID0gdGVzdC0+bV9kb3dubG9hZEV2ZW50czsKICAgICBnX2Fzc2VydF9jbXBpbnQo
ZXZlbnRzLnNpemUoKSwgPT0sIDQpOwpAQCAtMzM3LDcgKzMzNyw3IEBAIHN0YXRpYyB2b2lkIHRl
c3REb3dubG9hZExvY2FsRmlsZUVycm9yKERvd25sb2FkRXJyb3JUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogewogICAgIHRlc3QtPm1fZXhwZWN0ZWRFcnJvciA9IERvd25sb2FkRXJyb3JUZXN0
OjpOZXR3b3JrRXJyb3I7CiAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB0
ZXN0LT5kb3dubG9hZFVSSUFuZFdhaXRVbnRpbEZpbmlzaGVzKCJmaWxlOi8vL2Zvby9iYXIiKTsK
LSAgICBnX2Fzc2VydCghd2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQo
KSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3du
bG9hZC5nZXQoKSkpOwogCiAgICAgVmVjdG9yPERvd25sb2FkVGVzdDo6RG93bmxvYWRFdmVudD4m
IGV2ZW50cyA9IHRlc3QtPm1fZG93bmxvYWRFdmVudHM7CiAgICAgZ19hc3NlcnRfY21waW50KGV2
ZW50cy5zaXplKCksID09LCAzKTsKQEAgLTM1Miw3ICszNTIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
RG93bmxvYWRMb2NhbEZpbGVFcnJvcihEb3dubG9hZEVycm9yVGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9y
X3BhdGgocGF0aC5nZXQoKSkpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gdXJpKGdfZmlsZV9nZXRf
dXJpKGZpbGUuZ2V0KCkpKTsKICAgICBkb3dubG9hZCA9IHRlc3QtPmRvd25sb2FkVVJJQW5kV2Fp
dFVudGlsRmluaXNoZXModXJpLmdldCgpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2Rvd25sb2Fk
X2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0
X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOwogCiAgICAgZ19hc3NlcnRf
Y21waW50KGV2ZW50cy5zaXplKCksID09LCA0KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRz
WzBdLCA9PSwgRG93bmxvYWRUZXN0OjpTdGFydGVkKTsKQEAgLTM2NSw3ICszNjUsNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0RG93bmxvYWRMb2NhbEZpbGVFcnJvcihEb3dubG9hZEVycm9yVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIHRlc3QtPm1fZXhwZWN0ZWRFcnJvciA9IERvd25sb2Fk
RXJyb3JUZXN0OjpEb3dubG9hZENhbmNlbGxlZDsKICAgICBkb3dubG9hZCA9IHRlc3QtPmRvd25s
b2FkVVJJQW5kV2FpdFVudGlsRmluaXNoZXModXJpLmdldCgpKTsKLSAgICBnX2Fzc2VydCghd2Vi
a2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOworICAgIGdfYXNzZXJ0
X251bGwod2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOwogCiAg
ICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCA0KTsKICAgICBnX2Fzc2VydF9j
bXBpbnQoZXZlbnRzWzBdLCA9PSwgRG93bmxvYWRUZXN0OjpTdGFydGVkKTsKQEAgLTQzOCw3ICs0
MzgsNyBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNv
dXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKgogc3RhdGljIHZvaWQgdGVzdERvd25sb2Fk
UmVtb3RlRmlsZShEb3dubG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgR1Jl
ZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB0ZXN0LT5kb3dubG9hZFVSSUFuZFdhaXRV
bnRpbEZpbmlzaGVzKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi90ZXN0LnBkZiIpKTsKLSAgICBn
X2Fzc2VydCghd2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOwor
ICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5n
ZXQoKSkpOwogCiAgICAgVmVjdG9yPERvd25sb2FkVGVzdDo6RG93bmxvYWRFdmVudD4mIGV2ZW50
cyA9IHRlc3QtPm1fZG93bmxvYWRFdmVudHM7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5z
aXplKCksID09LCA1KTsKQEAgLTQ1MCwxMyArNDUwLDEzIEBAIHN0YXRpYyB2b2lkIHRlc3REb3du
bG9hZFJlbW90ZUZpbGUoRG93bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGV2
ZW50cy5jbGVhcigpOwogCiAgICAgV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCA9IHdlYmtpdF9k
b3dubG9hZF9nZXRfcmVxdWVzdChkb3dubG9hZC5nZXQoKSk7Ci0gICAgZ19hc3NlcnQocmVxdWVz
dCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChyZXF1ZXN0KTsKICAgICBBU1NFUlRfQ01QX0NTVFJJ
Tkcod2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCksID09LCBrU2VydmVyLT5nZXRV
UklGb3JQYXRoKCIvdGVzdC5wZGYiKSk7CiAKICAgICBhdXRvIGhlYWRlcnMgPSB3ZWJraXRfdXJp
X3JlcXVlc3RfZ2V0X2h0dHBfaGVhZGVycyhyZXF1ZXN0KTsKICAgICBnX2Fzc2VydF9ub25udWxs
KHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9vbmUoaGVhZGVycywgIlVzZXItQWdlbnQiKSk7CiAK
LSAgICBnX2Fzc2VydCh3ZWJraXRfZG93bmxvYWRfZ2V0X2Rlc3RpbmF0aW9uKGRvd25sb2FkLmdl
dCgpKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbCh3ZWJraXRfZG93bmxvYWRfZ2V0X2Rlc3RpbmF0
aW9uKGRvd25sb2FkLmdldCgpKSk7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQod2Via2l0X2Rvd25s
b2FkX2dldF9lc3RpbWF0ZWRfcHJvZ3Jlc3MoZG93bmxvYWQuZ2V0KCkpLCA9PSwgMSk7CiAgICAg
R1VuaXF1ZVB0cjxjaGFyPiBleHBlY3RlZEZpbGVuYW1lKGdfc3RyZHVwX3ByaW50ZigiJXMucGRm
Iiwga1NlcnZlclN1Z2dlc3RlZEZpbGVuYW1lKSk7CiAgICAgdGVzdC0+Y2hlY2tEZXN0aW5hdGlv
bkFuZERlbGV0ZUZpbGUoZG93bmxvYWQuZ2V0KCksIGV4cGVjdGVkRmlsZW5hbWUuZ2V0KCkpOwpA
QCAtNDY2LDcgKzQ2Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3REb3dubG9hZFJlbW90ZUZpbGVFcnJv
cihEb3dubG9hZEVycm9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0LT5t
X2V4cGVjdGVkRXJyb3IgPSBEb3dubG9hZEVycm9yVGVzdDo6TmV0d29ya0Vycm9yOwogICAgIEdS
ZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gdGVzdC0+ZG93bmxvYWRVUklBbmRXYWl0
VW50aWxGaW5pc2hlcyhrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvZm9vIikpOwotICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25sb2FkLmdldCgpKSk7CisgICAg
Z19hc3NlcnRfbnVsbCh3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25sb2FkLmdldCgp
KSk7CiAKICAgICBWZWN0b3I8RG93bmxvYWRUZXN0OjpEb3dubG9hZEV2ZW50PiYgZXZlbnRzID0g
dGVzdC0+bV9kb3dubG9hZEV2ZW50czsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNpemUo
KSwgPT0sIDQpOwpAQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyB2b2lkIHRlc3REb3dubG9hZFJl
bW90ZUZpbGVFcnJvcihEb3dubG9hZEVycm9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAog
ICAgIHRlc3QtPm1fZXhwZWN0ZWRFcnJvciA9IERvd25sb2FkRXJyb3JUZXN0OjpJbnZhbGlkRGVz
dGluYXRpb247CiAgICAgZG93bmxvYWQgPSB0ZXN0LT5kb3dubG9hZFVSSUFuZFdhaXRVbnRpbEZp
bmlzaGVzKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi90ZXN0LnBkZiIpKTsKLSAgICBnX2Fzc2Vy
dCghd2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkpOworICAgIGdf
YXNzZXJ0X251bGwod2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyhkb3dubG9hZC5nZXQoKSkp
OwogCiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCA0KTsKICAgICBnX2Fz
c2VydF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwgRG93bmxvYWRUZXN0OjpTdGFydGVkKTsKQEAgLTQ5
NCw3ICs0OTQsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0RG93bmxvYWRSZW1vdGVGaWxlRXJyb3IoRG93
bmxvYWRFcnJvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICB0ZXN0LT5tX2V4cGVj
dGVkRXJyb3IgPSBEb3dubG9hZEVycm9yVGVzdDo6RG93bmxvYWRDYW5jZWxsZWQ7CiAgICAgZG93
bmxvYWQgPSB0ZXN0LT5kb3dubG9hZFVSSUFuZFdhaXRVbnRpbEZpbmlzaGVzKGtTZXJ2ZXItPmdl
dFVSSUZvclBhdGgoIi9jYW5jZWwtYWZ0ZXItZGVzdGluYXRpb24iKSk7Ci0gICAgZ19hc3NlcnQo
IXdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKKyAgICBnX2Fz
c2VydF9udWxsKHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsK
IAogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgNCk7CiAgICAgZ19hc3Nl
cnRfY21waW50KGV2ZW50c1swXSwgPT0sIERvd25sb2FkVGVzdDo6U3RhcnRlZCk7CkBAIC01MDYs
NyArNTA2LDcgQEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2FkUmVtb3RlRmlsZUVycm9yKERvd25s
b2FkRXJyb3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIC8vIENoZWNrIHRoZSBpbnRl
cm1lZGlhdGUgZmlsZSBpcyBkZWxldGVkIHdoZW4gdGhlIGRvd25sb2FkIGlzIGNhbmNlbGxlZC4K
ICAgICBHVW5pcXVlUHRyPGNoYXI+IGludGVybWVkaWF0ZVVSSShnX3N0cmR1cF9wcmludGYoIiVz
LndrZG93bmxvYWQiLCB3ZWJraXRfZG93bmxvYWRfZ2V0X2Rlc3RpbmF0aW9uKGRvd25sb2FkLmdl
dCgpKSkpOwogICAgIEdSZWZQdHI8R0ZpbGU+IGludGVybWVkaWF0ZUZpbGUgPSBhZG9wdEdSZWYo
Z19maWxlX25ld19mb3JfdXJpKGludGVybWVkaWF0ZVVSSS5nZXQoKSkpOwotICAgIGdfYXNzZXJ0
KCFnX2ZpbGVfcXVlcnlfZXhpc3RzKGludGVybWVkaWF0ZUZpbGUuZ2V0KCksIG51bGxwdHIpKTsK
KyAgICBnX2Fzc2VydF9mYWxzZShnX2ZpbGVfcXVlcnlfZXhpc3RzKGludGVybWVkaWF0ZUZpbGUu
Z2V0KCksIG51bGxwdHIpKTsKIH0KIAogY2xhc3MgV2ViVmlld0Rvd25sb2FkVGVzdDogcHVibGlj
IFdlYlZpZXdUZXN0IHsKQEAgLTUzNiw3ICs1MzYsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBtX2Rvd25sb2FkID0gMDsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwot
ICAgICAgICBnX2Fzc2VydChtX2Rvd25sb2FkLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9u
bnVsbChtX2Rvd25sb2FkLmdldCgpKTsKICAgICB9CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4gZG93
bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNhbGxiYWNrKFdlYktpdERvd25sb2FkKiBkb3dubG9hZCwg
Y29uc3QgZ2NoYXIqIHN1Z2dlc3RlZEZpbGVuYW1lLCBXZWJWaWV3RG93bmxvYWRUZXN0KiB0ZXN0
KQpAQCAtNTY4LDEwICs1NjgsMTAgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdEb3dubG9hZFVS
SShXZWJWaWV3RG93bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIEdSZWZQdHI8
V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJfdmlld19kb3du
bG9hZF91cmkodGVzdC0+bV93ZWJWaWV3LCBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvdGVzdC5w
ZGYiKS5kYXRhKCkpKTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZp
bmlzaGVzKEdfT0JKRUNUKGRvd25sb2FkLmdldCgpKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsRG93
bmxvYWRTdGFydGVkKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV93ZWJWaWV3ID09IHdlYmtpdF9k
b3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVl
KHRlc3QtPm1fd2ViVmlldyA9PSB3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KGRvd25sb2Fk
LmdldCgpKSk7CiAKICAgICBXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X2Rvd25s
b2FkX2dldF9yZXF1ZXN0KGRvd25sb2FkLmdldCgpKTsKLSAgICBnX2Fzc2VydChyZXF1ZXN0KTsK
KyAgICBnX2Fzc2VydF9ub25udWxsKHJlcXVlc3QpOwogICAgIEFTU0VSVF9DTVBfQ1NUUklORyh3
ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSwgPT0sIGtTZXJ2ZXItPmdldFVSSUZv
clBhdGgoIi90ZXN0LnBkZiIpKTsKIAogICAgIGF1dG8gaGVhZGVycyA9IHdlYmtpdF91cmlfcmVx
dWVzdF9nZXRfaHR0cF9oZWFkZXJzKHJlcXVlc3QpOwpAQCAtNjI1LDEwICs2MjUsMTAgQEAgc3Rh
dGljIHZvaWQgdGVzdFBvbGljeVJlc3BvbnNlRG93bmxvYWQoUG9saWN5UmVzcG9uc2VEb3dubG9h
ZFRlc3QqIHRlc3QsIGdjb25zdHAKICAgICB0ZXN0LT53YWl0VW50aWxEb3dubG9hZFN0YXJ0ZWQo
KTsKIAogICAgIFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfZG93bmxvYWRfZ2V0
X3JlcXVlc3QodGVzdC0+bV9kb3dubG9hZC5nZXQoKSk7Ci0gICAgZ19hc3NlcnQocmVxdWVzdCk7
CisgICAgZ19hc3NlcnRfbm9ubnVsbChyZXF1ZXN0KTsKICAgICBBU1NFUlRfQ01QX0NTVFJJTkco
d2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCksID09LCByZXF1ZXN0VVJJKTsKIAot
ICAgIGdfYXNzZXJ0KHRlc3QtPm1fd2ViVmlldyA9PSB3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92
aWV3KHRlc3QtPm1fZG93bmxvYWQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1f
d2ViVmlldyA9PSB3ZWJraXRfZG93bmxvYWRfZ2V0X3dlYl92aWV3KHRlc3QtPm1fZG93bmxvYWQu
Z2V0KCkpKTsKIAogICAgIGF1dG8gaGVhZGVycyA9IHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfaHR0
cF9oZWFkZXJzKHJlcXVlc3QpOwogICAgIGdfYXNzZXJ0X25vbm51bGwoc291cF9tZXNzYWdlX2hl
YWRlcnNfZ2V0X29uZShoZWFkZXJzLCAiVXNlci1BZ2VudCIpKTsKQEAgLTY0NywxMCArNjQ3LDEw
IEBAIHN0YXRpYyB2b2lkIHRlc3RQb2xpY3lSZXNwb25zZURvd25sb2FkQ2FuY2VsKFBvbGljeVJl
c3BvbnNlRG93bmxvYWRUZXN0KiB0ZXN0LCBnCiAgICAgdGVzdC0+d2FpdFVudGlsRG93bmxvYWRT
dGFydGVkKCk7CiAKICAgICBXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X2Rvd25s
b2FkX2dldF9yZXF1ZXN0KHRlc3QtPm1fZG93bmxvYWQuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KHJl
cXVlc3QpOworICAgIGdfYXNzZXJ0X25vbm51bGwocmVxdWVzdCk7CiAgICAgQVNTRVJUX0NNUF9D
U1RSSU5HKHdlYmtpdF91cmlfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpLCA9PSwgcmVxdWVzdFVS
SSk7CiAKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3dlYlZpZXcgPT0gd2Via2l0X2Rvd25sb2FkX2dl
dF93ZWJfdmlldyh0ZXN0LT5tX2Rvd25sb2FkLmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0
ZXN0LT5tX3dlYlZpZXcgPT0gd2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyh0ZXN0LT5tX2Rv
d25sb2FkLmdldCgpKSk7CiAKICAgICBhdXRvIGhlYWRlcnMgPSB3ZWJraXRfdXJpX3JlcXVlc3Rf
Z2V0X2h0dHBfaGVhZGVycyhyZXF1ZXN0KTsKICAgICBnX2Fzc2VydF9ub25udWxsKHNvdXBfbWVz
c2FnZV9oZWFkZXJzX2dldF9vbmUoaGVhZGVycywgIlVzZXItQWdlbnQiKSk7CkBAIC02NjAsNyAr
NjYwLDcgQEAgc3RhdGljIHZvaWQgdGVzdFBvbGljeVJlc3BvbnNlRG93bmxvYWRDYW5jZWwoUG9s
aWN5UmVzcG9uc2VEb3dubG9hZFRlc3QqIHRlc3QsIGcKIHN0YXRpYyB2b2lkIHRlc3REb3dubG9h
ZE1JTUVUeXBlKERvd25sb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBHUmVm
UHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHRlc3QtPmRvd25sb2FkVVJJQW5kV2FpdFVu
dGlsRmluaXNoZXMoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Vua25vd24iKSk7Ci0gICAgZ19h
c3NlcnQoIXdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKTsKKyAg
ICBnX2Fzc2VydF9udWxsKHdlYmtpdF9kb3dubG9hZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0
KCkpKTsKIAogICAgIFZlY3RvcjxEb3dubG9hZFRlc3Q6OkRvd25sb2FkRXZlbnQ+JiBldmVudHMg
PSB0ZXN0LT5tX2Rvd25sb2FkRXZlbnRzOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6
ZSgpLCA9PSwgNSk7CkBAIC02ODIsNyArNjgyLDcgQEAgc3RhdGljIHZvaWQgdGVzdERvd25sb2Fk
TUlNRVR5cGUoRG93bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIFdFQktJVF9J
U19VUklfUkVTUE9OU0UocmVzcG9uc2UpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfdXJp
X3Jlc3BvbnNlX2dldF9taW1lX3R5cGUocmVzcG9uc2UpLCA9PSwgImFwcGxpY2F0aW9uL3BkZiIp
OwogCi0gICAgZ19hc3NlcnQod2Via2l0X2Rvd25sb2FkX2dldF9kZXN0aW5hdGlvbihkb3dubG9h
ZC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X25vbm51bGwod2Via2l0X2Rvd25sb2FkX2dldF9kZXN0
aW5hdGlvbihkb3dubG9hZC5nZXQoKSkpOwogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KHdlYmtpdF9k
b3dubG9hZF9nZXRfZXN0aW1hdGVkX3Byb2dyZXNzKGRvd25sb2FkLmdldCgpKSwgPT0sIDEpOwog
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gZXhwZWN0ZWRGaWxlbmFtZShnX3N0cmR1cF9wcmludGYoIiVz
LnBkZiIsIGtTZXJ2ZXJTdWdnZXN0ZWRGaWxlbmFtZSkpOwogICAgIHRlc3QtPmNoZWNrRGVzdGlu
YXRpb25BbmREZWxldGVGaWxlKGRvd25sb2FkLmdldCgpLCBleHBlY3RlZEZpbGVuYW1lLmdldCgp
KTsKQEAgLTY5MSwxOSArNjkxLDE5IEBAIHN0YXRpYyB2b2lkIHRlc3REb3dubG9hZE1JTUVUeXBl
KERvd25sb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICNpZiBQTEFURk9STShHVEspCiBz
dGF0aWMgZ2Jvb2xlYW4gY29udGV4dE1lbnVDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBXZWJLaXRDb250ZXh0TWVudSogY29udGV4dE1lbnUsIEdka0V2ZW50KiwgV2ViS2l0SGl0VGVz
dFJlc3VsdCogaGl0VGVzdFJlc3VsdCwgV2ViVmlld0Rvd25sb2FkVGVzdCogdGVzdCkKIHsKLSAg
ICBnX2Fzc2VydChXRUJLSVRfSVNfSElUX1RFU1RfUkVTVUxUKGhpdFRlc3RSZXN1bHQpKTsKLSAg
ICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0
UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfSElUX1RFU1RfUkVTVUxUKGhp
dFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRf
Y29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKICAgICBHTGlzdCogaXRlbXMgPSB3ZWJr
aXRfY29udGV4dF9tZW51X2dldF9pdGVtcyhjb250ZXh0TWVudSk7CiAgICAgR1JlZlB0cjxXZWJL
aXRDb250ZXh0TWVudUl0ZW0+IGNvbnRleHRNZW51SXRlbTsKICAgICBmb3IgKEdMaXN0KiBsID0g
aXRlbXM7IGw7IGwgPSBnX2xpc3RfbmV4dChsKSkgewotICAgICAgICBnX2Fzc2VydChXRUJLSVRf
SVNfQ09OVEVYVF9NRU5VX0lURU0obC0+ZGF0YSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdF
QktJVF9JU19DT05URVhUX01FTlVfSVRFTShsLT5kYXRhKSk7CiAgICAgICAgIGF1dG8qIGl0ZW0g
PSBXRUJLSVRfQ09OVEVYVF9NRU5VX0lURU0obC0+ZGF0YSk7CiAgICAgICAgIGlmICh3ZWJraXRf
Y29udGV4dF9tZW51X2l0ZW1fZ2V0X3N0b2NrX2FjdGlvbihpdGVtKSA9PSBXRUJLSVRfQ09OVEVY
VF9NRU5VX0FDVElPTl9ET1dOTE9BRF9MSU5LX1RPX0RJU0spIHsKICAgICAgICAgICAgIGNvbnRl
eHRNZW51SXRlbSA9IGl0ZW07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0K
LSAgICBnX2Fzc2VydChjb250ZXh0TWVudUl0ZW0uZ2V0KCkpOworICAgIGdfYXNzZXJ0X25vbm51
bGwoY29udGV4dE1lbnVJdGVtLmdldCgpKTsKICAgICB3ZWJraXRfY29udGV4dF9tZW51X3JlbW92
ZV9hbGwoY29udGV4dE1lbnUpOwogICAgIHdlYmtpdF9jb250ZXh0X21lbnVfYXBwZW5kKGNvbnRl
eHRNZW51LCBjb250ZXh0TWVudUl0ZW0uZ2V0KCkpOwogICAgIHRlc3QtPnF1aXRNYWluTG9vcCgp
OwpAQCAtNzM2LDcgKzczNiw3IEBAIHN0YXRpYyB2b2lkIHRlc3RDb250ZXh0TWVudURvd25sb2Fk
QWN0aW9ucyhXZWJWaWV3RG93bmxvYWRUZXN0KiB0ZXN0LCBnY29uc3Rwb2luCiAgICAgfSwgdGVz
dCk7CiAgICAgdGVzdC0+d2FpdFVudGlsRG93bmxvYWRTdGFydGVkKCk7CiAKLSAgICBnX2Fzc2Vy
dCh0ZXN0LT5tX3dlYlZpZXcgPT0gd2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyh0ZXN0LT5t
X2Rvd25sb2FkLmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3dlYlZpZXcgPT0g
d2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyh0ZXN0LT5tX2Rvd25sb2FkLmdldCgpKSk7CiAK
ICAgICBXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0ID0gd2Via2l0X2Rvd25sb2FkX2dldF9yZXF1
ZXN0KHRlc3QtPm1fZG93bmxvYWQuZ2V0KCkpOwogICAgIFdFQktJVF9JU19VUklfUkVRVUVTVChy
ZXF1ZXN0KTsKQEAgLTc3NSw3ICs3NzUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0QmxvYkRvd25sb2Fk
KFdlYlZpZXdEb3dubG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgfSwgdGVzdCk7
CiAgICAgdGVzdC0+d2FpdFVudGlsRG93bmxvYWRTdGFydGVkKCk7CiAKLSAgICBnX2Fzc2VydCh0
ZXN0LT5tX3dlYlZpZXcgPT0gd2Via2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyh0ZXN0LT5tX2Rv
d25sb2FkLmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3dlYlZpZXcgPT0gd2Vi
a2l0X2Rvd25sb2FkX2dldF93ZWJfdmlldyh0ZXN0LT5tX2Rvd25sb2FkLmdldCgpKSk7CiAgICAg
dGVzdC0+d2FpdFVudGlsRG93bmxvYWRGaW5pc2hlZCgpOwogCiAgICAgR1JlZlB0cjxHRmlsZT4g
ZG93bmxvYWRGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3VyaSh3ZWJraXRfZG93bmxv
YWRfZ2V0X2Rlc3RpbmF0aW9uKHRlc3QtPm1fZG93bmxvYWQuZ2V0KCkpKSk7CkBAIC03ODMsNyAr
NzgzLDcgQEAgc3RhdGljIHZvaWQgdGVzdEJsb2JEb3dubG9hZChXZWJWaWV3RG93bmxvYWRUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZG93bmxvYWRQYXRo
KGdfZmlsZV9nZXRfcGF0aChkb3dubG9hZEZpbGUuZ2V0KCkpKTsKICAgICBHVW5pcXVlT3V0UHRy
PGNoYXI+IGRvd25sb2FkQ29udGVudHM7CiAgICAgZ3NpemUgZG93bmxvYWRDb250ZW50c0xlbmd0
aDsKLSAgICBnX2Fzc2VydChnX2ZpbGVfZ2V0X2NvbnRlbnRzKGRvd25sb2FkUGF0aC5nZXQoKSwg
JmRvd25sb2FkQ29udGVudHMub3V0UHRyKCksICZkb3dubG9hZENvbnRlbnRzTGVuZ3RoLCBudWxs
cHRyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShnX2ZpbGVfZ2V0X2NvbnRlbnRzKGRvd25sb2FkUGF0
aC5nZXQoKSwgJmRvd25sb2FkQ29udGVudHMub3V0UHRyKCksICZkb3dubG9hZENvbnRlbnRzTGVu
Z3RoLCBudWxscHRyKSk7CiAgICAgZ19hc3NlcnRfY21waW50KGdfZmlsZV9pbmZvX2dldF9zaXpl
KGRvd25sb2FkRmlsZUluZm8uZ2V0KCkpLCA9PSwgZG93bmxvYWRDb250ZW50c0xlbmd0aCk7CiAg
ICAgZ19hc3NlcnRfY21wc3RyKGRvd25sb2FkQ29udGVudHMuZ2V0KCksID09LCAiSGVsbG8gd29y
bGQiKTsKICAgICBnX2ZpbGVfZGVsZXRlKGRvd25sb2FkRmlsZS5nZXQoKSwgbnVsbHB0ciwgbnVs
bHB0cik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdEVkaXRvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dEVkaXRvci5jcHAKaW5kZXggNThiZTUzZTNiZWQ0ZWVjZGZlZDg2NjgwYjhhMmRmMzQ0ODk4MDA3
ZC4uM2Y2YWIyNDViZDlhZjhkYTM1OTk5NjE0MTQxZjBmMzUzN2I1OTdkMSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RFZGl0b3IuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0RWRpdG9yLmNwcApAQCAt
MjQsNyArMjQsNyBAQAogc3RhdGljIHZvaWQgdGVzdFdlYktpdFdlYkVkaXRvclNlbGVjdGlvbkNo
YW5nZWQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNv
bnN0IGdjaGFyKiB0ZXN0SFRNTCA9ICI8aHRtbD48Ym9keT5BbGwgd29yayBhbmQgbm8gcGxheSBt
YWtlIEphY2sgYSBkdWxsIGJveS48L2JvZHk+PC9odG1sPiI7Ci0gICAgZ19hc3NlcnQodGVzdC0+
cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdFdlYkVkaXRvciIsICJzZWxlY3Rpb24tY2hhbmdlZCIs
IHRlc3RIVE1MKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgi
V2ViS2l0V2ViRWRpdG9yIiwgInNlbGVjdGlvbi1jaGFuZ2VkIiwgdGVzdEhUTUwpKTsKIH0KIAog
dm9pZCBiZWZvcmVBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RGcmFtZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdEZyYW1lLmNwcAppbmRleCA2ZjMzNzI5YjE4MDE5NTc4OTZkMjQzMjIwM2QxZWQ2
YjAxNDFlNDk0Li5mNmQyOTdmMmU0OWU4YjQyZWUzODNiMTgyZWQ0ZDhiODQ3NTE1MTVmIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEZyYW1lLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEZyYW1lLmNw
cApAQCAtMjMsMjMgKzIzLDIzIEBACiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRGcmFtZU1haW5G
cmFtZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBnX2Fzc2VydCh0
ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RnJhbWUiLCAibWFpbi1mcmFtZSIpKTsKKyAg
ICBnX2Fzc2VydF90cnVlKHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRGcmFtZSIsICJt
YWluLWZyYW1lIikpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RnJhbWVVUkkoV2ViVmll
d1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgZ19hc3NlcnQodGVzdC0+cnVuV2Vi
UHJvY2Vzc1Rlc3QoIldlYktpdEZyYW1lIiwgInVyaSIpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRl
c3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRGcmFtZSIsICJ1cmkiKSk7CiB9CiAKIHN0YXRp
YyB2b2lkIHRlc3RXZWJLaXRGcmFtZUphdmFTY3JpcHRDb250ZXh0KFdlYlZpZXdUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogewotICAgIGdfYXNzZXJ0KHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0
KCJXZWJLaXRGcmFtZSIsICJqYXZhc2NyaXB0LWNvbnRleHQiKSk7CisgICAgZ19hc3NlcnRfdHJ1
ZSh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RnJhbWUiLCAiamF2YXNjcmlwdC1jb250
ZXh0IikpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RnJhbWVKYXZhU2NyaXB0VmFsdWVz
KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiB0ZXN0SFRNTCA9ICI8aHRtbD48Ym9keT48cCBpZD0ncGFyYWdyYXBoJz5UaGlzIGlzIGEg
dGVzdDwvcD48aW1nIGlkPSdpbWFnZScgc3JjPSdmb28ucG5nJz48L2JvZHk+PC9odG1sPiI7Ci0g
ICAgZ19hc3NlcnQodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdEZyYW1lIiwgImphdmFz
Y3JpcHQtdmFsdWVzIiwgdGVzdEhUTUwpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPnJ1bldl
YlByb2Nlc3NUZXN0KCJXZWJLaXRGcmFtZSIsICJqYXZhc2NyaXB0LXZhbHVlcyIsIHRlc3RIVE1M
KSk7CiB9CiAKIHZvaWQgYmVmb3JlQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TG9hZGVyQ2xpZW50LmNwcAppbmRleCBiZjM3MmE1
NjBhMDg5MjYyNjdjZDY0NmJjOGMzMWFmODcyN2M1ZjZkLi5jNjdhZjE2ODRmZmNkZjIzODU5YmM0
NzVkMDkwNWQyYWY5OGE0YmFkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdExvYWRlckNsaWVudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RMb2FkZXJDbGllbnQuY3BwCkBAIC0xMzUsNyArMTM1LDcg
QEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgbG9hZEZhaWxlZChjb25zdCBnY2hh
ciogZmFpbGluZ1VSSSwgR0Vycm9yKiBlcnJvcikKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KGdf
ZXJyb3JfbWF0Y2hlcyhlcnJvciwgV0VCS0lUX05FVFdPUktfRVJST1IsIFdFQktJVF9ORVRXT1JL
X0VSUk9SX0NBTkNFTExFRCkpOworICAgICAgICBnX2Fzc2VydF9lcnJvcihlcnJvciwgV0VCS0lU
X05FVFdPUktfRVJST1IsIFdFQktJVF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCk7CiAgICAgICAg
IExvYWRUcmFja2luZ1Rlc3Q6OmxvYWRGYWlsZWQoZmFpbGluZ1VSSSwgZXJyb3IpOwogICAgIH0K
IH07CkBAIC0xNTUsNyArMTU1LDcgQEAgc3RhdGljIHZvaWQgdGVzdExvYWRDYW5jZWxsZWQoTG9h
ZFN0b3BUcmFja2luZ1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKIHN0YXRpYyB2b2lkIHRl
c3RXZWJWaWV3VGl0bGUoTG9hZFRyYWNraW5nVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsK
LSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2dldF90aXRsZSh0ZXN0LT5tX3dlYlZpZXcp
KTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJfdmlld19nZXRfdGl0bGUodGVzdC0+bV93
ZWJWaWV3KSk7CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxoZWFkPjx0aXRsZT5XZWxjb21l
IHRvIFdlYktpdC1HVEsrITwvdGl0bGU+PC9oZWFkPjwvaHRtbD4iLCAwKTsKICAgICB0ZXN0LT53
YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl92
aWV3X2dldF90aXRsZSh0ZXN0LT5tX3dlYlZpZXcpLCA9PSwgIldlbGNvbWUgdG8gV2ViS2l0LUdU
SyshIik7CkBAIC0yNTMsNyArMjUzLDcgQEAgcHVibGljOgogICAgIFZpZXdVUklUcmFja2luZ1Rl
c3QoKQogICAgICAgICA6IG1fY3VycmVudFVSSSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaShtX3dl
YlZpZXcpKQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQobV9jdXJyZW50VVJJLmlzTnVsbCgpKTsK
KyAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2N1cnJlbnRVUkkuaXNOdWxsKCkpOwogICAgICAgICBt
X2N1cnJlbnRVUklMaXN0Lmdyb3cobV9jdXJyZW50VVJJTGlzdC5jYXBhY2l0eSgpKTsKICAgICAg
ICAgZ19zaWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJub3RpZnk6OnVyaSIsIEdfQ0FMTEJBQ0so
dXJpQ2hhbmdlZCksIHRoaXMpOwogICAgIH0KQEAgLTI5Miw3ICsyOTIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmIChwYXRoKQogICAgICAgICAgICAgQVNTRVJUX0NNUF9DU1RSSU5HKG1fY3VycmVu
dFVSSUxpc3Rbc3RhdGVdLCA9PSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aChwYXRoKSk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIGdfYXNzZXJ0KG1fY3VycmVudFVSSUxpc3Rbc3RhdGVdLmlz
TnVsbCgpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUobV9jdXJyZW50VVJJTGlzdFtzdGF0
ZV0uaXNOdWxsKCkpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTM2MiwxNiArMzYyLDE2IEBAIHB1
YmxpYzoKICAgICB2b2lkIGJlZ2luTG9hZCgpCiAgICAgewogICAgICAgICAvLyBOZXcgbG9hZCwg
bG9hZC1zdGFydGVkIGhhc24ndCBiZWVuIGVtaXR0ZWQgeWV0LgotICAgICAgICBnX2Fzc2VydCht
X2xvYWRFdmVudHMuaXNFbXB0eSgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2xvYWRFdmVu
dHMuaXNFbXB0eSgpKTsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfdmlld19n
ZXRfdXJpKG1fd2ViVmlldyksID09LCBtX2FjdGl2ZVVSSS5kYXRhKCkpOwogICAgIH0KIAogICAg
IHZvaWQgZW5kTG9hZCgpCiAgICAgewogICAgICAgICAvLyBMb2FkIGZpbmlzaCwgbG9hZC1maW5p
c2hlZCBhbmQgbG9hZC1mYWlsZWQgaGF2ZW4ndCBiZWVuIGVtaXR0ZWQgeWV0LgotICAgICAgICBn
X2Fzc2VydCghbV9sb2FkRXZlbnRzLmlzRW1wdHkoKSk7Ci0gICAgICAgIGdfYXNzZXJ0KCFtX2xv
YWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZpbmlzaGVkKSk7Ci0gICAg
ICAgIGdfYXNzZXJ0KCFtX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6TG9h
ZEZhaWxlZCkpOworICAgICAgICBnX2Fzc2VydF9mYWxzZShtX2xvYWRFdmVudHMuaXNFbXB0eSgp
KTsKKyAgICAgICAgZ19hc3NlcnRfZmFsc2UobV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFj
a2luZ1Rlc3Q6OkxvYWRGaW5pc2hlZCkpOworICAgICAgICBnX2Fzc2VydF9mYWxzZShtX2xvYWRF
dmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZhaWxlZCkpOwogICAgIH0KIH07
CiAKQEAgLTQzMCw3ICs0MzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZWludGVycHJldF9j
YXN0PEdEQnVzU2lnbmFsQ2FsbGJhY2s+KHdlYlBhZ2VVUklDaGFuZ2VkQ2FsbGJhY2spLAogICAg
ICAgICAgICAgdGhpcywKICAgICAgICAgICAgIDApOwotICAgICAgICBnX2Fzc2VydChtX3VyaUNo
YW5nZWRTaWduYWxJRCk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQobV91cmlDaGFuZ2VkU2ln
bmFsSUQsICE9LCAwKTsKIAogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgIm5v
dGlmeTo6dXJpIiwgR19DQUxMQkFDSyh3ZWJWaWV3VVJJQ2hhbmdlZCksIHRoaXMpOwogICAgIH0K
QEAgLTQ5OCw5ICs0OTgsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViUGFnZVVSSShXZWJQYWdlVVJJ
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHN0YXRpYyB2b2lkIHRlc3RVUklSZXF1ZXN0SFRU
UEhlYWRlcnMoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgR1JlZlB0
cjxXZWJLaXRVUklSZXF1ZXN0PiB1cmlSZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdF91cmlfcmVx
dWVzdF9uZXcoImZpbGU6Ly8vZm9vL2JhciIpKTsKLSAgICBnX2Fzc2VydCh1cmlSZXF1ZXN0Lmdl
dCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHVyaVJlcXVlc3QuZ2V0KCkpOwogICAgIGdfYXNz
ZXJ0X2NtcHN0cih3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X3VyaSh1cmlSZXF1ZXN0LmdldCgpKSwg
PT0sICJmaWxlOi8vL2Zvby9iYXIiKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3VyaV9yZXF1ZXN0
X2dldF9odHRwX2hlYWRlcnModXJpUmVxdWVzdC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X251bGwo
d2Via2l0X3VyaV9yZXF1ZXN0X2dldF9odHRwX2hlYWRlcnModXJpUmVxdWVzdC5nZXQoKSkpOwog
CiAgICAgLy8gTG9hZCBhIHJlcXVlc3Qgd2l0aCBubyBEbyBOb3QgVHJhY2sgaGVhZGVyLgogICAg
IHdlYmtpdF91cmlfcmVxdWVzdF9zZXRfdXJpKHVyaVJlcXVlc3QuZ2V0KCksIGtTZXJ2ZXItPmdl
dFVSSUZvclBhdGgoIi9kby1ub3QtdHJhY2staGVhZGVyIikuZGF0YSgpKTsKQEAgLTUxMCwxOCAr
NTEwLDE4IEBAIHN0YXRpYyB2b2lkIHRlc3RVUklSZXF1ZXN0SFRUUEhlYWRlcnMoV2ViVmlld1Rl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgc2l6ZV90IG1haW5SZXNvdXJjZURhdGFTaXpl
ID0gMDsKICAgICBjb25zdCBjaGFyKiBtYWluUmVzb3VyY2VEYXRhID0gdGVzdC0+bWFpblJlc291
cmNlRGF0YShtYWluUmVzb3VyY2VEYXRhU2l6ZSk7CiAgICAgZ19hc3NlcnRfY21waW50KG1haW5S
ZXNvdXJjZURhdGFTaXplLCA9PSwgc3RybGVuKGtETlRIZWFkZXJOb3RQcmVzZW50KSk7Ci0gICAg
Z19hc3NlcnQoIXN0cm5jbXAobWFpblJlc291cmNlRGF0YSwga0ROVEhlYWRlck5vdFByZXNlbnQs
IG1haW5SZXNvdXJjZURhdGFTaXplKSk7CisgICAgZ19hc3NlcnRfY21waW50KHN0cm5jbXAobWFp
blJlc291cmNlRGF0YSwga0ROVEhlYWRlck5vdFByZXNlbnQsIG1haW5SZXNvdXJjZURhdGFTaXpl
KSwgPT0sIDApOwogCiAgICAgLy8gQWRkIHRoZSBEbyBOb3QgVHJhY2sgaGVhZGVyIGFuZCBsb2Fk
IHRoZSByZXF1ZXN0IGFnYWluLgogICAgIFNvdXBNZXNzYWdlSGVhZGVycyogaGVhZGVycyA9IHdl
YmtpdF91cmlfcmVxdWVzdF9nZXRfaHR0cF9oZWFkZXJzKHVyaVJlcXVlc3QuZ2V0KCkpOwotICAg
IGdfYXNzZXJ0KGhlYWRlcnMpOworICAgIGdfYXNzZXJ0X25vbm51bGwoaGVhZGVycyk7CiAgICAg
c291cF9tZXNzYWdlX2hlYWRlcnNfYXBwZW5kKGhlYWRlcnMsICJETlQiLCAiMSIpOwogICAgIHRl
c3QtPmxvYWRSZXF1ZXN0KHVyaVJlcXVlc3QuZ2V0KCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExv
YWRGaW5pc2hlZCgpOwogCiAgICAgbWFpblJlc291cmNlRGF0YSA9IHRlc3QtPm1haW5SZXNvdXJj
ZURhdGEobWFpblJlc291cmNlRGF0YVNpemUpOwogICAgIGdfYXNzZXJ0X2NtcGludChtYWluUmVz
b3VyY2VEYXRhU2l6ZSwgPT0sIDEpOwotICAgIGdfYXNzZXJ0KCFzdHJuY21wKG1haW5SZXNvdXJj
ZURhdGEsICIxIiwgbWFpblJlc291cmNlRGF0YVNpemUpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
c3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCAiMSIsIG1haW5SZXNvdXJjZURhdGFTaXplKSwgPT0s
IDApOwogCiAgICAgLy8gTG9hZCBhIFVSSSBmb3Igd2hpY2ggdGhlIHdlYiBleHRlbnNpb24gd2ls
bCBhZGQgdGhlIERvIE5vdCBUcmFjayBoZWFkZXIuCiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVy
LT5nZXRVUklGb3JQYXRoKCIvYWRkLWRvLW5vdC10cmFjay1oZWFkZXIiKS5kYXRhKCkpOwpAQCAt
NTI5LDE1ICs1MjksMTUgQEAgc3RhdGljIHZvaWQgdGVzdFVSSVJlcXVlc3RIVFRQSGVhZGVycyhX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIG1haW5SZXNvdXJjZURhdGEg
PSB0ZXN0LT5tYWluUmVzb3VyY2VEYXRhKG1haW5SZXNvdXJjZURhdGFTaXplKTsKICAgICBnX2Fz
c2VydF9jbXBpbnQobWFpblJlc291cmNlRGF0YVNpemUsID09LCAxKTsKLSAgICBnX2Fzc2VydCgh
c3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCAiMSIsIG1haW5SZXNvdXJjZURhdGFTaXplKSk7Cisg
ICAgZ19hc3NlcnRfY21waW50KHN0cm5jbXAobWFpblJlc291cmNlRGF0YSwgIjEiLCBtYWluUmVz
b3VyY2VEYXRhU2l6ZSksID09LCAwKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFVSSVJlcXVlc3RI
VFRQTWV0aG9kKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIEdSZWZQ
dHI8V2ViS2l0VVJJUmVxdWVzdD4gdXJpUmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJraXRfdXJpX3Jl
cXVlc3RfbmV3KCJmaWxlOi8vL2Zvby9iYXIiKSk7Ci0gICAgZ19hc3NlcnQodXJpUmVxdWVzdC5n
ZXQoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbCh1cmlSZXF1ZXN0LmdldCgpKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIod2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkodXJpUmVxdWVzdC5nZXQoKSks
ID09LCAiZmlsZTovLy9mb28vYmFyIik7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF91cmlfcmVxdWVz
dF9nZXRfaHR0cF9tZXRob2QodXJpUmVxdWVzdC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X251bGwo
d2Via2l0X3VyaV9yZXF1ZXN0X2dldF9odHRwX21ldGhvZCh1cmlSZXF1ZXN0LmdldCgpKSk7CiAK
ICAgICB3ZWJraXRfdXJpX3JlcXVlc3Rfc2V0X3VyaSh1cmlSZXF1ZXN0LmdldCgpLCBrU2VydmVy
LT5nZXRVUklGb3JQYXRoKCIvaHR0cC1nZXQtbWV0aG9kIikuZGF0YSgpKTsKICAgICB0ZXN0LT5s
b2FkUmVxdWVzdCh1cmlSZXF1ZXN0LmdldCgpKTsKQEAgLTU1MSwxOSArNTUxLDE5IEBAIHN0YXRp
YyB2b2lkIHRlc3RVUklSZXNwb25zZUhUVFBIZWFkZXJzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT5ObyBIVFRQIGhlYWRl
cnM8L2JvZHk+PC9odG1sPiIsICJmaWxlOi8vLyIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOwogICAgIFdlYktpdFdlYlJlc291cmNlKiByZXNvdXJjZSA9IHdlYmtpdF93ZWJf
dmlld19nZXRfbWFpbl9yZXNvdXJjZSh0ZXN0LT5tX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KFdF
QktJVF9JU19XRUJfUkVTT1VSQ0UocmVzb3VyY2UpKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJ
VF9JU19XRUJfUkVTT1VSQ0UocmVzb3VyY2UpKTsKICAgICBXZWJLaXRVUklSZXNwb25zZSogcmVz
cG9uc2UgPSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9yZXNwb25zZShyZXNvdXJjZSk7Ci0gICAg
Z19hc3NlcnQoV0VCS0lUX0lTX1VSSV9SRVNQT05TRShyZXNwb25zZSkpOwotICAgIGdfYXNzZXJ0
KCF3ZWJraXRfdXJpX3Jlc3BvbnNlX2dldF9odHRwX2hlYWRlcnMocmVzcG9uc2UpKTsKKyAgICBn
X2Fzc2VydF90cnVlKFdFQktJVF9JU19VUklfUkVTUE9OU0UocmVzcG9uc2UpKTsKKyAgICBnX2Fz
c2VydF9udWxsKHdlYmtpdF91cmlfcmVzcG9uc2VfZ2V0X2h0dHBfaGVhZGVycyhyZXNwb25zZSkp
OwogCiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaGVhZGVycyIp
LmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAgcmVzb3Vy
Y2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fcmVzb3VyY2UodGVzdC0+bV93ZWJWaWV3KTsK
LSAgICBnX2Fzc2VydChXRUJLSVRfSVNfV0VCX1JFU09VUkNFKHJlc291cmNlKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZShXRUJLSVRfSVNfV0VCX1JFU09VUkNFKHJlc291cmNlKSk7CiAgICAgcmVzcG9u
c2UgPSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9yZXNwb25zZShyZXNvdXJjZSk7Ci0gICAgZ19h
c3NlcnQoV0VCS0lUX0lTX1VSSV9SRVNQT05TRShyZXNwb25zZSkpOworICAgIGdfYXNzZXJ0X3Ry
dWUoV0VCS0lUX0lTX1VSSV9SRVNQT05TRShyZXNwb25zZSkpOwogICAgIFNvdXBNZXNzYWdlSGVh
ZGVycyogaGVhZGVycyA9IHdlYmtpdF91cmlfcmVzcG9uc2VfZ2V0X2h0dHBfaGVhZGVycyhyZXNw
b25zZSk7Ci0gICAgZ19hc3NlcnQoaGVhZGVycyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChoZWFk
ZXJzKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X29uZSho
ZWFkZXJzLCAiRm9vIiksID09LCAiYmFyIik7CiB9CiAKQEAgLTU3Niw3ICs1NzYsNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0UmVkaXJlY3RUb0RhdGFVUkkoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCiAgICAgc2l6ZV90IG1haW5SZXNvdXJjZURhdGFTaXplID0gMDsKICAgICBjb25zdCBj
aGFyKiBtYWluUmVzb3VyY2VEYXRhID0gdGVzdC0+bWFpblJlc291cmNlRGF0YShtYWluUmVzb3Vy
Y2VEYXRhU2l6ZSk7CiAgICAgZ19hc3NlcnRfY21waW50KG1haW5SZXNvdXJjZURhdGFTaXplLCA9
PSwgc3RybGVuKGV4cGVjdGVkRGF0YSkpOwotICAgIGdfYXNzZXJ0KCFzdHJuY21wKG1haW5SZXNv
dXJjZURhdGEsIGV4cGVjdGVkRGF0YSwgbWFpblJlc291cmNlRGF0YVNpemUpKTsKKyAgICBnX2Fz
c2VydF9jbXBpbnQoc3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCBleHBlY3RlZERhdGEsIG1haW5S
ZXNvdXJjZURhdGFTaXplKSwgPT0sIDApOwogfQogCiBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFj
ayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBw
YXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9pbnRlcikKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9jZXNz
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0TXVsdGlwcm9j
ZXNzLmNwcAppbmRleCBiOWI4MTczM2Y3OWQ1ZmY5NWY4Mjk0ZWNlYzAwZDE1MGNhMDc4MzA4Li45
YjVlNmI2MmQxMGJjOGZiZDFiYThiOTFiMTk1NDIwOTFiYmUyOTZlIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdE11bHRpcHJvY2Vzcy5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RNdWx0aXByb2Nlc3Mu
Y3BwCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG51bGxwdHIsCiAgICAg
ICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19OT05FLAogICAgICAgICAgICAgLTEsIG51bGxwdHIs
IG51bGxwdHIpKTsKLSAgICAgICAgZ19hc3NlcnQocmVzdWx0KTsKKyAgICAgICAgZ19hc3NlcnRf
bm9ubnVsbChyZXN1bHQpOwogCiAgICAgICAgIGd1aW50MzIgaWRlbnRpZmllciA9IDA7CiAgICAg
ICAgIGdfdmFyaWFudF9nZXQocmVzdWx0LmdldCgpLCAiKHUpIiwgJmlkZW50aWZpZXIpOwpAQCAt
MTIyLDggKzEyMiw4IEBAIHN0YXRpYyB2b2lkIHRlc3RQcm9jZXNzUGVyV2ViVmlldyhNdWx0aXBy
b2Nlc3NUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG51bVZpZXdzOyBpKyspIHsKICAgICAgICAgdGVzdC0+bG9hZFdlYlZpZXdBbmRXYWl0
VW50aWxMb2FkZWQoaSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfVklFVyh0ZXN0
LT5tX3dlYlZpZXdzW2ldLmdldCgpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KHRlc3QtPm1fd2ViVmll
d0J1c05hbWVzW2ldKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfV0VCX1ZJRVco
dGVzdC0+bV93ZWJWaWV3c1tpXS5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKHRl
c3QtPm1fd2ViVmlld0J1c05hbWVzW2ldKTsKICAgICB9CiAKICAgICBnX2Fzc2VydF9jbXB1aW50
KHRlc3QtPm1faW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNTaWduYWxDb3VudCwgPT0sIG51bVZpZXdz
KTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJLaXRXZWJWaWV3KiB2aWV3
Q3JlYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgewotICAgICAgICBnX2Fzc2VydCh3
ZWJWaWV3ID09IG1fd2ViVmlldyk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2ViVmlldyA9PSBt
X3dlYlZpZXcpOwogCiAgICAgICAgIGF1dG8qIG5ld1dlYlZpZXcgPSBUZXN0OjpjcmVhdGVXZWJW
aWV3KHdlYlZpZXcpOwogI2lmIFBMQVRGT1JNKEdUSykKQEAgLTIxMCwxMyArMjEwLDEzIEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgdmlld1JlYWR5VG9TaG93KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiAgICAgewotICAgICAgICBnX2Fzc2VydChtX3dlYlZpZXcgIT0gd2ViVmlldyk7CisgICAgICAg
IGdfYXNzZXJ0X3RydWUobV93ZWJWaWV3ICE9IHdlYlZpZXcpOwogICAgICAgICBtX3dlYlZpZXdF
dmVudHMuYXBwZW5kKFJlYWR5VG9TaG93KTsKICAgICB9CiAKICAgICB2b2lkIHZpZXdDbG9zZShX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQobV93ZWJWaWV3
ICE9IHdlYlZpZXcpOworICAgICAgICBnX2Fzc2VydF90cnVlKG1fd2ViVmlldyAhPSB3ZWJWaWV3
KTsKIAogICAgICAgICBtX3dlYlZpZXdFdmVudHMuYXBwZW5kKENsb3NlKTsKICAgICAgICAgZ19v
YmplY3RfdW5yZWYod2ViVmlldyk7CkBAIC0yNTgsNyArMjU4LDcgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYlByb2Nlc3NMaW1pdChNdWx0aXByb2Nlc3NUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ICAgIC8vIENyZWF0ZSB0d28gd2ViIHZpZXdzIGJ1dCB0aGVyZSBzaG91bGQgYmUgb25seSBvbmUg
d2ViIHByb2Nlc3MuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bVZpZXdzOyBpKysp
IHsKICAgICAgICAgdGVzdC0+bG9hZFdlYlZpZXdBbmRXYWl0VW50aWxMb2FkZWQoaSk7Ci0gICAg
ICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfVklFVyh0ZXN0LT5tX3dlYlZpZXdzW2ldLmdldCgp
KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1dFQl9WSUVXKHRlc3QtPm1fd2Vi
Vmlld3NbaV0uZ2V0KCkpKTsKICAgICB9CiAKICAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1f
aW5pdGlhbGl6ZVdlYkV4dGVuc2lvbnNTaWduYWxDb3VudCwgPT0sIDEpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RSZXNvdXJjZXMuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RSZXNvdXJjZXMuY3BwCmlu
ZGV4IDM0NzA3MjBmNTdkYjBlOTk5MzM4YzhlZDQ1NWRjMDk2YmMwODEzZjAuLmNkZGQ0NGU5OWMw
ZDEzODk1M2JlY2M5ZjJiNzU4Yzk2MjY2MzQzMzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0UmVzb3VyY2VzLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFJlc291cmNlcy5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VSZWNlaXZlZFJlc3BvbnNl
Q2FsbGJhY2soV2ViS2l0V2ViUmVzb3VyY2UqIHJlc291cmNlLCBHUGFyYW1TcGVjKiwgUmVzb3Vy
Y2VzVGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfcmVzb3Vy
Y2VfZ2V0X3Jlc3BvbnNlKHJlc291cmNlKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwod2Vi
a2l0X3dlYl9yZXNvdXJjZV9nZXRfcmVzcG9uc2UocmVzb3VyY2UpKTsKICAgICAgICAgdGVzdC0+
cmVzb3VyY2VSZWNlaXZlZFJlc3BvbnNlKHJlc291cmNlKTsKICAgICB9CiAKQEAgLTc0LDcgKzc0
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVzb3VyY2VGYWlsZWRDYWxsYmFjayhX
ZWJLaXRXZWJSZXNvdXJjZSogcmVzb3VyY2UsIEdFcnJvciogZXJyb3IsIFJlc291cmNlc1Rlc3Qq
IHRlc3QpCiAgICAgewotICAgICAgICBnX2Fzc2VydChlcnJvcik7CisgICAgICAgIGdfYXNzZXJ0
X25vbm51bGwoZXJyb3IpOwogICAgICAgICB0ZXN0LT5yZXNvdXJjZUZhaWxlZChyZXNvdXJjZSwg
ZXJyb3IpOwogICAgIH0KIApAQCAtMTY0LDggKzE2NCw4IEBAIHB1YmxpYzoKICAgICAgICAgc2l6
ZV90IGRhdGFTaXplOwogICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAg
ICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9kYXRhX2Zp
bmlzaChXRUJLSVRfV0VCX1JFU09VUkNFKG9iamVjdCksIHJlc3VsdCwgJmRhdGFTaXplLCAmZXJy
b3Iub3V0UHRyKCkpOwotICAgICAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOwotICAgICAgICBn
X2Fzc2VydChkYXRhKTsKKyAgICAgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwor
ICAgICAgICBnX2Fzc2VydF9ub25udWxsKGRhdGEpOwogICAgICAgICBnX2Fzc2VydF9jbXBpbnQo
ZGF0YVNpemUsID4sIDApOwogCiAgICAgICAgIFJlc291cmNlc1Rlc3QqIHRlc3QgPSBzdGF0aWNf
Y2FzdDxSZXNvdXJjZXNUZXN0Kj4odXNlckRhdGEpOwpAQCAtMTgzLDIwICsxODMsMjAgQEAgcHVi
bGljOgogICAgICAgICBjb25zdCBjaGFyKiB1cmkgPSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF91
cmkocmVzb3VyY2UpOwogICAgICAgICBpZiAodXJpID09IGtTZXJ2ZXItPmdldFVSSUZvclBhdGgo
Ii8iKSkgewogICAgICAgICAgICAgZ19hc3NlcnRfY21waW50KG1fcmVzb3VyY2VEYXRhU2l6ZSwg
PT0sIHN0cmxlbihrSW5kZXhIdG1sKSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghc3RybmNtcCht
X3Jlc291cmNlRGF0YS5nZXQoKSwga0luZGV4SHRtbCwgbV9yZXNvdXJjZURhdGFTaXplKSk7Cisg
ICAgICAgICAgICBnX2Fzc2VydF9jbXBpbnQoc3RybmNtcChtX3Jlc291cmNlRGF0YS5nZXQoKSwg
a0luZGV4SHRtbCwgbV9yZXNvdXJjZURhdGFTaXplKSwgPT0sIDApOwogICAgICAgICB9IGVsc2Ug
aWYgKHVyaSA9PSBrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvc3R5bGUuY3NzIikpIHsKICAgICAg
ICAgICAgIGdfYXNzZXJ0X2NtcGludChtX3Jlc291cmNlRGF0YVNpemUsID09LCBzdHJsZW4oa1N0
eWxlQ1NTKSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghc3RybmNtcChtX3Jlc291cmNlRGF0YS5n
ZXQoKSwga1N0eWxlQ1NTLCBtX3Jlc291cmNlRGF0YVNpemUpKTsKKyAgICAgICAgICAgIGdfYXNz
ZXJ0X2NtcGludChzdHJuY21wKG1fcmVzb3VyY2VEYXRhLmdldCgpLCBrU3R5bGVDU1MsIG1fcmVz
b3VyY2VEYXRhU2l6ZSksID09LCAwKTsKICAgICAgICAgfSBlbHNlIGlmICh1cmkgPT0ga1NlcnZl
ci0+Z2V0VVJJRm9yUGF0aCgiL2phdmFzY3JpcHQuanMiKSkgewogICAgICAgICAgICAgZ19hc3Nl
cnRfY21waW50KG1fcmVzb3VyY2VEYXRhU2l6ZSwgPT0sIHN0cmxlbihrSmF2YXNjcmlwdCkpOwot
ICAgICAgICAgICAgZ19hc3NlcnQoIXN0cm5jbXAobV9yZXNvdXJjZURhdGEuZ2V0KCksIGtKYXZh
c2NyaXB0LCBtX3Jlc291cmNlRGF0YVNpemUpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2NtcGlu
dChzdHJuY21wKG1fcmVzb3VyY2VEYXRhLmdldCgpLCBrSmF2YXNjcmlwdCwgbV9yZXNvdXJjZURh
dGFTaXplKSwgPT0sIDApOwogICAgICAgICB9IGVsc2UgaWYgKHVyaSA9PSBrU2VydmVyLT5nZXRV
UklGb3JQYXRoKCIvYmxhbmsuaWNvIikpIHsKICAgICAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4g
ZmlsZVBhdGgoZ19idWlsZF9maWxlbmFtZShUZXN0OjpnZXRSZXNvdXJjZXNEaXIoKS5kYXRhKCks
ICJibGFuay5pY28iLCBudWxscHRyKSk7CiAgICAgICAgICAgICBHVW5pcXVlT3V0UHRyPGNoYXI+
IGNvbnRlbnRzOwogICAgICAgICAgICAgZ3NpemUgY29udGVudHNMZW5ndGg7CiAgICAgICAgICAg
ICBnX2ZpbGVfZ2V0X2NvbnRlbnRzKGZpbGVQYXRoLmdldCgpLCAmY29udGVudHMub3V0UHRyKCks
ICZjb250ZW50c0xlbmd0aCwgbnVsbHB0cik7CiAgICAgICAgICAgICBnX2Fzc2VydF9jbXBpbnQo
bV9yZXNvdXJjZURhdGFTaXplLCA9PSwgY29udGVudHNMZW5ndGgpOwotICAgICAgICAgICAgZ19h
c3NlcnQoIW1lbWNtcChtX3Jlc291cmNlRGF0YS5nZXQoKSwgY29udGVudHMuZ2V0KCksIGNvbnRl
bnRzTGVuZ3RoKSk7CisgICAgICAgICAgICBnX2Fzc2VydF9jbXBtZW0obV9yZXNvdXJjZURhdGEu
Z2V0KCksIGNvbnRlbnRzTGVuZ3RoLCBjb250ZW50cy5nZXQoKSwgY29udGVudHNMZW5ndGgpOwog
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CiAgICAg
ICAgIG1fcmVzb3VyY2VEYXRhLnJlc2V0KCk7CkBAIC0yMTIsMjYgKzIxMiwyNiBAQCBwdWJsaWM6
CiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1Jlc291cmNlcyhSZXNvdXJjZXNUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogewogICAgIC8vIE5vdGhpbmcgbG9hZGVkIHlldCwgdGhlcmUgc2hvdWxu
ZCd0IGJlIHJlc291cmNlcy4KLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2dldF9tYWlu
X3Jlc291cmNlKHRlc3QtPm1fd2ViVmlldykpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5zdWJyZXNv
dXJjZXMoKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fcmVz
b3VyY2UodGVzdC0+bV93ZWJWaWV3KSk7CisgICAgZ19hc3NlcnRfbnVsbCh0ZXN0LT5zdWJyZXNv
dXJjZXMoKSk7CiAKICAgICAvLyBMb2FkIHNpbXBsZSBwYWdlIHdpdGhvdXQgc3VicmVzb3VyY2Vz
LgogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keT5UZXN0aW5nIFdlYktpdEdUSys8L2Jv
ZHk+PC9odG1sPiIsIDApOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAg
IFdlYktpdFdlYlJlc291cmNlKiByZXNvdXJjZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfbWFpbl9y
ZXNvdXJjZSh0ZXN0LT5tX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KHJlc291cmNlKTsKKyAgICBn
X2Fzc2VydF9ub25udWxsKHJlc291cmNlKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dl
Yl92aWV3X2dldF91cmkodGVzdC0+bV93ZWJWaWV3KSwgPT0sIHdlYmtpdF93ZWJfcmVzb3VyY2Vf
Z2V0X3VyaShyZXNvdXJjZSkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5zdWJyZXNvdXJjZXMoKSk7
CisgICAgZ19hc3NlcnRfbnVsbCh0ZXN0LT5zdWJyZXNvdXJjZXMoKSk7CiAKICAgICAvLyBMb2Fk
IHNpbXBsZSBwYWdlIHdpdGggc3VicmVzb3VyY2VzLgogICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZl
ci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsUmVzb3Vy
Y2VzTG9hZGVkKDQpOwogCiAgICAgcmVzb3VyY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5f
cmVzb3VyY2UodGVzdC0+bV93ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChyZXNvdXJjZSk7CisgICAg
Z19hc3NlcnRfbm9ubnVsbChyZXNvdXJjZSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93
ZWJfdmlld19nZXRfdXJpKHRlc3QtPm1fd2ViVmlldyksID09LCB3ZWJraXRfd2ViX3Jlc291cmNl
X2dldF91cmkocmVzb3VyY2UpKTsKICAgICBHTGlzdCogc3VicmVzb3VyY2VzID0gdGVzdC0+c3Vi
cmVzb3VyY2VzKCk7Ci0gICAgZ19hc3NlcnQoc3VicmVzb3VyY2VzKTsKKyAgICBnX2Fzc2VydF9u
b25udWxsKHN1YnJlc291cmNlcyk7CiAgICAgZ19hc3NlcnRfY21waW50KGdfbGlzdF9sZW5ndGgo
c3VicmVzb3VyY2VzKSwgPT0sIDMpOwogCiAjaWYgMApAQCAtMzE1LDcgKzMxNSw3IEBAIHB1Ymxp
YzoKIAogICAgICAgICBpZiAoIW1fbG9hZEV2ZW50cy5jb250YWlucyhGYWlsZWQpKSB7CiAgICAg
ICAgICAgICBXZWJLaXRVUklSZXNwb25zZSogcmVzcG9uc2UgPSB3ZWJraXRfd2ViX3Jlc291cmNl
X2dldF9yZXNwb25zZShtX3Jlc291cmNlLmdldCgpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KHJl
c3BvbnNlKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X25vbm51bGwocmVzcG9uc2UpOwogICAgICAg
ICAgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF91cmlfcmVzcG9uc2VfZ2V0X2NvbnRlbnRfbGVu
Z3RoKHJlc3BvbnNlKSwgPT0sIG1fcmVzb3VyY2VEYXRhUmVjZWl2ZWQpOwogICAgICAgICB9CiAg
ICAgICAgIG1fbG9hZEV2ZW50cy5hcHBlbmQoRmluaXNoZWQpOwpAQCAtMzM4LDcgKzMzOCw3IEBA
IHB1YmxpYzoKICAgICBXZWJLaXRVUklSZXNwb25zZSogd2FpdFVudGlsUmVzb3VyY2VMb2FkRmlu
aXNoZWRBbmRSZXR1cm5VUklSZXNwb25zZSgpCiAgICAgewogICAgICAgICB3YWl0VW50aWxSZXNv
dXJjZUxvYWRGaW5pc2hlZCgpOwotICAgICAgICBnX2Fzc2VydChtX3Jlc291cmNlKTsKKyAgICAg
ICAgZ19hc3NlcnRfbm9ubnVsbChtX3Jlc291cmNlKTsKICAgICAgICAgcmV0dXJuIHdlYmtpdF93
ZWJfcmVzb3VyY2VfZ2V0X3Jlc3BvbnNlKG1fcmVzb3VyY2UuZ2V0KCkpOwogICAgIH0KIApAQCAt
MzUxLDcgKzM1MSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJSZXNvdXJjZUxvYWRpbmcoU2luZ2xl
UmVzb3VyY2VMb2FkVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICB0ZXN0LT5sb2Fk
VVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9qYXZhc2NyaXB0Lmh0bWwiKS5kYXRhKCkpOwog
ICAgIHRlc3QtPndhaXRVbnRpbFJlc291cmNlTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQo
dGVzdC0+bV9yZXNvdXJjZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbCh0ZXN0LT5tX3Jlc291cmNl
KTsKICAgICBWZWN0b3I8U2luZ2xlUmVzb3VyY2VMb2FkVGVzdDo6TG9hZEV2ZW50cz4mIGV2ZW50
cyA9IHRlc3QtPm1fbG9hZEV2ZW50czsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNpemUo
KSwgPT0sIDUpOwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMF0sID09LCBTaW5nbGVSZXNv
dXJjZUxvYWRUZXN0OjpTdGFydGVkKTsKQEAgLTM2Myw3ICszNjMsNyBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2ViUmVzb3VyY2VMb2FkaW5nKFNpbmdsZVJlc291cmNlTG9hZFRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9y
ZWRpcmVjdGVkLWNzcy5odG1sIikuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxSZXNvdXJj
ZUxvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fcmVzb3VyY2UpOworICAgIGdf
YXNzZXJ0X25vbm51bGwodGVzdC0+bV9yZXNvdXJjZSk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2
ZW50cy5zaXplKCksID09LCA2KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwg
U2luZ2xlUmVzb3VyY2VMb2FkVGVzdDo6U3RhcnRlZCk7CiAgICAgZ19hc3NlcnRfY21waW50KGV2
ZW50c1sxXSwgPT0sIFNpbmdsZVJlc291cmNlTG9hZFRlc3Q6OlNlbnRSZXF1ZXN0KTsKQEAgLTM3
NSw3ICszNzUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViUmVzb3VyY2VMb2FkaW5nKFNpbmdsZVJl
c291cmNlTG9hZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICB0ZXN0LT5sb2FkVVJJ
KGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbnZhbGlkLWNzcy5odG1sIikuZGF0YSgpKTsKICAg
ICB0ZXN0LT53YWl0VW50aWxSZXNvdXJjZUxvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KHRl
c3QtPm1fcmVzb3VyY2UpOworICAgIGdfYXNzZXJ0X25vbm51bGwodGVzdC0+bV9yZXNvdXJjZSk7
CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCA0KTsKICAgICBnX2Fzc2Vy
dF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwgU2luZ2xlUmVzb3VyY2VMb2FkVGVzdDo6U3RhcnRlZCk7
CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1sxXSwgPT0sIFNpbmdsZVJlc291cmNlTG9hZFRl
c3Q6OlNlbnRSZXF1ZXN0KTsKQEAgLTQ0MCw3ICs0NDAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vi
UmVzb3VyY2VTdWdnZXN0ZWRGaWxlbmFtZShTaW5nbGVSZXNvdXJjZUxvYWRUZXN0KiB0ZXN0LCBn
Y29ucwogCiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaW1hZ2Uu
aHRtbCIpLmRhdGEoKSk7CiAgICAgcmVzcG9uc2UgPSB0ZXN0LT53YWl0VW50aWxSZXNvdXJjZUxv
YWRGaW5pc2hlZEFuZFJldHVyblVSSVJlc3BvbnNlKCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF91
cmlfcmVzcG9uc2VfZ2V0X3N1Z2dlc3RlZF9maWxlbmFtZShyZXNwb25zZSkpOworICAgIGdfYXNz
ZXJ0X251bGwod2Via2l0X3VyaV9yZXNwb25zZV9nZXRfc3VnZ2VzdGVkX2ZpbGVuYW1lKHJlc3Bv
bnNlKSk7CiB9CiAKIGNsYXNzIFJlc291cmNlVVJJVHJhY2tpbmdUZXN0OiBwdWJsaWMgU2luZ2xl
UmVzb3VyY2VMb2FkVGVzdCB7CkBAIC00NTQsNyArNDU0LDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIHZvaWQgdXJpQ2hhbmdlZChXZWJLaXRXZWJSZXNvdXJjZSogcmVzb3VyY2UsIEdQYXJhbVNw
ZWMqLCBSZXNvdXJjZVVSSVRyYWNraW5nVGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNz
ZXJ0KHJlc291cmNlID09IHRlc3QtPm1fcmVzb3VyY2UuZ2V0KCkpOworICAgICAgICBnX2Fzc2Vy
dF90cnVlKHJlc291cmNlID09IHRlc3QtPm1fcmVzb3VyY2UuZ2V0KCkpOwogICAgICAgICBnX2Fz
c2VydF9jbXBzdHIodGVzdC0+bV9hY3RpdmVVUkkuZGF0YSgpLCAhPSwgd2Via2l0X3dlYl9yZXNv
dXJjZV9nZXRfdXJpKHRlc3QtPm1fcmVzb3VyY2UuZ2V0KCkpKTsKICAgICAgICAgdGVzdC0+bV9h
Y3RpdmVVUkkgPSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF91cmkodGVzdC0+bV9yZXNvdXJjZS5n
ZXQoKSk7CiAgICAgfQpAQCAtNTI4LDcgKzUyOCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJSZXNv
dXJjZUdldERhdGEoUmVzb3VyY2VzVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0
LT53YWl0VW50aWxSZXNvdXJjZXNMb2FkZWQoNCk7CiAKICAgICBXZWJLaXRXZWJSZXNvdXJjZSog
cmVzb3VyY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fcmVzb3VyY2UodGVzdC0+bV93ZWJW
aWV3KTsKLSAgICBnX2Fzc2VydChyZXNvdXJjZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChyZXNv
dXJjZSk7CiAgICAgdGVzdC0+Y2hlY2tSZXNvdXJjZURhdGEocmVzb3VyY2UpOwogCiAgICAgR0xp
c3QqIHN1YnJlc291cmNlcyA9IHRlc3QtPnN1YnJlc291cmNlcygpOwpAQCAtNTU4LDcgKzU1OCw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJSZXNvdXJjZUdldERhdGFFcnJvcihUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogICAgICAgICBzaXplX3QgZGF0YVNpemU7CiAgICAgICAgIEdVbmlxdWVP
dXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgYXV0byogZGF0YSA9IHdlYmtpdF93ZWJfcmVz
b3VyY2VfZ2V0X2RhdGFfZmluaXNoKFdFQktJVF9XRUJfUkVTT1VSQ0Uoc291cmNlKSwgcmVzdWx0
LCAmZGF0YVNpemUsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgICAgIGdfYXNzZXJ0KCFkYXRhKTsK
KyAgICAgICAgZ19hc3NlcnRfbnVsbChkYXRhKTsKICAgICAgICAgZ19hc3NlcnRfZXJyb3IoZXJy
b3IuZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVEKTsKICAgICAgICAgZ19t
YWluX2xvb3BfcXVpdChzdGF0aWNfY2FzdDxHTWFpbkxvb3AqPih1c2VyRGF0YSkpOwogICAgIH0s
IG1haW5Mb29wLmdldCgpKTsKQEAgLTU3MiwyNiArNTcyLDI2IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3UmVzb3VyY2VzSGlzdG9yeUNhY2hlKFNpbmdsZVJlc291cmNlTG9hZFRlc3QqIHRlc3Qs
IGdjb25zCiAgICAgdGVzdC0+bG9hZFVSSShqYXZhc2NyaXB0VVJJLmRhdGEoKSk7CiAgICAgdGVz
dC0+d2FpdFVudGlsUmVzb3VyY2VMb2FkRmluaXNoZWQoKTsKICAgICBXZWJLaXRXZWJSZXNvdXJj
ZSogcmVzb3VyY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fcmVzb3VyY2UodGVzdC0+bV93
ZWJWaWV3KTsKLSAgICBnX2Fzc2VydChyZXNvdXJjZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChy
ZXNvdXJjZSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfcmVzb3VyY2VfZ2V0X3Vy
aShyZXNvdXJjZSksID09LCBqYXZhc2NyaXB0VVJJLmRhdGEoKSk7CiAKICAgICBDU3RyaW5nIHNp
bXBsZVN0eWxlQ1NTVVJJID0ga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3NpbXBsZS1zdHlsZS1j
c3MuaHRtbCIpOwogICAgIHRlc3QtPmxvYWRVUkkoc2ltcGxlU3R5bGVDU1NVUkkuZGF0YSgpKTsK
ICAgICB0ZXN0LT53YWl0VW50aWxSZXNvdXJjZUxvYWRGaW5pc2hlZCgpOwogICAgIHJlc291cmNl
ID0gd2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jlc291cmNlKHRlc3QtPm1fd2ViVmlldyk7Ci0g
ICAgZ19hc3NlcnQocmVzb3VyY2UpOworICAgIGdfYXNzZXJ0X25vbm51bGwocmVzb3VyY2UpOwog
ICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX3Jlc291cmNlX2dldF91cmkocmVzb3VyY2Up
LCA9PSwgc2ltcGxlU3R5bGVDU1NVUkkuZGF0YSgpKTsKIAogICAgIHRlc3QtPmdvQmFjaygpOwog
ICAgIHRlc3QtPndhaXRVbnRpbFJlc291cmNlTG9hZEZpbmlzaGVkKCk7CiAgICAgcmVzb3VyY2Ug
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fcmVzb3VyY2UodGVzdC0+bV93ZWJWaWV3KTsKLSAg
ICBnX2Fzc2VydChyZXNvdXJjZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChyZXNvdXJjZSk7CiAg
ICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfcmVzb3VyY2VfZ2V0X3VyaShyZXNvdXJjZSks
ID09LCBqYXZhc2NyaXB0VVJJLmRhdGEoKSk7CiAKICAgICB0ZXN0LT5nb0ZvcndhcmQoKTsKICAg
ICB0ZXN0LT53YWl0VW50aWxSZXNvdXJjZUxvYWRGaW5pc2hlZCgpOwogICAgIHJlc291cmNlID0g
d2Via2l0X3dlYl92aWV3X2dldF9tYWluX3Jlc291cmNlKHRlc3QtPm1fd2ViVmlldyk7Ci0gICAg
Z19hc3NlcnQocmVzb3VyY2UpOworICAgIGdfYXNzZXJ0X25vbm51bGwocmVzb3VyY2UpOwogICAg
IGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX3Jlc291cmNlX2dldF91cmkocmVzb3VyY2UpLCA9
PSwgc2ltcGxlU3R5bGVDU1NVUkkuZGF0YSgpKTsKIH0KIApAQCAtNjQ5LDcgKzY0OSw3IEBAIHN0
YXRpYyB2b2lkIHRlc3RXZWJSZXNvdXJjZVNlbmRSZXF1ZXN0KFNlbmRSZXF1ZXN0VGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5zZXRFeHBlY3RlZE5ld1Jlc291cmNlVVJJKGtT
ZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9qYXZhc2NyaXB0LmpzIikpOwogICAgIHRlc3QtPmxvYWRV
Ukkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgicmVsYXRpdmUtamF2YXNjcmlwdC5odG1sIikuZGF0
YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxSZXNvdXJjZUxvYWRGaW5pc2hlZCgpOwotICAgIGdf
YXNzZXJ0KHRlc3QtPm1fcmVzb3VyY2UpOworICAgIGdfYXNzZXJ0X25vbm51bGwodGVzdC0+bV9y
ZXNvdXJjZSk7CiAKICAgICBWZWN0b3I8U2luZ2xlUmVzb3VyY2VMb2FkVGVzdDo6TG9hZEV2ZW50
cz4mIGV2ZW50cyA9IHRlc3QtPm1fbG9hZEV2ZW50czsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZl
bnRzLnNpemUoKSwgPT0sIDUpOwpAQCAtNjY0LDcgKzY2NCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJSZXNvdXJjZVNlbmRSZXF1ZXN0KFNlbmRSZXF1ZXN0VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKICAgICB0ZXN0LT5zZXRFeHBlY3RlZENhbmNlbGxlZFJlc291cmNlVVJJKGtTZXJ2ZXItPmdl
dFVSSUZvclBhdGgoIi9jYW5jZWwtdGhpcy5qcyIpKTsKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2
ZXItPmdldFVSSUZvclBhdGgoIi9yZXNvdXJjZS10by1jYW5jZWwuaHRtbCIpLmRhdGEoKSk7CiAg
ICAgdGVzdC0+d2FpdFVudGlsUmVzb3VyY2VMb2FkRmluaXNoZWQoKTsKLSAgICBnX2Fzc2VydCh0
ZXN0LT5tX3Jlc291cmNlKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHRlc3QtPm1fcmVzb3VyY2Up
OwogCiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCAzKTsKICAgICBnX2Fz
c2VydF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwgU2luZ2xlUmVzb3VyY2VMb2FkVGVzdDo6U3RhcnRl
ZCk7CkBAIC02NzcsNyArNjc3LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlJlc291cmNlU2VuZFJl
cXVlc3QoU2VuZFJlcXVlc3RUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPnNl
dEV4cGVjdGVkTmV3UmVzb3VyY2VVUklBZnRlclJlZGlyZWN0aW9uKGtTZXJ2ZXItPmdldFVSSUZv
clBhdGgoIi9qYXZhc2NyaXB0LWFmdGVyLXJlZGlyZWN0aW9uLmpzIikpOwogICAgIHRlc3QtPmxv
YWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgicmVkaXJlY3RlZC1qYXZhc2NyaXB0Lmh0bWwi
KS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbFJlc291cmNlTG9hZEZpbmlzaGVkKCk7Ci0g
ICAgZ19hc3NlcnQodGVzdC0+bV9yZXNvdXJjZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbCh0ZXN0
LT5tX3Jlc291cmNlKTsKIAogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwg
Nik7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1swXSwgPT0sIFNpbmdsZVJlc291cmNlTG9h
ZFRlc3Q6OlN0YXJ0ZWQpOwpAQCAtNjkzLDcgKzY5Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJS
ZXNvdXJjZVNlbmRSZXF1ZXN0KFNlbmRSZXF1ZXN0VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
ICAgICB0ZXN0LT5zZXRFeHBlY3RlZENhbmNlbGxlZFJlc291cmNlVVJJKGtTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi9yZWRpcmVjdGVkLXRvLWNhbmNlbC5qcyIpKTsKICAgICB0ZXN0LT5sb2FkVVJJ
KGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9yZWRpcmVjdGVkLXRvLWNhbmNlbC5odG1sIikuZGF0
YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxSZXNvdXJjZUxvYWRGaW5pc2hlZCgpOwotICAgIGdf
YXNzZXJ0KHRlc3QtPm1fcmVzb3VyY2UpOworICAgIGdfYXNzZXJ0X25vbm51bGwodGVzdC0+bV9y
ZXNvdXJjZSk7CiAKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzLnNpemUoKSwgPT0sIDQpOwog
ICAgIGdfYXNzZXJ0X2NtcGludChldmVudHNbMF0sID09LCBTaW5nbGVSZXNvdXJjZUxvYWRUZXN0
OjpTdGFydGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0U1NMLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0U1NMLmNwcAppbmRleCA3MGU2MDZiOTg3MjEwNmJhN2MwM2M0YTljN2E4MDUyY2U2NmNjYjYz
Li4yNjQ0NjgwZTE3M2UxZjNkNzVmZGQ5NjNlYjNkZDhhZTViZjE4ZTBkIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RTU0wuY3BwCkBAIC03MiwxOSAr
NzIsMTggQEAgc3RhdGljIHZvaWQgdGVzdFNTTChTU0xUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogCiAgICAgdGVzdC0+bG9hZFVSSShrSHR0cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5k
YXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0
KHRlc3QtPm1fY2VydGlmaWNhdGUpOworICAgIGdfYXNzZXJ0X25vbm51bGwodGVzdC0+bV9jZXJ0
aWZpY2F0ZSk7CiAgICAgLy8gU2VsZi1zaWduZWQgY2VydGlmaWNhdGUgaGFzIGEgbnVsbHB0ciBp
c3N1ZXIuCi0gICAgZ19hc3NlcnQoIWdfdGxzX2NlcnRpZmljYXRlX2dldF9pc3N1ZXIodGVzdC0+
bV9jZXJ0aWZpY2F0ZS5nZXQoKSkpOworICAgIGdfYXNzZXJ0X251bGwoZ190bHNfY2VydGlmaWNh
dGVfZ2V0X2lzc3Vlcih0ZXN0LT5tX2NlcnRpZmljYXRlLmdldCgpKSk7CiAgICAgLy8gV2UgYWx3
YXlzIGV4cGVjdCBlcnJvcnMgYmVjYXVzZSB3ZSBhcmUgdXNpbmcgYSBzZWxmLXNpZ25lZCBjZXJ0
aWZpY2F0ZSwKICAgICAvLyBidXQgb25seSBHX1RMU19DRVJUSUZJQ0FURV9VTktOT1dOX0NBIGZs
YWdzIHNob3VsZCBiZSBwcmVzZW50LgotICAgIGdfYXNzZXJ0KHRlc3QtPm1fdGxzRXJyb3JzKTsK
ICAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fdGxzRXJyb3JzLCA9PSwgR19UTFNfQ0VSVElG
SUNBVEVfVU5LTk9XTl9DQSk7CiAKICAgICAvLyBOb24gSFRUUFMgbG9hZHMgc2hvdWxkbid0IGhh
dmUgYSBjZXJ0aWZpY2F0ZSBub3IgZXJyb3JzLgogICAgIHRlc3QtPmxvYWRIdG1sKGluZGV4SFRN
TCwgMCk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQo
IXRlc3QtPm1fY2VydGlmaWNhdGUpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3Rsc0Vycm9ycyk7
CisgICAgZ19hc3NlcnRfbnVsbCh0ZXN0LT5tX2NlcnRpZmljYXRlKTsKKyAgICBnX2Fzc2VydF9j
bXB1aW50KHRlc3QtPm1fdGxzRXJyb3JzLCA9PSwgMCk7CiAKICAgICB3ZWJraXRfd2ViX2NvbnRl
eHRfc2V0X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRleHQsIG9yaWdpbmFsUG9saWN5KTsKIH0KQEAg
LTEwMiw3ICsxMDEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBpbnNlY3VyZUNvbnRl
bnREZXRlY3RlZENhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdEluc2VjdXJl
Q29udGVudEV2ZW50IGV2ZW50LCBJbnNlY3VyZUNvbnRlbnRUZXN0KiB0ZXN0KQogICAgIHsKLSAg
ICAgICAgZ19hc3NlcnQod2ViVmlldyA9PSB0ZXN0LT5tX3dlYlZpZXcpOworICAgICAgICBnX2Fz
c2VydF90cnVlKHdlYlZpZXcgPT0gdGVzdC0+bV93ZWJWaWV3KTsKIAogICAgICAgICBpZiAoZXZl
bnQgPT0gV0VCS0lUX0lOU0VDVVJFX0NPTlRFTlRfUlVOKQogICAgICAgICAgICAgdGVzdC0+bV9p
bnNlY3VyZUNvbnRlbnRSdW4gPSB0cnVlOwpAQCAtMTI0LDEwICsxMjMsMTAgQEAgc3RhdGljIHZv
aWQgdGVzdEluc2VjdXJlQ29udGVudChJbnNlY3VyZUNvbnRlbnRUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogICAgIHRlc3QtPmxvYWRVUkkoa0h0dHBzU2VydmVyLT5nZXRVUklGb3JQYXRoKCIv
aW5zZWN1cmUtY29udGVudC8iKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5p
c2hlZCgpOwogCi0gICAgZ19hc3NlcnQoIXRlc3QtPm1faW5zZWN1cmVDb250ZW50UnVuKTsKKyAg
ICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5tX2luc2VjdXJlQ29udGVudFJ1bik7CiAgICAgLy8gSW1h
Z2VzIGFyZSBjdXJyZW50bHkgYWx3YXlzIGRpc3BsYXllZCwgZXZlbiBieXBhc3NpbmcgbWl4ZWQg
Y29udGVudCBzZXR0aW5ncy4gQ2hlY2sKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQyNDY5Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9pbnNlY3VyZUNvbnRl
bnREaXNwbGF5ZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9pbnNlY3VyZUNvbnRlbnRE
aXNwbGF5ZWQpOwogCiAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF90bHNfZXJyb3JzX3BvbGlj
eShjb250ZXh0LCBvcmlnaW5hbFBvbGljeSk7CiB9CkBAIC0xMzgsMjYgKzEzNywyNiBAQCBzdGF0
aWMgdm9pZCB0ZXN0VExTRXJyb3JzUG9saWN5KFNTTFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiB7CiAgICAgV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCA9IHdlYmtpdF93ZWJfdmlld19nZXRf
Y29udGV4dCh0ZXN0LT5tX3dlYlZpZXcpOwogICAgIC8vIFRMUyBlcnJvcnMgYXJlIHRyZWF0ZWQg
YXMgdHJhbnNwb3J0IGZhaWx1cmVzIGJ5IGRlZmF1bHQuCi0gICAgZ19hc3NlcnQod2Via2l0X3dl
Yl9jb250ZXh0X2dldF90bHNfZXJyb3JzX3BvbGljeShjb250ZXh0KSA9PSBXRUJLSVRfVExTX0VS
Uk9SU19QT0xJQ1lfRkFJTCk7CisgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF93ZWJfY29udGV4
dF9nZXRfdGxzX2Vycm9yc19wb2xpY3koY29udGV4dCksID09LCBXRUJLSVRfVExTX0VSUk9SU19Q
T0xJQ1lfRkFJTCk7CiAKICAgICBhc3NlcnRJZlNTTFJlcXVlc3RQcm9jZXNzZWQgPSB0cnVlOwog
ICAgIHRlc3QtPmxvYWRVUkkoa0h0dHBzU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvIikuZGF0YSgp
KTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0
LT5tX2xvYWRGYWlsZWQpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlu
cyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRGYWlsZWQpKTsKLSAgICBnX2Fzc2Vy
dCghdGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRDb21t
aXR0ZWQpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fbG9hZEZhaWxlZCk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6
UHJvdmlzaW9uYWxMb2FkRmFpbGVkKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV9sb2Fk
RXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRDb21taXR0ZWQpKTsKICAgICBh
c3NlcnRJZlNTTFJlcXVlc3RQcm9jZXNzZWQgPSBmYWxzZTsKIAogICAgIHdlYmtpdF93ZWJfY29u
dGV4dF9zZXRfdGxzX2Vycm9yc19wb2xpY3koY29udGV4dCwgV0VCS0lUX1RMU19FUlJPUlNfUE9M
SUNZX0lHTk9SRSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl9jb250ZXh0X2dldF90bHNfZXJy
b3JzX3BvbGljeShjb250ZXh0KSA9PSBXRUJLSVRfVExTX0VSUk9SU19QT0xJQ1lfSUdOT1JFKTsK
KyAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3dlYl9jb250ZXh0X2dldF90bHNfZXJyb3JzX3Bv
bGljeShjb250ZXh0KSwgPT0sIFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9JR05PUkUpOwogCiAg
ICAgdGVzdC0+bV9sb2FkRmFpbGVkID0gZmFsc2U7CiAgICAgdGVzdC0+bG9hZFVSSShrSHR0cHNT
ZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExv
YWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2xvYWRGYWlsZWQpOworICAgIGdf
YXNzZXJ0X2ZhbHNlKHRlc3QtPm1fbG9hZEZhaWxlZCk7CiAKICAgICB3ZWJraXRfd2ViX2NvbnRl
eHRfc2V0X3Rsc19lcnJvcnNfcG9saWN5KGNvbnRleHQsIFdFQktJVF9UTFNfRVJST1JTX1BPTElD
WV9GQUlMKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Rsc19lcnJvcnNf
cG9saWN5KGNvbnRleHQpID09IFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMKTsKKyAgICBn
X2Fzc2VydF9jbXBpbnQod2Via2l0X3dlYl9jb250ZXh0X2dldF90bHNfZXJyb3JzX3BvbGljeShj
b250ZXh0KSwgPT0sIFdFQktJVF9UTFNfRVJST1JTX1BPTElDWV9GQUlMKTsKIH0KIAogc3RhdGlj
IHZvaWQgdGVzdFRMU0Vycm9yc1JlZGlyZWN0KFNTTFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CkBAIC0xNjksOSArMTY4LDkgQEAgc3RhdGljIHZvaWQgdGVzdFRMU0Vycm9yc1JlZGlyZWN0KFNT
TFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgYXNzZXJ0SWZTU0xSZXF1ZXN0UHJvY2Vz
c2VkID0gdHJ1ZTsKICAgICB0ZXN0LT5sb2FkVVJJKGtIdHRwc1NlcnZlci0+Z2V0VVJJRm9yUGF0
aCgiL3JlZGlyZWN0IikuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQo
KTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2xvYWRGYWlsZWQpOwotICAgIGdfYXNzZXJ0KHRlc3Qt
Pm1fbG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRG
YWlsZWQpKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRU
cmFja2luZ1Rlc3Q6OkxvYWRDb21taXR0ZWQpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1f
bG9hZEZhaWxlZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFp
bnMoTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkRmFpbGVkKSk7CisgICAgZ19hc3Nl
cnRfZmFsc2UodGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6Okxv
YWRDb21taXR0ZWQpKTsKICAgICBhc3NlcnRJZlNTTFJlcXVlc3RQcm9jZXNzZWQgPSBmYWxzZTsK
IAogICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfdGxzX2Vycm9yc19wb2xpY3koY29udGV4dCwg
b3JpZ2luYWxQb2xpY3kpOwpAQCAtMTk0LDkgKzE5Myw5IEBAIHN0YXRpYyB2b2lkIHRlc3RUTFNF
cnJvcnNIVFRQQXV0aChTU0xUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfc2lnbmFs
X2Nvbm5lY3QodGVzdC0+bV93ZWJWaWV3LCAiYXV0aGVudGljYXRlIiwgR19DQUxMQkFDSyh3ZWJW
aWV3QXV0aGVudGljYXRpb25DYWxsYmFjayksIE5VTEwpOwogICAgIHRlc3QtPmxvYWRVUkkoa0h0
dHBzU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvYXV0aCIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9sb2FkRmFpbGVkKTsK
LSAgICBnX2Fzc2VydCh0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVz
dDo6UHJvdmlzaW9uYWxMb2FkRmFpbGVkKSk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1fbG9hZEV2
ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpMb2FkQ29tbWl0dGVkKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh0ZXN0LT5tX2xvYWRGYWlsZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+
bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZEZh
aWxlZCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlucyhM
b2FkVHJhY2tpbmdUZXN0OjpMb2FkQ29tbWl0dGVkKSk7CiAgICAgYXNzZXJ0SWZTU0xSZXF1ZXN0
UHJvY2Vzc2VkID0gZmFsc2U7CiAKICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3Rsc19lcnJv
cnNfcG9saWN5KGNvbnRleHQsIG9yaWdpbmFsUG9saWN5KTsKQEAgLTI1MSw3ICsyNTAsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoVExTRXJyb3JzVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKICAgICAvLyBUaGUgbG9hZC1mYWlsZWQtd2l0aC10bHMtZXJyb3Jz
IHNpZ25hbCBzaG91bGQgYmUgZW1pdHRlZCB3aGVuIHRoZXJlIGlzIGEgVExTIGZhaWx1cmUuCiAg
ICAgdGVzdC0+bG9hZFVSSShrSHR0cHNTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi90ZXN0LXRscy8i
KS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNz
ZXJ0KEdfSVNfVExTX0NFUlRJRklDQVRFKHRlc3QtPmNlcnRpZmljYXRlKCkpKTsKKyAgICBnX2Fz
c2VydF90cnVlKEdfSVNfVExTX0NFUlRJRklDQVRFKHRlc3QtPmNlcnRpZmljYXRlKCkpKTsKICAg
ICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPnRsc0Vycm9ycygpLCA9PSwgR19UTFNfQ0VSVElGSUNB
VEVfVU5LTk9XTl9DQSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPmhvc3QoKSwgPT0sIHNv
dXBfdXJpX2dldF9ob3N0KGtIdHRwc1NlcnZlci0+YmFzZVVSSSgpKSk7CiAgICAgZ19hc3NlcnRf
Y21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1swXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zp
c2lvbmFsTG9hZFN0YXJ0ZWQpOwpAQCAtMzM1LDcgKzMzNCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RT
dWJyZXNvdXJjZUxvYWRGYWlsZWRXaXRoVExTRXJyb3JzKFRMU1N1YnJlc291cmNlVGVzdCogdGVz
dCwgZ2NvCiAgICAgYXNzZXJ0SWZTU0xSZXF1ZXN0UHJvY2Vzc2VkID0gdHJ1ZTsKICAgICB0ZXN0
LT5sb2FkVVJJKGtIdHRwU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvIikuZGF0YSgpKTsKICAgICB0
ZXN0LT53YWl0VW50aWxTdWJyZXNvdXJjZUxvYWRGYWlsKCk7Ci0gICAgZ19hc3NlcnQoR19JU19U
TFNfQ0VSVElGSUNBVEUodGVzdC0+bV9jZXJ0aWZpY2F0ZS5nZXQoKSkpOworICAgIGdfYXNzZXJ0
X3RydWUoR19JU19UTFNfQ0VSVElGSUNBVEUodGVzdC0+bV9jZXJ0aWZpY2F0ZS5nZXQoKSkpOwog
ICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV90bHNFcnJvcnMsID09LCBHX1RMU19DRVJUSUZJ
Q0FURV9VTktOT1dOX0NBKTsKICAgICBhc3NlcnRJZlNTTFJlcXVlc3RQcm9jZXNzZWQgPSBmYWxz
ZTsKIH0KQEAgLTQ0OSw3ICs0NDgsNyBAQCBzdGF0aWMgdm9pZCBodHRwc1NlcnZlckNhbGxiYWNr
KFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBnX2Fzc2VydCghYXNzZXJ0SWZTU0xSZXF1ZXN0UHJvY2Vz
c2VkKTsKKyAgICBnX2Fzc2VydF9mYWxzZShhc3NlcnRJZlNTTFJlcXVlc3RQcm9jZXNzZWQpOwog
CiAgICAgaWYgKGdfc3RyX2VxdWFsKHBhdGgsICIvIikpIHsKICAgICAgICAgc291cF9tZXNzYWdl
X3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcAppbmRleCBlNWI2
YTg5ZTg0NTVmYzNiNTNiODAwZjJiMDA4NDhkZTdiMTJmMWUzLi40MDVjMDVjOTY4ZDkwODlkY2Vj
NGFlNmZiMjUyZWE4ZTM2YzRlOGYwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2NyaXB0X2RpYWxvZ19n
ZXRfbWVzc2FnZShkaWFsb2cpLCA9PSwga0FsZXJ0RGlhbG9nTWVzc2FnZSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBXRUJLSVRfU0NSSVBUX0RJQUxPR19DT05GSVJNOgotICAg
ICAgICAgICAgZ19hc3NlcnQobV9zY3JpcHREaWFsb2dDb25maXJtZWQpOworICAgICAgICAgICAg
Z19hc3NlcnRfdHJ1ZShtX3NjcmlwdERpYWxvZ0NvbmZpcm1lZCk7CiAgICAgICAgICAgICBnX2Fz
c2VydF9jbXBzdHIod2Via2l0X3NjcmlwdF9kaWFsb2dfZ2V0X21lc3NhZ2UoZGlhbG9nKSwgPT0s
ICJjb25maXJtZWQiKTsKIAogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMTMsNyArMjEzLDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgbW91c2VUYXJnZXRDaGFuZ2VkKFdlYktpdFdlYlZp
ZXcqLCBXZWJLaXRIaXRUZXN0UmVzdWx0KiBoaXRUZXN0UmVzdWx0LCBndWludCBtb2RpZmllcnMs
IFVJQ2xpZW50VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19I
SVRfVEVTVF9SRVNVTFQoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdF
QktJVF9JU19ISVRfVEVTVF9SRVNVTFQoaGl0VGVzdFJlc3VsdCkpOwogICAgICAgICB0ZXN0LT5h
c3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGhpdFRlc3RSZXN1
bHQpKTsKIAogICAgICAgICB0ZXN0LT5tX21vdXNlVGFyZ2V0SGl0VGVzdFJlc3VsdCA9IGhpdFRl
c3RSZXN1bHQ7CkBAIC0yMjMsMTMgKzIyMywxMyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgZ2Jv
b2xlYW4gcGVybWlzc2lvblJlcXVlc3RlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0UGVybWlzc2lv
blJlcXVlc3QqIHJlcXVlc3QsIFVJQ2xpZW50VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdf
YXNzZXJ0KFdFQktJVF9JU19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOworICAgICAgICBn
X2Fzc2VydF90cnVlKFdFQktJVF9JU19QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOwogICAg
ICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNU
KHJlcXVlc3QpKTsKIAogICAgICAgICBpZiAodGVzdC0+bV92ZXJpZnlNZWRpYVR5cGVzICYmIFdF
QktJVF9JU19VU0VSX01FRElBX1BFUk1JU1NJT05fUkVRVUVTVChyZXF1ZXN0KSkgewogICAgICAg
ICAgICAgV2ViS2l0VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QqIHVzZXJNZWRpYVJlcXVlc3Qg
PSBXRUJLSVRfVVNFUl9NRURJQV9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCk7Ci0gICAgICAg
ICAgICBnX2Fzc2VydCh3ZWJraXRfdXNlcl9tZWRpYV9wZXJtaXNzaW9uX2lzX2Zvcl9hdWRpb19k
ZXZpY2UodXNlck1lZGlhUmVxdWVzdCkgPT0gdGVzdC0+bV9leHBlY3RlZEF1ZGlvTWVkaWEpOwot
ICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0X3VzZXJfbWVkaWFfcGVybWlzc2lvbl9pc19mb3Jf
dmlkZW9fZGV2aWNlKHVzZXJNZWRpYVJlcXVlc3QpID09IHRlc3QtPm1fZXhwZWN0ZWRWaWRlb01l
ZGlhKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3VzZXJfbWVkaWFfcGVybWlz
c2lvbl9pc19mb3JfYXVkaW9fZGV2aWNlKHVzZXJNZWRpYVJlcXVlc3QpID09IHRlc3QtPm1fZXhw
ZWN0ZWRBdWRpb01lZGlhKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3VzZXJf
bWVkaWFfcGVybWlzc2lvbl9pc19mb3JfdmlkZW9fZGV2aWNlKHVzZXJNZWRpYVJlcXVlc3QpID09
IHRlc3QtPm1fZXhwZWN0ZWRWaWRlb01lZGlhKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICh0
ZXN0LT5tX2FsbG93UGVybWlzc2lvblJlcXVlc3RzKQpAQCAtMzI3LDggKzMyNyw4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgV2ViS2l0V2ViVmlldyogdmlld0NyZWF0ZShXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXROYXZpZ2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uKQogICAgIHsKLSAg
ICAgICAgZ19hc3NlcnQod2ViVmlldyA9PSBtX3dlYlZpZXcpOwotICAgICAgICBnX2Fzc2VydChu
YXZpZ2F0aW9uKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJWaWV3ID09IG1fd2ViVmlldyk7
CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobmF2aWdhdGlvbik7CiAKICAgICAgICAgYXV0byog
bmV3V2ViVmlldyA9IFRlc3Q6OmNyZWF0ZVdlYlZpZXcod2Via2l0X3dlYl92aWV3X2dldF9jb250
ZXh0KHdlYlZpZXcpKTsKICNpZiBQTEFURk9STShHVEspCkBAIC0zMzgsNyArMzM4LDcgQEAgcHVi
bGljOgogICAgICAgICBtX3dlYlZpZXdFdmVudHMuYXBwZW5kKENyZWF0ZSk7CiAKICAgICAgICAg
V2ViS2l0V2luZG93UHJvcGVydGllcyogd2luZG93UHJvcGVydGllcyA9IHdlYmtpdF93ZWJfdmll
d19nZXRfd2luZG93X3Byb3BlcnRpZXMoV0VCS0lUX1dFQl9WSUVXKG5ld1dlYlZpZXcpKTsKLSAg
ICAgICAgZ19hc3NlcnQod2luZG93UHJvcGVydGllcyk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51
bGwod2luZG93UHJvcGVydGllcyk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5U
ZXN0RmluaXNoZXMoR19PQkpFQ1Qod2luZG93UHJvcGVydGllcykpOwogICAgICAgICBtX3dpbmRv
d1Byb3BlcnRpZXNDaGFuZ2VkLmNsZWFyKCk7CiAKQEAgLTM1MSwxMCArMzUxLDEwIEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCB2aWV3UmVhZHlUb1Nob3coV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYlZpZXcgIT0gbV93ZWJWaWV3KTsKKyAg
ICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJWaWV3ICE9IG1fd2ViVmlldyk7CiAKICAgICAgICAgV2Vi
S2l0V2luZG93UHJvcGVydGllcyogd2luZG93UHJvcGVydGllcyA9IHdlYmtpdF93ZWJfdmlld19n
ZXRfd2luZG93X3Byb3BlcnRpZXMod2ViVmlldyk7Ci0gICAgICAgIGdfYXNzZXJ0KHdpbmRvd1By
b3BlcnRpZXMpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKHdpbmRvd1Byb3BlcnRpZXMpOwog
ICAgICAgICBpZiAoIW1fd2luZG93UHJvcGVydGllcy5pc051bGwoKSkKICAgICAgICAgICAgIFdp
bmRvd1Byb3BlcnRpZXMod2luZG93UHJvcGVydGllcykuYXNzZXJ0RXF1YWwobV93aW5kb3dQcm9w
ZXJ0aWVzKTsKIApAQCAtMzYzLDcgKzM2Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCB2aWV3Q2xvc2UoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICB7Ci0gICAgICAgIGdfYXNz
ZXJ0KHdlYlZpZXcgIT0gbV93ZWJWaWV3KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJWaWV3
ICE9IG1fd2ViVmlldyk7CiAKICAgICAgICAgbV93ZWJWaWV3RXZlbnRzLmFwcGVuZChDbG9zZSk7
CiAgICAgICAgIGdfb2JqZWN0X3VucmVmKHdlYlZpZXcpOwpAQCAtNDIyLDggKzQyMiw4IEBAIHB1
YmxpYzoKIAogICAgIFdlYktpdFdlYlZpZXcqIHZpZXdDcmVhdGUoV2ViS2l0V2ViVmlldyogd2Vi
VmlldywgV2ViS2l0TmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlvbikKICAgICB7Ci0gICAgICAg
IGdfYXNzZXJ0KG5hdmlnYXRpb24pOwotICAgICAgICBnX2Fzc2VydCghbV9uYXZpZ2F0aW9uKTsK
KyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChuYXZpZ2F0aW9uKTsKKyAgICAgICAgZ19hc3NlcnRf
bnVsbChtX25hdmlnYXRpb24pOwogICAgICAgICBtX25hdmlnYXRpb24gPSB3ZWJraXRfbmF2aWdh
dGlvbl9hY3Rpb25fY29weShuYXZpZ2F0aW9uKTsKICAgICAgICAgZ19tYWluX2xvb3BfcXVpdCht
X21haW5Mb29wKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00NjUsNyArNDY1LDcgQEAg
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDcmVhdGVOYXZpZ2F0aW9uRGF0YShDcmVhdGVOYXZpZ2F0
aW9uRGF0YVRlc3QqIHRlc3QsIGdjb24KICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYnV0
dG9uIDEuCiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0
X21vdXNlX2J1dHRvbih0ZXN0LT5tX25hdmlnYXRpb24pLCA9PSwgMCk7CiAgICAgZ19hc3NlcnRf
Y21wdWludCh3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X21vZGlmaWVycyh0ZXN0LT5tX25h
dmlnYXRpb24pLCA9PSwgMCk7Ci0gICAgZ19hc3NlcnQod2Via2l0X25hdmlnYXRpb25fYWN0aW9u
X2lzX3VzZXJfZ2VzdHVyZSh0ZXN0LT5tX25hdmlnYXRpb24pKTsKKyAgICBnX2Fzc2VydF90cnVl
KHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9pc191c2VyX2dlc3R1cmUodGVzdC0+bV9uYXZpZ2F0
aW9uKSk7CiAKICAgICAvLyBDbGljayBvbiBhIGxpbmsuCiAgICAgdGVzdC0+Y2xpY2tBbmRXYWl0
VW50aWxNYWluTG9vcEZpbmlzaGVzKDIxLCAyMSk7CkBAIC00NzMsNyArNDczLDcgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdDcmVhdGVOYXZpZ2F0aW9uRGF0YShDcmVhdGVOYXZpZ2F0aW9uRGF0
YVRlc3QqIHRlc3QsIGdjb24KICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9uYXZpZ2F0aW9u
X2FjdGlvbl9nZXRfbmF2aWdhdGlvbl90eXBlKHRlc3QtPm1fbmF2aWdhdGlvbiksID09LCBXRUJL
SVRfTkFWSUdBVElPTl9UWVBFX0xJTktfQ0xJQ0tFRCk7CiAgICAgZ19hc3NlcnRfY21wdWludCh3
ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X21vdXNlX2J1dHRvbih0ZXN0LT5tX25hdmlnYXRp
b24pLCA9PSwgMSk7CiAgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfbmF2aWdhdGlvbl9hY3Rp
b25fZ2V0X21vZGlmaWVycyh0ZXN0LT5tX25hdmlnYXRpb24pLCA9PSwgMCk7Ci0gICAgZ19hc3Nl
cnQod2Via2l0X25hdmlnYXRpb25fYWN0aW9uX2lzX3VzZXJfZ2VzdHVyZSh0ZXN0LT5tX25hdmln
YXRpb24pKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9pc191
c2VyX2dlc3R1cmUodGVzdC0+bV9uYXZpZ2F0aW9uKSk7CiAKICAgICAvLyBObyB1c2VyIGludGVy
YWN0aW9uLgogICAgIHRlc3QtPmxvYWRIVE1MKCI8aHRtbD48Ym9keSBvbkxvYWQ9XCJ3aW5kb3cu
b3BlbigpO1wiPjwvaHRtbD4iKTsKQEAgLTQ4Myw3ICs0ODMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld0NyZWF0ZU5hdmlnYXRpb25EYXRhKENyZWF0ZU5hdmlnYXRpb25EYXRhVGVzdCogdGVz
dCwgZ2NvbgogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X25hdmlnYXRpb25fYWN0aW9uX2dl
dF9uYXZpZ2F0aW9uX3R5cGUodGVzdC0+bV9uYXZpZ2F0aW9uKSwgPT0sIFdFQktJVF9OQVZJR0FU
SU9OX1RZUEVfT1RIRVIpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X25hdmlnYXRpb25f
YWN0aW9uX2dldF9tb3VzZV9idXR0b24odGVzdC0+bV9uYXZpZ2F0aW9uKSwgPT0sIDApOwogICAg
IGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X25hdmlnYXRpb25fYWN0aW9uX2dldF9tb2RpZmllcnMo
dGVzdC0+bV9uYXZpZ2F0aW9uKSwgPT0sIDApOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfbmF2aWdh
dGlvbl9hY3Rpb25faXNfdXNlcl9nZXN0dXJlKHRlc3QtPm1fbmF2aWdhdGlvbikpOworICAgIGdf
YXNzZXJ0X2ZhbHNlKHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9pc191c2VyX2dlc3R1cmUodGVz
dC0+bV9uYXZpZ2F0aW9uKSk7CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCkBAIC01MDMs
MTMgKzUwMywxMyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBkaWFsb2dSdW5Bc01vZGFs
Q2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgTW9kYWxEaWFsb2dzVGVzdCogdGVzdCkK
ICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYlZpZXcgIT0gdGVzdC0+bV93ZWJWaWV3KTsKKyAg
ICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJWaWV3ICE9IHRlc3QtPm1fd2ViVmlldyk7CiAgICAgICAg
IHRlc3QtPm1fd2ViVmlld0V2ZW50cy5hcHBlbmQoUnVuQXNNb2RhbCk7CiAgICAgfQogCiAgICAg
V2ViS2l0V2ViVmlldyogdmlld0NyZWF0ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRO
YXZpZ2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uKQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQod2Vi
VmlldyA9PSBtX3dlYlZpZXcpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYlZpZXcgPT0gbV93
ZWJWaWV3KTsKIAogICAgICAgICBhdXRvKiBuZXdXZWJWaWV3ID0gVUlDbGllbnRUZXN0Ojp2aWV3
Q3JlYXRlKHdlYlZpZXcsIG5hdmlnYXRpb24pOwogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG5l
d1dlYlZpZXcsICJydW4tYXMtbW9kYWwiLCBHX0NBTExCQUNLKGRpYWxvZ1J1bkFzTW9kYWxDYWxs
YmFjayksIHRoaXMpOwpAQCAtNTE4LDcgKzUxOCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdmll
d1JlYWR5VG9TaG93KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgewotICAgICAgICBnX2Fz
c2VydCh3ZWJWaWV3ICE9IG1fd2ViVmlldyk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2ViVmll
dyAhPSBtX3dlYlZpZXcpOwogICAgICAgICBtX3dlYlZpZXdFdmVudHMuYXBwZW5kKFJlYWR5VG9T
aG93KTsKICAgICB9CiB9OwpAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3SmF2YVNjcmlwdERpYWxvZ3MoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ICAgIHRlc3QtPm1fc2NyaXB0RGlhbG9nQ29uZmlybWVkID0gZmFsc2U7CiAgICAgd2Via2l0X3dl
Yl92aWV3X3JlbG9hZCh0ZXN0LT5tX3dlYlZpZXcpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fc2NyaXB0RGlhbG9nQ29uZmlybWVkKTsK
KyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fc2NyaXB0RGlhbG9nQ29uZmlybWVkKTsKICNlbmRp
ZgogCiAgICAgLy8gTmF2aWdhdGlvbiBzaG91bGQgdHJpZ2dlciBvbmJlZm9yZXVubG9hZC4KQEAg
LTYyMSw3ICs2MjEsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0phdmFTY3JpcHREaWFsb2dz
KFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5tX3NjcmlwdERp
YWxvZ0NvbmZpcm1lZCA9IGZhbHNlOwogICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48L2h0bWw+
IiwgbnVsbHB0cik7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19h
c3NlcnQodGVzdC0+bV9zY3JpcHREaWFsb2dDb25maXJtZWQpOworICAgIGdfYXNzZXJ0X3RydWUo
dGVzdC0+bV9zY3JpcHREaWFsb2dDb25maXJtZWQpOwogCiAgICAgLy8gVHJ5IGNsb3NlIHNob3Vs
ZCB0cmlnZ2VyIG9uYmVmb3JldW5sb2FkLgogICAgIHRlc3QtPm1fc2NyaXB0RGlhbG9nQ29uZmly
bWVkID0gZmFsc2U7CkBAIC02MjksNyArNjI5LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdK
YXZhU2NyaXB0RGlhbG9ncyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAg
dGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAgdGVzdC0+c2ltdWxhdGVVc2VySW50
ZXJhY3Rpb24oKTsKICAgICB0ZXN0LT50cnlDbG9zZUFuZFdhaXRVbnRpbENsb3NlZCgpOwotICAg
IGdfYXNzZXJ0KHRlc3QtPm1fc2NyaXB0RGlhbG9nQ29uZmlybWVkKTsKKyAgICBnX2Fzc2VydF90
cnVlKHRlc3QtPm1fc2NyaXB0RGlhbG9nQ29uZmlybWVkKTsKIAogICAgIC8vIFRyeSBjbG9zZSBv
biBhIHBhZ2Ugd2l0aCBubyB1bmxvYWQgaGFuZGxlcnMgc2hvdWxkIG5vdCB0cmlnZ2VyIG9uYmVm
b3JldW5sb2FkLAogICAgIC8vIGJ1dCBzaG91bGQgYWN0dWFsbHkgY2xvc2UgdGhlIHBhZ2UuCkBA
IC02MzcsMTAgKzYzNywxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0phdmFTY3JpcHREaWFs
b2dzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5sb2FkSHRt
bCgiPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4iLCBudWxscHRyKTsKICAgICB0ZXN0LT53YWl0
VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICAvLyBXZSBnb3QgYSBvbmJlZm9yZXVubG9hZCBvZiB0
aGUgcHJldmlvdXMgcGFnZS4KLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3NjcmlwdERpYWxvZ0NvbmZp
cm1lZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3NjcmlwdERpYWxvZ0NvbmZpcm1lZCk7
CiAgICAgdGVzdC0+bV9zY3JpcHREaWFsb2dDb25maXJtZWQgPSBmYWxzZTsKICAgICB0ZXN0LT50
cnlDbG9zZUFuZFdhaXRVbnRpbENsb3NlZCgpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3Njcmlw
dERpYWxvZ0NvbmZpcm1lZCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV9zY3JpcHREaWFs
b2dDb25maXJtZWQpOwogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKIH0KIApAQCAtNjYxLDcgKzY2
MSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3V2luZG93UHJvcGVydGllcyhVSUNsaWVudFRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgICAgICJsb2NhdGlvbmJhci12aXNpYmxlIiwg
Im1lbnViYXItdmlzaWJsZSIsICJzdGF0dXNiYXItdmlzaWJsZSIsICJ0b29sYmFyLXZpc2libGUi
LCAic2Nyb2xsYmFycy12aXNpYmxlIgogICAgIH07CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBHX05fRUxFTUVOVFMocHJvcGVydGllc0NoYW5nZWQpOyArK2kpCi0gICAgICAgIGdfYXNzZXJ0
KHRlc3QtPm1fd2luZG93UHJvcGVydGllc0NoYW5nZWQuY29udGFpbnMocHJvcGVydGllc0NoYW5n
ZWRbaV0pKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3dpbmRvd1Byb3BlcnRpZXND
aGFuZ2VkLmNvbnRhaW5zKHByb3BlcnRpZXNDaGFuZ2VkW2ldKSk7CiAKICAgICBWZWN0b3I8VUlD
bGllbnRUZXN0OjpXZWJWaWV3RXZlbnRzPiYgZXZlbnRzID0gdGVzdC0+bV93ZWJWaWV3RXZlbnRz
OwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgMyk7CkBAIC02OTksOTAg
KzY5OSw5MCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld01vdXNlVGFyZ2V0KFVJQ2xpZW50VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIC8vIE1vdmUgb3ZlciBsaW5rLgogICAgIFdl
YktpdEhpdFRlc3RSZXN1bHQqIGhpdFRlc3RSZXN1bHQgPSB0ZXN0LT5tb3ZlTW91c2VBbmRXYWl0
VW50aWxNb3VzZVRhcmdldENoYW5nZWQoMSwgMSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0
KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkp
OwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEo
aGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2Nv
bnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAg
ICBnX2Fzc2VydF90cnVlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5rKGhp
dFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdl
YmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7Cisg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRh
YmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKICAgICBnX2Fzc2Vy
dF9jbXBzdHIod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9nZXRfbGlua191cmkoaGl0VGVzdFJlc3Vs
dCksID09LCAiaHR0cDovL3d3dy53ZWJraXRndGsub3JnLyIpOwogICAgIGdfYXNzZXJ0X2NtcHN0
cih3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9saW5rX3RpdGxlKGhpdFRlc3RSZXN1bHQpLCA9
PSwgIldlYktpdEdUSysgVGl0bGUiKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9nZXRfbGlua19sYWJlbChoaXRUZXN0UmVzdWx0KSwgPT0sICJXZWJLaXRHVEsr
IFdlYnNpdGUiKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+bV9tb3VzZVRhcmdldE1vZGlmaWVycyk7
CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX21vdXNlVGFyZ2V0TW9kaWZpZXJzLCA9PSwg
MCk7CiAKICAgICAvLyBNb3ZlIG91dCBvZiB0aGUgbGluay4KICAgICBoaXRUZXN0UmVzdWx0ID0g
dGVzdC0+bW92ZU1vdXNlQW5kV2FpdFVudGlsTW91c2VUYXJnZXRDaGFuZ2VkKDAsIDApOwotICAg
IGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0
UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9p
c19pbWFnZShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQoIXdl
YmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7
Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rp
b24oaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX21vdXNlVGFyZ2V0TW9k
aWZpZXJzKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRl
eHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hp
dF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fz
c2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVz
dFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29u
dGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7
CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX21vdXNlVGFyZ2V0TW9kaWZpZXJzLCA9PSwg
MCk7CiAKICAgICAvLyBNb3ZlIG92ZXIgaW1hZ2Ugd2l0aCBHREtfQ09OVFJPTF9NQVNLLgogICAg
IGhpdFRlc3RSZXN1bHQgPSB0ZXN0LT5tb3ZlTW91c2VBbmRXYWl0VW50aWxNb3VzZVRhcmdldENo
YW5nZWQoMSwgMTAsIEdES19DT05UUk9MX01BU0spOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3Nl
cnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQp
KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlh
KGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9j
b250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7Ci0g
ICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zY3JvbGxiYXIo
aGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdl
YmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZShoaXRUZXN0UmVzdWx0KSk7Cisg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlh
KGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVz
dWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2Zh
bHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJl
c3VsdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4
dF9pc19zY3JvbGxiYXIoaGl0VGVzdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9pbWFnZV91cmkoaGl0VGVzdFJlc3VsdCksID09LCAiZmls
ZTovLy8weGRlYWRiZWVmIik7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9tb3VzZVRhcmdldE1vZGlm
aWVycyAmIEdES19DT05UUk9MX01BU0spOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9tb3Vz
ZVRhcmdldE1vZGlmaWVycyAmIEdES19DT05UUk9MX01BU0spOwogCiAgICAgLy8gTW92ZSBvdmVy
IGltYWdlIGxpbmsuCiAgICAgaGl0VGVzdFJlc3VsdCA9IHRlc3QtPm1vdmVNb3VzZUFuZFdhaXRV
bnRpbE1vdXNlVGFyZ2V0Q2hhbmdlZCgxLCAyMCk7Ci0gICAgZ19hc3NlcnQod2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0
KHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZShoaXRUZXN0UmVzdWx0KSk7
Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYSho
aXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29u
dGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9o
aXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zY3JvbGxiYXIoaGl0VGVzdFJlc3VsdCkpOwotICAg
IGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhp
dFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRf
Y29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtp
dF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZShoaXRUZXN0UmVzdWx0KSk7CisgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhp
dFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNl
KHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zY3JvbGxiYXIoaGl0VGVzdFJlc3Vs
dCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9p
c19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0X2dldF9saW5rX3VyaShoaXRUZXN0UmVzdWx0KSwgPT0sICJodHRwOi8v
d3d3LndlYmtpdGd0ay5vcmcvbG9nbyIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2dldF9pbWFnZV91cmkoaGl0VGVzdFJlc3VsdCksID09LCAiZmlsZTovLy8w
eGRlYWRiZWVmIik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRf
Z2V0X2xpbmtfdGl0bGUoaGl0VGVzdFJlc3VsdCksID09LCAiV2ViS2l0R1RLKyBMb2dvIik7Ci0g
ICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0X2xpbmtfbGFiZWwoaGl0VGVz
dFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX21vdXNlVGFyZ2V0TW9kaWZpZXJzKTsK
KyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2dldF9saW5rX2xhYmVs
KGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fbW91c2VUYXJn
ZXRNb2RpZmllcnMsID09LCAwKTsKIAogICAgIC8vIE1vdmUgb3ZlciBtZWRpYS4KICAgICBoaXRU
ZXN0UmVzdWx0ID0gdGVzdC0+bW92ZU1vdXNlQW5kV2FpdFVudGlsTW91c2VUYXJnZXRDaGFuZ2Vk
KDEsIDEwMCk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9p
c19saW5rKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCh3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOwotICAg
IGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0
VGVzdFJlc3VsdCkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRl
eHRfaXNfc2Nyb2xsYmFyKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hp
dF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CisgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0
VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRf
Y29udGV4dF9pc19pbWFnZShoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOworICAg
IGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJs
ZShoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9jb250ZXh0X2lzX3Njcm9sbGJhcihoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0
UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfZ2V0
X21lZGlhX3VyaShoaXRUZXN0UmVzdWx0KSwgPT0sICJmaWxlOi8vL21vdmllLm9nZyIpOwotICAg
IGdfYXNzZXJ0KCF0ZXN0LT5tX21vdXNlVGFyZ2V0TW9kaWZpZXJzKTsKKyAgICBnX2Fzc2VydF9j
bXB1aW50KHRlc3QtPm1fbW91c2VUYXJnZXRNb2RpZmllcnMsID09LCAwKTsKIAogICAgIC8vIE1v
dmVyIG92ZXIgaW5wdXQuCiAgICAgaGl0VGVzdFJlc3VsdCA9IHRlc3QtPm1vdmVNb3VzZUFuZFdh
aXRVbnRpbE1vdXNlVGFyZ2V0Q2hhbmdlZCg1LCAzNSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9o
aXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fz
c2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1
bHQpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21l
ZGlhKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3Vs
dF9jb250ZXh0X2lzX3Njcm9sbGJhcihoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQod2Vi
a2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsK
LSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlv
bihoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1fbW91c2VUYXJnZXRNb2Rp
ZmllcnMpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4
dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNz
ZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0
UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250
ZXh0X2lzX3Njcm9sbGJhcihoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOwor
ICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxl
Y3Rpb24oaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9tb3Vz
ZVRhcmdldE1vZGlmaWVycywgPT0sIDApOwogCiAgICAgLy8gTW92ZSBvdmVyIHNjcm9sbGJhci4K
ICAgICBoaXRUZXN0UmVzdWx0ID0gdGVzdC0+bW92ZU1vdXNlQW5kV2FpdFVudGlsTW91c2VUYXJn
ZXRDaGFuZ2VkKGd0a193aWRnZXRfZ2V0X2FsbG9jYXRlZF93aWR0aChHVEtfV0lER0VUKHRlc3Qt
Pm1fd2ViVmlldykpIC0gNCwgNSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBn
X2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RS
ZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lz
X2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfc2Nyb2xsYmFyKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2Vy
dCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVz
dWx0KSk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1fbW91c2VUYXJnZXRNb2RpZmllcnMpOworICAg
IGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5rKGhp
dFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdl
YmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7Cisg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRh
YmxlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfY29udGV4dF9pc19zY3JvbGxiYXIoaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0
X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVz
dFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9tb3VzZVRhcmdldE1vZGlm
aWVycywgPT0sIDApOwogCiAgICAgLy8gTW92ZSBvdmVyIHNlbGVjdGlvbi4KICAgICBoaXRUZXN0
UmVzdWx0ID0gdGVzdC0+bW92ZU1vdXNlQW5kV2FpdFVudGlsTW91c2VUYXJnZXRDaGFuZ2VkKDIs
IDE0NSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19s
aW5rKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3Vs
dF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKLSAgICBn
X2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRl
c3RSZXN1bHQpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0
X2lzX3Njcm9sbGJhcihoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7Ci0gICAgZ19h
c3NlcnQoIXRlc3QtPm1fbW91c2VUYXJnZXRNb2RpZmllcnMpOworICAgIGdfYXNzZXJ0X2ZhbHNl
KHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsK
KyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1h
Z2UoaGl0VGVzdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9y
ZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfZmFs
c2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1
bHQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRf
aXNfc2Nyb2xsYmFyKGhpdFRlc3RSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9o
aXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOworICAg
IGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9tb3VzZVRhcmdldE1vZGlmaWVycywgPT0sIDApOwog
fQogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKIApAQCAtOTk1LDE2ICs5OTUsMTYgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYlZpZXdGaWxlQ2hvb3NlclJlcXVlc3QoRmlsZUNob29zZXJUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPmxvYWRIdG1sKHNpbXBsZUZpbGVVcGxvYWRIVE1M
LmdldCgpLCAwKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICBXZWJL
aXRGaWxlQ2hvb3NlclJlcXVlc3QqIGZpbGVDaG9vc2VyUmVxdWVzdCA9IHRlc3QtPmNsaWNrTW91
c2VCdXR0b25BbmRXYWl0Rm9yRmlsZUNob29zZXJSZXF1ZXN0KDUsIDUpOwotICAgIGdfYXNzZXJ0
KCF3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X3NlbGVjdF9tdWx0aXBsZShmaWxlQ2hv
b3NlclJlcXVlc3QpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfZmlsZV9jaG9vc2VyX3Jl
cXVlc3RfZ2V0X3NlbGVjdF9tdWx0aXBsZShmaWxlQ2hvb3NlclJlcXVlc3QpKTsKIAogICAgIGNv
bnN0IGdjaGFyKiBjb25zdCogbWltZVR5cGVzID0gd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0
X2dldF9taW1lX3R5cGVzKGZpbGVDaG9vc2VyUmVxdWVzdCk7Ci0gICAgZ19hc3NlcnQoIW1pbWVU
eXBlcyk7CisgICAgZ19hc3NlcnRfbnVsbChtaW1lVHlwZXMpOwogI2lmIFBMQVRGT1JNKEdUSykK
ICAgICBHdGtGaWxlRmlsdGVyKiBmaWx0ZXIgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3Rf
Z2V0X21pbWVfdHlwZXNfZmlsdGVyKGZpbGVDaG9vc2VyUmVxdWVzdCk7Ci0gICAgZ19hc3NlcnQo
IWZpbHRlcik7CisgICAgZ19hc3NlcnRfbnVsbChmaWx0ZXIpOwogI2VuZGlmCiAgICAgY29uc3Qg
Z2NoYXIqIGNvbnN0KiBzZWxlY3RlZEZpbGVzID0gd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0
X2dldF9zZWxlY3RlZF9maWxlcyhmaWxlQ2hvb3NlclJlcXVlc3QpOwotICAgIGdfYXNzZXJ0KCFz
ZWxlY3RlZEZpbGVzKTsKKyAgICBnX2Fzc2VydF9udWxsKHNlbGVjdGVkRmlsZXMpOwogICAgIHdl
YmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9jYW5jZWwoZmlsZUNob29zZXJSZXF1ZXN0KTsKIAog
ICAgIC8vIE11bHRpcGxlIHNlbGVjdGlvbnMgYWxsb3dlZCwgbm8gTUlNRSBmaWx0ZXJpbmcsIHNv
bWUgcHJlLXNlbGVjdGVkIGZpbGVzLgpAQCAtMTAxMiwxNiArMTAxMiwxNiBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViVmlld0ZpbGVDaG9vc2VyUmVxdWVzdChGaWxlQ2hvb3NlclRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bG9hZEh0bWwobXVsdGlwbGVTZWxlY3Rpb25GaWxlVXBs
b2FkSFRNTC5nZXQoKSwgMCk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAg
ICAgZmlsZUNob29zZXJSZXF1ZXN0ID0gdGVzdC0+Y2xpY2tNb3VzZUJ1dHRvbkFuZFdhaXRGb3JG
aWxlQ2hvb3NlclJlcXVlc3QoNSwgNSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X2ZpbGVfY2hvb3Nl
cl9yZXF1ZXN0X2dldF9zZWxlY3RfbXVsdGlwbGUoZmlsZUNob29zZXJSZXF1ZXN0KSk7CisgICAg
Z19hc3NlcnRfdHJ1ZSh3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X3NlbGVjdF9tdWx0
aXBsZShmaWxlQ2hvb3NlclJlcXVlc3QpKTsKIAogICAgIG1pbWVUeXBlcyA9IHdlYmtpdF9maWxl
X2Nob29zZXJfcmVxdWVzdF9nZXRfbWltZV90eXBlcyhmaWxlQ2hvb3NlclJlcXVlc3QpOwotICAg
IGdfYXNzZXJ0KCFtaW1lVHlwZXMpOworICAgIGdfYXNzZXJ0X251bGwobWltZVR5cGVzKTsKICNp
ZiBQTEFURk9STShHVEspCiAgICAgZmlsdGVyID0gd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0
X2dldF9taW1lX3R5cGVzX2ZpbHRlcihmaWxlQ2hvb3NlclJlcXVlc3QpOwotICAgIGdfYXNzZXJ0
KCFmaWx0ZXIpOworICAgIGdfYXNzZXJ0X251bGwoZmlsdGVyKTsKICNlbmRpZgogICAgIHNlbGVj
dGVkRmlsZXMgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0X3NlbGVjdGVkX2ZpbGVz
KGZpbGVDaG9vc2VyUmVxdWVzdCk7Ci0gICAgZ19hc3NlcnQoIXNlbGVjdGVkRmlsZXMpOworICAg
IGdfYXNzZXJ0X251bGwoc2VsZWN0ZWRGaWxlcyk7CiAKICAgICAvLyBTZWxlY3Qgc29tZSBmaWxl
cy4KICAgICBjb25zdCBnY2hhciogZmlsZXNUb1NlbGVjdFs0XSA9IHsgIi9mb28iLCAiL2Zvby9i
YXIiLCAiL2Zvby9iYXIvYmF6IiwgMCB9OwpAQCAtMTAyOSwyMSArMTAyOSwyMSBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2ViVmlld0ZpbGVDaG9vc2VyUmVxdWVzdChGaWxlQ2hvb3NlclRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAKICAgICAvLyBDaGVjayB0aGUgZmlsZXMgdGhhdCBoYXZlIGJlZW4g
anVzdCBzZWxlY3RlZC4KICAgICBzZWxlY3RlZEZpbGVzID0gd2Via2l0X2ZpbGVfY2hvb3Nlcl9y
ZXF1ZXN0X2dldF9zZWxlY3RlZF9maWxlcyhmaWxlQ2hvb3NlclJlcXVlc3QpOwotICAgIGdfYXNz
ZXJ0KHNlbGVjdGVkRmlsZXMpOworICAgIGdfYXNzZXJ0X25vbm51bGwoc2VsZWN0ZWRGaWxlcyk7
CiAgICAgZ19hc3NlcnRfY21wc3RyKHNlbGVjdGVkRmlsZXNbMF0sID09LCAiL2ZvbyIpOwogICAg
IGdfYXNzZXJ0X2NtcHN0cihzZWxlY3RlZEZpbGVzWzFdLCA9PSwgIi9mb28vYmFyIik7CiAgICAg
Z19hc3NlcnRfY21wc3RyKHNlbGVjdGVkRmlsZXNbMl0sID09LCAiL2Zvby9iYXIvYmF6Iik7Ci0g
ICAgZ19hc3NlcnQoIXNlbGVjdGVkRmlsZXNbM10pOworICAgIGdfYXNzZXJ0X251bGwoc2VsZWN0
ZWRGaWxlc1szXSk7CiAKICAgICAvLyBQZXJmb3JtIGFub3RoZXIgcmVxdWVzdCB0byBjaGVjayBp
ZiB0aGUgbGlzdCBvZiBmaWxlcyBzZWxlY3RlZAogICAgIC8vIGluIHRoZSBwcmV2aW91cyBzdGVw
IGFwcGVhcnMgbm93IGFzIHBhcnQgb2YgdGhlIG5ldyByZXF1ZXN0LgogICAgIGZpbGVDaG9vc2Vy
UmVxdWVzdCA9IHRlc3QtPmNsaWNrTW91c2VCdXR0b25BbmRXYWl0Rm9yRmlsZUNob29zZXJSZXF1
ZXN0KDUsIDUpOwogICAgIHNlbGVjdGVkRmlsZXMgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVl
c3RfZ2V0X3NlbGVjdGVkX2ZpbGVzKGZpbGVDaG9vc2VyUmVxdWVzdCk7Ci0gICAgZ19hc3NlcnQo
c2VsZWN0ZWRGaWxlcyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChzZWxlY3RlZEZpbGVzKTsKICAg
ICBnX2Fzc2VydF9jbXBzdHIoc2VsZWN0ZWRGaWxlc1swXSwgPT0sICIvZm9vIik7CiAgICAgZ19h
c3NlcnRfY21wc3RyKHNlbGVjdGVkRmlsZXNbMV0sID09LCAiL2Zvby9iYXIiKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIoc2VsZWN0ZWRGaWxlc1syXSwgPT0sICIvZm9vL2Jhci9iYXoiKTsKLSAgICBn
X2Fzc2VydCghc2VsZWN0ZWRGaWxlc1szXSk7CisgICAgZ19hc3NlcnRfbnVsbChzZWxlY3RlZEZp
bGVzWzNdKTsKICAgICB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfY2FuY2VsKGZpbGVDaG9v
c2VyUmVxdWVzdCk7CiAKICAgICAvLyBNdWx0aXBsZSBzZWxlY3Rpb25zIG5vdCBhbGxvd2VkLCBv
bmx5IGFjY2VwdCBpbWFnZXMsIGF1ZGlvIGFuZCB2aWRlbyBmaWxlcy4uCkBAIC0xMDUxLDI1ICsx
MDUxLDI1IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RmlsZUNob29zZXJSZXF1ZXN0KEZpbGVD
aG9vc2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5sb2FkSHRtbChtaW1l
RmlsdGVyZWRGaWxlVXBsb2FkSFRNTC5nZXQoKSwgMCk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9h
ZEZpbmlzaGVkKCk7CiAgICAgZmlsZUNob29zZXJSZXF1ZXN0ID0gdGVzdC0+Y2xpY2tNb3VzZUJ1
dHRvbkFuZFdhaXRGb3JGaWxlQ2hvb3NlclJlcXVlc3QoNSwgNSk7Ci0gICAgZ19hc3NlcnQoIXdl
YmtpdF9maWxlX2Nob29zZXJfcmVxdWVzdF9nZXRfc2VsZWN0X211bHRpcGxlKGZpbGVDaG9vc2Vy
UmVxdWVzdCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9maWxlX2Nob29zZXJfcmVxdWVz
dF9nZXRfc2VsZWN0X211bHRpcGxlKGZpbGVDaG9vc2VyUmVxdWVzdCkpOwogCiAgICAgbWltZVR5
cGVzID0gd2Via2l0X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2dldF9taW1lX3R5cGVzKGZpbGVDaG9v
c2VyUmVxdWVzdCk7Ci0gICAgZ19hc3NlcnQobWltZVR5cGVzKTsKKyAgICBnX2Fzc2VydF9ub25u
dWxsKG1pbWVUeXBlcyk7CiAgICAgZ19hc3NlcnRfY21wc3RyKG1pbWVUeXBlc1swXSwgPT0sICJh
dWRpby8qIik7CiAgICAgZ19hc3NlcnRfY21wc3RyKG1pbWVUeXBlc1sxXSwgPT0sICJ2aWRlby8q
Iik7CiAgICAgZ19hc3NlcnRfY21wc3RyKG1pbWVUeXBlc1syXSwgPT0sICJpbWFnZS8qIik7Ci0g
ICAgZ19hc3NlcnQoIW1pbWVUeXBlc1szXSk7CisgICAgZ19hc3NlcnRfbnVsbChtaW1lVHlwZXNb
M10pOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGZpbHRlciA9IHdlYmtpdF9maWxlX2Nob29z
ZXJfcmVxdWVzdF9nZXRfbWltZV90eXBlc19maWx0ZXIoZmlsZUNob29zZXJSZXF1ZXN0KTsKLSAg
ICBnX2Fzc2VydChHVEtfSVNfRklMRV9GSUxURVIoZmlsdGVyKSk7Ci0gICAgZ19hc3NlcnQoY2hl
Y2tNaW1lVHlwZUZvckZpbHRlcihmaWx0ZXIsICJhdWRpby8qIikpOwotICAgIGdfYXNzZXJ0KGNo
ZWNrTWltZVR5cGVGb3JGaWx0ZXIoZmlsdGVyLCAidmlkZW8vKiIpKTsKLSAgICBnX2Fzc2VydChj
aGVja01pbWVUeXBlRm9yRmlsdGVyKGZpbHRlciwgImltYWdlLyoiKSk7CisgICAgZ19hc3NlcnRf
dHJ1ZShHVEtfSVNfRklMRV9GSUxURVIoZmlsdGVyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShjaGVj
a01pbWVUeXBlRm9yRmlsdGVyKGZpbHRlciwgImF1ZGlvLyoiKSk7CisgICAgZ19hc3NlcnRfdHJ1
ZShjaGVja01pbWVUeXBlRm9yRmlsdGVyKGZpbHRlciwgInZpZGVvLyoiKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZShjaGVja01pbWVUeXBlRm9yRmlsdGVyKGZpbHRlciwgImltYWdlLyoiKSk7CiAjZW5k
aWYKIAogICAgIHNlbGVjdGVkRmlsZXMgPSB3ZWJraXRfZmlsZV9jaG9vc2VyX3JlcXVlc3RfZ2V0
X3NlbGVjdGVkX2ZpbGVzKGZpbGVDaG9vc2VyUmVxdWVzdCk7Ci0gICAgZ19hc3NlcnQoIXNlbGVj
dGVkRmlsZXMpOworICAgIGdfYXNzZXJ0X251bGwoc2VsZWN0ZWRGaWxlcyk7CiAgICAgd2Via2l0
X2ZpbGVfY2hvb3Nlcl9yZXF1ZXN0X2NhbmNlbChmaWxlQ2hvb3NlclJlcXVlc3QpOwogfQogI2Vu
ZGlmIC8vIFBMQVRGT1JNKEdUSykKQEAgLTEwODcsNyArMTA4Nyw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyB2b2lkIHJlcXVlc3RGaW5pc2hlZENhbGxiYWNrKFdlYktpdENvbG9yQ2hvb3NlclJl
cXVlc3QqIHJlcXVlc3QsIENvbG9yQ2hvb3NlclRlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBn
X2Fzc2VydCh0ZXN0LT5tX3JlcXVlc3QuZ2V0KCkgPT0gcmVxdWVzdCk7CisgICAgICAgIGdfYXNz
ZXJ0X3RydWUodGVzdC0+bV9yZXF1ZXN0LmdldCgpID09IHJlcXVlc3QpOwogICAgICAgICB0ZXN0
LT5tX3JlcXVlc3QgPSBudWxscHRyOwogICAgICAgICBpZiAoZ19tYWluX2xvb3BfaXNfcnVubmlu
Zyh0ZXN0LT5tX21haW5Mb29wKSkKICAgICAgICAgICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+
bV9tYWluTG9vcCk7CkBAIC0xMTAwLDcgKzExMDAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJ1
bkNvbG9yQ2hvb3NlcihXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0KiByZXF1ZXN0KQogICAgIHsK
LSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVTVChyZXF1ZXN0
KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX0NPTE9SX0NIT09TRVJfUkVRVUVT
VChyZXF1ZXN0KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNo
ZXMoR19PQkpFQ1QocmVxdWVzdCkpOwogICAgICAgICBtX3JlcXVlc3QgPSByZXF1ZXN0OwogICAg
ICAgICBnX3NpZ25hbF9jb25uZWN0KHJlcXVlc3QsICJmaW5pc2hlZCIsIEdfQ0FMTEJBQ0socmVx
dWVzdEZpbmlzaGVkQ2FsbGJhY2spLCB0aGlzKTsKQEAgLTExMDksMjMgKzExMDksMjMgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBmaW5pc2hSZXF1ZXN0KCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0
KG1fcmVxdWVzdC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobV9yZXF1ZXN0Lmdl
dCgpKTsKICAgICAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9maW5pc2gobV9yZXF1
ZXN0LmdldCgpKTsKLSAgICAgICAgZ19hc3NlcnQoIW1fcmVxdWVzdCk7CisgICAgICAgIGdfYXNz
ZXJ0X251bGwobV9yZXF1ZXN0KTsKICAgICB9CiAKICAgICB2b2lkIGNhbmNlbFJlcXVlc3QoKQog
ICAgIHsKLSAgICAgICAgZ19hc3NlcnQobV9yZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgZ19hc3Nl
cnRfbm9ubnVsbChtX3JlcXVlc3QuZ2V0KCkpOwogICAgICAgICB3ZWJraXRfY29sb3JfY2hvb3Nl
cl9yZXF1ZXN0X2NhbmNlbChtX3JlcXVlc3QuZ2V0KCkpOwotICAgICAgICBnX2Fzc2VydCghbV9y
ZXF1ZXN0KTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbChtX3JlcXVlc3QpOwogICAgIH0KIAogICAg
IFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QqIGNsaWNrTW91c2VCdXR0b25BbmRXYWl0Rm9yQ29s
b3JDaG9vc2VyUmVxdWVzdChpbnQgeCwgaW50IHkpCiAgICAgewogICAgICAgICBjbGlja01vdXNl
QnV0dG9uKHgsIHkpOwogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7Ci0gICAg
ICAgIGdfYXNzZXJ0KG1fcmVxdWVzdC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwo
bV9yZXF1ZXN0LmdldCgpKTsKICAgICAgICAgcmV0dXJuIG1fcmVxdWVzdC5nZXQoKTsKICAgICB9
CiAKQEAgLTExNDcsMTMgKzExNDcsMTMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdDb2xvckNo
b29zZXJSZXF1ZXN0KENvbG9yQ2hvb3NlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIKICAgICBH
ZGtSR0JBIHJnYmExOwogICAgIEdka1JHQkEgcmdiYTIgPSB7IDAuLCAwLiwgMC4sIDEuIH07CiAg
ICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfcmdiYShyZXF1ZXN0LCAmcmdiYTEp
OwotICAgIGdfYXNzZXJ0KGdka19yZ2JhX2VxdWFsKCZyZ2JhMSwgJnJnYmEyKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZShnZGtfcmdiYV9lcXVhbCgmcmdiYTEsICZyZ2JhMikpOwogCiAgICAgLy8gU2V0
IGEgZGlmZmVyZW50IGNvbG9yLgogICAgIHJnYmEyLmdyZWVuID0gMTsKICAgICB3ZWJraXRfY29s
b3JfY2hvb3Nlcl9yZXF1ZXN0X3NldF9yZ2JhKHJlcXVlc3QsICZyZ2JhMik7CiAgICAgd2Via2l0
X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfcmdiYShyZXF1ZXN0LCAmcmdiYTEpOwotICAgIGdf
YXNzZXJ0KGdka19yZ2JhX2VxdWFsKCZyZ2JhMSwgJnJnYmEyKSk7CisgICAgZ19hc3NlcnRfdHJ1
ZShnZGtfcmdiYV9lcXVhbCgmcmdiYTEsICZyZ2JhMikpOwogCiAgICAgR2RrUmVjdGFuZ2xlIHJl
Y3Q7CiAgICAgd2Via2l0X2NvbG9yX2Nob29zZXJfcmVxdWVzdF9nZXRfZWxlbWVudF9yZWN0YW5n
bGUocmVxdWVzdCwgJnJlY3QpOwpAQCAtMTE3Miw3ICsxMTcyLDcgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYlZpZXdDb2xvckNob29zZXJSZXF1ZXN0KENvbG9yQ2hvb3NlclRlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIKIAogICAgIHdlYmtpdF9jb2xvcl9jaG9vc2VyX3JlcXVlc3RfZ2V0X3JnYmEocmVx
dWVzdCwgJnJnYmExKTsKICAgICBHZGtSR0JBIHJnYmEzID0geyAxLiwgMC4sIDEuLCAxLiB9Owot
ICAgIGdfYXNzZXJ0KGdka19yZ2JhX2VxdWFsKCZyZ2JhMSwgJnJnYmEzKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZShnZGtfcmdiYV9lcXVhbCgmcmdiYTEsICZyZ2JhMykpOwogCiAgICAgdGVzdC0+Y2Fu
Y2VsUmVxdWVzdCgpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKaW5kZXggOThmYTcyNDEyZDZhNDJi
MTg3ZWVlNzE1NTNiNWVmMjM3ZjhjNmMxMC4uOTgxMGE0ZDFkZDg1YWY0YzE0MGFjZDBmNDkwYTY2
YmM5MmQ3YmZkMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJFeHRlbnNpb25HZXRUaXRsZShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKICAgICAgICAgZ192YXJpYW50X25ldygiKHQpIiwgd2Via2l0X3dlYl92aWV3X2dl
dF9wYWdlX2lkKHRlc3QtPm1fd2ViVmlldykpLAogICAgICAgICBHX0RCVVNfQ0FMTF9GTEFHU19O
T05FLAogICAgICAgICAtMSwgMCwgMCkpOwotICAgIGdfYXNzZXJ0KHJlc3VsdCk7CisgICAgZ19h
c3NlcnRfbm9ubnVsbChyZXN1bHQpOwogCiAgICAgY29uc3QgY2hhciogdGl0bGU7CiAgICAgZ192
YXJpYW50X2dldChyZXN1bHQuZ2V0KCksICIoJnMpIiwgJnRpdGxlKTsKQEAgLTEyOCw3ICsxMjgs
NyBAQCBzdGF0aWMgdm9pZCB0ZXN0RG9jdW1lbnRMb2FkZWRTaWduYWwoV2ViVmlld1Rlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0RCdXNTaWduYWxD
YWxsYmFjaz4oZG9jdW1lbnRMb2FkZWRDYWxsYmFjayksCiAgICAgICAgIHRlc3QsCiAgICAgICAg
IDApOwotICAgIGdfYXNzZXJ0KGlkKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KGlkLCAhPSwgMCk7
CiAKICAgICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PGhlYWQ+PHRpdGxlPldlYktpdEdUSysgV2Vi
IEV4dGVuc2lvbnMgVGVzdDwvdGl0bGU+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+IiwgMCk7
CiAgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOwpAQCAtMTYzLDcgKzE2Myw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRXZWJWaWV3UHJvY2Vzc0NyYXNoZWQoV2ViVmlld1Rl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgICAgIDAsCiAgICAgICAgIEdfREJVU19DQUxM
X0ZMQUdTX05PTkUsCiAgICAgICAgIC0xLCAwLCAwKSk7Ci0gICAgZ19hc3NlcnQoIXJlc3VsdCk7
CisgICAgZ19hc3NlcnRfbnVsbChyZXN1bHQpOwogICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5t
X21haW5Mb29wKTsKICAgICB0ZXN0LT5tX2V4cGVjdGVkV2ViUHJvY2Vzc0NyYXNoID0gZmFsc2U7
CiB9CkBAIC0xNzUsOCArMTc1LDggQEAgc3RhdGljIHZvaWQgdGVzdFdlYkV4dGVuc2lvbldpbmRv
d09iamVjdENsZWFyZWQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIKIAogICAgIEdV
bmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBq
YXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVk
KCJ3aW5kb3cuZWNobygnRm9vJyk7IiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChq
YXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3IuZ2V0KCkpOworICAgIGdfYXNz
ZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJy
b3IuZ2V0KCkpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6
OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNz
ZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJGb28iKTsKIH0KQEAgLTIxMCw3ICsy
MTAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0ZWRXb3JsZChXZWJWaWV3
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fzc2VydF9jbXBzdHIoc2NyaXB0RGlh
bG9nUmVzdWx0LmdldCgpLCA9PSwgIk1haW4gV29ybGQiKTsKIAogICAgIFdlYktpdEphdmFzY3Jp
cHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVu
dGlsRmluaXNoZWQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1M
IiwgMCk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9u
bnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHZhbHVlU3RyaW5n
KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQp
KTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiRm9vIik7CiAK
QEAgLTIzMyw3ICsyMzMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0ZWRX
b3JsZChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIC8vIENoZWNrIHRo
YXQgJ3RvcC5mb28nIGRlZmluZWQgaW4gbWFpbiB3b3JsZCBpcyBub3QgdmlzaWJsZSBpbiBpc29s
YXRlZCB3b3JsZC4KICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFu
ZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlu
bmVySFRNTCIsIDApOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNz
ZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgdmFsdWVTdHJpbmcucmVzZXQoV2Vi
Vmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJlc3VsdCkpOwog
ICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJ1bmRlZmluZWQiKTsK
IApAQCAtMjQ4LDcgKzI0OCw3IEBAIHN0YXRpYyBnYm9vbGVhbiBwZXJtaXNzaW9uUmVxdWVzdENh
bGxiYWNrKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRQZXJtaXNzaW9uUmVxdWVzCiAKICAgICB0ZXN0
LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJlcXVlc3Qp
KTsKICAgICBXZWJLaXRJbnN0YWxsTWlzc2luZ01lZGlhUGx1Z2luc1Blcm1pc3Npb25SZXF1ZXN0
KiBtaXNzaW5nUGx1Z2luc1JlcXVlc3QgPSBXRUJLSVRfSU5TVEFMTF9NSVNTSU5HX01FRElBX1BM
VUdJTlNfUEVSTUlTU0lPTl9SRVFVRVNUKHJlcXVlc3QpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9p
bnN0YWxsX21pc3NpbmdfbWVkaWFfcGx1Z2luc19wZXJtaXNzaW9uX3JlcXVlc3RfZ2V0X2Rlc2Ny
aXB0aW9uKG1pc3NpbmdQbHVnaW5zUmVxdWVzdCkpOworICAgIGdfYXNzZXJ0X25vbm51bGwod2Vi
a2l0X2luc3RhbGxfbWlzc2luZ19tZWRpYV9wbHVnaW5zX3Blcm1pc3Npb25fcmVxdWVzdF9nZXRf
ZGVzY3JpcHRpb24obWlzc2luZ1BsdWdpbnNSZXF1ZXN0KSk7CiAgICAgd2Via2l0X3Blcm1pc3Np
b25fcmVxdWVzdF9kZW55KHJlcXVlc3QpOwogICAgIHRlc3QtPnF1aXRNYWluTG9vcCgpOwogCkBA
IC0yNzgsNyArMjc4LDcgQEAgc3RhdGljIHZvaWQgZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzQ2Fs
bGJhY2soR0RCdXNDb25uZWN0aW9uKiwgY29uc3QgY2hhciosIGNvbnMKIHsKICAgICBjb25zdCBj
aGFyKiBmb3JtSWRzOwogICAgIGdfdmFyaWFudF9nZXQocmVzdWx0LCAiKCZzKSIsICZmb3JtSWRz
KTsKLSAgICBnX2Fzc2VydCghZ19zdHJjbXAwKGZvcm1JZHMsIEZPUk1fSUQgRk9STTJfSUQpIHx8
ICFnX3N0cmNtcDAoZm9ybUlkcywgRk9STTJfSUQgRk9STV9JRCkgfHwgIWdfc3RyY21wMChmb3Jt
SWRzLCBJTlBVVF9JRCkpOworICAgIGdfYXNzZXJ0X3RydWUoIWdfc3RyY21wMChmb3JtSWRzLCBG
T1JNX0lEIEZPUk0yX0lEKSB8fCAhZ19zdHJjbXAwKGZvcm1JZHMsIEZPUk0yX0lEIEZPUk1fSUQp
IHx8ICFnX3N0cmNtcDAoZm9ybUlkcywgSU5QVVRfSUQpKTsKIAogICAgIHRlc3QtPnF1aXRNYWlu
TG9vcCgpOwogfQpAQCAtMjk5LDcgKzI5OSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJFeHRlbnNp
b25Gb3JtQ29udHJvbHNBc3NvY2lhdGVkKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2luCiAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0RCdXNTaWduYWxDYWxsYmFjaz4oZGlkQXNzb2NpYXRl
Rm9ybUNvbnRyb2xzQ2FsbGJhY2spLAogICAgICAgICB0ZXN0LAogICAgICAgICBudWxscHRyKTsK
LSAgICBnX2Fzc2VydChpZCk7CisgICAgZ19hc3NlcnRfY21wdWludChpZCwgIT0sIDApOwogCiAg
ICAgdGVzdC0+bG9hZEh0bWwoIjwhRE9DVFlQRSBodG1sPjxoZWFkPjx0aXRsZT5XZWJLaXRHVEsr
IFdlYiBFeHRlbnNpb25zIFRlc3Q8L3RpdGxlPjwvaGVhZD48ZGl2IGlkPVwicGxhY2Vob2xkZXJc
Ii8+IiwgMCk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CkBAIC0zNTQsNyAr
MzU0LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHREJ1c1NpZ25h
bENhbGxiYWNrPih3aWxsU2VuZERPTUV2ZW50Q2FsbGJhY2spLAogICAgICAgICAgICAgdGhpcywK
ICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICBnX2Fzc2VydChtX3dpbGxTZW5kRE9NRXZl
bnRDYWxsYmFja0lEKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChtX3dpbGxTZW5kRE9NRXZl
bnRDYWxsYmFja0lELCAhPSwgMCk7CiAKICAgICAgICAgbV93aWxsQ29tcGxldGVDYWxsYmFja0lE
ID0gZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3N1YnNjcmliZShjb25uZWN0aW9uLAogICAgICAg
ICAgICAgbnVsbHB0ciwKQEAgLTM2Niw3ICszNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBy
ZWludGVycHJldF9jYXN0PEdEQnVzU2lnbmFsQ2FsbGJhY2s+KHdpbGxDb21wbGV0ZUNhbGxiYWNr
KSwKICAgICAgICAgICAgIHRoaXMsCiAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgZ19h
c3NlcnQobV93aWxsQ29tcGxldGVDYWxsYmFja0lEKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWlu
dChtX3dpbGxDb21wbGV0ZUNhbGxiYWNrSUQsICE9LCAwKTsKICAgICB9CiAKICAgICB+Rm9ybVN1
Ym1pc3Npb25UZXN0KCkKQEAgLTM4OCw4ICszODgsOCBAQCBwdWJsaWM6CiAgICAgICAgIGdfYXNz
ZXJ0X2NtcHN0cihmb3JtSUQsID09LCBGT1JNX1NVQk1JU1NJT05fVEVTVF9JRCk7CiAgICAgICAg
IGdfYXNzZXJ0X2NtcHN0cihjb25jYXRlbmF0ZWRUZXh0RmllbGROYW1lcywgPT0sICJmb28sYmFy
LCIpOwogICAgICAgICBnX2Fzc2VydF9jbXBzdHIoY29uY2F0ZW5hdGVkVGV4dEZpZWxkVmFsdWVz
LCA9PSwgImZpcnN0LHNlY29uZCwiKTsKLSAgICAgICAgZ19hc3NlcnQoIXRhcmdldEZyYW1lSXNN
YWluRnJhbWUpOwotICAgICAgICBnX2Fzc2VydChzb3VyY2VGcmFtZUlzTWFpbkZyYW1lKTsKKyAg
ICAgICAgZ19hc3NlcnRfZmFsc2UodGFyZ2V0RnJhbWVJc01haW5GcmFtZSk7CisgICAgICAgIGdf
YXNzZXJ0X3RydWUoc291cmNlRnJhbWVJc01haW5GcmFtZSk7CiAgICAgfQogCiAgICAgc3RhdGlj
IHZvaWQgd2lsbFNlbmRET01FdmVudENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiosIGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBHVmFyaWFudCogcmVz
dWx0LCBGb3JtU3VibWlzc2lvblRlc3QqIHRlc3QpCkBAIC00MzQsMTYgKzQzNCwxNiBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uRm9ybVN1Ym1pc3Npb25TdGVwcyhGb3JtU3VibWlzc2lv
blRlc3QqIHRlc3QsIGdjb25zdAogICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxG
b3JtU3VibWl0dGVkKHN1Ym1pdEZvcm1TY3JpcHQpOwogICAgIC8vIFN1Ym1pdCBtdXN0IG5vdCBi
ZSBlbWl0dGVkIHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkIHZpYSBKUy4KICAgICAvLyBodHRw
czovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvSFRNTEZvcm1FbGVt
ZW50L3N1Ym1pdAotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3dpbGxTZW5kRE9NRXZlbnRDYWxsYmFj
a0V4ZWN1dGVkKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3dpbGxDb21wbGV0ZUNhbGxiYWNrRXhl
Y3V0ZWQpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPm1fd2lsbFNlbmRET01FdmVudENhbGxi
YWNrRXhlY3V0ZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV93aWxsQ29tcGxldGVDYWxs
YmFja0V4ZWN1dGVkKTsKICAgICB0ZXN0LT5tX3dpbGxDb21wbGV0ZUNhbGxiYWNrRXhlY3V0ZWQg
PSBmYWxzZTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBtYW51YWxseVN1Ym1pdEZvcm1TY3Jp
cHQgPQogICAgICAgICAidmFyIGJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic3Vi
bWl0X2J1dHRvblwiKTsiCiAgICAgICAgICJidXR0b24uY2xpY2soKTsiOwogICAgIHRlc3QtPnJ1
bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGb3JtU3VibWl0dGVkKG1hbnVhbGx5U3VibWl0Rm9ybVNj
cmlwdCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV93aWxsU2VuZERPTUV2ZW50Q2FsbGJhY2tFeGVj
dXRlZCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV93aWxsQ29tcGxldGVDYWxsYmFja0V4ZWN1dGVk
KTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fd2lsbFNlbmRET01FdmVudENhbGxiYWNrRXhl
Y3V0ZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV93aWxsQ29tcGxldGVDYWxsYmFja0V4
ZWN1dGVkKTsKICAgICB0ZXN0LT5tX3dpbGxTZW5kRE9NRXZlbnRDYWxsYmFja0V4ZWN1dGVkID0g
ZmFsc2U7CiAgICAgdGVzdC0+bV93aWxsQ29tcGxldGVDYWxsYmFja0V4ZWN1dGVkID0gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCAyNWViYzRiOTEzNjhm
YjAxNTllNmE0MGUwMDRkMGMzNGQzZDAxYWM4Li42M2NhYzA1YzhkOTRhYzU1M2U4ZWMwOTcxMDli
MmIzMWQzMzhmZjk4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCkBAIC02
NSw3ICs2NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCB2aWV3RmF2aWNvbkNoYW5nZWRD
YWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHUGFyYW1TcGVjKiBwc3BlYywgZ3BvaW50
ZXIgZGF0YSkKICAgICB7CiAgICAgICAgIEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3QgPSBzdGF0
aWNfY2FzdDxGYXZpY29uRGF0YWJhc2VUZXN0Kj4oZGF0YSk7Ci0gICAgICAgIGdfYXNzZXJ0KHRl
c3QtPm1fd2ViVmlldyA9PSB3ZWJWaWV3KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5t
X3dlYlZpZXcgPT0gd2ViVmlldyk7CiAgICAgICAgIHRlc3QtPm1fZmF2aWNvbk5vdGlmaWNhdGlv
blJlY2VpdmVkID0gdHJ1ZTsKICAgICAgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7CiAgICAgfQpA
QCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2FpdFVudGlsRmF2aWNvblVS
SUNoYW5nZWQoKQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQoIW1fd2FpdGluZ0ZvckZhdmljb25V
UkkpOworICAgICAgICBnX2Fzc2VydF9mYWxzZShtX3dhaXRpbmdGb3JGYXZpY29uVVJJKTsKICAg
ICAgICAgbV9mYXZpY29uVVJJID0gQ1N0cmluZygpOwogICAgICAgICBtX3dhaXRpbmdGb3JGYXZp
Y29uVVJJID0gdHJ1ZTsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwpAQCAt
MTU0LDggKzE1NCw4IEBAIHN0YXRpYyB2b2lkIHRlc3ROb3RJbml0aWFsaXplZChGYXZpY29uRGF0
YWJhc2VUZXN0KiB0ZXN0KQogewogICAgIC8vIFRyeSB0byByZXRyaWV2ZSBhIHZhbGlkIGZhdmlj
b24gZnJvbSBhIG5vdCBpbml0aWFsaXplZCBkYXRhYmFzZS4KICAgICB0ZXN0LT5nZXRGYXZpY29u
Rm9yUGFnZVVSSUFuZFdhaXRVbnRpbFJlYWR5KGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9mb28i
KS5kYXRhKCkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2Zhdmljb24pOwotICAgIGdfYXNzZXJ0
KHRlc3QtPm1fZXJyb3IpOworICAgIGdfYXNzZXJ0X251bGwodGVzdC0+bV9mYXZpY29uKTsKKyAg
ICBnX2Fzc2VydF9ub25udWxsKHRlc3QtPm1fZXJyb3IpOwogICAgIGdfYXNzZXJ0X2NtcGludCh0
ZXN0LT5tX2Vycm9yLT5jb2RlLCA9PSwgV0VCS0lUX0ZBVklDT05fREFUQUJBU0VfRVJST1JfTk9U
X0lOSVRJQUxJWkVEKTsKIH0KICNlbmRpZgpAQCAtMTczLDcgKzE3Myw3IEBAIHN0YXRpYyB2b2lk
IHRlc3RDbGVhckRhdGFiYXNlKEZhdmljb25EYXRhYmFzZVRlc3QqIHRlc3QpCiAgICAgd2Via2l0
X2Zhdmljb25fZGF0YWJhc2VfY2xlYXIoZGF0YWJhc2UpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFy
PiBpY29uVVJJKHdlYmtpdF9mYXZpY29uX2RhdGFiYXNlX2dldF9mYXZpY29uX3VyaShkYXRhYmFz
ZSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2ZvbyIpLmRhdGEoKSkpOwotICAgIGdfYXNzZXJ0
KCFpY29uVVJJKTsKKyAgICBnX2Fzc2VydF9udWxsKGljb25VUkkpOwogfQogCiBzdGF0aWMgdm9p
ZCBlcGhlbWVyYWxWaWV3TG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0
TG9hZEV2ZW50IGxvYWRFdmVudCwgV2ViVmlld1Rlc3QqIHRlc3QpCkBAIC0xOTYsOCArMTk2LDgg
QEAgc3RhdGljIHZvaWQgdGVzdFByaXZhdGVCcm93c2luZyhGYXZpY29uRGF0YWJhc2VUZXN0KiB0
ZXN0KQogCiAgICAgLy8gQW4gZXBoZW1lcmFsIHdlYiB2aWV3IHNob3VsZCBub3Qgd3JpdGUgdG8g
dGhlIGRhdGFiYXNlLgogICAgIHRlc3QtPmdldEZhdmljb25Gb3JQYWdlVVJJQW5kV2FpdFVudGls
UmVhZHkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2ZvbyIpLmRhdGEoKSk7Ci0gICAgZ19hc3Nl
cnQoIXRlc3QtPm1fZmF2aWNvbik7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9lcnJvcik7CisgICAg
Z19hc3NlcnRfbnVsbCh0ZXN0LT5tX2Zhdmljb24pOworICAgIGdfYXNzZXJ0X25vbm51bGwodGVz
dC0+bV9lcnJvcik7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RHZXRGYXZpY29uKEZhdmljb25EYXRh
YmFzZVRlc3QqIHRlc3QpCkBAIC0yMTAsOSArMjEwLDkgQEAgc3RhdGljIHZvaWQgdGVzdEdldEZh
dmljb24oRmF2aWNvbkRhdGFiYXNlVGVzdCogdGVzdCkKIAogICAgIC8vIENoZWNrIHRoZSBBUEkg
cmV0cmlldmluZyBhIHZhbGlkIGZhdmljb24uCiAgICAgdGVzdC0+Z2V0RmF2aWNvbkZvclBhZ2VV
UklBbmRXYWl0VW50aWxSZWFkeShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvZm9vIikuZGF0YSgp
KTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2Zhdmljb24pOworICAgIGdfYXNzZXJ0X25vbm51bGwo
dGVzdC0+bV9mYXZpY29uKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9mYXZpY29uVVJJ
LmRhdGEoKSwgPT0sIGZhdmljb25VUkkuZGF0YSgpKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+bV9l
cnJvcik7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IodGVzdC0+bV9lcnJvci5nZXQoKSk7CiAKICAg
ICAvLyBDaGVjayB0aGF0IHdpZHRoIGFuZCBoZWlnaHQgbWF0Y2ggdGhvc2UgZnJvbSBibGFuay5p
Y28gKDE2eDE2IGZhdmljb24pLgogICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJm
YWNlX2dldF93aWR0aCh0ZXN0LT5tX2Zhdmljb24pLCA9PSwgMTYpOwpAQCAtMjI2LDEwICsyMjYs
MTAgQEAgc3RhdGljIHZvaWQgdGVzdEdldEZhdmljb24oRmF2aWNvbkRhdGFiYXNlVGVzdCogdGVz
dCkKICAgICB0ZXN0LT53YWl0VW50aWxGYXZpY29uQ2hhbmdlZCgpOwogICAgIHRlc3QtPndhaXRV
bnRpbEZhdmljb25DaGFuZ2VkKCk7CiAgICAgdGVzdC0+Z2V0RmF2aWNvbkZvclBhZ2VVUklBbmRX
YWl0VW50aWxSZWFkeShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvYmFyIikuZGF0YSgpKTsKLSAg
ICBnX2Fzc2VydCh0ZXN0LT5tX2Zhdmljb24pOworICAgIGdfYXNzZXJ0X25vbm51bGwodGVzdC0+
bV9mYXZpY29uKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+bV9mYXZpY29uVVJJLmRhdGEo
KSwgPT0sIGZhdmljb25VUkkuZGF0YSgpKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2Zhdmljb24g
PT0gZmF2aWNvbik7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1fZXJyb3IpOworICAgIGdfYXNzZXJ0
X3RydWUodGVzdC0+bV9mYXZpY29uID09IGZhdmljb24pOworICAgIGdfYXNzZXJ0X25vX2Vycm9y
KHRlc3QtPm1fZXJyb3IuZ2V0KCkpOwogICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShmYXZpY29u
KTsKIAogICAgIC8vIENoZWNrIHRoZSBBUEkgcmV0cmlldmluZyBhbiBpbnZhbGlkIGZhdmljb24u
IEZhdmljb24gY2hhbmdlcyBvbmx5IG9uY2UgdG8gcmVzZXQgaXQsIHRoZW4KQEAgLTIzOSw4ICsy
MzksOCBAQCBzdGF0aWMgdm9pZCB0ZXN0R2V0RmF2aWNvbihGYXZpY29uRGF0YWJhc2VUZXN0KiB0
ZXN0KQogICAgIHRlc3QtPndhaXRVbnRpbEZhdmljb25VUklDaGFuZ2VkKCk7CiAKICAgICB0ZXN0
LT5nZXRGYXZpY29uRm9yUGFnZVVSSUFuZFdhaXRVbnRpbFJlYWR5KGtTZXJ2ZXItPmdldFVSSUZv
clBhdGgoIi9ub2Zhdmljb24iKS5kYXRhKCkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2Zhdmlj
b24pOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXJyb3IpOworICAgIGdfYXNzZXJ0X251bGwodGVz
dC0+bV9mYXZpY29uKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHRlc3QtPm1fZXJyb3IpOwogfQog
CiBzdGF0aWMgdm9pZCB0ZXN0R2V0RmF2aWNvblVSSShGYXZpY29uRGF0YWJhc2VUZXN0KiB0ZXN0
KQpAQCAtMjU3LDE3ICsyNTcsMTcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdGYXZpY29uKEZh
dmljb25EYXRhYmFzZVRlc3QqIHRlc3QpCiAgICAgdGVzdC0+bV9mYXZpY29uVVJJID0gQ1N0cmlu
ZygpOwogCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBpY29uRnJvbVdlYlZpZXcgPSB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X2Zhdmljb24odGVzdC0+bV93ZWJWaWV3KTsKLSAgICBnX2Fzc2VydCghaWNvbkZy
b21XZWJWaWV3KTsKKyAgICBnX2Fzc2VydF9udWxsKGljb25Gcm9tV2ViVmlldyk7CiAKICAgICB0
ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9mb28iKS5kYXRhKCkpOwogICAg
IHRlc3QtPndhaXRVbnRpbEZhdmljb25DaGFuZ2VkKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9m
YXZpY29uTm90aWZpY2F0aW9uUmVjZWl2ZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9m
YXZpY29uTm90aWZpY2F0aW9uUmVjZWl2ZWQpOwogICAgIC8vIFRoZSBpY29uIGlzIGtub3duIGFu
ZCBoYXNuJ3QgY2hhbmdlZCBpbiB0aGUgZGF0YWJhc2UsIHNvIG5vdGlmeTo6ZmF2aWNvbiBpcyBl
bWl0dGVkCiAgICAgLy8gYnV0IFdlYktpdEZhdmljb25EYXRhYmFzZTo6aWNvbi1jaGFuZ2VkIGlz
bid0LgotICAgIGdfYXNzZXJ0KHRlc3QtPm1fZmF2aWNvblVSSS5pc051bGwoKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh0ZXN0LT5tX2Zhdmljb25VUkkuaXNOdWxsKCkpOwogCiAgICAgaWNvbkZyb21X
ZWJWaWV3ID0gd2Via2l0X3dlYl92aWV3X2dldF9mYXZpY29uKHRlc3QtPm1fd2ViVmlldyk7Ci0g
ICAgZ19hc3NlcnQoaWNvbkZyb21XZWJWaWV3KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGljb25G
cm9tV2ViVmlldyk7CiAgICAgZ19hc3NlcnRfY21wdWludChjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF93aWR0aChpY29uRnJvbVdlYlZpZXcpLCA9PSwgMTYpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQo
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KGljb25Gcm9tV2ViVmlldyksID09LCAxNik7
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFdlYktpdEZpbmRDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0V2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCmluZGV4IDc2NThmNTk1OTlkZGI4
ZDNhZmZjODE4NTI3ZmE0NjQ1NTI3ZWYxZTguLjQwZDcyYjBhODk4NDEwNzBjMzdjMTlmMTM3Y2Uy
YTU5M2UzNTBiYTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0V2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCkBAIC05OCw3
ICs5OCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RGaW5kQ29udHJvbGxlclRleHRGb3VuZChGaW5kQ29u
dHJvbGxlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+ZmluZCgidGVzdGlu
ZyIsIFdFQktJVF9GSU5EX09QVElPTlNfTk9ORSwgMSk7CiAgICAgdGVzdC0+d2FpdFVudGlsRmlu
ZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3RleHRGb3VuZCk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh0ZXN0LT5tX3RleHRGb3VuZCk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RGaW5k
Q29udHJvbGxlclRleHROb3RGb3VuZChGaW5kQ29udHJvbGxlclRlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCkBAIC0xMDksNyArMTA5LDcgQEAgc3RhdGljIHZvaWQgdGVzdEZpbmRDb250cm9sbGVy
VGV4dE5vdEZvdW5kKEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnQKICAgICB0
ZXN0LT5maW5kKCJub3RGb3VuZCIsIFdFQktJVF9GSU5EX09QVElPTlNfTk9ORSwgMSk7CiAgICAg
dGVzdC0+d2FpdFVudGlsRmluZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCghdGVzdC0+bV90
ZXh0Rm91bmQpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPm1fdGV4dEZvdW5kKTsKIH0KIAog
c3RhdGljIHZvaWQgdGVzdEZpbmRDb250cm9sbGVyTWF0Y2hDb3VudChGaW5kQ29udHJvbGxlclRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC0xMjAsOCArMTIwLDggQEAgc3RhdGljIHZvaWQg
dGVzdEZpbmRDb250cm9sbGVyTWF0Y2hDb3VudChGaW5kQ29udHJvbGxlclRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIKICAgICB0ZXN0LT5maW5kKCJ0ZXN0aW5nIiwgV0VCS0lUX0ZJTkRfT1BUSU9O
U19OT05FLCAyKTsKICAgICB0ZXN0LT53YWl0VW50aWxGaW5kRmluaXNoZWQoKTsKIAotICAgIGdf
YXNzZXJ0KHRlc3QtPm1fbWF0Y2hDb3VudCA9PSAyKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3Rl
eHRGb3VuZCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX21hdGNoQ291bnQsID09LCAy
KTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fdGV4dEZvdW5kKTsKIH0KIAogc3RhdGljIHZv
aWQgdGVzdEZpbmRDb250cm9sbGVyTWF4TWF0Y2hDb3VudChGaW5kQ29udHJvbGxlclRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCkBAIC0xMzIsOCArMTMyLDggQEAgc3RhdGljIHZvaWQgdGVzdEZp
bmRDb250cm9sbGVyTWF4TWF0Y2hDb3VudChGaW5kQ29udHJvbGxlclRlc3QqIHRlc3QsIGdjb25z
dHBvaW4KICAgICB0ZXN0LT5maW5kKCJ0ZXN0aW5nIiwgV0VCS0lUX0ZJTkRfT1BUSU9OU19OT05F
LCAxKTsKICAgICB0ZXN0LT53YWl0VW50aWxGaW5kRmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0
KHRlc3QtPm1fbWF0Y2hDb3VudCA9PSBHX01BWFVJTlQpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1f
dGV4dEZvdW5kKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3QtPm1fbWF0Y2hDb3VudCwgPT0s
IEdfTUFYVUlOVCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3RleHRGb3VuZCk7CiB9CiAK
IHN0YXRpYyB2b2lkIHRlc3RGaW5kQ29udHJvbGxlck5leHQoRmluZENvbnRyb2xsZXJUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMTQ0LDIyICsxNDQsMjIgQEAgc3RhdGljIHZvaWQgdGVz
dEZpbmRDb250cm9sbGVyTmV4dChGaW5kQ29udHJvbGxlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiAgICAgdGVzdC0+ZmluZCgidGVzdGluZyIsIFdFQktJVF9GSU5EX09QVElPTlNfTk9ORSwg
Mik7CiAgICAgdGVzdC0+d2FpdFVudGlsRmluZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCh0
ZXN0LT5tX3RleHRGb3VuZCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9tYXRjaENvdW50ID09IDIp
OworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV90ZXh0Rm91bmQpOworICAgIGdfYXNzZXJ0X2Nt
cHVpbnQodGVzdC0+bV9tYXRjaENvdW50LCA9PSwgMik7CiAKICAgICB3ZWJraXRfZmluZF9jb250
cm9sbGVyX3NlYXJjaF9uZXh0KHRlc3QtPm1fZmluZENvbnRyb2xsZXIuZ2V0KCkpOwogICAgIHRl
c3QtPndhaXRVbnRpbEZpbmRGaW5pc2hlZCgpOwogCi0gICAgZ19hc3NlcnQodGVzdC0+bV90ZXh0
Rm91bmQpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fbWF0Y2hDb3VudCA9PSAxKTsKLSAgICBnX2Fz
c2VydCghKHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfZ2V0X29wdGlvbnModGVzdC0+bV9maW5kQ29u
dHJvbGxlci5nZXQoKSkgJiBXRUJLSVRfRklORF9PUFRJT05TX0JBQ0tXQVJEUykpOworICAgIGdf
YXNzZXJ0X3RydWUodGVzdC0+bV90ZXh0Rm91bmQpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVz
dC0+bV9tYXRjaENvdW50LCA9PSwgMSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2ZpbmRf
Y29udHJvbGxlcl9nZXRfb3B0aW9ucyh0ZXN0LT5tX2ZpbmRDb250cm9sbGVyLmdldCgpKSAmIFdF
QktJVF9GSU5EX09QVElPTlNfQkFDS1dBUkRTKTsKIAogICAgIHdlYmtpdF9maW5kX2NvbnRyb2xs
ZXJfc2VhcmNoX25leHQodGVzdC0+bV9maW5kQ29udHJvbGxlci5nZXQoKSk7CiAgICAgdGVzdC0+
d2FpdFVudGlsRmluZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCghdGVzdC0+bV90ZXh0Rm91
bmQpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fbWF0Y2hDb3VudCA9PSAxKTsKLSAgICBnX2Fzc2Vy
dCghKHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfZ2V0X29wdGlvbnModGVzdC0+bV9maW5kQ29udHJv
bGxlci5nZXQoKSkgJiBXRUJLSVRfRklORF9PUFRJT05TX0JBQ0tXQVJEUykpOworICAgIGdfYXNz
ZXJ0X2ZhbHNlKHRlc3QtPm1fdGV4dEZvdW5kKTsKKyAgICBnX2Fzc2VydF9jbXB1aW50KHRlc3Qt
Pm1fbWF0Y2hDb3VudCwgPT0sIDEpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9maW5kX2Nv
bnRyb2xsZXJfZ2V0X29wdGlvbnModGVzdC0+bV9maW5kQ29udHJvbGxlci5nZXQoKSkgJiBXRUJL
SVRfRklORF9PUFRJT05TX0JBQ0tXQVJEUyk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RGaW5kQ29u
dHJvbGxlclByZXZpb3VzKEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
QEAgLTE3MCwyMiArMTcwLDIyIEBAIHN0YXRpYyB2b2lkIHRlc3RGaW5kQ29udHJvbGxlclByZXZp
b3VzKEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5m
aW5kKCJ0ZXN0aW5nIiwgV0VCS0lUX0ZJTkRfT1BUSU9OU19OT05FLCAyKTsKICAgICB0ZXN0LT53
YWl0VW50aWxGaW5kRmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0KHRlc3QtPm1fbWF0Y2hDb3Vu
dCA9PSAyKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3RleHRGb3VuZCk7CisgICAgZ19hc3NlcnRf
Y21wdWludCh0ZXN0LT5tX21hdGNoQ291bnQsID09LCAyKTsKKyAgICBnX2Fzc2VydF90cnVlKHRl
c3QtPm1fdGV4dEZvdW5kKTsKIAogICAgIHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfc2VhcmNoX25l
eHQodGVzdC0+bV9maW5kQ29udHJvbGxlci5nZXQoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsRmlu
ZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3RleHRGb3VuZCk7Ci0gICAgZ19h
c3NlcnQodGVzdC0+bV9tYXRjaENvdW50ID09IDEpOwotICAgIGdfYXNzZXJ0KCEod2Via2l0X2Zp
bmRfY29udHJvbGxlcl9nZXRfb3B0aW9ucyh0ZXN0LT5tX2ZpbmRDb250cm9sbGVyLmdldCgpKSAm
IFdFQktJVF9GSU5EX09QVElPTlNfQkFDS1dBUkRTKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0
LT5tX3RleHRGb3VuZCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX21hdGNoQ291bnQs
ID09LCAxKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfZmluZF9jb250cm9sbGVyX2dldF9v
cHRpb25zKHRlc3QtPm1fZmluZENvbnRyb2xsZXIuZ2V0KCkpICYgV0VCS0lUX0ZJTkRfT1BUSU9O
U19CQUNLV0FSRFMpOwogCiAgICAgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9zZWFyY2hfcHJldmlv
dXModGVzdC0+bV9maW5kQ29udHJvbGxlci5nZXQoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsRmlu
ZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3RleHRGb3VuZCk7Ci0gICAgZ19h
c3NlcnQodGVzdC0+bV9tYXRjaENvdW50ID09IDEpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9maW5k
X2NvbnRyb2xsZXJfZ2V0X29wdGlvbnModGVzdC0+bV9maW5kQ29udHJvbGxlci5nZXQoKSkgJiBX
RUJLSVRfRklORF9PUFRJT05TX0JBQ0tXQVJEUyk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5t
X3RleHRGb3VuZCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5tX21hdGNoQ291bnQsID09
LCAxKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfZ2V0X29wdGlv
bnModGVzdC0+bV9maW5kQ29udHJvbGxlci5nZXQoKSkgJiBXRUJLSVRfRklORF9PUFRJT05TX0JB
Q0tXQVJEUyk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RGaW5kQ29udHJvbGxlckNvdW50ZWRNYXRj
aGVzKEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTE5NiwxNyAr
MTk2LDE3IEBAIHN0YXRpYyB2b2lkIHRlc3RGaW5kQ29udHJvbGxlckNvdW50ZWRNYXRjaGVzKEZp
bmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAgICAgdGVzdC0+Y291bnQoInRlc3Rp
bmciLCBXRUJLSVRfRklORF9PUFRJT05TX05PTkUsIDIpOwogICAgIHRlc3QtPndhaXRVbnRpbEZp
bmRGaW5pc2hlZCgpOwogCi0gICAgZ19hc3NlcnQodGVzdC0+bV9tYXRjaENvdW50ID09IDIpOwor
ICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9tYXRjaENvdW50LCA9PSwgMik7CiAKICAgICB0
ZXN0LT5jb3VudCgiZmlyc3QiLCBXRUJLSVRfRklORF9PUFRJT05TX05PTkUsIDIpOwogICAgIHRl
c3QtPndhaXRVbnRpbEZpbmRGaW5pc2hlZCgpOwogCi0gICAgZ19hc3NlcnQodGVzdC0+bV9tYXRj
aENvdW50ID09IDEpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9tYXRjaENvdW50LCA9
PSwgMSk7CiAKICAgICB0ZXN0LT5jb3VudCgibm90Rm91bmQiLCBXRUJLSVRfRklORF9PUFRJT05T
X05PTkUsIDIpOwogICAgIHRlc3QtPndhaXRVbnRpbEZpbmRGaW5pc2hlZCgpOwogCi0gICAgZ19h
c3NlcnQoIXRlc3QtPm1fbWF0Y2hDb3VudCk7CisgICAgZ19hc3NlcnRfY21wdWludCh0ZXN0LT5t
X21hdGNoQ291bnQsID09LCAwKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdEZpbmRDb250cm9sbGVy
T3B0aW9ucyhGaW5kQ29udHJvbGxlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC0yMTcs
NDQgKzIxNyw0NCBAQCBzdGF0aWMgdm9pZCB0ZXN0RmluZENvbnRyb2xsZXJPcHRpb25zKEZpbmRD
b250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5maW5kKCJUZXN0
aW5nIiwgV0VCS0lUX0ZJTkRfT1BUSU9OU19OT05FLCAyKTsKICAgICB0ZXN0LT53YWl0VW50aWxG
aW5kRmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3RleHRGb3VuZCk7CisgICAg
Z19hc3NlcnRfZmFsc2UodGVzdC0+bV90ZXh0Rm91bmQpOwogCiAgICAgdGVzdC0+ZmluZCgiVGVz
dGluZyIsIFdFQktJVF9GSU5EX09QVElPTlNfQ0FTRV9JTlNFTlNJVElWRSwgMik7CiAgICAgdGVz
dC0+d2FpdFVudGlsRmluZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3RleHRG
b3VuZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3RleHRGb3VuZCk7CiAKICAgICB0ZXN0
LT5maW5kKCJlc3RpbmciLCBXRUJLSVRfRklORF9PUFRJT05TX05PTkUsIDIpOwogICAgIHRlc3Qt
PndhaXRVbnRpbEZpbmRGaW5pc2hlZCgpOwogCi0gICAgZ19hc3NlcnQodGVzdC0+bV90ZXh0Rm91
bmQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV90ZXh0Rm91bmQpOwogCiAgICAgdGVzdC0+
ZmluZCgiZXN0aW5nIiwgV0VCS0lUX0ZJTkRfT1BUSU9OU19BVF9XT1JEX1NUQVJUUywgMik7CiAg
ICAgdGVzdC0+d2FpdFVudGlsRmluZEZpbmlzaGVkKCk7CiAKLSAgICBnX2Fzc2VydCghdGVzdC0+
bV90ZXh0Rm91bmQpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPm1fdGV4dEZvdW5kKTsKIAog
ICAgIHRlc3QtPmZpbmQoIkhhbGYiLCBXRUJLSVRfRklORF9PUFRJT05TX0FUX1dPUkRfU1RBUlRT
LCAyKTsKICAgICB0ZXN0LT53YWl0VW50aWxGaW5kRmluaXNoZWQoKTsKIAotICAgIGdfYXNzZXJ0
KCF0ZXN0LT5tX3RleHRGb3VuZCk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+bV90ZXh0Rm91
bmQpOwogCiAgICAgdGVzdC0+ZmluZCgiSGFsZiIsIFdFQktJVF9GSU5EX09QVElPTlNfQVRfV09S
RF9TVEFSVFMgfCBXRUJLSVRfRklORF9PUFRJT05TX1RSRUFUX01FRElBTF9DQVBJVEFMX0FTX1dP
UkRfU1RBUlQsIDIpOwogICAgIHRlc3QtPndhaXRVbnRpbEZpbmRGaW5pc2hlZCgpOwogCi0gICAg
Z19hc3NlcnQodGVzdC0+bV90ZXh0Rm91bmQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV90
ZXh0Rm91bmQpOwogCiAgICAgdGVzdC0+ZmluZCgidGVzdGluZyIsIFdFQktJVF9GSU5EX09QVElP
TlNfV1JBUF9BUk9VTkQsIDMpOwogICAgIHRlc3QtPndhaXRVbnRpbEZpbmRGaW5pc2hlZCgpOwot
ICAgIGdfYXNzZXJ0KHRlc3QtPm1fdGV4dEZvdW5kKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3Qt
Pm1fdGV4dEZvdW5kKTsKIAogICAgIHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfc2VhcmNoX25leHQo
dGVzdC0+bV9maW5kQ29udHJvbGxlci5nZXQoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsRmluZEZp
bmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV90ZXh0Rm91bmQpOworICAgIGdfYXNzZXJ0
X3RydWUodGVzdC0+bV90ZXh0Rm91bmQpOwogCiAgICAgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9z
ZWFyY2hfbmV4dCh0ZXN0LT5tX2ZpbmRDb250cm9sbGVyLmdldCgpKTsKICAgICB0ZXN0LT53YWl0
VW50aWxGaW5kRmluaXNoZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3RleHRGb3VuZCk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3RleHRGb3VuZCk7CiB9CiAKIC8vIFRPRE86IFJld3Jp
dGUgdGhpcyB0ZXN0IHRvIGF2b2lkIHVzaW5nIHNuYXBzaG90cyBzbyBpdCBjYW4gYmUgcmUtZW5h
YmxlZApAQCAtMjY5LDE2ICsyNjksMTYgQEAgc3RhdGljIHZvaWQgdGVzdEZpbmRDb250cm9sbGVy
SGlkZShGaW5kQ29udHJvbGxlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICBjYWly
b19zdXJmYWNlX3QqIG9yaWdpbmFsU3VyZmFjZSA9IGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKAog
ICAgICAgICB0ZXN0LT5nZXRTbmFwc2hvdEFuZFdhaXRVbnRpbFJlYWR5KFdFQktJVF9TTkFQU0hP
VF9SRUdJT05fRlVMTF9ET0NVTUVOVCwgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORSkpOwot
ICAgIGdfYXNzZXJ0KG9yaWdpbmFsU3VyZmFjZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChvcmln
aW5hbFN1cmZhY2UpOwogCiAgICAgdGVzdC0+ZmluZCgidGVzdGluZyIsIFdFQktJVF9GSU5EX09Q
VElPTlNfTk9ORSwgMSk7CiAgICAgdGVzdC0+d2FpdFVudGlsRmluZEZpbmlzaGVkKCk7Ci0gICAg
Z19hc3NlcnQodGVzdC0+bV90ZXh0Rm91bmQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV90
ZXh0Rm91bmQpOwogCiAgICAgY2Fpcm9fc3VyZmFjZV90KiBoaWdobGlnaHRTdXJmYWNlID0gY2Fp
cm9fc3VyZmFjZV9yZWZlcmVuY2UoCiAgICAgICAgIHRlc3QtPmdldFNuYXBzaG90QW5kV2FpdFVu
dGlsUmVhZHkoV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9GVUxMX0RPQ1VNRU5ULCBXRUJLSVRfU05B
UFNIT1RfT1BUSU9OU19OT05FKSk7Ci0gICAgZ19hc3NlcnQoaGlnaGxpZ2h0U3VyZmFjZSk7Ci0g
ICAgZ19hc3NlcnQoIVRlc3Q6OmNhaXJvU3VyZmFjZXNFcXVhbChvcmlnaW5hbFN1cmZhY2UsIGhp
Z2hsaWdodFN1cmZhY2UpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGhpZ2hsaWdodFN1cmZhY2Up
OworICAgIGdfYXNzZXJ0X2ZhbHNlKFRlc3Q6OmNhaXJvU3VyZmFjZXNFcXVhbChvcmlnaW5hbFN1
cmZhY2UsIGhpZ2hsaWdodFN1cmZhY2UpKTsKIAogICAgIFdlYktpdEZpbmRDb250cm9sbGVyKiBm
aW5kQ29udHJvbGxlciA9IHdlYmtpdF93ZWJfdmlld19nZXRfZmluZF9jb250cm9sbGVyKHRlc3Qt
Pm1fd2ViVmlldyk7CiAgICAgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9zZWFyY2hfZmluaXNoKGZp
bmRDb250cm9sbGVyKTsKQEAgLTI4Niw4ICsyODYsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0RmluZENv
bnRyb2xsZXJIaWRlKEZpbmRDb250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAog
ICAgIGNhaXJvX3N1cmZhY2VfdCogdW5oaWdobGlnaHRTdXJmYWNlID0gY2Fpcm9fc3VyZmFjZV9y
ZWZlcmVuY2UoCiAgICAgICAgIHRlc3QtPmdldFNuYXBzaG90QW5kV2FpdFVudGlsUmVhZHkoV0VC
S0lUX1NOQVBTSE9UX1JFR0lPTl9GVUxMX0RPQ1VNRU5ULCBXRUJLSVRfU05BUFNIT1RfT1BUSU9O
U19OT05FKSk7Ci0gICAgZ19hc3NlcnQodW5oaWdobGlnaHRTdXJmYWNlKTsKLSAgICBnX2Fzc2Vy
dChUZXN0OjpjYWlyb1N1cmZhY2VzRXF1YWwob3JpZ2luYWxTdXJmYWNlLCB1bmhpZ2hsaWdodFN1
cmZhY2UpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHVuaGlnaGxpZ2h0U3VyZmFjZSk7CisgICAg
Z19hc3NlcnRfdHJ1ZShUZXN0OjpjYWlyb1N1cmZhY2VzRXF1YWwob3JpZ2luYWxTdXJmYWNlLCB1
bmhpZ2hsaWdodFN1cmZhY2UpKTsKIAogICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShvcmlnaW5h
bFN1cmZhY2UpOwogICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShoaWdobGlnaHRTdXJmYWNlKTsK
QEAgLTMwMCw3ICszMDAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0RmluZENvbnRyb2xsZXJJbnN0YW5j
ZShGaW5kQ29udHJvbGxlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgV2ViS2l0Rmlu
ZENvbnRyb2xsZXIqIGZpbmRDb250cm9sbGVyMSA9IHdlYmtpdF93ZWJfdmlld19nZXRfZmluZF9j
b250cm9sbGVyKHRlc3QtPm1fd2ViVmlldyk7CiAgICAgV2ViS2l0RmluZENvbnRyb2xsZXIqIGZp
bmRDb250cm9sbGVyMiA9IHdlYmtpdF93ZWJfdmlld19nZXRfZmluZF9jb250cm9sbGVyKHRlc3Qt
Pm1fd2ViVmlldyk7CiAKLSAgICBnX2Fzc2VydChmaW5kQ29udHJvbGxlcjEgPT0gZmluZENvbnRy
b2xsZXIyKTsKKyAgICBnX2Fzc2VydF90cnVlKGZpbmRDb250cm9sbGVyMSA9PSBmaW5kQ29udHJv
bGxlcjIpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0RmluZENvbnRyb2xsZXJHZXR0ZXJzKEZpbmRD
b250cm9sbGVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTMxMSwxMCArMzExLDEwIEBA
IHN0YXRpYyB2b2lkIHRlc3RGaW5kQ29udHJvbGxlckdldHRlcnMoRmluZENvbnRyb2xsZXJUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIFdlYktpdEZpbmRDb250cm9sbGVyKiBmaW5kQ29u
dHJvbGxlciA9IHdlYmtpdF93ZWJfdmlld19nZXRfZmluZF9jb250cm9sbGVyKHRlc3QtPm1fd2Vi
Vmlldyk7CiAKICAgICB3ZWJraXRfZmluZF9jb250cm9sbGVyX3NlYXJjaChmaW5kQ29udHJvbGxl
ciwgc2VhcmNoVGV4dCwgZmluZE9wdGlvbnMsIG1heE1hdGNoQ291bnQpOwotICAgIGdfYXNzZXJ0
KHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfZ2V0X3dlYl92aWV3KGZpbmRDb250cm9sbGVyKSA9PSB0
ZXN0LT5tX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KCFnX3N0cmNtcDAod2Via2l0X2ZpbmRfY29u
dHJvbGxlcl9nZXRfc2VhcmNoX3RleHQoZmluZENvbnRyb2xsZXIpLCBzZWFyY2hUZXh0KSk7Ci0g
ICAgZ19hc3NlcnQod2Via2l0X2ZpbmRfY29udHJvbGxlcl9nZXRfbWF4X21hdGNoX2NvdW50KGZp
bmRDb250cm9sbGVyKSA9PSBtYXhNYXRjaENvdW50KTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfZmlu
ZF9jb250cm9sbGVyX2dldF9vcHRpb25zKGZpbmRDb250cm9sbGVyKSA9PSBmaW5kT3B0aW9ucyk7
CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfZmluZF9jb250cm9sbGVyX2dldF93ZWJfdmlldyhm
aW5kQ29udHJvbGxlcikgPT0gdGVzdC0+bV93ZWJWaWV3KTsKKyAgICBnX2Fzc2VydF9jbXBzdHIo
d2Via2l0X2ZpbmRfY29udHJvbGxlcl9nZXRfc2VhcmNoX3RleHQoZmluZENvbnRyb2xsZXIpLCA9
PSwgc2VhcmNoVGV4dCk7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfZmluZF9jb250cm9s
bGVyX2dldF9tYXhfbWF0Y2hfY291bnQoZmluZENvbnRyb2xsZXIpLCA9PSwgbWF4TWF0Y2hDb3Vu
dCk7CisgICAgZ19hc3NlcnRfY21wdWludCh3ZWJraXRfZmluZF9jb250cm9sbGVyX2dldF9vcHRp
b25zKGZpbmRDb250cm9sbGVyKSwgPT0sIGZpbmRPcHRpb25zKTsKIH0KIAogdm9pZCBiZWZvcmVB
bGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RXZWJLaXRQb2xpY3lDbGllbnQuY3BwCmluZGV4IGE5ZmQ5ZGUzM2JkMWY1NDY2
MzRhYzMxMDJjZjcwZTQ4NWYzNTQzMzMuLjc2OWJjYzg5MTZiYjliMWMxYWZlMjlkNmJjMjA5ZGQ0
MzI4MDE2YTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0V2ViS2l0UG9saWN5Q2xpZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFBvbGljeUNsaWVudC5jcHAKQEAgLTEyMiw3ICsxMjIs
NyBAQCBzdGF0aWMgdm9pZCB0ZXN0TmF2aWdhdGlvblBvbGljeShQb2xpY3lDbGllbnRUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfbmF2aWdhdGlv
bl9hY3Rpb25fZ2V0X21vdXNlX2J1dHRvbihuYXZpZ2F0aW9uQWN0aW9uKSwgPT0sIDApOwogICAg
IGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfbmF2aWdhdGlvbl9hY3Rpb25fZ2V0X21vZGlmaWVycyhu
YXZpZ2F0aW9uQWN0aW9uKSwgPT0sIDApOwogICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9uYXZp
Z2F0aW9uX2FjdGlvbl9pc19yZWRpcmVjdChuYXZpZ2F0aW9uQWN0aW9uKSk7Ci0gICAgZ19hc3Nl
cnQoIXdlYmtpdF9uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9nZXRfZnJhbWVfbmFtZShkZWNp
c2lvbikpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X25hdmlnYXRpb25fcG9saWN5X2RlY2lz
aW9uX2dldF9mcmFtZV9uYW1lKGRlY2lzaW9uKSk7CiAgICAgV2ViS2l0VVJJUmVxdWVzdCogcmVx
dWVzdCA9IHdlYmtpdF9uYXZpZ2F0aW9uX2FjdGlvbl9nZXRfcmVxdWVzdChuYXZpZ2F0aW9uQWN0
aW9uKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkocmVx
dWVzdCksID09LCAiaHR0cDovL3dlYmtpdGd0ay5vcmcvIik7CiAKQEAgLTE0MSw3ICsxNDEsNyBA
QCBzdGF0aWMgdm9pZCB0ZXN0TmF2aWdhdGlvblBvbGljeShQb2xpY3lDbGllbnRUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogICAgIGRlY2lzaW9uID0gV0VCS0lUX05BVklHQVRJT05fUE9MSUNZ
X0RFQ0lTSU9OKHRlc3QtPm1fcHJldmlvdXNQb2xpY3lEZWNpc2lvbi5nZXQoKSk7CiAgICAgbmF2
aWdhdGlvbkFjdGlvbiA9IHdlYmtpdF9uYXZpZ2F0aW9uX3BvbGljeV9kZWNpc2lvbl9nZXRfbmF2
aWdhdGlvbl9hY3Rpb24oZGVjaXNpb24pOwogICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X25hdmln
YXRpb25fYWN0aW9uX2lzX3JlZGlyZWN0KG5hdmlnYXRpb25BY3Rpb24pKTsKLSAgICBnX2Fzc2Vy
dCghd2Via2l0X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2dldF9mcmFtZV9uYW1lKGRlY2lz
aW9uKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNp
b25fZ2V0X2ZyYW1lX25hbWUoZGVjaXNpb24pKTsKICAgICByZXF1ZXN0ID0gd2Via2l0X25hdmln
YXRpb25fYWN0aW9uX2dldF9yZXF1ZXN0KG5hdmlnYXRpb25BY3Rpb24pOwogICAgIGdfYXNzZXJ0
X2NtcHN0cih3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSwgPT0sIGtTZXJ2ZXIt
PmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOwogCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBzdGF0
aWMgdm9pZCB0ZXN0UmVzcG9uc2VQb2xpY3koUG9saWN5Q2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKIAogICAgIFdlYktpdFJlc3BvbnNlUG9saWN5RGVjaXNpb24qIGRlY2lzaW9uID0g
V0VCS0lUX1JFU1BPTlNFX1BPTElDWV9ERUNJU0lPTih0ZXN0LT5tX3ByZXZpb3VzUG9saWN5RGVj
aXNpb24uZ2V0KCkpOwogICAgIFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QgPSB3ZWJraXRfcmVz
cG9uc2VfcG9saWN5X2RlY2lzaW9uX2dldF9yZXF1ZXN0KGRlY2lzaW9uKTsKLSAgICBnX2Fzc2Vy
dChXRUJLSVRfSVNfVVJJX1JFUVVFU1QocmVxdWVzdCkpOworICAgIGdfYXNzZXJ0X3RydWUoV0VC
S0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsKICAgICBBU1NFUlRfQ01QX0NTVFJJTkcod2Vi
a2l0X3VyaV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCksID09LCBrU2VydmVyLT5nZXRVUklGb3JQ
YXRoKCIvIikpOwogICAgIFdlYktpdFVSSVJlc3BvbnNlKiByZXNwb25zZSA9IHdlYmtpdF9yZXNw
b25zZV9wb2xpY3lfZGVjaXNpb25fZ2V0X3Jlc3BvbnNlKGRlY2lzaW9uKTsKLSAgICBnX2Fzc2Vy
dChXRUJLSVRfSVNfVVJJX1JFU1BPTlNFKHJlc3BvbnNlKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShX
RUJLSVRfSVNfVVJJX1JFU1BPTlNFKHJlc3BvbnNlKSk7CiAgICAgQVNTRVJUX0NNUF9DU1RSSU5H
KHdlYmtpdF91cmlfcmVzcG9uc2VfZ2V0X3VyaShyZXNwb25zZSksID09LCBrU2VydmVyLT5nZXRV
UklGb3JQYXRoKCIvIikpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19t
aW1lX3R5cGUodGVzdC0+bV93ZWJWaWV3LCB3ZWJraXRfdXJpX3Jlc3BvbnNlX2dldF9taW1lX3R5
cGUocmVzcG9uc2UpKSA9PQorICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfd2ViX3ZpZXdfY2Fu
X3Nob3dfbWltZV90eXBlKHRlc3QtPm1fd2ViVmlldywgd2Via2l0X3VyaV9yZXNwb25zZV9nZXRf
bWltZV90eXBlKHJlc3BvbnNlKSksID09LAogICAgICAgICB3ZWJraXRfcmVzcG9uc2VfcG9saWN5
X2RlY2lzaW9uX2lzX21pbWVfdHlwZV9zdXBwb3J0ZWQoZGVjaXNpb24pKTsKIAogICAgIHRlc3Qt
Pm1fcmVzcG9uZFRvUG9saWN5RGVjaXNpb25Bc3luY2hyb25vdXNseSA9IHRydWU7CkBAIC0yMzUs
NyArMjM1LDcgQEAgc3RhdGljIHZvaWQgdGVzdE5ld1dpbmRvd1BvbGljeShQb2xpY3lDbGllbnRU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPm1fcG9saWN5RGVjaXNpb25SZXNw
b25zZSA9IFBvbGljeUNsaWVudFRlc3Q6OlVzZTsKICAgICB0ZXN0LT5sb2FkSHRtbCh3aW5kb3dP
cGVuaW5nSFRNTCwgImh0dHA6Ly93ZWJraXRndGsub3JnLyIpOwogICAgIHRlc3QtPndhaXQoMSk7
Ci0gICAgZ19hc3NlcnQoZGF0YS50cmllZFRvT3BlbldpbmRvdyk7CisgICAgZ19hc3NlcnRfdHJ1
ZShkYXRhLnRyaWVkVG9PcGVuV2luZG93KTsKIAogICAgIFdlYktpdE5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbiogZGVjaXNpb24gPSBXRUJLSVRfTkFWSUdBVElPTl9QT0xJQ1lfREVDSVNJT04odGVz
dC0+bV9wcmV2aW91c1BvbGljeURlY2lzaW9uLmdldCgpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIo
d2Via2l0X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uX2dldF9mcmFtZV9uYW1lKGRlY2lzaW9u
KSwgPT0sICJfYmxhbmsiKTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0TmV3
V2luZG93UG9saWN5KFBvbGljeUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAg
dGVzdC0+bV9wb2xpY3lEZWNpc2lvblJlc3BvbnNlID0gUG9saWN5Q2xpZW50VGVzdDo6SWdub3Jl
OwogICAgIHRlc3QtPmxvYWRIdG1sKHdpbmRvd09wZW5pbmdIVE1MLCAiaHR0cDovL3dlYmtpdGd0
ay5vcmcvIik7CiAgICAgdGVzdC0+d2FpdCguMik7Ci0gICAgZ19hc3NlcnQoIWRhdGEudHJpZWRU
b09wZW5XaW5kb3cpOworICAgIGdfYXNzZXJ0X2ZhbHNlKGRhdGEudHJpZWRUb09wZW5XaW5kb3cp
OwogfQogCiBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNv
dXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENs
aWVudENvbnRleHQqLCBncG9pbnRlcikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0U2VjdXJpdHlPcmlnaW4uY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAK
aW5kZXggMWJhZmQ3ZTJkYjU4OGVmYzkxNzI0ZWNkOGQ2ODRiOTdkOWYyNWM5MS4uNWRjNzRjNzc5
YmVmMzNlMWE0N2YzOGJlNzkxYjlhMzZhNzY2MzA0OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZWN1cml0eU9yaWdpbi5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRTZWN1cml0
eU9yaWdpbi5jcHAKQEAgLTI1LDEwNSArMjUsMTA1IEBACiBzdGF0aWMgdm9pZCB0ZXN0U2VjdXJp
dHlPcmlnaW5CYXNpY0NvbnN0cnVjdG9yKFRlc3QqLCBnY29uc3Rwb2ludGVyKQogewogICAgIFdl
YktpdFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ldygi
aHR0cCIsICIxMjcuMC4wLjEiLCAxMjM0KTsKLSAgICBnX2Fzc2VydChvcmlnaW4pOworICAgIGdf
YXNzZXJ0X25vbm51bGwob3JpZ2luKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGFzU3RyaW5nKHdl
YmtpdF9zZWN1cml0eV9vcmlnaW5fdG9fc3RyaW5nKG9yaWdpbikpOwogICAgIGdfYXNzZXJ0X2Nt
cHN0cihhc1N0cmluZy5nZXQoKSwgPT0sICJodHRwOi8vMTI3LjAuMC4xOjEyMzQiKTsKICAgICBn
X2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wob3JpZ2lu
KSwgPT0sICJodHRwIik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmln
aW5fZ2V0X2hvc3Qob3JpZ2luKSwgPT0sICIxMjcuMC4wLjEiKTsKICAgICBnX2Fzc2VydF9jbXBp
bnQod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmlnaW4pLCA9PSwgMTIzNCk7Ci0g
ICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdpbikpOwor
ICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdp
bikpOwogICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKIH0KIAogc3Rh
dGljIHZvaWQgdGVzdFNlY3VyaXR5T3JpZ2luVVJJQ29uc3RydWN0b3IoVGVzdCosIGdjb25zdHBv
aW50ZXIpCiB7CiAgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IHdlYmtpdF9zZWN1
cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoImh0dHA6Ly8xMjcuMC4wLjE6MTIzNCIpOwotICAgIGdf
YXNzZXJ0KG9yaWdpbik7CisgICAgZ19hc3NlcnRfbm9ubnVsbChvcmlnaW4pOwogICAgIEdVbmlx
dWVQdHI8Y2hhcj4gYXNTdHJpbmcod2Via2l0X3NlY3VyaXR5X29yaWdpbl90b19zdHJpbmcob3Jp
Z2luKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGFzU3RyaW5nLmdldCgpLCA9PSwgImh0dHA6Ly8x
MjcuMC4wLjE6MTIzNCIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX2dldF9wcm90b2NvbChvcmlnaW4pLCA9PSwgImh0dHAiKTsKICAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pLCA9PSwgIjEyNy4wLjAu
MSIpOwogICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0
KG9yaWdpbiksID09LCAxMjM0KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NlY3VyaXR5X29yaWdp
bl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NlY3VyaXR5
X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CiAgICAgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91
bnJlZihvcmlnaW4pOwogCiAgICAgb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXdf
Zm9yX3VyaSgiaHR0cDovLzEyNy4wLjAuMToxMjM0L3RoaXMvcGF0aC8/c2hvdWxkPWJlI2lnbm9y
ZWQiKTsKLSAgICBnX2Fzc2VydChvcmlnaW4pOworICAgIGdfYXNzZXJ0X25vbm51bGwob3JpZ2lu
KTsKICAgICBhc1N0cmluZy5yZXNldCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3RvX3N0cmluZyhv
cmlnaW4pKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoYXNTdHJpbmcuZ2V0KCksID09LCAiaHR0cDov
LzEyNy4wLjAuMToxMjM0Iik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9v
cmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiksID09LCAiaHR0cCIpOwogICAgIGdfYXNzZXJ0X2Nt
cHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdpbiksID09LCAiMTI3LjAu
MC4xIik7CiAgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Bv
cnQob3JpZ2luKSwgPT0sIDEyMzQpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX2lzX29wYXF1ZShvcmlnaW4pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2VjdXJp
dHlfb3JpZ2luX2lzX29wYXF1ZShvcmlnaW4pKTsKICAgICB3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X3VucmVmKG9yaWdpbik7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RTZWN1cml0eU9yaWdpbkRlZmF1
bHRQb3J0KFRlc3QqLCBnY29uc3Rwb2ludGVyKQogewogICAgIFdlYktpdFNlY3VyaXR5T3JpZ2lu
KiBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX25ldygiaHR0cCIsICIxMjcuMC4wLjEi
LCAwKTsKLSAgICBnX2Fzc2VydChvcmlnaW4pOworICAgIGdfYXNzZXJ0X25vbm51bGwob3JpZ2lu
KTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGFzU3RyaW5nKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5f
dG9fc3RyaW5nKG9yaWdpbikpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihhc1N0cmluZy5nZXQoKSwg
PT0sICJodHRwOi8vMTI3LjAuMC4xIik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1
cml0eV9vcmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiksID09LCAiaHR0cCIpOwogICAgIGdfYXNz
ZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdpbiksID09LCAi
MTI3LjAuMC4xIik7CiAgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5f
Z2V0X3BvcnQob3JpZ2luKSwgPT0sIDApOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2VjdXJpdHlf
b3JpZ2luX2lzX29wYXF1ZShvcmlnaW4pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2Vj
dXJpdHlfb3JpZ2luX2lzX29wYXF1ZShvcmlnaW4pKTsKICAgICB3ZWJraXRfc2VjdXJpdHlfb3Jp
Z2luX3VucmVmKG9yaWdpbik7CiAKICAgICBvcmlnaW4gPSB3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X25ldygiaHR0cCIsICIxMjcuMC4wLjEiLCA4MCk7Ci0gICAgZ19hc3NlcnQob3JpZ2luKTsKKyAg
ICBnX2Fzc2VydF9ub25udWxsKG9yaWdpbik7CiAgICAgYXNTdHJpbmcucmVzZXQod2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl90b19zdHJpbmcob3JpZ2luKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGFz
U3RyaW5nLmdldCgpLCA9PSwgImh0dHA6Ly8xMjcuMC4wLjEiKTsKICAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wob3JpZ2luKSwgPT0sICJodHRw
Iik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qo
b3JpZ2luKSwgPT0sICIxMjcuMC4wLjEiKTsKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X3Nl
Y3VyaXR5X29yaWdpbl9nZXRfcG9ydChvcmlnaW4pLCA9PSwgMCk7Ci0gICAgZ19hc3NlcnQoIXdl
YmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdpbikpOworICAgIGdfYXNzZXJ0X2Zh
bHNlKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5faXNfb3BhcXVlKG9yaWdpbikpOwogICAgIHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKIAogICAgIG9yaWdpbiA9IHdlYmtpdF9z
ZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoImh0dHA6Ly8xMjcuMC4wLjEiKTsKLSAgICBnX2Fz
c2VydChvcmlnaW4pOworICAgIGdfYXNzZXJ0X25vbm51bGwob3JpZ2luKTsKICAgICBhc1N0cmlu
Zy5yZXNldCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3RvX3N0cmluZyhvcmlnaW4pKTsKICAgICBn
X2Fzc2VydF9jbXBzdHIoYXNTdHJpbmcuZ2V0KCksID09LCAiaHR0cDovLzEyNy4wLjAuMSIpOwog
ICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wcm90b2NvbChv
cmlnaW4pLCA9PSwgImh0dHAiKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5
X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pLCA9PSwgIjEyNy4wLjAuMSIpOwogICAgIGdfYXNzZXJ0
X2NtcGludCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0KG9yaWdpbiksID09LCAwKTsK
LSAgICBnX2Fzc2VydCghd2Via2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7
CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3Jp
Z2luKSk7CiAgICAgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZihvcmlnaW4pOwogCiAgICAg
b3JpZ2luID0gd2Via2l0X3NlY3VyaXR5X29yaWdpbl9uZXdfZm9yX3VyaSgiaHR0cDovLzEyNy4w
LjAuMTo4MCIpOwotICAgIGdfYXNzZXJ0KG9yaWdpbik7CisgICAgZ19hc3NlcnRfbm9ubnVsbChv
cmlnaW4pOwogICAgIGFzU3RyaW5nLnJlc2V0KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdG9fc3Ry
aW5nKG9yaWdpbikpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihhc1N0cmluZy5nZXQoKSwgPT0sICJo
dHRwOi8vMTI3LjAuMC4xIik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZWN1cml0eV9v
cmlnaW5fZ2V0X3Byb3RvY29sKG9yaWdpbiksID09LCAiaHR0cCIpOwogICAgIGdfYXNzZXJ0X2Nt
cHN0cih3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdpbiksID09LCAiMTI3LjAu
MC4xIik7CiAgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3Bv
cnQob3JpZ2luKSwgPT0sIDApOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2VjdXJpdHlfb3JpZ2lu
X2lzX29wYXF1ZShvcmlnaW4pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2VjdXJpdHlf
b3JpZ2luX2lzX29wYXF1ZShvcmlnaW4pKTsKICAgICB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX3Vu
cmVmKG9yaWdpbik7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RTZWN1cml0eU9yaWdpbkZpbGVVUkko
VGVzdCosIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdp
biA9IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoImZpbGU6Ly8vYWJjZGVmZyIp
OwotICAgIGdfYXNzZXJ0KG9yaWdpbik7CisgICAgZ19hc3NlcnRfbm9ubnVsbChvcmlnaW4pOwog
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gYXNTdHJpbmcod2Via2l0X3NlY3VyaXR5X29yaWdpbl90b19z
dHJpbmcob3JpZ2luKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGFzU3RyaW5nLmdldCgpLCA9PSwg
ImZpbGU6Ly8iKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3NlY3VyaXR5X29yaWdpbl9n
ZXRfcHJvdG9jb2wob3JpZ2luKSwgPT0sICJmaWxlIik7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9z
ZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJr
aXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdpbikpOwogICAgIGdfYXNzZXJ0X2NtcGlu
dCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0KG9yaWdpbiksID09LCAwKTsKLSAgICBn
X2Fzc2VydCghd2Via2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7CisgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X3NlY3VyaXR5X29yaWdpbl9pc19vcGFxdWUob3JpZ2luKSk7
CiAgICAgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZihvcmlnaW4pOwogfQogCiBzdGF0aWMg
dm9pZCB0ZXN0T3BhcXVlU2VjdXJpdHlPcmlnaW4oVGVzdCosIGdjb25zdHBvaW50ZXIpCiB7CiAg
ICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5f
bmV3X2Zvcl91cmkoImRhdGE6TGFsaSBobyEiKTsKLSAgICBnX2Fzc2VydChvcmlnaW4pOworICAg
IGdfYXNzZXJ0X25vbm51bGwob3JpZ2luKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGFzU3RyaW5n
KHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdG9fc3RyaW5nKG9yaWdpbikpOwotICAgIGdfYXNzZXJ0
KCFhc1N0cmluZyk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X3By
b3RvY29sKG9yaWdpbikpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dl
dF9ob3N0KG9yaWdpbikpOworICAgIGdfYXNzZXJ0X251bGwoYXNTdHJpbmcpOworICAgIGdfYXNz
ZXJ0X251bGwod2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfcHJvdG9jb2wob3JpZ2luKSk7Cisg
ICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdpbikp
OwogICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9wb3J0KG9y
aWdpbiksID09LCAwKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2lzX29w
YXF1ZShvcmlnaW4pKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZWN1cml0eV9vcmlnaW5f
aXNfb3BhcXVlKG9yaWdpbikpOwogICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3Jp
Z2luKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJLaXRTZXR0aW5ncy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYktpdFNldHRpbmdzLmNwcAppbmRleCBjNTliNTEzNmEyZjVkY2E0YjFi
NmJjNmI2YzBhZDZiY2IxNWE5NWRkLi4zZWRkNTNjZWQ5N2QzMmU5OTM0YWRhYTU2YmQ2MTI5NDM3
ODhlNDlmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFdlYktpdFNldHRpbmdzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYktpdFNldHRpbmdzLmNwcApAQCAtNDIsNjQgKzQyLDY0IEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJLaXRTZXR0aW5ncyhUZXN0KiwgZ2NvbnN0cG9pbnRlcikKICAgICBXZWJL
aXRTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRfc2V0dGluZ3NfbmV3KCk7CiAKICAgICAvLyBK
YXZhU2NyaXB0IGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0
dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1
ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRpbmdzKSk7CiAgICAg
d2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncywgRkFMU0UpOwot
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRp
bmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2
YXNjcmlwdChzZXR0aW5ncykpOwogCiAgICAgLy8gQnkgZGVmYXVsdCBhdXRvLWxvYWQtaW1hZ2Ug
aXMgdHJ1ZS4KLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFn
ZXMoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfYXV0
b19sb2FkX2ltYWdlcyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfYXV0b19s
b2FkX2ltYWdlcyhzZXR0aW5ncywgRkFMU0UpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3
ZWJraXRfc2V0dGluZ3NfZ2V0X2F1dG9fbG9hZF9pbWFnZXMoc2V0dGluZ3MpKTsKIAogICAgIC8v
IGxvYWQtaWNvbnMtaWdub3JpbmctaW1hZ2UtbG9hZC1zZXR0aW5nIGlzIGZhbHNlIGJ5IGRlZmF1
bHQuCi0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfbG9hZF9pY29uc19pZ25vcmlu
Z19pbWFnZV9sb2FkX3NldHRpbmcoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2xvYWRfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9zZXR0aW5nKHNl
dHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9sb2FkX2ljb25zX2lnbm9yaW5nX2lt
YWdlX2xvYWRfc2V0dGluZyhzZXR0aW5ncywgVFJVRSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3Nl
dHRpbmdzX2dldF9sb2FkX2ljb25zX2lnbm9yaW5nX2ltYWdlX2xvYWRfc2V0dGluZyhzZXR0aW5n
cykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9sb2FkX2ljb25zX2ln
bm9yaW5nX2ltYWdlX2xvYWRfc2V0dGluZyhzZXR0aW5ncykpOwogICAgIAogICAgIC8vIE9mZmxp
bmUgYXBwbGljYXRpb24gY2FjaGUgaXMgdHJ1ZSBieSBkZWZhdWx0LgotICAgIGdfYXNzZXJ0KHdl
YmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNl
dHRpbmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9v
ZmZsaW5lX3dlYl9hcHBsaWNhdGlvbl9jYWNoZShzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0
aW5nc19zZXRfZW5hYmxlX29mZmxpbmVfd2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzLCBG
QUxTRSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX29mZmxpbmVf
d2ViX2FwcGxpY2F0aW9uX2NhY2hlKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X3NldHRpbmdzX2dldF9lbmFibGVfb2ZmbGluZV93ZWJfYXBwbGljYXRpb25fY2FjaGUoc2V0
dGluZ3MpKTsKIAogICAgIC8vIExvY2FsIHN0b3JhZ2UgaXMgZW5hYmxlIGJ5IGRlZmF1bHQuCi0g
ICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFn
ZShzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfaHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19z
ZXRfZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Uoc2V0dGluZ3MsIEZBTFNFKTsKLSAgICBnX2Fz
c2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZShzZXR0
aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h0
bWw1X2xvY2FsX3N0b3JhZ2Uoc2V0dGluZ3MpKTsKIAogICAgIC8vIEhUTUw1IGRhdGFiYXNlIGlz
IGVuYWJsZWQgYnkgZGVmYXVsdC4KLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9odG1sNV9kYXRhYmFzZShzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfaHRtbDVfZGF0YWJhc2Uoc2V0dGluZ3MpKTsKICAgICB3ZWJr
aXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShzZXR0aW5ncywgRkFMU0UpOwot
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9odG1sNV9kYXRhYmFzZShz
ZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X2h0bWw1X2RhdGFiYXNlKHNldHRpbmdzKSk7CiAKICAgICAvLyBYU1MgQXVkaXRvciBpcyBlbmFi
bGVkIGJ5IGRlZmF1bHQuCi0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
eHNzX2F1ZGl0b3Ioc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5n
c19nZXRfZW5hYmxlX3hzc19hdWRpdG9yKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdz
X3NldF9lbmFibGVfeHNzX2F1ZGl0b3Ioc2V0dGluZ3MsIEZBTFNFKTsKLSAgICBnX2Fzc2VydCgh
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfeHNzX2F1ZGl0b3Ioc2V0dGluZ3MpKTsKKyAgICBn
X2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV94c3NfYXVkaXRvcihzZXR0
aW5ncykpOwogCiAgICAgLy8gRnJhbWUgZmxhdHRlbmluZyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0
LgotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9mcmFtZV9mbGF0dGVu
aW5nKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9l
bmFibGVfZnJhbWVfZmxhdHRlbmluZyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19z
ZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3MsIFRSVUUpOwotICAgIGdfYXNzZXJ0
KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0ZW5pbmcoc2V0dGluZ3MpKTsK
KyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2ZyYW1lX2ZsYXR0
ZW5pbmcoc2V0dGluZ3MpKTsKIAogICAgIC8vIFBsdWdpbnMgYXJlIGVuYWJsZWQgYnkgZGVmYXVs
dC4KLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVnaW5zKHNldHRp
bmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9wbHVn
aW5zKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcGx1Z2lucyhz
ZXR0aW5ncywgRkFMU0UpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJs
ZV9wbHVnaW5zKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdz
X2dldF9lbmFibGVfcGx1Z2lucyhzZXR0aW5ncykpOwogCiAgICAgLy8gSmF2YSBpcyBlbmFibGVk
IGJ5IGRlZmF1bHQuCi0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2
YShzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfamF2YShzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX2phdmEo
c2V0dGluZ3MsIEZBTFNFKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfamF2YShzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX2phdmEoc2V0dGluZ3MpKTsKIAogICAgIC8vIEJ5IGRlZmF1bHQsIEphdmFTY3Jp
cHQgY2FuIG9wZW4gd2luZG93cyBhdXRvbWF0aWNhbGx5IGlzIGRpc2FibGVkLgotICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2phdmFzY3JpcHRfY2FuX29wZW5fd2luZG93c19hdXRv
bWF0aWNhbGx5KHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdz
X2dldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGljYWxseShzZXR0aW5ncykp
OwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1
dG9tYXRpY2FsbHkoc2V0dGluZ3MsIFRSVUUpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5n
c19nZXRfamF2YXNjcmlwdF9jYW5fb3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGluZ3Mp
KTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5f
b3Blbl93aW5kb3dzX2F1dG9tYXRpY2FsbHkoc2V0dGluZ3MpKTsKIAogICAgIC8vIEJ5IGRlZmF1
bHQgaHlwZXIgbGluayBhdWRpdGluZyBpcyBkaXNhYmxlZC4KLSAgICBnX2Fzc2VydCghd2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0aW5nKHNldHRpbmdzKSk7CisgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfaHlwZXJsaW5rX2F1ZGl0
aW5nKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfaHlwZXJsaW5r
X2F1ZGl0aW5nKHNldHRpbmdzLCBUUlVFKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV9oeXBlcmxpbmtfYXVkaXRpbmcoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90
cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2h5cGVybGlua19hdWRpdGluZyhzZXR0aW5n
cykpOwogCiAgICAgLy8gRGVmYXVsdCBmb250IGZhbWlseSBpcyAic2Fucy1zZXJpZiIuCiAgICAg
Z19hc3NlcnRfY21wc3RyKHdlYmtpdF9zZXR0aW5nc19nZXRfZGVmYXVsdF9mb250X2ZhbWlseShz
ZXR0aW5ncyksID09LCAic2Fucy1zZXJpZiIpOwpAQCAtMjAyLDE0MiArMjAyLDE0MiBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViS2l0U2V0dGluZ3MoVGVzdCosIGdjb25zdHBvaW50ZXIpCiAKICNpZiBQ
TEFURk9STShHVEspCiAgICAgR19HTlVDX0JFR0lOX0lHTk9SRV9ERVBSRUNBVElPTlM7Ci0gICAg
Z19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3ByaXZhdGVfYnJvd3Npbmcoc2V0
dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9w
cml2YXRlX2Jyb3dzaW5nKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFi
bGVfcHJpdmF0ZV9icm93c2luZyhzZXR0aW5ncywgVFJVRSk7Ci0gICAgZ19hc3NlcnQod2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyhzZXR0aW5ncykpOworICAgIGdf
YXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyhz
ZXR0aW5ncykpOwogICAgIEdfR05VQ19FTkRfSUdOT1JFX0RFUFJFQ0FUSU9OUzsKICNlbmRpZgog
Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2RldmVsb3Blcl9leHRy
YXMoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2Vu
YWJsZV9kZXZlbG9wZXJfZXh0cmFzKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3Nl
dF9lbmFibGVfZGV2ZWxvcGVyX2V4dHJhcyhzZXR0aW5ncywgVFJVRSk7Ci0gICAgZ19hc3NlcnQo
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZGV2ZWxvcGVyX2V4dHJhcyhzZXR0aW5ncykpOwor
ICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZGV2ZWxvcGVyX2V4
dHJhcyhzZXR0aW5ncykpOwogCi0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfcmVzaXphYmxlX3RleHRfYXJlYXMoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdl
YmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3Jlc2l6YWJsZV90ZXh0X2FyZWFzKHNldHRpbmdzKSk7
CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfcmVzaXphYmxlX3RleHRfYXJlYXMoc2V0
dGluZ3MsIEZBTFNFKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
cmVzaXphYmxlX3RleHRfYXJlYXMoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9yZXNpemFibGVfdGV4dF9hcmVhcyhzZXR0aW5ncykpOwog
Ci0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfdGFic190b19saW5rcyhz
ZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
dGFic190b19saW5rcyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxl
X3RhYnNfdG9fbGlua3Moc2V0dGluZ3MsIEZBTFNFKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfdGFic190b19saW5rcyhzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0
X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3RhYnNfdG9fbGlua3Moc2V0dGluZ3Mp
KTsKIAotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9kbnNfcHJlZmV0
Y2hpbmcoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0
X2VuYWJsZV9kbnNfcHJlZmV0Y2hpbmcoc2V0dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nf
c2V0X2VuYWJsZV9kbnNfcHJlZmV0Y2hpbmcoc2V0dGluZ3MsIFRSVUUpOwotICAgIGdfYXNzZXJ0
KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2Ruc19wcmVmZXRjaGluZyhzZXR0aW5ncykpOwor
ICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZG5zX3ByZWZldGNo
aW5nKHNldHRpbmdzKSk7CiAKICAgICAvLyBDYXJldCBicm93c2luZyBpcyBkaXNhYmxlZCBieSBk
ZWZhdWx0LgotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9jYXJldF9i
cm93c2luZyhzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19n
ZXRfZW5hYmxlX2NhcmV0X2Jyb3dzaW5nKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdz
X3NldF9lbmFibGVfY2FyZXRfYnJvd3Npbmcoc2V0dGluZ3MsIFRSVUUpOwotICAgIGdfYXNzZXJ0
KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2NhcmV0X2Jyb3dzaW5nKHNldHRpbmdzKSk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9jYXJldF9icm93c2lu
ZyhzZXR0aW5ncykpOwogCiAgICAgLy8gRnVsbHNjcmVlbiBKYXZhU2NyaXB0IEFQSSBpcyBlbmFi
bGVkIGJ5IGRlZmF1bHQuCi0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVf
ZnVsbHNjcmVlbihzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdz
X2dldF9lbmFibGVfZnVsbHNjcmVlbihzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19z
ZXRfZW5hYmxlX2Z1bGxzY3JlZW4oc2V0dGluZ3MsIEZBTFNFKTsKLSAgICBnX2Fzc2VydCghd2Vi
a2l0X3NldHRpbmdzX2dldF9lbmFibGVfZnVsbHNjcmVlbihzZXR0aW5ncykpOworICAgIGdfYXNz
ZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2Z1bGxzY3JlZW4oc2V0dGluZ3Mp
KTsKIAogICAgIC8vIFByaW50IGJhY2tncm91bmRzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdAotICAg
IGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfcHJpbnRfYmFja2dyb3VuZHMoc2V0dGluZ3Mp
KTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfcHJpbnRfYmFja2dyb3Vu
ZHMoc2V0dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X3ByaW50X2JhY2tncm91bmRz
KHNldHRpbmdzLCBGQUxTRSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfcHJp
bnRfYmFja2dyb3VuZHMoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0
dGluZ3NfZ2V0X3ByaW50X2JhY2tncm91bmRzKHNldHRpbmdzKSk7CiAKICAgICAvLyBXZWJBdWRp
byBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3Nf
Z2V0X2VuYWJsZV93ZWJhdWRpbyhzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtp
dF9zZXR0aW5nc19nZXRfZW5hYmxlX3dlYmF1ZGlvKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3Nl
dHRpbmdzX3NldF9lbmFibGVfd2ViYXVkaW8oc2V0dGluZ3MsIFRSVUUpOwotICAgIGdfYXNzZXJ0
KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3dlYmF1ZGlvKHNldHRpbmdzKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV93ZWJhdWRpbyhzZXR0aW5ncykp
OwogCiAgICAgLy8gV2ViR0wgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KLSAgICBnX2Fzc2VydCgh
d2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfd2ViZ2woc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2Vy
dF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV93ZWJnbChzZXR0aW5ncykpOwogICAg
IHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3dlYmdsKHNldHRpbmdzLCBUUlVFKTsKLSAgICBn
X2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV93ZWJnbChzZXR0aW5ncykpOworICAg
IGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfd2ViZ2woc2V0dGluZ3Mp
KTsKIAogICAgIC8vIEFsbG93IE1vZGFsIERpYWxvZ3MgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4K
LSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19tb2RhbF9kaWFsb2dzKHNl
dHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19t
b2RhbF9kaWFsb2dzKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9hbGxvd19t
b2RhbF9kaWFsb2dzKHNldHRpbmdzLCBUUlVFKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2FsbG93X21vZGFsX2RpYWxvZ3Moc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVl
KHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3dfbW9kYWxfZGlhbG9ncyhzZXR0aW5ncykpOwogCiAg
ICAgLy8gWm9vbSB0ZXh0IG9ubHkgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdC4KLSAgICBnX2Fzc2Vy
dCghd2Via2l0X3NldHRpbmdzX2dldF96b29tX3RleHRfb25seShzZXR0aW5ncykpOworICAgIGdf
YXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfem9vbV90ZXh0X29ubHkoc2V0dGluZ3Mp
KTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X3pvb21fdGV4dF9vbmx5KHNldHRpbmdzLCBUUlVF
KTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9vbmx5KHNldHRp
bmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X3pvb21fdGV4dF9v
bmx5KHNldHRpbmdzKSk7CiAKICAgICAvLyBCeSBkZWZhdWx0LCBKYXZhU2NyaXB0IGNhbm5vdCBh
Y2Nlc3MgdGhlIGNsaXBib2FyZC4KLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9q
YXZhc2NyaXB0X2Nhbl9hY2Nlc3NfY2xpcGJvYXJkKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9qYXZhc2NyaXB0X2Nhbl9hY2Nlc3NfY2xpcGJvYXJk
KHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9hY2Nl
c3NfY2xpcGJvYXJkKHNldHRpbmdzLCBUUlVFKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGlu
Z3NfZ2V0X2phdmFzY3JpcHRfY2FuX2FjY2Vzc19jbGlwYm9hcmQoc2V0dGluZ3MpKTsKKyAgICBn
X2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfamF2YXNjcmlwdF9jYW5fYWNjZXNzX2Ns
aXBib2FyZChzZXR0aW5ncykpOwogCiAgICAgLy8gQnkgZGVmYXVsdCwgbWVkaWEgcGxheWJhY2sg
ZG9lc24ndCByZXF1aXJlIHVzZXIgZ2VzdHVyZXMuCi0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0
aW5nc19nZXRfbWVkaWFfcGxheWJhY2tfcmVxdWlyZXNfdXNlcl9nZXN0dXJlKHNldHRpbmdzKSk7
CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9tZWRpYV9wbGF5YmFja19y
ZXF1aXJlc191c2VyX2dlc3R1cmUoc2V0dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0
X21lZGlhX3BsYXliYWNrX3JlcXVpcmVzX3VzZXJfZ2VzdHVyZShzZXR0aW5ncywgVFJVRSk7Ci0g
ICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9tZWRpYV9wbGF5YmFja19yZXF1aXJlc191
c2VyX2dlc3R1cmUoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5n
c19nZXRfbWVkaWFfcGxheWJhY2tfcmVxdWlyZXNfdXNlcl9nZXN0dXJlKHNldHRpbmdzKSk7CiAK
ICAgICAvLyBCeSBkZWZhdWx0LCBpbmxpbmUgbWVkaWEgcGxheWJhY2sgaXMgYWxsb3dlZAotICAg
IGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfbWVkaWFfcGxheWJhY2tfYWxsb3dzX2lubGlu
ZShzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9tZWRp
YV9wbGF5YmFja19hbGxvd3NfaW5saW5lKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdz
X3NldF9tZWRpYV9wbGF5YmFja19hbGxvd3NfaW5saW5lKHNldHRpbmdzLCBGQUxTRSk7Ci0gICAg
Z19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfbWVkaWFfcGxheWJhY2tfYWxsb3dzX2lubGlu
ZShzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfbWVk
aWFfcGxheWJhY2tfYWxsb3dzX2lubGluZShzZXR0aW5ncykpOwogCiAgICAgLy8gQnkgZGVmYXVs
dCwgZGVidWcgaW5kaWNhdG9ycyBhcmUgZGlzYWJsZWQuCi0gICAgZ19hc3NlcnQoIXdlYmtpdF9z
ZXR0aW5nc19nZXRfZHJhd19jb21wb3NpdGluZ19pbmRpY2F0b3JzKHNldHRpbmdzKSk7CisgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9kcmF3X2NvbXBvc2l0aW5nX2luZGlj
YXRvcnMoc2V0dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2RyYXdfY29tcG9zaXRp
bmdfaW5kaWNhdG9ycyhzZXR0aW5ncywgVFJVRSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3NldHRp
bmdzX2dldF9kcmF3X2NvbXBvc2l0aW5nX2luZGljYXRvcnMoc2V0dGluZ3MpKTsKKyAgICBnX2Fz
c2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZHJhd19jb21wb3NpdGluZ19pbmRpY2F0b3Jz
KHNldHRpbmdzKSk7CiAKICAgICAvLyBCeSBkZWZhdWx0LCBzaXRlIHNwZWNpZmljIHF1aXJrcyBh
cmUgZW5hYmxlZC4KLSAgICBnX2Fzc2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9zaXRl
X3NwZWNpZmljX3F1aXJrcyhzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3Nl
dHRpbmdzX2dldF9lbmFibGVfc2l0ZV9zcGVjaWZpY19xdWlya3Moc2V0dGluZ3MpKTsKICAgICB3
ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9zaXRlX3NwZWNpZmljX3F1aXJrcyhzZXR0aW5ncywg
RkFMU0UpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9zaXRlX3Nw
ZWNpZmljX3F1aXJrcyhzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0
aW5nc19nZXRfZW5hYmxlX3NpdGVfc3BlY2lmaWNfcXVpcmtzKHNldHRpbmdzKSk7CiAKICAgICAv
LyBCeSBkZWZhdWx0LCBwYWdlIGNhY2hlIGlzIGVuYWJsZWQuCi0gICAgZ19hc3NlcnQod2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfcGFnZV9jYWNoZShzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0
X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcGFnZV9jYWNoZShzZXR0aW5ncykpOwog
ICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfZW5hYmxlX3BhZ2VfY2FjaGUoc2V0dGluZ3MsIEZBTFNF
KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcGFnZV9jYWNoZShz
ZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxl
X3BhZ2VfY2FjaGUoc2V0dGluZ3MpKTsKIAogICAgIC8vIEJ5IGRlZmF1bHQsIHNtb290aCBzY3Jv
bGxpbmcgaXMgZGlzYWJsZWQuCi0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX3Ntb290aF9zY3JvbGxpbmcoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJr
aXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9zbW9vdGhfc2Nyb2xsaW5nKHNldHRpbmdzKSk7CiAgICAg
d2Via2l0X3NldHRpbmdzX3NldF9lbmFibGVfc21vb3RoX3Njcm9sbGluZyhzZXR0aW5ncywgVFJV
RSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfc21vb3RoX3Njcm9s
bGluZyhzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9l
bmFibGVfc21vb3RoX3Njcm9sbGluZyhzZXR0aW5ncykpOwogCiAgICAgLy8gQnkgZGVmYXVsdCwg
YWNjZWxlcmF0ZWQgMkQgY2FudmFzIGlzIGRpc2FibGVkLgotICAgIGdfYXNzZXJ0KCF3ZWJraXRf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9hY2NlbGVyYXRlZF8yZF9jYW52YXMoc2V0dGluZ3MpKTsKKyAg
ICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9hY2NlbGVyYXRlZF8y
ZF9jYW52YXMoc2V0dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9hY2Nl
bGVyYXRlZF8yZF9jYW52YXMoc2V0dGluZ3MsIFRSVUUpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9z
ZXR0aW5nc19nZXRfZW5hYmxlX2FjY2VsZXJhdGVkXzJkX2NhbnZhcyhzZXR0aW5ncykpOworICAg
IGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfYWNjZWxlcmF0ZWRfMmRf
Y2FudmFzKHNldHRpbmdzKSk7CiAKICAgICAvLyBCeSBkZWZhdWx0LCB3cml0aW5nIG9mIGNvbnNv
bGUgbWVzc2FnZXMgdG8gc3Rkb3V0IGlzIGRpc2FibGVkLgotICAgIGdfYXNzZXJ0KCF3ZWJraXRf
c2V0dGluZ3NfZ2V0X2VuYWJsZV93cml0ZV9jb25zb2xlX21lc3NhZ2VzX3RvX3N0ZG91dChzZXR0
aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3dy
aXRlX2NvbnNvbGVfbWVzc2FnZXNfdG9fc3Rkb3V0KHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3Nl
dHRpbmdzX3NldF9lbmFibGVfd3JpdGVfY29uc29sZV9tZXNzYWdlc190b19zdGRvdXQoc2V0dGlu
Z3MsIFRSVUUpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3dyaXRl
X2NvbnNvbGVfbWVzc2FnZXNfdG9fc3Rkb3V0KHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfdHJ1
ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV93cml0ZV9jb25zb2xlX21lc3NhZ2VzX3RvX3N0
ZG91dChzZXR0aW5ncykpOwogCiAgICAgLy8gTWVkaWFTdHJlYW0gaXMgZGlzYWJsZWQgYnkgZGVm
YXVsdC4KLSAgICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfbWVkaWFfc3Ry
ZWFtKHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9l
bmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9l
bmFibGVfbWVkaWFfc3RyZWFtKHNldHRpbmdzLCBUUlVFKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRf
c2V0dGluZ3NfZ2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0oc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX21lZGlhX3N0cmVhbShzZXR0aW5ncykp
OwogCiAgICAgLy8gQnkgZGVmYXVsdCwgU3BhdGlhbE5hdmlnYXRpb24gaXMgZGlzYWJsZWQKLSAg
ICBnX2Fzc2VydCghd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfc3BhdGlhbF9uYXZpZ2F0aW9u
KHNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFi
bGVfc3BhdGlhbF9uYXZpZ2F0aW9uKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3Nl
dF9lbmFibGVfc3BhdGlhbF9uYXZpZ2F0aW9uKHNldHRpbmdzLCBUUlVFKTsKLSAgICBnX2Fzc2Vy
dCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9zcGF0aWFsX25hdmlnYXRpb24oc2V0dGluZ3Mp
KTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX3NwYXRpYWxf
bmF2aWdhdGlvbihzZXR0aW5ncykpOwogCiAgICAgLy8gTWVkaWFTb3VyY2UgaXMgZW5hYmxlZCBi
eSBkZWZhdWx0Ci0gICAgZ19hc3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfbWVkaWFz
b3VyY2Uoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX21lZGlhc291cmNlKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9l
bmFibGVfbWVkaWFzb3VyY2Uoc2V0dGluZ3MsIEZBTFNFKTsKLSAgICBnX2Fzc2VydCghd2Via2l0
X3NldHRpbmdzX2dldF9lbmFibGVfbWVkaWFzb3VyY2Uoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2Vy
dF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9tZWRpYXNvdXJjZShzZXR0aW5ncykp
OwogCiAgICAgLy8gRW5jcnlwdGVkTWVkaWEgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdAotICAgIGdf
YXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9lbmNyeXB0ZWRfbWVkaWEoc2V0dGlu
Z3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9lbmNy
eXB0ZWRfbWVkaWEoc2V0dGluZ3MpKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9l
bmNyeXB0ZWRfbWVkaWEoc2V0dGluZ3MsIFRSVUUpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0
aW5nc19nZXRfZW5hYmxlX2VuY3J5cHRlZF9tZWRpYShzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0
X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfZW5jcnlwdGVkX21lZGlhKHNldHRpbmdz
KSk7CiAKICAgICAvLyBNZWRpYUNhcGFiaWxpdGllcyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0Ci0g
ICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX21lZGlhX2NhcGFiaWxpdGll
cyhzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5h
YmxlX21lZGlhX2NhcGFiaWxpdGllcyhzZXR0aW5ncykpOwogICAgIHdlYmtpdF9zZXR0aW5nc19z
ZXRfZW5hYmxlX21lZGlhX2NhcGFiaWxpdGllcyhzZXR0aW5ncywgVFJVRSk7Ci0gICAgZ19hc3Nl
cnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfbWVkaWFfY2FwYWJpbGl0aWVzKHNldHRpbmdz
KSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9tZWRpYV9j
YXBhYmlsaXRpZXMoc2V0dGluZ3MpKTsKIAogICAgIC8vIEZpbGUgYWNjZXNzIGZyb20gZmlsZSBV
UkxzIGlzIG5vdCBhbGxvd2VkIGJ5IGRlZmF1bHQuCi0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0
aW5nc19nZXRfYWxsb3dfZmlsZV9hY2Nlc3NfZnJvbV9maWxlX3VybHMoc2V0dGluZ3MpKTsKKyAg
ICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X2ZpbGVfYWNjZXNzX2Zy
b21fZmlsZV91cmxzKHNldHRpbmdzKSk7CiAgICAgd2Via2l0X3NldHRpbmdzX3NldF9hbGxvd19m
aWxlX2FjY2Vzc19mcm9tX2ZpbGVfdXJscyhzZXR0aW5ncywgVFJVRSk7Ci0gICAgZ19hc3NlcnQo
d2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19maWxlX2FjY2Vzc19mcm9tX2ZpbGVfdXJscyhzZXR0
aW5ncykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9hbGxvd19maWxl
X2FjY2Vzc19mcm9tX2ZpbGVfdXJscyhzZXR0aW5ncykpOwogCiAgICAgLy8gVW5pdmVyc2FsIGFj
Y2VzcyBmcm9tIGZpbGUgVVJMcyBpcyBub3QgYWxsb3dlZCBieSBkZWZhdWx0LgotICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2FsbG93X3VuaXZlcnNhbF9hY2Nlc3NfZnJvbV9maWxl
X3VybHMoc2V0dGluZ3MpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0
X2FsbG93X3VuaXZlcnNhbF9hY2Nlc3NfZnJvbV9maWxlX3VybHMoc2V0dGluZ3MpKTsKICAgICB3
ZWJraXRfc2V0dGluZ3Nfc2V0X2FsbG93X3VuaXZlcnNhbF9hY2Nlc3NfZnJvbV9maWxlX3VybHMo
c2V0dGluZ3MsIFRSVUUpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfYWxsb3df
dW5pdmVyc2FsX2FjY2Vzc19mcm9tX2ZpbGVfdXJscyhzZXR0aW5ncykpOworICAgIGdfYXNzZXJ0
X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9hbGxvd191bml2ZXJzYWxfYWNjZXNzX2Zyb21fZmls
ZV91cmxzKHNldHRpbmdzKSk7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgLy8gT25kZW1hbmQg
aXMgdGhlIGRlZmF1bHQgaGFyZHdhcmUgYWNjZWxlcmF0aW9uIHBvbGljeS4KQEAgLTM2MSw5ICsz
NjEsOSBAQCB2b2lkIHRlc3RXZWJLaXRTZXR0aW5nc05ld1dpdGhTZXR0aW5ncyhUZXN0KiB0ZXN0
LCBnY29uc3Rwb2ludGVyKQogICAgICAgICAibG9hZC1pY29ucy1pZ25vcmluZy1pbWFnZS1sb2Fk
LXNldHRpbmciLCBUUlVFLAogICAgICAgICBudWxscHRyKSk7CiAgICAgdGVzdC0+YXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChzZXR0aW5ncy5nZXQoKSkpOwot
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRp
bmdzLmdldCgpKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfYXV0b19sb2Fk
X2ltYWdlcyhzZXR0aW5ncy5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19n
ZXRfbG9hZF9pY29uc19pZ25vcmluZ19pbWFnZV9sb2FkX3NldHRpbmcoc2V0dGluZ3MuZ2V0KCkp
KTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2Ny
aXB0KHNldHRpbmdzLmdldCgpKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdz
X2dldF9hdXRvX2xvYWRfaW1hZ2VzKHNldHRpbmdzLmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1
ZSh3ZWJraXRfc2V0dGluZ3NfZ2V0X2xvYWRfaWNvbnNfaWdub3JpbmdfaW1hZ2VfbG9hZF9zZXR0
aW5nKHNldHRpbmdzLmdldCgpKSk7CiB9CiAKICNpZiBQTEFURk9STShHVEspCkBAIC0zODcsOCAr
Mzg3LDggQEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdFNldHRpbmdzVXNlckFnZW50KFdlYlZpZXdU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIENTdHJpbmcgZGVmYXVsdFVzZXJBZ2VudCA9
IHdlYmtpdF9zZXR0aW5nc19nZXRfdXNlcl9hZ2VudChzZXR0aW5ncy5nZXQoKSk7CiAgICAgd2Vi
a2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyh0ZXN0LT5tX3dlYlZpZXcsIHNldHRpbmdzLmdldCgp
KTsKIAotICAgIGdfYXNzZXJ0KGdfc3Ryc3RyX2xlbihkZWZhdWx0VXNlckFnZW50LmRhdGEoKSwg
LTEsICJBcHBsZVdlYktpdCIpKTsKLSAgICBnX2Fzc2VydChnX3N0cnN0cl9sZW4oZGVmYXVsdFVz
ZXJBZ2VudC5kYXRhKCksIC0xLCAiU2FmYXJpIikpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZ19z
dHJzdHJfbGVuKGRlZmF1bHRVc2VyQWdlbnQuZGF0YSgpLCAtMSwgIkFwcGxlV2ViS2l0IikpOwor
ICAgIGdfYXNzZXJ0X25vbm51bGwoZ19zdHJzdHJfbGVuKGRlZmF1bHRVc2VyQWdlbnQuZGF0YSgp
LCAtMSwgIlNhZmFyaSIpKTsKIAogICAgIHdlYmtpdF9zZXR0aW5nc19zZXRfdXNlcl9hZ2VudChz
ZXR0aW5ncy5nZXQoKSwgMCk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGRlZmF1bHRVc2VyQWdlbnQu
ZGF0YSgpLCA9PSwgd2Via2l0X3NldHRpbmdzX2dldF91c2VyX2FnZW50KHNldHRpbmdzLmdldCgp
KSk7CkBAIC00MDUsMTUgKzQwNSwxNSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0U2V0dGluZ3NV
c2VyQWdlbnQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0X3Nl
dHRpbmdzX3NldF91c2VyX2FnZW50X3dpdGhfYXBwbGljYXRpb25fZGV0YWlscyhzZXR0aW5ncy5n
ZXQoKSwgIldlYktpdEdUSysiLCAwKTsKICAgICBjb25zdCBjaGFyKiB1c2VyQWdlbnRXaXRoTnVs
bFZlcnNpb24gPSB3ZWJraXRfc2V0dGluZ3NfZ2V0X3VzZXJfYWdlbnQoc2V0dGluZ3MuZ2V0KCkp
OwogICAgIGdfYXNzZXJ0X2NtcHN0cihnX3N0cnN0cl9sZW4odXNlckFnZW50V2l0aE51bGxWZXJz
aW9uLCAtMSwgZGVmYXVsdFVzZXJBZ2VudC5kYXRhKCkpLCA9PSwgdXNlckFnZW50V2l0aE51bGxW
ZXJzaW9uKTsKLSAgICBnX2Fzc2VydChnX3N0cnN0cl9sZW4odXNlckFnZW50V2l0aE51bGxWZXJz
aW9uLCAtMSwgIldlYktpdEdUSysiKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChnX3N0cnN0cl9s
ZW4odXNlckFnZW50V2l0aE51bGxWZXJzaW9uLCAtMSwgIldlYktpdEdUSysiKSk7CiAKICAgICB3
ZWJraXRfc2V0dGluZ3Nfc2V0X3VzZXJfYWdlbnRfd2l0aF9hcHBsaWNhdGlvbl9kZXRhaWxzKHNl
dHRpbmdzLmdldCgpLCAiV2ViS2l0R1RLKyIsICIiKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Vi
a2l0X3NldHRpbmdzX2dldF91c2VyX2FnZW50KHNldHRpbmdzLmdldCgpKSwgPT0sIHVzZXJBZ2Vu
dFdpdGhOdWxsVmVyc2lvbik7CiAKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X3VzZXJfYWdlbnRf
d2l0aF9hcHBsaWNhdGlvbl9kZXRhaWxzKHNldHRpbmdzLmdldCgpLCAiV2ViQ2F0R1RLKyIsICIz
LjQuNSIpOwogICAgIGNvbnN0IGNoYXIqIG5ld1VzZXJBZ2VudCA9IHdlYmtpdF9zZXR0aW5nc19n
ZXRfdXNlcl9hZ2VudChzZXR0aW5ncy5nZXQoKSk7Ci0gICAgZ19hc3NlcnQoZ19zdHJzdHJfbGVu
KG5ld1VzZXJBZ2VudCwgLTEsICIzLjQuNSIpKTsKLSAgICBnX2Fzc2VydChnX3N0cnN0cl9sZW4o
bmV3VXNlckFnZW50LCAtMSwgIldlYkNhdEdUSysiKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChn
X3N0cnN0cl9sZW4obmV3VXNlckFnZW50LCAtMSwgIjMuNC41IikpOworICAgIGdfYXNzZXJ0X25v
bm51bGwoZ19zdHJzdHJfbGVuKG5ld1VzZXJBZ2VudCwgLTEsICJXZWJDYXRHVEsrIikpOwogCiAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBhcHBsaWNhdGlvblVzZXJBZ2VudChnX3N0cmR1cF9wcmludGYo
IiVzICVzIiwgZGVmYXVsdFVzZXJBZ2VudC5kYXRhKCksICJXZWJDYXRHVEsrLzMuNC41IikpOwog
ICAgIGdfYXNzZXJ0X2NtcHN0cihhcHBsaWNhdGlvblVzZXJBZ2VudC5nZXQoKSwgPT0sIHdlYmtp
dF9zZXR0aW5nc19nZXRfdXNlcl9hZ2VudChzZXR0aW5ncy5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRVc2VyQ29udGVu
dE1hbmFnZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RX
ZWJLaXRVc2VyQ29udGVudE1hbmFnZXIuY3BwCmluZGV4IDJlNGU0OWZmNzQ3N2RmY2ZkNTdlNTUz
NmZkZGUwMzAyZjZkYTQ4MDUuLjIwZWNjYTg1MGZmYzRlM2UxMGM4NGEzNDQ4ZDRhZDM1MjhiNDM4
MjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
V2ViS2l0VXNlckNvbnRlbnRNYW5hZ2VyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFVzZXJDb250ZW50TWFuYWdlci5jcHAKQEAgLTQxLDEw
ICs0MSwxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05ld1dpdGhVc2VyQ29udGVudE1hbmFn
ZXIoVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBHUmVmUHRyPFdlYktpdFVzZXJDb250
ZW50TWFuYWdlcj4gdXNlckNvbnRlbnRNYW5hZ2VyMSA9IGFkb3B0R1JlZih3ZWJraXRfdXNlcl9j
b250ZW50X21hbmFnZXJfbmV3KCkpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdo
ZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyMS5nZXQoKSkpOwogICAg
IGF1dG8gd2ViVmlldzEgPSBUZXN0OjphZG9wdFZpZXcoVGVzdDo6Y3JlYXRlV2ViVmlldyh1c2Vy
Q29udGVudE1hbmFnZXIxLmdldCgpKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dl
dF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3MS5nZXQoKSkgPT0gdXNlckNvbnRlbnRNYW5h
Z2VyMS5nZXQoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJf
Y29udGVudF9tYW5hZ2VyKHdlYlZpZXcxLmdldCgpKSA9PSB1c2VyQ29udGVudE1hbmFnZXIxLmdl
dCgpKTsKIAogICAgIGF1dG8gd2ViVmlldzIgPSBUZXN0OjphZG9wdFZpZXcoVGVzdDo6Y3JlYXRl
V2ViVmlldygpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVu
dF9tYW5hZ2VyKHdlYlZpZXcyLmdldCgpKSAhPSB1c2VyQ29udGVudE1hbmFnZXIxLmdldCgpKTsK
KyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFn
ZXIod2ViVmlldzIuZ2V0KCkpICE9IHVzZXJDb250ZW50TWFuYWdlcjEuZ2V0KCkpOwogfQogCiBz
dGF0aWMgYm9vbCBpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aChXZWJWaWV3VGVzdCog
dGVzdCwgY29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciogd29ybGQgPSBudWxscHRyKQpAQCAt
NTUsOCArNTUsOCBAQCBzdGF0aWMgYm9vbCBpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0
aChXZWJWaWV3VGVzdCogdGVzdCwgY29uc3QgY2hhciogcGF0aAogICAgIEdVbmlxdWVPdXRQdHI8
R0Vycm9yPiBlcnJvcjsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVz
dWx0ID0gd29ybGQgPyB0ZXN0LT5ydW5KYXZhU2NyaXB0SW5Xb3JsZEFuZFdhaXRVbnRpbEZpbmlz
aGVkKGtTdHlsZVNoZWV0VGVzdFNjcmlwdCwgd29ybGQsICZlcnJvci5vdXRQdHIoKSkKICAgICAg
ICAgOiB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoa1N0eWxlU2hlZXRU
ZXN0U2NyaXB0LCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1
bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChq
YXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAK
ICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc3VsdFN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlw
dFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgcmV0dXJuICFnX3N0cmNt
cDAocmVzdWx0U3RyaW5nLmdldCgpLCBrU3R5bGVTaGVldFRlc3RTY3JpcHRSZXN1bHQpOwpAQCAt
NzEsNyArNzEsNyBAQCBzdGF0aWMgYm9vbCBpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQYXRoKFdl
YlZpZXdUZXN0KiB0ZXN0LCBjb25zdCBjaGFyKiBwYXRoLCBjbwogICAgIFdlYktpdEphdmFzY3Jp
cHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB3b3JsZCA/IHRlc3QtPnJ1bkphdmFTY3JpcHRJ
bldvcmxkQW5kV2FpdFVudGlsRmluaXNoZWQoa1NjcmlwdFRlc3RTY3JpcHQsIHdvcmxkLCAmZXJy
b3Iub3V0UHRyKCkpCiAgICAgICAgIDogdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZp
bmlzaGVkKGtTY3JpcHRUZXN0U2NyaXB0LCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGlmIChqYXZh
c2NyaXB0UmVzdWx0KSB7Ci0gICAgICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CisgICAgICAg
IGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKIAogICAgICAgICBHVW5pcXVlUHRyPGNo
YXI+IHJlc3VsdFN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhq
YXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgICAgIHJldHVybiAhZ19zdHJjbXAwKHJlc3VsdFN0cmlu
Zy5nZXQoKSwga1NjcmlwdFRlc3RTY3JpcHRSZXN1bHQpOwpAQCAtMTIwLDE5ICsxMjAsMTkgQEAg
c3RhdGljIHZvaWQgdGVzdFVzZXJDb250ZW50TWFuYWdlckluamVjdGVkU3R5bGVTaGVldChXZWJW
aWV3VGVzdCogdGVzdCwgZ2NvbnN0cG8KIAogICAgIC8vIFdpdGhvdXQgYSB3aGl0ZWxpc3Qgb3Ig
YSBibGFja2xpc3QgYWxsIFVSTHMgc2hvdWxkIGhhdmUgdGhlIGluamVjdGVkIHN0eWxlIHNoZWV0
LgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiByYW5kb21QYXRoID0gInNvbWVyYW5kb21wYXRoIjsK
LSAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFu
ZG9tUGF0aCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJM
QXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKICAgICBXZWJLaXRVc2VyU3R5bGVTaGVldCogc3R5
bGVTaGVldCA9IHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyhrSW5qZWN0ZWRTdHlsZVNoZWV0
LCBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9TVFlM
RV9MRVZFTF9VU0VSLCBudWxscHRyLCBudWxscHRyKTsKICAgICB3ZWJraXRfdXNlcl9jb250ZW50
X21hbmFnZXJfYWRkX3N0eWxlX3NoZWV0KHRlc3QtPm1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgp
LCBzdHlsZVNoZWV0KTsKICAgICB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZihzdHlsZVNo
ZWV0KTsKLSAgICBnX2Fzc2VydChpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0
LCByYW5kb21QYXRoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShpc1N0eWxlU2hlZXRJbmplY3RlZEZv
clVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7CiAKICAgICByZW1vdmVPbGRJbmplY3RlZENv
bnRlbnRBbmRSZXNldExpc3RzKHRlc3QtPm1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCB3aGl0
ZWxpc3QsIGJsYWNrbGlzdCk7CiAKLSAgICBnX2Fzc2VydCghaXNTdHlsZVNoZWV0SW5qZWN0ZWRG
b3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCwgIldlYkV4dGVuc2lvblRlc3RTY3JpcHRXb3Js
ZCIpKTsKKyAgICBnX2Fzc2VydF9mYWxzZShpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0
aCh0ZXN0LCByYW5kb21QYXRoLCAiV2ViRXh0ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIikpOwogICAg
IHN0eWxlU2hlZXQgPSB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9uZXdfZm9yX3dvcmxkKGtJbmpl
Y3RlZFN0eWxlU2hlZXQsIFdFQktJVF9VU0VSX0NPTlRFTlRfSU5KRUNUX0FMTF9GUkFNRVMsIFdF
QktJVF9VU0VSX1NUWUxFX0xFVkVMX1VTRVIsICJXZWJFeHRlbnNpb25UZXN0U2NyaXB0V29ybGQi
LCBudWxscHRyLCBudWxscHRyKTsKICAgICB3ZWJraXRfdXNlcl9jb250ZW50X21hbmFnZXJfYWRk
X3N0eWxlX3NoZWV0KHRlc3QtPm1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBzdHlsZVNoZWV0
KTsKICAgICB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF91bnJlZihzdHlsZVNoZWV0KTsKLSAgICBn
X2Fzc2VydChpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRo
LCAiV2ViRXh0ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIikpOworICAgIGdfYXNzZXJ0X3RydWUoaXNT
dHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFuZG9tUGF0aCwgIldlYkV4dGVu
c2lvblRlc3RTY3JpcHRXb3JsZCIpKTsKIAogICAgIHJlbW92ZU9sZEluamVjdGVkQ29udGVudEFu
ZFJlc2V0TGlzdHModGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHdoaXRlbGlzdCwg
YmxhY2tsaXN0KTsKIApAQCAtMTQwLDggKzE0MCw4IEBAIHN0YXRpYyB2b2lkIHRlc3RVc2VyQ29u
dGVudE1hbmFnZXJJbmplY3RlZFN0eWxlU2hlZXQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBv
CiAgICAgc3R5bGVTaGVldCA9IHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X25ldyhrSW5qZWN0ZWRT
dHlsZVNoZWV0LCBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRf
VVNFUl9TVFlMRV9MRVZFTF9VU0VSLCBudWxscHRyLCBibGFja2xpc3QpOwogICAgIHdlYmtpdF91
c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQodGVzdC0+bV91c2VyQ29udGVudE1h
bmFnZXIuZ2V0KCksIHN0eWxlU2hlZXQpOwogICAgIHdlYmtpdF91c2VyX3N0eWxlX3NoZWV0X3Vu
cmVmKHN0eWxlU2hlZXQpOwotICAgIGdfYXNzZXJ0KCFpc1N0eWxlU2hlZXRJbmplY3RlZEZvclVS
TEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7Ci0gICAgZ19hc3NlcnQoaXNTdHlsZVNoZWV0SW5q
ZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgInNvbWVvdGhlcnJhbmRvbXBhdGgiKSk7CisgICAgZ19h
c3NlcnRfZmFsc2UoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFuZG9t
UGF0aCkpOworICAgIGdfYXNzZXJ0X3RydWUoaXNTdHlsZVNoZWV0SW5qZWN0ZWRGb3JVUkxBdFBh
dGgodGVzdCwgInNvbWVvdGhlcnJhbmRvbXBhdGgiKSk7CiAKICAgICByZW1vdmVPbGRJbmplY3Rl
ZENvbnRlbnRBbmRSZXNldExpc3RzKHRlc3QtPm1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCB3
aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CiAKQEAgLTE1NCw5ICsxNTQsOSBAQCBzdGF0aWMgdm9pZCB0
ZXN0VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTdHlsZVNoZWV0KFdlYlZpZXdUZXN0KiB0ZXN0
LCBnY29uc3RwbwogICAgIHN0eWxlU2hlZXQgPSB3ZWJraXRfdXNlcl9zdHlsZV9zaGVldF9uZXco
a0luamVjdGVkU3R5bGVTaGVldCwgV0VCS0lUX1VTRVJfQ09OVEVOVF9JTkpFQ1RfQUxMX0ZSQU1F
UywgV0VCS0lUX1VTRVJfU1RZTEVfTEVWRUxfVVNFUiwgd2hpdGVsaXN0LCBibGFja2xpc3QpOwog
ICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRfc3R5bGVfc2hlZXQodGVzdC0+bV91
c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHN0eWxlU2hlZXQpOwogICAgIHdlYmtpdF91c2VyX3N0
eWxlX3NoZWV0X3VucmVmKHN0eWxlU2hlZXQpOwotICAgIGdfYXNzZXJ0KGlzU3R5bGVTaGVldElu
amVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIGluVGhlV2hpdGVMaXN0KSk7Ci0gICAgZ19hc3NlcnQo
IWlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIGluVGhlV2hpdGVMaXN0QW5k
QmxhY2tMaXN0KSk7Ci0gICAgZ19hc3NlcnQoIWlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQ
YXRoKHRlc3QsIG5vdEluV2hpdGVsaXN0KSk7CisgICAgZ19hc3NlcnRfdHJ1ZShpc1N0eWxlU2hl
ZXRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBpblRoZVdoaXRlTGlzdCkpOworICAgIGdfYXNz
ZXJ0X2ZhbHNlKGlzU3R5bGVTaGVldEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIGluVGhlV2hp
dGVMaXN0QW5kQmxhY2tMaXN0KSk7CisgICAgZ19hc3NlcnRfZmFsc2UoaXNTdHlsZVNoZWV0SW5q
ZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgbm90SW5XaGl0ZWxpc3QpKTsKIAogICAgIC8vIEl0J3Mg
aW1wb3J0YW50IHRvIGNsZWFuIHVwIHRoZSBlbnZpcm9ubWVudCBiZWZvcmUgb3RoZXIgdGVzdHMu
CiAgICAgcmVtb3ZlT2xkSW5qZWN0ZWRDb250ZW50QW5kUmVzZXRMaXN0cyh0ZXN0LT5tX3VzZXJD
b250ZW50TWFuYWdlci5nZXQoKSwgd2hpdGVsaXN0LCBibGFja2xpc3QpOwpAQCAtMTcxLDE5ICsx
NzEsMTkgQEAgc3RhdGljIHZvaWQgdGVzdFVzZXJDb250ZW50TWFuYWdlckluamVjdGVkU2NyaXB0
KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGUKIAogICAgIC8vIFdpdGhvdXQgYSB3aGl0
ZWxpc3Qgb3IgYSBibGFja2xpc3QgYWxsIFVSTHMgc2hvdWxkIGhhdmUgdGhlIGluamVjdGVkIHNj
cmlwdC4KICAgICBzdGF0aWMgY29uc3QgY2hhciogcmFuZG9tUGF0aCA9ICJzb21lcmFuZG9tcGF0
aCI7Ci0gICAgZ19hc3NlcnQoIWlzU2NyaXB0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgcmFu
ZG9tUGF0aCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKGlzU2NyaXB0SW5qZWN0ZWRGb3JVUkxBdFBh
dGgodGVzdCwgcmFuZG9tUGF0aCkpOwogICAgIFdlYktpdFVzZXJTY3JpcHQqIHNjcmlwdCA9IHdl
YmtpdF91c2VyX3NjcmlwdF9uZXcoa0luamVjdGVkU2NyaXB0LCBXRUJLSVRfVVNFUl9DT05URU5U
X0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9TQ1JJUFRfSU5KRUNUX0FUX0RPQ1VNRU5U
X0VORCwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgd2Via2l0X3VzZXJfY29udGVudF9tYW5hZ2Vy
X2FkZF9zY3JpcHQodGVzdC0+bV91c2VyQ29udGVudE1hbmFnZXIuZ2V0KCksIHNjcmlwdCk7CiAg
ICAgd2Via2l0X3VzZXJfc2NyaXB0X3VucmVmKHNjcmlwdCk7Ci0gICAgZ19hc3NlcnQoaXNTY3Jp
cHRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7CisgICAgZ19hc3NlcnRf
dHJ1ZShpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKIAog
ICAgIHJlbW92ZU9sZEluamVjdGVkQ29udGVudEFuZFJlc2V0TGlzdHModGVzdC0+bV91c2VyQ29u
dGVudE1hbmFnZXIuZ2V0KCksIHdoaXRlbGlzdCwgYmxhY2tsaXN0KTsKIAotICAgIGdfYXNzZXJ0
KCFpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgsICJXZWJFeHRl
bnNpb25UZXN0U2NyaXB0V29ybGQiKSk7CisgICAgZ19hc3NlcnRfZmFsc2UoaXNTY3JpcHRJbmpl
Y3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoLCAiV2ViRXh0ZW5zaW9uVGVzdFNjcmlw
dFdvcmxkIikpOwogICAgIHNjcmlwdCA9IHdlYmtpdF91c2VyX3NjcmlwdF9uZXdfZm9yX3dvcmxk
KGtJbmplY3RlZFNjcmlwdCwgV0VCS0lUX1VTRVJfQ09OVEVOVF9JTkpFQ1RfQUxMX0ZSQU1FUywg
V0VCS0lUX1VTRVJfU0NSSVBUX0lOSkVDVF9BVF9ET0NVTUVOVF9FTkQsICJXZWJFeHRlbnNpb25U
ZXN0U2NyaXB0V29ybGQiLCBudWxscHRyLCBudWxscHRyKTsKICAgICB3ZWJraXRfdXNlcl9jb250
ZW50X21hbmFnZXJfYWRkX3NjcmlwdCh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwg
c2NyaXB0KTsKICAgICB3ZWJraXRfdXNlcl9zY3JpcHRfdW5yZWYoc2NyaXB0KTsKLSAgICBnX2Fz
c2VydChpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgsICJXZWJF
eHRlbnNpb25UZXN0U2NyaXB0V29ybGQiKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShpc1NjcmlwdElu
amVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIHJhbmRvbVBhdGgsICJXZWJFeHRlbnNpb25UZXN0U2Ny
aXB0V29ybGQiKSk7CiAKICAgICByZW1vdmVPbGRJbmplY3RlZENvbnRlbnRBbmRSZXNldExpc3Rz
KHRlc3QtPm1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7
CiAKQEAgLTE5MSw4ICsxOTEsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2Vy
SW5qZWN0ZWRTY3JpcHQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZQogICAgIHNjcmlw
dCA9IHdlYmtpdF91c2VyX3NjcmlwdF9uZXcoa0luamVjdGVkU2NyaXB0LCBXRUJLSVRfVVNFUl9D
T05URU5UX0lOSkVDVF9BTExfRlJBTUVTLCBXRUJLSVRfVVNFUl9TQ1JJUFRfSU5KRUNUX0FUX0RP
Q1VNRU5UX0VORCwgbnVsbHB0ciwgYmxhY2tsaXN0KTsKICAgICB3ZWJraXRfdXNlcl9jb250ZW50
X21hbmFnZXJfYWRkX3NjcmlwdCh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgc2Ny
aXB0KTsKICAgICB3ZWJraXRfdXNlcl9zY3JpcHRfdW5yZWYoc2NyaXB0KTsKLSAgICBnX2Fzc2Vy
dCghaXNTY3JpcHRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCByYW5kb21QYXRoKSk7Ci0gICAg
Z19hc3NlcnQoaXNTY3JpcHRJbmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCAic29tZW90aGVycmFu
ZG9tcGF0aCIpKTsKKyAgICBnX2Fzc2VydF9mYWxzZShpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQ
YXRoKHRlc3QsIHJhbmRvbVBhdGgpKTsKKyAgICBnX2Fzc2VydF90cnVlKGlzU2NyaXB0SW5qZWN0
ZWRGb3JVUkxBdFBhdGgodGVzdCwgInNvbWVvdGhlcnJhbmRvbXBhdGgiKSk7CiAKICAgICByZW1v
dmVPbGRJbmplY3RlZENvbnRlbnRBbmRSZXNldExpc3RzKHRlc3QtPm1fdXNlckNvbnRlbnRNYW5h
Z2VyLmdldCgpLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCk7CiAKQEAgLTIwNSw5ICsyMDUsOSBAQCBz
dGF0aWMgdm9pZCB0ZXN0VXNlckNvbnRlbnRNYW5hZ2VySW5qZWN0ZWRTY3JpcHQoV2ViVmlld1Rl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZQogICAgIHNjcmlwdCA9IHdlYmtpdF91c2VyX3NjcmlwdF9u
ZXcoa0luamVjdGVkU2NyaXB0LCBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVT
LCBXRUJLSVRfVVNFUl9TQ1JJUFRfSU5KRUNUX0FUX0RPQ1VNRU5UX0VORCwgd2hpdGVsaXN0LCBi
bGFja2xpc3QpOwogICAgIHdlYmtpdF91c2VyX2NvbnRlbnRfbWFuYWdlcl9hZGRfc2NyaXB0KHRl
c3QtPm1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgpLCBzY3JpcHQpOwogICAgIHdlYmtpdF91c2Vy
X3NjcmlwdF91bnJlZihzY3JpcHQpOwotICAgIGdfYXNzZXJ0KGlzU2NyaXB0SW5qZWN0ZWRGb3JV
UkxBdFBhdGgodGVzdCwgaW5UaGVXaGl0ZUxpc3QpKTsKLSAgICBnX2Fzc2VydCghaXNTY3JpcHRJ
bmplY3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCkpOwot
ICAgIGdfYXNzZXJ0KCFpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQYXRoKHRlc3QsIG5vdEluV2hp
dGVsaXN0KSk7CisgICAgZ19hc3NlcnRfdHJ1ZShpc1NjcmlwdEluamVjdGVkRm9yVVJMQXRQYXRo
KHRlc3QsIGluVGhlV2hpdGVMaXN0KSk7CisgICAgZ19hc3NlcnRfZmFsc2UoaXNTY3JpcHRJbmpl
Y3RlZEZvclVSTEF0UGF0aCh0ZXN0LCBpblRoZVdoaXRlTGlzdEFuZEJsYWNrTGlzdCkpOworICAg
IGdfYXNzZXJ0X2ZhbHNlKGlzU2NyaXB0SW5qZWN0ZWRGb3JVUkxBdFBhdGgodGVzdCwgbm90SW5X
aGl0ZWxpc3QpKTsKIAogICAgIC8vIEl0J3MgaW1wb3J0YW50IHRvIGNsZWFuIHVwIHRoZSBlbnZp
cm9ubWVudCBiZWZvcmUgb3RoZXIgdGVzdHMuCiAgICAgcmVtb3ZlT2xkSW5qZWN0ZWRDb250ZW50
QW5kUmVzZXRMaXN0cyh0ZXN0LT5tX3VzZXJDb250ZW50TWFuYWdlci5nZXQoKSwgd2hpdGVsaXN0
LCBibGFja2xpc3QpOwpAQCAtMjQ2LDcgKzI0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCF0
ZXN0LT5tX3dhaXRGb3JTY3JpcHRSdW4pCiAgICAgICAgICAgICBnX21haW5fbG9vcF9xdWl0KHRl
c3QtPm1fbWFpbkxvb3ApOwogCi0gICAgICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX3VzZXJTY3JpcHRN
ZXNzYWdlKTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbCh0ZXN0LT5tX3VzZXJTY3JpcHRNZXNzYWdl
KTsKICAgICAgICAgdGVzdC0+bV91c2VyU2NyaXB0TWVzc2FnZSA9IHdlYmtpdF9qYXZhc2NyaXB0
X3Jlc3VsdF9yZWYoanNSZXN1bHQpOwogICAgIH0KIApAQCAtMjYxLDE0ICsyNjEsMTQgQEAgcHVi
bGljOgogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fdXNlckNvbnRlbnRNYW5hZ2VyLmdldCgp
LCBzaWduYWxOYW1lLmdldCgpLCBHX0NBTExCQUNLKHNjcmlwdE1lc3NhZ2VSZWNlaXZlZCksIHRo
aXMpOwogCiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKLSAgICAgICAgZ19h
c3NlcnQoIW1fd2FpdEZvclNjcmlwdFJ1bik7Ci0gICAgICAgIGdfYXNzZXJ0KG1fdXNlclNjcmlw
dE1lc3NhZ2UpOworICAgICAgICBnX2Fzc2VydF9mYWxzZShtX3dhaXRGb3JTY3JpcHRSdW4pOwor
ICAgICAgICBnX2Fzc2VydF9ub25udWxsKG1fdXNlclNjcmlwdE1lc3NhZ2UpOwogICAgICAgICBy
ZXR1cm4gbV91c2VyU2NyaXB0TWVzc2FnZTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBydW5K
YXZhU2NyaXB0RmluaXNoZWQoR09iamVjdCosIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBVc2VyU2Ny
aXB0TWVzc2FnZVRlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBnX2Fzc2VydCh0ZXN0LT5tX3dh
aXRGb3JTY3JpcHRSdW4pOworICAgICAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fd2FpdEZvclNj
cmlwdFJ1bik7CiAgICAgICAgIHRlc3QtPm1fd2FpdEZvclNjcmlwdFJ1biA9IGZhbHNlOwogICAg
ICAgICBnX21haW5fbG9vcF9xdWl0KHRlc3QtPm1fbWFpbkxvb3ApOwogICAgIH0KQEAgLTI5MSwx
MCArMjkxLDEwIEBAIHByaXZhdGU6CiAKIHN0YXRpYyB2b2lkIHRlc3RVc2VyQ29udGVudE1hbmFn
ZXJTY3JpcHRNZXNzYWdlUmVjZWl2ZWQoVXNlclNjcmlwdE1lc3NhZ2VUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogewotICAgIGdfYXNzZXJ0KHRlc3QtPnJlZ2lzdGVySGFuZGxlcigibXNnIikp
OworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+cmVnaXN0ZXJIYW5kbGVyKCJtc2ciKSk7CiAKICAg
ICAvLyBUcnlpbmcgdG8gcmVnaXN0ZXIgdGhlIHNhbWUgaGFuZGxlciBhIHNlY29uZCB0aW1lIG11
c3QgZmFpbC4KLSAgICBnX2Fzc2VydCghdGVzdC0+cmVnaXN0ZXJIYW5kbGVyKCJtc2ciKSk7Cisg
ICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+cmVnaXN0ZXJIYW5kbGVyKCJtc2ciKSk7CiAKICAgICB0
ZXN0LT5sb2FkSHRtbCgiPGh0bWw+PC9odG1sPiIsIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRV
bnRpbExvYWRGaW5pc2hlZCgpOwpAQCAtMzAyLDE1ICszMDIsMTUgQEAgc3RhdGljIHZvaWQgdGVz
dFVzZXJDb250ZW50TWFuYWdlclNjcmlwdE1lc3NhZ2VSZWNlaXZlZChVc2VyU2NyaXB0TWVzc2Fn
ZVRlc3QqIHQKICAgICAvLyBDaGVjayB0aGF0IHRoZSAid2luZG93LndlYmtpdC5tZXNzYWdlSGFu
ZGxlcnMiIG5hbWVzcGFjZSBleGlzdHMuCiAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9y
OwogICAgIFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5y
dW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIndpbmRvdy53ZWJraXQubWVzc2FnZUhh
bmRsZXJzID8gJ3knIDogJ24nOyIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2
YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2Vy
dF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9y
LmdldCgpKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHZhbHVlU3RyaW5nKFdlYlZpZXdUZXN0Ojpq
YXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2Vy
dF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAieSIpOwogCiAgICAgLy8gQ2hlY2sgdGhh
dCB0aGUgImRvY3VtZW50LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMubXNnIiBuYW1lc3BhY2UgZXhp
c3RzLgogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVu
dGlsRmluaXNoZWQoIndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLm1zZyA/ICd5JyA6ICdu
JzsiLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwot
ICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2Ny
aXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAgICAgdmFs
dWVTdHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2
YXNjcmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwg
PT0sICJ5Iik7CiAKQEAgLTMxOCwxOSArMzE4LDE5IEBAIHN0YXRpYyB2b2lkIHRlc3RVc2VyQ29u
dGVudE1hbmFnZXJTY3JpcHRNZXNzYWdlUmVjZWl2ZWQoVXNlclNjcmlwdE1lc3NhZ2VUZXN0KiB0
CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgInVzZXIgbWVzc2Fn
ZSIpOwogCiAgICAgLy8gTWVzc2FnZXMgc2hvdWxkIGFycml2ZSBkZXNwaXRlIG9mIG90aGVyIGhh
bmRsZXJzIGJlaW5nIHJlZ2lzdGVyZWQuCi0gICAgZ19hc3NlcnQodGVzdC0+cmVnaXN0ZXJIYW5k
bGVyKCJhbm90aGVySGFuZGxlciIpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPnJlZ2lzdGVy
SGFuZGxlcigiYW5vdGhlckhhbmRsZXIiKSk7CiAKICAgICAvLyBDaGVjayB0aGF0IHRoZSAiZG9j
dW1lbnQud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5tc2ciIG5hbWVzcGFjZSBzdGlsbCBleGlzdHMu
CiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxG
aW5pc2hlZCgid2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMubXNnID8gJ3knIDogJ24nOyIs
ICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAg
Z19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRS
ZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKICAgICB2YWx1ZVN0
cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2Ny
aXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwg
InkiKTsKIAogICAgIC8vIENoZWNrIHRoYXQgdGhlICJkb2N1bWVudC53ZWJraXQubWVzc2FnZUhh
bmRsZXJzLmFub3RoZXJIYW5kbGVyIiBuYW1lc3BhY2UgZXhpc3RzLgogICAgIGphdmFzY3JpcHRS
ZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIndpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLmFub3RoZXJIYW5kbGVyID8gJ3knIDogJ24nOyIsICZlcnJv
ci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3Nl
cnQoIWVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQp
OworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKICAgICB2YWx1ZVN0cmluZy5y
ZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVz
dWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgInkiKTsK
IApAQCAtMzQ0LDExICszNDQsMTEgQEAgc3RhdGljIHZvaWQgdGVzdFVzZXJDb250ZW50TWFuYWdl
clNjcmlwdE1lc3NhZ2VSZWNlaXZlZChVc2VyU2NyaXB0TWVzc2FnZVRlc3QqIHQKICAgICB0ZXN0
LT51bnJlZ2lzdGVySGFuZGxlcigibXNnIik7CiAKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVz
dC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cud2Via2l0Lm1lc3Nh
Z2VIYW5kbGVycy5tc2cucG9zdE1lc3NhZ2UoJzQyJyk7IiwgJmVycm9yLm91dFB0cigpKTsKLSAg
ICBnX2Fzc2VydCghamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoZXJyb3IuZ2V0KCkp
OworICAgIGdfYXNzZXJ0X251bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9u
bnVsbChlcnJvci5nZXQoKSk7CiAKICAgICAvLyBSZS1yZWdpc3RlcmluZyBhIGhhbmRsZXIgdGhh
dCBoYXMgYmVlbiB1bnJlZ2lzdGVyZWQgbXVzdCB3b3JrCi0gICAgZ19hc3NlcnQodGVzdC0+cmVn
aXN0ZXJIYW5kbGVyKCJtc2ciKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5yZWdpc3Rlckhh
bmRsZXIoIm1zZyIpKTsKICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNj
cmlwdFJlc3VsdFRvQ1N0cmluZyh0ZXN0LT5wb3N0TWVzc2FnZUFuZFdhaXRVbnRpbFJlY2VpdmVk
KCJtc2ciLCAiJ2hhbmRsZXI6IG1zZyciKSkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0
cmluZy5nZXQoKSwgPT0sICJoYW5kbGVyOiBtc2ciKTsKIApAQCAtMzU3LDcgKzM1Nyw3IEBAIHN0
YXRpYyB2b2lkIHRlc3RVc2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNzYWdlUmVjZWl2ZWQoVXNl
clNjcmlwdE1lc3NhZ2VUZXN0KiB0CiAKIHN0YXRpYyB2b2lkIHRlc3RVc2VyQ29udGVudE1hbmFn
ZXJTY3JpcHRNZXNzYWdlSW5Xb3JsZFJlY2VpdmVkKFVzZXJTY3JpcHRNZXNzYWdlVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBnX2Fzc2VydCh0ZXN0LT5yZWdpc3RlckhhbmRsZXIo
Im1zZyIpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPnJlZ2lzdGVySGFuZGxlcigibXNnIikp
OwogCiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjwvaHRtbD4iLCBudWxscHRyKTsKICAgICB0
ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKQEAgLTM2NSwxNiArMzY1LDE2IEBAIHN0YXRp
YyB2b2lkIHRlc3RVc2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNzYWdlSW5Xb3JsZFJlY2VpdmVk
KFVzZXJTY3JpcHRNZXNzYWdlCiAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgIndpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzIiBuYW1lc3BhY2UgZG9lc24ndCBleGlzdCBpbiBpc29sYXRlZCB3b3Js
ZHMuCiAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIFdlYktpdEphdmFzY3Jp
cHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0SW5Xb3JsZEFu
ZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycyA/ICd5JyA6
ICduJzsiLCAiV2ViRXh0ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIiwgJmVycm9yLm91dFB0cigpKTsK
LSAgICBnX2Fzc2VydCghamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbnVsbChqYXZh
c2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX0pB
VkFTQ1JJUFRfRVJST1IsIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SX1NDUklQVF9GQUlMRUQpOwog
ICAgIHRlc3QtPnVucmVnaXN0ZXJIYW5kbGVyKCJtc2ciKTsKIAotICAgIGdfYXNzZXJ0KHRlc3Qt
PnJlZ2lzdGVySGFuZGxlcigibXNnIiwgIldlYkV4dGVuc2lvblRlc3RTY3JpcHRXb3JsZCIpKTsK
KyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPnJlZ2lzdGVySGFuZGxlcigibXNnIiwgIldlYkV4dGVu
c2lvblRlc3RTY3JpcHRXb3JsZCIpKTsKIAogICAgIC8vIENoZWNrIHRoYXQgdGhlICJ3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycyIgbmFtZXNwYWNlIGV4aXN0cyBpbiB0aGUgd29ybGQuCiAg
ICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRJbldvcmxkQW5kV2FpdFVu
dGlsRmluaXNoZWQoIndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzID8gJ3knIDogJ24nOyIs
ICJXZWJFeHRlbnNpb25UZXN0U2NyaXB0V29ybGQiLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdf
YXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7Cisg
ICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19l
cnJvcihlcnJvci5nZXQoKSk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiB2YWx1ZVN0cmluZyhXZWJW
aWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAg
ICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgInkiKTsKIApAQCAtMzgz
LDcgKzM4Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RVc2VyQ29udGVudE1hbmFnZXJTY3JpcHRNZXNz
YWdlSW5Xb3JsZFJlY2VpdmVkKFVzZXJTY3JpcHRNZXNzYWdlCiAKICAgICAvLyBQb3N0IG1lc3Nh
Z2UgaW4gbWFpbiB3b3JsZCBzaG91bGQgZmFpbC4KICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVz
dC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cud2Via2l0Lm1lc3Nh
Z2VIYW5kbGVycy5tc2cucG9zdE1lc3NhZ2UoJzQyJyk7IiwgJmVycm9yLm91dFB0cigpKTsKLSAg
ICBnX2Fzc2VydCghamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbnVsbChqYXZhc2Ny
aXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX0pBVkFT
Q1JJUFRfRVJST1IsIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SX1NDUklQVF9GQUlMRUQpOwogCiAg
ICAgdGVzdC0+dW5yZWdpc3RlckhhbmRsZXIoIm1zZyIsICJXZWJFeHRlbnNpb25UZXN0U2NyaXB0
V29ybGQiKTsKQEAgLTM5MiwxMSArMzkyLDExIEBAIHN0YXRpYyB2b2lkIHRlc3RVc2VyQ29udGVu
dE1hbmFnZXJTY3JpcHRNZXNzYWdlSW5Xb3JsZFJlY2VpdmVkKFVzZXJTY3JpcHRNZXNzYWdlCiAj
aWYgUExBVEZPUk0oR1RLKQogc3RhdGljIHZvaWQgdGVzdFVzZXJDb250ZW50TWFuYWdlclNjcmlw
dE1lc3NhZ2VGcm9tRE9NQmluZGluZ3MoVXNlclNjcmlwdE1lc3NhZ2VUZXN0KiB0ZXN0LCBnY29u
c3Rwb2ludGVyKQogewotICAgIGdfYXNzZXJ0KHRlc3QtPnJlZ2lzdGVySGFuZGxlcigiZG9tIikp
OworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+cmVnaXN0ZXJIYW5kbGVyKCJkb20iKSk7CiAKICAg
ICB0ZXN0LT5sb2FkSHRtbCgiPGh0bWw+MTwvaHRtbD4iLCBudWxscHRyKTsKICAgICBXZWJLaXRK
YXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+d2FpdFVudGlsTWVzc2Fn
ZVJlY2VpdmVkKCJkb20iKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBn
X2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4g
dmFsdWVTdHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNj
cmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0s
ICJEb2N1bWVudExvYWRlZCIpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCBkNDE0
NGY2OTgyZTMzMGVmNmJmZDhjYTllMTA1YjFlZGEwZTc0ZTc4Li5jMGFlN2U3ZTZjNjE3OWE3YzZm
OTQ1N2YxZTk4NzQ3MjBlNTNjMjdjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYkNvbnRleHQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTM0
LDQ2ICszNCw0NiBAQCBzdGF0aWMgV2ViS2l0VGVzdFNlcnZlcioga1NlcnZlcjsKIHN0YXRpYyB2
b2lkIHRlc3RXZWJDb250ZXh0RGVmYXVsdChUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewog
ICAgIC8vIENoZWNrIHRoZXJlJ3MgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgdGhlIGRlZmF1bHQgd2Vi
IGNvbnRleHQuCi0gICAgZ19hc3NlcnQod2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkg
PT0gd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkpOwotICAgIGdfYXNzZXJ0KHdlYmtp
dF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpICE9IHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSk7
CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSA9PSB3
ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJr
aXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSAhPSB0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkp
OwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dEVwaGVtZXJhbChUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogewogICAgIC8vIEJ5IGRlZmF1bHQgd2ViIGNvbnRleHRzIGFyZSBub3Qg
ZXBoZW1lcmFsLgotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFs
KHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtp
dF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7Cisg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbCh3ZWJraXRf
d2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93
ZWJfY29udGV4dF9pc19lcGhlbWVyYWwodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKSk7CiAKICAg
ICBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIqIG1hbmFnZXIgPSB3ZWJraXRfd2ViX2NvbnRleHRf
Z2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgp
KTsKLSAgICBnX2Fzc2VydChXRUJLSVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIobWFuYWdlcikp
OwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFs
KG1hbmFnZXIpKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFO
QUdFUihtYW5hZ2VyKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2VyKSk7CiAgICAgbWFuYWdlciA9IHdlYmtpdF93ZWJf
Y29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIodGVzdC0+bV93ZWJDb250ZXh0LmdldCgp
KTsKLSAgICBnX2Fzc2VydChXRUJLSVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIobWFuYWdlcikp
OwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFs
KG1hbmFnZXIpKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19XRUJTSVRFX0RBVEFfTUFO
QUdFUihtYW5hZ2VyKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2VyKSk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBUZXN0
OjphZG9wdFZpZXcoVGVzdDo6Y3JlYXRlV2ViVmlldygpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0
X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh3ZWJWaWV3LmdldCgpKSk7Ci0gICAgZ19hc3NlcnQod2Vi
a2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3ZWJWaWV3LmdldCgpKSA9PSB3
ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYmtpdF93ZWJfY29u
dGV4dF9nZXRfZGVmYXVsdCgpKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl92aWV3
X2lzX2VwaGVtZXJhbCh3ZWJWaWV3LmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYlZpZXcuZ2V0KCkpID09IHdlYmtp
dF93ZWJfY29udGV4dF9nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIod2Via2l0X3dlYl9jb250ZXh0
X2dldF9kZWZhdWx0KCkpKTsKIAogICAgIHdlYlZpZXcgPSBUZXN0OjphZG9wdFZpZXcoVGVzdDo6
Y3JlYXRlV2ViVmlldyh0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCgh
d2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh3ZWJWaWV3LmdldCgpKSk7Ci0gICAgZ19hc3Nl
cnQod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3ZWJWaWV3LmdldCgp
KSA9PSBtYW5hZ2VyKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfaXNfZXBo
ZW1lcmFsKHdlYlZpZXcuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmll
d19nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIod2ViVmlldy5nZXQoKSkgPT0gbWFuYWdlcik7CiAK
ICAgICBHUmVmUHRyPFdlYktpdFdlYkNvbnRleHQ+IGNvbnRleHQgPSBhZG9wdEdSZWYod2Via2l0
X3dlYl9jb250ZXh0X25ld19lcGhlbWVyYWwoKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl9j
b250ZXh0X2lzX2VwaGVtZXJhbChjb250ZXh0LmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3
ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFsKGNvbnRleHQuZ2V0KCkpKTsKICAgICBtYW5h
Z2VyID0gd2Via2l0X3dlYl9jb250ZXh0X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcihjb250ZXh0
LmdldCgpKTsKLSAgICBnX2Fzc2VydChXRUJLSVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIobWFu
YWdlcikpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhl
bWVyYWwobWFuYWdlcikpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXIod2ViVmlldy5nZXQoKSkgIT0gbWFuYWdlcik7CisgICAgZ19hc3NlcnRf
dHJ1ZShXRUJLSVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIobWFuYWdlcikpOworICAgIGdfYXNz
ZXJ0X3RydWUod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJhbChtYW5hZ2Vy
KSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9t
YW5hZ2VyKHdlYlZpZXcuZ2V0KCkpICE9IG1hbmFnZXIpOwogCiAgICAgd2ViVmlldyA9IFRlc3Q6
OmFkb3B0VmlldyhUZXN0OjpjcmVhdGVXZWJWaWV3KGNvbnRleHQuZ2V0KCkpKTsKLSAgICBnX2Fz
c2VydCh3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKHdlYlZpZXcuZ2V0KCkpKTsKLSAgICBn
X2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYlZpZXcu
Z2V0KCkpID09IG1hbmFnZXIpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X2lz
X2VwaGVtZXJhbCh3ZWJWaWV3LmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYlZpZXcuZ2V0KCkpID09IG1hbmFnZXIp
OwogCiAgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXI+IGVwaGVtZXJhbE1hbmFn
ZXIgPSBhZG9wdEdSZWYod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX25ld19lcGhlbWVyYWwo
KSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2lzX2VwaGVtZXJh
bChlcGhlbWVyYWxNYW5hZ2VyLmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKGVwaGVtZXJhbE1hbmFnZXIuZ2V0KCkpKTsK
ICAgICBjb250ZXh0ID0gYWRvcHRHUmVmKHdlYmtpdF93ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJz
aXRlX2RhdGFfbWFuYWdlcihlcGhlbWVyYWxNYW5hZ2VyLmdldCgpKSk7Ci0gICAgZ19hc3NlcnQo
d2Via2l0X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbChjb250ZXh0LmdldCgpKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBoZW1lcmFsKGNvbnRleHQuZ2V0KCkp
KTsKIH0KIAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpAQCAtMTE1LDcgKzExNSw3
IEBAIHB1YmxpYzoKIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0R2V0UGx1Z2lucyhQbHVnaW5z
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBHTGlzdCogcGx1Z2lucyA9IHRlc3Qt
PmdldFBsdWdpbnMoKTsKLSAgICBnX2Fzc2VydChwbHVnaW5zKTsKKyAgICBnX2Fzc2VydF9ub25u
dWxsKHBsdWdpbnMpOwogCiAgICAgR1JlZlB0cjxXZWJLaXRQbHVnaW4+IHRlc3RQbHVnaW47CiAg
ICAgZm9yIChHTGlzdCogaXRlbSA9IHBsdWdpbnM7IGl0ZW07IGl0ZW0gPSBnX2xpc3RfbmV4dChp
dGVtKSkgewpAQCAtMTI2LDIyICsxMjYsMjIgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRH
ZXRQbHVnaW5zKFBsdWdpbnNUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZ19hc3NlcnQoV0VCS0lUX0lTX1BMVUdJTih0
ZXN0UGx1Z2luLmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfUExVR0lOKHRl
c3RQbHVnaW4uZ2V0KCkpKTsKIAogICAgIGNoYXIgbm9ybWFsaXplZFBhdGhbUEFUSF9NQVhdOwot
ICAgIGdfYXNzZXJ0KHJlYWxwYXRoKFdFQktJVF9URVNUX1BMVUdJTl9ESVIsIG5vcm1hbGl6ZWRQ
YXRoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChyZWFscGF0aChXRUJLSVRfVEVTVF9QTFVHSU5f
RElSLCBub3JtYWxpemVkUGF0aCkpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gcGx1Z2luUGF0aChn
X2J1aWxkX2ZpbGVuYW1lKG5vcm1hbGl6ZWRQYXRoLCAibGliVGVzdE5ldHNjYXBlUGx1Z0luLnNv
IiwgbnVsbHB0cikpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfcGx1Z2luX2dldF9wYXRo
KHRlc3RQbHVnaW4uZ2V0KCkpLCA9PSwgcGx1Z2luUGF0aC5nZXQoKSk7CiAgICAgZ19hc3NlcnRf
Y21wc3RyKHdlYmtpdF9wbHVnaW5fZ2V0X2Rlc2NyaXB0aW9uKHRlc3RQbHVnaW4uZ2V0KCkpLCA9
PSwgIlNpbXBsZSBOZXRzY2FwZcKuIHBsdWctaW4gdGhhdCBoYW5kbGVzIHRlc3QgY29udGVudCBm
b3IgV2ViS2l0Iik7CiAgICAgR0xpc3QqIG1pbWVJbmZvTGlzdCA9IHdlYmtpdF9wbHVnaW5fZ2V0
X21pbWVfaW5mb19saXN0KHRlc3RQbHVnaW4uZ2V0KCkpOwotICAgIGdfYXNzZXJ0KG1pbWVJbmZv
TGlzdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChtaW1lSW5mb0xpc3QpOwogICAgIGdfYXNzZXJ0
X2NtcHVpbnQoZ19saXN0X2xlbmd0aChtaW1lSW5mb0xpc3QpLCA9PSwgMik7CiAKICAgICBXZWJL
aXRNaW1lSW5mbyogbWltZUluZm8gPSBzdGF0aWNfY2FzdDxXZWJLaXRNaW1lSW5mbyo+KG1pbWVJ
bmZvTGlzdC0+ZGF0YSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9taW1lX2luZm9fZ2V0
X21pbWVfdHlwZShtaW1lSW5mbyksID09LCAiaW1hZ2UvcG5nIik7CiAgICAgZ19hc3NlcnRfY21w
c3RyKHdlYmtpdF9taW1lX2luZm9fZ2V0X2Rlc2NyaXB0aW9uKG1pbWVJbmZvKSwgPT0sICJwbmcg
aW1hZ2UiKTsKICAgICBjb25zdCBnY2hhciogY29uc3QqIGV4dGVuc2lvbnMgPSB3ZWJraXRfbWlt
ZV9pbmZvX2dldF9leHRlbnNpb25zKG1pbWVJbmZvKTsKLSAgICBnX2Fzc2VydChleHRlbnNpb25z
KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGV4dGVuc2lvbnMpOwogICAgIGdfYXNzZXJ0X2NtcHN0
cihleHRlbnNpb25zWzBdLCA9PSwgInBuZyIpOwogCiAgICAgbWltZUluZm9MaXN0ID0gZ19saXN0
X25leHQobWltZUluZm9MaXN0KTsKQEAgLTE0OSw3ICsxNDksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViQ29udGV4dEdldFBsdWdpbnMoUGx1Z2luc1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAg
ICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9taW1lX2luZm9fZ2V0X21pbWVfdHlwZShtaW1lSW5m
byksID09LCAiYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSIpOwogICAgIGdfYXNz
ZXJ0X2NtcHN0cih3ZWJraXRfbWltZV9pbmZvX2dldF9kZXNjcmlwdGlvbihtaW1lSW5mbyksID09
LCAidGVzdCBuZXRzY2FwZSBjb250ZW50Iik7CiAgICAgZXh0ZW5zaW9ucyA9IHdlYmtpdF9taW1l
X2luZm9fZ2V0X2V4dGVuc2lvbnMobWltZUluZm8pOwotICAgIGdfYXNzZXJ0KGV4dGVuc2lvbnMp
OworICAgIGdfYXNzZXJ0X25vbm51bGwoZXh0ZW5zaW9ucyk7CiAgICAgZ19hc3NlcnRfY21wc3Ry
KGV4dGVuc2lvbnNbMF0sID09LCAidGVzdG5ldHNjYXBlIik7CiB9CiAjZW5kaWYgLy8gRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0xOTEsMTEgKzE5MSwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIHRlc3QtPm1fdXJpU2NoZW1lUmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgICAgIHRlc3QtPmFz
c2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocmVxdWVzdCkpOwog
Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3dlYl92aWV3
KHJlcXVlc3QpID09IHRlc3QtPm1fd2ViVmlldyk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Vi
a2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfd2ViX3ZpZXcocmVxdWVzdCkgPT0gdGVzdC0+bV93
ZWJWaWV3KTsKIAogICAgICAgICBjb25zdCBjaGFyKiBzY2hlbWUgPSB3ZWJraXRfdXJpX3NjaGVt
ZV9yZXF1ZXN0X2dldF9zY2hlbWUocmVxdWVzdCk7Ci0gICAgICAgIGdfYXNzZXJ0KHNjaGVtZSk7
Ci0gICAgICAgIGdfYXNzZXJ0KHRlc3QtPm1faGFuZGxlcnNNYXAuY29udGFpbnMoU3RyaW5nOjpm
cm9tVVRGOChzY2hlbWUpKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoc2NoZW1lKTsKKyAg
ICAgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2hhbmRsZXJzTWFwLmNvbnRhaW5zKFN0cmluZzo6
ZnJvbVVURjgoc2NoZW1lKSkpOwogCiAgICAgICAgIGNvbnN0IFVSSVNjaGVtZUhhbmRsZXImIGhh
bmRsZXIgPSB0ZXN0LT5tX2hhbmRsZXJzTWFwLmdldChTdHJpbmc6OmZyb21VVEY4KHNjaGVtZSkp
OwogCkBAIC0yOTcsNyArMjk3LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRVUklTY2hl
bWUoVVJJU2NoZW1lVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBzaXplX3QgbWFpblJl
c291cmNlRGF0YVNpemUgPSAwOwogICAgIGNvbnN0IGNoYXIqIG1haW5SZXNvdXJjZURhdGEgPSB0
ZXN0LT5tYWluUmVzb3VyY2VEYXRhKG1haW5SZXNvdXJjZURhdGFTaXplKTsKICAgICBnX2Fzc2Vy
dF9jbXBpbnQobWFpblJlc291cmNlRGF0YVNpemUsID09LCBzdHJsZW4oa0JhckhUTUwpKTsKLSAg
ICBnX2Fzc2VydCghc3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCBrQmFySFRNTCwgbWFpblJlc291
cmNlRGF0YVNpemUpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoc3RybmNtcChtYWluUmVzb3VyY2VE
YXRhLCBrQmFySFRNTCwgbWFpblJlc291cmNlRGF0YVNpemUpLCA9PSwgMCk7CiAKICAgICB0ZXN0
LT5yZWdpc3RlclVSSVNjaGVtZUhhbmRsZXIoImVjaG8iLCBrRWNob0hUTUxGb3JtYXQsIC0xLCAi
dGV4dC9odG1sIik7CiAgICAgdGVzdC0+bG9hZFVSSSgiZWNobzpoZWxsby13b3JsZCIpOwpAQCAt
MzA2LDcgKzMwNiw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0VVJJU2NoZW1lKFVSSVNj
aGVtZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgbWFpblJlc291cmNlRGF0YVNpemUg
PSAwOwogICAgIG1haW5SZXNvdXJjZURhdGEgPSB0ZXN0LT5tYWluUmVzb3VyY2VEYXRhKG1haW5S
ZXNvdXJjZURhdGFTaXplKTsKICAgICBnX2Fzc2VydF9jbXBpbnQobWFpblJlc291cmNlRGF0YVNp
emUsID09LCBzdHJsZW4oZWNob0hUTUwuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCghc3RybmNtcCht
YWluUmVzb3VyY2VEYXRhLCBlY2hvSFRNTC5nZXQoKSwgbWFpblJlc291cmNlRGF0YVNpemUpKTsK
KyAgICBnX2Fzc2VydF9jbXBpbnQoc3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCBlY2hvSFRNTC5n
ZXQoKSwgbWFpblJlc291cmNlRGF0YVNpemUpLCA9PSwgMCk7CiAKICAgICB0ZXN0LT5sb2FkVVJJ
KCJlY2hvOndpdGgjZnJhZ21lbnQiKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQo
KTsKQEAgLTMxNiwyMCArMzE2LDIwIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0VVJJU2No
ZW1lKFVSSVNjaGVtZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgbWFpblJlc291cmNl
RGF0YVNpemUgPSAwOwogICAgIG1haW5SZXNvdXJjZURhdGEgPSB0ZXN0LT5tYWluUmVzb3VyY2VE
YXRhKG1haW5SZXNvdXJjZURhdGFTaXplKTsKICAgICBnX2Fzc2VydF9jbXBpbnQobWFpblJlc291
cmNlRGF0YVNpemUsID09LCBzdHJsZW4oZWNob0hUTUwuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCgh
c3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCBlY2hvSFRNTC5nZXQoKSwgbWFpblJlc291cmNlRGF0
YVNpemUpKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoc3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCBl
Y2hvSFRNTC5nZXQoKSwgbWFpblJlc291cmNlRGF0YVNpemUpLCA9PSwgMCk7CiAKICAgICB0ZXN0
LT5yZWdpc3RlclVSSVNjaGVtZUhhbmRsZXIoIm5vbWltZSIsIGtCYXJIVE1MLCAtMSwgMCk7CiAg
ICAgdGVzdC0+bV9sb2FkRXZlbnRzLmNsZWFyKCk7CiAgICAgdGVzdC0+bG9hZFVSSSgibm9taW1l
OmZvby1iYXIiKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLSAgICBnX2Fz
c2VydCh0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlz
aW9uYWxMb2FkRmFpbGVkKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2xvYWRFdmVudHMu
Y29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkRmFpbGVkKSk7CiAKICAg
ICB0ZXN0LT5yZWdpc3RlclVSSVNjaGVtZUhhbmRsZXIoImVtcHR5IiwgMCwgMCwgInRleHQvaHRt
bCIpOwogICAgIHRlc3QtPm1fbG9hZEV2ZW50cy5jbGVhcigpOwogICAgIHRlc3QtPmxvYWRVUkko
ImVtcHR5Om5vdGhpbmciKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLSAg
ICBnX2Fzc2VydCghdGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6
OlByb3Zpc2lvbmFsTG9hZEZhaWxlZCkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2xvYWRFdmVu
dHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZhaWxlZCkpOworICAgIGdfYXNzZXJ0
X2ZhbHNlKHRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92
aXNpb25hbExvYWRGYWlsZWQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5tX2xvYWRFdmVu
dHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZhaWxlZCkpOwogCiAgICAgLy8gQW55
dGhpbmcgb3ZlciA4MTkyIGJ5dGVzIHdpbGwgZ2V0IG11bHRpcGxlIGNhbGxzIHRvIGdfaW5wdXRf
c3RyZWFtX3JlYWRfYXN5bmMgaW4KICAgICAvLyBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0IHdoZW4g
cmVhZGluZyBkYXRhLCBidXQgd2Ugc3RpbGwgbmVlZCB3YXkgbW9yZSB0aGFuIHRoYXQgdG8KQEAg
LTMzOSwyNSArMzM5LDI1IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0VVJJU2NoZW1lKFVS
SVNjaGVtZVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bV9sb2FkRXZlbnRz
LmNsZWFyKCk7CiAgICAgdGVzdC0+bG9hZFVSSSgiZXJyb3I6ZXJyb3IiKTsKICAgICB0ZXN0LT53
YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2xvYWRFdmVudHMu
Y29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkRmFpbGVkKSk7Ci0gICAg
Z19hc3NlcnQodGVzdC0+bV9sb2FkRmFpbGVkKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1f
bG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRGYWls
ZWQpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fbG9hZEZhaWxlZCk7CiAgICAgZ19hc3Nl
cnRfZXJyb3IodGVzdC0+bV9lcnJvci5nZXQoKSwgZ19xdWFya19mcm9tX3N0cmluZyhlcnJvckRv
bWFpbiksIGVycm9yQ29kZSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fZXJyb3ItPm1l
c3NhZ2UsID09LCBnZW5lcmljRXJyb3JNZXNzYWdlKTsKIAogICAgIHRlc3QtPm1fbG9hZEV2ZW50
cy5jbGVhcigpOwogICAgIHRlc3QtPmxvYWRVUkkoImVycm9yOmJlZm9yZS1yZXNwb25zZSIpOwog
ICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1f
bG9hZEV2ZW50cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRGYWls
ZWQpKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2xvYWRGYWlsZWQpOworICAgIGdfYXNzZXJ0X3Ry
dWUodGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lv
bmFsTG9hZEZhaWxlZCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9sb2FkRmFpbGVkKTsK
ICAgICBnX2Fzc2VydF9lcnJvcih0ZXN0LT5tX2Vycm9yLmdldCgpLCBnX3F1YXJrX2Zyb21fc3Ry
aW5nKGVycm9yRG9tYWluKSwgZXJyb3JDb2RlKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodGVzdC0+
bV9lcnJvci0+bWVzc2FnZSwgPT0sIGJlZm9yZVJlY2VpdmVSZXNwb25zZUVycm9yTWVzc2FnZSk7
CiAKICAgICB0ZXN0LT5tX2xvYWRFdmVudHMuY2xlYXIoKTsKICAgICB0ZXN0LT5sb2FkVVJJKCJl
cnJvcjphZnRlci1maXJzdC1jaHVuayIpOwogICAgIHRlc3QtPmZpbmlzaE9uQ29tbWl0dGVkQW5k
V2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1fbG9hZEV2ZW50
cy5jb250YWlucyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRGYWlsZWQpKTsKLSAg
ICBnX2Fzc2VydCh0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNraW5nVGVzdDo6
TG9hZEZhaWxlZCkpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fbG9hZEZhaWxlZCk7CisgICAgZ19h
c3NlcnRfZmFsc2UodGVzdC0+bV9sb2FkRXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6
OlByb3Zpc2lvbmFsTG9hZEZhaWxlZCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV9sb2Fk
RXZlbnRzLmNvbnRhaW5zKExvYWRUcmFja2luZ1Rlc3Q6OkxvYWRGYWlsZWQpKTsKKyAgICBnX2Fz
c2VydF90cnVlKHRlc3QtPm1fbG9hZEZhaWxlZCk7CiAgICAgZ19hc3NlcnRfZXJyb3IodGVzdC0+
bV9lcnJvci5nZXQoKSwgZ19xdWFya19mcm9tX3N0cmluZyhlcnJvckRvbWFpbiksIGVycm9yQ29k
ZSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1fZXJyb3ItPm1lc3NhZ2UsID09LCBhZnRl
ckluaXRpYWxDaHVua0Vycm9yTWVzc2FnZSk7CiAKQEAgLTM2NSw4ICszNjUsOCBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2ViQ29udGV4dFVSSVNjaGVtZShVUklTY2hlbWVUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogICAgIHRlc3QtPm1fbG9hZEV2ZW50cy5jbGVhcigpOwogICAgIHRlc3QtPmxvYWRV
UkkoImNsb3NlZDppbnB1dC1zdHJlYW0iKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNo
ZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2xvYWRFdmVudHMuY29udGFpbnMoTG9hZFRyYWNr
aW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkRmFpbGVkKSk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9s
b2FkRmFpbGVkKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fbG9hZEV2ZW50cy5jb250YWlu
cyhMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRGYWlsZWQpKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKHRlc3QtPm1fbG9hZEZhaWxlZCk7CiAgICAgZ19hc3NlcnRfZXJyb3IodGVzdC0+bV9l
cnJvci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DTE9TRUQpOwogfQogCkBAIC0zNzcs
NyArMzc3LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRTcGVsbENoZWNrZXIoVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIC8vIENoZWNrIHdoYXQgaGFwcGVucyBpZiBubyBz
cGVsbCBjaGVja2luZyBsYW5ndWFnZSBoYXMgYmVlbiBzZXQuCiAgICAgY29uc3QgZ2NoYXIqIGNv
bnN0KiBjdXJyZW50TGFuZ3VhZ2UgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3NwZWxsX2NoZWNr
aW5nX2xhbmd1YWdlcyh3ZWJDb250ZXh0KTsKLSAgICBnX2Fzc2VydCghY3VycmVudExhbmd1YWdl
KTsKKyAgICBnX2Fzc2VydF9udWxsKGN1cnJlbnRMYW5ndWFnZSk7CiAKICAgICAvLyBTZXQgdGhl
IGxhbmd1YWdlIHRvIGEgc3BlY2lmaWMgb25lLgogICAgIEdSZWZQdHI8R1B0ckFycmF5PiBsYW5n
dWFnZXMgPSBhZG9wdEdSZWYoZ19wdHJfYXJyYXlfbmV3KCkpOwpAQCAtNDE1LDEzICs0MTUsMTMg
QEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRTcGVsbENoZWNrZXIoVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICBnX3B0cl9hcnJheV9hZGQobGFuZ3VhZ2VzLmdldCgpLCAwKTsKICAg
ICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X3NwZWxsX2NoZWNraW5nX2xhbmd1YWdlcyh3ZWJDb250
ZXh0LCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqIGNvbnN0Kj4obGFuZ3VhZ2VzLT5wZGF0
YSkpOwogICAgIGN1cnJlbnRMYW5ndWFnZSA9IHdlYmtpdF93ZWJfY29udGV4dF9nZXRfc3BlbGxf
Y2hlY2tpbmdfbGFuZ3VhZ2VzKHdlYkNvbnRleHQpOwotICAgIGdfYXNzZXJ0KCFjdXJyZW50TGFu
Z3VhZ2UpOworICAgIGdfYXNzZXJ0X251bGwoY3VycmVudExhbmd1YWdlKTsKIAogICAgIC8vIENo
ZWNrIGRpc2FibGluZyBhbmQgcmUtZW5hYmxpbmcgc3BlbGwgY2hlY2tpbmcuCiAgICAgd2Via2l0
X3dlYl9jb250ZXh0X3NldF9zcGVsbF9jaGVja2luZ19lbmFibGVkKHdlYkNvbnRleHQsIEZBTFNF
KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl9jb250ZXh0X2dldF9zcGVsbF9jaGVja2luZ19l
bmFibGVkKHdlYkNvbnRleHQpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX2NvbnRl
eHRfZ2V0X3NwZWxsX2NoZWNraW5nX2VuYWJsZWQod2ViQ29udGV4dCkpOwogICAgIHdlYmtpdF93
ZWJfY29udGV4dF9zZXRfc3BlbGxfY2hlY2tpbmdfZW5hYmxlZCh3ZWJDb250ZXh0LCBUUlVFKTsK
LSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3NwZWxsX2NoZWNraW5nX2VuYWJs
ZWQod2ViQ29udGV4dCkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl9jb250ZXh0X2dl
dF9zcGVsbF9jaGVja2luZ19lbmFibGVkKHdlYkNvbnRleHQpKTsKIH0KICNlbmRpZiAvLyBQTEFU
Rk9STShHVEspCiAKQEAgLTQzMyw3ICs0MzMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4
dExhbmd1YWdlcyhXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBzaXplX3Qg
bWFpblJlc291cmNlRGF0YVNpemUgPSAwOwogICAgIGNvbnN0IGNoYXIqIG1haW5SZXNvdXJjZURh
dGEgPSB0ZXN0LT5tYWluUmVzb3VyY2VEYXRhKG1haW5SZXNvdXJjZURhdGFTaXplKTsKICAgICBn
X2Fzc2VydF9jbXB1aW50KG1haW5SZXNvdXJjZURhdGFTaXplLCA9PSwgc3RybGVuKGV4cGVjdGVk
RGVmYXVsdExhbmd1YWdlKSk7Ci0gICAgZ19hc3NlcnQoIXN0cm5jbXAobWFpblJlc291cmNlRGF0
YSwgZXhwZWN0ZWREZWZhdWx0TGFuZ3VhZ2UsIG1haW5SZXNvdXJjZURhdGFTaXplKSk7CisgICAg
Z19hc3NlcnRfY21waW50KHN0cm5jbXAobWFpblJlc291cmNlRGF0YSwgZXhwZWN0ZWREZWZhdWx0
TGFuZ3VhZ2UsIG1haW5SZXNvdXJjZURhdGFTaXplKSwgPT0sIDApOwogCiAgICAgR1JlZlB0cjxH
UHRyQXJyYXk+IGxhbmd1YWdlcyA9IGFkb3B0R1JlZihnX3B0cl9hcnJheV9uZXcoKSk7CiAgICAg
Z19wdHJfYXJyYXlfYWRkKGxhbmd1YWdlcy5nZXQoKSwgY29uc3RfY2FzdDxncG9pbnRlcj4oc3Rh
dGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KCJlbiIpKSk7CkBAIC00NDgsMTUgKzQ0OCwxNSBAQCBzdGF0
aWMgdm9pZCB0ZXN0V2ViQ29udGV4dExhbmd1YWdlcyhXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKICAgICBtYWluUmVzb3VyY2VEYXRhU2l6ZSA9IDA7CiAgICAgbWFpblJlc291cmNl
RGF0YSA9IHRlc3QtPm1haW5SZXNvdXJjZURhdGEobWFpblJlc291cmNlRGF0YVNpemUpOwogICAg
IGdfYXNzZXJ0X2NtcHVpbnQobWFpblJlc291cmNlRGF0YVNpemUsID09LCBzdHJsZW4oZXhwZWN0
ZWRMYW5ndWFnZXMpKTsKLSAgICBnX2Fzc2VydCghc3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCBl
eHBlY3RlZExhbmd1YWdlcywgbWFpblJlc291cmNlRGF0YVNpemUpKTsKKyAgICBnX2Fzc2VydF9j
bXBpbnQoc3RybmNtcChtYWluUmVzb3VyY2VEYXRhLCBleHBlY3RlZExhbmd1YWdlcywgbWFpblJl
c291cmNlRGF0YVNpemUpLCA9PSwgMCk7CiAKICAgICAvLyBXaGVuIHVzaW5nIHRoZSBDIGxvY2Fs
ZSwgZW4tVVMgc2hvdWxkIGJlIHVzZWQgYXMgZGVmYXVsdC4KICAgICBjb25zdCBjaGFyKiBjTGFu
Z3VhZ2VbXSA9IHsgIkMiLCBudWxscHRyIH07CiAgICAgd2Via2l0X3dlYl9jb250ZXh0X3NldF9w
cmVmZXJyZWRfbGFuZ3VhZ2VzKHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwgY0xhbmd1YWdlKTsK
ICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJl
c3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxG
aW5pc2hlZCgiSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZSIs
ICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAg
Z19hc3NlcnQoIWVycm9yKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQp
OworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKICAgICBHVW5pcXVlUHRyPGNo
YXI+IGxvY2FsZShXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2Ny
aXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGxvY2FsZS5nZXQoKSwgPT0sIGV4cGVj
dGVkRGVmYXVsdExhbmd1YWdlKTsKIApAQCAtNDY0LDggKzQ2NCw4IEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJDb250ZXh0TGFuZ3VhZ2VzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ICAgIGNvbnN0IGNoYXIqIHBvc2l4TGFuZ3VhZ2VbXSA9IHsgIlBPU0lYIiwgbnVsbHB0ciB9Owog
ICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfcHJlZmVycmVkX2xhbmd1YWdlcyh0ZXN0LT5tX3dl
YkNvbnRleHQuZ2V0KCksIHBvc2l4TGFuZ3VhZ2UpOwogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0
ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIkludGwuRGF0ZVRpbWVGb3Jt
YXQoKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUiLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdf
YXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvcik7CisgICAgZ19h
c3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihl
cnJvci5nZXQoKSk7CiAgICAgbG9jYWxlLnJlc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVz
dWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIobG9j
YWxlLmdldCgpLCA9PSwgZXhwZWN0ZWREZWZhdWx0TGFuZ3VhZ2UpOwogCkBAIC00NzMsNyArNDcz
LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRMYW5ndWFnZXMoV2ViVmlld1Rlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgY29uc3QgY2hhciogaW52YWxpZExhbmd1YWdlW10gPSB7
ICJBIiwgbnVsbHB0ciB9OwogICAgIHdlYmtpdF93ZWJfY29udGV4dF9zZXRfcHJlZmVycmVkX2xh
bmd1YWdlcyh0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCksIGludmFsaWRMYW5ndWFnZSk7CiAgICAg
amF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hl
ZCgiSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZSIsICZlcnJv
ci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoIWphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNz
ZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgZ19hc3NlcnRfZXJyb3IoZXJyb3Iu
Z2V0KCksIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SLCBXRUJLSVRfSkFWQVNDUklQVF9FUlJPUl9T
Q1JJUFRfRkFJTEVEKTsKIH0KIApAQCAtNTI0LDI5ICs1MjQsMjkgQEAgcHVibGljOgogICAgIHZv
aWQgdmVyaWZ5VGhhdFNjaGVtZU1hdGNoZXNQb2xpY3koY29uc3QgY2hhciogc2NoZW1lLCB1bnNp
Z25lZCBwb2xpY3kpCiAgICAgewogICAgICAgICBpZiAocG9saWN5ICYgTG9jYWwpCi0gICAgICAg
ICAgICBnX2Fzc2VydCh3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlfc2NoZW1lX2lzX2xvY2Fs
KG1fbWFuYWdlciwgc2NoZW1lKSk7CisgICAgICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9z
ZWN1cml0eV9tYW5hZ2VyX3VyaV9zY2hlbWVfaXNfbG9jYWwobV9tYW5hZ2VyLCBzY2hlbWUpKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1cml0eV9tYW5h
Z2VyX3VyaV9zY2hlbWVfaXNfbG9jYWwobV9tYW5hZ2VyLCBzY2hlbWUpKTsKKyAgICAgICAgICAg
IGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3VyaV9zY2hlbWVfaXNfbG9j
YWwobV9tYW5hZ2VyLCBzY2hlbWUpKTsKICAgICAgICAgaWYgKHBvbGljeSAmIE5vQWNjZXNzKQot
ICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9p
c19ub19hY2Nlc3MobV9tYW5hZ2VyLCBzY2hlbWUpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3Ry
dWUod2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9pc19ub19hY2Nlc3MobV9tYW5h
Z2VyLCBzY2hlbWUpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtp
dF9zZWN1cml0eV9tYW5hZ2VyX3VyaV9zY2hlbWVfaXNfbm9fYWNjZXNzKG1fbWFuYWdlciwgc2No
ZW1lKSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2VjdXJpdHlfbWFuYWdl
cl91cmlfc2NoZW1lX2lzX25vX2FjY2VzcyhtX21hbmFnZXIsIHNjaGVtZSkpOwogICAgICAgICBp
ZiAocG9saWN5ICYgRGlzcGxheUlzb2xhdGVkKQotICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0
X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9pc19kaXNwbGF5X2lzb2xhdGVkKG1fbWFuYWdl
ciwgc2NoZW1lKSk7CisgICAgICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZWN1cml0eV9t
YW5hZ2VyX3VyaV9zY2hlbWVfaXNfZGlzcGxheV9pc29sYXRlZChtX21hbmFnZXIsIHNjaGVtZSkp
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X3NlY3VyaXR5X21h
bmFnZXJfdXJpX3NjaGVtZV9pc19kaXNwbGF5X2lzb2xhdGVkKG1fbWFuYWdlciwgc2NoZW1lKSk7
CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlf
c2NoZW1lX2lzX2Rpc3BsYXlfaXNvbGF0ZWQobV9tYW5hZ2VyLCBzY2hlbWUpKTsKICAgICAgICAg
aWYgKHBvbGljeSAmIFNlY3VyZSkKLSAgICAgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9zZWN1cml0
eV9tYW5hZ2VyX3VyaV9zY2hlbWVfaXNfc2VjdXJlKG1fbWFuYWdlciwgc2NoZW1lKSk7CisgICAg
ICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9zZWN1cml0eV9tYW5hZ2VyX3VyaV9zY2hlbWVf
aXNfc2VjdXJlKG1fbWFuYWdlciwgc2NoZW1lKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IGdfYXNzZXJ0KCF3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlfc2NoZW1lX2lzX3NlY3VyZSht
X21hbmFnZXIsIHNjaGVtZSkpOworICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3Nl
Y3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9pc19zZWN1cmUobV9tYW5hZ2VyLCBzY2hlbWUpKTsK
ICAgICAgICAgaWYgKHBvbGljeSAmIENPUlNFbmFibGVkKQotICAgICAgICAgICAgZ19hc3NlcnQo
d2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9pc19jb3JzX2VuYWJsZWQobV9tYW5h
Z2VyLCBzY2hlbWUpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NlY3VyaXR5
X21hbmFnZXJfdXJpX3NjaGVtZV9pc19jb3JzX2VuYWJsZWQobV9tYW5hZ2VyLCBzY2hlbWUpKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9zZWN1cml0eV9tYW5h
Z2VyX3VyaV9zY2hlbWVfaXNfY29yc19lbmFibGVkKG1fbWFuYWdlciwgc2NoZW1lKSk7CisgICAg
ICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfc2VjdXJpdHlfbWFuYWdlcl91cmlfc2NoZW1l
X2lzX2NvcnNfZW5hYmxlZChtX21hbmFnZXIsIHNjaGVtZSkpOwogICAgICAgICBpZiAocG9saWN5
ICYgRW1wdHlEb2N1bWVudCkKLSAgICAgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9zZWN1cml0eV9t
YW5hZ2VyX3VyaV9zY2hlbWVfaXNfZW1wdHlfZG9jdW1lbnQobV9tYW5hZ2VyLCBzY2hlbWUpKTsK
KyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3Nj
aGVtZV9pc19lbXB0eV9kb2N1bWVudChtX21hbmFnZXIsIHNjaGVtZSkpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVt
ZV9pc19lbXB0eV9kb2N1bWVudChtX21hbmFnZXIsIHNjaGVtZSkpOworICAgICAgICAgICAgZ19h
c3NlcnRfZmFsc2Uod2Via2l0X3NlY3VyaXR5X21hbmFnZXJfdXJpX3NjaGVtZV9pc19lbXB0eV9k
b2N1bWVudChtX21hbmFnZXIsIHNjaGVtZSkpOwogICAgIH0KIAogICAgIFdlYktpdFNlY3VyaXR5
TWFuYWdlciogbV9tYW5hZ2VyOwpAQCAtNTgyLDggKzU4Miw4IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJDb250ZXh0U2VjdXJpdHlQb2xpY3koU2VjdXJpdHlQb2xpY3lUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyCiAKIHN0YXRpYyB2b2lkIGNvbnNvbGVNZXNzYWdlUmVjZWl2ZWRDYWxsYmFjayhXZWJL
aXRVc2VyQ29udGVudE1hbmFnZXIqLCBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBtZXNzYWdlLCBW
ZWN0b3I8V2ViS2l0SmF2YXNjcmlwdFJlc3VsdCo+KiByZXN1bHQpCiB7Ci0gICAgZ19hc3NlcnQo
bWVzc2FnZSk7Ci0gICAgZ19hc3NlcnQocmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKG1l
c3NhZ2UpOworICAgIGdfYXNzZXJ0X25vbm51bGwocmVzdWx0KTsKICAgICByZXN1bHQtPmFwcGVu
ZCh3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfcmVmKG1lc3NhZ2UpKTsKIH0KIApAQCAtNjAzLDE4
ICs2MDMsMTggQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRTZWN1cml0eUZpbGVYSFIoV2Vi
Vmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgLy8gQnkgZGVmYXVsdCBmaWxlIGFj
Y2VzcyBpcyBub3QgYWxsb3dlZCwgdGhpcyB3aWxsIHNob3cgYSBjb25zb2xlIG1lc3NhZ2Ugd2l0
aCBhIGNyb3NzLW9yaWdpbiBlcnJvci4KICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7
CiAgICAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1
bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCh4aHIuZ2V0KCksICZlcnJvci5vdXRQdHIo
KSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVycm9y
KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0
X25vX2Vycm9yKGVycm9yLmdldCgpKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KGNvbnNvbGVNZXNz
YWdlcy5zaXplKCksID09LCAyKTsKICAgICBWZWN0b3I8R1VuaXF1ZVB0cjxjaGFyPiwgMj4gZXhw
ZWN0ZWRNZXNzYWdlczsKICAgICBleHBlY3RlZE1lc3NhZ2VzLmFwcGVuZChnX3N0cmR1cCgiQ3Jv
c3Mgb3JpZ2luIHJlcXVlc3RzIGFyZSBvbmx5IHN1cHBvcnRlZCBmb3IgSFRUUC4iKSk7CiAgICAg
ZXhwZWN0ZWRNZXNzYWdlcy5hcHBlbmQoZ19zdHJkdXBfcHJpbnRmKCJYTUxIdHRwUmVxdWVzdCBj
YW5ub3QgbG9hZCAlcyBkdWUgdG8gYWNjZXNzIGNvbnRyb2wgY2hlY2tzLiIsIGpzb25VUkwuZ2V0
KCkpKTsKICAgICB1bnNpZ25lZCBpID0gMDsKICAgICBmb3IgKGF1dG8qIGNvbnNvbGVNZXNzYWdl
IDogY29uc29sZU1lc3NhZ2VzKSB7Ci0gICAgICAgIGdfYXNzZXJ0KGNvbnNvbGVNZXNzYWdlKTsK
KyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChjb25zb2xlTWVzc2FnZSk7CiAgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4gbWVzc2FnZVN0cmluZyhXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRv
Q1N0cmluZyhjb25zb2xlTWVzc2FnZSkpOwogICAgICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJp
YW50ID0gZ192YXJpYW50X3BhcnNlKEdfVkFSSUFOVF9UWVBFKCIodXVzdXMpIiksIG1lc3NhZ2VT
dHJpbmcuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICBnX2Fzc2Vy
dCh2YXJpYW50LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbCh2YXJpYW50LmdldCgp
KTsKICAgICAgICAgdW5zaWduZWQgbGV2ZWw7CiAgICAgICAgIGNvbnN0IGNoYXIqIG1lc3NhZ2VU
ZXh0OwogICAgICAgICBnX3ZhcmlhbnRfZ2V0KHZhcmlhbnQuZ2V0KCksICIodXUmc3UmcykiLCBu
dWxscHRyLCAmbGV2ZWwsICZtZXNzYWdlVGV4dCwgbnVsbHB0ciwgbnVsbHB0cik7CkBAIC02Mjks
MjEgKzYyOSwyMSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFNlY3VyaXR5RmlsZVhIUihX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5sb2FkVVJJKGZpbGVV
UkwuZ2V0KCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIGphdmFz
Y3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoeGhy
LmdldCgpLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQp
OwotICAgIGdfYXNzZXJ0KCFlcnJvcik7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0
UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAKICAgICAvLyBJ
dCBpc24ndCBzdGlsbCBwb3NzaWJsZSB0byBsb2FkIGZpbGUgZnJvbSBhbiBIVFRQIFVSTC4KICAg
ICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkpOwogICAg
IHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0
ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoeGhyLmdldCgpLCAmZXJyb3Iu
b3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0
KCFlcnJvcik7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBn
X2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAgICAgaSA9IDA7CiAgICAgZm9yIChhdXRv
KiBjb25zb2xlTWVzc2FnZSA6IGNvbnNvbGVNZXNzYWdlcykgewotICAgICAgICBnX2Fzc2VydChj
b25zb2xlTWVzc2FnZSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoY29uc29sZU1lc3NhZ2Up
OwogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IG1lc3NhZ2VTdHJpbmcoV2ViVmlld1Rlc3Q6Omph
dmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoY29uc29sZU1lc3NhZ2UpKTsKICAgICAgICAgR1JlZlB0
cjxHVmFyaWFudD4gdmFyaWFudCA9IGdfdmFyaWFudF9wYXJzZShHX1ZBUklBTlRfVFlQRSgiKHV1
c3VzKSIpLCBtZXNzYWdlU3RyaW5nLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsK
LSAgICAgICAgZ19hc3NlcnQodmFyaWFudC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51
bGwodmFyaWFudC5nZXQoKSk7CiAgICAgICAgIHVuc2lnbmVkIGxldmVsOwogICAgICAgICBjb25z
dCBjaGFyKiBtZXNzYWdlVGV4dDsKICAgICAgICAgZ192YXJpYW50X2dldCh2YXJpYW50LmdldCgp
LCAiKHV1JnN1JnMpIiwgbnVsbHB0ciwgJmxldmVsLCAmbWVzc2FnZVRleHQsIG51bGxwdHIsIG51
bGxwdHIpOwpAQCAtNjg0LDEwICs2ODQsMTAgQEAgcHVibGljOgogICAgICAgICAvLyBhY3R1YWxs
eSBhIHByb3h5IHNlcnZlci4gV2UncmUgdGVzdGluZyB3aGV0aGVyIHRoZSBwcm94eSBzZXR0aW5n
cwogICAgICAgICAvLyB3b3JrLCBub3Qgd2hldGhlciB3ZSBjYW4gd3JpdGUgYSBzb3VwIHByb3h5
IHNlcnZlci4KICAgICAgICAgbV9wcm94eVNlcnZlci5ydW4oc2VydmVyQ2FsbGJhY2spOwotICAg
ICAgICBnX2Fzc2VydChtX3Byb3h5U2VydmVyLmJhc2VVUkkoKSk7CisgICAgICAgIGdfYXNzZXJ0
X25vbm51bGwobV9wcm94eVNlcnZlci5iYXNlVVJJKCkpOwogI2lmIFNPVVBfQ0hFQ0tfVkVSU0lP
TigyLCA2MSwgOTApCiAgICAgICAgIG1fcHJveHlTZXJ2ZXIuYWRkV2ViU29ja2V0SGFuZGxlcih3
ZWJTb2NrZXRQcm94eVNlcnZlckNhbGxiYWNrLCB0aGlzKTsKLSAgICAgICAgZ19hc3NlcnQobV9w
cm94eVNlcnZlci5iYXNlV2ViU29ja2V0VVJJKCkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxs
KG1fcHJveHlTZXJ2ZXIuYmFzZVdlYlNvY2tldFVSSSgpKTsKICNlbmRpZgogICAgIH0KIApAQCAt
NzU2LDcgKzc1Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJDb250ZXh0UHJveHlTZXR0aW5ncyhQ
cm94eVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgLy8gV2ViU29ja2V0IHJlcXVlc3Rz
IHNob3VsZCBhbHNvIGJlIHJlY2VpdmVkIGJ5IGtTZXJ2ZXIuCiAgICAga1NlcnZlci0+YWRkV2Vi
U29ja2V0SGFuZGxlcih3ZWJTb2NrZXRTZXJ2ZXJDYWxsYmFjaywgdGVzdCk7CiAgICAgYXV0byBz
ZXJ2ZXJUeXBlID0gdGVzdC0+Y3JlYXRlV2ViU29ja2V0QW5kV2FpdFVudGlsQ29ubmVjdGVkKCk7
Ci0gICAgZ19hc3NlcnQoc2VydmVyVHlwZSA9PSBQcm94eVRlc3Q6OldlYlNvY2tldFNlcnZlclR5
cGU6Ok5vUHJveHkpOworICAgIGdfYXNzZXJ0X3RydWUoc2VydmVyVHlwZSA9PSBQcm94eVRlc3Q6
OldlYlNvY2tldFNlcnZlclR5cGU6Ok5vUHJveHkpOwogI2VuZGlmCiAKICAgICAvLyBTZXQgZGVm
YXVsdCBwcm94eSBVUkkgdG8gcG9pbnQgdG8gcHJveHlTZXJ2ZXIuIFJlcXVlc3RzIHRvIGtTZXJ2
ZXIgc2hvdWxkIGJlIHJlY2VpdmVkIGJ5IHByb3h5U2VydmVyIGluc3RlYWQuCkBAIC03NzEsNyAr
NzcxLDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkNvbnRleHRQcm94eVNldHRpbmdzKFByb3h5VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICNpZiBTT1VQX0NIRUNLX1ZFUlNJT04oMiwgNjEsIDkw
KQogICAgIC8vIFdlYlNvY2tldCByZXF1ZXN0cyBzaG91bGQgYWxzbyBiZSByZWNlaXZlZCBieSBw
cm94eVNlcnZlci4KICAgICBzZXJ2ZXJUeXBlID0gdGVzdC0+Y3JlYXRlV2ViU29ja2V0QW5kV2Fp
dFVudGlsQ29ubmVjdGVkKCk7Ci0gICAgZ19hc3NlcnQoc2VydmVyVHlwZSA9PSBQcm94eVRlc3Q6
OldlYlNvY2tldFNlcnZlclR5cGU6OlByb3h5KTsKKyAgICBnX2Fzc2VydF90cnVlKHNlcnZlclR5
cGUgPT0gUHJveHlUZXN0OjpXZWJTb2NrZXRTZXJ2ZXJUeXBlOjpQcm94eSk7CiAjZW5kaWYKIAog
ICAgIC8vIFByb3h5IHNldHRpbmdzIGFsc28gYWZmZWN0IGVwaGVtZXJhbCB3ZWIgdmlld3MuCkBA
IC03ODIsMTggKzc4MiwxOCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViQ29udGV4dFByb3h5U2V0dGlu
Z3MoUHJveHlUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAgICAid2ViLWNvbnRleHQi
LCB0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCksCiAgICAgICAgICJpcy1lcGhlbWVyYWwiLCBUUlVF
LAogICAgICAgICBudWxscHRyKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2Vw
aGVtZXJhbCh3ZWJWaWV3LmdldCgpKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfY29udGV4
dF9pc19lcGhlbWVyYWwod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcuZ2V0KCkp
KSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfaXNfZXBoZW1lcmFsKHdlYlZp
ZXcuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX2NvbnRleHRfaXNfZXBo
ZW1lcmFsKHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJWaWV3LmdldCgpKSkpOwogCiAg
ICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LmdldCgpLCAibG9hZC1jaGFuZ2VkIiwgR19DQUxM
QkFDSyhlcGhlbWVyYWxWaWV3bG9hZENoYW5nZWQpLCB0ZXN0KTsKICAgICB3ZWJraXRfd2ViX3Zp
ZXdfbG9hZF91cmkod2ViVmlldy5nZXQoKSwga1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2VjaG9Q
b3J0IikuZGF0YSgpKTsKICAgICBnX21haW5fbG9vcF9ydW4odGVzdC0+bV9tYWluTG9vcCk7CiAg
ICAgV2ViS2l0V2ViUmVzb3VyY2UqIHJlc291cmNlID0gd2Via2l0X3dlYl92aWV3X2dldF9tYWlu
X3Jlc291cmNlKHdlYlZpZXcuZ2V0KCkpOwotICAgIGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfUkVT
T1VSQ0UocmVzb3VyY2UpKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19XRUJfUkVTT1VS
Q0UocmVzb3VyY2UpKTsKICAgICB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9kYXRhKHJlc291cmNl
LCBudWxscHRyLCBbXShHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9p
bnRlciB1c2VyRGF0YSkgewogICAgICAgICBzaXplX3QgZGF0YVNpemU7CiAgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4gZGF0YShyZWludGVycHJldF9jYXN0PGNoYXIqPih3ZWJraXRfd2ViX3Jlc291
cmNlX2dldF9kYXRhX2ZpbmlzaChXRUJLSVRfV0VCX1JFU09VUkNFKG9iamVjdCksIHJlc3VsdCwg
JmRhdGFTaXplLCBudWxscHRyKSkpOwotICAgICAgICBnX2Fzc2VydChkYXRhKTsKKyAgICAgICAg
Z19hc3NlcnRfbm9ubnVsbChkYXRhKTsKICAgICAgICAgYXV0byogdGVzdCA9IHN0YXRpY19jYXN0
PFByb3h5VGVzdCo+KHVzZXJEYXRhKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBwcm94eVNl
cnZlclBvcnRBc1N0cmluZyA9IHRlc3QtPnByb3h5U2VydmVyUG9ydEFzU3RyaW5nKCk7CiAgICAg
ICAgIEFTU0VSVF9DTVBfQ1NUUklORyhDU3RyaW5nKGRhdGEuZ2V0KCksIGRhdGFTaXplKSwgPT0s
IHByb3h5U2VydmVyUG9ydEFzU3RyaW5nLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4
IGQ3NTczNDFiMGZiYTM0ZjI3MmYyNjhkOGQzMzM5NmM3N2ZlODcwMDUuLjU0ZjE5N2I4ODMzNjdh
YmIyNTAyNjBlNDAyZWJmNWI5ZmRhNmM0ZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtNDUs
OCArNDUsOCBAQCBzdGF0aWMgV2ViS2l0VGVzdFNlcnZlciogZ1NlcnZlcjsKIAogc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdXZWJDb250ZXh0KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogewotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh0ZXN0LT5tX3dl
YlZpZXcpID09IHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0
X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCkgIT0gdGVzdC0+bV93ZWJDb250ZXh0LmdldCgpKTsK
KyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh0ZXN0LT5tX3dl
YlZpZXcpID09IHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3
ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1bHQoKSAhPSB0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0
KCkpOwogCiAgICAgLy8gQ2hlY2sgdGhhdCBhIHdlYiB2aWV3IGNyZWF0ZWQgd2l0aCBnX29iamVj
dF9uZXcgaGFzIHRoZSBkZWZhdWx0IGNvbnRleHQuCiAgICAgYXV0byB3ZWJWaWV3ID0gVGVzdDo6
YWRvcHRWaWV3KGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfVklFVywKQEAgLTU0LDExICs1
NCwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1dlYkNvbnRleHQoV2ViVmlld1Rlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiAgICAgICAgICJiYWNrZW5kIiwgVGVzdDo6Y3JlYXRlV2ViVmll
d0JhY2tlbmQoKSwKICNlbmRpZgogICAgICAgICBudWxscHRyKSk7Ci0gICAgZ19hc3NlcnQod2Vi
a2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcuZ2V0KCkpID09IHdlYmtpdF93ZWJfY29u
dGV4dF9nZXRfZGVmYXVsdCgpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19n
ZXRfY29udGV4dCh3ZWJWaWV3LmdldCgpKSA9PSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X2RlZmF1
bHQoKSk7CiAKICAgICAvLyBDaGVjayB0aGF0IGEgd2ViIHZpZXcgY3JlYXRlZCB3aXRoIGEgcmVs
YXRlZCB2aWV3IGhhcyB0aGUgcmVsYXRlZCB2aWV3IGNvbnRleHQuCiAgICAgd2ViVmlldyA9IFRl
c3Q6OmFkb3B0VmlldyhUZXN0OjpjcmVhdGVXZWJWaWV3KHRlc3QtPm1fd2ViVmlldykpOwotICAg
IGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJWaWV3LmdldCgpKSA9PSB0
ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92
aWV3X2dldF9jb250ZXh0KHdlYlZpZXcuZ2V0KCkpID09IHRlc3QtPm1fd2ViQ29udGV4dC5nZXQo
KSk7CiAKICAgICAvLyBDaGVjayB0aGF0IGEgd2ViIGNvbnRleHQgZ2l2ZW4gYXMgY29uc3RydWN0
IHBhcmFtZXRlciBpcyBpZ25vcmVkIGlmIGEgcmVsYXRlZCB2aWV3IGlzIGFsc28gcHJvdmlkZWQu
CiAgICAgd2ViVmlldyA9IFRlc3Q6OmFkb3B0VmlldyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX1ZJRVcsCkBAIC02OCw3ICs2OCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3V2ViQ29u
dGV4dChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAgICAgIndlYi1jb250
ZXh0Iiwgd2Via2l0X3dlYl9jb250ZXh0X2dldF9kZWZhdWx0KCksCiAgICAgICAgICJyZWxhdGVk
LXZpZXciLCB0ZXN0LT5tX3dlYlZpZXcsCiAgICAgICAgIG51bGxwdHIpKTsKLSAgICBnX2Fzc2Vy
dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2ViVmlldy5nZXQoKSkgPT0gdGVzdC0+bV93
ZWJDb250ZXh0LmdldCgpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19nZXRf
Y29udGV4dCh3ZWJWaWV3LmdldCgpKSA9PSB0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCkpOwogfQog
CiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1dlYkNvbnRleHRMaWZldGltZShXZWJWaWV3VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTE0MCw5ICsxNDAsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld1dlYkJhY2tlbmQoVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBHUmVmUHRy
PFdlYktpdFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdEdSZWYod2Via2l0X3dlYl92aWV3X25ldyh3
ZWJraXRfd2ViX3ZpZXdfYmFja2VuZF9uZXcod3BlX3ZpZXdfYmFja2VuZF9jcmVhdGVfd2l0aF9i
YWNrZW5kX2ludGVyZmFjZSgmc190ZXN0aW5nSW50ZXJmYWNlLCBudWxscHRyKSwgbnVsbHB0ciwg
bnVsbHB0cikpKTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlz
aGVzKEdfT0JKRUNUKHdlYlZpZXcuZ2V0KCkpKTsKICAgICBhdXRvKiB2aWV3QmFja2VuZCA9IHdl
YmtpdF93ZWJfdmlld19nZXRfYmFja2VuZCh3ZWJWaWV3LmdldCgpKTsKLSAgICBnX2Fzc2VydCh2
aWV3QmFja2VuZCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbCh2aWV3QmFja2VuZCk7CiAgICAgYXV0
byogd3BlQmFja2VuZCA9IHdlYmtpdF93ZWJfdmlld19iYWNrZW5kX2dldF93cGVfYmFja2VuZCh2
aWV3QmFja2VuZCk7Ci0gICAgZ19hc3NlcnQod3BlQmFja2VuZCk7CisgICAgZ19hc3NlcnRfbm9u
bnVsbCh3cGVCYWNrZW5kKTsKICAgICB3ZWJWaWV3ID0gbnVsbHB0cjsKIAogICAgIC8vIFVzZXIg
cHJvdmlkZWQgYmFja2VuZCB3aXRoIGRlc3Ryb3kgbm90aWZ5LgpAQCAtMTU0LDcgKzE1NCw3IEBA
IHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3V2ViQmFja2VuZChUZXN0KiB0ZXN0LCBnY29uc3Rwb2lu
dGVyKQogICAgIH0sICZ3cGVCYWNrZW5kKSkpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVs
ZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2ViVmlldy5nZXQoKSkpOwogICAgIHdlYlZp
ZXcgPSBudWxscHRyOwotICAgIGdfYXNzZXJ0KCF3cGVCYWNrZW5kKTsKKyAgICBnX2Fzc2VydF9u
dWxsKHdwZUJhY2tlbmQpOwogCiAgICAgLy8gVXNlciBwcm92aWRlZCBiYWNrZW5kIG93bmVkIGJ5
IGFub3RoZXIgb2JqZWN0IHdpdGggZGVzdHJveSBub3RpZnkuCiAgICAgc3RhdGljIGJvb2wgaGFz
SW5zdGFuY2UgPSBmYWxzZTsKQEAgLTE3NCwxNCArMTc0LDE0IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3V2ViQmFja2VuZChUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgICAgICBzdHJ1
Y3Qgd3BlX3ZpZXdfYmFja2VuZCogYmFja2VuZDsKICAgICB9OwogICAgIGF1dG8qIG93bmVyID0g
bmV3IEJhY2tlbmRPd25lcih3cGVfdmlld19iYWNrZW5kX2NyZWF0ZV93aXRoX2JhY2tlbmRfaW50
ZXJmYWNlKCZzX3Rlc3RpbmdJbnRlcmZhY2UsIG51bGxwdHIpKTsKLSAgICBnX2Fzc2VydChoYXNJ
bnN0YW5jZSk7CisgICAgZ19hc3NlcnRfdHJ1ZShoYXNJbnN0YW5jZSk7CiAgICAgd2ViVmlldyA9
IGFkb3B0R1JlZih3ZWJraXRfd2ViX3ZpZXdfbmV3KHdlYmtpdF93ZWJfdmlld19iYWNrZW5kX25l
dyhvd25lci0+YmFja2VuZCwgW10oZ3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgZGVsZXRl
IHN0YXRpY19jYXN0PEJhY2tlbmRPd25lcio+KHVzZXJEYXRhKTsKICAgICB9LCBvd25lcikpKTsK
ICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNU
KHdlYlZpZXcuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydChoYXNJbnN0YW5jZSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZShoYXNJbnN0YW5jZSk7CiAgICAgd2ViVmlldyA9IG51bGxwdHI7Ci0gICAgZ19hc3Nl
cnQoIWhhc0luc3RhbmNlKTsKKyAgICBnX2Fzc2VydF9mYWxzZShoYXNJbnN0YW5jZSk7CiB9CiAj
ZW5kaWYgLy8gUExBVEZPUk0oV1BFKQogCkBAIC0xOTUsMTEgKzE5NSwxMSBAQCBzdGF0aWMgdm9p
ZCBlcGhlbWVyYWxWaWV3bG9hZENoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0
TG9hZEV2ZW50IGxvYQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VwaGVtZXJhbChXZWJWaWV3
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92
aWV3X2lzX2VwaGVtZXJhbCh0ZXN0LT5tX3dlYlZpZXcpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0
X3dlYl9jb250ZXh0X2lzX2VwaGVtZXJhbCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQodGVz
dC0+bV93ZWJWaWV3KSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19pc19l
cGhlbWVyYWwodGVzdC0+bV93ZWJWaWV3KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dl
Yl9jb250ZXh0X2lzX2VwaGVtZXJhbCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQodGVzdC0+
bV93ZWJWaWV3KSkpOwogICAgIGF1dG8qIG1hbmFnZXIgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSk7Ci0gICAgZ19h
c3NlcnQoIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhlbWVyYWwobWFuYWdlcikp
OwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIo
dGVzdC0+bV93ZWJWaWV3KSA9PSBtYW5hZ2VyKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfaXNfZXBoZW1lcmFsKG1hbmFnZXIpKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKHdlYmtpdF93ZWJfdmlld19nZXRfd2Vic2l0ZV9kYXRhX21hbmFnZXIodGVzdC0+bV93
ZWJWaWV3KSA9PSBtYW5hZ2VyKTsKICAgICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xl
YXIobWFuYWdlciwgV0VCS0lUX1dFQlNJVEVfREFUQV9ESVNLX0NBQ0hFLCAwLCBudWxscHRyLCBb
XShHT2JqZWN0KiBtYW5hZ2VyLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRh
dGEpIHsKICAgICAgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyX2ZpbmlzaChX
RUJLSVRfV0VCU0lURV9EQVRBX01BTkFHRVIobWFuYWdlciksIHJlc3VsdCwgbnVsbHB0cik7CiAg
ICAgICAgIHN0YXRpY19jYXN0PFdlYlZpZXdUZXN0Kj4odXNlckRhdGEpLT5xdWl0TWFpbkxvb3Ao
KTsKQEAgLTIxNCw5ICsyMTQsOSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VwaGVtZXJhbChX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAgICAgIndlYi1jb250ZXh0Iiwg
d2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldyksCiAgICAgICAgICJp
cy1lcGhlbWVyYWwiLCBUUlVFLAogICAgICAgICBudWxscHRyKSk7Ci0gICAgZ19hc3NlcnQod2Vi
a2l0X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh3ZWJWaWV3LmdldCgpKSk7Ci0gICAgZ19hc3NlcnQo
IXdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwod2Via2l0X3dlYl92aWV3X2dldF9jb250
ZXh0KHdlYlZpZXcuZ2V0KCkpKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF93
ZWJzaXRlX2RhdGFfbWFuYWdlcih3ZWJWaWV3LmdldCgpKSAhPSBtYW5hZ2VyKTsKKyAgICBnX2Fz
c2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwod2ViVmlldy5nZXQoKSkpOwor
ICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfY29udGV4dF9pc19lcGhlbWVyYWwod2Via2l0
X3dlYl92aWV3X2dldF9jb250ZXh0KHdlYlZpZXcuZ2V0KCkpKSk7CisgICAgZ19hc3NlcnRfdHJ1
ZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYlZpZXcuZ2V0KCkp
ICE9IG1hbmFnZXIpOwogCiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LmdldCgpLCAibG9h
ZC1jaGFuZ2VkIiwgR19DQUxMQkFDSyhlcGhlbWVyYWxWaWV3bG9hZENoYW5nZWQpLCB0ZXN0KTsK
ICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkod2ViVmlldy5nZXQoKSwgZ1NlcnZlci0+Z2V0
VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CkBAIC0yMjksNyArMjI5LDcgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdFcGhlbWVyYWwoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAK
ICAgICB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZmV0Y2gobWFuYWdlciwgV0VCS0lUX1dF
QlNJVEVfREFUQV9ESVNLX0NBQ0hFLCBudWxscHRyLCBbXShHT2JqZWN0KiBtYW5hZ2VyLCBHQXN5
bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpIHsKICAgICAgICAgYXV0byogdGVz
dCA9IHN0YXRpY19jYXN0PFdlYlZpZXdUZXN0Kj4odXNlckRhdGEpOwotICAgICAgICBnX2Fzc2Vy
dCghd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2ZldGNoX2ZpbmlzaChXRUJLSVRfV0VCU0lU
RV9EQVRBX01BTkFHRVIobWFuYWdlciksIHJlc3VsdCwgbnVsbHB0cikpOworICAgICAgICBnX2Fz
c2VydF9udWxsKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9mZXRjaF9maW5pc2goV0VCS0lU
X1dFQlNJVEVfREFUQV9NQU5BR0VSKG1hbmFnZXIpLCByZXN1bHQsIG51bGxwdHIpKTsKICAgICAg
ICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7CiAgICAgfSwgdGVzdCk7CiAgICAgZ19tYWluX2xvb3Bf
cnVuKHRlc3QtPm1fbWFpbkxvb3ApOwpAQCAtMjM5LDcgKzIzOSw3IEBAIHN0YXRpYyB2b2lkIHRl
c3RXZWJWaWV3Q3VzdG9tQ2hhcnNldChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
IHsKICAgICB0ZXN0LT5sb2FkVVJJKGdTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5kYXRhKCkp
OwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KCF3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2N1c3RvbV9jaGFyc2V0KHRlc3QtPm1fd2ViVmlldykpOworICAgIGdf
YXNzZXJ0X251bGwod2Via2l0X3dlYl92aWV3X2dldF9jdXN0b21fY2hhcnNldCh0ZXN0LT5tX3dl
YlZpZXcpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2N1c3RvbV9jaGFyc2V0KHRlc3QtPm1f
d2ViVmlldywgInV0ZjgiKTsKICAgICAvLyBDaGFuZ2luZyB0aGUgY2hhcnNldCByZWxvYWRzIHRo
ZSBwYWdlLCBzbyB3YWl0IHVudGlsIHJlbG9hZGVkLgogICAgIHRlc3QtPndhaXRVbnRpbExvYWRG
aW5pc2hlZCgpOwpAQCAtMjQ4LDE1ICsyNDgsMTUgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdD
dXN0b21DaGFyc2V0KFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIC8vIEdv
IGJhY2sgdG8gdGhlIGRlZmF1bHQgY2hhcnNldCBhbmQgd2FpdCB1bnRpbCByZWxvYWRlZC4KICAg
ICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2N1c3RvbV9jaGFyc2V0KHRlc3QtPm1fd2ViVmlldywgbnVs
bHB0cik7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAgZ19hc3NlcnQo
IXdlYmtpdF93ZWJfdmlld19nZXRfY3VzdG9tX2NoYXJzZXQodGVzdC0+bV93ZWJWaWV3KSk7Cisg
ICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2N1c3RvbV9jaGFyc2V0KHRlc3Qt
Pm1fd2ViVmlldykpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1NldHRpbmdzKFdlYlZp
ZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIFdlYktpdFNldHRpbmdzKiBkZWZh
dWx0U2V0dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHRlc3QtPm1fd2ViVmll
dyk7CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09C
SkVDVChkZWZhdWx0U2V0dGluZ3MpKTsKLSAgICBnX2Fzc2VydChkZWZhdWx0U2V0dGluZ3MpOwot
ICAgIGdfYXNzZXJ0KHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoZGVmYXVs
dFNldHRpbmdzKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkZWZhdWx0U2V0dGluZ3MpOworICAg
IGdfYXNzZXJ0X3RydWUod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChkZWZh
dWx0U2V0dGluZ3MpKTsKIAogICAgIEdSZWZQdHI8V2ViS2l0U2V0dGluZ3M+IG5ld1NldHRpbmdz
ID0gYWRvcHRHUmVmKHdlYmtpdF9zZXR0aW5nc19uZXcoKSk7CiAgICAgdGVzdC0+YXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChuZXdTZXR0aW5ncy5nZXQoKSkp
OwpAQCAtMjY0LDI0ICsyNjQsMjQgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdTZXR0aW5ncyhX
ZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0
X3NldHRpbmdzKHRlc3QtPm1fd2ViVmlldywgbmV3U2V0dGluZ3MuZ2V0KCkpOwogCiAgICAgV2Vi
S2l0U2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh0ZXN0
LT5tX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KHNldHRpbmdzICE9IGRlZmF1bHRTZXR0aW5ncyk7
Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0
dGluZ3MpKTsKKyAgICBnX2Fzc2VydF90cnVlKHNldHRpbmdzICE9IGRlZmF1bHRTZXR0aW5ncyk7
CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlw
dChzZXR0aW5ncykpOwogCiAgICAgYXV0byB3ZWJWaWV3MiA9IFRlc3Q6OmFkb3B0VmlldyhUZXN0
OjpjcmVhdGVXZWJWaWV3KCkpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5U
ZXN0RmluaXNoZXMoR19PQkpFQ1Qod2ViVmlldzIuZ2V0KCkpKTsKICAgICB3ZWJraXRfd2ViX3Zp
ZXdfc2V0X3NldHRpbmdzKFdFQktJVF9XRUJfVklFVyh3ZWJWaWV3Mi5nZXQoKSksIHNldHRpbmdz
KTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKFdFQktJVF9XRUJf
VklFVyh3ZWJWaWV3Mi5nZXQoKSkpID09IHNldHRpbmdzKTsKKyAgICBnX2Fzc2VydF90cnVlKHdl
YmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3MoV0VCS0lUX1dFQl9WSUVXKHdlYlZpZXcyLmdldCgp
KSkgPT0gc2V0dGluZ3MpOwogCiAgICAgR1JlZlB0cjxXZWJLaXRTZXR0aW5ncz4gbmV3U2V0dGlu
Z3MyID0gYWRvcHRHUmVmKHdlYmtpdF9zZXR0aW5nc19uZXcoKSk7CiAgICAgdGVzdC0+YXNzZXJ0
T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChuZXdTZXR0aW5nczIuZ2V0
KCkpKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X3NldHRpbmdzKFdFQktJVF9XRUJfVklFVyh3
ZWJWaWV3Mi5nZXQoKSksIG5ld1NldHRpbmdzMi5nZXQoKSk7CiAgICAgc2V0dGluZ3MgPSB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKFdFQktJVF9XRUJfVklFVyh3ZWJWaWV3Mi5nZXQoKSkp
OwotICAgIGdfYXNzZXJ0KHNldHRpbmdzID09IG5ld1NldHRpbmdzMi5nZXQoKSk7Ci0gICAgZ19h
c3NlcnQod2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfamF2YXNjcmlwdChzZXR0aW5ncykpOwor
ICAgIGdfYXNzZXJ0X3RydWUoc2V0dGluZ3MgPT0gbmV3U2V0dGluZ3MyLmdldCgpKTsKKyAgICBn
X2Fzc2VydF90cnVlKHdlYmtpdF9zZXR0aW5nc19nZXRfZW5hYmxlX2phdmFzY3JpcHQoc2V0dGlu
Z3MpKTsKIAogICAgIGF1dG8gd2ViVmlldzMgPSBUZXN0OjphZG9wdFZpZXcoVGVzdDo6Y3JlYXRl
V2ViVmlldyhuZXdTZXR0aW5nczIuZ2V0KCkpKTsKICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYlZpZXczLmdldCgpKSk7Ci0gICAgZ19h
c3NlcnQod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhXRUJLSVRfV0VCX1ZJRVcod2ViVmll
dzMuZ2V0KCkpKSA9PSBuZXdTZXR0aW5nczIuZ2V0KCkpOworICAgIGdfYXNzZXJ0X3RydWUod2Vi
a2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhXRUJLSVRfV0VCX1ZJRVcod2ViVmlldzMuZ2V0KCkp
KSA9PSBuZXdTZXR0aW5nczIuZ2V0KCkpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1pv
b21MZXZlbChXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTMwMyw5OCArMzAz
LDk4IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3UnVuSmF2YVNjcmlwdChXZWJWaWV3VGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsK
ICAgICBXZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVu
SmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ1dlYktpdExpbmsnKS50aXRsZTsiLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNz
ZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJl
c3VsdCk7CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhH
X09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRS
ZXN1bHQpKSk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub19l
cnJvcihlcnJvci5nZXQoKSk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiB2YWx1ZVN0cmluZyhXZWJW
aWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAg
ICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgpLCA9PSwgIldlYktpdEdUSysgVGl0
bGUiKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2Fp
dFVudGlsRmluaXNoZWQoIndpbmRvdy5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnV2ViS2l0TGlu
aycpLmhyZWY7IiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVz
dWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOwogICAgIHRlc3Qt
PmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2ph
dmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwotICAgIGdf
YXNzZXJ0KCFlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkp
OwogICAgIHZhbHVlU3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9D
U3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJp
bmcuZ2V0KCksID09LCAiaHR0cDovL3d3dy53ZWJraXRndGsub3JnLyIpOwogCiAgICAgamF2YXNj
cmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgid2lu
ZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdXZWJLaXRMaW5rJykudGV4dENvbnRlbnQiLCAm
ZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdf
YXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0
SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9yZXN1
bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7Ci0gICAgZ19hc3NlcnQoIWVycm9y
LmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAgICAgdmFsdWVT
dHJpbmcucmVzZXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNj
cmlwdFJlc3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0s
ICJXZWJLaXRHVEsrIFdlYnNpdGUiKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5y
dW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImEgPSAyNTsiLCAmZXJyb3Iub3V0UHRy
KCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vbm51
bGwoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hl
blRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3Zh
bHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAg
ICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQo
V2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihqYXZhc2NyaXB0UmVzdWx0KSwg
PT0sIDI1KTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5k
V2FpdFVudGlsRmluaXNoZWQoImEgPSAyLjU7IiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fz
c2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRS
ZXN1bHQpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMo
R19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0
UmVzdWx0KSkpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9f
ZXJyb3IoZXJyb3IuZ2V0KCkpOwogICAgIGdfYXNzZXJ0X2NtcGZsb2F0KFdlYlZpZXdUZXN0Ojpq
YXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIoamF2YXNjcmlwdFJlc3VsdCksID09LCAyLjUpOwogCiAg
ICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5p
c2hlZCgiYSA9IHRydWUiLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3Jp
cHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAg
dGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJr
aXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7Ci0g
ICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKLSAgICBnX2Fzc2VydChXZWJWaWV3VGVzdDo6amF2
YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRf
bm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X3RydWUoV2ViVmlld1Rlc3Q6Omph
dmFzY3JpcHRSZXN1bHRUb0Jvb2xlYW4oamF2YXNjcmlwdFJlc3VsdCkpOwogCiAgICAgamF2YXNj
cmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiYSA9
IGZhbHNlIiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0
KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOwogICAgIHRlc3QtPmFz
c2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFz
Y3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwotICAgIGdfYXNz
ZXJ0KCFlcnJvci5nZXQoKSk7Ci0gICAgZ19hc3NlcnQoIVdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0
UmVzdWx0VG9Cb29sZWFuKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9ub19lcnJv
cihlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfZmFsc2UoV2ViVmlld1Rlc3Q6OmphdmFzY3Jp
cHRSZXN1bHRUb0Jvb2xlYW4oamF2YXNjcmlwdFJlc3VsdCkpOwogCiAgICAgamF2YXNjcmlwdFJl
c3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiYSA9IG51bGwi
LCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOworICAg
IGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgdGVzdC0+YXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRfamF2YXNjcmlwdF9y
ZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7Ci0gICAgZ19hc3NlcnQoIWVy
cm9yLmdldCgpKTsKLSAgICBnX2Fzc2VydChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdElz
TnVsbChqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0
KCkpOworICAgIGdfYXNzZXJ0X3RydWUoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRJc051
bGwoamF2YXNjcmlwdFJlc3VsdCkpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1
bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZnVuY3Rpb24gRm9vKCkgeyBhID0gMjU7
IH0gRm9vKCk7IiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVz
dWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFzY3JpcHRSZXN1bHQpOwogICAgIHRlc3Qt
PmFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2ph
dmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwotICAgIGdf
YXNzZXJ0KCFlcnJvci5nZXQoKSk7Ci0gICAgZ19hc3NlcnQoV2ViVmlld1Rlc3Q6OmphdmFzY3Jp
cHRSZXN1bHRJc1VuZGVmaW5lZChqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfbm9f
ZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X3RydWUoV2ViVmlld1Rlc3Q6OmphdmFz
Y3JpcHRSZXN1bHRJc1VuZGVmaW5lZChqYXZhc2NyaXB0UmVzdWx0KSk7CiAKICAgICBqYXZhc2Ny
aXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEZyb21HUmVzb3VyY2VBbmRXYWl0VW50aWxG
aW5pc2hlZCgiL29yZy93ZWJraXQvZ2xpYi90ZXN0cy9saW5rLXRpdGxlLmpzIiwgJmVycm9yLm91
dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9u
b25udWxsKGphdmFzY3JpcHRSZXN1bHQpOwogICAgIHRlc3QtPmFzc2VydE9iamVjdElzRGVsZXRl
ZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X2phdmFzY3JpcHRfcmVzdWx0X2dldF9q
c192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KSkpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7
CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwogICAgIHZhbHVlU3RyaW5nLnJl
c2V0KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1
bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIodmFsdWVTdHJpbmcuZ2V0KCksID09LCAiV2ViS2l0
R1RLKyBUaXRsZSIpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3Jp
cHRGcm9tR1Jlc291cmNlQW5kV2FpdFVudGlsRmluaXNoZWQoIi93cm9uZy9wYXRoL3RvL3Jlc291
cmNlLmpzIiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydCghamF2YXNjcmlwdFJlc3Vs
dCk7CisgICAgZ19hc3NlcnRfbnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydF9l
cnJvcihlcnJvci5nZXQoKSwgR19SRVNPVVJDRV9FUlJPUiwgR19SRVNPVVJDRV9FUlJPUl9OT1Rf
Rk9VTkQpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRX
YWl0VW50aWxGaW5pc2hlZCgiZm9vKCk7IiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2Vy
dCghamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbnVsbChqYXZhc2NyaXB0UmVzdWx0
KTsKICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJS
T1IsIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SX1NDUklQVF9GQUlMRUQpOwogCiAgICAgLy8gVmFs
dWVzIG9mIHRoZSBtYWluIHdvcmxkIGFyZSBub3QgYXZhaWxhYmxlIGluIHRoZSBpc29sYXRlZCBv
bmUuCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRJbldvcmxkQW5k
V2FpdFVudGlsRmluaXNoZWQoImEiLCAiV2ViRXh0ZW5zaW9uVGVzdFNjcmlwdFdvcmxkIiwgJmVy
cm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydCghamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19h
c3NlcnRfbnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5n
ZXQoKSwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1IsIFdFQktJVF9KQVZBU0NSSVBUX0VSUk9SX1ND
UklQVF9GQUlMRUQpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3Jp
cHRJbldvcmxkQW5kV2FpdFVudGlsRmluaXNoZWQoImEgPSA1MCIsICJXZWJFeHRlbnNpb25UZXN0
U2NyaXB0V29ybGQiLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRS
ZXN1bHQpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CiAgICAgdGVz
dC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRf
amF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpKSk7Ci0gICAg
Z19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQo
KSk7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRU
b051bWJlcihqYXZhc2NyaXB0UmVzdWx0KSwgPT0sIDUwKTsKIAogICAgIC8vIFZhbHVlcyBvZiB0
aGUgaXNvbGF0ZWQgd29ybGQgYXJlIG5vdCBhdmFpbGFibGUgaW4gdGhlIG5vcm1hbCBvbmUuCiAg
ICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5p
c2hlZCgiYSIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3Vs
dCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKICAgICB0ZXN0LT5h
c3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdlYmtpdF9qYXZh
c2NyaXB0X3Jlc3VsdF9nZXRfanNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCkpKTsKLSAgICBnX2Fz
c2VydCghZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsK
ICAgICBnX2Fzc2VydF9jbXBmbG9hdChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvTnVt
YmVyKGphdmFzY3JpcHRSZXN1bHQpLCA9PSwgMjUpOwogCiAgICAgLy8gUnVubmluZyBhIHNjcmlw
dCBpbiBhIHdvcmxkIHRoYXQgZG9lc24ndCBleGlzdCBzaG91bGQgZmFpbC4KICAgICBqYXZhc2Ny
aXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEluV29ybGRBbmRXYWl0VW50aWxGaW5pc2hl
ZCgiYSIsICJJbnZhbGlkU2NyaXB0V29ybGQiLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNz
ZXJ0KCFqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9udWxsKGphdmFzY3JpcHRSZXN1
bHQpOwogICAgIGdfYXNzZXJ0X2Vycm9yKGVycm9yLmdldCgpLCBXRUJLSVRfSkFWQVNDUklQVF9F
UlJPUiwgV0VCS0lUX0pBVkFTQ1JJUFRfRVJST1JfU0NSSVBUX0ZBSUxFRCk7CiB9CiAKQEAgLTQ3
OSwyMSArNDc5LDIxIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RnVsbFNjcmVlbihGdWxsU2Ny
ZWVuQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHN0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3Q2FuU2hvd01JTUVUeXBlKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewog
ICAgIC8vIFN1cHBvcnRlZCBNSU1FIHR5cGVzLgotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmll
d19jYW5fc2hvd19taW1lX3R5cGUodGVzdC0+bV93ZWJWaWV3LCAidGV4dC9odG1sIikpOwotICAg
IGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUodGVzdC0+bV93ZWJW
aWV3LCAidGV4dC9wbGFpbiIpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfY2FuX3No
b3dfbWltZV90eXBlKHRlc3QtPm1fd2ViVmlldywgImltYWdlL2pwZWciKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlKHRlc3QtPm1fd2ViVmll
dywgInRleHQvaHRtbCIpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19jYW5f
c2hvd19taW1lX3R5cGUodGVzdC0+bV93ZWJWaWV3LCAidGV4dC9wbGFpbiIpKTsKKyAgICBnX2Fz
c2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUodGVzdC0+bV93ZWJW
aWV3LCAiaW1hZ2UvanBlZyIpKTsKIAogICAgIC8vIFVuc3VwcG9ydGVkIE1JTUUgdHlwZXMuCi0g
ICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUodGVzdC0+bV93
ZWJWaWV3LCAidGV4dC92Y2FyZCIpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2Nh
bl9zaG93X21pbWVfdHlwZSh0ZXN0LT5tX3dlYlZpZXcsICJhcHBsaWNhdGlvbi96aXAiKSk7Ci0g
ICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUodGVzdC0+bV93
ZWJWaWV3LCAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIikpOworICAgIGdfYXNzZXJ0X2ZhbHNl
KHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19taW1lX3R5cGUodGVzdC0+bV93ZWJWaWV3LCAidGV4
dC92Y2FyZCIpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3df
bWltZV90eXBlKHRlc3QtPm1fd2ViVmlldywgImFwcGxpY2F0aW9uL3ppcCIpKTsKKyAgICBnX2Fz
c2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlKHRlc3QtPm1fd2Vi
VmlldywgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpKTsKIAogI2lmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQogICAgIC8vIFBsdWdpbnMgYXJlIG9ubHkgc3VwcG9ydGVkIHdoZW4gZW5h
YmxlZC4KICAgICB3ZWJraXRfd2ViX2NvbnRleHRfc2V0X2FkZGl0aW9uYWxfcGx1Z2luc19kaXJl
Y3Rvcnkod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHRlc3QtPm1fd2ViVmlldyksIFdFQktJ
VF9URVNUX1BMVUdJTl9ESVIpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19jYW5fc2hv
d19taW1lX3R5cGUodGVzdC0+bV93ZWJWaWV3LCAiYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1u
ZXRzY2FwZSIpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19jYW5fc2hvd19t
aW1lX3R5cGUodGVzdC0+bV93ZWJWaWV3LCAiYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRz
Y2FwZSIpKTsKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9wbHVnaW5zKHdlYmtpdF93
ZWJfdmlld19nZXRfc2V0dGluZ3ModGVzdC0+bV93ZWJWaWV3KSwgRkFMU0UpOwotICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfY2FuX3Nob3dfbWltZV90eXBlKHRlc3QtPm1fd2ViVmlldywg
ImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiKSk7CisgICAgZ19hc3NlcnRfZmFs
c2Uod2Via2l0X3dlYl92aWV3X2Nhbl9zaG93X21pbWVfdHlwZSh0ZXN0LT5tX3dlYlZpZXcsICJh
cHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIikpOwogI2VuZGlmCiB9CiAKQEAgLTU5
MSw3ICs1OTEsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1N1Ym1pdEZvcm0oRm9ybUNsaWVu
dFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICB0ZXN0LT5zdWJtaXRGb3JtQXRQb3Np
dGlvbig1LCA1KTsKICAgICBHSGFzaFRhYmxlKiB0YWJsZVZhbHVlcyA9IHRlc3QtPmdldFRleHRG
aWVsZHNBc0hhc2hUYWJsZSgpOwotICAgIGdfYXNzZXJ0KHRhYmxlVmFsdWVzKTsKKyAgICBnX2Fz
c2VydF9ub25udWxsKHRhYmxlVmFsdWVzKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KGdfaGFzaF90
YWJsZV9zaXplKHRhYmxlVmFsdWVzKSwgPT0sIDQpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihzdGF0
aWNfY2FzdDxjaGFyKj4oZ19oYXNoX3RhYmxlX2xvb2t1cCh0YWJsZVZhbHVlcywgInRleHQxIikp
LCA9PSwgInZhbHVlMSIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihzdGF0aWNfY2FzdDxjaGFyKj4o
Z19oYXNoX3RhYmxlX2xvb2t1cCh0YWJsZVZhbHVlcywgIiIpKSwgPT0sICJ2YWx1ZTMiKTsKQEAg
LTU5OSw3ICs1OTksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1N1Ym1pdEZvcm0oRm9ybUNs
aWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21wc3RyKHN0YXRp
Y19jYXN0PGNoYXIqPihnX2hhc2hfdGFibGVfbG9va3VwKHRhYmxlVmFsdWVzLCAicGFzc3dvcmQi
KSksID09LCAic2VjcmV0Iik7CiAKICAgICBHUHRyQXJyYXkqIG5hbWVzID0gdGVzdC0+Z2V0VGV4
dEZpZWxkTmFtZXMoKTsKLSAgICBnX2Fzc2VydChuYW1lcyk7CisgICAgZ19hc3NlcnRfbm9ubnVs
bChuYW1lcyk7CiAgICAgZ19hc3NlcnRfY21wdWludChuYW1lcy0+bGVuLCA9PSwgNSk7CiAgICAg
Z19hc3NlcnRfY21wc3RyKHN0YXRpY19jYXN0PGNoYXIqPihuYW1lcy0+cGRhdGFbMF0pLCA9PSwg
InRleHQxIik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHN0YXRpY19jYXN0PGNoYXIqPihuYW1lcy0+
cGRhdGFbMV0pLCA9PSwgInRleHQyIik7CkBAIC02MDgsNyArNjA4LDcgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdTdWJtaXRGb3JtKEZvcm1DbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogICAgIGdfYXNzZXJ0X2NtcHN0cihzdGF0aWNfY2FzdDxjaGFyKj4obmFtZXMtPnBkYXRhWzRd
KSwgPT0sICJwYXNzd29yZCIpOwogCiAgICAgR1B0ckFycmF5KiB2YWx1ZXMgPSB0ZXN0LT5nZXRU
ZXh0RmllbGRWYWx1ZXMoKTsKLSAgICBnX2Fzc2VydCh2YWx1ZXMpOworICAgIGdfYXNzZXJ0X25v
bm51bGwodmFsdWVzKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHZhbHVlcy0+bGVuLCA9PSwgNSk7
CiAgICAgZ19hc3NlcnRfY21wc3RyKHN0YXRpY19jYXN0PGNoYXIqPih2YWx1ZXMtPnBkYXRhWzBd
KSwgPT0sICJ2YWx1ZTEiKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoc3RhdGljX2Nhc3Q8Y2hhcio+
KHZhbHVlcy0+cGRhdGFbMV0pLCA9PSwgInZhbHVlMiIpOwpAQCAtNjQzLDggKzY0Myw4IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAg
ICAgdGVzdC0+bV9pbnB1dFN0cmVhbSA9IGFkb3B0R1JlZih3ZWJraXRfd2ViX3ZpZXdfc2F2ZV9m
aW5pc2godGVzdC0+bV93ZWJWaWV3LCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwotICAgICAg
ICBnX2Fzc2VydChHX0lTX0lOUFVUX1NUUkVBTSh0ZXN0LT5tX2lucHV0U3RyZWFtLmdldCgpKSk7
Ci0gICAgICAgIGdfYXNzZXJ0KCFlcnJvcik7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoR19JU19J
TlBVVF9TVFJFQU0odGVzdC0+bV9pbnB1dFN0cmVhbS5nZXQoKSkpOworICAgICAgICBnX2Fzc2Vy
dF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAKICAgICAgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7
CiAgICAgfQpAQCAtNjUyLDggKzY1Miw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCB3ZWJW
aWV3U2F2ZWRUb0ZpbGVDYWxsYmFjayhHT2JqZWN0KiBvYmplY3QsIEdBc3luY1Jlc3VsdCogcmVz
dWx0LCBTYXZlV2ViVmlld1Rlc3QqIHRlc3QpCiAgICAgewogICAgICAgICBHVW5pcXVlT3V0UHRy
PEdFcnJvcj4gZXJyb3I7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19zYXZlX3Rv
X2ZpbGVfZmluaXNoKHRlc3QtPm1fd2ViVmlldywgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsK
LSAgICAgICAgZ19hc3NlcnQoIWVycm9yKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRf
d2ViX3ZpZXdfc2F2ZV90b19maWxlX2ZpbmlzaCh0ZXN0LT5tX3dlYlZpZXcsIHJlc3VsdCwgJmVy
cm9yLm91dFB0cigpKSk7CisgICAgICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsK
IAogICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKICAgICB9CkBAIC03MDUsNyArNzA1LDcg
QEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdTYXZlKFNhdmVXZWJWaWV3VGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKICAgICBnc3NpemUgcmVhZEJ5dGVzID0gMDsKICAgICBnc3NpemUgdG90YWxC
eXRlc0Zyb21TdHJlYW0gPSAwOwogICAgIHdoaWxlICgocmVhZEJ5dGVzID0gZ19pbnB1dF9zdHJl
YW1fcmVhZCh0ZXN0LT5tX2lucHV0U3RyZWFtLmdldCgpLCAmYnVmZmVyLCA1MTIsIDAsICZlcnJv
ci5vdXRQdHIoKSkpKSB7Ci0gICAgICAgIGdfYXNzZXJ0KCFlcnJvcik7CisgICAgICAgIGdfYXNz
ZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKICAgICAgICAgdG90YWxCeXRlc0Zyb21TdHJlYW0g
Kz0gcmVhZEJ5dGVzOwogICAgIH0KIApAQCAtNzM0LDQ1ICs3MzQsNDUgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdQYWdlVmlzaWJpbGl0eShXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cikKIAogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBXZWJLaXRKYXZhc2Ny
aXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRV
bnRpbEZpbmlzaGVkKCJkb2N1bWVudC52aXNpYmlsaXR5U3RhdGU7IiwgJmVycm9yLm91dFB0cigp
KTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3Iu
Z2V0KCkpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19h
c3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVT
dHJpbmcoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcoamF2YXNjcmlwdFJl
c3VsdCkpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih2YWx1ZVN0cmluZy5nZXQoKSwgPT0sICJwcmVy
ZW5kZXIiKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5k
V2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LmhpZGRlbjsiLCAmZXJyb3Iub3V0UHRyKCkpOwot
ICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQo
KSk7Ci0gICAgZ19hc3NlcnQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0Jvb2xlYW4o
amF2YXNjcmlwdFJlc3VsdCkpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3Vs
dCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOworICAgIGdfYXNzZXJ0X3Ry
dWUoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb0Jvb2xlYW4oamF2YXNjcmlwdFJlc3Vs
dCkpOwogCiAgICAgLy8gU2hvdyB0aGUgcGFnZS4gVGhlIHZpc2liaWxpdHkgc2hvdWxkIGJlIHVw
ZGF0ZWQgdG8gJ3Zpc2libGUnLgogICAgIHRlc3QtPnNob3dJbldpbmRvdygpOwogICAgIHRlc3Qt
PndhaXRVbnRpbFRpdGxlQ2hhbmdlZCgpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3Qt
PnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQudmlzaWJpbGl0eVN0
YXRlOyIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7
Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFz
Y3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKICAgICB2
YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhq
YXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5nLmdldCgp
LCA9PSwgInZpc2libGUiKTsKIAogICAgIGphdmFzY3JpcHRSZXN1bHQgPSB0ZXN0LT5ydW5KYXZh
U2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoImRvY3VtZW50LmhpZGRlbjsiLCAmZXJyb3Iub3V0
UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFl
cnJvci5nZXQoKSk7Ci0gICAgZ19hc3NlcnQoIVdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0
VG9Cb29sZWFuKGphdmFzY3JpcHRSZXN1bHQpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGphdmFz
Y3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKKyAgICBn
X2Fzc2VydF9mYWxzZShXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihqYXZh
c2NyaXB0UmVzdWx0KSk7CiAKICAgICAvLyBIaWRlIHRoZSBwYWdlLiBUaGUgdmlzaWJpbGl0eSBz
aG91bGQgYmUgdXBkYXRlZCB0byAnaGlkZGVuJy4KICAgICB0ZXN0LT5oaWRlVmlldygpOwogICAg
IHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hhbmdlZCgpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9
IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQudmlzaWJp
bGl0eVN0YXRlOyIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJl
c3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxs
KGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsK
ICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0
cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVlU3RyaW5n
LmdldCgpLCA9PSwgImhpZGRlbiIpOwogCiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1
bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuaGlkZGVuOyIsICZlcnJv
ci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3Nl
cnQoIWVycm9yLmdldCgpKTsKLSAgICBnX2Fzc2VydChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJl
c3VsdFRvQm9vbGVhbihqYXZhc2NyaXB0UmVzdWx0KSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChq
YXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZShXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihq
YXZhc2NyaXB0UmVzdWx0KSk7CiB9CiAKICNpZiBQTEFURk9STShHVEspCkBAIC03ODQsNyArNzg0
LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9y
OwogICAgICAgICB0ZXN0LT5tX3N1cmZhY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NuYXBzaG90
X2ZpbmlzaCh3ZWJfdmlldywgcmVzLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgICAgICBnX2Fzc2Vy
dCghdGVzdC0+bV9zdXJmYWNlKTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbCh0ZXN0LT5tX3N1cmZh
Y2UpOwogICAgICAgICBnX2Fzc2VydF9lcnJvcihlcnJvci5nZXQoKSwgR19JT19FUlJPUiwgR19J
T19FUlJPUl9DQU5DRUxMRUQpOwogICAgICAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKICAgICB9
CkBAIC04MTEsMTEgKzgxMSwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1NuYXBzaG90KFNu
YXBzaG90V2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICAvLyBXRUJLSVRf
U05BUFNIT1RfUkVHSU9OX1ZJU0lCTEUgcmV0dXJucyBhIG51bGwgc3VyZmFjZSB3aGVuIHRoZSB2
aWV3IGlzIG5vdCB2aXNpYmxlLgogICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZTEgPSB0ZXN0
LT5nZXRTbmFwc2hvdEFuZFdhaXRVbnRpbFJlYWR5KFdFQktJVF9TTkFQU0hPVF9SRUdJT05fVklT
SUJMRSwgV0VCS0lUX1NOQVBTSE9UX09QVElPTlNfTk9ORSk7Ci0gICAgZ19hc3NlcnQoIXN1cmZh
Y2UxKTsKKyAgICBnX2Fzc2VydF9udWxsKHN1cmZhY2UxKTsKIAogICAgIC8vIFdFQktJVF9TTkFQ
U0hPVF9SRUdJT05fRlVMTF9ET0NVTUVOVCB3b3JrcyBldmVuIGlmIHRoZSB3aW5kb3cgaXMgbm90
IHZpc2libGUuCiAgICAgc3VyZmFjZTEgPSB0ZXN0LT5nZXRTbmFwc2hvdEFuZFdhaXRVbnRpbFJl
YWR5KFdFQktJVF9TTkFQU0hPVF9SRUdJT05fRlVMTF9ET0NVTUVOVCwgV0VCS0lUX1NOQVBTSE9U
X09QVElPTlNfTk9ORSk7Ci0gICAgZ19hc3NlcnQoc3VyZmFjZTEpOworICAgIGdfYXNzZXJ0X25v
bm51bGwoc3VyZmFjZTEpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQoY2Fpcm9fc3VyZmFjZV9nZXRf
dHlwZShzdXJmYWNlMSksID09LCBDQUlST19TVVJGQUNFX1RZUEVfSU1BR0UpOwogICAgIGdfYXNz
ZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlMSksID09LCAy
MDApOwogICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQo
c3VyZmFjZTEpLCA9PSwgMTAwKTsKQEAgLTgyMyw3ICs4MjMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld1NuYXBzaG90KFNuYXBzaG90V2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIp
CiAgICAgLy8gU2hvdyB0aGUgV2ViVmlldyBpbiBhIHBvcHVwIHdpZG93IG9mIDUweDUwIGFuZCB0
cnkgYWdhaW4gd2l0aCBXRUJLSVRfU05BUFNIT1RfUkVHSU9OX1ZJU0lCTEUuCiAgICAgdGVzdC0+
c2hvd0luV2luZG93QW5kV2FpdFVudGlsTWFwcGVkKEdUS19XSU5ET1dfUE9QVVAsIDUwLCA1MCk7
CiAgICAgc3VyZmFjZTEgPSBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZSh0ZXN0LT5nZXRTbmFwc2hv
dEFuZFdhaXRVbnRpbFJlYWR5KFdFQktJVF9TTkFQU0hPVF9SRUdJT05fVklTSUJMRSwgV0VCS0lU
X1NOQVBTSE9UX09QVElPTlNfTk9ORSkpOwotICAgIGdfYXNzZXJ0KHN1cmZhY2UxKTsKKyAgICBn
X2Fzc2VydF9ub25udWxsKHN1cmZhY2UxKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KGNhaXJvX3N1
cmZhY2VfZ2V0X3R5cGUoc3VyZmFjZTEpLCA9PSwgQ0FJUk9fU1VSRkFDRV9UWVBFX0lNQUdFKTsK
ICAgICBnX2Fzc2VydF9jbXBpbnQoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFj
ZTEpLCA9PSwgNTApOwogICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9oZWlnaHQoc3VyZmFjZTEpLCA9PSwgNTApOwpAQCAtODMxLDggKzgzMSw4IEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3U25hcHNob3QoU25hcHNob3RXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKICAgICAvLyBTZWxlY3QgYWxsIHRleHQgaW4gdGhlIFdlYlZpZXcsIHJlcXVlc3Qg
YSBzbmFwc2hvdCBpZ25vcmluZyBzZWxlY3Rpb24uCiAgICAgdGVzdC0+c2VsZWN0QWxsKCk7CiAg
ICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlMiA9IHRlc3QtPmdldFNuYXBzaG90QW5kV2FpdFVu
dGlsUmVhZHkoV0VCS0lUX1NOQVBTSE9UX1JFR0lPTl9WSVNJQkxFLCBXRUJLSVRfU05BUFNIT1Rf
T1BUSU9OU19OT05FKTsKLSAgICBnX2Fzc2VydChzdXJmYWNlMik7Ci0gICAgZ19hc3NlcnQoVGVz
dDo6Y2Fpcm9TdXJmYWNlc0VxdWFsKHN1cmZhY2UxLCBzdXJmYWNlMikpOworICAgIGdfYXNzZXJ0
X25vbm51bGwoc3VyZmFjZTIpOworICAgIGdfYXNzZXJ0X3RydWUoVGVzdDo6Y2Fpcm9TdXJmYWNl
c0VxdWFsKHN1cmZhY2UxLCBzdXJmYWNlMikpOwogCiAgICAgLy8gUmVxdWVzdCBhIG5ldyBzbmFw
c2hvdCwgaW5jbHVkaW5nIHRoZSBzZWxlY3Rpb24gdGhpcyB0aW1lLiBUaGUgc2l6ZSBzaG91bGQg
YmUgdGhlIHNhbWUgYnV0IHRoZSByZXN1bHQKICAgICAvLyBtdXN0IGJlIGRpZmZlcmVudCB0byB0
aGUgb25lIHByZXZpb3VzbHkgb2J0YWluZWQuCkBAIC04NDAsMTggKzg0MCwxOCBAQCBzdGF0aWMg
dm9pZCB0ZXN0V2ViVmlld1NuYXBzaG90KFNuYXBzaG90V2ViVmlld1Rlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiAgICAgZ19hc3NlcnRfY21wdWludChjYWlyb19zdXJmYWNlX2dldF90eXBlKHN1
cmZhY2UyKSwgPT0sIENBSVJPX1NVUkZBQ0VfVFlQRV9JTUFHRSk7CiAgICAgZ19hc3NlcnRfY21w
aW50KGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UxKSwgPT0sIGNhaXJvX2lt
YWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UyKSk7CiAgICAgZ19hc3NlcnRfY21waW50KGNh
aXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlMSksID09LCBjYWlyb19pbWFnZV9z
dXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZTIpKTsKLSAgICBnX2Fzc2VydCghVGVzdDo6Y2Fpcm9T
dXJmYWNlc0VxdWFsKHN1cmZhY2UxLCBzdXJmYWNlMikpOworICAgIGdfYXNzZXJ0X2ZhbHNlKFRl
c3Q6OmNhaXJvU3VyZmFjZXNFcXVhbChzdXJmYWNlMSwgc3VyZmFjZTIpKTsKIAogICAgIC8vIEdl
dCBhIHNucGFzaG90IHdpdGggYSB0cmFuc3BhcmVudCBiYWNrZ3JvdW5kLCB0aGUgcmVzdWx0IG11
c3QgYmUgZGlmZmVyZW50LgogICAgIHN1cmZhY2UyID0gdGVzdC0+Z2V0U25hcHNob3RBbmRXYWl0
VW50aWxSZWFkeShXRUJLSVRfU05BUFNIT1RfUkVHSU9OX1ZJU0lCTEUsIFdFQktJVF9TTkFQU0hP
VF9PUFRJT05TX1RSQU5TUEFSRU5UX0JBQ0tHUk9VTkQpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQo
Y2Fpcm9fc3VyZmFjZV9nZXRfdHlwZShzdXJmYWNlMiksID09LCBDQUlST19TVVJGQUNFX1RZUEVf
SU1BR0UpOwogICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0
aChzdXJmYWNlMSksID09LCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlMikp
OwogICAgIGdfYXNzZXJ0X2NtcGludChjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3Vy
ZmFjZTEpLCA9PSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UyKSk7Ci0g
ICAgZ19hc3NlcnQoIVRlc3Q6OmNhaXJvU3VyZmFjZXNFcXVhbChzdXJmYWNlMSwgc3VyZmFjZTIp
KTsKKyAgICBnX2Fzc2VydF9mYWxzZShUZXN0OjpjYWlyb1N1cmZhY2VzRXF1YWwoc3VyZmFjZTEs
IHN1cmZhY2UyKSk7CiAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KHN1cmZhY2UxKTsKIAogICAg
IC8vIFRlc3QgdGhhdCBjYW5jZWxsYXRpb24gd29ya3MuCi0gICAgZ19hc3NlcnQodGVzdC0+Z2V0
U25hcHNob3RBbmRDYW5jZWwoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5nZXRTbmFwc2hv
dEFuZENhbmNlbCgpKTsKIH0KICNlbmRpZiAvLyBQTEFURk9STShHVEspCiAKQEAgLTg4Miw4ICs4
ODIsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4gcGVybWlzc2lvblJlcXVlc3RD
YWxsYmFjayhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0UGVybWlzc2lvblJlcXVlc3QgKnJlcXVlc3Qs
IE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQo
V0VCS0lUX0lTX05PVElGSUNBVElPTl9QRVJNSVNTSU9OX1JFUVVFU1QocmVxdWVzdCkpOwotICAg
ICAgICBnX2Fzc2VydCh0ZXN0LT5tX2lzRXhwZWN0aW5nUGVybWlzc2lvblJlcXVlc3QpOworICAg
ICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19OT1RJRklDQVRJT05fUEVSTUlTU0lPTl9SRVFV
RVNUKHJlcXVlc3QpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX2lzRXhwZWN0aW5n
UGVybWlzc2lvblJlcXVlc3QpOwogICAgICAgICB0ZXN0LT5hc3NlcnRPYmplY3RJc0RlbGV0ZWRX
aGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJlcXVlc3QpKTsKIAogICAgICAgICB0ZXN0LT5tX2V2
ZW50ID0gUGVybWlzc2lvbjsKQEAgLTg5Nyw3ICs4OTcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgZ2Jvb2xlYW4gbm90aWZpY2F0aW9uQ2xvc2VkQ2FsbGJhY2soV2ViS2l0Tm90aWZpY2F0aW9u
KiBub3RpZmljYXRpb24sIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0KiB0ZXN0KQogICAgIHsKLSAg
ICAgICAgZ19hc3NlcnQodGVzdC0+bV9ub3RpZmljYXRpb24gPT0gbm90aWZpY2F0aW9uKTsKKyAg
ICAgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX25vdGlmaWNhdGlvbiA9PSBub3RpZmljYXRpb24p
OwogICAgICAgICB0ZXN0LT5tX25vdGlmaWNhdGlvbiA9IG51bGxwdHI7CiAgICAgICAgIHRlc3Qt
Pm1fZXZlbnQgPSBDbG9zZWQ7CiAgICAgICAgIGlmIChnX21haW5fbG9vcF9pc19ydW5uaW5nKHRl
c3QtPm1fbWFpbkxvb3ApKQpAQCAtOTA3LDE0ICs5MDcsMTQgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIGdib29sZWFuIG5vdGlmaWNhdGlvbkNsaWNrZWRDYWxsYmFjayhXZWJLaXROb3RpZmljYXRp
b24qIG5vdGlmaWNhdGlvbiwgTm90aWZpY2F0aW9uV2ViVmlld1Rlc3QqIHRlc3QpCiAgICAgewot
ICAgICAgICBnX2Fzc2VydCh0ZXN0LT5tX25vdGlmaWNhdGlvbiA9PSBub3RpZmljYXRpb24pOwor
ICAgICAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fbm90aWZpY2F0aW9uID09IG5vdGlmaWNhdGlv
bik7CiAgICAgICAgIHRlc3QtPm1fZXZlbnQgPSBDbGlja2VkOwogICAgICAgICByZXR1cm4gVFJV
RTsKICAgICB9CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4gc2hvd05vdGlmaWNhdGlvbkNhbGxiYWNr
KFdlYktpdFdlYlZpZXcqLCBXZWJLaXROb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgTm90aWZp
Y2F0aW9uV2ViVmlld1Rlc3QqIHRlc3QpCiAgICAgewotICAgICAgICBnX2Fzc2VydCghdGVzdC0+
bV9ub3RpZmljYXRpb24pOworICAgICAgICBnX2Fzc2VydF9udWxsKHRlc3QtPm1fbm90aWZpY2F0
aW9uKTsKICAgICAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hl
cyhHX09CSkVDVChub3RpZmljYXRpb24pKTsKICAgICAgICAgdGVzdC0+bV9ub3RpZmljYXRpb24g
PSBub3RpZmljYXRpb247CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qobm90aWZpY2F0aW9uLCAi
Y2xvc2VkIiwgR19DQUxMQkFDSyhub3RpZmljYXRpb25DbG9zZWRDYWxsYmFjayksIHRlc3QpOwpA
QCAtOTU1LDcgKzk1NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1Blcm1pc3Npb24oKQogICAg
IHsKICAgICAgICAgYXV0byogcmVzdWx0ID0gcnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlz
aGVkKCJOb3RpZmljYXRpb24ucGVybWlzc2lvbjsiLCBudWxscHRyKTsKLSAgICAgICAgZ19hc3Nl
cnQocmVzdWx0KTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChyZXN1bHQpOwogICAgICAgICBH
VW5pcXVlUHRyPGNoYXI+IHZhbHVlKGphdmFzY3JpcHRSZXN1bHRUb0NTdHJpbmcocmVzdWx0KSk7
CiAgICAgICAgIHJldHVybiAhZ19zdHJjbXAwKHZhbHVlLmdldCgpLCAiZ3JhbnRlZCIpOwogICAg
IH0KQEAgLTk5Myw3ICs5OTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZXZlbnQgPSBOb25lOwog
ICAgICAgICBydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQoIm4ub25jbGljayA9IGZ1
bmN0aW9uKCkgeyB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ub3RpZmljYXRpb25zLnBv
c3RNZXNzYWdlKCdjbGlja2VkJyk7IH0iLCBudWxscHRyKTsKICAgICAgICAgd2Via2l0X25vdGlm
aWNhdGlvbl9jbGlja2VkKG1fbm90aWZpY2F0aW9uKTsKLSAgICAgICAgZ19hc3NlcnQobV9ldmVu
dCA9PSBDbGlja2VkKTsKKyAgICAgICAgZ19hc3NlcnRfY21waW50KG1fZXZlbnQsID09LCBDbGlj
a2VkKTsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOwogICAgIH0KIApAQCAt
MTAwNiwxMSArMTAwNiwxMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsb3NlTm90aWZpY2F0aW9u
QW5kV2FpdFVudGlsT25DbG9zZWQoKQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQobV9ub3RpZmlj
YXRpb24pOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKG1fbm90aWZpY2F0aW9uKTsKICAgICAg
ICAgbV9ldmVudCA9IE5vbmU7CiAgICAgICAgIHJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5p
c2hlZCgibi5vbmNsb3NlID0gZnVuY3Rpb24oKSB7IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRs
ZXJzLm5vdGlmaWNhdGlvbnMucG9zdE1lc3NhZ2UoJ2Nsb3NlZCcpOyB9IiwgbnVsbHB0cik7CiAg
ICAgICAgIHdlYmtpdF9ub3RpZmljYXRpb25fY2xvc2UobV9ub3RpZmljYXRpb24pOwotICAgICAg
ICBnX2Fzc2VydChtX2V2ZW50ID09IENsb3NlZCk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGludCht
X2V2ZW50LCA9PSwgQ2xvc2VkKTsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3Ap
OwogICAgIH0KIApAQCAtMTAyNyw0MSArMTAyNyw0MSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmll
d05vdGlmaWNhdGlvbihOb3RpZmljYXRpb25XZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRl
cgogICAgIC8vIE5vdGlmaWNhdGlvbnMgZG9uJ3Qgd29yayB3aXRoIGxvY2FsIG9yIHNwZWNpYWwg
c2NoZW1lcy4KICAgICB0ZXN0LT5sb2FkVVJJKGdTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi8iKS5k
YXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0
KCF0ZXN0LT5oYXNQZXJtaXNzaW9uKCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmhhc1Bl
cm1pc3Npb24oKSk7CiAKICAgICB0ZXN0LT5yZXF1ZXN0UGVybWlzc2lvbkFuZFdhaXRVbnRpbEdp
dmVuKCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9ldmVudCA9PSBOb3RpZmljYXRpb25XZWJWaWV3
VGVzdDo6UGVybWlzc2lvbik7Ci0gICAgZ19hc3NlcnQodGVzdC0+aGFzUGVybWlzc2lvbigpKTsK
KyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9ldmVudCwgPT0sIE5vdGlmaWNhdGlvbldlYlZp
ZXdUZXN0OjpQZXJtaXNzaW9uKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmhhc1Blcm1pc3Np
b24oKSk7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogdGl0bGUgPSAiVGhpcyBpcyBhIG5vdGlm
aWNhdGlvbiI7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGJvZHkgPSAiVGhpcyBpcyB0aGUgYm9k
eS4iOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiB0YWcgPSAiVGhpcyBpcyB0aGUgdGFnLiI7CiAg
ICAgdGVzdC0+cmVxdWVzdE5vdGlmaWNhdGlvbkFuZFdhaXRVbnRpbFNob3duKHRpdGxlLCBib2R5
LCB0YWcpOwogCi0gICAgZ19hc3NlcnQodGVzdC0+bV9ldmVudCA9PSBOb3RpZmljYXRpb25XZWJW
aWV3VGVzdDo6U2hvd24pOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fbm90aWZpY2F0aW9uKTsKKyAg
ICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9ldmVudCwgPT0sIE5vdGlmaWNhdGlvbldlYlZpZXdU
ZXN0OjpTaG93bik7CisgICAgZ19hc3NlcnRfbm9ubnVsbCh0ZXN0LT5tX25vdGlmaWNhdGlvbik7
CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9ub3RpZmljYXRpb25fZ2V0X3RpdGxlKHRlc3Qt
Pm1fbm90aWZpY2F0aW9uKSwgPT0sIHRpdGxlKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0
X25vdGlmaWNhdGlvbl9nZXRfYm9keSh0ZXN0LT5tX25vdGlmaWNhdGlvbiksID09LCBib2R5KTsK
ICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X25vdGlmaWNhdGlvbl9nZXRfdGFnKHRlc3QtPm1f
bm90aWZpY2F0aW9uKSwgPT0sIHRhZyk7CiAKICAgICB0ZXN0LT5jbGlja05vdGlmaWNhdGlvbkFu
ZFdhaXRVbnRpbENsaWNrZWQoKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2V2ZW50ID09IE5vdGlm
aWNhdGlvbldlYlZpZXdUZXN0OjpPbkNsaWNrZWQpOworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0
LT5tX2V2ZW50LCA9PSwgTm90aWZpY2F0aW9uV2ViVmlld1Rlc3Q6Ok9uQ2xpY2tlZCk7CiAKICAg
ICB0ZXN0LT5jbG9zZU5vdGlmaWNhdGlvbkFuZFdhaXRVbnRpbENsb3NlZCgpOwotICAgIGdfYXNz
ZXJ0KHRlc3QtPm1fZXZlbnQgPT0gTm90aWZpY2F0aW9uV2ViVmlld1Rlc3Q6OkNsb3NlZCk7Cisg
ICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fZXZlbnQsID09LCBOb3RpZmljYXRpb25XZWJWaWV3
VGVzdDo6Q2xvc2VkKTsKIAogICAgIHRlc3QtPnJlcXVlc3ROb3RpZmljYXRpb25BbmRXYWl0VW50
aWxTaG93bih0aXRsZSwgYm9keSk7Ci0gICAgZ19hc3NlcnQodGVzdC0+bV9ldmVudCA9PSBOb3Rp
ZmljYXRpb25XZWJWaWV3VGVzdDo6U2hvd24pOworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5t
X2V2ZW50LCA9PSwgTm90aWZpY2F0aW9uV2ViVmlld1Rlc3Q6OlNob3duKTsKICAgICBnX2Fzc2Vy
dF9jbXBzdHIod2Via2l0X25vdGlmaWNhdGlvbl9nZXRfdGFnKHRlc3QtPm1fbm90aWZpY2F0aW9u
KSwgPT0sIG51bGxwdHIpOwogCiAgICAgdGVzdC0+Y2xvc2VOb3RpZmljYXRpb25BbmRXYWl0VW50
aWxPbkNsb3NlZCgpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fZXZlbnQgPT0gTm90aWZpY2F0aW9u
V2ViVmlld1Rlc3Q6Ok9uQ2xvc2VkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9ldmVu
dCwgPT0sIE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0OjpPbkNsb3NlZCk7CiAKICAgICAvLyBUaGUg
Zmlyc3Qgbm90aWZpY2F0aW9uIHNob3VsZCBiZSBjbG9zZWQgYXV0b21hdGljYWxseSBiZWNhdXNl
IHRoZSB0YWcgaXMKICAgICAvLyB0aGUgc2FtZS4gSXQgd2lsbCBjcmFzaCBpbiBzaG93Tm90aWZp
Y2F0aW9uQ2FsbGJhY2sgb24gZmFpbHVyZS4KICAgICB0ZXN0LT5yZXF1ZXN0Tm90aWZpY2F0aW9u
QW5kV2FpdFVudGlsU2hvd24odGl0bGUsIGJvZHksIHRhZyk7CiAgICAgdGVzdC0+cmVxdWVzdE5v
dGlmaWNhdGlvbkFuZFdhaXRVbnRpbFNob3duKHRpdGxlLCBib2R5LCB0YWcpOwotICAgIGdfYXNz
ZXJ0KHRlc3QtPm1fZXZlbnQgPT0gTm90aWZpY2F0aW9uV2ViVmlld1Rlc3Q6OlNob3duKTsKKyAg
ICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9ldmVudCwgPT0sIE5vdGlmaWNhdGlvbldlYlZpZXdU
ZXN0OjpTaG93bik7CiB9CiAKIHN0YXRpYyB2b2lkIHNldEluaXRpYWxOb3RpZmljYXRpb25QZXJt
aXNzaW9uc0FsbG93ZWRDYWxsYmFjayhXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBOb3RpZmlj
YXRpb25XZWJWaWV3VGVzdCogdGVzdCkKQEAgLTEwODcsMTAgKzEwODcsMTAgQEAgc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdOb3RpZmljYXRpb25Jbml0aWFsUGVybWlzc2lvbkFsbG93ZWQoTm90aWZp
Y2F0aW9uV2ViVmlld1QKIAogICAgIHRlc3QtPmxvYWRVUkkoZ1NlcnZlci0+Z2V0VVJJRm9yUGF0
aCgiLyIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7Ci0gICAg
Z19hc3NlcnQodGVzdC0+aGFzUGVybWlzc2lvbigpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3Qt
Pmhhc1Blcm1pc3Npb24oKSk7CiAKICAgICB0ZXN0LT5yZXF1ZXN0Tm90aWZpY2F0aW9uQW5kV2Fp
dFVudGlsU2hvd24oIlRoaXMgaXMgYSBub3RpZmljYXRpb24iLCAiVGhpcyBpcyB0aGUgYm9keS4i
KTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2V2ZW50ID09IE5vdGlmaWNhdGlvbldlYlZpZXdUZXN0
OjpTaG93bik7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fZXZlbnQsID09LCBOb3RpZmlj
YXRpb25XZWJWaWV3VGVzdDo6U2hvd24pOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld05v
dGlmaWNhdGlvbkluaXRpYWxQZXJtaXNzaW9uRGlzYWxsb3dlZChOb3RpZmljYXRpb25XZWJWaWV3
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTExMDAsNyArMTEwMCw3IEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3Tm90aWZpY2F0aW9uSW5pdGlhbFBlcm1pc3Npb25EaXNhbGxvd2VkKE5v
dGlmaWNhdGlvbldlYlZpCiAKICAgICB0ZXN0LT5sb2FkVVJJKGdTZXJ2ZXItPmdldFVSSUZvclBh
dGgoIi8iKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotICAg
IGdfYXNzZXJ0KCF0ZXN0LT5oYXNQZXJtaXNzaW9uKCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRl
c3QtPmhhc1Blcm1pc3Npb24oKSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTlMp
CiAKQEAgLTExMTMsMjQgKzExMTMsMjQgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdJc1BsYXlp
bmdBdWRpbyhJc1BsYXlpbmdBdWRpb1dlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2kKICNlbmRp
ZgogCiAgICAgLy8gSW5pdGlhbGx5LCB3ZWIgdmlld3Mgc2hvdWxkIGFsd2F5cyByZXBvcnQgbm8g
YXVkaW8gYmVpbmcgcGxheWVkLgotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfaXNfcGxh
eWluZ19hdWRpbyh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRf
d2ViX3ZpZXdfaXNfcGxheWluZ19hdWRpbyh0ZXN0LT5tX3dlYlZpZXcpKTsKIAogICAgIEdVbmlx
dWVQdHI8Y2hhcj4gcmVzb3VyY2VQYXRoKGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6Z2V0UmVzb3Vy
Y2VzRGlyKFRlc3Q6OldlYktpdDJSZXNvdXJjZXMpLmRhdGEoKSwgImZpbGUtd2l0aC12aWRlby5o
dG1sIiwgbnVsbHB0cikpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVzb3VyY2VVUkwoZ19maWxl
bmFtZV90b191cmkocmVzb3VyY2VQYXRoLmdldCgpLCBudWxscHRyLCBudWxscHRyKSk7CiAgICAg
d2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKHRlc3QtPm1fd2ViVmlldywgcmVzb3VyY2VVUkwuZ2V0
KCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwotICAgIGdfYXNzZXJ0KCF3
ZWJraXRfd2ViX3ZpZXdfaXNfcGxheWluZ19hdWRpbyh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICBn
X2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfaXNfcGxheWluZ19hdWRpbyh0ZXN0LT5tX3dl
YlZpZXcpKTsKIAogICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgi
cGxheVZpZGVvKCk7IiwgbnVsbHB0cik7CiAgICAgaWYgKCF3ZWJraXRfd2ViX3ZpZXdfaXNfcGxh
eWluZ19hdWRpbyh0ZXN0LT5tX3dlYlZpZXcpKQogICAgICAgICB0ZXN0LT53YWl0VW50aWxJc1Bs
YXlpbmdBdWRpb0NoYW5nZWQoKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfaXNfcGxh
eWluZ19hdWRpbyh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93
ZWJfdmlld19pc19wbGF5aW5nX2F1ZGlvKHRlc3QtPm1fd2ViVmlldykpOwogCiAgICAgLy8gUGF1
c2UgdGhlIHZpZGVvLCBhbmQgY2hlY2sgYWdhaW4uCiAgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFu
ZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdC12aWRlbycp
LnBhdXNlKCk7IiwgbnVsbHB0cik7CiAgICAgaWYgKHdlYmtpdF93ZWJfdmlld19pc19wbGF5aW5n
X2F1ZGlvKHRlc3QtPm1fd2ViVmlldykpCiAgICAgICAgIHRlc3QtPndhaXRVbnRpbElzUGxheWlu
Z0F1ZGlvQ2hhbmdlZCgpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfaXNfcGxheWlu
Z19hdWRpbyh0ZXN0LT5tX3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2Vi
X3ZpZXdfaXNfcGxheWluZ19hdWRpbyh0ZXN0LT5tX3dlYlZpZXcpKTsKIH0KIAogI2lmIFBMQVRG
T1JNKEdUSykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0V2Vic2l0ZURhdGEuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJzaXRlRGF0YS5jcHAKaW5kZXggMDI2NmNiMGRjODQ0ZWMxYWU3MGY1ZDlkOWEz
YzBmMGZhOTUwZDI1Zi4uNjM4NzhmMTQzODliOGQzNTEwMDRlNWU4ZTdiNDk0MGZhMDU2ZTdlMyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJz
aXRlRGF0YS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RXZWJzaXRlRGF0YS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogICAgIFdlYnNpdGVE
YXRhVGVzdCgpCiAgICAgICAgIDogbV9tYW5hZ2VyKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfd2Vi
c2l0ZV9kYXRhX21hbmFnZXIod2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KG1fd2ViVmlldykp
KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VS
KG1fbWFuYWdlcikpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19XRUJTSVRFX0RB
VEFfTUFOQUdFUihtX21hbmFnZXIpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hl
blRlc3RGaW5pc2hlcyhHX09CSkVDVChtX21hbmFnZXIpKTsKICAgICAgICAgLy8gV2Vic2l0ZURh
dGFTdG9yZSBjcmVhdGVzIGEgbmV3IFdlYlByb2Nlc3NQb29sIHdoZW4gdXNlZCBiZWZvcmUgYW55
IHNlY29uZGFyeSBwcm9jZXNzIGhhcyBiZWVuIGNyZWF0ZWQuCiAgICAgICAgIC8vIEVuc3VyZSB3
ZSBoYXZlIGEgd2ViIHByb2Nlc3MgYnkgYWx3YXlzIGxvYWRpbmcgYWJvdXQ6YmxhbmsgaGVyZS4K
QEAgLTExMSw3ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICB3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfcmVtb3ZlKG1fbWFuYWdlciwgdHlwZXMsIGRhdGFMaXN0LCBudWxscHRy
LCBbXShHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7
CiAgICAgICAgICAgICBXZWJzaXRlRGF0YVRlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxXZWJzaXRl
RGF0YVRlc3QqPih1c2VyRGF0YSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfd2Vic2l0
ZV9kYXRhX21hbmFnZXJfcmVtb3ZlX2ZpbmlzaCh0ZXN0LT5tX21hbmFnZXIsIHJlc3VsdCwgbnVs
bHB0cikpOworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfcmVtb3ZlX2ZpbmlzaCh0ZXN0LT5tX21hbmFnZXIsIHJlc3VsdCwgbnVsbHB0cikpOwog
ICAgICAgICAgICAgdGVzdC0+cXVpdE1haW5Mb29wKCk7CiAgICAgICAgIH0sIHRoaXMpOwogICAg
ICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7CkBAIC0xMjEsNyArMTIxLDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2NsZWFyKG1f
bWFuYWdlciwgdHlwZXMsIHRpbWVTcGFuLCBudWxscHRyLCBbXShHT2JqZWN0KiwgR0FzeW5jUmVz
dWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJEYXRhKSB7CiAgICAgICAgICAgICBXZWJzaXRlRGF0
YVRlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxXZWJzaXRlRGF0YVRlc3QqPih1c2VyRGF0YSk7Ci0g
ICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfY2xlYXJfZmlu
aXNoKHRlc3QtPm1fbWFuYWdlciwgcmVzdWx0LCBudWxscHRyKSk7CisgICAgICAgICAgICBnX2Fz
c2VydF90cnVlKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9jbGVhcl9maW5pc2godGVzdC0+
bV9tYW5hZ2VyLCByZXN1bHQsIG51bGxwdHIpKTsKICAgICAgICAgICAgIHRlc3QtPnF1aXRNYWlu
TG9vcCgpOwogICAgICAgICB9LCB0aGlzKTsKICAgICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFp
bkxvb3ApOwpAQCAtMTM0LDI0ICsxMzQsMjQgQEAgcHVibGljOgogc3RhdGljIHZvaWQgdGVzdFdl
YnNpdGVEYXRhQ29uZmlndXJhdGlvbihXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiB7CiAgICAgLy8gQmFzZSBkaXJlY3RvcmllcyBhcmUgbm90IHVzZWQgYnkgVGVzdE1haW4u
Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfYmFzZV9kYXRh
X2RpcmVjdG9yeSh0ZXN0LT5tX21hbmFnZXIpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF9iYXNlX2NhY2hlX2RpcmVjdG9yeSh0ZXN0LT5tX21hbmFnZXIp
KTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfYmFz
ZV9kYXRhX2RpcmVjdG9yeSh0ZXN0LT5tX21hbmFnZXIpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfYmFzZV9jYWNoZV9kaXJlY3RvcnkodGVzdC0+
bV9tYW5hZ2VyKSk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IGxvY2FsU3RvcmFnZURpcmVjdG9y
eShnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmRhdGFEaXJlY3RvcnkoKSwgImxvY2FsLXN0b3JhZ2Ui
LCBudWxscHRyKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGxvY2FsU3RvcmFnZURpcmVjdG9yeS5n
ZXQoKSwgPT0sIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFnZV9k
aXJlY3RvcnkodGVzdC0+bV9tYW5hZ2VyKSk7Ci0gICAgZ19hc3NlcnQoZ19maWxlX3Rlc3QobG9j
YWxTdG9yYWdlRGlyZWN0b3J5LmdldCgpLCBHX0ZJTEVfVEVTVF9JU19ESVIpKTsKKyAgICBnX2Fz
c2VydF90cnVlKGdfZmlsZV90ZXN0KGxvY2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKSwgR19GSUxF
X1RFU1RfSVNfRElSKSk7CiAKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBh
dGgoIi9lbXB0eSIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7
CiAgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJ3aW5kb3cuaW5k
ZXhlZERCLm9wZW4oJ1Rlc3REYXRhYmFzZScpOyIsIG51bGxwdHIpOwogICAgIEdVbmlxdWVQdHI8
Y2hhcj4gaW5kZXhlZERCRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoVGVzdDo6ZGF0YURpcmVj
dG9yeSgpLCAiaW5kZXhlZGRiIiwgbnVsbHB0cikpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihpbmRl
eGVkREJEaXJlY3RvcnkuZ2V0KCksID09LCB3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0
X2luZGV4ZWRkYl9kaXJlY3RvcnkodGVzdC0+bV9tYW5hZ2VyKSk7Ci0gICAgZ19hc3NlcnQoZ19m
aWxlX3Rlc3QoaW5kZXhlZERCRGlyZWN0b3J5LmdldCgpLCBHX0ZJTEVfVEVTVF9JU19ESVIpKTsK
KyAgICBnX2Fzc2VydF90cnVlKGdfZmlsZV90ZXN0KGluZGV4ZWREQkRpcmVjdG9yeS5nZXQoKSwg
R19GSUxFX1RFU1RfSVNfRElSKSk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHdlYlNRTERpcmVj
dG9yeShnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmRhdGFEaXJlY3RvcnkoKSwgIndlYnNxbCIsIG51
bGxwdHIpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2ViU1FMRGlyZWN0b3J5LmdldCgpLCA9PSwg
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF93ZWJzcWxfZGlyZWN0b3J5KHRlc3QtPm1f
bWFuYWdlcikpOwogICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgi
ZGIgPSBvcGVuRGF0YWJhc2UoXCJUZXN0RGF0YWJhc2VcIiwgXCIxLjBcIiwgXCJUZXN0RGF0YWJh
c2VcIiwgMSk7IiwgbnVsbHB0cik7Ci0gICAgZ19hc3NlcnQoZ19maWxlX3Rlc3Qod2ViU1FMRGly
ZWN0b3J5LmdldCgpLCBHX0ZJTEVfVEVTVF9JU19ESVIpKTsKKyAgICBnX2Fzc2VydF90cnVlKGdf
ZmlsZV90ZXN0KHdlYlNRTERpcmVjdG9yeS5nZXQoKSwgR19GSUxFX1RFU1RfSVNfRElSKSk7CiAK
ICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9hcHBjYWNoZSIpLmRh
dGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CkBAIC0xNjEsMjIgKzE2
MSwyMiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFDb25maWd1cmF0aW9uKFdlYnNpdGVE
YXRhVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB1bnNpZ25lZCB0cmllc0NvdW50ID0g
NDsKICAgICB3aGlsZSAoIWdfZmlsZV90ZXN0KGFwcGxpY2F0aW9uQ2FjaGVEYXRhYmFzZS5nZXQo
KSwgR19GSUxFX1RFU1RfSVNfUkVHVUxBUikgJiYgLS10cmllc0NvdW50KQogICAgICAgICB0ZXN0
LT53YWl0KDAuMjUpOwotICAgIGdfYXNzZXJ0KHRyaWVzQ291bnQpOworICAgIGdfYXNzZXJ0X2Nt
cHVpbnQodHJpZXNDb3VudCwgPiwgMCk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IGRpc2tDYWNo
ZURpcmVjdG9yeShnX2J1aWxkX2ZpbGVuYW1lKFRlc3Q6OmRhdGFEaXJlY3RvcnkoKSwgImRpc2st
Y2FjaGUiLCBudWxscHRyKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKGRpc2tDYWNoZURpcmVjdG9y
eS5nZXQoKSwgPT0sIHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9k
aXJlY3RvcnkodGVzdC0+bV9tYW5hZ2VyKSk7Ci0gICAgZ19hc3NlcnQoZ19maWxlX3Rlc3QoZGlz
a0NhY2hlRGlyZWN0b3J5LmdldCgpLCBHX0ZJTEVfVEVTVF9JU19ESVIpKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKGdfZmlsZV90ZXN0KGRpc2tDYWNoZURpcmVjdG9yeS5nZXQoKSwgR19GSUxFX1RFU1Rf
SVNfRElSKSk7CiAKICAgICAvLyBDbGVhciBhbGwgcGVyc2lzdGVudCBjYWNoZXMsIHNpbmNlIHRo
ZSBkYXRhIGRpciBpcyBjb21tb24gdG8gYWxsIHRlc3QgY2FzZXMuCiAgICAgc3RhdGljIGNvbnN0
IFdlYktpdFdlYnNpdGVEYXRhVHlwZXMgcGVyc2lzdGVudENhY2hlcyA9IHN0YXRpY19jYXN0PFdl
YktpdFdlYnNpdGVEYXRhVHlwZXM+KFdFQktJVF9XRUJTSVRFX0RBVEFfRElTS19DQUNIRSB8IFdF
QktJVF9XRUJTSVRFX0RBVEFfTE9DQUxfU1RPUkFHRQogICAgICAgICB8IFdFQktJVF9XRUJTSVRF
X0RBVEFfV0VCU1FMX0RBVEFCQVNFUyB8IFdFQktJVF9XRUJTSVRFX0RBVEFfSU5ERVhFRERCX0RB
VEFCQVNFUyB8IFdFQktJVF9XRUJTSVRFX0RBVEFfT0ZGTElORV9BUFBMSUNBVElPTl9DQUNIRSB8
IFdFQktJVF9XRUJTSVRFX0RBVEFfREVWSUNFX0lEX0hBU0hfU0FMVCk7CiAgICAgdGVzdC0+Y2xl
YXIocGVyc2lzdGVudENhY2hlcywgMCk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPmZldGNoKHBlcnNp
c3RlbnRDYWNoZXMpKTsKKyAgICBnX2Fzc2VydF9udWxsKHRlc3QtPmZldGNoKHBlcnNpc3RlbnRD
YWNoZXMpKTsKIAogICAgIC8vIFRoZSBkZWZhdWx0IGNvbnRleHQgc2hvdWxkIGhhdmUgYSBkaWZm
ZXJlbnQgbWFuYWdlciB3aXRoIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgogICAgIFdlYktpdFdl
YnNpdGVEYXRhTWFuYWdlciogZGVmYXVsdE1hbmFnZXIgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyKHdlYmtpdF93ZWJfY29udGV4dF9nZXRfZGVmYXVsdCgpKTsK
LSAgICBnX2Fzc2VydChXRUJLSVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIoZGVmYXVsdE1hbmFn
ZXIpKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX21hbmFnZXIgIT0gZGVmYXVsdE1hbmFnZXIpOwor
ICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1dFQlNJVEVfREFUQV9NQU5BR0VSKGRlZmF1bHRN
YW5hZ2VyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX21hbmFnZXIgIT0gZGVmYXVsdE1h
bmFnZXIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJf
Z2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KHRlc3QtPm1fbWFuYWdlciksICE9LCB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2xvY2FsX3N0b3JhZ2VfZGlyZWN0b3J5KGRlZmF1bHRN
YW5hZ2VyKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdl
cl9nZXRfaW5kZXhlZGRiX2RpcmVjdG9yeSh0ZXN0LT5tX21hbmFnZXIpLCAhPSwgd2Via2l0X3dl
YnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KGRlZmF1bHRNYW5hZ2Vy
KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRf
ZGlza19jYWNoZV9kaXJlY3RvcnkodGVzdC0+bV9tYW5hZ2VyKSwgIT0sIHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkoZGVmYXVsdE1hbmFnZXIpKTsK
QEAgLTE4NSw3ICsxODUsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFDb25maWd1cmF0
aW9uKFdlYnNpdGVEYXRhVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIC8vIFVzaW5n
IFRlc3Q6OmRhdGFEaXJlY3RvcnkoKSB3ZSBnZXQgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBi
dXQgZm9yIGEgZGlmZmVycmVudCBwcmVmaXguCiAgICAgR1JlZlB0cjxXZWJLaXRXZWJzaXRlRGF0
YU1hbmFnZXI+IGJhc2VEYXRhTWFuYWdlciA9IGFkb3B0R1JlZih3ZWJraXRfd2Vic2l0ZV9kYXRh
X21hbmFnZXJfbmV3KCJiYXNlLWRhdGEtZGlyZWN0b3J5IiwgVGVzdDo6ZGF0YURpcmVjdG9yeSgp
LCAiYmFzZS1jYWNoZS1kaXJlY3RvcnkiLCBUZXN0OjpkYXRhRGlyZWN0b3J5KCksIG51bGxwdHIp
KTsKLSAgICBnX2Fzc2VydChXRUJLSVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIoYmFzZURhdGFN
YW5hZ2VyLmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfV0VCU0lURV9EQVRB
X01BTkFHRVIoYmFzZURhdGFNYW5hZ2VyLmdldCgpKSk7CiAKICAgICBsb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkucmVzZXQoZ19idWlsZF9maWxlbmFtZShUZXN0OjpkYXRhRGlyZWN0b3J5KCksICJsb2Nh
bHN0b3JhZ2UiLCBudWxscHRyKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfbG9jYWxfc3RvcmFnZV9kaXJlY3RvcnkoYmFzZURhdGFNYW5hZ2Vy
LmdldCgpKSwgPT0sIGxvY2FsU3RvcmFnZURpcmVjdG9yeS5nZXQoKSk7CkBAIC0yMjUsMjYgKzIy
NSwyNiBAQCBzdGF0aWMgdm9pZCBlcGhlbWVyYWxWaWV3bG9hZENoYW5nZWQoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYQogc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVE
YXRhRXBoZW1lcmFsKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIEdS
ZWZQdHI8V2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyPiBtYW5hZ2VyID0gYWRvcHRHUmVmKHdlYmtp
dF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9uZXdfZXBoZW1lcmFsKCkpOwotICAgIGdfYXNzZXJ0KHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhlbWVyYWwobWFuYWdlci5nZXQoKSkpOwot
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Jhc2VfZGF0YV9k
aXJlY3RvcnkobWFuYWdlci5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZ2V0X2Jhc2VfY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKLSAg
ICBnX2Fzc2VydCghd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9sb2NhbF9zdG9yYWdl
X2RpcmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJzaXRl
X2RhdGFfbWFuYWdlcl9nZXRfZGlza19jYWNoZV9kaXJlY3RvcnkobWFuYWdlci5nZXQoKSkpOwot
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X29mZmxpbmVfYXBw
bGljYXRpb25fY2FjaGVfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCgh
d2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9pbmRleGVkZGJfZGlyZWN0b3J5KG1hbmFn
ZXIuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dl
dF93ZWJzcWxfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19lcGhlbWVyYWwobWFuYWdlci5nZXQoKSkpOwor
ICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9iYXNlX2Rh
dGFfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93
ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfYmFzZV9jYWNoZV9kaXJlY3RvcnkobWFuYWdlci5nZXQo
KSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9s
b2NhbF9zdG9yYWdlX2RpcmVjdG9yeShtYW5hZ2VyLmdldCgpKSk7CisgICAgZ19hc3NlcnRfbnVs
bCh3ZWJraXRfd2Vic2l0ZV9kYXRhX21hbmFnZXJfZ2V0X2Rpc2tfY2FjaGVfZGlyZWN0b3J5KG1h
bmFnZXIuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFu
YWdlcl9nZXRfb2ZmbGluZV9hcHBsaWNhdGlvbl9jYWNoZV9kaXJlY3RvcnkobWFuYWdlci5nZXQo
KSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9p
bmRleGVkZGJfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdl
YmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9nZXRfd2Vic3FsX2RpcmVjdG9yeShtYW5hZ2VyLmdl
dCgpKSk7CiAKICAgICAvLyBDb25maWd1cmF0aW9uIGlzIGlnbm9yZWQgd2hlbiBpcy1lcGhlbWVy
YWwgaXMgdXNlZC4KICAgICBtYW5hZ2VyID0gYWRvcHRHUmVmKFdFQktJVF9XRUJTSVRFX0RBVEFf
TUFOQUdFUihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCU0lURV9EQVRBX01BTkFHRVIsICJi
YXNlLWRhdGEtZGlyZWN0b3J5IiwgVGVzdDo6ZGF0YURpcmVjdG9yeSgpLCAiaXMtZXBoZW1lcmFs
IiwgVFJVRSwgbnVsbHB0cikpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2Vic2l0ZV9kYXRhX21h
bmFnZXJfaXNfZXBoZW1lcmFsKG1hbmFnZXIuZ2V0KCkpKTsKLSAgICBnX2Fzc2VydCghd2Via2l0
X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2dldF9iYXNlX2RhdGFfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0
KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJzaXRlX2RhdGFfbWFuYWdlcl9pc19l
cGhlbWVyYWwobWFuYWdlci5nZXQoKSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3dlYnNp
dGVfZGF0YV9tYW5hZ2VyX2dldF9iYXNlX2RhdGFfZGlyZWN0b3J5KG1hbmFnZXIuZ2V0KCkpKTsK
IAogICAgIC8vIE5vbiBwZXJzaXN0ZW50IGRhdGEgY2FuIGJlIHF1ZXJpZWQgaW4gYW4gZXBoZW1l
cmFsIG1hbmFnZXIuCiAgICAgR1JlZlB0cjxXZWJLaXRXZWJDb250ZXh0PiB3ZWJDb250ZXh0ID0g
YWRvcHRHUmVmKHdlYmtpdF93ZWJfY29udGV4dF9uZXdfd2l0aF93ZWJzaXRlX2RhdGFfbWFuYWdl
cihtYW5hZ2VyLmdldCgpKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl9jb250ZXh0X2lzX2Vw
aGVtZXJhbCh3ZWJDb250ZXh0LmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2Vi
X2NvbnRleHRfaXNfZXBoZW1lcmFsKHdlYkNvbnRleHQuZ2V0KCkpKTsKICAgICBhdXRvIHdlYlZp
ZXcgPSBUZXN0OjphZG9wdFZpZXcoVGVzdDo6Y3JlYXRlV2ViVmlldyh3ZWJDb250ZXh0LmdldCgp
KSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2VwaGVtZXJhbCh3ZWJWaWV3Lmdl
dCgpKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFfbWFu
YWdlcih3ZWJWaWV3LmdldCgpKSA9PSBtYW5hZ2VyLmdldCgpKTsKKyAgICBnX2Fzc2VydF90cnVl
KHdlYmtpdF93ZWJfdmlld19pc19lcGhlbWVyYWwod2ViVmlldy5nZXQoKSkpOworICAgIGdfYXNz
ZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X2dldF93ZWJzaXRlX2RhdGFfbWFuYWdlcih3ZWJWaWV3
LmdldCgpKSA9PSBtYW5hZ2VyLmdldCgpKTsKIAogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmll
dy5nZXQoKSwgImxvYWQtY2hhbmdlZCIsIEdfQ0FMTEJBQ0soZXBoZW1lcmFsVmlld2xvYWRDaGFu
Z2VkKSwgdGVzdCk7CiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKHdlYlZpZXcuZ2V0KCks
IGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9lbXB0eSIpLmRhdGEoKSk7CkBAIC0yNTMsMTAgKzI1
MywxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFFcGhlbWVyYWwoV2ViVmlld1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0X3dlYnNpdGVfZGF0YV9tYW5hZ2VyX2Zl
dGNoKG1hbmFnZXIuZ2V0KCksIFdFQktJVF9XRUJTSVRFX0RBVEFfTUVNT1JZX0NBQ0hFLCBudWxs
cHRyLCBbXShHT2JqZWN0KiBtYW5hZ2VyLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIg
dXNlckRhdGEpIHsKICAgICAgICAgYXV0byogdGVzdCA9IHN0YXRpY19jYXN0PFdlYlZpZXdUZXN0
Kj4odXNlckRhdGEpOwogICAgICAgICBHTGlzdCogZGF0YUxpc3QgPSB3ZWJraXRfd2Vic2l0ZV9k
YXRhX21hbmFnZXJfZmV0Y2hfZmluaXNoKFdFQktJVF9XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5h
Z2VyKSwgcmVzdWx0LCBudWxscHRyKTsKLSAgICAgICAgZ19hc3NlcnQoZGF0YUxpc3QpOworICAg
ICAgICBnX2Fzc2VydF9ub25udWxsKGRhdGFMaXN0KTsKICAgICAgICAgZ19hc3NlcnRfY21wdWlu
dChnX2xpc3RfbGVuZ3RoKGRhdGFMaXN0KSwgPT0sIDEpOwogICAgICAgICBXZWJLaXRXZWJzaXRl
RGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhKj4oZGF0YUxpc3QtPmRh
dGEpOwotICAgICAgICBnX2Fzc2VydChkYXRhKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChk
YXRhKTsKICAgICAgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IHdlYmtpdF9zZWN1
cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEo
KSk7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF9uYW1l
KGRhdGEpLCA9PSwgd2Via2l0X3NlY3VyaXR5X29yaWdpbl9nZXRfaG9zdChvcmlnaW4pKTsKICAg
ICAgICAgd2Via2l0X3NlY3VyaXR5X29yaWdpbl91bnJlZihvcmlnaW4pOwpAQCAtMjcwLDcgKzI3
MCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YUNhY2hlKFdlYnNpdGVEYXRhVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBzdGF0aWMgY29uc3QgV2ViS2l0V2Vic2l0ZURh
dGFUeXBlcyBjYWNoZVR5cGVzID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGFUeXBlcz4o
V0VCS0lUX1dFQlNJVEVfREFUQV9NRU1PUllfQ0FDSEUgfCBXRUJLSVRfV0VCU0lURV9EQVRBX0RJ
U0tfQ0FDSEUpOwogICAgIEdMaXN0KiBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKGNhY2hlVHlwZXMp
OwotICAgIGdfYXNzZXJ0KCFkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbnVsbChkYXRhTGlzdCk7
CiAKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9lbXB0eSIpLmRh
dGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CkBAIC0yODEsMTAgKzI4
MSwxMCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFDYWNoZShXZWJzaXRlRGF0YVRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+d2FpdCgxKTsKIAogICAgIGRhdGFMaXN0
ID0gdGVzdC0+ZmV0Y2goY2FjaGVUeXBlcyk7Ci0gICAgZ19hc3NlcnQoZGF0YUxpc3QpOworICAg
IGdfYXNzZXJ0X25vbm51bGwoZGF0YUxpc3QpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19saXN0
X2xlbmd0aChkYXRhTGlzdCksID09LCAxKTsKICAgICBXZWJLaXRXZWJzaXRlRGF0YSogZGF0YSA9
IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhKj4oZGF0YUxpc3QtPmRhdGEpOwotICAgIGdf
YXNzZXJ0KGRhdGEpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YSk7CiAgICAgV2ViS2l0U2Vj
dXJpdHlPcmlnaW4qIG9yaWdpbiA9IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmko
a1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CiAgICAgZ19hc3NlcnRfY21wc3Ry
KHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X25hbWUoZGF0YSksID09LCB3ZWJraXRfc2VjdXJpdHlf
b3JpZ2luX2dldF9ob3N0KG9yaWdpbikpOwogICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5y
ZWYob3JpZ2luKTsKQEAgLTI5NSwxMiArMjk1LDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRl
RGF0YUNhY2hlKFdlYnNpdGVEYXRhVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIC8v
IFRyeSBhZ2FpbiBidXQgb25seSBnZXR0aW5nIGRpc2sgY2FjaGUuCiAgICAgZGF0YUxpc3QgPSB0
ZXN0LT5mZXRjaChXRUJLSVRfV0VCU0lURV9EQVRBX0RJU0tfQ0FDSEUpOwotICAgIGdfYXNzZXJ0
KGRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGFMaXN0KTsKICAgICBnX2Fzc2Vy
dF9jbXB1aW50KGdfbGlzdF9sZW5ndGgoZGF0YUxpc3QpLCA9PSwgMSk7CiAgICAgZGF0YSA9IHN0
YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhKj4oZGF0YUxpc3QtPmRhdGEpOwotICAgIGdfYXNz
ZXJ0KGRhdGEpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X3R5cGVzKGRh
dGEpICYgV0VCS0lUX1dFQlNJVEVfREFUQV9ESVNLX0NBQ0hFKTsKLSAgICBnX2Fzc2VydCghKHdl
YmtpdF93ZWJzaXRlX2RhdGFfZ2V0X3R5cGVzKGRhdGEpICYgV0VCS0lUX1dFQlNJVEVfREFUQV9N
RU1PUllfQ0FDSEUpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGEpOworICAgIGdfYXNzZXJ0
X3RydWUod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRfdHlwZXMoZGF0YSkgJiBXRUJLSVRfV0VCU0lU
RV9EQVRBX0RJU0tfQ0FDSEUpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJzaXRlX2Rh
dGFfZ2V0X3R5cGVzKGRhdGEpICYgV0VCS0lUX1dFQlNJVEVfREFUQV9NRU1PUllfQ0FDSEUpOwog
CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBmaWxlVVJMKGdfc3RyZHVwX3ByaW50ZigiZmlsZTovLyVz
L3NpbXBsZS5odG1sIiwgVGVzdDo6Z2V0UmVzb3VyY2VzRGlyKFRlc3Q6OldlYktpdDJSZXNvdXJj
ZXMpLmRhdGEoKSkpOwogICAgIHRlc3QtPmxvYWRVUkkoZmlsZVVSTC5nZXQoKSk7CkBAIC0zMTIs
MjQgKzMxMiwyNCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFDYWNoZShXZWJzaXRlRGF0
YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAKICAgICAvLyBMb2NhbCBmaWxlcyBhcmUgZ3Jv
dXBlZC4KICAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKGNhY2hlVHlwZXMpOwotICAgIGdfYXNz
ZXJ0KGRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGRhdGFMaXN0KTsKICAgICBnX2Fz
c2VydF9jbXB1aW50KGdfbGlzdF9sZW5ndGgoZGF0YUxpc3QpLCA9PSwgMik7CiAgICAgR0xpc3Qq
IGl0ZW1MaXN0ID0gZ19saXN0X2ZpbmRfY3VzdG9tKGRhdGFMaXN0LCBudWxscHRyLCBbXShnY29u
c3Rwb2ludGVyIGl0ZW0sIGdjb25zdHBvaW50ZXIpIC0+IGludCB7CiAgICAgICAgIFdlYktpdFdl
YnNpdGVEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGEqPihjb25zdF9j
YXN0PGdwb2ludGVyPihpdGVtKSk7CiAgICAgICAgIHJldHVybiBnX3N0cmNtcDAod2Via2l0X3dl
YnNpdGVfZGF0YV9nZXRfbmFtZShkYXRhKSwgIkxvY2FsIGZpbGVzIik7CiAgICAgfSk7Ci0gICAg
Z19hc3NlcnQoaXRlbUxpc3QpOworICAgIGdfYXNzZXJ0X25vbm51bGwoaXRlbUxpc3QpOwogICAg
IGRhdGEgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YSo+KGl0ZW1MaXN0LT5kYXRhKTsK
LSAgICBnX2Fzc2VydChkYXRhKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2Vic2l0ZV9kYXRhX2dl
dF90eXBlcyhkYXRhKSAmIFdFQktJVF9XRUJTSVRFX0RBVEFfTUVNT1JZX0NBQ0hFKTsKKyAgICBn
X2Fzc2VydF9ub25udWxsKGRhdGEpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYnNpdGVf
ZGF0YV9nZXRfdHlwZXMoZGF0YSkgJiBXRUJLSVRfV0VCU0lURV9EQVRBX01FTU9SWV9DQUNIRSk7
CiAgICAgLy8gTG9jYWwgZmlsZXMgYXJlIG5ldmVyIHN0b3JlZCBpbiBkaXNrIGNhY2hlLgotICAg
IGdfYXNzZXJ0KCEod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRfdHlwZXMoZGF0YSkgJiBXRUJLSVRf
V0VCU0lURV9EQVRBX0RJU0tfQ0FDSEUpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2Vi
c2l0ZV9kYXRhX2dldF90eXBlcyhkYXRhKSAmIFdFQktJVF9XRUJTSVRFX0RBVEFfRElTS19DQUNI
RSk7CiAKICAgICAvLyBDbGVhciBkYXRhIG1vZGlmaWVkIHNpbmNlIHRoZSBsYXN0IG1pY3Jvc2Vj
b25kIHNob3VsZCBub3QgY2xlYXIgYW55dGhpbmcuCiAgICAgLy8gVXNlIGRpc2stY2FjaGUgYmVj
YXVzZSBtZW1vcnkgY2FjaGUgaWdub3JlcyB0aGUgbW9kaWZpZWQgc2luY2UuCiAgICAgdGVzdC0+
Y2xlYXIoV0VCS0lUX1dFQlNJVEVfREFUQV9ESVNLX0NBQ0hFLCAxKTsKICAgICBkYXRhTGlzdCA9
IHRlc3QtPmZldGNoKGNhY2hlVHlwZXMpOwotICAgIGdfYXNzZXJ0KGRhdGFMaXN0KTsKKyAgICBn
X2Fzc2VydF9ub25udWxsKGRhdGFMaXN0KTsKICAgICBnX2Fzc2VydF9jbXB1aW50KGdfbGlzdF9s
ZW5ndGgoZGF0YUxpc3QpLCA9PSwgMik7CiAKICAgICAvLyBSZW1vdmUgbWVtb3J5IGNhY2hlIG9u
bHkgZm9yIGxvY2FsIGZpbGVzLgpAQCAtMzM3LDI2ICszMzcsMjYgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYnNpdGVEYXRhQ2FjaGUoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ICAgICAgICBXZWJLaXRXZWJzaXRlRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNp
dGVEYXRhKj4oY29uc3RfY2FzdDxncG9pbnRlcj4oaXRlbSkpOwogICAgICAgICByZXR1cm4gZ19z
dHJjbXAwKHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X25hbWUoZGF0YSksICJMb2NhbCBmaWxlcyIp
OwogICAgIH0pOwotICAgIGdfYXNzZXJ0KGl0ZW1MaXN0KTsKKyAgICBnX2Fzc2VydF9ub25udWxs
KGl0ZW1MaXN0KTsKICAgICBHTGlzdCByZW1vdmVMaXN0ID0geyBpdGVtTGlzdC0+ZGF0YSwgbnVs
bHB0ciwgbnVsbHB0ciB9OwogICAgIHRlc3QtPnJlbW92ZShXRUJLSVRfV0VCU0lURV9EQVRBX01F
TU9SWV9DQUNIRSwgJnJlbW92ZUxpc3QpOwogICAgIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goY2Fj
aGVUeXBlcyk7Ci0gICAgZ19hc3NlcnQoZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X25vbm51bGwo
ZGF0YUxpc3QpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19saXN0X2xlbmd0aChkYXRhTGlzdCks
ID09LCAxKTsKICAgICBkYXRhID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGEqPihkYXRh
TGlzdC0+ZGF0YSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRfdHlwZXMo
ZGF0YSkgJiBXRUJLSVRfV0VCU0lURV9EQVRBX0RJU0tfQ0FDSEUpOworICAgIGdfYXNzZXJ0X3Ry
dWUod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRfdHlwZXMoZGF0YSkgJiBXRUJLSVRfV0VCU0lURV9E
QVRBX0RJU0tfQ0FDSEUpOwogCiAgICAgLy8gQ2xlYXIgYWxsLgogICAgIHRlc3QtPmNsZWFyKGNh
Y2hlVHlwZXMsIDApOwogICAgIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goY2FjaGVUeXBlcyk7Ci0g
ICAgZ19hc3NlcnQoIWRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9udWxsKGRhdGFMaXN0KTsKIH0K
IAogc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhU3RvcmFnZShXZWJzaXRlRGF0YVRlc3QqIHRl
c3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IFdlYktpdFdlYnNpdGVEYXRh
VHlwZXMgc3RvcmFnZVR5cGVzID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGFUeXBlcz4o
V0VCS0lUX1dFQlNJVEVfREFUQV9TRVNTSU9OX1NUT1JBR0UgfCBXRUJLSVRfV0VCU0lURV9EQVRB
X0xPQ0FMX1NUT1JBR0UpOwogICAgIEdMaXN0KiBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKHN0b3Jh
Z2VUeXBlcyk7Ci0gICAgZ19hc3NlcnQoIWRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9udWxsKGRh
dGFMaXN0KTsKIAogICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL3Nl
c3Npb25zdG9yYWdlIikuZGF0YSgpKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQo
KTsKQEAgLTM2OCwxMCArMzY4LDEwIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YVN0b3Jh
Z2UoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPndhaXQo
MSk7CiAKICAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKHN0b3JhZ2VUeXBlcyk7Ci0gICAgZ19h
c3NlcnQoZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YUxpc3QpOwogICAgIGdf
YXNzZXJ0X2NtcHVpbnQoZ19saXN0X2xlbmd0aChkYXRhTGlzdCksID09LCAxKTsKICAgICBXZWJL
aXRXZWJzaXRlRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRhKj4oZGF0
YUxpc3QtPmRhdGEpOwotICAgIGdfYXNzZXJ0KGRhdGEpOworICAgIGdfYXNzZXJ0X25vbm51bGwo
ZGF0YSk7CiAgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IHdlYmtpdF9zZWN1cml0
eV9vcmlnaW5fbmV3X2Zvcl91cmkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7
CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X25hbWUoZGF0YSks
ID09LCB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdpbikpOwogICAgIHdlYmtp
dF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKQEAgLTM4Myw1MiArMzgzLDUyIEBAIHN0
YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YVN0b3JhZ2UoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogICAgIC8vIEdldCBhbHNvIGNhY2hlZCBkYXRhLCBhbmQgY2xlYXIgaXQu
CiAgICAgc3RhdGljIGNvbnN0IFdlYktpdFdlYnNpdGVEYXRhVHlwZXMgY2FjaGVBbmRTdG9yYWdl
VHlwZXMgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YVR5cGVzPihzdG9yYWdlVHlwZXMg
fCBXRUJLSVRfV0VCU0lURV9EQVRBX01FTU9SWV9DQUNIRSB8IFdFQktJVF9XRUJTSVRFX0RBVEFf
RElTS19DQUNIRSk7CiAgICAgZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChjYWNoZUFuZFN0b3JhZ2VU
eXBlcyk7Ci0gICAgZ19hc3NlcnQoZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0
YUxpc3QpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19saXN0X2xlbmd0aChkYXRhTGlzdCksID09
LCAxKTsKICAgICBkYXRhID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGEqPihkYXRhTGlz
dC0+ZGF0YSk7Ci0gICAgZ19hc3NlcnQoZGF0YSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRh
KTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X3R5cGVzKGRh
dGEpLCA9PSwgY2FjaGVBbmRTdG9yYWdlVHlwZXMpOwogICAgIHRlc3QtPmNsZWFyKHN0YXRpY19j
YXN0PFdlYktpdFdlYnNpdGVEYXRhVHlwZXM+KFdFQktJVF9XRUJTSVRFX0RBVEFfTUVNT1JZX0NB
Q0hFIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9ESVNLX0NBQ0hFKSwgMCk7CiAKICAgICAvLyBHZXQg
YWxsIHR5cGVzIGFnYWluLCBidXQgb25seSBzdG9yYWdlIGlzIHJldHJpZXZlZCBub3cuCiAgICAg
ZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChjYWNoZUFuZFN0b3JhZ2VUeXBlcyk7Ci0gICAgZ19hc3Nl
cnQoZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YUxpc3QpOwogICAgIGdfYXNz
ZXJ0X2NtcHVpbnQoZ19saXN0X2xlbmd0aChkYXRhTGlzdCksID09LCAxKTsKICAgICBkYXRhID0g
c3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGEqPihkYXRhTGlzdC0+ZGF0YSk7Ci0gICAgZ19h
c3NlcnQoZGF0YSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRhKTsKICAgICBnX2Fzc2VydF9j
bXB1aW50KHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X3R5cGVzKGRhdGEpLCA9PSwgc3RvcmFnZVR5
cGVzKTsKIAogICAgIC8vIFJlbW92ZSB0aGUgc2Vzc2lvbiBzdG9yYWdlLgogICAgIEdMaXN0IHJl
bW92ZUxpc3QgPSB7IGRhdGEsIG51bGxwdHIsIG51bGxwdHIgfTsKICAgICB0ZXN0LT5yZW1vdmUo
V0VCS0lUX1dFQlNJVEVfREFUQV9TRVNTSU9OX1NUT1JBR0UsICZyZW1vdmVMaXN0KTsKICAgICBk
YXRhTGlzdCA9IHRlc3QtPmZldGNoKHN0b3JhZ2VUeXBlcyk7Ci0gICAgZ19hc3NlcnQoZGF0YUxp
c3QpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YUxpc3QpOwogICAgIGdfYXNzZXJ0X2NtcHVp
bnQoZ19saXN0X2xlbmd0aChkYXRhTGlzdCksID09LCAxKTsKICAgICBkYXRhID0gc3RhdGljX2Nh
c3Q8V2ViS2l0V2Vic2l0ZURhdGEqPihkYXRhTGlzdC0+ZGF0YSk7Ci0gICAgZ19hc3NlcnQoISh3
ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF90eXBlcyhkYXRhKSAmIFdFQktJVF9XRUJTSVRFX0RBVEFf
U0VTU0lPTl9TVE9SQUdFKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRf
dHlwZXMoZGF0YSkgJiBXRUJLSVRfV0VCU0lURV9EQVRBX0xPQ0FMX1NUT1JBR0UpOworICAgIGdf
YXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X3R5cGVzKGRhdGEpICYgV0VCS0lU
X1dFQlNJVEVfREFUQV9TRVNTSU9OX1NUT1JBR0UpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0
X3dlYnNpdGVfZGF0YV9nZXRfdHlwZXMoZGF0YSkgJiBXRUJLSVRfV0VCU0lURV9EQVRBX0xPQ0FM
X1NUT1JBR0UpOwogCiAgICAgLy8gQ2xlYXIgYWxsLgogICAgIHRlc3QtPmNsZWFyKGNhY2hlQW5k
U3RvcmFnZVR5cGVzLCAwKTsKICAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKGNhY2hlQW5kU3Rv
cmFnZVR5cGVzKTsKLSAgICBnX2Fzc2VydCghZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X251bGwo
ZGF0YUxpc3QpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFEYXRhYmFzZXMoV2Vi
c2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHN0YXRpYyBjb25zdCBX
ZWJLaXRXZWJzaXRlRGF0YVR5cGVzIGRhdGFiYXNlVHlwZXMgPSBzdGF0aWNfY2FzdDxXZWJLaXRX
ZWJzaXRlRGF0YVR5cGVzPihXRUJLSVRfV0VCU0lURV9EQVRBX1dFQlNRTF9EQVRBQkFTRVMgfCBX
RUJLSVRfV0VCU0lURV9EQVRBX0lOREVYRUREQl9EQVRBQkFTRVMpOwogICAgIEdMaXN0KiBkYXRh
TGlzdCA9IHRlc3QtPmZldGNoKGRhdGFiYXNlVHlwZXMpOwotICAgIGdfYXNzZXJ0KCFkYXRhTGlz
dCk7CisgICAgZ19hc3NlcnRfbnVsbChkYXRhTGlzdCk7CiAKICAgICB0ZXN0LT5sb2FkVVJJKGtT
ZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9lbXB0eSIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVu
dGlsTG9hZEZpbmlzaGVkKCk7CiAgICAgdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZp
bmlzaGVkKCJ3aW5kb3cuaW5kZXhlZERCLm9wZW4oJ1Rlc3REYXRhYmFzZScpOyIsIG51bGxwdHIp
OwogCiAgICAgZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChkYXRhYmFzZVR5cGVzKTsKLSAgICBnX2Fz
c2VydChkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChkYXRhTGlzdCk7CiAgICAgZ19h
c3NlcnRfY21wdWludChnX2xpc3RfbGVuZ3RoKGRhdGFMaXN0KSwgPT0sIDEpOwogICAgIFdlYktp
dFdlYnNpdGVEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8V2ViS2l0V2Vic2l0ZURhdGEqPihkYXRh
TGlzdC0+ZGF0YSk7Ci0gICAgZ19hc3NlcnQoZGF0YSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChk
YXRhKTsKICAgICBXZWJLaXRTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gd2Via2l0X3NlY3VyaXR5
X29yaWdpbl9uZXdfZm9yX3VyaShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvIikuZGF0YSgpKTsK
ICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRfbmFtZShkYXRhKSwg
PT0sIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fZ2V0X2hvc3Qob3JpZ2luKSk7CiAgICAgd2Via2l0
X3NlY3VyaXR5X29yaWdpbl91bnJlZihvcmlnaW4pOwpAQCAtNDM4LDEwICs0MzgsMTAgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhRGF0YWJhc2VzKFdlYnNpdGVEYXRhVGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKIAogICAgIHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxGaW5p
c2hlZCgiZGIgPSBvcGVuRGF0YWJhc2UoXCJUZXN0RGF0YWJhc2VcIiwgXCIxLjBcIiwgXCJUZXN0
RGF0YWJhc2VcIiwgMSk7IiwgbnVsbHB0cik7CiAgICAgZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChk
YXRhYmFzZVR5cGVzKTsKLSAgICBnX2Fzc2VydChkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbm9u
bnVsbChkYXRhTGlzdCk7CiAgICAgZ19hc3NlcnRfY21wdWludChnX2xpc3RfbGVuZ3RoKGRhdGFM
aXN0KSwgPT0sIDEpOwogICAgIGRhdGEgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YSo+
KGRhdGFMaXN0LT5kYXRhKTsKLSAgICBnX2Fzc2VydChkYXRhKTsKKyAgICBnX2Fzc2VydF9ub25u
dWxsKGRhdGEpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQod2Via2l0X3dlYnNpdGVfZGF0YV9nZXRf
dHlwZXMoZGF0YSksID09LCBkYXRhYmFzZVR5cGVzKTsKICAgICAvLyBEYXRhYmFzZSBzaXplcyBh
cmUgdW5rbm93bi4KICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0
X3NpemUoZGF0YSwgV0VCS0lUX1dFQlNJVEVfREFUQV9JTkRFWEVEREJfREFUQUJBU0VTKSwgPT0s
IDApOwpAQCAtNDUxLDI5ICs0NTEsMjkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYnNpdGVEYXRhRGF0
YWJhc2VzKFdlYnNpdGVEYXRhVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBHTGlzdCBy
ZW1vdmVMaXN0ID0geyBkYXRhLCBudWxscHRyLCBudWxscHRyIH07CiAgICAgdGVzdC0+cmVtb3Zl
KGRhdGFiYXNlVHlwZXMsICZyZW1vdmVMaXN0KTsKICAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNo
KGRhdGFiYXNlVHlwZXMpOwotICAgIGdfYXNzZXJ0KCFkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRf
bnVsbChkYXRhTGlzdCk7CiAKICAgICAvLyBDbGVhciBhbGwuCiAgICAgc3RhdGljIGNvbnN0IFdl
YktpdFdlYnNpdGVEYXRhVHlwZXMgY2FjaGVBbmREYXRhYmFzZVR5cGVzID0gc3RhdGljX2Nhc3Q8
V2ViS2l0V2Vic2l0ZURhdGFUeXBlcz4oZGF0YWJhc2VUeXBlcyB8IFdFQktJVF9XRUJTSVRFX0RB
VEFfTUVNT1JZX0NBQ0hFIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9ESVNLX0NBQ0hFKTsKICAgICB0
ZXN0LT5jbGVhcihjYWNoZUFuZERhdGFiYXNlVHlwZXMsIDApOwogICAgIGRhdGFMaXN0ID0gdGVz
dC0+ZmV0Y2goY2FjaGVBbmREYXRhYmFzZVR5cGVzKTsKLSAgICBnX2Fzc2VydCghZGF0YUxpc3Qp
OworICAgIGdfYXNzZXJ0X251bGwoZGF0YUxpc3QpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2Vi
c2l0ZURhdGFBcHBjYWNoZShXZWJzaXRlRGF0YVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7
CiAgICAgR0xpc3QqIGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goV0VCS0lUX1dFQlNJVEVfREFUQV9P
RkZMSU5FX0FQUExJQ0FUSU9OX0NBQ0hFKTsKLSAgICBnX2Fzc2VydCghZGF0YUxpc3QpOworICAg
IGdfYXNzZXJ0X251bGwoZGF0YUxpc3QpOwogCiAgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5n
ZXRVUklGb3JQYXRoKCIvYXBwY2FjaGUiKS5kYXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbExv
YWRGaW5pc2hlZCgpOwogCiAgICAgdGVzdC0+d2FpdCgxKTsKICAgICBkYXRhTGlzdCA9IHRlc3Qt
PmZldGNoKFdFQktJVF9XRUJTSVRFX0RBVEFfT0ZGTElORV9BUFBMSUNBVElPTl9DQUNIRSk7Ci0g
ICAgZ19hc3NlcnQoZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YUxpc3QpOwog
ICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19saXN0X2xlbmd0aChkYXRhTGlzdCksID09LCAxKTsKICAg
ICBXZWJLaXRXZWJzaXRlRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRh
Kj4oZGF0YUxpc3QtPmRhdGEpOwotICAgIGdfYXNzZXJ0KGRhdGEpOworICAgIGdfYXNzZXJ0X25v
bm51bGwoZGF0YSk7CiAgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IHdlYmtpdF9z
ZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiLyIpLmRh
dGEoKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJzaXRlX2RhdGFfZ2V0X25hbWUo
ZGF0YSksID09LCB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9ob3N0KG9yaWdpbikpOwogICAg
IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsKQEAgLTQ4NCwyOCArNDg0LDI4
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YUFwcGNhY2hlKFdlYnNpdGVEYXRhVGVzdCog
dGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBHTGlzdCByZW1vdmVMaXN0ID0geyBkYXRhLCBudWxs
cHRyLCBudWxscHRyIH07CiAgICAgdGVzdC0+cmVtb3ZlKFdFQktJVF9XRUJTSVRFX0RBVEFfT0ZG
TElORV9BUFBMSUNBVElPTl9DQUNIRSwgJnJlbW92ZUxpc3QpOwogICAgIGRhdGFMaXN0ID0gdGVz
dC0+ZmV0Y2goV0VCS0lUX1dFQlNJVEVfREFUQV9PRkZMSU5FX0FQUExJQ0FUSU9OX0NBQ0hFKTsK
LSAgICBnX2Fzc2VydCghZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X251bGwoZGF0YUxpc3QpOwog
CiAgICAgLy8gQ2xlYXIgYWxsLgogICAgIHN0YXRpYyBjb25zdCBXZWJLaXRXZWJzaXRlRGF0YVR5
cGVzIGNhY2hlQW5kQXBwY2FjaGVUeXBlcyA9IHN0YXRpY19jYXN0PFdlYktpdFdlYnNpdGVEYXRh
VHlwZXM+KFdFQktJVF9XRUJTSVRFX0RBVEFfT0ZGTElORV9BUFBMSUNBVElPTl9DQUNIRSB8IFdF
QktJVF9XRUJTSVRFX0RBVEFfTUVNT1JZX0NBQ0hFIHwgV0VCS0lUX1dFQlNJVEVfREFUQV9ESVNL
X0NBQ0hFKTsKICAgICB0ZXN0LT5jbGVhcihjYWNoZUFuZEFwcGNhY2hlVHlwZXMsIDApOwogICAg
IGRhdGFMaXN0ID0gdGVzdC0+ZmV0Y2goY2FjaGVBbmRBcHBjYWNoZVR5cGVzKTsKLSAgICBnX2Fz
c2VydCghZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X251bGwoZGF0YUxpc3QpOwogfQogCiBzdGF0
aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFDb29raWVzKFdlYnNpdGVEYXRhVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKIHsKICAgICBHTGlzdCogZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChXRUJLSVRf
V0VCU0lURV9EQVRBX0NPT0tJRVMpOwotICAgIGdfYXNzZXJ0KCFkYXRhTGlzdCk7CisgICAgZ19h
c3NlcnRfbnVsbChkYXRhTGlzdCk7CiAKICAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVS
SUZvclBhdGgoIi9lbXB0eSIpLmRhdGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlz
aGVkKCk7CiAKICAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKFdFQktJVF9XRUJTSVRFX0RBVEFf
Q09PS0lFUyk7Ci0gICAgZ19hc3NlcnQoZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X25vbm51bGwo
ZGF0YUxpc3QpOwogICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19saXN0X2xlbmd0aChkYXRhTGlzdCks
ID09LCAxKTsKICAgICBXZWJLaXRXZWJzaXRlRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0PFdlYktp
dFdlYnNpdGVEYXRhKj4oZGF0YUxpc3QtPmRhdGEpOwotICAgIGdfYXNzZXJ0KGRhdGEpOworICAg
IGdfYXNzZXJ0X25vbm51bGwoZGF0YSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJz
aXRlX2RhdGFfZ2V0X25hbWUoZGF0YSksID09LCAiMTI3LjAuMC4xIik7CiAgICAgZ19hc3NlcnRf
Y21wdWludCh3ZWJraXRfd2Vic2l0ZV9kYXRhX2dldF90eXBlcyhkYXRhKSwgPT0sIFdFQktJVF9X
RUJTSVRFX0RBVEFfQ09PS0lFUyk7CiAgICAgLy8gQ29va2llcyBzaXplIGlzIHVua25vd24uCkBA
IC01MTQsMTMgKzUxNCwxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFDb29raWVzKFdl
YnNpdGVEYXRhVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBHTGlzdCByZW1vdmVMaXN0
ID0geyBkYXRhLCBudWxscHRyLCBudWxscHRyIH07CiAgICAgdGVzdC0+cmVtb3ZlKFdFQktJVF9X
RUJTSVRFX0RBVEFfQ09PS0lFUywgJnJlbW92ZUxpc3QpOwogICAgIGRhdGFMaXN0ID0gdGVzdC0+
ZmV0Y2goV0VCS0lUX1dFQlNJVEVfREFUQV9DT09LSUVTKTsKLSAgICBnX2Fzc2VydCghZGF0YUxp
c3QpOworICAgIGdfYXNzZXJ0X251bGwoZGF0YUxpc3QpOwogCiAgICAgLy8gQ2xlYXIgYWxsLgog
ICAgIHN0YXRpYyBjb25zdCBXZWJLaXRXZWJzaXRlRGF0YVR5cGVzIGNhY2hlQW5kQ29va2llVHlw
ZXMgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YVR5cGVzPihXRUJLSVRfV0VCU0lURV9E
QVRBX0NPT0tJRVMgfCBXRUJLSVRfV0VCU0lURV9EQVRBX01FTU9SWV9DQUNIRSB8IFdFQktJVF9X
RUJTSVRFX0RBVEFfRElTS19DQUNIRSk7CiAgICAgdGVzdC0+Y2xlYXIoY2FjaGVBbmRDb29raWVU
eXBlcywgMCk7CiAgICAgZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChjYWNoZUFuZENvb2tpZVR5cGVz
KTsKLSAgICBnX2Fzc2VydCghZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X251bGwoZGF0YUxpc3Qp
OwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2Vic2l0ZURhdGFEZXZpY2VJZEhhc2hTYWx0KFdlYnNp
dGVEYXRhVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTUzMiwxNyArNTMyLDE3IEBAIHN0
YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YURldmljZUlkSGFzaFNhbHQoV2Vic2l0ZURhdGFUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyCiAgICAgdGVzdC0+Y2xlYXIoV0VCS0lUX1dFQlNJVEVfREFU
QV9ERVZJQ0VfSURfSEFTSF9TQUxULCAwKTsKIAogICAgIEdMaXN0KiBkYXRhTGlzdCA9IHRlc3Qt
PmZldGNoKFdFQktJVF9XRUJTSVRFX0RBVEFfREVWSUNFX0lEX0hBU0hfU0FMVCk7Ci0gICAgZ19h
c3NlcnQoIWRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9udWxsKGRhdGFMaXN0KTsKIAogICAgIHRl
c3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2VudW1lcmF0ZWRldmljZXMiKS5k
YXRhKCkpOwogICAgIHRlc3QtPndhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJGaW5pc2hlZCIpOwog
CiAgICAgZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChXRUJLSVRfV0VCU0lURV9EQVRBX0RFVklDRV9J
RF9IQVNIX1NBTFQpOwotICAgIGdfYXNzZXJ0KGRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9ub25u
dWxsKGRhdGFMaXN0KTsKIAogICAgIGdfYXNzZXJ0X2NtcHVpbnQoZ19saXN0X2xlbmd0aChkYXRh
TGlzdCksID09LCAxKTsKICAgICBXZWJLaXRXZWJzaXRlRGF0YSogZGF0YSA9IHN0YXRpY19jYXN0
PFdlYktpdFdlYnNpdGVEYXRhKj4oZGF0YUxpc3QtPmRhdGEpOwotICAgIGdfYXNzZXJ0KGRhdGEp
OworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YSk7CiAgICAgV2ViS2l0U2VjdXJpdHlPcmlnaW4q
IG9yaWdpbiA9IHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fbmV3X2Zvcl91cmkoa1NlcnZlci0+Z2V0
VVJJRm9yUGF0aCgiLyIpLmRhdGEoKSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJz
aXRlX2RhdGFfZ2V0X25hbWUoZGF0YSksID09LCB3ZWJraXRfc2VjdXJpdHlfb3JpZ2luX2dldF9o
b3N0KG9yaWdpbikpOwogICAgIHdlYmtpdF9zZWN1cml0eV9vcmlnaW5fdW5yZWYob3JpZ2luKTsK
QEAgLTU1MSwyNyArNTUxLDI3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJzaXRlRGF0YURldmljZUlk
SGFzaFNhbHQoV2Vic2l0ZURhdGFUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyCiAgICAgR0xpc3Qg
cmVtb3ZlTGlzdCA9IHsgZGF0YSwgbnVsbHB0ciwgbnVsbHB0ciB9OwogICAgIHRlc3QtPnJlbW92
ZShXRUJLSVRfV0VCU0lURV9EQVRBX0RFVklDRV9JRF9IQVNIX1NBTFQsICZyZW1vdmVMaXN0KTsK
ICAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKFdFQktJVF9XRUJTSVRFX0RBVEFfREVWSUNFX0lE
X0hBU0hfU0FMVCk7Ci0gICAgZ19hc3NlcnQoIWRhdGFMaXN0KTsKKyAgICBnX2Fzc2VydF9udWxs
KGRhdGFMaXN0KTsKIAogICAgIC8vIFRlc3QgcmVtb3ZpbmcgdGhlIGNvb2tpZXMuCiAgICAgdGVz
dC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvZW51bWVyYXRlZGV2aWNlcyIpLmRh
dGEoKSk7CiAgICAgdGVzdC0+d2FpdFVudGlsVGl0bGVDaGFuZ2VkVG8oIkZpbmlzaGVkIik7CiAK
ICAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKFdFQktJVF9XRUJTSVRFX0RBVEFfREVWSUNFX0lE
X0hBU0hfU0FMVCk7Ci0gICAgZ19hc3NlcnQoZGF0YUxpc3QpOworICAgIGdfYXNzZXJ0X25vbm51
bGwoZGF0YUxpc3QpOwogICAgIGRhdGEgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YSo+
KGRhdGFMaXN0LT5kYXRhKTsKLSAgICBnX2Fzc2VydChkYXRhKTsKKyAgICBnX2Fzc2VydF9ub25u
dWxsKGRhdGEpOwogCiAgICAgR0xpc3QgcmVtb3ZlQ29va2llTGlzdCA9IHsgZGF0YSwgbnVsbHB0
ciwgbnVsbHB0ciB9OwogICAgIHRlc3QtPnJlbW92ZShXRUJLSVRfV0VCU0lURV9EQVRBX0NPT0tJ
RVMsICZyZW1vdmVDb29raWVMaXN0KTsKICAgICBkYXRhTGlzdCA9IHRlc3QtPmZldGNoKFdFQktJ
VF9XRUJTSVRFX0RBVEFfREVWSUNFX0lEX0hBU0hfU0FMVCk7Ci0gICAgZ19hc3NlcnQoIWRhdGFM
aXN0KTsKKyAgICBnX2Fzc2VydF9udWxsKGRhdGFMaXN0KTsKIAogICAgIC8vIENsZWFyIGFsbC4K
ICAgICBzdGF0aWMgY29uc3QgV2ViS2l0V2Vic2l0ZURhdGFUeXBlcyBjYWNoZUFuZEFwcGNhY2hl
VHlwZXMgPSBzdGF0aWNfY2FzdDxXZWJLaXRXZWJzaXRlRGF0YVR5cGVzPihXRUJLSVRfV0VCU0lU
RV9EQVRBX0RFVklDRV9JRF9IQVNIX1NBTFQpOwogICAgIHRlc3QtPmNsZWFyKGNhY2hlQW5kQXBw
Y2FjaGVUeXBlcywgMCk7CiAgICAgZGF0YUxpc3QgPSB0ZXN0LT5mZXRjaChjYWNoZUFuZEFwcGNh
Y2hlVHlwZXMpOwotICAgIGdfYXNzZXJ0KCFkYXRhTGlzdCk7CisgICAgZ19hc3NlcnRfbnVsbChk
YXRhTGlzdCk7CiAKICAgICB3ZWJraXRfc2V0dGluZ3Nfc2V0X2VuYWJsZV9tZWRpYV9zdHJlYW0o
c2V0dGluZ3MsIGVuYWJsZWQpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1dlYkV4dGVuc2lvblRlc3QuY3BwCmluZGV4IDk3YTc1ZTUxNDFl
ODgyNzRhMzNhOTNhNjI3MTIwNTU3ZGVkNGY4ODYuLmY0MzczZjI4ZmU4YzYxMDE1MThmNmViNWFm
YjY5ZmJlOWMyNzkwYmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9XZWJFeHRlbnNpb25UZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKQEAgLTE4LDcgKzE4LDcgQEAKICAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KKyNpbmNsdWRlICJXZWJQcm9jZXNzVGVzdC5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8Z2lvL2dpby5oPgpAQCAtMTM4LDcg
KzEzOCw3IEBAIHN0YXRpYyB2b2lkIGVtaXREb2N1bWVudExvYWRlZChHREJ1c0Nvbm5lY3Rpb24q
IGNvbm5lY3Rpb24pCiAgICAgICAgICJEb2N1bWVudExvYWRlZCIsCiAgICAgICAgIDAsCiAgICAg
ICAgIDApOwotICAgIGdfYXNzZXJ0KG9rKTsKKyAgICBnX2Fzc2VydF90cnVlKG9rKTsKIH0KIAog
c3RhdGljIHZvaWQgZG9jdW1lbnRMb2FkZWRDYWxsYmFjayhXZWJLaXRXZWJQYWdlKiB3ZWJQYWdl
LCBXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKQEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0
aWMgdm9pZCBlbWl0VVJJQ2hhbmdlZChHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0
IGNoYXIqIHVyaSkKICAgICAgICAgIlVSSUNoYW5nZWQiLAogICAgICAgICBnX3ZhcmlhbnRfbmV3
KCIocykiLCB1cmkpLAogICAgICAgICAwKTsKLSAgICBnX2Fzc2VydChvayk7CisgICAgZ19hc3Nl
cnRfdHJ1ZShvayk7CiB9CiAKIHN0YXRpYyB2b2lkIHVyaUNoYW5nZWRDYWxsYmFjayhXZWJLaXRX
ZWJQYWdlKiB3ZWJQYWdlLCBHUGFyYW1TcGVjKiBwc3BlYywgV2ViS2l0V2ViRXh0ZW5zaW9uKiBl
eHRlbnNpb24pCkBAIC0xODQsNyArMTg0LDcgQEAgc3RhdGljIGdib29sZWFuIHNlbmRSZXF1ZXN0
Q2FsbGJhY2soV2ViS2l0V2ViUGFnZSosIFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QsIFcKIHsK
ICAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZSA9IEZBTFNFOwogICAgIGNvbnN0IGNoYXIqIHJlcXVl
c3RVUkkgPSB3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KTsKLSAgICBnX2Fzc2Vy
dChyZXF1ZXN0VVJJKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHJlcXVlc3RVUkkpOwogCiAgICAg
aWYgKGNvbnN0IGNoYXIqIHN1ZmZpeCA9IGdfc3RycnN0cihyZXF1ZXN0VVJJLCAiL3JlbW92ZS10
aGlzL2phdmFzY3JpcHQuanMiKSkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHByZWZpeChn
X3N0cm5kdXAocmVxdWVzdFVSSSwgc3RybGVuKHJlcXVlc3RVUkkpIC0gc3RybGVuKHN1ZmZpeCkp
KTsKQEAgLTE5MiwxOCArMTkyLDE4IEBAIHN0YXRpYyBnYm9vbGVhbiBzZW5kUmVxdWVzdENhbGxi
YWNrKFdlYktpdFdlYlBhZ2UqLCBXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0LCBXCiAgICAgICAg
IHdlYmtpdF91cmlfcmVxdWVzdF9zZXRfdXJpKHJlcXVlc3QsIG5ld1VSSS5nZXQoKSk7CiAgICAg
fSBlbHNlIGlmIChjb25zdCBjaGFyKiBzdWZmaXggPSBnX3N0cnJzdHIocmVxdWVzdFVSSSwgIi9y
ZW1vdmUtdGhpcy9qYXZhc2NyaXB0LWFmdGVyLXJlZGlyZWN0aW9uLmpzIikpIHsKICAgICAgICAg
Ly8gUmVkaXJlY3RlZCBmcm9tIC9yZWRpcmVjdGVkLmpzLCByZWRpcmVjdFJlc3BvbnNlIHNob3Vs
ZCBiZSBudWxscHRyLgotICAgICAgICBnX2Fzc2VydChXRUJLSVRfSVNfVVJJX1JFU1BPTlNFKHJl
ZGlyZWN0UmVzcG9uc2UpKTsKLSAgICAgICAgZ19hc3NlcnQoZ19zdHJfaGFzX3N1ZmZpeCh3ZWJr
aXRfdXJpX3Jlc3BvbnNlX2dldF91cmkocmVkaXJlY3RSZXNwb25zZSksICIvcmVkaXJlY3RlZC5q
cyIpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfVVJJX1JFU1BPTlNFKHJlZGly
ZWN0UmVzcG9uc2UpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShnX3N0cl9oYXNfc3VmZml4KHdl
YmtpdF91cmlfcmVzcG9uc2VfZ2V0X3VyaShyZWRpcmVjdFJlc3BvbnNlKSwgIi9yZWRpcmVjdGVk
LmpzIikpOwogCiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gcHJlZml4KGdfc3RybmR1cChyZXF1
ZXN0VVJJLCBzdHJsZW4ocmVxdWVzdFVSSSkgLSBzdHJsZW4oc3VmZml4KSkpOwogICAgICAgICBH
VW5pcXVlUHRyPGNoYXI+IG5ld1VSSShnX3N0cmR1cF9wcmludGYoIiVzL2phdmFzY3JpcHQtYWZ0
ZXItcmVkaXJlY3Rpb24uanMiLCBwcmVmaXguZ2V0KCkpKTsKICAgICAgICAgd2Via2l0X3VyaV9y
ZXF1ZXN0X3NldF91cmkocmVxdWVzdCwgbmV3VVJJLmdldCgpKTsKICAgICB9IGVsc2UgaWYgKGdf
c3RyX2hhc19zdWZmaXgocmVxdWVzdFVSSSwgIi9yZWRpcmVjdGVkLmpzIikpIHsKICAgICAgICAg
Ly8gT3JpZ2luYWwgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSBzaG91bGQgYmUgbnVsbHB0ci4K
LSAgICAgICAgZ19hc3NlcnQoIXJlZGlyZWN0UmVzcG9uc2UpOworICAgICAgICBnX2Fzc2VydF9u
dWxsKHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3N1ZmZpeChy
ZXF1ZXN0VVJJLCAiL2FkZC1kby1ub3QtdHJhY2staGVhZGVyIikpIHsKICAgICAgICAgU291cE1l
c3NhZ2VIZWFkZXJzKiBoZWFkZXJzID0gd2Via2l0X3VyaV9yZXF1ZXN0X2dldF9odHRwX2hlYWRl
cnMocmVxdWVzdCk7Ci0gICAgICAgIGdfYXNzZXJ0KGhlYWRlcnMpOworICAgICAgICBnX2Fzc2Vy
dF9ub25udWxsKGhlYWRlcnMpOwogICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19hcHBlbmQo
aGVhZGVycywgIkROVCIsICIxIik7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfc3VmZml4KHJl
cXVlc3RVUkksICIvbm9ybWFsLWNoYW5nZS1yZXF1ZXN0IikpIHsKICAgICAgICAgR1VuaXF1ZVB0
cjxjaGFyPiBwcmVmaXgoZ19zdHJuZHVwKHJlcXVlc3RVUkksIHN0cmxlbihyZXF1ZXN0VVJJKSAt
IHN0cmxlbigiL25vcm1hbC1jaGFuZ2UtcmVxdWVzdCIpKSk7CkBAIC0yMTEsMTAgKzIxMSwxMCBA
QCBzdGF0aWMgZ2Jvb2xlYW4gc2VuZFJlcXVlc3RDYWxsYmFjayhXZWJLaXRXZWJQYWdlKiwgV2Vi
S2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgVwogICAgICAgICB3ZWJraXRfdXJpX3JlcXVlc3Rfc2V0
X3VyaShyZXF1ZXN0LCBuZXdVUkkuZ2V0KCkpOwogICAgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3N1
ZmZpeChyZXF1ZXN0VVJJLCAiL2h0dHAtZ2V0LW1ldGhvZCIpKSB7CiAgICAgICAgIGdfYXNzZXJ0
X2NtcHN0cih3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X2h0dHBfbWV0aG9kKHJlcXVlc3QpLCA9PSwg
IkdFVCIpOwotICAgICAgICBnX2Fzc2VydCh3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X2h0dHBfbWV0
aG9kKHJlcXVlc3QpID09IFNPVVBfTUVUSE9EX0dFVCk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0
cih3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X2h0dHBfbWV0aG9kKHJlcXVlc3QpLCA9PSwgU09VUF9N
RVRIT0RfR0VUKTsKICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19zdWZmaXgocmVxdWVzdFVSSSwg
Ii9odHRwLXBvc3QtbWV0aG9kIikpIHsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF91
cmlfcmVxdWVzdF9nZXRfaHR0cF9tZXRob2QocmVxdWVzdCksID09LCAiUE9TVCIpOwotICAgICAg
ICBnX2Fzc2VydCh3ZWJraXRfdXJpX3JlcXVlc3RfZ2V0X2h0dHBfbWV0aG9kKHJlcXVlc3QpID09
IFNPVVBfTUVUSE9EX1BPU1QpOworICAgICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3VyaV9y
ZXF1ZXN0X2dldF9odHRwX21ldGhvZChyZXF1ZXN0KSwgPT0sIFNPVVBfTUVUSE9EX1BPU1QpOwog
ICAgICAgICByZXR1cm5WYWx1ZSA9IFRSVUU7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfc3Vm
Zml4KHJlcXVlc3RVUkksICIvY2FuY2VsLXRoaXMuanMiKSkKICAgICAgICAgcmV0dXJuVmFsdWUg
PSBUUlVFOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIHN0YXRpYyBnYm9vbGVhbiBjb250ZXh0TWVudUNh
bGxiYWNrKFdlYktpdFdlYlBhZ2UqIHBhZ2UsIFdlYktpdENvbnRleHRNZW51KiBtZW51CiAKICAg
ICBpZiAoIWdfc3RyY21wMChwYWdlVVJJLCAiQ29udGV4dE1lbnVUZXN0Tm9kZSIpKSB7CiAgICAg
ICAgIFdlYktpdERPTU5vZGUqIG5vZGUgPSB3ZWJraXRfd2ViX2hpdF90ZXN0X3Jlc3VsdF9nZXRf
bm9kZShoaXRUZXN0UmVzdWx0KTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19OT0RF
KG5vZGUpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX05PREUobm9kZSkp
OwogICAgICAgICBhdXRvKiBmcmFtZSA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfbWFpbl9mcmFtZShw
YWdlKTsKICAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4ganNOb2RlID0gYWRvcHRHUmVmKHdlYmtp
dF9mcmFtZV9nZXRfanNfdmFsdWVfZm9yX2RvbV9vYmplY3QoZnJhbWUsIFdFQktJVF9ET01fT0JK
RUNUKG5vZGUpKSk7CiAgICAgICAgIHdlYmtpdF9jb250ZXh0X21lbnVfc2V0X3VzZXJfZGF0YSht
ZW51LCBzZXJpYWxpemVOb2RlKGpzTm9kZS5nZXQoKSkpOwpAQCAtMjg5LDE3ICsyODksMTcgQEAg
c3RhdGljIGdib29sZWFuIGNvbnRleHRNZW51Q2FsbGJhY2soV2ViS2l0V2ViUGFnZSogcGFnZSwg
V2ViS2l0Q29udGV4dE1lbnUqIG1lbnUKIAogc3RhdGljIHZvaWQgY29uc29sZU1lc3NhZ2VTZW50
Q2FsbGJhY2soV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgV2ViS2l0Q29uc29sZU1lc3NhZ2UqIGNv
bnNvbGVNZXNzYWdlKQogewotICAgIGdfYXNzZXJ0KGNvbnNvbGVNZXNzYWdlKTsKKyAgICBnX2Fz
c2VydF9ub25udWxsKGNvbnNvbGVNZXNzYWdlKTsKICAgICBHUmVmUHRyPEdWYXJpYW50PiB2YXJp
YW50ID0gZ192YXJpYW50X25ldygiKHV1c3VzKSIsIHdlYmtpdF9jb25zb2xlX21lc3NhZ2VfZ2V0
X3NvdXJjZShjb25zb2xlTWVzc2FnZSksCiAgICAgICAgIHdlYmtpdF9jb25zb2xlX21lc3NhZ2Vf
Z2V0X2xldmVsKGNvbnNvbGVNZXNzYWdlKSwgd2Via2l0X2NvbnNvbGVfbWVzc2FnZV9nZXRfdGV4
dChjb25zb2xlTWVzc2FnZSksCiAgICAgICAgIHdlYmtpdF9jb25zb2xlX21lc3NhZ2VfZ2V0X2xp
bmUoY29uc29sZU1lc3NhZ2UpLCB3ZWJraXRfY29uc29sZV9tZXNzYWdlX2dldF9zb3VyY2VfaWQo
Y29uc29sZU1lc3NhZ2UpKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IG1lc3NhZ2VTdHJpbmcoZ192
YXJpYW50X3ByaW50KHZhcmlhbnQuZ2V0KCksIEZBTFNFKSk7CiAgICAgR1JlZlB0cjxKU0NDb250
ZXh0PiBqc0NvbnRleHQgPSBhZG9wdEdSZWYod2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0KHdl
YmtpdF93ZWJfcGFnZV9nZXRfbWFpbl9mcmFtZSh3ZWJQYWdlKSkpOwogICAgIEdSZWZQdHI8SlND
VmFsdWU+IGNvbnNvbGUgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfZXZhbHVhdGUoanNDb250ZXh0
LmdldCgpLCAid2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuY29uc29sZSIsIC0xKSk7Ci0g
ICAgZ19hc3NlcnQoSlNDX0lTX1ZBTFVFKGNvbnNvbGUuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90
cnVlKEpTQ19JU19WQUxVRShjb25zb2xlLmdldCgpKSk7CiAgICAgaWYgKGpzY192YWx1ZV9pc19v
YmplY3QoY29uc29sZS5nZXQoKSkpIHsKICAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gcmVzdWx0
ID0gYWRvcHRHUmVmKGpzY192YWx1ZV9vYmplY3RfaW52b2tlX21ldGhvZChjb25zb2xlLmdldCgp
LCAicG9zdE1lc3NhZ2UiLCBHX1RZUEVfU1RSSU5HLCBtZXNzYWdlU3RyaW5nLmdldCgpLCBHX1RZ
UEVfTk9ORSkpOwotICAgICAgICBnX2Fzc2VydChKU0NfSVNfVkFMVUUocmVzdWx0LmdldCgpKSk7
CisgICAgICAgIGdfYXNzZXJ0X3RydWUoSlNDX0lTX1ZBTFVFKHJlc3VsdC5nZXQoKSkpOwogICAg
IH0KIH0KIApAQCAtMzEzLDcgKzMxMyw3IEBAIHN0YXRpYyB2b2lkIGVtaXRGb3JtQ29udHJvbHNB
c3NvY2lhdGVkKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhcioKICAgICAg
ICAgIkZvcm1Db250cm9sc0Fzc29jaWF0ZWQiLAogICAgICAgICBnX3ZhcmlhbnRfbmV3KCIocyki
LCBmb3JtSWRzKSwKICAgICAgICAgbnVsbHB0cik7Ci0gICAgZ19hc3NlcnQob2spOworICAgIGdf
YXNzZXJ0X3RydWUob2spOwogfQogCiBzdGF0aWMgdm9pZCBmb3JtQ29udHJvbHNBc3NvY2lhdGVk
Q2FsbGJhY2soV2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgR1B0ckFycmF5KiBmb3JtRWxlbWVudHMs
IFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQpAQCAtMzIxLDExICszMjEsMTEgQEAgc3Rh
dGljIHZvaWQgZm9ybUNvbnRyb2xzQXNzb2NpYXRlZENhbGxiYWNrKFdlYktpdFdlYlBhZ2UqIHdl
YlBhZ2UsIEdQdHJBcnJheSogZm8KICAgICBhdXRvKiBmcmFtZSA9IHdlYmtpdF93ZWJfcGFnZV9n
ZXRfbWFpbl9mcmFtZSh3ZWJQYWdlKTsKICAgICBHU3RyaW5nKiBmb3JtSWRzQnVpbGRlciA9IGdf
c3RyaW5nX25ldyhudWxscHRyKTsKICAgICBmb3IgKGd1aW50IGkgPSAwOyBpIDwgZm9ybUVsZW1l
bnRzLT5sZW47ICsraSkgewotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0VMRU1FTlQo
Z19wdHJfYXJyYXlfaW5kZXgoZm9ybUVsZW1lbnRzLCBpKSkpOworICAgICAgICBnX2Fzc2VydF90
cnVlKFdFQktJVF9ET01fSVNfRUxFTUVOVChnX3B0cl9hcnJheV9pbmRleChmb3JtRWxlbWVudHMs
IGkpKSk7CiAgICAgICAgIEdSZWZQdHI8SlNDVmFsdWU+IHZhbHVlID0gYWRvcHRHUmVmKHdlYmtp
dF9mcmFtZV9nZXRfanNfdmFsdWVfZm9yX2RvbV9vYmplY3QoZnJhbWUsIFdFQktJVF9ET01fT0JK
RUNUKGdfcHRyX2FycmF5X2luZGV4KGZvcm1FbGVtZW50cywgaSkpKSk7Ci0gICAgICAgIGdfYXNz
ZXJ0KEpTQ19JU19WQUxVRSh2YWx1ZS5nZXQoKSkpOwotICAgICAgICBnX2Fzc2VydChqc2NfdmFs
dWVfaXNfb2JqZWN0KHZhbHVlLmdldCgpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KGpzY192YWx1ZV9v
YmplY3RfaXNfaW5zdGFuY2Vfb2YodmFsdWUuZ2V0KCksICJFbGVtZW50IikpOworICAgICAgICBn
X2Fzc2VydF90cnVlKEpTQ19JU19WQUxVRSh2YWx1ZS5nZXQoKSkpOworICAgICAgICBnX2Fzc2Vy
dF90cnVlKGpzY192YWx1ZV9pc19vYmplY3QodmFsdWUuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3Nl
cnRfdHJ1ZShqc2NfdmFsdWVfb2JqZWN0X2lzX2luc3RhbmNlX29mKHZhbHVlLmdldCgpLCAiRWxl
bWVudCIpKTsKICAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gaWRWYWx1ZSA9IGFkb3B0R1JlZihq
c2NfdmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0eSh2YWx1ZS5nZXQoKSwgImlkIikpOwogICAgICAg
ICBHVW5pcXVlUHRyPGNoYXI+IGVsZW1lbnRJRChqc2NfdmFsdWVfdG9fc3RyaW5nKGlkVmFsdWUu
Z2V0KCkpKTsKICAgICAgICAgZ19zdHJpbmdfYXBwZW5kKGZvcm1JZHNCdWlsZGVyLCBlbGVtZW50
SUQuZ2V0KCkpOwpAQCAtMzUyLDcgKzM1Miw3IEBAIHN0YXRpYyB2b2lkIGVtaXRGb3JtU3VibWlz
c2lvbkV2ZW50KEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogbWV0CiAg
ICAgICAgIG1ldGhvZE5hbWUsCiAgICAgICAgIGdfdmFyaWFudF9uZXcoIihzc3NiYikiLCBmb3Jt
SUQgPyBmb3JtSUQgOiAiIiwgbmFtZXMsIHZhbHVlcywgdGFyZ2V0RnJhbWVJc01haW5GcmFtZSwg
c291cmNlRnJhbWVJc01haW5GcmFtZSksCiAgICAgICAgIG51bGxwdHIpOwotICAgIGdfYXNzZXJ0
KG9rKTsKKyAgICBnX2Fzc2VydF90cnVlKG9rKTsKIH0KIAogc3RhdGljIHZvaWQgaGFuZGxlRm9y
bVN1Ym1pc3Npb25DYWxsYmFjayhXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBEZWxheWVkU2lnbmFs
VHlwZSBkZWxheWVkU2lnbmFsVHlwZSwgY29uc3QgY2hhciogbWV0aG9kTmFtZSwgY29uc3QgY2hh
ciogZm9ybUlELCBXZWJLaXRGcmFtZSogc291cmNlRnJhbWUsIFdlYktpdEZyYW1lKiB0YXJnZXRG
cmFtZSwgR1B0ckFycmF5KiB0ZXh0RmllbGROYW1lcywgR1B0ckFycmF5KiB0ZXh0RmllbGRWYWx1
ZXMsIFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uKQpAQCAtMzg0LDEzICszODQsMTMgQEAg
c3RhdGljIHZvaWQgd2lsbFN1Ym1pdEZvcm1DYWxsYmFjayhXZWJLaXRXZWJQYWdlKiB3ZWJQYWdl
LCBXZWJLaXRET01FbGVtZW50KiBmb3IKIHsKICNpZiBQTEFURk9STShHVEspCiAgICAgR19HTlVD
X0JFR0lOX0lHTk9SRV9ERVBSRUNBVElPTlM7Ci0gICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19I
VE1MX0ZPUk1fRUxFTUVOVChmb3JtRWxlbWVudCkpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lU
X0RPTV9JU19IVE1MX0ZPUk1fRUxFTUVOVChmb3JtRWxlbWVudCkpOwogICAgIEdfR05VQ19FTkRf
SUdOT1JFX0RFUFJFQ0FUSU9OUzsKICNlbmRpZgogICAgIEdSZWZQdHI8SlNDVmFsdWU+IGpzRm9y
bUVsZW1lbnQgPSBhZG9wdEdSZWYod2Via2l0X2ZyYW1lX2dldF9qc192YWx1ZV9mb3JfZG9tX29i
amVjdCh3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5fZnJhbWUod2ViUGFnZSksIFdFQktJVF9ET01f
T0JKRUNUKGZvcm1FbGVtZW50KSkpOwotICAgIGdfYXNzZXJ0KEpTQ19JU19WQUxVRShqc0Zvcm1F
bGVtZW50LmdldCgpKSk7Ci0gICAgZ19hc3NlcnQoanNjX3ZhbHVlX2lzX29iamVjdChqc0Zvcm1F
bGVtZW50LmdldCgpKSk7Ci0gICAgZ19hc3NlcnQoanNjX3ZhbHVlX29iamVjdF9pc19pbnN0YW5j
ZV9vZihqc0Zvcm1FbGVtZW50LmdldCgpLCAiSFRNTEZvcm1FbGVtZW50IikpOworICAgIGdfYXNz
ZXJ0X3RydWUoSlNDX0lTX1ZBTFVFKGpzRm9ybUVsZW1lbnQuZ2V0KCkpKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKGpzY192YWx1ZV9pc19vYmplY3QoanNGb3JtRWxlbWVudC5nZXQoKSkpOworICAgIGdf
YXNzZXJ0X3RydWUoanNjX3ZhbHVlX29iamVjdF9pc19pbnN0YW5jZV9vZihqc0Zvcm1FbGVtZW50
LmdldCgpLCAiSFRNTEZvcm1FbGVtZW50IikpOwogICAgIEdSZWZQdHI8SlNDVmFsdWU+IGlkVmFs
dWUgPSBhZG9wdEdSZWYoanNjX3ZhbHVlX29iamVjdF9nZXRfcHJvcGVydHkoanNGb3JtRWxlbWVu
dC5nZXQoKSwgImlkIikpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gZm9ybUlEKGpzY192YWx1ZV90
b19zdHJpbmcoaWRWYWx1ZS5nZXQoKSkpOwogCkBAIC00MjUsNyArNDI1LDcgQEAgc3RhdGljIGNo
YXIqIGVjaG9DYWxsYmFjayhjb25zdCBjaGFyKiBtZXNzYWdlKQogc3RhdGljIHZvaWQgd2luZG93
T2JqZWN0Q2xlYXJlZChXZWJLaXRTY3JpcHRXb3JsZCogd29ybGQsIFdlYktpdFdlYlBhZ2UqIHBh
Z2UsIFdlYktpdEZyYW1lKiBmcmFtZSwgZ3BvaW50ZXIpCiB7CiAgICAgR1JlZlB0cjxKU0NDb250
ZXh0PiBqc0NvbnRleHQgPSBhZG9wdEdSZWYod2Via2l0X2ZyYW1lX2dldF9qc19jb250ZXh0X2Zv
cl9zY3JpcHRfd29ybGQoZnJhbWUsIHdvcmxkKSk7Ci0gICAgZ19hc3NlcnQoSlNDX0lTX0NPTlRF
WFQoanNDb250ZXh0LmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShKU0NfSVNfQ09OVEVYVChq
c0NvbnRleHQuZ2V0KCkpKTsKICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiBmdW5jdGlvbiA9IGFkb3B0
R1JlZihqc2NfdmFsdWVfbmV3X2Z1bmN0aW9uKGpzQ29udGV4dC5nZXQoKSwgImVjaG8iLCBHX0NB
TExCQUNLKGVjaG9DYWxsYmFjayksIE5VTEwsIE5VTEwsIEdfVFlQRV9TVFJJTkcsIDEsIEdfVFlQ
RV9TVFJJTkcpKTsKICAgICBqc2NfY29udGV4dF9zZXRfdmFsdWUoanNDb250ZXh0LmdldCgpLCAi
ZWNobyIsIGZ1bmN0aW9uLmdldCgpKTsKIH0KQEAgLTQ4NSw4ICs0ODUsOCBAQCBzdGF0aWMgdm9p
ZCBtZXRob2RDYWxsQ2FsbGJhY2soR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBj
aGFyKiBzZW5kZXIsCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgR1JlZlB0cjxXZWJL
aXRTY3JpcHRXb3JsZD4gd29ybGQgPSBhZG9wdEdSZWYod2Via2l0X3NjcmlwdF93b3JsZF9uZXco
KSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9zY3JpcHRfd29ybGRfZ2V0X2RlZmF1bHQoKSAh
PSB3b3JsZC5nZXQoKSk7Ci0gICAgICAgIGdfYXNzZXJ0KGdfc3RyX2hhc19wcmVmaXgod2Via2l0
X3NjcmlwdF93b3JsZF9nZXRfbmFtZSh3b3JsZC5nZXQoKSksICJVbmlxdWVXb3JsZF8iKSk7Cisg
ICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3NjcmlwdF93b3JsZF9nZXRfZGVmYXVsdCgpICE9
IHdvcmxkLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShnX3N0cl9oYXNfcHJlZml4KHdl
YmtpdF9zY3JpcHRfd29ybGRfZ2V0X25hbWUod29ybGQuZ2V0KCkpLCAiVW5pcXVlV29ybGRfIikp
OwogICAgICAgICBXZWJLaXRGcmFtZSogZnJhbWUgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X21haW5f
ZnJhbWUocGFnZSk7CiAgICAgICAgIEdSZWZQdHI8SlNDQ29udGV4dD4ganNDb250ZXh0ID0gYWRv
cHRHUmVmKHdlYmtpdF9mcmFtZV9nZXRfanNfY29udGV4dF9mb3Jfc2NyaXB0X3dvcmxkKGZyYW1l
LCB3b3JsZC5nZXQoKSkpOwogICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiByZXN1bHQgPSBhZG9w
dEdSZWYoanNjX2NvbnRleHRfZXZhbHVhdGUoanNDb250ZXh0LmdldCgpLCBzY3JpcHQsIC0xKSk7
CkBAIC01NjEsNyArNTYxLDcgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJHUmVzb3VyY2Uodm9pZCkK
IHsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlc291cmNlc1BhdGgoZ19idWlsZF9maWxlbmFtZShX
RUJLSVRfVEVTVF9SRVNPVVJDRVNfRElSLCAid2Via2l0Z2xpYi10ZXN0cy1yZXNvdXJjZXMuZ3Jl
c291cmNlIiwgbnVsbHB0cikpOwogICAgIEdSZXNvdXJjZSogcmVzb3VyY2UgPSBnX3Jlc291cmNl
X2xvYWQocmVzb3VyY2VzUGF0aC5nZXQoKSwgbnVsbHB0cik7Ci0gICAgZ19hc3NlcnQocmVzb3Vy
Y2UpOworICAgIGdfYXNzZXJ0X25vbm51bGwocmVzb3VyY2UpOwogCiAgICAgZ19yZXNvdXJjZXNf
cmVnaXN0ZXIocmVzb3VyY2UpOwogICAgIGdfcmVzb3VyY2VfdW5yZWYocmVzb3VyY2UpOwpAQCAt
NTcwLDcgKzU3MCw3IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyR1Jlc291cmNlKHZvaWQpCiBleHRl
cm4gIkMiIHZvaWQgd2Via2l0X3dlYl9leHRlbnNpb25faW5pdGlhbGl6ZV93aXRoX3VzZXJfZGF0
YShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgR1ZhcmlhbnQqIHVzZXJEYXRhKQogewog
ICAgIFdlYktpdFNjcmlwdFdvcmxkKiBpc29sYXRlZFdvcmxkID0gd2Via2l0X3NjcmlwdF93b3Js
ZF9uZXdfd2l0aF9uYW1lKCJXZWJFeHRlbnNpb25UZXN0U2NyaXB0V29ybGQiKTsKLSAgICBnX2Fz
c2VydChXRUJLSVRfSVNfU0NSSVBUX1dPUkxEKGlzb2xhdGVkV29ybGQpKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKFdFQktJVF9JU19TQ1JJUFRfV09STEQoaXNvbGF0ZWRXb3JsZCkpOwogICAgIGdfYXNz
ZXJ0X2NtcHN0cih3ZWJraXRfc2NyaXB0X3dvcmxkX2dldF9uYW1lKGlzb2xhdGVkV29ybGQpLCA9
PSwgIldlYkV4dGVuc2lvblRlc3RTY3JpcHRXb3JsZCIpOwogICAgIGdfb2JqZWN0X3NldF9kYXRh
X2Z1bGwoR19PQkpFQ1QoZXh0ZW5zaW9uKSwgIndrLXNjcmlwdC13b3JsZCIsIGlzb2xhdGVkV29y
bGQsIGdfb2JqZWN0X3VucmVmKTsKIApAQCAtNTc5LDggKzU3OSw4IEBAIGV4dGVybiAiQyIgdm9p
ZCB3ZWJraXRfd2ViX2V4dGVuc2lvbl9pbml0aWFsaXplX3dpdGhfdXNlcl9kYXRhKFdlYktpdFdl
YkV4dGVuc2lvCiAKICAgICByZWdpc3RlckdSZXNvdXJjZSgpOwogCi0gICAgZ19hc3NlcnQodXNl
ckRhdGEpOwotICAgIGdfYXNzZXJ0KGdfdmFyaWFudF9pc19vZl90eXBlKHVzZXJEYXRhLCBHX1ZB
UklBTlRfVFlQRV9VSU5UMzIpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHVzZXJEYXRhKTsKKyAg
ICBnX2Fzc2VydF90cnVlKGdfdmFyaWFudF9pc19vZl90eXBlKHVzZXJEYXRhLCBHX1ZBUklBTlRf
VFlQRV9VSU5UMzIpKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IGJ1c05hbWUoZ19zdHJkdXBfcHJp
bnRmKCJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0JXUiLCBnX3ZhcmlhbnRfZ2V0X3Vp
bnQzMih1c2VyRGF0YSkpKTsKICAgICBnX2J1c19vd25fbmFtZSgKICAgICAgICAgR19CVVNfVFlQ
RV9TRVNTSU9OLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1dlYlByb2Nlc3NUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9XZWJQcm9jZXNzVGVzdC5jcHAKaW5kZXggZGEwNmY0MmRlNGZiOWZmMzhmZjkzYTJkNGU5
NzY2NWE0ZWQyYmUyYy4uZjQ0MWE3MTlhODIzNjgyZTNhMTc4NThjNzUwYTE0ZGJkN2RkOGQ4YSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1dlYlByb2Nl
c3NUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvV2Vi
UHJvY2Vzc1Rlc3QuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrTGVha3Mo
KQogICAgICAgICBnX3ByaW50KCIgJXMoJXApIiwgZ190eXBlX25hbWVfZnJvbV9pbnN0YW5jZShy
ZWludGVycHJldF9jYXN0PEdUeXBlSW5zdGFuY2UqPihvYmplY3QpKSwgb2JqZWN0KTsKICAgICBn
X3ByaW50KCJcbiIpOwogCi0gICAgZ19hc3NlcnQoc193YXRjaGVkT2JqZWN0cy5pc0VtcHR5KCkp
OworICAgIGdfYXNzZXJ0X3RydWUoc193YXRjaGVkT2JqZWN0cy5pc0VtcHR5KCkpOwogfQogCiB2
b2lkIFdlYlByb2Nlc3NUZXN0OjphZGQoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSwgc3RkOjpmdW5j
dGlvbjxzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJvY2Vzc1Rlc3Q+ICgpPiBjbG9zdXJlKQpAQCAtNjQs
MTUgKzY0LDE1IEBAIHZvaWQgV2ViUHJvY2Vzc1Rlc3Q6OmFzc2VydE9iamVjdElzRGVsZXRlZFdo
ZW5UZXN0RmluaXNoZXMoR09iamVjdCogb2JqZWN0KQogCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHJv
Y2Vzc1Rlc3Q+IFdlYlByb2Nlc3NUZXN0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSkK
IHsKLSAgICBnX2Fzc2VydCh0ZXN0c01hcCgpLmNvbnRhaW5zKHRlc3ROYW1lKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh0ZXN0c01hcCgpLmNvbnRhaW5zKHRlc3ROYW1lKSk7CiAgICAgcmV0dXJuIHRl
c3RzTWFwKCkuZ2V0KHRlc3ROYW1lKSgpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gcnVuVGVzdChX
ZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBjb25zdCBjaGFyKiB0ZXN0UGF0aCkKIHsKLSAgICBnX2Fz
c2VydChXRUJLSVRfSVNfV0VCX1BBR0Uod2ViUGFnZSkpOworICAgIGdfYXNzZXJ0X3RydWUoV0VC
S0lUX0lTX1dFQl9QQUdFKHdlYlBhZ2UpKTsKICAgICBXZWJQcm9jZXNzVGVzdDo6YXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJQYWdlKSk7Ci0gICAgZ19h
c3NlcnQodGVzdFBhdGgpOworICAgIGdfYXNzZXJ0X25vbm51bGwodGVzdFBhdGgpOwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYlByb2Nlc3NUZXN0PiB0ZXN0ID0gV2ViUHJvY2Vzc1Rlc3Q6OmNy
ZWF0ZShTdHJpbmc6OmZyb21VVEY4KHRlc3RQYXRoKSk7CiAgICAgcmV0dXJuIHRlc3QtPnJ1blRl
c3QoZ19zdHJyc3RyKHRlc3RQYXRoLCAiLyIpICsgMSwgd2ViUGFnZSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9BdXRvY2xlYW51cHNUZXN0LmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0F1dG9jbGVhbnVwc1Rlc3QuY3Bw
CmluZGV4IDBlZGU3MmZhYzQ2ZDM1YTgyMGQ0YjE1YTJjMjNhNGQ0ODk5MDk5YmYuLmY3OWNmMzQ1
MTgyOWY0ZjUyNmNjYmQzYTY1YWRjYTk3NmNiMjk0MzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0F1dG9jbGVhbnVwc1Rlc3QuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0F1dG9jbGVhbnVwc1Rlc3QuY3BwCkBAIC0z
MywyNSArMzMsMjUgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIC8vIFRyYW5zZmVyIG5vbmUK
ICAgICAgICAgZ19hdXRvcHRyKFdlYktpdFdlYlBhZ2UpIHBhZ2UgPSBXRUJLSVRfV0VCX1BBR0Uo
Z19vYmplY3RfcmVmKEdfT0JKRUNUKHdlYlBhZ2UpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJ
VF9JU19XRUJfUEFHRShwYWdlKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0lTX1dF
Ql9QQUdFKHBhZ2UpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5p
c2hlcyhHX09CSkVDVChwYWdlKSk7CiAKICAgICAgICAgLy8gVHJhbnNmZXIgbm9uZQogICAgICAg
ICBnX2F1dG9wdHIoV2ViS2l0RE9NRG9jdW1lbnQpIGRvY3VtZW50ID0gV0VCS0lUX0RPTV9ET0NV
TUVOVChnX29iamVjdF9yZWYoR19PQkpFQ1Qod2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1l
bnQocGFnZSkpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9j
dW1lbnQpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRv
Y3VtZW50KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMo
R19PQkpFQ1QoZG9jdW1lbnQpKTsKIAogICAgICAgICAvLyBUcmFuc2ZlciBmdWxsCiAgICAgICAg
IEdfR05VQ19CRUdJTl9JR05PUkVfREVQUkVDQVRJT05TOwogICAgICAgICBnX2F1dG9wdHIoV2Vi
S2l0RE9NRE9NV2luZG93KSB3aW5kb3cgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9kZWZhdWx0
X3ZpZXcoZG9jdW1lbnQpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RPTV9XSU5E
T1cod2luZG93KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19ET01fV0lO
RE9XKHdpbmRvdykpOwogICAgICAgICBHX0dOVUNfRU5EX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAg
ICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2lu
ZG93KSk7CiAKICAgICAgICAgLy8gVHJhbnNmZXIgZnVsbAogICAgICAgICBHX0dOVUNfQkVHSU5f
SUdOT1JFX0RFUFJFQ0FUSU9OUzsKICAgICAgICAgZ19hdXRvcHRyKFdlYktpdERPTVJhbmdlKSBy
YW5nZSA9IHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX3JhbmdlKGRvY3VtZW50KTsKLSAgICAg
ICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19SQU5HRShyYW5nZSkpOworICAgICAgICBnX2Fzc2Vy
dF90cnVlKFdFQktJVF9ET01fSVNfUkFOR0UocmFuZ2UpKTsKICAgICAgICAgR19HTlVDX0VORF9J
R05PUkVfREVQUkVDQVRJT05TOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVz
dEZpbmlzaGVzKEdfT0JKRUNUKHJhbmdlKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTUNsaWVudFJlY3RUZXN0LmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTUNsaWVudFJlY3RUZXN0LmNwcAppbmRleCAyMGNk
ZmU1ZWY5MWM0MWMyMTUwNGYxMWM4NWM4NDE2OGYxMWUxMTE1Li4xYjM5ZmFmYTdhN2ZkMjQwNWZm
M2ZhZjlmMDJjOWYzZmIyYzkzOWZlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEd0ay9ET01DbGllbnRSZWN0VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NQ2xpZW50UmVjdFRlc3QuY3BwCkBAIC00NSwxNSArNDUs
MTUgQEAgcHJpdmF0ZToKICAgICBib29sIHRlc3REaXZCb3VuZGluZ0NsaWVudFJlY3RQb3NpdGlv
bihXZWJLaXRXZWJQYWdlKiBwYWdlKQogICAgIHsKICAgICAgICAgV2ViS2l0RE9NRG9jdW1lbnQq
IGRvY3VtZW50ID0gd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQocGFnZSk7Ci0gICAg
ICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKKyAgICAgICAg
Z19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CiAgICAgICAg
IGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZG9jdW1lbnQp
KTsKIAogICAgICAgICBXZWJLaXRET01FbGVtZW50KiBkaXYgPSB3ZWJraXRfZG9tX2RvY3VtZW50
X2dldF9lbGVtZW50X2J5X2lkKGRvY3VtZW50LCAicmVjdCIpOwotICAgICAgICBnX2Fzc2VydChX
RUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChkaXYpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShX
RUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChkaXYpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNE
ZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkaXYpKTsKIAogICAgICAgICBHUmVmUHRy
PFdlYktpdERPTUNsaWVudFJlY3Q+IGNsaWVudFJlY3QgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9l
bGVtZW50X2dldF9ib3VuZGluZ19jbGllbnRfcmVjdChkaXYpKTsKLSAgICAgICAgZ19hc3NlcnQo
V0VCS0lUX0RPTV9JU19DTElFTlRfUkVDVChjbGllbnRSZWN0LmdldCgpKSk7CisgICAgICAgIGdf
YXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19DTElFTlRfUkVDVChjbGllbnRSZWN0LmdldCgpKSk7
CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qo
Y2xpZW50UmVjdC5nZXQoKSkpOwogICAgICAgICBjaGVja0NsaWVudFJlY3RQb3NpdGlvbihjbGll
bnRSZWN0LmdldCgpKTsKIApAQCAtNjMsMjcgKzYzLDI3IEBAIHByaXZhdGU6CiAgICAgYm9vbCB0
ZXN0RGl2Q2xpZW50UmVjdHNQb3NpdGlvbkFuZExlbmd0aChXZWJLaXRXZWJQYWdlKiBwYWdlKQog
ICAgIHsKICAgICAgICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0X3dlYl9w
YWdlX2dldF9kb21fZG9jdW1lbnQocGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01f
SVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9N
X0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdo
ZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZG9jdW1lbnQpKTsKIAogICAgICAgICBXZWJLaXRET01F
bGVtZW50KiBkaXYgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9lbGVtZW50X2J5X2lkKGRvY3Vt
ZW50LCAicmVjdCIpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVO
VChkaXYpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVO
VChkaXYpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhH
X09CSkVDVChkaXYpKTsKIAogICAgICAgICBHUmVmUHRyPFdlYktpdERPTUNsaWVudFJlY3RMaXN0
PiBjbGllbnRSZWN0TGlzdCA9IGFkb3B0R1JlZih3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X2NsaWVu
dF9yZWN0cyhkaXYpKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19DTElFTlRfUkVD
VF9MSVNUKGNsaWVudFJlY3RMaXN0LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VC
S0lUX0RPTV9JU19DTElFTlRfUkVDVF9MSVNUKGNsaWVudFJlY3RMaXN0LmdldCgpKSk7CiAgICAg
ICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoY2xpZW50
UmVjdExpc3QuZ2V0KCkpKTsKIAogICAgICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF9kb21f
Y2xpZW50X3JlY3RfbGlzdF9nZXRfbGVuZ3RoKGNsaWVudFJlY3RMaXN0LmdldCgpKSwgPT0sIDEp
OwogCiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RE9NQ2xpZW50UmVjdD4gY2xpZW50UmVjdCA9IGFk
b3B0R1JlZih3ZWJraXRfZG9tX2NsaWVudF9yZWN0X2xpc3RfaXRlbShjbGllbnRSZWN0TGlzdC5n
ZXQoKSwgMCkpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0NMSUVOVF9SRUNUKGNs
aWVudFJlY3QuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0NM
SUVOVF9SRUNUKGNsaWVudFJlY3QuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxl
dGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChjbGllbnRSZWN0LmdldCgpKSk7CiAgICAgICAg
IGNoZWNrQ2xpZW50UmVjdFBvc2l0aW9uKGNsaWVudFJlY3QuZ2V0KCkpOwogCiAgICAgICAgIC8v
IEdldHRpbmcgdGhlIGNsaWVudFJlY3QgdHdpY2Ugc2hvdWxkIHJldHVybiB0aGUgc2FtZSBwb2lu
dGVyLgogICAgICAgICBHUmVmUHRyPFdlYktpdERPTUNsaWVudFJlY3Q+IGNsaWVudFJlY3QyID0g
YWRvcHRHUmVmKHdlYmtpdF9kb21fY2xpZW50X3JlY3RfbGlzdF9pdGVtKGNsaWVudFJlY3RMaXN0
LmdldCgpLCAwKSk7Ci0gICAgICAgIGdfYXNzZXJ0KGNsaWVudFJlY3QuZ2V0KCkgPT0gY2xpZW50
UmVjdDIuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKGNsaWVudFJlY3QuZ2V0KCkgPT0g
Y2xpZW50UmVjdDIuZ2V0KCkpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTURPTVdpbmRvd1Rl
c3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93
VGVzdC5jcHAKaW5kZXggZmM4Y2VmYjUyOWQxMzdlNjU2ZGVlYzI3OTVhNzFjY2M0YjQyODc3NS4u
MTI1NjI0MTk2YTcxYzZkM2FkNWJjZGQyOWYxNDJiODZhYmI5ZmQxMSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NRE9NV2luZG93VGVzdC5j
cHAKQEAgLTU0LDEyICs1NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBub3RpZnkoInJlYWR5Iiwg
IiIpOwogCiAgICAgICAgIFdlYktpdFdlYlBhZ2UqIHBhZ2UgPSB3ZWJraXRfd2ViX2V4dGVuc2lv
bl9nZXRfcGFnZShleHRlbnNpb24sIHdlYlBhZ2VGcm9tQXJncyhhcmdzKSk7Ci0gICAgICAgIGdf
YXNzZXJ0KFdFQktJVF9JU19XRUJfUEFHRShwYWdlKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUo
V0VCS0lUX0lTX1dFQl9QQUdFKHBhZ2UpKTsKICAgICAgICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRv
Y3VtZW50ID0gd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQocGFnZSk7Ci0gICAgICAg
IGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKKyAgICAgICAgZ19h
c3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CiAKICAgICAgICAg
V2ViS2l0RE9NRE9NV2luZG93KiBkb21XaW5kb3cgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9k
ZWZhdWx0X3ZpZXcoZG9jdW1lbnQpOwotICAgICAgICBnX2Fzc2VydChkb21XaW5kb3cpOworICAg
ICAgICBnX2Fzc2VydF9ub25udWxsKGRvbVdpbmRvdyk7CiAKICAgICAgICAgLy8gVGhlICJsb2Fk
IiBXZWJLaXRET01ET01XaW5kb3cgc2lnbmFsIGlzIGlzc3VlZCBiZWZvcmUgdGhpcyB0ZXN0IGlz
CiAgICAgICAgIC8vIGNhbGxlZC4gVGhlcmUncyBubyB3YXkgdG8gY2FwdHVyZSBpdCBoZXJlLiBX
ZSBzaW1wbHkgYXNzdW1lIHRoYXQKQEAgLTc3LDEwICs3NywxMCBAQCBwcml2YXRlOgogICAgICAg
ICBSdW5Mb29wOjpydW4oKTsKIAogICAgICAgICBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9n
ZXRfZG9tX2RvY3VtZW50KHBhZ2UpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RP
Q1VNRU5UKGRvY3VtZW50KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19E
T0NVTUVOVChkb2N1bWVudCkpOwogCiAgICAgICAgIFdlYktpdERPTUVsZW1lbnQqIGVsZW1lbnQg
PSB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9lbGVtZW50X2J5X2lkKGRvY3VtZW50LCAidGVzdCIp
OwotICAgICAgICBnX2Fzc2VydChlbGVtZW50KTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChl
bGVtZW50KTsKIAogICAgICAgICB3ZWJraXRfZG9tX2V2ZW50X3RhcmdldF9hZGRfZXZlbnRfbGlz
dGVuZXIoCiAgICAgICAgICAgICBXRUJLSVRfRE9NX0VWRU5UX1RBUkdFVChlbGVtZW50KSwKQEAg
LTEwMiwxMiArMTAyLDEyIEBAIHByaXZhdGU6CiAgICAgICAgIG5vdGlmeSgicmVhZHkiLCAiIik7
CiAKICAgICAgICAgV2ViS2l0V2ViUGFnZSogcGFnZSA9IHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dl
dF9wYWdlKGV4dGVuc2lvbiwgd2ViUGFnZUZyb21BcmdzKGFyZ3MpKTsKLSAgICAgICAgZ19hc3Nl
cnQoV0VCS0lUX0lTX1dFQl9QQUdFKHBhZ2UpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJL
SVRfSVNfV0VCX1BBR0UocGFnZSkpOwogICAgICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1l
bnQgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudChwYWdlKTsKLSAgICAgICAgZ19h
c3NlcnQoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOworICAgICAgICBnX2Fzc2Vy
dF90cnVlKFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKIAogICAgICAgICBXZWJL
aXRET01ET01XaW5kb3cqIGRvbVdpbmRvdyA9IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2RlZmF1
bHRfdmlldyhkb2N1bWVudCk7Ci0gICAgICAgIGdfYXNzZXJ0KGRvbVdpbmRvdyk7CisgICAgICAg
IGdfYXNzZXJ0X25vbm51bGwoZG9tV2luZG93KTsKIAogICAgICAgICAvLyBUaGUgImxvYWQiIFdl
YktpdERPTURPTVdpbmRvdyBzaWduYWwgaXMgaXNzdWVkIGJlZm9yZSB0aGlzIHRlc3QgaXMKICAg
ICAgICAgLy8gY2FsbGVkLiBUaGVyZSdzIG5vIHdheSB0byBjYXB0dXJlIGl0IGhlcmUuIFdlIHNp
bXBseSBhc3N1bWUgdGhhdApAQCAtMTI1LDE1ICsxMjUsMTUgQEAgcHJpdmF0ZToKICAgICAgICAg
UnVuTG9vcDo6cnVuKCk7CiAKICAgICAgICAgZG9jdW1lbnQgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0
X2RvbV9kb2N1bWVudChwYWdlKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19ET0NV
TUVOVChkb2N1bWVudCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfRE9D
VU1FTlQoZG9jdW1lbnQpKTsKIAogICAgICAgICBXZWJLaXRET01FbGVtZW50KiBlbGVtZW50ID0g
d2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudF9ieV9pZChkb2N1bWVudCwgInRlc3QiKTsK
LSAgICAgICAgZ19hc3NlcnQoZWxlbWVudCk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoZWxl
bWVudCk7CiAKICAgICAgICAgV2ViS2l0RE9NRXZlbnQqIGV2ZW50ID0gd2Via2l0X2RvbV9kb2N1
bWVudF9jcmVhdGVfZXZlbnQoZG9jdW1lbnQsICJNb3VzZUV2ZW50IiwgMCk7Ci0gICAgICAgIGdf
YXNzZXJ0KGV2ZW50KTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19FVkVOVChldmVu
dCkpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX01PVVNFX0VWRU5UKGV2ZW50KSk7
CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoZXZlbnQpOworICAgICAgICBnX2Fzc2VydF90cnVl
KFdFQktJVF9ET01fSVNfRVZFTlQoZXZlbnQpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJL
SVRfRE9NX0lTX01PVVNFX0VWRU5UKGV2ZW50KSk7CiAKICAgICAgICAgZ2xvbmcgY2xpZW50WCwg
Y2xpZW50WTsKICAgICAgICAgY2xpZW50WCA9IHdlYmtpdF9kb21fZWxlbWVudF9nZXRfY2xpZW50
X2xlZnQoZWxlbWVudCk7CkBAIC0xNjMsMTQgKzE2MywxNCBAQCBwcml2YXRlOgogICAgIGJvb2wg
dGVzdEdldENvbXB1dGVkU3R5bGUoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIEdWYXJp
YW50KiBhcmdzKQogICAgIHsKICAgICAgICAgV2ViS2l0V2ViUGFnZSogcGFnZSA9IHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2dldF9wYWdlKGV4dGVuc2lvbiwgd2ViUGFnZUZyb21BcmdzKGFyZ3MpKTsK
LSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX1dFQl9QQUdFKHBhZ2UpKTsKKyAgICAgICAgZ19h
c3NlcnRfdHJ1ZShXRUJLSVRfSVNfV0VCX1BBR0UocGFnZSkpOwogICAgICAgICBXZWJLaXRET01E
b2N1bWVudCogZG9jdW1lbnQgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudChwYWdl
KTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOwor
ICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsK
ICAgICAgICAgV2ViS2l0RE9NRE9NV2luZG93KiBkb21XaW5kb3cgPSB3ZWJraXRfZG9tX2RvY3Vt
ZW50X2dldF9kZWZhdWx0X3ZpZXcoZG9jdW1lbnQpOwotICAgICAgICBnX2Fzc2VydChkb21XaW5k
b3cpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKGRvbVdpbmRvdyk7CiAgICAgICAgIFdlYktp
dERPTUVsZW1lbnQqIGVsZW1lbnQgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9lbGVtZW50X2J5
X2lkKGRvY3VtZW50LCAidGVzdCIpOwotICAgICAgICBnX2Fzc2VydChlbGVtZW50KTsKLSAgICAg
ICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19FTEVNRU5UKGVsZW1lbnQpKTsKKyAgICAgICAgZ19h
c3NlcnRfbm9ubnVsbChlbGVtZW50KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9N
X0lTX0VMRU1FTlQoZWxlbWVudCkpOwogICAgICAgICBXZWJLaXRET01DU1NTdHlsZURlY2xhcmF0
aW9uKiBjc3NTdHlsZSA9IHdlYmtpdF9kb21fZG9tX3dpbmRvd19nZXRfY29tcHV0ZWRfc3R5bGUo
ZG9tV2luZG93LCBlbGVtZW50LCAwKTsKICAgICAgICAgZ2NoYXIqIGZvbnRTaXplID0gd2Via2l0
X2RvbV9jc3Nfc3R5bGVfZGVjbGFyYXRpb25fZ2V0X3Byb3BlcnR5X3ZhbHVlKGNzc1N0eWxlLCAi
Zm9udC1zaXplIik7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihmb250U2l6ZSwgPT0sICIxNnB4
Iik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01O
b2RlRmlsdGVyVGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9E
T01Ob2RlRmlsdGVyVGVzdC5jcHAKaW5kZXggODk3MDgzNmY1MGI2OWMyOWVhZDFiZTkwYWQ2MzVi
NTJkNDJlZDA2Yi4uY2NhODJmY2VlMGM3YzA4ZDIzY2ZiNTA5YWNjMzgxM2I4YzY1NmVlMyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NTm9kZUZpbHRl
clRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTU5v
ZGVGaWx0ZXJUZXN0LmNwcApAQCAtNjcsMTggKzY3LDE4IEBAIHByaXZhdGU6CiAgICAgYm9vbCB0
ZXN0VHJlZVdhbGtlcihXZWJLaXRXZWJQYWdlKiBwYWdlKQogICAgIHsKICAgICAgICAgV2ViS2l0
RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQo
cGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQp
KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50
KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpF
Q1QoZG9jdW1lbnQpKTsKIAogICAgICAgICBXZWJLaXRET01FbGVtZW50KiByb290ID0gd2Via2l0
X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudF9ieV9pZChkb2N1bWVudCwgInJvb3QiKTsKLSAgICAg
ICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19OT0RFKHJvb3QpKTsKKyAgICAgICAgZ19hc3NlcnRf
dHJ1ZShXRUJLSVRfRE9NX0lTX05PREUocm9vdCkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJvb3QpKTsKIAogICAgICAgICAvLyBObyBm
aWx0ZXIuCiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RE9NVHJlZVdhbGtlcj4gd2Fsa2VyID0gYWRv
cHRHUmVmKHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX3RyZWVfd2Fsa2VyKGRvY3VtZW50LCBX
RUJLSVRfRE9NX05PREUocm9vdCksIFdFQktJVF9ET01fTk9ERV9GSUxURVJfU0hPV19BTEwsIG51
bGxwdHIsIEZBTFNFLCBudWxscHRyKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNf
VFJFRV9XQUxLRVIod2Fsa2VyLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lU
X0RPTV9JU19UUkVFX1dBTEtFUih3YWxrZXIuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0
SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3YWxrZXIuZ2V0KCkpKTsKLSAgICAg
ICAgZ19hc3NlcnQoIXdlYmtpdF9kb21fdHJlZV93YWxrZXJfZ2V0X2ZpbHRlcih3YWxrZXIuZ2V0
KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfZG9tX3RyZWVfd2Fsa2VyX2dldF9m
aWx0ZXIod2Fsa2VyLmdldCgpKSk7CiAKICAgICAgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgICAg
IGZvciAoV2ViS2l0RE9NTm9kZSogbm9kZSA9IFdFQktJVF9ET01fTk9ERShyb290KTsgbm9kZTsg
bm9kZSA9IHdlYmtpdF9kb21fdHJlZV93YWxrZXJfbmV4dF9ub2RlKHdhbGtlci5nZXQoKSksICsr
aSkgewpAQCAtOTIsOSArOTIsOSBAQCBwcml2YXRlOgogICAgICAgICAvLyBJbnB1dCBlbGVtZW50
cyBmaWx0ZXIuCiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RE9NTm9kZUZpbHRlcj4gZmlsdGVyID0g
YWRvcHRHUmVmKHN0YXRpY19jYXN0PFdlYktpdERPTU5vZGVGaWx0ZXIqPihnX29iamVjdF9uZXco
d2Via2l0X25vZGVfZmlsdGVyX2dldF90eXBlKCksIG51bGxwdHIpKSk7CiAgICAgICAgIHdhbGtl
ciA9IGFkb3B0R1JlZih3ZWJraXRfZG9tX2RvY3VtZW50X2NyZWF0ZV90cmVlX3dhbGtlcihkb2N1
bWVudCwgV0VCS0lUX0RPTV9OT0RFKHJvb3QpLCBXRUJLSVRfRE9NX05PREVfRklMVEVSX1NIT1df
QUxMLCBmaWx0ZXIuZ2V0KCksIEZBTFNFLCBudWxscHRyKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdF
QktJVF9ET01fSVNfVFJFRV9XQUxLRVIod2Fsa2VyLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0
X3RydWUoV0VCS0lUX0RPTV9JU19UUkVFX1dBTEtFUih3YWxrZXIuZ2V0KCkpKTsKICAgICAgICAg
YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChmaWx0ZXIuZ2V0
KCkpKTsKLSAgICAgICAgZ19hc3NlcnQod2Via2l0X2RvbV90cmVlX3dhbGtlcl9nZXRfZmlsdGVy
KHdhbGtlci5nZXQoKSkgPT0gZmlsdGVyLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3
ZWJraXRfZG9tX3RyZWVfd2Fsa2VyX2dldF9maWx0ZXIod2Fsa2VyLmdldCgpKSA9PSBmaWx0ZXIu
Z2V0KCkpOwogCiAgICAgICAgIGkgPSAwOwogICAgICAgICBmb3IgKFdlYktpdERPTU5vZGUqIG5v
ZGUgPSBXRUJLSVRfRE9NX05PREUocm9vdCk7IG5vZGU7IG5vZGUgPSB3ZWJraXRfZG9tX3RyZWVf
d2Fsa2VyX25leHRfbm9kZSh3YWxrZXIuZ2V0KCkpLCArK2kpIHsKQEAgLTEwNyw5ICsxMDcsOSBA
QCBwcml2YXRlOgogCiAgICAgICAgIC8vIFNob3cgb25seSBlbGVtZW50cywgcmV1c2luZyB0aGUg
aW5wdXQgZmlsdGVyLgogICAgICAgICB3YWxrZXIgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9kb2N1
bWVudF9jcmVhdGVfdHJlZV93YWxrZXIoZG9jdW1lbnQsIFdFQktJVF9ET01fTk9ERShyb290KSwg
V0VCS0lUX0RPTV9OT0RFX0ZJTFRFUl9TSE9XX0VMRU1FTlQsIGZpbHRlci5nZXQoKSwgRkFMU0Us
IG51bGxwdHIpKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19UUkVFX1dBTEtFUih3
YWxrZXIuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX1RSRUVf
V0FMS0VSKHdhbGtlci5nZXQoKSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVu
VGVzdEZpbmlzaGVzKEdfT0JKRUNUKHdhbGtlci5nZXQoKSkpOwotICAgICAgICBnX2Fzc2VydCh3
ZWJraXRfZG9tX3RyZWVfd2Fsa2VyX2dldF9maWx0ZXIod2Fsa2VyLmdldCgpKSA9PSBmaWx0ZXIu
Z2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9kb21fdHJlZV93YWxrZXJfZ2V0
X2ZpbHRlcih3YWxrZXIuZ2V0KCkpID09IGZpbHRlci5nZXQoKSk7CiAKICAgICAgICAgaSA9IDA7
CiAgICAgICAgIGZvciAoV2ViS2l0RE9NTm9kZSogbm9kZSA9IFdFQktJVF9ET01fTk9ERShyb290
KTsgbm9kZTsgbm9kZSA9IHdlYmtpdF9kb21fdHJlZV93YWxrZXJfbmV4dF9ub2RlKHdhbGtlci5n
ZXQoKSksICsraSkgewpAQCAtMTI2LDE4ICsxMjYsMTggQEAgcHJpdmF0ZToKICAgICBib29sIHRl
c3ROb2RlSXRlcmF0b3IoV2ViS2l0V2ViUGFnZSogcGFnZSkKICAgICB7CiAgICAgICAgIFdlYktp
dERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50
KHBhZ2UpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50
KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVu
dCkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JK
RUNUKGRvY3VtZW50KSk7CiAKICAgICAgICAgV2ViS2l0RE9NRWxlbWVudCogcm9vdCA9IHdlYmtp
dF9kb21fZG9jdW1lbnRfZ2V0X2VsZW1lbnRfYnlfaWQoZG9jdW1lbnQsICJyb290Iik7Ci0gICAg
ICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfTk9ERShyb290KSk7CisgICAgICAgIGdfYXNzZXJ0
X3RydWUoV0VCS0lUX0RPTV9JU19OT0RFKHJvb3QpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNE
ZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChyb290KSk7CiAKICAgICAgICAgLy8gTm8g
ZmlsdGVyLgogICAgICAgICBHUmVmUHRyPFdlYktpdERPTU5vZGVJdGVyYXRvcj4gaXRlciA9IGFk
b3B0R1JlZih3ZWJraXRfZG9tX2RvY3VtZW50X2NyZWF0ZV9ub2RlX2l0ZXJhdG9yKGRvY3VtZW50
LCBXRUJLSVRfRE9NX05PREUocm9vdCksIFdFQktJVF9ET01fTk9ERV9GSUxURVJfU0hPV19BTEws
IG51bGxwdHIsIEZBTFNFLCBudWxscHRyKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01f
SVNfTk9ERV9JVEVSQVRPUihpdGVyLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VC
S0lUX0RPTV9JU19OT0RFX0lURVJBVE9SKGl0ZXIuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChpdGVyLmdldCgpKSk7Ci0gICAg
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG9tX25vZGVfaXRlcmF0b3JfZ2V0X2ZpbHRlcihpdGVyLmdl
dCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2RvbV9ub2RlX2l0ZXJhdG9yX2dl
dF9maWx0ZXIoaXRlci5nZXQoKSkpOwogCiAgICAgICAgIHVuc2lnbmVkIGkgPSAwOwogICAgICAg
ICB3aGlsZSAoV2ViS2l0RE9NTm9kZSogbm9kZSA9IHdlYmtpdF9kb21fbm9kZV9pdGVyYXRvcl9u
ZXh0X25vZGUoaXRlci5nZXQoKSwgbnVsbHB0cikpIHsKQEAgLTE1Miw5ICsxNTIsOSBAQCBwcml2
YXRlOgogICAgICAgICAvLyBJbnB1dCBlbGVtZW50cyBmaWx0ZXIuCiAgICAgICAgIEdSZWZQdHI8
V2ViS2l0RE9NTm9kZUZpbHRlcj4gZmlsdGVyID0gYWRvcHRHUmVmKHN0YXRpY19jYXN0PFdlYktp
dERPTU5vZGVGaWx0ZXIqPihnX29iamVjdF9uZXcod2Via2l0X25vZGVfZmlsdGVyX2dldF90eXBl
KCksIG51bGxwdHIpKSk7CiAgICAgICAgIGl0ZXIgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9kb2N1
bWVudF9jcmVhdGVfbm9kZV9pdGVyYXRvcihkb2N1bWVudCwgV0VCS0lUX0RPTV9OT0RFKHJvb3Qp
LCBXRUJLSVRfRE9NX05PREVfRklMVEVSX1NIT1dfQUxMLCBmaWx0ZXIuZ2V0KCksIEZBTFNFLCBu
dWxscHRyKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfTk9ERV9JVEVSQVRPUihp
dGVyLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19OT0RFX0lU
RVJBVE9SKGl0ZXIuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRl
c3RGaW5pc2hlcyhHX09CSkVDVChpdGVyLmdldCgpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtp
dF9kb21fbm9kZV9pdGVyYXRvcl9nZXRfZmlsdGVyKGl0ZXIuZ2V0KCkpID09IGZpbHRlci5nZXQo
KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2RvbV9ub2RlX2l0ZXJhdG9yX2dldF9m
aWx0ZXIoaXRlci5nZXQoKSkgPT0gZmlsdGVyLmdldCgpKTsKIAogICAgICAgICBpID0gMDsKICAg
ICAgICAgd2hpbGUgKFdlYktpdERPTU5vZGUqIG5vZGUgPSB3ZWJraXRfZG9tX25vZGVfaXRlcmF0
b3JfbmV4dF9ub2RlKGl0ZXIuZ2V0KCksIG51bGxwdHIpKSB7CkBAIC0xNjgsOSArMTY4LDkgQEAg
cHJpdmF0ZToKIAogICAgICAgICAvLyBTaG93IG9ubHkgZWxlbWVudHMsIHJldXNpbmcgdGhlIGlu
cHV0IGZpbHRlci4KICAgICAgICAgaXRlciA9IGFkb3B0R1JlZih3ZWJraXRfZG9tX2RvY3VtZW50
X2NyZWF0ZV9ub2RlX2l0ZXJhdG9yKGRvY3VtZW50LCBXRUJLSVRfRE9NX05PREUocm9vdCksIFdF
QktJVF9ET01fTk9ERV9GSUxURVJfU0hPV19FTEVNRU5ULCBmaWx0ZXIuZ2V0KCksIEZBTFNFLCBu
dWxscHRyKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfTk9ERV9JVEVSQVRPUihp
dGVyLmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19OT0RFX0lU
RVJBVE9SKGl0ZXIuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRl
c3RGaW5pc2hlcyhHX09CSkVDVChpdGVyLmdldCgpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtp
dF9kb21fbm9kZV9pdGVyYXRvcl9nZXRfZmlsdGVyKGl0ZXIuZ2V0KCkpID09IGZpbHRlci5nZXQo
KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2RvbV9ub2RlX2l0ZXJhdG9yX2dldF9m
aWx0ZXIoaXRlci5nZXQoKSkgPT0gZmlsdGVyLmdldCgpKTsKIAogICAgICAgICBpID0gMDsKICAg
ICAgICAgd2hpbGUgKFdlYktpdERPTU5vZGUqIG5vZGUgPSB3ZWJraXRfZG9tX25vZGVfaXRlcmF0
b3JfbmV4dF9ub2RlKGl0ZXIuZ2V0KCksIG51bGxwdHIpKSB7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlVGVzdC5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9ET01Ob2RlVGVzdC5jcHAKaW5kZXggNzlkNzZhZTdk
MjM5ZjlhNjIzZWE2NzlhNjVjNTg5NDQwYmMwZDYyMy4uYmE3ZmFiOTljZjZhNmY1MjA2ZmIwYTM2
OTkzMjIzZDU2YjVmZmM0MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvRE9NTm9kZVRlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL0RPTU5vZGVUZXN0LmNwcApAQCAtMzQsNDEgKzM0LDQxIEBAIHByaXZhdGU6CiAg
ICAgYm9vbCB0ZXN0SGllcmFyY2h5TmF2aWdhdGlvbihXZWJLaXRXZWJQYWdlKiBwYWdlKQogICAg
IHsKICAgICAgICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0X3dlYl9wYWdl
X2dldF9kb21fZG9jdW1lbnQocGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNf
RE9DVU1FTlQoZG9jdW1lbnQpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lT
X0RPQ1VNRU5UKGRvY3VtZW50KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5U
ZXN0RmluaXNoZXMoR19PQkpFQ1QoZG9jdW1lbnQpKTsKIAogICAgICAgICBXZWJLaXRET01IVE1M
SGVhZEVsZW1lbnQqIGhlYWQgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9oZWFkKGRvY3VtZW50
KTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19IVE1MX0hFQURfRUxFTUVOVChoZWFk
KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19IVE1MX0hFQURfRUxFTUVO
VChoZWFkKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMo
R19PQkpFQ1QoaGVhZCkpOwogCiAgICAgICAgIC8vIFRpdGxlLCBoZWFkJ3MgY2hpbGQuCi0gICAg
ICAgIGdfYXNzZXJ0KHdlYmtpdF9kb21fbm9kZV9oYXNfY2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9O
T0RFKGhlYWQpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2RvbV9ub2RlX2hhc19j
aGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoaGVhZCkpKTsKICAgICAgICAgR1JlZlB0cjxXZWJL
aXRET01Ob2RlTGlzdD4gbGlzdCA9IGFkb3B0R1JlZih3ZWJraXRfZG9tX25vZGVfZ2V0X2NoaWxk
X25vZGVzKFdFQktJVF9ET01fTk9ERShoZWFkKSkpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRf
RE9NX0lTX05PREVfTElTVChsaXN0LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VC
S0lUX0RPTV9JU19OT0RFX0xJU1QobGlzdC5nZXQoKSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJ
c0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGxpc3QuZ2V0KCkpKTsKICAgICAgICAg
Z19hc3NlcnRfY21waW50KHdlYmtpdF9kb21fbm9kZV9saXN0X2dldF9sZW5ndGgobGlzdC5nZXQo
KSksID09LCAxKTsKICAgICAgICAgV2ViS2l0RE9NTm9kZSogbm9kZSA9IHdlYmtpdF9kb21fbm9k
ZV9saXN0X2l0ZW0obGlzdC5nZXQoKSwgMCk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01f
SVNfSFRNTF9USVRMRV9FTEVNRU5UKG5vZGUpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJL
SVRfRE9NX0lTX0hUTUxfVElUTEVfRUxFTUVOVChub2RlKSk7CiAgICAgICAgIGFzc2VydE9iamVj
dElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qobm9kZSkpOwogCiAgICAgICAgIC8v
IEJvZHksIEhlYWQgc2libGluZy4KICAgICAgICAgbm9kZSA9IHdlYmtpdF9kb21fbm9kZV9nZXRf
bmV4dF9zaWJsaW5nKFdFQktJVF9ET01fTk9ERShoZWFkKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdF
QktJVF9ET01fSVNfSFRNTF9CT0RZX0VMRU1FTlQobm9kZSkpOworICAgICAgICBnX2Fzc2VydF90
cnVlKFdFQktJVF9ET01fSVNfSFRNTF9CT0RZX0VMRU1FTlQobm9kZSkpOwogICAgICAgICBhc3Nl
cnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG5vZGUpKTsKICAgICAg
ICAgV2ViS2l0RE9NSFRNTEJvZHlFbGVtZW50KiBib2R5ID0gV0VCS0lUX0RPTV9IVE1MX0JPRFlf
RUxFTUVOVChub2RlKTsKIAogICAgICAgICAvLyBUaGVyZSBpcyBubyB0aGlyZCBzaWJsaW5nCi0g
ICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG9tX25vZGVfZ2V0X25leHRfc2libGluZyhub2RlKSk7
CisgICAgICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2RvbV9ub2RlX2dldF9uZXh0X3NpYmxpbmco
bm9kZSkpOwogCiAgICAgICAgIC8vIEJvZHkncyBwcmV2aW91cyBzaWJsaW5nIGlzIEhlYWQuCiAg
ICAgICAgIG5vZGUgPSB3ZWJraXRfZG9tX25vZGVfZ2V0X3ByZXZpb3VzX3NpYmxpbmcoV0VCS0lU
X0RPTV9OT0RFKGJvZHkpKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19IVE1MX0hF
QURfRUxFTUVOVChub2RlKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19I
VE1MX0hFQURfRUxFTUVOVChub2RlKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdo
ZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qobm9kZSkpOwogCiAgICAgICAgIC8vIEJvZHkgaGFzIDMg
Y2hpbGRyZW4uCi0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9kb21fbm9kZV9oYXNfY2hpbGRfbm9k
ZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0
X2RvbV9ub2RlX2hhc19jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkpKTsKICAgICAg
ICAgbGlzdCA9IGFkb3B0R1JlZih3ZWJraXRfZG9tX25vZGVfZ2V0X2NoaWxkX25vZGVzKFdFQktJ
VF9ET01fTk9ERShib2R5KSkpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX05PREVf
TElTVChsaXN0LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19O
T0RFX0xJU1QobGlzdC5nZXQoKSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVu
VGVzdEZpbmlzaGVzKEdfT0JKRUNUKGxpc3QuZ2V0KCkpKTsKICAgICAgICAgdW5zaWduZWQgbG9u
ZyBsZW5ndGggPSB3ZWJraXRfZG9tX25vZGVfbGlzdF9nZXRfbGVuZ3RoKGxpc3QuZ2V0KCkpOwog
ICAgICAgICBnX2Fzc2VydF9jbXBpbnQobGVuZ3RoLCA9PSwgMyk7CkBAIC03Niw3ICs3Niw3IEBA
IHByaXZhdGU6CiAgICAgICAgIC8vIFRoZSB0aHJlZSBvZiB0aGVtIGFyZSBQIHRhZ3MuCiAgICAg
ICAgIGZvciAodW5zaWduZWQgbG9uZyBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAg
ICAgICBub2RlID0gd2Via2l0X2RvbV9ub2RlX2xpc3RfaXRlbShsaXN0LmdldCgpLCBpKTsKLSAg
ICAgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9QQVJBR1JBUEhfRUxFTUVOVChu
b2RlKSk7CisgICAgICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfSFRNTF9QQVJB
R1JBUEhfRUxFTUVOVChub2RlKSk7CiAgICAgICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRX
aGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG5vZGUpKTsKICAgICAgICAgfQogCkBAIC05MSw5MSAr
OTEsOTEgQEAgcHJpdmF0ZToKICAgICBib29sIHRlc3RJbnNlcnRpb24oV2ViS2l0V2ViUGFnZSog
cGFnZSkKICAgICB7CiAgICAgICAgIFdlYktpdERPTURvY3VtZW50KiBkb2N1bWVudCA9IHdlYmtp
dF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2UpOwotICAgICAgICBnX2Fzc2VydChXRUJL
SVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VC
S0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGRvY3VtZW50KSk7CiAKICAgICAgICAgV2Vi
S2l0RE9NSFRNTEVsZW1lbnQqIGJvZHkgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9ib2R5KGRv
Y3VtZW50KTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19IVE1MX0VMRU1FTlQoYm9k
eSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5UKGJv
ZHkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09C
SkVDVChib2R5KSk7CiAKICAgICAgICAgLy8gQm9keSBzaG91bGRuJ3QgaGF2ZSBhbnkgY2hpbGRy
ZW4gYXQgdGhpcyBwb2ludC4KLSAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9kb21fbm9kZV9oYXNf
Y2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7CisgICAgICAgIGdfYXNzZXJ0X2Zh
bHNlKHdlYmtpdF9kb21fbm9kZV9oYXNfY2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkp
KSk7CiAKICAgICAgICAgLy8gVGhlIHZhbHVlIG9mIGEgbm9uLWV4aXN0ZW50IGF0dHJpYnV0ZSBz
aG91bGQgYmUgbnVsbCwgbm90IGFuIGVtcHR5IHN0cmluZwotICAgICAgICBnX2Fzc2VydCghd2Vi
a2l0X2RvbV9odG1sX2JvZHlfZWxlbWVudF9nZXRfYmFja2dyb3VuZChXRUJLSVRfRE9NX0hUTUxf
Qk9EWV9FTEVNRU5UKGJvZHkpKSk7CisgICAgICAgIGdfYXNzZXJ0X251bGwod2Via2l0X2RvbV9o
dG1sX2JvZHlfZWxlbWVudF9nZXRfYmFja2dyb3VuZChXRUJLSVRfRE9NX0hUTUxfQk9EWV9FTEVN
RU5UKGJvZHkpKSk7CiAKICAgICAgICAgLy8gSW5zZXJ0IG9uZSBQIGVsZW1lbnQuCiAgICAgICAg
IFdlYktpdERPTUVsZW1lbnQqIHAgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2NyZWF0ZV9lbGVtZW50
KGRvY3VtZW50LCAiUCIsIDApOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxf
RUxFTUVOVChwKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19IVE1MX0VM
RU1FTlQocCkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVz
KEdfT0JKRUNUKHApKTsKICAgICAgICAgd2Via2l0X2RvbV9ub2RlX2FwcGVuZF9jaGlsZChXRUJL
SVRfRE9NX05PREUoYm9keSksIFdFQktJVF9ET01fTk9ERShwKSwgMCk7CiAKICAgICAgICAgLy8g
Tm93IGl0IHNob3VsZCBoYXZlIG9uZSwgdGhlIHNhbWUgdGhhdCB3ZSBpbnNlcnRlZC4KLSAgICAg
ICAgZ19hc3NlcnQod2Via2l0X2RvbV9ub2RlX2hhc19jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05P
REUoYm9keSkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfZG9tX25vZGVfaGFzX2No
aWxkX25vZGVzKFdFQktJVF9ET01fTk9ERShib2R5KSkpOwogICAgICAgICBHUmVmUHRyPFdlYktp
dERPTU5vZGVMaXN0PiBsaXN0ID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fbm9kZV9nZXRfY2hpbGRf
bm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9E
T01fSVNfTk9ERV9MSVNUKGxpc3QuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJL
SVRfRE9NX0lTX05PREVfTElTVChsaXN0LmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobGlzdC5nZXQoKSkpOwogICAgICAgICBn
X2Fzc2VydF9jbXBpbnQod2Via2l0X2RvbV9ub2RlX2xpc3RfZ2V0X2xlbmd0aChsaXN0LmdldCgp
KSwgPT0sIDEpOwogICAgICAgICBXZWJLaXRET01Ob2RlKiBub2RlID0gd2Via2l0X2RvbV9ub2Rl
X2xpc3RfaXRlbShsaXN0LmdldCgpLCAwKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9J
U19IVE1MX0VMRU1FTlQobm9kZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01f
SVNfSFRNTF9FTEVNRU5UKG5vZGUpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hl
blRlc3RGaW5pc2hlcyhHX09CSkVDVChub2RlKSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9k
b21fbm9kZV9pc19zYW1lX25vZGUoV0VCS0lUX0RPTV9OT0RFKHApLCBub2RlKSk7CisgICAgICAg
IGdfYXNzZXJ0X3RydWUod2Via2l0X2RvbV9ub2RlX2lzX3NhbWVfbm9kZShXRUJLSVRfRE9NX05P
REUocCksIG5vZGUpKTsKIAogICAgICAgICAvLyBSZXBsYWNlIHRoZSBQIHRhZyB3aXRoIGEgRElW
IHRhZy4KICAgICAgICAgV2ViS2l0RE9NRWxlbWVudCogZGl2ID0gd2Via2l0X2RvbV9kb2N1bWVu
dF9jcmVhdGVfZWxlbWVudChkb2N1bWVudCwgIkRJViIsIDApOwotICAgICAgICBnX2Fzc2VydChX
RUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChkaXYpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShX
RUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChkaXYpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNE
ZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkaXYpKTsKICAgICAgICAgd2Via2l0X2Rv
bV9ub2RlX3JlcGxhY2VfY2hpbGQoV0VCS0lUX0RPTV9OT0RFKGJvZHkpLCBXRUJLSVRfRE9NX05P
REUoZGl2KSwgV0VCS0lUX0RPTV9OT0RFKHApLCAwKTsKLSAgICAgICAgZ19hc3NlcnQod2Via2l0
X2RvbV9ub2RlX2hhc19jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkpKTsKKyAgICAg
ICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfZG9tX25vZGVfaGFzX2NoaWxkX25vZGVzKFdFQktJVF9E
T01fTk9ERShib2R5KSkpOwogICAgICAgICBsaXN0ID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fbm9k
ZV9nZXRfY2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7Ci0gICAgICAgIGdfYXNz
ZXJ0KFdFQktJVF9ET01fSVNfTk9ERV9MSVNUKGxpc3QuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3Nl
cnRfdHJ1ZShXRUJLSVRfRE9NX0lTX05PREVfTElTVChsaXN0LmdldCgpKSk7CiAgICAgICAgIGFz
c2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobGlzdC5nZXQoKSkp
OwogICAgICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2RvbV9ub2RlX2xpc3RfZ2V0X2xlbmd0
aChsaXN0LmdldCgpKSwgPT0sIDEpOwogICAgICAgICBub2RlID0gd2Via2l0X2RvbV9ub2RlX2xp
c3RfaXRlbShsaXN0LmdldCgpLCAwKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19I
VE1MX0VMRU1FTlQobm9kZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNf
SFRNTF9FTEVNRU5UKG5vZGUpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRl
c3RGaW5pc2hlcyhHX09CSkVDVChub2RlKSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9kb21f
bm9kZV9pc19zYW1lX25vZGUoV0VCS0lUX0RPTV9OT0RFKGRpdiksIG5vZGUpKTsKKyAgICAgICAg
Z19hc3NlcnRfdHJ1ZSh3ZWJraXRfZG9tX25vZGVfaXNfc2FtZV9ub2RlKFdFQktJVF9ET01fTk9E
RShkaXYpLCBub2RlKSk7CiAKICAgICAgICAgLy8gTm93IHJlbW92ZSB0aGUgdGFnLgogICAgICAg
ICB3ZWJraXRfZG9tX25vZGVfcmVtb3ZlX2NoaWxkKFdFQktJVF9ET01fTk9ERShib2R5KSwgbm9k
ZSwgMCk7CiAgICAgICAgIGxpc3QgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9ub2RlX2dldF9jaGls
ZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkpKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lU
X0RPTV9JU19OT0RFX0xJU1QobGlzdC5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdF
QktJVF9ET01fSVNfTk9ERV9MSVNUKGxpc3QuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0
SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChsaXN0LmdldCgpKSk7CiAgICAgICAg
IGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfZG9tX25vZGVfbGlzdF9nZXRfbGVuZ3RoKGxpc3QuZ2V0
KCkpLCA9PSwgMCk7CiAKICAgICAgICAgLy8gVGVzdCBpbnNlcnQgYmVmb3JlLiBJZiByZWZDaGls
ZCBpcyBudWxsLCBpbnNlcnQgbmV3Q2hpbGQgYXMgbGFzdCBlbGVtZW50IG9mIHBhcmVudC4KICAg
ICAgICAgZGl2ID0gd2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfZWxlbWVudChkb2N1bWVudCwg
IkRJViIsIDApOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChk
aXYpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChk
aXYpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09C
SkVDVChkaXYpKTsKICAgICAgICAgd2Via2l0X2RvbV9ub2RlX2luc2VydF9iZWZvcmUoV0VCS0lU
X0RPTV9OT0RFKGJvZHkpLCBXRUJLSVRfRE9NX05PREUoZGl2KSwgMCwgMCk7Ci0gICAgICAgIGdf
YXNzZXJ0KHdlYmtpdF9kb21fbm9kZV9oYXNfY2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJv
ZHkpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2RvbV9ub2RlX2hhc19jaGlsZF9u
b2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkpKTsKICAgICAgICAgbGlzdCA9IGFkb3B0R1JlZih3
ZWJraXRfZG9tX25vZGVfZ2V0X2NoaWxkX25vZGVzKFdFQktJVF9ET01fTk9ERShib2R5KSkpOwot
ICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX05PREVfTElTVChsaXN0LmdldCgpKSk7Cisg
ICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19OT0RFX0xJU1QobGlzdC5nZXQoKSkp
OwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNU
KGxpc3QuZ2V0KCkpKTsKICAgICAgICAgZ19hc3NlcnRfY21waW50KHdlYmtpdF9kb21fbm9kZV9s
aXN0X2dldF9sZW5ndGgobGlzdC5nZXQoKSksID09LCAxKTsKICAgICAgICAgbm9kZSA9IHdlYmtp
dF9kb21fbm9kZV9saXN0X2l0ZW0obGlzdC5nZXQoKSwgMCk7Ci0gICAgICAgIGdfYXNzZXJ0KFdF
QktJVF9ET01fSVNfSFRNTF9FTEVNRU5UKG5vZGUpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShX
RUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChub2RlKSk7CiAgICAgICAgIGFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qobm9kZSkpOwotICAgICAgICBnX2Fzc2Vy
dCh3ZWJraXRfZG9tX25vZGVfaXNfc2FtZV9ub2RlKFdFQktJVF9ET01fTk9ERShkaXYpLCBub2Rl
KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2RvbV9ub2RlX2lzX3NhbWVfbm9kZShX
RUJLSVRfRE9NX05PREUoZGl2KSwgbm9kZSkpOwogCiAgICAgICAgIC8vIE5vdyBpbnNlcnQgYSAn
cCcgYmVmb3JlICdkaXYnLgogICAgICAgICBwID0gd2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVf
ZWxlbWVudChkb2N1bWVudCwgIlAiLCAwKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9J
U19IVE1MX0VMRU1FTlQocCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNf
SFRNTF9FTEVNRU5UKHApKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RG
aW5pc2hlcyhHX09CSkVDVChwKSk7CiAgICAgICAgIHdlYmtpdF9kb21fbm9kZV9pbnNlcnRfYmVm
b3JlKFdFQktJVF9ET01fTk9ERShib2R5KSwgV0VCS0lUX0RPTV9OT0RFKHApLCBXRUJLSVRfRE9N
X05PREUoZGl2KSwgMCk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9kb21fbm9kZV9oYXNfY2hp
bGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUo
d2Via2l0X2RvbV9ub2RlX2hhc19jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkpKTsK
ICAgICAgICAgbGlzdCA9IGFkb3B0R1JlZih3ZWJraXRfZG9tX25vZGVfZ2V0X2NoaWxkX25vZGVz
KFdFQktJVF9ET01fTk9ERShib2R5KSkpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lT
X05PREVfTElTVChsaXN0LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RP
TV9JU19OT0RFX0xJU1QobGlzdC5nZXQoKSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0
ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGxpc3QuZ2V0KCkpKTsKICAgICAgICAgZ19hc3Nl
cnRfY21waW50KHdlYmtpdF9kb21fbm9kZV9saXN0X2dldF9sZW5ndGgobGlzdC5nZXQoKSksID09
LCAyKTsKICAgICAgICAgbm9kZSA9IHdlYmtpdF9kb21fbm9kZV9saXN0X2l0ZW0obGlzdC5nZXQo
KSwgMCk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5UKG5vZGUp
KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChub2Rl
KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpF
Q1Qobm9kZSkpOwotICAgICAgICBnX2Fzc2VydCh3ZWJraXRfZG9tX25vZGVfaXNfc2FtZV9ub2Rl
KFdFQktJVF9ET01fTk9ERShwKSwgbm9kZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtp
dF9kb21fbm9kZV9pc19zYW1lX25vZGUoV0VCS0lUX0RPTV9OT0RFKHApLCBub2RlKSk7CiAgICAg
ICAgIG5vZGUgPSB3ZWJraXRfZG9tX25vZGVfbGlzdF9pdGVtKGxpc3QuZ2V0KCksIDEpOwotICAg
ICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChub2RlKSk7CisgICAgICAg
IGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19IVE1MX0VMRU1FTlQobm9kZSkpOwogICAgICAg
ICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG5vZGUpKTsK
LSAgICAgICAgZ19hc3NlcnQod2Via2l0X2RvbV9ub2RlX2lzX3NhbWVfbm9kZShXRUJLSVRfRE9N
X05PREUoZGl2KSwgbm9kZSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9kb21fbm9k
ZV9pc19zYW1lX25vZGUoV0VCS0lUX0RPTV9OT0RFKGRpdiksIG5vZGUpKTsKIAogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xODUsMTcgKzE4NSwxNyBAQCBwcml2YXRlOgogICAgICAg
ICBzdGF0aWMgY29uc3QgY2hhciogZXhwZWN0ZWRUYWdOYW1lc1tdID0geyAiSFRNTCIsICJIRUFE
IiwgIkJPRFkiLCAiVklERU8iLCAiU09VUkNFIiwgIlZJREVPIiwgIlNPVVJDRSIsICJJTlBVVCIg
fTsKIAogICAgICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQgPSB3ZWJraXRfd2ViX3Bh
Z2VfZ2V0X2RvbV9kb2N1bWVudChwYWdlKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9J
U19ET0NVTUVOVChkb2N1bWVudCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01f
SVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hl
blRlc3RGaW5pc2hlcyhHX09CSkVDVChkb2N1bWVudCkpOwogCiAgICAgICAgIEdSZWZQdHI8V2Vi
S2l0RE9NTm9kZUxpc3Q+IGxpc3QgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9kb2N1bWVudF9xdWVy
eV9zZWxlY3Rvcl9hbGwoZG9jdW1lbnQsICIqIiwgbnVsbHB0cikpOwotICAgICAgICBnX2Fzc2Vy
dChXRUJLSVRfRE9NX0lTX05PREVfTElTVChsaXN0LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0
X3RydWUoV0VCS0lUX0RPTV9JU19OT0RFX0xJU1QobGlzdC5nZXQoKSkpOwogICAgICAgICBhc3Nl
cnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGxpc3QuZ2V0KCkpKTsK
ICAgICAgICAgZ3Vsb25nIG5vZGVDb3VudCA9IHdlYmtpdF9kb21fbm9kZV9saXN0X2dldF9sZW5n
dGgobGlzdC5nZXQoKSk7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQobm9kZUNvdW50LCA9PSwg
R19OX0VMRU1FTlRTKGV4cGVjdGVkVGFnTmFtZXMpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG5vZGVDb3VudDsgaSsrKSB7CiAgICAgICAgICAgICBXZWJLaXRET01Ob2RlKiBu
b2RlID0gd2Via2l0X2RvbV9ub2RlX2xpc3RfaXRlbShsaXN0LmdldCgpLCBpKTsKLSAgICAgICAg
ICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfTk9ERShub2RlKSk7CisgICAgICAgICAgICBnX2Fz
c2VydF90cnVlKFdFQktJVF9ET01fSVNfTk9ERShub2RlKSk7CiAgICAgICAgICAgICBhc3NlcnRP
YmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG5vZGUpKTsKICAgICAgICAg
ICAgIEdVbmlxdWVQdHI8Y2hhcj4gdGFnTmFtZSh3ZWJraXRfZG9tX25vZGVfZ2V0X25vZGVfbmFt
ZShub2RlKSk7CiAgICAgICAgICAgICBnX2Fzc2VydF9jbXBzdHIodGFnTmFtZS5nZXQoKSwgPT0s
IGV4cGVjdGVkVGFnTmFtZXNbaV0pOwpAQCAtMjA5LDE3ICsyMDksMTcgQEAgcHJpdmF0ZToKICAg
ICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGV4cGVjdGVkVGFnTmFtZXNbXSA9IHsgIkhUTUwiLCAi
SEVBRCIsICJCT0RZIiwgIlZJREVPIiwgIlNPVVJDRSIsICJWSURFTyIsICJTT1VSQ0UiLCAiSU5Q
VVQiIH07CiAKICAgICAgICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0X3dl
Yl9wYWdlX2dldF9kb21fZG9jdW1lbnQocGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9E
T01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRf
RE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRl
ZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZG9jdW1lbnQpKTsKIAogICAgICAgICBHUmVmUHRy
PFdlYktpdERPTUhUTUxDb2xsZWN0aW9uPiBjb2xsZWN0aW9uID0gYWRvcHRHUmVmKHdlYmtpdF9k
b21fZG9jdW1lbnRfZ2V0X2VsZW1lbnRzX2J5X3RhZ19uYW1lX2FzX2h0bWxfY29sbGVjdGlvbihk
b2N1bWVudCwgIioiKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9DT0xM
RUNUSU9OKGNvbGxlY3Rpb24uZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRf
RE9NX0lTX0hUTUxfQ09MTEVDVElPTihjb2xsZWN0aW9uLmdldCgpKSk7CiAgICAgICAgIGFzc2Vy
dE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoY29sbGVjdGlvbi5nZXQo
KSkpOwogICAgICAgICBndWxvbmcgbm9kZUNvdW50ID0gd2Via2l0X2RvbV9odG1sX2NvbGxlY3Rp
b25fZ2V0X2xlbmd0aChjb2xsZWN0aW9uLmdldCgpKTsKICAgICAgICAgZ19hc3NlcnRfY21wdWlu
dChub2RlQ291bnQsID09LCBHX05fRUxFTUVOVFMoZXhwZWN0ZWRUYWdOYW1lcykpOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbm9kZUNvdW50OyBpKyspIHsKICAgICAgICAgICAg
IFdlYktpdERPTU5vZGUqIG5vZGUgPSB3ZWJraXRfZG9tX2h0bWxfY29sbGVjdGlvbl9pdGVtKGNv
bGxlY3Rpb24uZ2V0KCksIGkpOwotICAgICAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19O
T0RFKG5vZGUpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19OT0RF
KG5vZGUpKTsKICAgICAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNo
ZXMoR19PQkpFQ1Qobm9kZSkpOwogICAgICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiB0YWdOYW1l
KHdlYmtpdF9kb21fbm9kZV9nZXRfbm9kZV9uYW1lKG5vZGUpKTsKICAgICAgICAgICAgIGdfYXNz
ZXJ0X2NtcHN0cih0YWdOYW1lLmdldCgpLCA9PSwgZXhwZWN0ZWRUYWdOYW1lc1tpXSk7CkBAIC0y
MzEsNDEgKzIzMSw0MSBAQCBwcml2YXRlOgogICAgIGJvb2wgdGVzdERPTUNhY2hlKFdlYktpdFdl
YlBhZ2UqIHBhZ2UpCiAgICAgewogICAgICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQg
PSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudChwYWdlKTsKLSAgICAgICAgZ19hc3Nl
cnQoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOworICAgICAgICBnX2Fzc2VydF90
cnVlKFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKICAgICAgICAgYXNzZXJ0T2Jq
ZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkb2N1bWVudCkpOwogCiAgICAg
ICAgIC8vIERPTSBvYmplY3RzIGFscmVhZHkgaW4gdGhlIGRvY3VtZW50IHNob3VsZCBiZSBhdXRv
bWF0aWNhbGx5IGhhbmRsZWQgYnkgdGhlIGNhY2hlLgogICAgICAgICBXZWJLaXRET01FbGVtZW50
KiBkaXYgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9lbGVtZW50X2J5X2lkKGRvY3VtZW50LCAi
Y29udGFpbmVyIik7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5U
KGRpdikpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5U
KGRpdikpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdf
T0JKRUNUKGRpdikpOwogCiAgICAgICAgIC8vIEdldCB0aGUgc2FtZSBlbG1lbnQgdHdpY2Ugc2hv
dWxkIHJldHVybiB0aGUgc2FtZSBwb2ludGVyLgotICAgICAgICBnX2Fzc2VydChkaXYgPT0gd2Vi
a2l0X2RvbV9kb2N1bWVudF9nZXRfZWxlbWVudF9ieV9pZChkb2N1bWVudCwgImNvbnRhaW5lciIp
KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShkaXYgPT0gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRf
ZWxlbWVudF9ieV9pZChkb2N1bWVudCwgImNvbnRhaW5lciIpKTsKIAogICAgICAgICAvLyBBIG5l
dyBET00gb2JqZWN0IGNyZWF0ZWQgdGhhdCBpcyBkZXJpdmVkIGZyb20gTm9kZSBzaG91bGQgYmUg
YXV0b21hdGljYWxseSBoYW5kbGVkIGJ5IHRoZSBjYWNoZS4KICAgICAgICAgV2ViS2l0RE9NRWxl
bWVudCogcCA9IHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX2VsZW1lbnQoZG9jdW1lbnQsICJQ
IiwgbnVsbHB0cik7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9QQVJBR1JB
UEhfRUxFTUVOVChwKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19IVE1M
X1BBUkFHUkFQSF9FTEVNRU5UKHApKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hl
blRlc3RGaW5pc2hlcyhHX09CSkVDVChwKSk7CiAKICAgICAgICAgLy8gQSBuZXcgRE9NIG9iamVj
dCBjcmVhdGVkIHRoYXQgaXNuJ3QgZGVyaXZlZCBmcm9tIE5vZGUgc2hvdWxkIGJlIG1hbnVhbGx5
IGhhbmRsZWQuCiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RE9NTm9kZUl0ZXJhdG9yPiBpdGVyID0g
YWRvcHRHUmVmKHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX25vZGVfaXRlcmF0b3IoZG9jdW1l
bnQsIFdFQktJVF9ET01fTk9ERShkaXYpLCBXRUJLSVRfRE9NX05PREVfRklMVEVSX1NIT1dfQUxM
LCBudWxscHRyLCBGQUxTRSwgbnVsbHB0cikpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9N
X0lTX05PREVfSVRFUkFUT1IoaXRlci5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdF
QktJVF9ET01fSVNfTk9ERV9JVEVSQVRPUihpdGVyLmdldCgpKSk7CiAgICAgICAgIGFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoaXRlci5nZXQoKSkpOwogCiAg
ICAgICAgIC8vIFdlIGNhbiBhbHNvIG1hbnVhbGx5IGhhbmRsZSBhIERPTSBvYmplY3QgaGFuZGxl
ZCBieSB0aGUgY2FjaGUuCiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RE9NRWxlbWVudD4gcDIgPSBh
ZG9wdEdSZWYod2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfZWxlbWVudChkb2N1bWVudCwgIlAi
LCBudWxscHRyKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9QQVJBR1JB
UEhfRUxFTUVOVChwMi5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01f
SVNfSFRNTF9QQVJBR1JBUEhfRUxFTUVOVChwMi5nZXQoKSkpOwogICAgICAgICBhc3NlcnRPYmpl
Y3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHAyLmdldCgpKSk7CiAKICAgICAg
ICAgLy8gTWFudWFsbHkgaGFuZGxpbmcgYSBET00gb2JqZWN0IG93bmVkIGJ5IHRoZSBjYWNoZSBz
aG91bGRuJ3QgY3Jhc2ggd2hlbiB0aGUgY2FjaGUgaGFzIG1vcmUgdGhhbiBvbmUgcmVmZXJlbmNl
LgogICAgICAgICBHUmVmUHRyPFdlYktpdERPTUVsZW1lbnQ+IHAzID0gYWRvcHRHUmVmKHdlYmtp
dF9kb21fZG9jdW1lbnRfY3JlYXRlX2VsZW1lbnQoZG9jdW1lbnQsICJQIiwgbnVsbHB0cikpOwot
ICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxfUEFSQUdSQVBIX0VMRU1FTlQocDMu
Z2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfRE9NX0lTX0hUTUxfUEFSQUdS
QVBIX0VMRU1FTlQocDMuZ2V0KCkpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hl
blRlc3RGaW5pc2hlcyhHX09CSkVDVChwMy5nZXQoKSkpOwogICAgICAgICB3ZWJraXRfZG9tX25v
ZGVfYXBwZW5kX2NoaWxkKFdFQktJVF9ET01fTk9ERShkaXYpLCBXRUJLSVRfRE9NX05PREUocDMu
Z2V0KCkpLCBudWxscHRyKTsKIAogICAgICAgICAvLyBET00gb2JqZWN0cyByZW1vdmVkIGZyb20g
dGhlIGRvY3VtZW50IGFyZSBhbHNvIGNvcnJlY3RseSBoYW5kbGVkIGJ5IHRoZSBjYWNoZS4KICAg
ICAgICAgV2ViS2l0RE9NRWxlbWVudCogYSA9IHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX2Vs
ZW1lbnQoZG9jdW1lbnQsICJBIiwgbnVsbHB0cik7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9E
T01fSVNfRUxFTUVOVChhKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19F
TEVNRU5UKGEpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hl
cyhHX09CSkVDVChhKSk7CiAgICAgICAgIHdlYmtpdF9kb21fbm9kZV9yZW1vdmVfY2hpbGQoV0VC
S0lUX0RPTV9OT0RFKGRpdiksIFdFQktJVF9ET01fTk9ERShhKSwgbnVsbHB0cik7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL0RPTVhQYXRoTlNSZXNv
bHZlclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NWFBh
dGhOU1Jlc29sdmVyVGVzdC5jcHAKaW5kZXggZWJiOGYzOTI0YTIxODc5YzVhYmRkMDRmNGUzNzlh
NGQzYWI3ZjFhYy4uMzVlZTM1MDNhNDBhYWExM2JhYThhZGMwODg5MjNjZjkyMGU4ZDc4YiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvRE9NWFBhdGhOU1Jl
c29sdmVyVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsv
RE9NWFBhdGhOU1Jlc29sdmVyVGVzdC5jcHAKQEAgLTY1LDE1ICs2NSwxNSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZXZhbHVhdGVGb29DaGlsZFRleHRBbmRDaGVja1Jlc3VsdChXZWJLaXRET01Eb2N1
bWVudCogZG9jdW1lbnQsIFdlYktpdERPTVhQYXRoTlNSZXNvbHZlciogcmVzb2x2ZXIpCiAgICAg
ewogICAgICAgICBXZWJLaXRET01FbGVtZW50KiBkb2N1bWVudEVsZW1lbnQgPSB3ZWJraXRfZG9t
X2RvY3VtZW50X2dldF9kb2N1bWVudF9lbGVtZW50KGRvY3VtZW50KTsKLSAgICAgICAgZ19hc3Nl
cnQoV0VCS0lUX0RPTV9JU19FTEVNRU5UKGRvY3VtZW50RWxlbWVudCkpOworICAgICAgICBnX2Fz
c2VydF90cnVlKFdFQktJVF9ET01fSVNfRUxFTUVOVChkb2N1bWVudEVsZW1lbnQpKTsKICAgICAg
ICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChkb2N1bWVu
dEVsZW1lbnQpKTsKIAogICAgICAgICBHUmVmUHRyPFdlYktpdERPTVhQYXRoUmVzdWx0PiByZXN1
bHQgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9kb2N1bWVudF9ldmFsdWF0ZShkb2N1bWVudCwgImZv
bzpjaGlsZC90ZXh0KCkiLCBXRUJLSVRfRE9NX05PREUoZG9jdW1lbnRFbGVtZW50KSwgcmVzb2x2
ZXIsIFdFQktJVF9ET01fWFBBVEhfUkVTVUxUX09SREVSRURfTk9ERV9JVEVSQVRPUl9UWVBFLCBu
dWxscHRyLCBudWxscHRyKSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfWFBBVEhf
UkVTVUxUKHJlc3VsdC5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01f
SVNfWFBBVEhfUkVTVUxUKHJlc3VsdC5nZXQoKSkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0Rl
bGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJlc3VsdC5nZXQoKSkpOwogCiAgICAgICAg
IFdlYktpdERPTU5vZGUqIG5vZGVSZXN1bHQgPSB3ZWJraXRfZG9tX3hwYXRoX3Jlc3VsdF9pdGVy
YXRlX25leHQocmVzdWx0LmdldCgpLCBudWxscHRyKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lU
X0RPTV9JU19OT0RFKG5vZGVSZXN1bHQpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRf
RE9NX0lTX05PREUobm9kZVJlc3VsdCkpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRX
aGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG5vZGVSZXN1bHQpKTsKIAogICAgICAgICBHVW5pcXVl
UHRyPGNoYXI+IG5vZGVWYWx1ZSh3ZWJraXRfZG9tX25vZGVfZ2V0X25vZGVfdmFsdWUobm9kZVJl
c3VsdCkpOwpAQCAtODMsMTEgKzgzLDExIEBAIHByaXZhdGU6CiAgICAgYm9vbCB0ZXN0WFBhdGhO
U1Jlc29sdmVyTmF0aXZlKFdlYktpdFdlYlBhZ2UqIHBhZ2UpCiAgICAgewogICAgICAgICBXZWJL
aXRET01Eb2N1bWVudCogZG9jdW1lbnQgPSB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVu
dChwYWdlKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVu
dCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1l
bnQpKTsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09C
SkVDVChkb2N1bWVudCkpOwogCiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RE9NWFBhdGhOU1Jlc29s
dmVyPiByZXNvbHZlciA9IGFkb3B0R1JlZih3ZWJraXRfZG9tX2RvY3VtZW50X2NyZWF0ZV9uc19y
ZXNvbHZlcihkb2N1bWVudCwgV0VCS0lUX0RPTV9OT0RFKHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0
X2RvY3VtZW50X2VsZW1lbnQoZG9jdW1lbnQpKSkpOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRf
RE9NX0lTX1hQQVRIX05TX1JFU09MVkVSKHJlc29sdmVyLmdldCgpKSk7CisgICAgICAgIGdfYXNz
ZXJ0X3RydWUoV0VCS0lUX0RPTV9JU19YUEFUSF9OU19SRVNPTFZFUihyZXNvbHZlci5nZXQoKSkp
OwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNU
KHJlc29sdmVyLmdldCgpKSk7CiAgICAgICAgIGV2YWx1YXRlRm9vQ2hpbGRUZXh0QW5kQ2hlY2tS
ZXN1bHQoZG9jdW1lbnQsIHJlc29sdmVyLmdldCgpKTsKIApAQCAtOTcsNyArOTcsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgdGVzdFhQYXRoTlNSZXNvbHZlckN1c3RvbShXZWJLaXRXZWJQYWdlKiBw
YWdlKQogICAgIHsKICAgICAgICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0
X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQocGFnZSk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJ
VF9ET01fSVNfRE9DVU1FTlQoZG9jdW1lbnQpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJL
SVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVs
ZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoZG9jdW1lbnQpKTsKIAogICAgICAgICBHUmVm
UHRyPFdlYktpdERPTVhQYXRoTlNSZXNvbHZlcj4gcmVzb2x2ZXIgPSBhZG9wdEdSZWYoV0VCS0lU
X0RPTV9YUEFUSF9OU19SRVNPTFZFUihnX29iamVjdF9uZXcod2Via2l0X3hwYXRoX25zX3Jlc29s
dmVyX2dldF90eXBlKCksIG51bGxwdHIpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0QXV0b2NsZWFudXBzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RBdXRvY2xlYW51cHMuY3BwCmluZGV4IDUwZTgyYTlj
NmY1YTRlNDk2OTM0ZGZiMWE1MDNlMTg1N2Q1ZDRiNTkuLjg1MzA3N2M4YTc3MmE3NTBhYmUyY2M3
NDBhYWRjMGYzYmE5ZjdlZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R3RrL1Rlc3RBdXRvY2xlYW51cHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R3RrL1Rlc3RBdXRvY2xlYW51cHMuY3BwCkBAIC0yOCwyMyArMjgsMjMgQEAg
c3RhdGljIHZvaWQgdGVzdFVJUHJvY2Vzc0F1dG9jbGVhbnVwcyhXZWJWaWV3VGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKIHsKICAgICAvLyBTYW5pdHktY2hlY2sgYSBjb3VwbGUgVUkgcHJvY2Vz
cyBBUEkgYXV0b2NsZWFudXBzIHRoYXQgYXJlIGVhc3kgdG8gdGVzdC4uLi4KICAgICBnX2F1dG9w
dHIoV2ViS2l0V2ViQ29udGV4dCkgY29udGV4dCA9IHdlYmtpdF93ZWJfY29udGV4dF9uZXcoKTsK
LSAgICBnX2Fzc2VydChXRUJLSVRfSVNfV0VCX0NPTlRFWFQoY29udGV4dCkpOworICAgIGdfYXNz
ZXJ0X3RydWUoV0VCS0lUX0lTX1dFQl9DT05URVhUKGNvbnRleHQpKTsKICAgICB0ZXN0LT5hc3Nl
cnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGNvbnRleHQpKTsKIAog
ICAgIGdfYXV0b3B0cihXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIpIG1hbmFnZXIgPSB3ZWJraXRf
d2Vic2l0ZV9kYXRhX21hbmFnZXJfbmV3KG51bGxwdHIpOwotICAgIGdfYXNzZXJ0KFdFQktJVF9J
U19XRUJTSVRFX0RBVEFfTUFOQUdFUihtYW5hZ2VyKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJL
SVRfSVNfV0VCU0lURV9EQVRBX01BTkFHRVIobWFuYWdlcikpOwogICAgIHRlc3QtPmFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoY29udGV4dCkpOwogCiAgICAg
Z19hdXRvcHRyKFdlYktpdFVzZXJTY3JpcHQpIHVzZXJTY3JpcHQgPSB3ZWJraXRfdXNlcl9zY3Jp
cHRfbmV3KCIiLAogICAgICAgICBXRUJLSVRfVVNFUl9DT05URU5UX0lOSkVDVF9BTExfRlJBTUVT
LCBXRUJLSVRfVVNFUl9TQ1JJUFRfSU5KRUNUX0FUX0RPQ1VNRU5UX1NUQVJULAogICAgICAgICBu
dWxscHRyLCBudWxscHRyKTsKLSAgICBnX2Fzc2VydCh1c2VyU2NyaXB0KTsKKyAgICBnX2Fzc2Vy
dF9ub25udWxsKHVzZXJTY3JpcHQpOwogICAgIC8vIE5vdCBhIEdPYmplY3QsIHNvIGp1c3QgY2hl
Y2tpbmcgdGhhdCB0aGlzIGRvZXNuJ3QgY3Jhc2guLi4uCiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RX
ZWJQcm9jZXNzQXV0b2NsZWFudXBzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQog
ewotICAgIGdfYXNzZXJ0KHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJBdXRvY2xlYW51cHMiLCAi
d2ViLXByb2Nlc3MtYXV0b2NsZWFudXBzIikpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+cnVu
V2ViUHJvY2Vzc1Rlc3QoIkF1dG9jbGVhbnVwcyIsICJ3ZWItcHJvY2Vzcy1hdXRvY2xlYW51cHMi
KSk7CiB9CiAKIHZvaWQgYmVmb3JlQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RDb250ZXh0TWVudS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0Q29udGV4dE1lbnUuY3BwCmluZGV4IGQ5M2Q1YjI0NGRm
ZGUxNDcxOTQxMDM2ODY2NzA3MzAyMWM0ZmNkNWMuLmQ3ZmM3MzQ4NDhlZGYyOWFiNjg5ODMwZGRk
ZmJkZGNhNjAyMjVjOWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R3RrL1Rlc3RDb250ZXh0TWVudS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvVGVzdENvbnRleHRNZW51LmNwcApAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGNoZWNrQ29udGV4dE1lbnVFdmVudChHZGtFdmVudCogZXZlbnQpCiAgICAg
ewotICAgICAgICBnX2Fzc2VydChldmVudCk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoZXZl
bnQpOwogICAgICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnQtPnR5cGUsID09LCBtX2V4cGVjdGVk
RXZlbnRUeXBlKTsKIAogICAgICAgICBzd2l0Y2ggKG1fZXhwZWN0ZWRFdmVudFR5cGUpIHsKQEAg
LTU1LDEwICs1NSwxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4gY29udGV4dE1l
bnVDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRDb250ZXh0TWVudSogY29u
dGV4dE1lbnUsIEdka0V2ZW50KiBldmVudCwgV2ViS2l0SGl0VGVzdFJlc3VsdCogaGl0VGVzdFJl
c3VsdCwgQ29udGV4dE1lbnVUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQoV0VC
S0lUX0lTX0NPTlRFWFRfTUVOVShjb250ZXh0TWVudSkpOworICAgICAgICBnX2Fzc2VydF90cnVl
KFdFQktJVF9JU19DT05URVhUX01FTlUoY29udGV4dE1lbnUpKTsKICAgICAgICAgdGVzdC0+YXNz
ZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChjb250ZXh0TWVudSkp
OwogICAgICAgICB0ZXN0LT5jaGVja0NvbnRleHRNZW51RXZlbnQoZXZlbnQpOwotICAgICAgICBn
X2Fzc2VydChXRUJLSVRfSVNfSElUX1RFU1RfUkVTVUxUKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAg
ICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfSElUX1RFU1RfUkVTVUxUKGhpdFRlc3RSZXN1bHQp
KTsKICAgICAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhH
X09CSkVDVChoaXRUZXN0UmVzdWx0KSk7CiAKICAgICAgICAgcmV0dXJuIHRlc3QtPmNvbnRleHRN
ZW51KGNvbnRleHRNZW51LCBldmVudCwgaGl0VGVzdFJlc3VsdCk7CkBAIC0xMTEsMzggKzExMSwz
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjaGVja0FjdGlvblN0YXRlKEd0a0FjdGlvbiogYWN0aW9u
LCB1bnNpZ25lZCBzdGF0ZSkKICAgICB7CiAgICAgICAgIGlmIChzdGF0ZSAmIFZpc2libGUpCi0g
ICAgICAgICAgICBnX2Fzc2VydChndGtfYWN0aW9uX2dldF92aXNpYmxlKGFjdGlvbikpOworICAg
ICAgICAgICAgZ19hc3NlcnRfdHJ1ZShndGtfYWN0aW9uX2dldF92aXNpYmxlKGFjdGlvbikpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBnX2Fzc2VydCghZ3RrX2FjdGlvbl9nZXRfdmlzaWJs
ZShhY3Rpb24pKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKGd0a19hY3Rpb25fZ2V0X3Zp
c2libGUoYWN0aW9uKSk7CiAKICAgICAgICAgaWYgKHN0YXRlICYgRW5hYmxlZCkKLSAgICAgICAg
ICAgIGdfYXNzZXJ0KGd0a19hY3Rpb25fZ2V0X3NlbnNpdGl2ZShhY3Rpb24pKTsKKyAgICAgICAg
ICAgIGdfYXNzZXJ0X3RydWUoZ3RrX2FjdGlvbl9nZXRfc2Vuc2l0aXZlKGFjdGlvbikpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBnX2Fzc2VydCghZ3RrX2FjdGlvbl9nZXRfc2Vuc2l0aXZl
KGFjdGlvbikpOworICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2UoZ3RrX2FjdGlvbl9nZXRfc2Vu
c2l0aXZlKGFjdGlvbikpOwogCiAgICAgICAgIGlmIChHVEtfSVNfVE9HR0xFX0FDVElPTihhY3Rp
b24pKSB7CiAgICAgICAgICAgICBpZiAoc3RhdGUgJiBDaGVja2VkKQotICAgICAgICAgICAgICAg
IGdfYXNzZXJ0KGd0a190b2dnbGVfYWN0aW9uX2dldF9hY3RpdmUoR1RLX1RPR0dMRV9BQ1RJT04o
YWN0aW9uKSkpOworICAgICAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUoZ3RrX3RvZ2dsZV9hY3Rp
b25fZ2V0X2FjdGl2ZShHVEtfVE9HR0xFX0FDVElPTihhY3Rpb24pKSk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgZ19hc3NlcnQoIWd0a190b2dnbGVfYWN0aW9uX2dldF9hY3Rp
dmUoR1RLX1RPR0dMRV9BQ1RJT04oYWN0aW9uKSkpOworICAgICAgICAgICAgICAgIGdfYXNzZXJ0
X2ZhbHNlKGd0a190b2dnbGVfYWN0aW9uX2dldF9hY3RpdmUoR1RLX1RPR0dMRV9BQ1RJT04oYWN0
aW9uKSkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgR0xpc3QqIGNoZWNrQ3VycmVudEl0ZW1J
c1N0b2NrQWN0aW9uQW5kR2V0TmV4dChHTGlzdCogaXRlbXMsIFdlYktpdENvbnRleHRNZW51QWN0
aW9uIHN0b2NrQWN0aW9uLCB1bnNpZ25lZCBzdGF0ZSkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0
KGl0ZW1zKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX0NPTlRFWFRfTUVOVV9JVEVNKGl0
ZW1zLT5kYXRhKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoaXRlbXMpOworICAgICAgICBn
X2Fzc2VydF90cnVlKFdFQktJVF9JU19DT05URVhUX01FTlVfSVRFTShpdGVtcy0+ZGF0YSkpOwog
CiAgICAgICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05URVhUX01F
TlVfSVRFTShpdGVtcy0+ZGF0YSk7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5U
ZXN0RmluaXNoZXMoR19PQkpFQ1QoaXRlbSkpOwogCiAgICAgICAgIEdfR05VQ19CRUdJTl9JR05P
UkVfREVQUkVDQVRJT05TOwogICAgICAgICBHdGtBY3Rpb24qIGFjdGlvbiA9IHdlYmtpdF9jb250
ZXh0X21lbnVfaXRlbV9nZXRfYWN0aW9uKGl0ZW0pOwotICAgICAgICBnX2Fzc2VydChHVEtfSVNf
QUNUSU9OKGFjdGlvbikpOworICAgICAgICBnX2Fzc2VydF90cnVlKEdUS19JU19BQ1RJT04oYWN0
aW9uKSk7CiAgICAgICAgIEdfR05VQ19FTkRfSUdOT1JFX0RFUFJFQ0FUSU9OUzsKIAogICAgICAg
ICBHQWN0aW9uKiBnQWN0aW9uID0gd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF9nYWN0aW9u
KGl0ZW0pOwotICAgICAgICBnX2Fzc2VydChHX0lTX0FDVElPTihnQWN0aW9uKSk7CisgICAgICAg
IGdfYXNzZXJ0X3RydWUoR19JU19BQ1RJT04oZ0FjdGlvbikpOwogCiAgICAgICAgIGdfYXNzZXJ0
X2NtcGludCh3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X3N0b2NrX2FjdGlvbihpdGVtKSwg
PT0sIHN0b2NrQWN0aW9uKTsKIApAQCAtMTUzLDI3ICsxNTMsMjcgQEAgcHVibGljOgogCiAgICAg
R0xpc3QqIGNoZWNrQ3VycmVudEl0ZW1Jc0N1c3RvbUFjdGlvbkFuZEdldE5leHQoR0xpc3QqIGl0
ZW1zLCBjb25zdCBjaGFyKiBsYWJlbCwgdW5zaWduZWQgc3RhdGUpCiAgICAgewotICAgICAgICBn
X2Fzc2VydChpdGVtcyk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19DT05URVhUX01FTlVf
SVRFTShpdGVtcy0+ZGF0YSkpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKGl0ZW1zKTsKKyAg
ICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfQ09OVEVYVF9NRU5VX0lURU0oaXRlbXMtPmRh
dGEpKTsKIAogICAgICAgICBXZWJLaXRDb250ZXh0TWVudUl0ZW0qIGl0ZW0gPSBXRUJLSVRfQ09O
VEVYVF9NRU5VX0lURU0oaXRlbXMtPmRhdGEpOwogICAgICAgICBhc3NlcnRPYmplY3RJc0RlbGV0
ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGl0ZW0pKTsKIAogICAgICAgICBHX0dOVUNfQkVH
SU5fSUdOT1JFX0RFUFJFQ0FUSU9OUzsKICAgICAgICAgR3RrQWN0aW9uKiBhY3Rpb24gPSB3ZWJr
aXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X2FjdGlvbihpdGVtKTsKLSAgICAgICAgZ19hc3NlcnQo
R1RLX0lTX0FDVElPTihhY3Rpb24pKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShHVEtfSVNfQUNU
SU9OKGFjdGlvbikpOwogICAgICAgICBHX0dOVUNfRU5EX0lHTk9SRV9ERVBSRUNBVElPTlM7CiAK
ICAgICAgICAgR0FjdGlvbiogZ0FjdGlvbiA9IHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRf
Z2FjdGlvbihpdGVtKTsKLSAgICAgICAgZ19hc3NlcnQoR19JU19BQ1RJT04oZ0FjdGlvbikpOwor
ICAgICAgICBnX2Fzc2VydF90cnVlKEdfSVNfQUNUSU9OKGdBY3Rpb24pKTsKICAgICAgICAgZ19h
c3NlcnRfY21wc3RyKGd0a19hY3Rpb25fZ2V0X25hbWUoYWN0aW9uKSwgPT0sIGdfYWN0aW9uX2dl
dF9uYW1lKGdBY3Rpb24pKTsKLSAgICAgICAgZ19hc3NlcnQoZ3RrX2FjdGlvbl9nZXRfc2Vuc2l0
aXZlKGFjdGlvbikgPT0gZ19hY3Rpb25fZ2V0X2VuYWJsZWQoZ0FjdGlvbikpOworICAgICAgICBn
X2Fzc2VydF9jbXBpbnQoZ3RrX2FjdGlvbl9nZXRfc2Vuc2l0aXZlKGFjdGlvbiksID09LCBnX2Fj
dGlvbl9nZXRfZW5hYmxlZChnQWN0aW9uKSk7CiAgICAgICAgIGlmIChHVEtfSVNfVE9HR0xFX0FD
VElPTihhY3Rpb24pKSB7Ci0gICAgICAgICAgICBnX2Fzc2VydChnX3ZhcmlhbnRfdHlwZV9lcXVh
bChnX2FjdGlvbl9nZXRfc3RhdGVfdHlwZShnQWN0aW9uKSwgR19WQVJJQU5UX1RZUEVfQk9PTEVB
TikpOworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZShnX3ZhcmlhbnRfdHlwZV9lcXVhbChnX2Fj
dGlvbl9nZXRfc3RhdGVfdHlwZShnQWN0aW9uKSwgR19WQVJJQU5UX1RZUEVfQk9PTEVBTikpOwog
ICAgICAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4gc3RhdGUgPSBhZG9wdEdSZWYoZ19hY3Rpb25f
Z2V0X3N0YXRlKGdBY3Rpb24pKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KGd0a190b2dnbGVfYWN0
aW9uX2dldF9hY3RpdmUoR1RLX1RPR0dMRV9BQ1RJT04oYWN0aW9uKSkgPT0gZ192YXJpYW50X2dl
dF9ib29sZWFuKHN0YXRlLmdldCgpKSk7CisgICAgICAgICAgICBnX2Fzc2VydF9jbXBpbnQoZ3Rr
X3RvZ2dsZV9hY3Rpb25fZ2V0X2FjdGl2ZShHVEtfVE9HR0xFX0FDVElPTihhY3Rpb24pKSwgPT0s
IGdfdmFyaWFudF9nZXRfYm9vbGVhbihzdGF0ZS5nZXQoKSkpOwogICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIGdfYXNzZXJ0KCFnX2FjdGlvbl9nZXRfc3RhdGVfdHlwZShnQWN0aW9uKSk7Cisg
ICAgICAgICAgICBnX2Fzc2VydF9udWxsKGdfYWN0aW9uX2dldF9zdGF0ZV90eXBlKGdBY3Rpb24p
KTsKIAogICAgICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dl
dF9zdG9ja19hY3Rpb24oaXRlbSksID09LCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9DVVNU
T00pOwogICAgICAgICBnX2Fzc2VydF9jbXBzdHIoZ3RrX2FjdGlvbl9nZXRfbGFiZWwoYWN0aW9u
KSwgPT0sIGxhYmVsKTsKQEAgLTE4NSwyNSArMTg1LDI1IEBAIHB1YmxpYzoKIAogICAgIEdMaXN0
KiBjaGVja0N1cnJlbnRJdGVtSXNTdWJNZW51QW5kR2V0TmV4dChHTGlzdCogaXRlbXMsIGNvbnN0
IGNoYXIqIGxhYmVsLCB1bnNpZ25lZCBzdGF0ZSwgR0xpc3QqKiBzdWJNZW51SXRlcikKICAgICB7
Ci0gICAgICAgIGdfYXNzZXJ0KGl0ZW1zKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX0NP
TlRFWFRfTUVOVV9JVEVNKGl0ZW1zLT5kYXRhKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwo
aXRlbXMpOworICAgICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19DT05URVhUX01FTlVfSVRF
TShpdGVtcy0+ZGF0YSkpOwogCiAgICAgICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9
IFdFQktJVF9DT05URVhUX01FTlVfSVRFTShpdGVtcy0+ZGF0YSk7CiAgICAgICAgIGFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoaXRlbSkpOwogCiAgICAgICAg
IEdfR05VQ19CRUdJTl9JR05PUkVfREVQUkVDQVRJT05TOwogICAgICAgICBHdGtBY3Rpb24qIGFj
dGlvbiA9IHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfYWN0aW9uKGl0ZW0pOwotICAgICAg
ICBnX2Fzc2VydChHVEtfSVNfQUNUSU9OKGFjdGlvbikpOworICAgICAgICBnX2Fzc2VydF90cnVl
KEdUS19JU19BQ1RJT04oYWN0aW9uKSk7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihndGtfYWN0
aW9uX2dldF9sYWJlbChhY3Rpb24pLCA9PSwgbGFiZWwpOwogICAgICAgICBHX0dOVUNfRU5EX0lH
Tk9SRV9ERVBSRUNBVElPTlM7CiAKICAgICAgICAgR0FjdGlvbiogZ0FjdGlvbiA9IHdlYmtpdF9j
b250ZXh0X21lbnVfaXRlbV9nZXRfZ2FjdGlvbihpdGVtKTsKLSAgICAgICAgZ19hc3NlcnQoR19J
U19BQ1RJT04oZ0FjdGlvbikpOworICAgICAgICBnX2Fzc2VydF90cnVlKEdfSVNfQUNUSU9OKGdB
Y3Rpb24pKTsKIAogICAgICAgICBjaGVja0FjdGlvblN0YXRlKGFjdGlvbiwgc3RhdGUpOwogCiAg
ICAgICAgIFdlYktpdENvbnRleHRNZW51KiBzdWJNZW51ID0gd2Via2l0X2NvbnRleHRfbWVudV9p
dGVtX2dldF9zdWJtZW51KGl0ZW0pOwotICAgICAgICBnX2Fzc2VydChXRUJLSVRfSVNfQ09OVEVY
VF9NRU5VKHN1Yk1lbnUpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRfSVNfQ09OVEVY
VF9NRU5VKHN1Yk1lbnUpKTsKICAgICAgICAgaWYgKHN1Yk1lbnVJdGVyKQogICAgICAgICAgICAg
KnN1Yk1lbnVJdGVyID0gd2Via2l0X2NvbnRleHRfbWVudV9nZXRfaXRlbXMoc3ViTWVudSk7CiAK
QEAgLTIxMiwxMSArMjEyLDExIEBAIHB1YmxpYzoKIAogICAgIEdMaXN0KiBjaGVja0N1cnJlbnRJ
dGVtSXNTZXBhcmF0b3JBbmRHZXROZXh0KEdMaXN0KiBpdGVtcykKICAgICB7Ci0gICAgICAgIGdf
YXNzZXJ0KGl0ZW1zKTsKLSAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX0NPTlRFWFRfTUVOVV9J
VEVNKGl0ZW1zLT5kYXRhKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoaXRlbXMpOworICAg
ICAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19DT05URVhUX01FTlVfSVRFTShpdGVtcy0+ZGF0
YSkpOwogCiAgICAgICAgIFdlYktpdENvbnRleHRNZW51SXRlbSogaXRlbSA9IFdFQktJVF9DT05U
RVhUX01FTlVfSVRFTShpdGVtcy0+ZGF0YSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9jb250
ZXh0X21lbnVfaXRlbV9pc19zZXBhcmF0b3IoaXRlbSkpOworICAgICAgICBnX2Fzc2VydF90cnVl
KHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9pc19zZXBhcmF0b3IoaXRlbSkpOwogCiAgICAgICAg
IHJldHVybiBnX2xpc3RfbmV4dChpdGVtcyk7CiAgICAgfQpAQCAtMzEwLDQ0ICszMTAsNDQgQEAg
cHVibGljOgogCiAgICAgICAgIHN3aXRjaCAobV9leHBlY3RlZE1lbnVUeXBlKSB7CiAgICAgICAg
IGNhc2UgTmF2aWdhdGlvbjoKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3Rf
cmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fz
c2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1
bHQpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRl
eHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtp
dF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7Ci0g
ICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3Nl
bGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7CisgICAg
ICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNf
aW1hZ2UoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAg
ICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19l
ZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJr
aXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsK
ICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5l
eHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fR09fQkFDSywgVmlzaWJsZSk7CiAg
ICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0
KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0dPX0ZPUldBUkQsIFZpc2libGUpOwog
ICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4
dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9TVE9QLCBWaXNpYmxlKTsKICAgICAg
ICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRl
ciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fUkVMT0FELCBWaXNpYmxlIHwgRW5hYmxlZCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBMaW5rOgotICAgICAgICAgICAgZ19h
c3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3Vs
dCkpOwotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4
dF9pc19pbWFnZShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0
X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhpdFRlc3RSZXN1bHQpKTsKLSAgICAg
ICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFi
bGUoaGl0VGVzdFJlc3VsdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVz
dF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAg
ICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayho
aXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX21lZGlhKGhp
dFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVz
dF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAg
ICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0
aW9uKGhpdFRlc3RSZXN1bHQpKTsKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVt
SXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05f
T1BFTl9MSU5LLCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tD
dXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01F
TlVfQUNUSU9OX09QRU5fTElOS19JTl9ORVdfV0lORE9XLCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAg
ICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0
KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0RPV05MT0FEX0xJTktfVE9fRElTSywg
VmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1J
c1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9D
T1BZX0xJTktfVE9fQ0xJUEJPQVJELCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBJbWFnZToKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRf
aGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAg
ICAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0
VGVzdFJlc3VsdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2Vy
dCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1
bHQpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRl
eHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2Zh
bHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQp
KTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250
ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNl
KHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7
CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRl
eHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRfZmFs
c2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVz
dWx0KSk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25B
bmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX09QRU5fSU1BR0VfSU5f
TkVXX1dJTkRPVywgVmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNr
Q3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9N
RU5VX0FDVElPTl9ET1dOTE9BRF9JTUFHRV9UT19ESVNLLCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAg
ICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0
KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0NPUFlfSU1BR0VfVE9fQ0xJUEJPQVJE
LCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRl
bUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9O
X0NPUFlfSU1BR0VfVVJMX1RPX0NMSVBCT0FSRCwgVmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTGlua0ltYWdlOgotICAgICAgICAgICAgZ19hc3Nl
cnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkp
OwotICAgICAgICAgICAgZ19hc3NlcnQod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lz
X2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0
X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOwotICAgICAgICAg
ICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZSho
aXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBn
X2Fzc2VydF90cnVlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5rKGhpdFRl
c3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2hpdF90ZXN0X3Jl
c3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNz
ZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0
UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVz
dWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19h
c3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbiho
aXRUZXN0UmVzdWx0KSk7CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3Rv
Y2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX09QRU5f
TElOSywgVmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVu
dEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FD
VElPTl9PUEVOX0xJTktfSU5fTkVXX1dJTkRPVywgVmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAg
ICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVy
LCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9ET1dOTE9BRF9MSU5LX1RPX0RJU0ssIFZpc2li
bGUgfCBFbmFibGVkKTsKQEAgLTM1OSwxMSArMzU5LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAg
IGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VC
S0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fQ09QWV9JTUFHRV9VUkxfVE9fQ0xJUEJPQVJELCBWaXNp
YmxlIHwgRW5hYmxlZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWaWRlbzoK
LSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNf
bGluayhoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICAgICAgICAg
IGdfYXNzZXJ0KHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0
UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9j
b250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RSZXN1bHQpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0
KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1
bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRf
Y29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2Zh
bHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZShoaXRUZXN0UmVzdWx0
KSk7CisgICAgICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29u
dGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxz
ZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3Vs
dCkpOworICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9j
b250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CiAgICAgICAgICAgICBpdGVyID0g
Y2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05U
RVhUX01FTlVfQUNUSU9OX01FRElBX1BMQVksIFZpc2libGUgfCBFbmFibGVkKTsKICAgICAgICAg
ICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwg
V0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fTUVESUFfTVVURSwgVmlzaWJsZSk7CiAgICAgICAg
ICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIs
IFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX1RPR0dMRV9NRURJQV9DT05UUk9MUywgVmlzaWJs
ZSB8IEVuYWJsZWQgfCBDaGVja2VkKTsKQEAgLTM3NSwxMSArMzc1LDExIEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQo
aXRlciwgV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fRE9XTkxPQURfVklERU9fVE9fRElTSywg
VmlzaWJsZSB8IEVuYWJsZWQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQXVk
aW86Ci0gICAgICAgICAgICBnX2Fzc2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0
X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9o
aXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAg
ICAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0
VGVzdFJlc3VsdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fz
c2VydCghd2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0
UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVz
dWx0X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2Vy
dF9mYWxzZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJl
c3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxlKGhpdFRlc3RS
ZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1
bHRfY29udGV4dF9pc19zZWxlY3Rpb24oaGl0VGVzdFJlc3VsdCkpOwogICAgICAgICAgICAgaXRl
ciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRf
Q09OVEVYVF9NRU5VX0FDVElPTl9NRURJQV9QTEFZLCBWaXNpYmxlIHwgRW5hYmxlZCk7CiAgICAg
ICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0
ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX01FRElBX01VVEUsIFZpc2libGUpOwogICAg
ICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2NrQWN0aW9uQW5kR2V0TmV4dChp
dGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9UT0dHTEVfTUVESUFfQ09OVFJPTFMsIFZp
c2libGUgfCBFbmFibGVkIHwgQ2hlY2tlZCk7CkBAIC0zOTEsMTEgKzM5MSwxMSBAQCBwdWJsaWM6
CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXRO
ZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0RPV05MT0FEX0FVRElPX1RPX0RJ
U0ssIFZpc2libGUgfCBFbmFibGVkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEVkaXRhYmxlOgotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRf
Y29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3
ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfaW1hZ2UoaGl0VGVzdFJlc3VsdCkpOwot
ICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19t
ZWRpYShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2NvbnRleHRfaXNfZWRpdGFibGUoaGl0VGVzdFJlc3VsdCkpOwotICAgICAgICAg
ICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19zZWxlY3Rpb24o
aGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2xpbmsoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhp
dFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVz
dF9yZXN1bHRfY29udGV4dF9pc19tZWRpYShoaXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBn
X2Fzc2VydF90cnVlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZSho
aXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9uKGhpdFRlc3RSZXN1bHQpKTsKICAgICAgICAg
ICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwg
V0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fQ1VULCBWaXNpYmxlKTsKICAgICAgICAgICAgIGl0
ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTdG9ja0FjdGlvbkFuZEdldE5leHQoaXRlciwgV0VCS0lU
X0NPTlRFWFRfTUVOVV9BQ1RJT05fQ09QWSwgVmlzaWJsZSk7CiAgICAgICAgICAgICBpdGVyID0g
Y2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05U
RVhUX01FTlVfQUNUSU9OX1BBU1RFLCBWaXNpYmxlIHwgRW5hYmxlZCk7CkBAIC00MDYsMTEgKzQw
NiwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3Rv
Y2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIsIFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX1VOSUNP
REUsIFZpc2libGUgfCBFbmFibGVkKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFNlbGVjdGlvbjoKLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0
X2NvbnRleHRfaXNfbGluayhoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAgICAgICBnX2Fzc2VydCgh
d2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2ltYWdlKGhpdFRlc3RSZXN1bHQpKTsK
LSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNf
bWVkaWEoaGl0VGVzdFJlc3VsdCkpOwotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9oaXRf
dGVzdF9yZXN1bHRfY29udGV4dF9pc19lZGl0YWJsZShoaXRUZXN0UmVzdWx0KSk7Ci0gICAgICAg
ICAgICBnX2Fzc2VydCh3ZWJraXRfaGl0X3Rlc3RfcmVzdWx0X2NvbnRleHRfaXNfc2VsZWN0aW9u
KGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRf
dGVzdF9yZXN1bHRfY29udGV4dF9pc19saW5rKGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAg
IGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9oaXRfdGVzdF9yZXN1bHRfY29udGV4dF9pc19pbWFnZSho
aXRUZXN0UmVzdWx0KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfaGl0X3Rl
c3RfcmVzdWx0X2NvbnRleHRfaXNfbWVkaWEoaGl0VGVzdFJlc3VsdCkpOworICAgICAgICAgICAg
Z19hc3NlcnRfZmFsc2Uod2Via2l0X2hpdF90ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX2VkaXRhYmxl
KGhpdFRlc3RSZXN1bHQpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2hpdF90
ZXN0X3Jlc3VsdF9jb250ZXh0X2lzX3NlbGVjdGlvbihoaXRUZXN0UmVzdWx0KSk7CiAgICAgICAg
ICAgICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU3RvY2tBY3Rpb25BbmRHZXROZXh0KGl0ZXIs
IFdFQktJVF9DT05URVhUX01FTlVfQUNUSU9OX0NPUFksIFZpc2libGUgfCBFbmFibGVkKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgpAQCAtNDIxLDcgKzQyMSw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIGl0ZXIgPSBjaGVja0N1cnJlbnRJdGVtSXNTZXBhcmF0b3JBbmRH
ZXROZXh0KGl0ZXIpOwogICAgICAgICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc1N0b2Nr
QWN0aW9uQW5kR2V0TmV4dChpdGVyLCBXRUJLSVRfQ09OVEVYVF9NRU5VX0FDVElPTl9JTlNQRUNU
X0VMRU1FTlQsIFZpc2libGUgfCBFbmFibGVkKTsKICAgICAgICAgfQotICAgICAgICBnX2Fzc2Vy
dCghaXRlcik7CisgICAgICAgIGdfYXNzZXJ0X251bGwoaXRlcik7CiAKICAgICAgICAgcXVpdE1h
aW5Mb29wKCk7CiAKQEAgLTU1MCw3ICs1NTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFjdGl2
YXRlTWVudUl0ZW0oKQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQobV9pdGVtVG9BY3RpdmF0ZUxh
YmVsKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChtX2l0ZW1Ub0FjdGl2YXRlTGFiZWwpOwog
ICAgICAgICBHdGtNZW51KiBtZW51ID0gZ2V0UG9wdXBNZW51KCk7CiAgICAgICAgIEd0a01lbnVJ
dGVtKiBpdGVtID0gZ2V0TWVudUl0ZW0obWVudSwgbV9pdGVtVG9BY3RpdmF0ZUxhYmVsKTsKICAg
ICAgICAgZ3RrX21lbnVfc2hlbGxfYWN0aXZhdGVfaXRlbShHVEtfTUVOVV9TSEVMTChtZW51KSwg
R1RLX1dJREdFVChpdGVtKSwgVFJVRSk7CkBAIC01ODYsOSArNTg2LDkgQEAgcHVibGljOgogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB0ZXN0LT5tX2FjdGl2YXRlZCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgaWYgKHRlc3QtPm1fZXhwZWN0ZWRUYXJnZXQpCi0gICAgICAg
ICAgICAgICAgICAgIGdfYXNzZXJ0KGdfdmFyaWFudF9lcXVhbCh0ZXN0LT5tX2V4cGVjdGVkVGFy
Z2V0LmdldCgpLCB0YXJnZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgZ19hc3NlcnRfdHJ1ZShn
X3ZhcmlhbnRfZXF1YWwodGVzdC0+bV9leHBlY3RlZFRhcmdldC5nZXQoKSwgdGFyZ2V0KSk7CiAg
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBnX2Fzc2VydCghdGFyZ2V0
KTsKKyAgICAgICAgICAgICAgICAgICAgZ19hc3NlcnRfbnVsbCh0YXJnZXQpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHRlc3QtPm1fYWN0aXZhdGVkID0gdHJ1
ZTsKQEAgLTY0MiwzOSArNjQyLDM5IEBAIHN0YXRpYyB2b2lkIHRlc3RDb250ZXh0TWVudVBvcHVs
YXRlTWVudShDb250ZXh0TWVudUN1c3RvbVRlc3QqIHRlc3QsIGdjb25zdHBvaW50CiAgICAgdGVz
dC0+c2V0QWN0aW9uKGFjdGlvbi5nZXQoKSk7CiAgICAgdGVzdC0+c2hvd0NvbnRleHRNZW51QW5k
V2FpdFVudGlsRmluaXNoZWQoKTsKICAgICB0ZXN0LT5hY3RpdmF0ZUN1c3RvbU1lbnVJdGVtQW5k
V2FpdFVudGlsQWN0aXZhdGVkKGd0a19hY3Rpb25fZ2V0X2xhYmVsKGFjdGlvbi5nZXQoKSkpOwot
ICAgIGdfYXNzZXJ0KHRlc3QtPm1fYWN0aXZhdGVkKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+bV90
b2dnbGVkKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fYWN0aXZhdGVkKTsKKyAgICBnX2Fz
c2VydF9mYWxzZSh0ZXN0LT5tX3RvZ2dsZWQpOwogCiAgICAgLy8gQ3JlYXRlIGEgY3VzdG9tIHRv
Z2dsZSBtZW51IGl0ZW0uCiAgICAgR1JlZlB0cjxHdGtBY3Rpb24+IHRvZ2dsZUFjdGlvbiA9IGFk
b3B0R1JlZihHVEtfQUNUSU9OKGd0a190b2dnbGVfYWN0aW9uX25ldygiV2ViS2l0R1RLK0N1c3Rv
bVRvZ2dsZUFjdGlvbiIsICJDdXN0b20gX1RvZ2dsZSBBY3Rpb24iLCBudWxscHRyLCBudWxscHRy
KSkpOwogICAgIHRlc3QtPnNldEFjdGlvbih0b2dnbGVBY3Rpb24uZ2V0KCkpOwogICAgIHRlc3Qt
PnNob3dDb250ZXh0TWVudUFuZFdhaXRVbnRpbEZpbmlzaGVkKCk7CiAgICAgdGVzdC0+dG9nZ2xl
Q3VzdG9tTWVudUl0ZW1BbmRXYWl0VW50aWxUb2dnbGVkKGd0a19hY3Rpb25fZ2V0X2xhYmVsKHRv
Z2dsZUFjdGlvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5tX2FjdGl2YXRlZCk7Ci0g
ICAgZ19hc3NlcnQodGVzdC0+bV90b2dnbGVkKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5t
X2FjdGl2YXRlZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3RvZ2dsZWQpOwogCiAgICAg
Ly8gQ3JlYXRlIGEgY3VzdG9tIG1lbnUgaXRlbSB1c2luZyBHQWN0aW9uLgogICAgIEdSZWZQdHI8
R0FjdGlvbj4gZ0FjdGlvbiA9IGFkb3B0R1JlZihHX0FDVElPTihnX3NpbXBsZV9hY3Rpb25fbmV3
KCJXZWJLaXRHVEsrQ3VzdG9tR0FjdGlvbiIsIG51bGxwdHIpKSk7CiAgICAgdGVzdC0+c2V0QWN0
aW9uKGdBY3Rpb24uZ2V0KCksICJDdXN0b20gX0dBY3Rpb24iKTsKICAgICB0ZXN0LT5zaG93Q29u
dGV4dE1lbnVBbmRXYWl0VW50aWxGaW5pc2hlZCgpOwogICAgIHRlc3QtPmFjdGl2YXRlQ3VzdG9t
TWVudUl0ZW1BbmRXYWl0VW50aWxBY3RpdmF0ZWQoIkN1c3RvbSBfR0FjdGlvbiIpOwotICAgIGdf
YXNzZXJ0KHRlc3QtPm1fYWN0aXZhdGVkKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+bV90b2dnbGVk
KTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fYWN0aXZhdGVkKTsKKyAgICBnX2Fzc2VydF9m
YWxzZSh0ZXN0LT5tX3RvZ2dsZWQpOwogCiAgICAgLy8gQ3JlYXRlIGEgY3VzdG9tIHRvZ2dsZSBt
ZW51IGl0ZW0gdXNpbmcgR0FjdGlvbi4KICAgICBHUmVmUHRyPEdBY3Rpb24+IHRvZ2dsZUdBY3Rp
b24gPSBhZG9wdEdSZWYoR19BQ1RJT04oZ19zaW1wbGVfYWN0aW9uX25ld19zdGF0ZWZ1bCgiV2Vi
S2l0R1RLK0N1c3RvbVRvZ2dsZUdBY3Rpb24iLCBudWxscHRyLCBnX3ZhcmlhbnRfbmV3X2Jvb2xl
YW4oRkFMU0UpKSkpOwogICAgIHRlc3QtPnNldEFjdGlvbih0b2dnbGVHQWN0aW9uLmdldCgpLCAi
Q3VzdG9tIF9Ub2dnbGUgR0FjdGlvbiIpOwogICAgIHRlc3QtPnNob3dDb250ZXh0TWVudUFuZFdh
aXRVbnRpbEZpbmlzaGVkKCk7CiAgICAgdGVzdC0+dG9nZ2xlQ3VzdG9tTWVudUl0ZW1BbmRXYWl0
VW50aWxUb2dnbGVkKCJDdXN0b20gX1RvZ2dsZSBHQWN0aW9uIik7Ci0gICAgZ19hc3NlcnQoIXRl
c3QtPm1fYWN0aXZhdGVkKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX3RvZ2dsZWQpOworICAgIGdf
YXNzZXJ0X2ZhbHNlKHRlc3QtPm1fYWN0aXZhdGVkKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3Qt
Pm1fdG9nZ2xlZCk7CiAKICAgICAvLyBDcmVhdGUgYSBjdXN0b20gbWVudSBpdGVtIHVzaW5nIEdB
Y3Rpb24gd2l0aCBhIHRhcmdldC4KICAgICBnQWN0aW9uID0gYWRvcHRHUmVmKEdfQUNUSU9OKGdf
c2ltcGxlX2FjdGlvbl9uZXcoIldlYktpdEdUSytDdXN0b21HQWN0aW9uV2l0aFRhcmdldCIsIEdf
VkFSSUFOVF9UWVBFX1NUUklORykpKTsKICAgICB0ZXN0LT5zZXRBY3Rpb24oZ0FjdGlvbi5nZXQo
KSwgIkN1c3RvbSBfR0FjdGlvbiBXaXRoIFRhcmdldCIsIGdfdmFyaWFudF9uZXdfc3RyaW5nKCJX
ZWJLaXRHVEsrQ3VzdG9tR0FjdGlvblRhcmdldCIpKTsKICAgICB0ZXN0LT5zaG93Q29udGV4dE1l
bnVBbmRXYWl0VW50aWxGaW5pc2hlZCgpOwogICAgIHRlc3QtPmFjdGl2YXRlQ3VzdG9tTWVudUl0
ZW1BbmRXYWl0VW50aWxBY3RpdmF0ZWQoIkN1c3RvbSBfR0FjdGlvbiBXaXRoIFRhcmdldCIpOwot
ICAgIGdfYXNzZXJ0KHRlc3QtPm1fYWN0aXZhdGVkKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3Qt
Pm1fYWN0aXZhdGVkKTsKIH0KIAogY2xhc3MgQ29udGV4dE1lbnVDdXN0b21GdWxsVGVzdDogcHVi
bGljIENvbnRleHRNZW51VGVzdCB7CkBAIC03NDMsNyArNzQzLDcgQEAgcHVibGljOgogICAgICAg
ICBpdGVyID0gY2hlY2tDdXJyZW50SXRlbUlzU2VwYXJhdG9yQW5kR2V0TmV4dChpdGVyKTsKICAg
ICAgICAgaXRlciA9IGNoZWNrQ3VycmVudEl0ZW1Jc0N1c3RvbUFjdGlvbkFuZEdldE5leHQoaXRl
ciwgIkN1c3RvbSBfR0FjdGlvbiIsIFZpc2libGUpOwogICAgICAgICBpdGVyID0gY2hlY2tDdXJy
ZW50SXRlbUlzQ3VzdG9tQWN0aW9uQW5kR2V0TmV4dChpdGVyLCAiQ3VzdG9tIFRfb2dnbGUgR0Fj
dGlvbiIsIFZpc2libGUgfCBFbmFibGVkIHwgQ2hlY2tlZCk7Ci0gICAgICAgIGdfYXNzZXJ0KCFp
dGVyKTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbChpdGVyKTsKIAogICAgICAgICBxdWl0TWFpbkxv
b3AoKTsKIApAQCAtODM0LDIzICs4MzQsMjMgQEAgcHVibGljOgogICAgICAgICBHUmVmUHRyPFdl
YktpdENvbnRleHRNZW51SXRlbT4gaXRlbSA9IHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9uZXdf
ZnJvbV9zdG9ja19hY3Rpb24oV0VCS0lUX0NPTlRFWFRfTUVOVV9BQ1RJT05fT1BFTl9MSU5LKTsK
IAogICAgICAgICAvLyBBZGQgc3VibWVudSB0byBuZXdseSBjcmVhdGVkIGl0ZW0uCi0gICAgICAg
IGdfYXNzZXJ0KCF3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1fZ2V0X3N1Ym1lbnUoaXRlbS5nZXQo
KSkpOworICAgICAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRf
c3VibWVudShpdGVtLmdldCgpKSk7CiAgICAgICAgIHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9z
ZXRfc3VibWVudShpdGVtLmdldCgpLCBzdWJNZW51Mi5nZXQoKSk7Ci0gICAgICAgIGdfYXNzZXJ0
KHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfc3VibWVudShpdGVtLmdldCgpKSA9PSBzdWJN
ZW51Mi5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X2NvbnRleHRfbWVudV9p
dGVtX2dldF9zdWJtZW51KGl0ZW0uZ2V0KCkpID09IHN1Yk1lbnUyLmdldCgpKTsKIAogICAgICAg
ICAvLyBSZXBsYWNlIHRoZSBzdWJtZW51LgogICAgICAgICB3ZWJraXRfY29udGV4dF9tZW51X2l0
ZW1fc2V0X3N1Ym1lbnUoaXRlbS5nZXQoKSwgMCk7Ci0gICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRf
Y29udGV4dF9tZW51X2l0ZW1fZ2V0X3N1Ym1lbnUoaXRlbS5nZXQoKSkpOworICAgICAgICBnX2Fz
c2VydF9udWxsKHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfc3VibWVudShpdGVtLmdldCgp
KSk7CiAKICAgICAgICAgLy8gVHJ5IHRvIGFkZCBhIHN1Ym1lbnUgYWxyZWFkeSBhZGRlZCB0byBh
bm90aGVyIGl0ZW0uCiAgICAgICAgIHJlbW92ZUxvZ0ZhdGFsRmxhZyhHX0xPR19MRVZFTF9XQVJO
SU5HKTsKICAgICAgICAgd2Via2l0X2NvbnRleHRfbWVudV9pdGVtX3NldF9zdWJtZW51KGl0ZW0u
Z2V0KCksIHN1Yk1lbnUuZ2V0KCkpOwogICAgICAgICBhZGRMb2dGYXRhbEZsYWcoR19MT0dfTEVW
RUxfV0FSTklORyk7Ci0gICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfY29udGV4dF9tZW51X2l0ZW1f
Z2V0X3N1Ym1lbnUoaXRlbS5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9j
b250ZXh0X21lbnVfaXRlbV9nZXRfc3VibWVudShpdGVtLmdldCgpKSk7CiAKICAgICAgICAgLy8g
QSByZW1vdmVkIHN1Ym1lbnUgc2hvdWxkbid0IGhhdmUgYSBwYXJlbnQuCiAgICAgICAgIHdlYmtp
dF9jb250ZXh0X21lbnVfaXRlbV9zZXRfc3VibWVudShpdGVtLmdldCgpLCBzdWJNZW51Mi5nZXQo
KSk7Ci0gICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9jb250ZXh0X21lbnVfaXRlbV9nZXRfc3VibWVu
dShpdGVtLmdldCgpKSA9PSBzdWJNZW51Mi5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUo
d2Via2l0X2NvbnRleHRfbWVudV9pdGVtX2dldF9zdWJtZW51KGl0ZW0uZ2V0KCkpID09IHN1Yk1l
bnUyLmdldCgpKTsKIAogICAgICAgICBxdWl0TWFpbkxvb3AoKTsKIApAQCAtOTA3LDcgKzkwNyw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RDb250ZXh0TWVudURpc21pc3NlZChDb250ZXh0TWVudURpc21p
c3NlZFRlc3QqIHRlc3QsIGdjb25zdHBvaW50CiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlz
aGVkKCk7CiAKICAgICB0ZXN0LT5zaG93Q29udGV4dE1lbnVBbmRXYWl0VW50aWxEaXNtaXNzZWQo
KTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5tX2Rpc21pc3NlZCk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0
ZXN0LT5tX2Rpc21pc3NlZCk7CiB9CiAKIGNsYXNzIENvbnRleHRNZW51V2ViRXh0ZW5zaW9uVGVz
dDogcHVibGljIENvbnRleHRNZW51VGVzdCB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NQ2xpZW50UmVjdC5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NQ2xpZW50UmVjdC5jcHAKaW5kZXggZmZiNDc0
NzE1Mzc5YTBlZWM2Yjg0NjE3OTc4ZjkyMjdjYmZjOWIzMi4uMDFjODA3M2U2NzcwMTk4NzhmNzUx
ZDc0MjA1ZDU3ZTU4ZjI2NDUyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHdGsvVGVzdERPTUNsaWVudFJlY3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RET01DbGllbnRSZWN0LmNwcApAQCAtMzAsMTIgKzMwLDEy
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiB0ZXN0SFRNTCA9ICI8aHRtbD48aGVhZD48L2hlYWQ+PGJv
ZHk+IgogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NQ2xpZW50UmVjdERpdkJvdW5kaW5nQ2xp
ZW50UmVjdFBvc2l0aW9uKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAg
IGdfYXNzZXJ0KHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01DbGllbnRSZWN0Iiwg
ImRpdi1ib3VuZGluZy1jbGllbnQtcmVjdC1wb3NpdGlvbiIsIHRlc3RIVE1MKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RE9NQ2xpZW50UmVjdCIs
ICJkaXYtYm91bmRpbmctY2xpZW50LXJlY3QtcG9zaXRpb24iLCB0ZXN0SFRNTCkpOwogfQogCiBz
dGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NQ2xpZW50UmVjdERpdkNsaWVudFJlY3RzUG9zaXRpb25B
bmRMZW5ndGgoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgZ19hc3Nl
cnQodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdERPTUNsaWVudFJlY3QiLCAiZGl2LWNs
aWVudC1yZWN0cy1wb3NpdGlvbi1hbmQtbGVuZ3RoIiwgdGVzdEhUTUwpKTsKKyAgICBnX2Fzc2Vy
dF90cnVlKHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01DbGllbnRSZWN0IiwgImRp
di1jbGllbnQtcmVjdHMtcG9zaXRpb24tYW5kLWxlbmd0aCIsIHRlc3RIVE1MKSk7CiB9CiAKIHZv
aWQgYmVmb3JlQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R3RrL1Rlc3RET01ET01XaW5kb3cuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvVGVzdERPTURPTVdpbmRvdy5jcHAKaW5kZXggOThjNmUxMDY0MWY1OWQ4ZjJmYzRi
YWE5NTUxY2I5YTZlNGU3MmJkYS4uNTUwYTU5NzZlMTRiMWZhYjZhZGQ1ZDZiYjRiZTE4NDQ2Mzdh
MmY4OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVz
dERPTURPTVdpbmRvdy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
dGsvVGVzdERPTURPTVdpbmRvdy5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYktpdERPTURPTVdpbmRvd1NpZ25hbHMoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiAgICAgZ192YXJpYW50X2J1aWxkZXJfaW5pdCgmYnVpbGRlciwgR19WQVJJQU5UX1RZUEVf
VkFSRElDVCk7CiAgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZidWlsZGVyLCAie3N2fSIsICJw
YWdlSUQiLCBnX3ZhcmlhbnRfbmV3X3VpbnQ2NCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3BhZ2VfaWQo
c3RhdHVzLnRlc3QtPm1fd2ViVmlldykpKTsKICAgICBzdGF0dXMudGVzdFJ1bm5lci0+cnVuVGVz
dEFuZFdhaXQoIldlYktpdERPTURPTVdpbmRvdyIsICJzaWduYWxzIiwgZ192YXJpYW50X2J1aWxk
ZXJfZW5kKCZidWlsZGVyKSk7Ci0gICAgZ19hc3NlcnQoc3RhdHVzLnRlc3RSdW5uZXItPmdldFRl
c3RSZXN1bHQoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShzdGF0dXMudGVzdFJ1bm5lci0+Z2V0VGVz
dFJlc3VsdCgpKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFdlYktpdERPTURPTVdpbmRvd0Rpc3Bh
dGNoRXZlbnQoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC0xMTcsNyArMTE3
LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdERPTURPTVdpbmRvd0Rpc3BhdGNoRXZlbnQoV2Vi
Vmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIKICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0
KCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKICAgICBnX3ZhcmlhbnRfYnVpbGRl
cl9hZGQoJmJ1aWxkZXIsICJ7c3Z9IiwgInBhZ2VJRCIsIGdfdmFyaWFudF9uZXdfdWludDY0KHdl
YmtpdF93ZWJfdmlld19nZXRfcGFnZV9pZChzdGF0dXMudGVzdC0+bV93ZWJWaWV3KSkpOwogICAg
IHN0YXR1cy50ZXN0UnVubmVyLT5ydW5UZXN0QW5kV2FpdCgiV2ViS2l0RE9NRE9NV2luZG93Iiwg
ImRpc3BhdGNoLWV2ZW50IiwgZ192YXJpYW50X2J1aWxkZXJfZW5kKCZidWlsZGVyKSk7Ci0gICAg
Z19hc3NlcnQoc3RhdHVzLnRlc3RSdW5uZXItPmdldFRlc3RSZXN1bHQoKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZShzdGF0dXMudGVzdFJ1bm5lci0+Z2V0VGVzdFJlc3VsdCgpKTsKIH0KIAogc3RhdGlj
IHZvaWQgdGVzdFdlYktpdERPTURPTVdpbmRvd0dldENvbXB1dGVkU3R5bGUoV2ViVmlld1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC0xMzMsNyArMTMzLDcgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYktpdERPTURPTVdpbmRvd0dldENvbXB1dGVkU3R5bGUoV2ViVmlld1Rlc3QqIHRlc3QsIGdj
b25zdHBvaW4KICAgICBHVmFyaWFudEJ1aWxkZXIgYnVpbGRlcjsKICAgICBnX3ZhcmlhbnRfYnVp
bGRlcl9pbml0KCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKICAgICBnX3Zhcmlh
bnRfYnVpbGRlcl9hZGQoJmJ1aWxkZXIsICJ7c3Z9IiwgInBhZ2VJRCIsIGdfdmFyaWFudF9uZXdf
dWludDY0KHdlYmtpdF93ZWJfdmlld19nZXRfcGFnZV9pZChzdGF0dXMudGVzdC0+bV93ZWJWaWV3
KSkpOwotICAgIGdfYXNzZXJ0KHN0YXR1cy50ZXN0UnVubmVyLT5ydW5UZXN0KCJXZWJLaXRET01E
T01XaW5kb3ciLCAiZ2V0LWNvbXB1dGVkLXN0eWxlIiwgZ192YXJpYW50X2J1aWxkZXJfZW5kKCZi
dWlsZGVyKSkpOworICAgIGdfYXNzZXJ0X3RydWUoc3RhdHVzLnRlc3RSdW5uZXItPnJ1blRlc3Qo
IldlYktpdERPTURPTVdpbmRvdyIsICJnZXQtY29tcHV0ZWQtc3R5bGUiLCBnX3ZhcmlhbnRfYnVp
bGRlcl9lbmQoJmJ1aWxkZXIpKSk7CiB9CiAKIHZvaWQgYmVmb3JlQWxsKCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RET01Ob2RlLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RET01Ob2RlLmNwcAppbmRleCA0
NmUwZGFiZTUwNjM4MTFlZTQ3ZTcwNjU4MTViMjI0ZmYwYmIyYmY3Li5hNjk4YTI3ZTI3YzRiYTM1
NzY2NzQyZTRhYjliYzhlMmY2ZWVhYjU4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEd0ay9UZXN0RE9NTm9kZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHdGsvVGVzdERPTU5vZGUuY3BwCkBAIC0yNiwxMiArMjYsMTIgQEAKIHN0
YXRpYyB2b2lkIHRlc3RXZWJLaXRET01Ob2RlSGllcmFyY2h5TmF2aWdhdGlvbihXZWJWaWV3VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciogdGVzdEhU
TUwgPSAiPGh0bWw+PGhlYWQ+PHRpdGxlPlRoaXMgaXMgdGhlIHRpdGxlPC90aXRsZT48L2hlYWQ+
PGJvZHk+PHA+MTwvcD48cD4yPC9wPjxwPjM8L3A+PC9ib2R5PjwvaHRtbD4iOwotICAgIGdfYXNz
ZXJ0KHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01Ob2RlIiwgImhpZXJhcmNoeS1u
YXZpZ2F0aW9uIiwgdGVzdEhUTUwpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPnJ1bldlYlBy
b2Nlc3NUZXN0KCJXZWJLaXRET01Ob2RlIiwgImhpZXJhcmNoeS1uYXZpZ2F0aW9uIiwgdGVzdEhU
TUwpKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFdlYktpdERPTU5vZGVJbnNlcnRpb24oV2ViVmll
d1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgZ19hc3NlcnQodGVzdC0+cnVuV2Vi
UHJvY2Vzc1Rlc3QoIldlYktpdERPTU5vZGUiLCAiaW5zZXJ0aW9uIikpOworICAgIGdfYXNzZXJ0
X3RydWUodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdERPTU5vZGUiLCAiaW5zZXJ0aW9u
IikpOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciogdGFnTmFtZXNUZXN0SFRNTCA9ICI8aHRtbD48
aGVhZD48L2hlYWQ+PGJvZHk+IgpAQCAtNDcsMTggKzQ3LDE4IEBAIHN0YXRpYyBjb25zdCBjaGFy
KiB0YWdOYW1lc1Rlc3RIVE1MID0gIjxodG1sPjxoZWFkPjwvaGVhZD48Ym9keT4iCiAKIHN0YXRp
YyB2b2lkIHRlc3RXZWJLaXRET01Ob2RlVGFnTmFtZXNOb2RlTGlzdChXZWJWaWV3VGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBnX2Fzc2VydCh0ZXN0LT5ydW5XZWJQcm9jZXNzVGVz
dCgiV2ViS2l0RE9NTm9kZSIsICJ0YWctbmFtZXMtbm9kZS1saXN0IiwgdGFnTmFtZXNUZXN0SFRN
TCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdERP
TU5vZGUiLCAidGFnLW5hbWVzLW5vZGUtbGlzdCIsIHRhZ05hbWVzVGVzdEhUTUwpKTsKIH0KIAog
c3RhdGljIHZvaWQgdGVzdFdlYktpdERPTU5vZGVUYWdOYW1lc0hUTUxDb2xsZWN0aW9uKFdlYlZp
ZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIGdfYXNzZXJ0KHRlc3QtPnJ1bldl
YlByb2Nlc3NUZXN0KCJXZWJLaXRET01Ob2RlIiwgInRhZy1uYW1lcy1odG1sLWNvbGxlY3Rpb24i
LCB0YWdOYW1lc1Rlc3RIVE1MKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5ydW5XZWJQcm9j
ZXNzVGVzdCgiV2ViS2l0RE9NTm9kZSIsICJ0YWctbmFtZXMtaHRtbC1jb2xsZWN0aW9uIiwgdGFn
TmFtZXNUZXN0SFRNTCkpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NT2JqZWN0Q2Fj
aGUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIHRlc3RIVE1MID0gIjxodG1sPjxib2R5PjxkaXYgaWQ9J2NvbnRhaW5lcic+PHA+RE9N
IENhY2hlIHRlc3Q8L3A+PGEgaWQ9J2xpbmsgaHJlZj0nIyc+bGluazwvYT48L2Rpdj48L2JvZHk+
PC9odG1sPiI7Ci0gICAgZ19hc3NlcnQodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdERP
TU5vZGUiLCAiZG9tLWNhY2hlIiwgdGVzdEhUTUwpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3Qt
PnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01Ob2RlIiwgImRvbS1jYWNoZSIsIHRlc3RIVE1M
KSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
dGsvVGVzdERPTU5vZGVGaWx0ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHdGsvVGVzdERPTU5vZGVGaWx0ZXIuY3BwCmluZGV4IGUwYzBhZGQ4OGVhMjhhZWNjNmY4MzVl
Y2E1MjA1NGJhNTM0N2NjMDUuLjBkYWY0NzlmYjg5OWQxMTc2NzRiYzJlYTNlYjE5NTE2NzBmMTM4
YmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RE
T01Ob2RlRmlsdGVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9UZXN0RE9NTm9kZUZpbHRlci5jcHAKQEAgLTI4LDEyICsyOCwxMiBAQCBzdGF0aWMgY29uc3Qg
Y2hhciogdGVzdEhUTUwgPSAiPGh0bWwgaWQ9J3Jvb3QnPjxoZWFkPjx0aXRsZT5ET01Ob2RlVHJl
ZVdhbGtlcjwvdAogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NTm9kZUZpbHRlclRyZWVXYWxr
ZXIoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgZ19hc3NlcnQodGVz
dC0+cnVuV2ViUHJvY2Vzc1Rlc3QoIldlYktpdERPTU5vZGVGaWx0ZXIiLCAidHJlZS13YWxrZXIi
LCB0ZXN0SFRNTCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+cnVuV2ViUHJvY2Vzc1Rlc3Qo
IldlYktpdERPTU5vZGVGaWx0ZXIiLCAidHJlZS13YWxrZXIiLCB0ZXN0SFRNTCkpOwogfQogCiBz
dGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NTm9kZUZpbHRlck5vZGVJdGVyYXRvcihXZWJWaWV3VGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBnX2Fzc2VydCh0ZXN0LT5ydW5XZWJQcm9j
ZXNzVGVzdCgiV2ViS2l0RE9NTm9kZUZpbHRlciIsICJub2RlLWl0ZXJhdG9yIiwgdGVzdEhUTUwp
KTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPnJ1bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01O
b2RlRmlsdGVyIiwgIm5vZGUtaXRlcmF0b3IiLCB0ZXN0SFRNTCkpOwogfQogCiB2b2lkIGJlZm9y
ZUFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9U
ZXN0RE9NWFBhdGhOU1Jlc29sdmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R3RrL1Rlc3RET01YUGF0aE5TUmVzb2x2ZXIuY3BwCmluZGV4IDYzZWRmNDZjYzQ2YTIzNDNm
NWUxOGE5MDRiNDdjOWUxMTJiZDZlNzQuLjIyZDc5ZjE1ZWVmOTgxNjZjNGVlYTFjMGEzOTE1NDIz
NDMyNTc5YTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3Rr
L1Rlc3RET01YUGF0aE5TUmVzb2x2ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R3RrL1Rlc3RET01YUGF0aE5TUmVzb2x2ZXIuY3BwCkBAIC0yNiwxMyArMjYsMTMg
QEAKIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXJOYXRpdmUoV2ViVmll
d1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5h
dGl2ZVhNTCA9ICI8cm9vdCB4bWxuczpmb289J2h0dHA6Ly93d3cuZXhhbXBsZS5vcmcnPjxmb286
Y2hpbGQ+U1VDQ0VTUzwvZm9vOmNoaWxkPjwvcm9vdD4iOwotICAgIGdfYXNzZXJ0KHRlc3QtPnJ1
bldlYlByb2Nlc3NUZXN0KCJXZWJLaXRET01YUGF0aE5TUmVzb2x2ZXIiLCAibmF0aXZlIiwgbmF0
aXZlWE1MLCAidGV4dC94bWwiKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5ydW5XZWJQcm9j
ZXNzVGVzdCgiV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyIiwgIm5hdGl2ZSIsIG5hdGl2ZVhNTCwg
InRleHQveG1sIikpOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NWFBhdGhOU1Jlc29s
dmVyQ3VzdG9tKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBjdXN0b21YTUwgPSAiPHJvb3QgeG1sbnM9J2h0dHA6Ly93d3cuZXhhbXBs
ZS5jb20nPjxjaGlsZD5TVUNDRVNTPC9jaGlsZD48L3Jvb3Q+IjsKLSAgICBnX2Fzc2VydCh0ZXN0
LT5ydW5XZWJQcm9jZXNzVGVzdCgiV2ViS2l0RE9NWFBhdGhOU1Jlc29sdmVyIiwgImN1c3RvbSIs
IGN1c3RvbVhNTCwgInRleHQveG1sIikpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+cnVuV2Vi
UHJvY2Vzc1Rlc3QoIldlYktpdERPTVhQYXRoTlNSZXNvbHZlciIsICJjdXN0b20iLCBjdXN0b21Y
TUwsICJ0ZXh0L3htbCIpKTsKIH0KIAogdm9pZCBiZWZvcmVBbGwoKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdEluc3BlY3Rvci5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0SW5zcGVjdG9yLmNwcAppbmRleCAz
ZDk5M2UyNGYxYjQ4ZTc3ZWY3OWY2ZjllODBhMjJiZWI5MGUyN2EwLi4xMzNiMjRlM2M4YjBjMTM5
ZGQzZjE0OGQyYTRlYTA4MGQxZTQyYmY2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEd0ay9UZXN0SW5zcGVjdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0SW5zcGVjdG9yLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX2luc3Bl
Y3RvciwgaGFuZGxlcik7CiAgICAgICAgIH0KIAotICAgICAgICBnX2Fzc2VydCh3ZWJraXRfd2Vi
X2luc3BlY3Rvcl9nZXRfY2FuX2F0dGFjaChtX2luc3BlY3RvcikpOworICAgICAgICBnX2Fzc2Vy
dF90cnVlKHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF9jYW5fYXR0YWNoKG1faW5zcGVjdG9yKSk7
CiAgICAgICAgIHdlYmtpdF93ZWJfaW5zcGVjdG9yX2F0dGFjaChtX2luc3BlY3Rvcik7CiAgICAg
fQogCkBAIC0xNzUsMTEgKzE3NSwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0SW5zcGVjdG9yRGVmYXVs
dChJbnNwZWN0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPnNob3coKTsK
ICAgICAvLyBXZSBkb24ndCBhZGQgdGhlIHZpZXcgdG8gYSBjb250YWluZXIsIHNvIGNvbnN1bWUg
dGhlIHdlYWsgcmVmIHdpdGggR1JlZlB0ci4KICAgICBHUmVmUHRyPFdlYktpdFdlYlZpZXdCYXNl
PiBpbnNwZWN0b3JWaWV3ID0gd2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X3dlYl92aWV3KHRlc3Qt
Pm1faW5zcGVjdG9yKTsKLSAgICBnX2Fzc2VydChpbnNwZWN0b3JWaWV3LmdldCgpKTsKKyAgICBn
X2Fzc2VydF9ub25udWxsKGluc3BlY3RvclZpZXcuZ2V0KCkpOwogICAgIHRlc3QtPmFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoaW5zcGVjdG9yVmlldy5nZXQo
KSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX2luc3BlY3Rvcl9pc19hdHRhY2hlZCh0ZXN0
LT5tX2luc3BlY3RvcikpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfaW5zcGVjdG9y
X2lzX2F0dGFjaGVkKHRlc3QtPm1faW5zcGVjdG9yKSk7CiAgICAgZ19hc3NlcnRfY21wdWludCh3
ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfYXR0YWNoZWRfaGVpZ2h0KHRlc3QtPm1faW5zcGVjdG9y
KSwgPT0sIDApOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfY2FuX2F0
dGFjaCh0ZXN0LT5tX2luc3BlY3RvcikpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJf
aW5zcGVjdG9yX2dldF9jYW5fYXR0YWNoKHRlc3QtPm1faW5zcGVjdG9yKSk7CiAgICAgVmVjdG9y
PEluc3BlY3RvclRlc3Q6Okluc3BlY3RvckV2ZW50cz4mIGV2ZW50cyA9IHRlc3QtPm1fZXZlbnRz
OwogICAgIGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgMSk7CiAgICAgZ19hc3Nl
cnRfY21waW50KGV2ZW50c1swXSwgPT0sIEluc3BlY3RvclRlc3Q6Ok9wZW5XaW5kb3cpOwpAQCAt
MTkyLDcgKzE5Miw3IEBAIHN0YXRpYyB2b2lkIHRlc3RJbnNwZWN0b3JEZWZhdWx0KEluc3BlY3Rv
clRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bV9ldmVudHMuY2xlYXIoKTsK
IAogICAgIHRlc3QtPnJlc2l6ZVZpZXdBbmRBdHRhY2goKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRf
d2ViX2luc3BlY3Rvcl9pc19hdHRhY2hlZCh0ZXN0LT5tX2luc3BlY3RvcikpOworICAgIGdfYXNz
ZXJ0X3RydWUod2Via2l0X3dlYl9pbnNwZWN0b3JfaXNfYXR0YWNoZWQodGVzdC0+bV9pbnNwZWN0
b3IpKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF9hdHRh
Y2hlZF9oZWlnaHQodGVzdC0+bV9pbnNwZWN0b3IpLCA+PSwgSW5zcGVjdG9yVGVzdDo6Z01pbmlt
dW1BdHRhY2hlZEluc3BlY3RvckhlaWdodCk7CiAgICAgZXZlbnRzID0gdGVzdC0+bV9ldmVudHM7
CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCAxKTsKQEAgLTIwMCw3ICsy
MDAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0SW5zcGVjdG9yRGVmYXVsdChJbnNwZWN0b3JUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPm1fZXZlbnRzLmNsZWFyKCk7CiAKICAgICB0
ZXN0LT5kZXRhY2hBbmRXYWl0VW50aWxXaW5kb3dPcGVuZWQoKTsKLSAgICBnX2Fzc2VydCghd2Vi
a2l0X3dlYl9pbnNwZWN0b3JfaXNfYXR0YWNoZWQodGVzdC0+bV9pbnNwZWN0b3IpKTsKKyAgICBn
X2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX2luc3BlY3Rvcl9pc19hdHRhY2hlZCh0ZXN0LT5tX2lu
c3BlY3RvcikpOwogICAgIGV2ZW50cyA9IHRlc3QtPm1fZXZlbnRzOwogICAgIGdfYXNzZXJ0X2Nt
cGludChldmVudHMuc2l6ZSgpLCA9PSwgMik7CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50c1sw
XSwgPT0sIEluc3BlY3RvclRlc3Q6OkRldGFjaCk7CkBAIC0yMzIsMTAgKzIzMiwxMCBAQCBwdWJs
aWM6CiAKICAgICBib29sIG9wZW5XaW5kb3coKQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQoIW1f
aW5zcGVjdG9yV2luZG93KTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbChtX2luc3BlY3RvcldpbmRv
dyk7CiAgICAgICAgIG1faW5zcGVjdG9yV2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJTkRP
V19UT1BMRVZFTCk7CiAgICAgICAgIFdlYktpdFdlYlZpZXdCYXNlKiBpbnNwZWN0b3JWaWV3ID0g
d2Via2l0X3dlYl9pbnNwZWN0b3JfZ2V0X3dlYl92aWV3KG1faW5zcGVjdG9yKTsKLSAgICAgICAg
Z19hc3NlcnQoaW5zcGVjdG9yVmlldyk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoaW5zcGVj
dG9yVmlldyk7CiAgICAgICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIobV9pbnNw
ZWN0b3JXaW5kb3cpLCBHVEtfV0lER0VUKGluc3BlY3RvclZpZXcpKTsKICAgICAgICAgZ3RrX3dp
ZGdldF9zaG93X2FsbChtX2luc3BlY3RvcldpbmRvdyk7CiAKQEAgLTI4MSwxNCArMjgxLDE0IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0V2ViVmlld0Jhc2U+IGluc3Bl
Y3RvclZpZXcgPSB3ZWJraXRfd2ViX2luc3BlY3Rvcl9nZXRfd2ViX3ZpZXcobV9pbnNwZWN0b3Ip
OwogICAgICAgICBHdGtXaWRnZXQqIHBhbmUgPSBndGtfYmluX2dldF9jaGlsZChHVEtfQklOKG1f
cGFyZW50V2luZG93KSk7Ci0gICAgICAgIGdfYXNzZXJ0KEdUS19JU19QQU5FRChwYW5lKSk7Cisg
ICAgICAgIGdfYXNzZXJ0X3RydWUoR1RLX0lTX1BBTkVEKHBhbmUpKTsKICAgICAgICAgZ3RrX2Nv
bnRhaW5lcl9yZW1vdmUoR1RLX0NPTlRBSU5FUihwYW5lKSwgR1RLX1dJREdFVChpbnNwZWN0b3JW
aWV3LmdldCgpKSk7CiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0OjpkZXRhY2goKTsKICAg
ICB9CiAKICAgICB2b2lkIGRlc3Ryb3lXaW5kb3coKQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQo
bV9pbnNwZWN0b3JXaW5kb3cpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKG1faW5zcGVjdG9y
V2luZG93KTsKICAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1faW5zcGVjdG9yV2luZG93KTsK
ICAgICAgICAgbV9pbnNwZWN0b3JXaW5kb3cgPSAwOwogICAgIH0KQEAgLTMwNSwxNCArMzA1LDE0
IEBAIHN0YXRpYyB2b2lkIHRlc3RJbnNwZWN0b3JNYW51YWxBdHRhY2hEZXRhY2goQ3VzdG9tSW5z
cGVjdG9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pCiAKICAgICB0ZXN0LT5zaG93KCk7CiAgICAgdGVz
dC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVCh3ZWJraXRf
d2ViX2luc3BlY3Rvcl9nZXRfd2ViX3ZpZXcodGVzdC0+bV9pbnNwZWN0b3IpKSk7Ci0gICAgZ19h
c3NlcnQoIXdlYmtpdF93ZWJfaW5zcGVjdG9yX2lzX2F0dGFjaGVkKHRlc3QtPm1faW5zcGVjdG9y
KSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X3dlYl9pbnNwZWN0b3JfaXNfYXR0YWNoZWQo
dGVzdC0+bV9pbnNwZWN0b3IpKTsKICAgICBWZWN0b3I8SW5zcGVjdG9yVGVzdDo6SW5zcGVjdG9y
RXZlbnRzPiYgZXZlbnRzID0gdGVzdC0+bV9ldmVudHM7CiAgICAgZ19hc3NlcnRfY21waW50KGV2
ZW50cy5zaXplKCksID09LCAxKTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZXZlbnRzWzBdLCA9PSwg
SW5zcGVjdG9yVGVzdDo6T3BlbldpbmRvdyk7CiAgICAgdGVzdC0+bV9ldmVudHMuY2xlYXIoKTsK
IAogICAgIHRlc3QtPnJlc2l6ZVZpZXdBbmRBdHRhY2goKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRf
d2ViX2luc3BlY3Rvcl9pc19hdHRhY2hlZCh0ZXN0LT5tX2luc3BlY3RvcikpOworICAgIGdfYXNz
ZXJ0X3RydWUod2Via2l0X3dlYl9pbnNwZWN0b3JfaXNfYXR0YWNoZWQodGVzdC0+bV9pbnNwZWN0
b3IpKTsKICAgICBnX2Fzc2VydF9jbXB1aW50KHdlYmtpdF93ZWJfaW5zcGVjdG9yX2dldF9hdHRh
Y2hlZF9oZWlnaHQodGVzdC0+bV9pbnNwZWN0b3IpLCA+PSwgSW5zcGVjdG9yVGVzdDo6Z01pbmlt
dW1BdHRhY2hlZEluc3BlY3RvckhlaWdodCk7CiAgICAgZXZlbnRzID0gdGVzdC0+bV9ldmVudHM7
CiAgICAgZ19hc3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCAxKTsKQEAgLTMyMCw3ICsz
MjAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0SW5zcGVjdG9yTWFudWFsQXR0YWNoRGV0YWNoKEN1c3Rv
bUluc3BlY3RvclRlc3QqIHRlc3QsIGdjb25zdHBvaQogICAgIHRlc3QtPm1fZXZlbnRzLmNsZWFy
KCk7CiAKICAgICB0ZXN0LT5kZXRhY2hBbmRXYWl0VW50aWxXaW5kb3dPcGVuZWQoKTsKLSAgICBn
X2Fzc2VydCghd2Via2l0X3dlYl9pbnNwZWN0b3JfaXNfYXR0YWNoZWQodGVzdC0+bV9pbnNwZWN0
b3IpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX2luc3BlY3Rvcl9pc19hdHRhY2hl
ZCh0ZXN0LT5tX2luc3BlY3RvcikpOwogICAgIGV2ZW50cyA9IHRlc3QtPm1fZXZlbnRzOwogICAg
IGdfYXNzZXJ0X2NtcGludChldmVudHMuc2l6ZSgpLCA9PSwgMik7CiAgICAgZ19hc3NlcnRfY21w
aW50KGV2ZW50c1swXSwgPT0sIEluc3BlY3RvclRlc3Q6OkRldGFjaCk7CkBAIC0zMjgsNyArMzI4
LDcgQEAgc3RhdGljIHZvaWQgdGVzdEluc3BlY3Rvck1hbnVhbEF0dGFjaERldGFjaChDdXN0b21J
bnNwZWN0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2kKICAgICB0ZXN0LT5tX2V2ZW50cy5jbGVhcigp
OwogCiAgICAgdGVzdC0+cmVzaXplVmlld0FuZEF0dGFjaCgpOwotICAgIGdfYXNzZXJ0KHdlYmtp
dF93ZWJfaW5zcGVjdG9yX2lzX2F0dGFjaGVkKHRlc3QtPm1faW5zcGVjdG9yKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX2luc3BlY3Rvcl9pc19hdHRhY2hlZCh0ZXN0LT5tX2luc3Bl
Y3RvcikpOwogICAgIHRlc3QtPm1fZXZlbnRzLmNsZWFyKCk7CiAgICAgdGVzdC0+Y2xvc2UoKTsK
ICAgICBldmVudHMgPSB0ZXN0LT5tX2V2ZW50czsKQEAgLTM0Nyw3ICszNDcsNyBAQCBzdGF0aWMg
dm9pZCB0ZXN0SW5zcGVjdG9yQ3VzdG9tQ29udGFpbmVyRGVzdHJveWVkKEN1c3RvbUluc3BlY3Rv
clRlc3QqIHRlc3QsIGdjbwogCiAgICAgdGVzdC0+c2hvdygpOwogICAgIHRlc3QtPmFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1Qod2Via2l0X3dlYl9pbnNwZWN0
b3JfZ2V0X3dlYl92aWV3KHRlc3QtPm1faW5zcGVjdG9yKSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJr
aXRfd2ViX2luc3BlY3Rvcl9pc19hdHRhY2hlZCh0ZXN0LT5tX2luc3BlY3RvcikpOworICAgIGdf
YXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfaW5zcGVjdG9yX2lzX2F0dGFjaGVkKHRlc3QtPm1faW5z
cGVjdG9yKSk7CiAKICAgICB0ZXN0LT5tX2V2ZW50cy5jbGVhcigpOwogICAgIHRlc3QtPmRlc3Ry
b3lXaW5kb3coKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R3RrL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvVGVzdEluc3BlY3RvclNlcnZlci5jcHAKaW5kZXggOTNhOTFkODFkMjY4MGQ0N2Yz
ZGIyYmNiNDI3MTUzMzllNDE4YjdiNC4uYmMyNjE0M2UxNTc0ODRhY2IxZGU2NDA1NDVjMzUyMTQx
ZjQxODk4NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsv
VGVzdEluc3BlY3RvclNlcnZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHdGsvVGVzdEluc3BlY3RvclNlcnZlci5jcHAKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGlj
IHZvaWQgc3RhcnRUZXN0U2VydmVyKCkKICAgICB0ZXN0U2VydmVyQXJndlswXSA9IHRlc3RTZXJ2
ZXJQYXRoLmdldCgpOwogICAgIHRlc3RTZXJ2ZXJBcmd2WzFdID0gbnVsbHB0cjsKIAotICAgIGdf
YXNzZXJ0KGdfc3Bhd25fYXN5bmMobnVsbHB0ciwgdGVzdFNlcnZlckFyZ3YsIG51bGxwdHIsIEdf
U1BBV05fREVGQVVMVCwgbnVsbHB0ciwgbnVsbHB0ciwgJmdDaGlsZFByb2Nlc3NQaWQsIG51bGxw
dHIpKTsKKyAgICBnX2Fzc2VydF90cnVlKGdfc3Bhd25fYXN5bmMobnVsbHB0ciwgdGVzdFNlcnZl
ckFyZ3YsIG51bGxwdHIsIEdfU1BBV05fREVGQVVMVCwgbnVsbHB0ciwgbnVsbHB0ciwgJmdDaGls
ZFByb2Nlc3NQaWQsIG51bGxwdHIpKTsKIAogICAgIHdhaXRVbnRpbEluc3BlY3RvclNlcnZlcklz
UmVhZHkoKTsKICAgICBpZiAoIWdTZXJ2ZXJJc1JlYWR5KQpAQCAtMTE3LDcgKzExNyw3IEBAIHB1
YmxpYzoKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDU7ICsraSkgewogICAgICAg
ICAgICAgc2l6ZV90IG1haW5SZXNvdXJjZURhdGFTaXplID0gMDsKICAgICAgICAgICAgIGNvbnN0
IGNoYXIqIG1haW5SZXNvdXJjZURhdGEgPSB0aGlzLT5tYWluUmVzb3VyY2VEYXRhKG1haW5SZXNv
dXJjZURhdGFTaXplKTsKLSAgICAgICAgICAgIGdfYXNzZXJ0KG1haW5SZXNvdXJjZURhdGEpOwor
ICAgICAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChtYWluUmVzb3VyY2VEYXRhKTsKICAgICAgICAg
ICAgIGlmIChnX3N0cnJzdHJfbGVuKG1haW5SZXNvdXJjZURhdGEsIG1haW5SZXNvdXJjZURhdGFT
aXplLCAiTm8gdGFyZ2V0cyBmb3VuZCIpKQogICAgICAgICAgICAgICAgIHdhaXQoMC4xKTsKICAg
ICAgICAgICAgIGVsc2UgaWYgKGdfc3RycnN0cl9sZW4obWFpblJlc291cmNlRGF0YSwgbWFpblJl
c291cmNlRGF0YVNpemUsICJJbnNwZWN0YWJsZSB0YXJnZXRzIikpCkBAIC0xMzUsMTcgKzEzNSwx
NyBAQCBzdGF0aWMgdm9pZCB0ZXN0SW5zcGVjdG9yU2VydmVyUGFnZUxpc3QoSW5zcGVjdG9yU2Vy
dmVyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcgogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBl
cnJvcjsKIAogICAgIHRlc3QtPnNob3dJbldpbmRvd0FuZFdhaXRVbnRpbE1hcHBlZChHVEtfV0lO
RE9XX1RPUExFVkVMKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5nZXRQYWdlTGlzdCgpKTsKKyAgICBn
X2Fzc2VydF90cnVlKHRlc3QtPmdldFBhZ2VMaXN0KCkpOwogCiAgICAgV2ViS2l0SmF2YXNjcmlw
dFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0VW50
aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFyZ2V0bmFtZScp
Lmxlbmd0aDsiLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1
bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChq
YXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAg
ICAgZ19hc3NlcnRfY21waW50KFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9OdW1iZXIo
amF2YXNjcmlwdFJlc3VsdCksID09LCAxKTsKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gdmFsdWVT
dHJpbmc7CiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkphdmFTY3JpcHRBbmRXYWl0
VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndGFyZ2V0dXJs
JylbMF0uaW5uZXJUZXh0OyIsICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoamF2YXNj
cmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoIWVycm9yLmdldCgpKTsKKyAgICBnX2Fzc2VydF9u
b25udWxsKGphdmFzY3JpcHRSZXN1bHQpOworICAgIGdfYXNzZXJ0X25vX2Vycm9yKGVycm9yLmdl
dCgpKTsKICAgICB2YWx1ZVN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3Vs
dFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHZhbHVl
U3RyaW5nLmdldCgpLCA9PSwgImh0dHA6Ly8xMjcuMC4wLjE6Mjk5OS8iKTsKIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RPcHRpb25NZW51LmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RPcHRpb25NZW51LmNw
cAppbmRleCBlYTYxYmM0ZDJhNGI4Yjg2ZmJjYzliMzA1MWEzZTlkY2ZhZTJmZWE1Li41N2MxYzlk
MzI3OTM4MTdlYjM0NjRlYWIyOTdjMmU0NTg5M2M4ZWYxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0T3B0aW9uTWVudS5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdE9wdGlvbk1lbnUuY3BwCkBAIC00OSw5
ICs0OSw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBnYm9vbGVhbiBzaG93T3B0aW9uTWVudUNh
bGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdE9wdGlvbk1lbnUqIG1lbnUsIEdk
a0V2ZW50KiBldmVudCwgR2RrUmVjdGFuZ2xlKiByZWN0LCBPcHRpb25NZW51VGVzdCogdGVzdCkK
ICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KHRlc3QtPm1fd2ViVmlldyA9PSB3ZWJWaWV3KTsKLSAg
ICAgICAgZ19hc3NlcnQocmVjdCk7Ci0gICAgICAgIGdfYXNzZXJ0KFdFQktJVF9JU19PUFRJT05f
TUVOVShtZW51KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV93ZWJWaWV3ID09IHdl
YlZpZXcpOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKHJlY3QpOworICAgICAgICBnX2Fzc2Vy
dF90cnVlKFdFQktJVF9JU19PUFRJT05fTUVOVShtZW51KSk7CiAgICAgICAgIHRlc3QtPmFzc2Vy
dE9iamVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QobWVudSkpOwogICAgICAg
ICB0ZXN0LT5zaG93T3B0aW9uTWVudShtZW51LCByZWN0KTsKICAgICAgICAgcmV0dXJuIFRSVUU7
CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIG1lbnVDbG9zZUNh
bGxiYWNrKFdlYktpdE9wdGlvbk1lbnUqIG1lbnUsIE9wdGlvbk1lbnVUZXN0KiB0ZXN0KQogICAg
IHsKLSAgICAgICAgZ19hc3NlcnQodGVzdC0+bV9tZW51LmdldCgpID09IG1lbnUpOworICAgICAg
ICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fbWVudS5nZXQoKSA9PSBtZW51KTsKICAgICAgICAgdGVz
dC0+ZGVzdHJveU1lbnUoKTsKICAgICB9CiAKQEAgLTgwLDIzICs4MCwyMyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNsb3NlKCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KG1fbWVudS5nZXQoKSk7
CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobV9tZW51LmdldCgpKTsKICAgICAgICAgd2Via2l0
X29wdGlvbl9tZW51X2Nsb3NlKG1fbWVudS5nZXQoKSk7Ci0gICAgICAgIGdfYXNzZXJ0KCFtX21l
bnUuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF9udWxsKG1fbWVudS5nZXQoKSk7CiAgICAgfQog
CiAgICAgdm9pZCBhY3RpdmF0ZUl0ZW0odW5zaWduZWQgaXRlbSkKICAgICB7Ci0gICAgICAgIGdf
YXNzZXJ0KG1fbWVudS5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwobV9tZW51Lmdl
dCgpKTsKICAgICAgICAgd2Via2l0X29wdGlvbl9tZW51X2FjdGl2YXRlX2l0ZW0obV9tZW51Lmdl
dCgpLCBpdGVtKTsKLSAgICAgICAgZ19hc3NlcnQobV9tZW51LmdldCgpKTsKKyAgICAgICAgZ19h
c3NlcnRfbm9ubnVsbChtX21lbnUuZ2V0KCkpOwogICAgIH0KIAogICAgIHZvaWQgc2VsZWN0SXRl
bSh1bnNpZ25lZCBpdGVtKQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQobV9tZW51LmdldCgpKTsK
KyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChtX21lbnUuZ2V0KCkpOwogICAgICAgICB3ZWJraXRf
b3B0aW9uX21lbnVfc2VsZWN0X2l0ZW0obV9tZW51LmdldCgpLCBpdGVtKTsKLSAgICAgICAgZ19h
c3NlcnQobV9tZW51LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChtX21lbnUuZ2V0
KCkpOwogICAgIH0KIAogICAgIEdSZWZQdHI8V2ViS2l0T3B0aW9uTWVudT4gbV9tZW51OwpAQCAt
MTE3LDMyICsxMTcsMzIgQEAgc3RhdGljIHZvaWQgdGVzdE9wdGlvbk1lbnVTaW1wbGUoT3B0aW9u
TWVudVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZp
bmlzaGVkKCk7CiAKICAgICB0ZXN0LT5jbGlja0F0UG9zaXRpb25BbmRXYWl0VW50aWxPcHRpb25N
ZW51U2hvd24oNSwgMTUpOwotICAgIGdfYXNzZXJ0KFdFQktJVF9JU19PUFRJT05fTUVOVSh0ZXN0
LT5tX21lbnUuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19PUFRJT05fTUVO
VSh0ZXN0LT5tX21lbnUuZ2V0KCkpKTsKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X29wdGlv
bl9tZW51X2dldF9uX2l0ZW1zKHRlc3QtPm1fbWVudS5nZXQoKSksID09LCAzKTsKICAgICBhdXRv
KiBpdGVtID0gd2Via2l0X29wdGlvbl9tZW51X2dldF9pdGVtKHRlc3QtPm1fbWVudS5nZXQoKSwg
MCk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2dldF9sYWJl
bChpdGVtKSwgPT0sICJGb28iKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X29wdGlvbl9t
ZW51X2l0ZW1fZ2V0X3Rvb2x0aXAoaXRlbSksID09LCAiVGhlIEZvbyBPcHRpb24iKTsKLSAgICBn
X2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfbGFiZWwoaXRlbSkpOwot
ICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9jaGlsZChpdGVt
KSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZW5hYmxlZChpdGVt
KSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX3NlbGVjdGVkKGl0
ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91
cF9sYWJlbChpdGVtKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X29wdGlvbl9tZW51X2l0
ZW1faXNfZ3JvdXBfY2hpbGQoaXRlbSkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X29wdGlv
bl9tZW51X2l0ZW1faXNfZW5hYmxlZChpdGVtKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0
X29wdGlvbl9tZW51X2l0ZW1faXNfc2VsZWN0ZWQoaXRlbSkpOwogICAgIGl0ZW0gPSB3ZWJraXRf
b3B0aW9uX21lbnVfZ2V0X2l0ZW0odGVzdC0+bV9tZW51LmdldCgpLCAxKTsKICAgICBnX2Fzc2Vy
dF9jbXBzdHIod2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X2xhYmVsKGl0ZW0pLCA9PSwgIkJh
ciIpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfdG9vbHRpcChp
dGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2xh
YmVsKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3Jv
dXBfY2hpbGQoaXRlbSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lz
X2VuYWJsZWQoaXRlbSkpOwotICAgIGdfYXNzZXJ0KHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lz
X3NlbGVjdGVkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9vcHRpb25fbWVudV9p
dGVtX2dldF90b29sdGlwKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfb3B0aW9u
X21lbnVfaXRlbV9pc19ncm91cF9sYWJlbChpdGVtKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Vi
a2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfY2hpbGQoaXRlbSkpOworICAgIGdfYXNzZXJ0
X3RydWUod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZW5hYmxlZChpdGVtKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19zZWxlY3RlZChpdGVtKSk7CiAg
ICAgaXRlbSA9IHdlYmtpdF9vcHRpb25fbWVudV9nZXRfaXRlbSh0ZXN0LT5tX21lbnUuZ2V0KCks
IDIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfbGFi
ZWwoaXRlbSksID09LCAiQmF6Iik7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9p
dGVtX2dldF90b29sdGlwKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51
X2l0ZW1faXNfZ3JvdXBfbGFiZWwoaXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9u
X21lbnVfaXRlbV9pc19ncm91cF9jaGlsZChpdGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9v
cHRpb25fbWVudV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRf
b3B0aW9uX21lbnVfaXRlbV9pc19zZWxlY3RlZChpdGVtKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3
ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfdG9vbHRpcChpdGVtKSk7CisgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfbGFiZWwoaXRlbSkpOworICAg
IGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2NoaWxkKGl0
ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19lbmFi
bGVkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9p
c19zZWxlY3RlZChpdGVtKSk7CiAKICAgICB0ZXN0LT5jbG9zZSgpOwotICAgIGdfYXNzZXJ0KCF0
ZXN0LT5tX21lbnUuZ2V0KCkpOworICAgIGdfYXNzZXJ0X251bGwodGVzdC0+bV9tZW51LmdldCgp
KTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdE9wdGlvbk1lbnVHcm91cHMoT3B0aW9uTWVudVRlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCkBAIC0xNjYsNjQgKzE2Niw2NCBAQCBzdGF0aWMgdm9pZCB0
ZXN0T3B0aW9uTWVudUdyb3VwcyhPcHRpb25NZW51VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikK
ICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKIAogICAgIHRlc3QtPmNsaWNrQXRQ
b3NpdGlvbkFuZFdhaXRVbnRpbE9wdGlvbk1lbnVTaG93big1LCAxNSk7Ci0gICAgZ19hc3NlcnQo
V0VCS0lUX0lTX09QVElPTl9NRU5VKHRlc3QtPm1fbWVudS5nZXQoKSkpOworICAgIGdfYXNzZXJ0
X3RydWUoV0VCS0lUX0lTX09QVElPTl9NRU5VKHRlc3QtPm1fbWVudS5nZXQoKSkpOwogICAgIGdf
YXNzZXJ0X2NtcGludCh3ZWJraXRfb3B0aW9uX21lbnVfZ2V0X25faXRlbXModGVzdC0+bV9tZW51
LmdldCgpKSwgPT0sIDgpOwogICAgIGF1dG8qIGl0ZW0gPSB3ZWJraXRfb3B0aW9uX21lbnVfZ2V0
X2l0ZW0odGVzdC0+bV9tZW51LmdldCgpLCAwKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0
X29wdGlvbl9tZW51X2l0ZW1fZ2V0X2xhYmVsKGl0ZW0pLCA9PSwgIlJvb3QiKTsKLSAgICBnX2Fz
c2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X3Rvb2x0aXAoaXRlbSkpOwotICAgIGdf
YXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9sYWJlbChpdGVtKSk7Ci0g
ICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2NoaWxkKGl0ZW0p
KTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19lbmFibGVkKGl0ZW0p
KTsKLSAgICBnX2Fzc2VydCghd2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfc2VsZWN0ZWQoaXRl
bSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X3Rvb2x0
aXAoaXRlbSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lz
X2dyb3VwX2xhYmVsKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfb3B0aW9uX21l
bnVfaXRlbV9pc19ncm91cF9jaGlsZChpdGVtKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRf
b3B0aW9uX21lbnVfaXRlbV9pc19lbmFibGVkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3
ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19zZWxlY3RlZChpdGVtKSk7CiAgICAgaXRlbSA9IHdl
YmtpdF9vcHRpb25fbWVudV9nZXRfaXRlbSh0ZXN0LT5tX21lbnUuZ2V0KCksIDEpOwogICAgIGdf
YXNzZXJ0X2NtcHN0cih3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfbGFiZWwoaXRlbSksID09
LCAiR3JvdXAgMSIpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRf
dG9vbHRpcChpdGVtKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNf
Z3JvdXBfbGFiZWwoaXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRl
bV9pc19ncm91cF9jaGlsZChpdGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVu
dV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21l
bnVfaXRlbV9pc19zZWxlY3RlZChpdGVtKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfb3B0
aW9uX21lbnVfaXRlbV9nZXRfdG9vbHRpcChpdGVtKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJr
aXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9sYWJlbChpdGVtKSk7CisgICAgZ19hc3NlcnRf
ZmFsc2Uod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfY2hpbGQoaXRlbSkpOworICAg
IGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkp
OworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX3NlbGVjdGVk
KGl0ZW0pKTsKICAgICBpdGVtID0gd2Via2l0X29wdGlvbl9tZW51X2dldF9pdGVtKHRlc3QtPm1f
bWVudS5nZXQoKSwgMik7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9vcHRpb25fbWVudV9p
dGVtX2dldF9sYWJlbChpdGVtKSwgPT0sICJDaGlsZCAxLTEiKTsKLSAgICBnX2Fzc2VydCghd2Vi
a2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X3Rvb2x0aXAoaXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3
ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9sYWJlbChpdGVtKSk7Ci0gICAgZ19hc3Nl
cnQod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfY2hpbGQoaXRlbSkpOwotICAgIGdf
YXNzZXJ0KHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkpOwotICAgIGdf
YXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19zZWxlY3RlZChpdGVtKSk7CisgICAg
Z19hc3NlcnRfbnVsbCh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfdG9vbHRpcChpdGVtKSk7
CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfbGFi
ZWwoaXRlbSkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNf
Z3JvdXBfY2hpbGQoaXRlbSkpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X29wdGlvbl9tZW51
X2l0ZW1faXNfZW5hYmxlZChpdGVtKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X29wdGlv
bl9tZW51X2l0ZW1faXNfc2VsZWN0ZWQoaXRlbSkpOwogICAgIGl0ZW0gPSB3ZWJraXRfb3B0aW9u
X21lbnVfZ2V0X2l0ZW0odGVzdC0+bV9tZW51LmdldCgpLCAzKTsKICAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X2xhYmVsKGl0ZW0pLCA9PSwgIkNoaWxkIDEt
MiIpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfdG9vbHRpcChp
dGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2xh
YmVsKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91
cF9jaGlsZChpdGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lz
X2VuYWJsZWQoaXRlbSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9p
c19zZWxlY3RlZChpdGVtKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJraXRfb3B0aW9uX21lbnVf
aXRlbV9nZXRfdG9vbHRpcChpdGVtKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X29wdGlv
bl9tZW51X2l0ZW1faXNfZ3JvdXBfbGFiZWwoaXRlbSkpOworICAgIGdfYXNzZXJ0X3RydWUod2Vi
a2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfY2hpbGQoaXRlbSkpOworICAgIGdfYXNzZXJ0
X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkpOworICAgIGdf
YXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX3NlbGVjdGVkKGl0ZW0pKTsK
ICAgICBpdGVtID0gd2Via2l0X29wdGlvbl9tZW51X2dldF9pdGVtKHRlc3QtPm1fbWVudS5nZXQo
KSwgNCk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2dldF9s
YWJlbChpdGVtKSwgPT0sICJHcm91cCAyIik7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25f
bWVudV9pdGVtX2dldF90b29sdGlwKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfb3B0aW9u
X21lbnVfaXRlbV9pc19ncm91cF9sYWJlbChpdGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9v
cHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2NoaWxkKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCghd2Vi
a2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZW5hYmxlZChpdGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdl
YmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX3NlbGVjdGVkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9u
dWxsKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2dldF90b29sdGlwKGl0ZW0pKTsKKyAgICBnX2Fz
c2VydF90cnVlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2xhYmVsKGl0ZW0pKTsK
KyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9jaGls
ZChpdGVtKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNf
ZW5hYmxlZChpdGVtKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X29wdGlvbl9tZW51X2l0
ZW1faXNfc2VsZWN0ZWQoaXRlbSkpOwogICAgIGl0ZW0gPSB3ZWJraXRfb3B0aW9uX21lbnVfZ2V0
X2l0ZW0odGVzdC0+bV9tZW51LmdldCgpLCA1KTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0
X29wdGlvbl9tZW51X2l0ZW1fZ2V0X2xhYmVsKGl0ZW0pLCA9PSwgIkNoaWxkIDItMSIpOwotICAg
IGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfdG9vbHRpcChpdGVtKSk7Ci0g
ICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2xhYmVsKGl0ZW0p
KTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9jaGlsZChp
dGVtKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZW5hYmxlZChp
dGVtKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfc2VsZWN0ZWQo
aXRlbSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X3Rv
b2x0aXAoaXRlbSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVt
X2lzX2dyb3VwX2xhYmVsKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9vcHRpb25f
bWVudV9pdGVtX2lzX2dyb3VwX2NoaWxkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtp
dF9vcHRpb25fbWVudV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkpOworICAgIGdfYXNzZXJ0X3RydWUo
d2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfc2VsZWN0ZWQoaXRlbSkpOwogICAgIGl0ZW0gPSB3
ZWJraXRfb3B0aW9uX21lbnVfZ2V0X2l0ZW0odGVzdC0+bV9tZW51LmdldCgpLCA2KTsKICAgICBn
X2Fzc2VydF9jbXBzdHIod2Via2l0X29wdGlvbl9tZW51X2l0ZW1fZ2V0X2xhYmVsKGl0ZW0pLCA9
PSwgIkNoaWxkIDItMiIpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9n
ZXRfdG9vbHRpcChpdGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25fbWVudV9pdGVt
X2lzX2dyb3VwX2xhYmVsKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfb3B0aW9uX21lbnVf
aXRlbV9pc19ncm91cF9jaGlsZChpdGVtKSk7Ci0gICAgZ19hc3NlcnQod2Via2l0X29wdGlvbl9t
ZW51X2l0ZW1faXNfZW5hYmxlZChpdGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF9vcHRpb25f
bWVudV9pdGVtX2lzX3NlbGVjdGVkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF9v
cHRpb25fbWVudV9pdGVtX2dldF90b29sdGlwKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3
ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9sYWJlbChpdGVtKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19ncm91cF9jaGlsZChpdGVtKSk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19lbmFibGVkKGl0ZW0p
KTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19zZWxlY3Rl
ZChpdGVtKSk7CiAgICAgaXRlbSA9IHdlYmtpdF9vcHRpb25fbWVudV9nZXRfaXRlbSh0ZXN0LT5t
X21lbnUuZ2V0KCksIDcpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfb3B0aW9uX21lbnVf
aXRlbV9nZXRfbGFiZWwoaXRlbSksID09LCAiVGFpbCIpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRf
b3B0aW9uX21lbnVfaXRlbV9nZXRfdG9vbHRpcChpdGVtKSk7Ci0gICAgZ19hc3NlcnQoIXdlYmtp
dF9vcHRpb25fbWVudV9pdGVtX2lzX2dyb3VwX2xhYmVsKGl0ZW0pKTsKLSAgICBnX2Fzc2VydCgh
d2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfY2hpbGQoaXRlbSkpOwotICAgIGdfYXNz
ZXJ0KHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2VuYWJsZWQoaXRlbSkpOwotICAgIGdfYXNz
ZXJ0KCF3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9pc19zZWxlY3RlZChpdGVtKSk7CisgICAgZ19h
c3NlcnRfbnVsbCh3ZWJraXRfb3B0aW9uX21lbnVfaXRlbV9nZXRfdG9vbHRpcChpdGVtKSk7Cisg
ICAgZ19hc3NlcnRfZmFsc2Uod2Via2l0X29wdGlvbl9tZW51X2l0ZW1faXNfZ3JvdXBfbGFiZWwo
aXRlbSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25fbWVudV9pdGVtX2lzX2dy
b3VwX2NoaWxkKGl0ZW0pKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF9vcHRpb25fbWVudV9p
dGVtX2lzX2VuYWJsZWQoaXRlbSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF9vcHRpb25f
bWVudV9pdGVtX2lzX3NlbGVjdGVkKGl0ZW0pKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdE9wdGlv
bk1lbnVBY3RpdmF0ZShPcHRpb25NZW51VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTI0
MCwxNyArMjQwLDE3IEBAIHN0YXRpYyB2b2lkIHRlc3RPcHRpb25NZW51QWN0aXZhdGUoT3B0aW9u
TWVudVRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZp
bmlzaGVkKCk7CiAKICAgICB0ZXN0LT5jbGlja0F0UG9zaXRpb25BbmRXYWl0VW50aWxPcHRpb25N
ZW51U2hvd24oNSwgMTUpOwotICAgIGdfYXNzZXJ0KFdFQktJVF9JU19PUFRJT05fTUVOVSh0ZXN0
LT5tX21lbnUuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKFdFQktJVF9JU19PUFRJT05fTUVO
VSh0ZXN0LT5tX21lbnUuZ2V0KCkpKTsKICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X29wdGlv
bl9tZW51X2dldF9uX2l0ZW1zKHRlc3QtPm1fbWVudS5nZXQoKSksID09LCAzKTsKICAgICB0ZXN0
LT5hY3RpdmF0ZUl0ZW0oMSk7CiAgICAgYXV0byogcmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlw
dEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29tYm8nKS5z
ZWxlY3RlZEluZGV4IiwgbnVsbHB0cik7Ci0gICAgZ19hc3NlcnQocmVzdWx0KTsKKyAgICBnX2Fz
c2VydF9ub25udWxsKHJlc3VsdCk7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQoV2ViVmlld1Rlc3Q6
OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihyZXN1bHQpLCA9PSwgMSk7CiAKICAgICAvLyBXZSBz
aG91bGQgY2xvc2UgdGhlIG1lbnUgYWZ0ZXIgYWN0aXZhdGUsIGZ1cnRoZXIgYWN0aXZhdGVzIHdp
bGwgYmUgaWdub3JlZC4KICAgICB0ZXN0LT5hY3RpdmF0ZUl0ZW0oMik7CiAgICAgcmVzdWx0ID0g
dGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnY29tYm8nKS5zZWxlY3RlZEluZGV4IiwgbnVsbHB0cik7Ci0gICAgZ19hc3NlcnQo
cmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHJlc3VsdCk7CiAgICAgZ19hc3NlcnRfY21w
ZmxvYXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihyZXN1bHQpLCA9PSwg
MSk7CiAKICAgICB0ZXN0LT5jbG9zZSgpOwpAQCAtMjcwLDI1ICsyNzAsMjUgQEAgc3RhdGljIHZv
aWQgdGVzdE9wdGlvbk1lbnVTZWxlY3QoT3B0aW9uTWVudVRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiAgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAKICAgICB0ZXN0LT5jbGlj
a0F0UG9zaXRpb25BbmRXYWl0VW50aWxPcHRpb25NZW51U2hvd24oNSwgMTUpOwotICAgIGdfYXNz
ZXJ0KFdFQktJVF9JU19PUFRJT05fTUVOVSh0ZXN0LT5tX21lbnUuZ2V0KCkpKTsKKyAgICBnX2Fz
c2VydF90cnVlKFdFQktJVF9JU19PUFRJT05fTUVOVSh0ZXN0LT5tX21lbnUuZ2V0KCkpKTsKICAg
ICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X29wdGlvbl9tZW51X2dldF9uX2l0ZW1zKHRlc3QtPm1f
bWVudS5nZXQoKSksID09LCAzKTsKIAogICAgIC8vIFNlbGVjdCBpdGVtIGNoYW5nZXMgdGhlIGNv
bWJvIHRleHQsIGJ1dCBub3QgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtLgogICAgIHRlc3Qt
PnNlbGVjdEl0ZW0oMik7CiAgICAgYXV0byogcmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFu
ZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29tYm8nKS5zZWxl
Y3RlZEluZGV4IiwgbnVsbHB0cik7Ci0gICAgZ19hc3NlcnQocmVzdWx0KTsKKyAgICBnX2Fzc2Vy
dF9ub25udWxsKHJlc3VsdCk7CiAgICAgZ19hc3NlcnRfY21wZmxvYXQoV2ViVmlld1Rlc3Q6Omph
dmFzY3JpcHRSZXN1bHRUb051bWJlcihyZXN1bHQpLCA9PSwgMCk7CiAKICAgICAvLyBJdCBjYW4g
YmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLgogICAgIHRlc3QtPnNlbGVjdEl0ZW0oMSk7CiAgICAg
cmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29tYm8nKS5zZWxlY3RlZEluZGV4IiwgbnVsbHB0cik7Ci0gICAg
Z19hc3NlcnQocmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHJlc3VsdCk7CiAgICAgZ19h
c3NlcnRfY21wZmxvYXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihyZXN1
bHQpLCA9PSwgMCk7CiAKICAgICAvLyBBbmQgY2xvc2luZyB0aGUgbWVudSBhY3RpdmF0ZXMgdGhl
IGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtLgogICAgIHRlc3QtPmNsb3NlKCk7CiAgICAgcmVzdWx0
ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29tYm8nKS5zZWxlY3RlZEluZGV4IiwgbnVsbHB0cik7Ci0gICAgZ19hc3Nl
cnQocmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub25udWxsKHJlc3VsdCk7CiAgICAgZ19hc3NlcnRf
Y21wZmxvYXQoV2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRUb051bWJlcihyZXN1bHQpLCA9
PSwgMSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R3RrL1Rlc3RQcmludGluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0
ay9UZXN0UHJpbnRpbmcuY3BwCmluZGV4IDcxMGFlOWM2YmNiZWIzNjdhYmE1NjA1ODg2NTc1OTI1
ZTllMmRlZjEuLjEyMmJmOTY5ZmE4MDExMDhlNzdlZGFhYTdkNWU5MzhjOTRhOTlmM2IgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RQcmludGluZy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFByaW50aW5n
LmNwcApAQCAtMzEsOCArMzEsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0UHJpbnRPcGVyYXRpb25Qcmlu
dFNldHRpbmdzKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIEdSZWZQdHI8
V2ViS2l0UHJpbnRPcGVyYXRpb24+IHByaW50T3BlcmF0aW9uID0gYWRvcHRHUmVmKHdlYmtpdF9w
cmludF9vcGVyYXRpb25fbmV3KHRlc3QtPm1fd2ViVmlldykpOwogICAgIHRlc3QtPmFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocHJpbnRPcGVyYXRpb24uZ2V0
KCkpKTsKIAotICAgIGdfYXNzZXJ0KCF3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX2dldF9wcmludF9z
ZXR0aW5ncyhwcmludE9wZXJhdGlvbi5nZXQoKSkpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfcHJp
bnRfb3BlcmF0aW9uX2dldF9wYWdlX3NldHVwKHByaW50T3BlcmF0aW9uLmdldCgpKSk7CisgICAg
Z19hc3NlcnRfbnVsbCh3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX2dldF9wcmludF9zZXR0aW5ncyhw
cmludE9wZXJhdGlvbi5nZXQoKSkpOworICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3ByaW50X29w
ZXJhdGlvbl9nZXRfcGFnZV9zZXR1cChwcmludE9wZXJhdGlvbi5nZXQoKSkpOwogCiAgICAgR1Jl
ZlB0cjxHdGtQcmludFNldHRpbmdzPiBwcmludFNldHRpbmdzID0gYWRvcHRHUmVmKGd0a19wcmlu
dF9zZXR0aW5nc19uZXcoKSk7CiAgICAgdGVzdC0+YXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRl
c3RGaW5pc2hlcyhHX09CSkVDVChwcmludFNldHRpbmdzLmdldCgpKSk7CkBAIC00MywxOSArNDMs
MTkgQEAgc3RhdGljIHZvaWQgdGVzdFByaW50T3BlcmF0aW9uUHJpbnRTZXR0aW5ncyhXZWJWaWV3
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICB3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX3Nl
dF9wcmludF9zZXR0aW5ncyhwcmludE9wZXJhdGlvbi5nZXQoKSwgcHJpbnRTZXR0aW5ncy5nZXQo
KSk7CiAgICAgd2Via2l0X3ByaW50X29wZXJhdGlvbl9zZXRfcGFnZV9zZXR1cChwcmludE9wZXJh
dGlvbi5nZXQoKSwgcGFnZVNldHVwLmdldCgpKTsKIAotICAgIGdfYXNzZXJ0KHdlYmtpdF9wcmlu
dF9vcGVyYXRpb25fZ2V0X3ByaW50X3NldHRpbmdzKHByaW50T3BlcmF0aW9uLmdldCgpKSA9PSBw
cmludFNldHRpbmdzLmdldCgpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfcHJpbnRfb3BlcmF0aW9u
X2dldF9wYWdlX3NldHVwKHByaW50T3BlcmF0aW9uLmdldCgpKSA9PSBwYWdlU2V0dXAuZ2V0KCkp
OworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3ByaW50X29wZXJhdGlvbl9nZXRfcHJpbnRfc2V0
dGluZ3MocHJpbnRPcGVyYXRpb24uZ2V0KCkpID09IHByaW50U2V0dGluZ3MuZ2V0KCkpOworICAg
IGdfYXNzZXJ0X3RydWUod2Via2l0X3ByaW50X29wZXJhdGlvbl9nZXRfcGFnZV9zZXR1cChwcmlu
dE9wZXJhdGlvbi5nZXQoKSkgPT0gcGFnZVNldHVwLmdldCgpKTsKIH0KIAogc3RhdGljIGdib29s
ZWFuIHdlYlZpZXdQcmludENhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdFBy
aW50T3BlcmF0aW9uKiBwcmludE9wZXJhdGlvbiwgV2ViVmlld1Rlc3QqIHRlc3QpCiB7Ci0gICAg
Z19hc3NlcnQod2ViVmlldyA9PSB0ZXN0LT5tX3dlYlZpZXcpOworICAgIGdfYXNzZXJ0X3RydWUo
d2ViVmlldyA9PSB0ZXN0LT5tX3dlYlZpZXcpOwogCi0gICAgZ19hc3NlcnQoV0VCS0lUX0lTX1BS
SU5UX09QRVJBVElPTihwcmludE9wZXJhdGlvbikpOworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lU
X0lTX1BSSU5UX09QRVJBVElPTihwcmludE9wZXJhdGlvbikpOwogICAgIHRlc3QtPmFzc2VydE9i
amVjdElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocHJpbnRPcGVyYXRpb24pKTsK
IAotICAgIGdfYXNzZXJ0KCF3ZWJraXRfcHJpbnRfb3BlcmF0aW9uX2dldF9wcmludF9zZXR0aW5n
cyhwcmludE9wZXJhdGlvbikpOwotICAgIGdfYXNzZXJ0KCF3ZWJraXRfcHJpbnRfb3BlcmF0aW9u
X2dldF9wYWdlX3NldHVwKHByaW50T3BlcmF0aW9uKSk7CisgICAgZ19hc3NlcnRfbnVsbCh3ZWJr
aXRfcHJpbnRfb3BlcmF0aW9uX2dldF9wcmludF9zZXR0aW5ncyhwcmludE9wZXJhdGlvbikpOwor
ICAgIGdfYXNzZXJ0X251bGwod2Via2l0X3ByaW50X29wZXJhdGlvbl9nZXRfcGFnZV9zZXR1cChw
cmludE9wZXJhdGlvbikpOwogCiAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29w
KTsKIApAQCAtOTgsOSArOTgsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBwcmludEZh
aWxlZENhbGxiYWNrKFdlYktpdFByaW50T3BlcmF0aW9uKiwgR0Vycm9yKiBlcnJvciwgUHJpbnRU
ZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAgZ19hc3NlcnQodGVzdC0+bV9leHBlY3RlZEVycm9y
KTsKLSAgICAgICAgZ19hc3NlcnQoZXJyb3IpOwotICAgICAgICBnX2Fzc2VydChnX2Vycm9yX21h
dGNoZXMoZXJyb3IsIFdFQktJVF9QUklOVF9FUlJPUiwgdGVzdC0+bV9leHBlY3RlZEVycm9yKSk7
CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9leHBlY3RlZEVycm9yLCAhPSwgMCk7
CisgICAgICAgIGdfYXNzZXJ0X25vbm51bGwoZXJyb3IpOworICAgICAgICBnX2Fzc2VydF9lcnJv
cihlcnJvciwgV0VCS0lUX1BSSU5UX0VSUk9SLCB0ZXN0LT5tX2V4cGVjdGVkRXJyb3IpOwogICAg
IH0KIAogICAgIFByaW50VGVzdCgpCkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RhdGljIHZvaWQgdGVz
dFByaW50T3BlcmF0aW9uUHJpbnQoUHJpbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAg
IEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfaW5m
byhvdXRwdXRGaWxlLmdldCgpLAogICAgICAgICBHX0ZJTEVfQVRUUklCVVRFX1NUQU5EQVJEX1NJ
WkUgIiwiIEdfRklMRV9BVFRSSUJVVEVfU1RBTkRBUkRfQ09OVEVOVF9UWVBFLAogICAgICAgICBz
dGF0aWNfY2FzdDxHRmlsZVF1ZXJ5SW5mb0ZsYWdzPigwKSwgMCwgMCkpOwotICAgIGdfYXNzZXJ0
KGZpbGVJbmZvLmdldCgpKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGZpbGVJbmZvLmdldCgpKTsK
ICAgICBnX2Fzc2VydF9jbXBpbnQoZ19maWxlX2luZm9fZ2V0X3NpemUoZmlsZUluZm8uZ2V0KCkp
LCA+LCAwKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoZ19maWxlX2luZm9fZ2V0X2NvbnRlbnRfdHlw
ZShmaWxlSW5mby5nZXQoKSksID09LCAiYXBwbGljYXRpb24vcGRmIik7CiAKQEAgLTI2Myw3ICsy
NjMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtX3ByaW50RmluaXNoZWQgPSB0cnVlOwog
ICAgICAgICBtX3ByaW50T3BlcmF0aW9uID0gbnVsbHB0cjsKLSAgICAgICAgZ19hc3NlcnQobV9v
dXRwdXRGaWxlKTsKKyAgICAgICAgZ19hc3NlcnRfbm9ubnVsbChtX291dHB1dEZpbGUpOwogICAg
ICAgICBnX2ZpbGVfZGVsZXRlKG1fb3V0cHV0RmlsZS5nZXQoKSwgMCwgMCk7CiAgICAgICAgIG1f
b3V0cHV0RmlsZSA9IG51bGxwdHI7CiAgICAgICAgIGlmIChtX3dlYlZpZXdDbG9zZWQpCkBAIC0z
MDUsNyArMzA1LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgdXBkYXRlQ2FsbGJhY2so
V2ViS2l0UHJpbnRDdXN0b21XaWRnZXQqIGN1c3RvbVdpZGdldCwgR3RrUGFnZVNldHVwKiwgR3Rr
UHJpbnRTZXR0aW5ncyosIFByaW50Q3VzdG9tV2lkZ2V0VGVzdCogdGVzdCkKICAgICB7Ci0gICAg
ICAgIGdfYXNzZXJ0KHRlc3QtPm1fd2lkZ2V0ID09IHdlYmtpdF9wcmludF9jdXN0b21fd2lkZ2V0
X2dldF93aWRnZXQoY3VzdG9tV2lkZ2V0KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+
bV93aWRnZXQgPT0gd2Via2l0X3ByaW50X2N1c3RvbV93aWRnZXRfZ2V0X3dpZGdldChjdXN0b21X
aWRnZXQpKTsKIAogICAgICAgICB0ZXN0LT5tX3VwZGF0ZUVtaXR0ZWQgPSB0cnVlOwogICAgICAg
ICAvLyBXb3VsZCBiZSBuaWNlIHRvIGF2b2lkIHRoZSAxIHNlY29uZCB0aW1lb3V0IGhlcmUgLSBi
dXQgSSBkaWRuJ3QgZm91bmQKQEAgLTMxNSw4ICszMTUsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgdm9pZCB3aWRnZXRSZWFsaXplQ2FsbGJhY2soR3RrV2lkZ2V0KiB3aWRnZXQsIFByaW50Q3Vz
dG9tV2lkZ2V0VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KEdUS19JU19MQUJF
TCh3aWRnZXQpKTsKLSAgICAgICAgZ19hc3NlcnQoIWdfc3RyY21wMChndGtfbGFiZWxfZ2V0X3Rl
eHQoR1RLX0xBQkVMKHdpZGdldCkpLCAiTGFiZWwiKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUo
R1RLX0lTX0xBQkVMKHdpZGdldCkpOworICAgICAgICBnX2Fzc2VydF9jbXBzdHIoZ3RrX2xhYmVs
X2dldF90ZXh0KEdUS19MQUJFTCh3aWRnZXQpKSwgPT0sICJMYWJlbCIpOwogCiAgICAgICAgIHRl
c3QtPm1fd2lkZ2V0UmVhbGl6ZWQgPSB0cnVlOwogICAgICAgICB0ZXN0LT5zdGFydFByaW50aW5n
KCk7CkBAIC0zNTksNyArMzU5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBwcmludEZpbmlzaGVk
KCkKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0KG1fb3V0cHV0RmlsZSk7CisgICAgICAgIGdfYXNz
ZXJ0X25vbm51bGwobV9vdXRwdXRGaWxlKTsKICAgICAgICAgZ19maWxlX2RlbGV0ZShtX291dHB1
dEZpbGUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOwogICAgICAgICBtX291dHB1dEZpbGUgPSBu
dWxscHRyOwogICAgICAgICBnX21haW5fbG9vcF9xdWl0KG1fbWFpbkxvb3ApOwpAQCAtMzY4LDcg
KzM2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZVdlYktpdFByaW50T3BlcmF0aW9uKCkK
ICAgICB7CiAgICAgICAgIG1fcHJpbnRPcGVyYXRpb24gPSBhZG9wdEdSZWYod2Via2l0X3ByaW50
X29wZXJhdGlvbl9uZXcobV93ZWJWaWV3KSk7Ci0gICAgICAgIGdfYXNzZXJ0KG1fcHJpbnRPcGVy
YXRpb24pOworICAgICAgICBnX2Fzc2VydF9ub25udWxsKG1fcHJpbnRPcGVyYXRpb24pOwogICAg
ICAgICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKG1fcHJp
bnRPcGVyYXRpb24uZ2V0KCkpKTsKIAogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fcHJpbnRP
cGVyYXRpb24uZ2V0KCksICJjcmVhdGUtY3VzdG9tLXdpZGdldCIsIEdfQ0FMTEJBQ0soY3JlYXRl
Q3VzdG9tV2lkZ2V0Q2FsbGJhY2spLCB0aGlzKTsKQEAgLTQ0NCwxMSArNDQ0LDExIEBAIHN0YXRp
YyB2b2lkIHRlc3RQcmludEN1c3RvbVdpZGdldChQcmludEN1c3RvbVdpZGdldFRlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAKICAgICB0ZXN0LT5vcGVuRGlhbG9nTW92ZVRocm91Z2hJdEFuZFdh
aXRVbnRpbENsb3NlZCgpOwogCi0gICAgZ19hc3NlcnQodGVzdC0+bV9yZXNwb25zZSA9PSBXRUJL
SVRfUFJJTlRfT1BFUkFUSU9OX1JFU1BPTlNFX1BSSU5UKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5t
X2NyZWF0ZUVtaXR0ZWQpOwotICAgIGdfYXNzZXJ0KHRlc3QtPm1fd2lkZ2V0UmVhbGl6ZWQpOwot
ICAgIGdfYXNzZXJ0KHRlc3QtPm1fdXBkYXRlRW1pdHRlZCk7Ci0gICAgZ19hc3NlcnQodGVzdC0+
bV9hcHBseUVtaXR0ZWQpOworICAgIGdfYXNzZXJ0X2NtcHVpbnQodGVzdC0+bV9yZXNwb25zZSwg
PT0sIFdFQktJVF9QUklOVF9PUEVSQVRJT05fUkVTUE9OU0VfUFJJTlQpOworICAgIGdfYXNzZXJ0
X3RydWUodGVzdC0+bV9jcmVhdGVFbWl0dGVkKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1f
d2lkZ2V0UmVhbGl6ZWQpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+bV91cGRhdGVFbWl0dGVk
KTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fYXBwbHlFbWl0dGVkKTsKIH0KICNlbmRpZiAv
LyBIQVZFX0dUS19VTklYX1BSSU5USU5HCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJLaXRBY2Nlc3NpYmlsaXR5LmNwcApp
bmRleCA5YzZiYmRkN2MzZWQzNzY4OGJkOTVhOTIyNzZiN2RlNjc2NGRiYzA5Li41MTA0ODcyMzk5
YzBjODQwOTkxNzc1MTJjYzNkNGNjNzJjNTliYzNiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0QWNjZXNzaWJpbGl0eS5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYktpdEFjY2Vzc2liaWxp
dHkuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgc3RhdGljIHZvaWQgc3RhcnRUZXN0U2VydmVyKCkK
IAogc3RhdGljIHZvaWQgY2hlY2tBdHNwaUFjY2Vzc2libGUoQXRzcGlBY2Nlc3NpYmxlKiBhY2Nl
c3NpYmxlLCBjb25zdCBjaGFyKiB0YXJnZXROYW1lLCBBdHNwaVJvbGUgdGFyZ2V0Um9sZSkKIHsK
LSAgICBnX2Fzc2VydChBVFNQSV9JU19BQ0NFU1NJQkxFKGFjY2Vzc2libGUpKTsKKyAgICBnX2Fz
c2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUoYWNjZXNzaWJsZSkpOwogCiAgICAgR1VuaXF1
ZVB0cjxjaGFyPiBuYW1lKGF0c3BpX2FjY2Vzc2libGVfZ2V0X25hbWUoYWNjZXNzaWJsZSwgMCkp
OwogICAgIGdfYXNzZXJ0X2NtcHN0cih0YXJnZXROYW1lLCA9PSwgbmFtZS5nZXQoKSk7CkBAIC0x
NTAsNTggKzE1MCw1OCBAQCBzdGF0aWMgdm9pZCB0ZXN0QXRzcGlCYXNpY0hpZXJhcmNoeShXZWJW
aWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIHsKICAgICAvLyBUaGUgdGVzdCBzZXJ2ZXIn
cyBhY2Nlc3NpYmlsaXR5IG9iamVjdCAoVUkgUHJvY2VzcykuCiAgICAgR1JlZlB0cjxBdHNwaUFj
Y2Vzc2libGU+IHRlc3RTZXJ2ZXJBcHAgPSBmaW5kVGVzdFNlcnZlckFwcGxpY2F0aW9uKCk7Ci0g
ICAgZ19hc3NlcnQoQVRTUElfSVNfQUNDRVNTSUJMRSh0ZXN0U2VydmVyQXBwLmdldCgpKSk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKHRlc3RTZXJ2ZXJBcHAuZ2V0KCkp
KTsKICAgICBjaGVja0F0c3BpQWNjZXNzaWJsZSh0ZXN0U2VydmVyQXBwLmdldCgpLCAiQWNjZXNz
aWJpbGl0eVRlc3RTZXJ2ZXIiLCBBVFNQSV9ST0xFX0FQUExJQ0FUSU9OKTsKIAogICAgIC8vIFRo
ZSBtYWluIHdpbmRvdydzIGFjY2Vzc2liaWxpdHkgb2JqZWN0IChVSSBQcm9jZXNzKS4KICAgICBH
UmVmUHRyPEF0c3BpQWNjZXNzaWJsZT4gY3VycmVudFBhcmVudCA9IHRlc3RTZXJ2ZXJBcHA7CiAg
ICAgR1JlZlB0cjxBdHNwaUFjY2Vzc2libGU+IGN1cnJlbnRDaGlsZCA9IGFkb3B0R1JlZihhdHNw
aV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9hdF9pbmRleChjdXJyZW50UGFyZW50LmdldCgpLCAwLCAw
KSk7Ci0gICAgZ19hc3NlcnQoQVRTUElfSVNfQUNDRVNTSUJMRShjdXJyZW50Q2hpbGQuZ2V0KCkp
KTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUoY3VycmVudENoaWxkLmdl
dCgpKSk7CiAgICAgY2hlY2tBdHNwaUFjY2Vzc2libGUoY3VycmVudENoaWxkLmdldCgpLCAiIiwg
QVRTUElfUk9MRV9GUkFNRSk7CiAKICAgICAvLyBUaGUgV2ViVmlldydzIGFjY2Vzc2liaWxpdHkg
b2JqZWN0IChVSSBQcm9jZXNzKS4KICAgICBjdXJyZW50UGFyZW50ID0gY3VycmVudENoaWxkOwog
ICAgIGN1cnJlbnRDaGlsZCA9IGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2F0X2luZGV4KGN1
cnJlbnRQYXJlbnQuZ2V0KCksIDAsIDApOwotICAgIGdfYXNzZXJ0KEFUU1BJX0lTX0FDQ0VTU0lC
TEUoY3VycmVudENoaWxkLmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19BQ0NF
U1NJQkxFKGN1cnJlbnRDaGlsZC5nZXQoKSkpOwogICAgIGNoZWNrQXRzcGlBY2Nlc3NpYmxlKGN1
cnJlbnRDaGlsZC5nZXQoKSwgIiIsIEFUU1BJX1JPTEVfRklMTEVSKTsKIAogICAgIC8vIFRoZSBX
ZWJQYWdlJ3MgYWNjZXNzaWJpbGl0eSBvYmplY3QgKFdlYiBQcm9jZXNzKS4KICAgICBjdXJyZW50
UGFyZW50ID0gY3VycmVudENoaWxkOwogICAgIGN1cnJlbnRDaGlsZCA9IGF0c3BpX2FjY2Vzc2li
bGVfZ2V0X2NoaWxkX2F0X2luZGV4KGN1cnJlbnRQYXJlbnQuZ2V0KCksIDAsIDApOwotICAgIGdf
YXNzZXJ0KEFUU1BJX0lTX0FDQ0VTU0lCTEUoY3VycmVudENoaWxkLmdldCgpKSk7CisgICAgZ19h
c3NlcnRfdHJ1ZShBVFNQSV9JU19BQ0NFU1NJQkxFKGN1cnJlbnRDaGlsZC5nZXQoKSkpOwogICAg
IGNoZWNrQXRzcGlBY2Nlc3NpYmxlKGN1cnJlbnRDaGlsZC5nZXQoKSwgIiIsIEFUU1BJX1JPTEVf
RklMTEVSKTsKIAogICAgIC8vIEhUTUwgcm9vdCBlbGVtZW50J3MgYWNjZXNzaWJsZSBlbGVtZW50
IChXZWIgUHJvY2VzcykuCiAgICAgY3VycmVudFBhcmVudCA9IGN1cnJlbnRDaGlsZDsKICAgICBj
dXJyZW50Q2hpbGQgPSBhdHNwaV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9hdF9pbmRleChjdXJyZW50
UGFyZW50LmdldCgpLCAwLCAwKTsKLSAgICBnX2Fzc2VydChBVFNQSV9JU19BQ0NFU1NJQkxFKGN1
cnJlbnRDaGlsZC5nZXQoKSkpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNTSUJM
RShjdXJyZW50Q2hpbGQuZ2V0KCkpKTsKIAogICAgIC8vIEhUTUwgYm9keSdzIGFjY2Vzc2libGUg
ZWxlbWVudCAoV2ViIFByb2Nlc3MpLgogICAgIGN1cnJlbnRQYXJlbnQgPSBjdXJyZW50Q2hpbGQ7
CiAgICAgY3VycmVudENoaWxkID0gYXRzcGlfYWNjZXNzaWJsZV9nZXRfY2hpbGRfYXRfaW5kZXgo
Y3VycmVudFBhcmVudC5nZXQoKSwgMCwgMCk7Ci0gICAgZ19hc3NlcnQoQVRTUElfSVNfQUNDRVNT
SUJMRShjdXJyZW50Q2hpbGQuZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF90cnVlKEFUU1BJX0lTX0FD
Q0VTU0lCTEUoY3VycmVudENoaWxkLmdldCgpKSk7CiAgICAgY2hlY2tBdHNwaUFjY2Vzc2libGUo
Y3VycmVudENoaWxkLmdldCgpLCAiIiwgQVRTUElfUk9MRV9ET0NVTUVOVF9XRUIpOwogCiAgICAg
Ly8gSFRNTCBIMSdzIGFjY2Vzc2libGUgZWxlbWVudCAoV2ViIFByb2Nlc3MpLgogICAgIGN1cnJl
bnRQYXJlbnQgPSBjdXJyZW50Q2hpbGQ7CiAgICAgY3VycmVudENoaWxkID0gYXRzcGlfYWNjZXNz
aWJsZV9nZXRfY2hpbGRfYXRfaW5kZXgoY3VycmVudFBhcmVudC5nZXQoKSwgMCwgMCk7Ci0gICAg
Z19hc3NlcnQoQVRTUElfSVNfQUNDRVNTSUJMRShjdXJyZW50Q2hpbGQuZ2V0KCkpKTsKKyAgICBn
X2Fzc2VydF90cnVlKEFUU1BJX0lTX0FDQ0VTU0lCTEUoY3VycmVudENoaWxkLmdldCgpKSk7CiAg
ICAgY2hlY2tBdHNwaUFjY2Vzc2libGUoY3VycmVudENoaWxkLmdldCgpLCAiVGhpcyBpcyBhIHRl
c3QiLCBBVFNQSV9ST0xFX0hFQURJTkcpOwogCiAgICAgLy8gSFRNTCBmaXJzdCBwYXJhZ3JhcGgn
cyBhY2Nlc3NpYmxlIGVsZW1lbnQgKFdlYiBQcm9jZXNzKS4KICAgICBjdXJyZW50Q2hpbGQgPSBh
dHNwaV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9hdF9pbmRleChjdXJyZW50UGFyZW50LmdldCgpLCAx
LCAwKTsKLSAgICBnX2Fzc2VydChBVFNQSV9JU19BQ0NFU1NJQkxFKGN1cnJlbnRDaGlsZC5nZXQo
KSkpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShjdXJyZW50Q2hpbGQu
Z2V0KCkpKTsKICAgICBjaGVja0F0c3BpQWNjZXNzaWJsZShjdXJyZW50Q2hpbGQuZ2V0KCksICIi
LCBBVFNQSV9ST0xFX1BBUkFHUkFQSCk7CiAKICAgICAvLyBIVE1MIHNlY29uZCBwYXJhZ3JhcGgn
cyBhY2Nlc3NpYmxlIGVsZW1lbnQgKFdlYiBQcm9jZXNzKS4KICAgICBjdXJyZW50Q2hpbGQgPSBh
dHNwaV9hY2Nlc3NpYmxlX2dldF9jaGlsZF9hdF9pbmRleChjdXJyZW50UGFyZW50LmdldCgpLCAy
LCAwKTsKLSAgICBnX2Fzc2VydChBVFNQSV9JU19BQ0NFU1NJQkxFKGN1cnJlbnRDaGlsZC5nZXQo
KSkpOworICAgIGdfYXNzZXJ0X3RydWUoQVRTUElfSVNfQUNDRVNTSUJMRShjdXJyZW50Q2hpbGQu
Z2V0KCkpKTsKICAgICBjaGVja0F0c3BpQWNjZXNzaWJsZShjdXJyZW50Q2hpbGQuZ2V0KCksICIi
LCBBVFNQSV9ST0xFX1BBUkFHUkFQSCk7CiAKICAgICAvLyBIVE1MIGxpbmsncyBhY2Nlc3NpYmxl
IGVsZW1lbnQgKFdlYiBQcm9jZXNzKS4KICAgICBjdXJyZW50UGFyZW50ID0gY3VycmVudENoaWxk
OwogICAgIGN1cnJlbnRDaGlsZCA9IGF0c3BpX2FjY2Vzc2libGVfZ2V0X2NoaWxkX2F0X2luZGV4
KGN1cnJlbnRQYXJlbnQuZ2V0KCksIDAsIDApOwotICAgIGdfYXNzZXJ0KEFUU1BJX0lTX0FDQ0VT
U0lCTEUoY3VycmVudENoaWxkLmdldCgpKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShBVFNQSV9JU19B
Q0NFU1NJQkxFKGN1cnJlbnRDaGlsZC5nZXQoKSkpOwogICAgIGNoZWNrQXRzcGlBY2Nlc3NpYmxl
KGN1cnJlbnRDaGlsZC5nZXQoKSwgImEgbGluayIsIEFUU1BJX1JPTEVfTElOSyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJLaXRW
ZXJzaW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R3RrL1Rlc3RXZWJL
aXRWZXJzaW9uLmNwcAppbmRleCBlNzQ3ZmY5NjIyMDBkYmQyNDQ5OTNmNTIxZDJkMTYzYzEyYWQy
M2MzLi5hYTM4YTE1MDg0MGM1NWNkM2I1NjVkMGFhYzE1YTliMTQyNDM1ZGJmIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEd0ay9UZXN0V2ViS2l0VmVyc2lvbi5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsvVGVzdFdlYktpdFZl
cnNpb24uY3BwCkBAIC0zMywxMCArMzMsMTAgQEAgc3RhdGljIHZvaWQgdGVzdFdlYktpdFZlcnNp
b24oVGVzdCosIGdjb25zdHBvaW50ZXIpCiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJLaXRDaGVja1Zl
cnNpb24oVGVzdCosIGdjb25zdHBvaW50ZXIpCiB7Ci0gICAgZ19hc3NlcnQoV0VCS0lUX0NIRUNL
X1ZFUlNJT04oV0VCS0lUX01BSk9SX1ZFUlNJT04sIFdFQktJVF9NSU5PUl9WRVJTSU9OLCBXRUJL
SVRfTUlDUk9fVkVSU0lPTikpOwotICAgIGdfYXNzZXJ0KCFXRUJLSVRfQ0hFQ0tfVkVSU0lPTihX
RUJLSVRfTUFKT1JfVkVSU0lPTiArIDEsIFdFQktJVF9NSU5PUl9WRVJTSU9OLCBXRUJLSVRfTUlD
Uk9fVkVSU0lPTikpOwotICAgIGdfYXNzZXJ0KCFXRUJLSVRfQ0hFQ0tfVkVSU0lPTihXRUJLSVRf
TUFKT1JfVkVSU0lPTiwgV0VCS0lUX01JTk9SX1ZFUlNJT04gKyAxLCBXRUJLSVRfTUlDUk9fVkVS
U0lPTikpOwotICAgIGdfYXNzZXJ0KCFXRUJLSVRfQ0hFQ0tfVkVSU0lPTihXRUJLSVRfTUFKT1Jf
VkVSU0lPTiwgV0VCS0lUX01JTk9SX1ZFUlNJT04sIFdFQktJVF9NSUNST19WRVJTSU9OICsgMSkp
OworICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lUX0NIRUNLX1ZFUlNJT04oV0VCS0lUX01BSk9SX1ZF
UlNJT04sIFdFQktJVF9NSU5PUl9WRVJTSU9OLCBXRUJLSVRfTUlDUk9fVkVSU0lPTikpOworICAg
IGdfYXNzZXJ0X2ZhbHNlKFdFQktJVF9DSEVDS19WRVJTSU9OKFdFQktJVF9NQUpPUl9WRVJTSU9O
ICsgMSwgV0VCS0lUX01JTk9SX1ZFUlNJT04sIFdFQktJVF9NSUNST19WRVJTSU9OKSk7CisgICAg
Z19hc3NlcnRfZmFsc2UoV0VCS0lUX0NIRUNLX1ZFUlNJT04oV0VCS0lUX01BSk9SX1ZFUlNJT04s
IFdFQktJVF9NSU5PUl9WRVJTSU9OICsgMSwgV0VCS0lUX01JQ1JPX1ZFUlNJT04pKTsKKyAgICBn
X2Fzc2VydF9mYWxzZShXRUJLSVRfQ0hFQ0tfVkVSU0lPTihXRUJLSVRfTUFKT1JfVkVSU0lPTiwg
V0VCS0lUX01JTk9SX1ZFUlNJT04sIFdFQktJVF9NSUNST19WRVJTSU9OICsgMSkpOwogfQogCiB2
b2lkIGJlZm9yZUFsbCgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEd0ay9UZXN0V2ViVmlld0VkaXRvci5jcHAKaW5kZXggODg3MTE5NTFkZjAzYjU1MDY1
OTZiZDMyODcwNTQ1NGVlZjM0Y2RlZS4uMGQwOWYwMmMyZTc4ODNmOWFkYjgwM2U3MTdmZGNhYzZk
NWJjNGJmMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHdGsv
VGVzdFdlYlZpZXdFZGl0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R3RrL1Rlc3RXZWJWaWV3RWRpdG9yLmNwcApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIHRlc3Qt
Pm1fY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kID0gd2Via2l0X3dlYl92aWV3X2Nhbl9leGVjdXRl
X2VkaXRpbmdfY29tbWFuZF9maW5pc2godGVzdC0+bV93ZWJWaWV3LCByZXN1bHQsICZlcnJvci5v
dXRQdHIoKSk7Ci0gICAgICAgIGdfYXNzZXJ0KCFlcnJvci5nZXQoKSk7CisgICAgICAgIGdfYXNz
ZXJ0X25vX2Vycm9yKGVycm9yLmdldCgpKTsKICAgICAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0
LT5tX21haW5Mb29wKTsKICAgICB9CiAKQEAgLTY3LDE3ICs2NywxNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKIAogICAgICAgICBpZiAoIXN0cmNtcChj
b21tYW5kLCBXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVCkpCi0gICAgICAgICAgICBnX2Fzc2Vy
dChtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCA9PSB3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX2N1
dF9hdmFpbGFibGUoZWRpdG9yU3RhdGUoKSkpOworICAgICAgICAgICAgZ19hc3NlcnRfY21waW50
KG1fY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kLCA9PSwgd2Via2l0X2VkaXRvcl9zdGF0ZV9pc19j
dXRfYXZhaWxhYmxlKGVkaXRvclN0YXRlKCkpKTsKICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChj
b21tYW5kLCBXRUJLSVRfRURJVElOR19DT01NQU5EX0NPUFkpKQotICAgICAgICAgICAgZ19hc3Nl
cnQobV9jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQgPT0gd2Via2l0X2VkaXRvcl9zdGF0ZV9pc19j
b3B5X2F2YWlsYWJsZShlZGl0b3JTdGF0ZSgpKSk7CisgICAgICAgICAgICBnX2Fzc2VydF9jbXBp
bnQobV9jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQsID09LCB3ZWJraXRfZWRpdG9yX3N0YXRlX2lz
X2NvcHlfYXZhaWxhYmxlKGVkaXRvclN0YXRlKCkpKTsKICAgICAgICAgZWxzZSBpZiAoIXN0cmNt
cChjb21tYW5kLCBXRUJLSVRfRURJVElOR19DT01NQU5EX1BBU1RFKSkKLSAgICAgICAgICAgIGdf
YXNzZXJ0KG1fY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kID09IHdlYmtpdF9lZGl0b3Jfc3RhdGVf
aXNfcGFzdGVfYXZhaWxhYmxlKGVkaXRvclN0YXRlKCkpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0
X2NtcGludChtX2NhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZCwgPT0sIHdlYmtpdF9lZGl0b3Jfc3Rh
dGVfaXNfcGFzdGVfYXZhaWxhYmxlKGVkaXRvclN0YXRlKCkpKTsKICAgICAgICAgLy8gRklYTUU6
IEZpZ3VyZSBvdXQgaG93IHRvIGFkZCB0ZXN0cyBmb3IgdW5kbyBhbmQgcmVkby4gSXQgd2lsbCBw
cm9iYWJseSByZXF1aXJlIHVzaW5nIHVzZXIKICAgICAgICAgLy8gc2NyaXB0cyB0byBtZXNzYWdl
IHRoZSBVSSBwcm9jZXNzIHdoZW4gdGhlIGNvbnRlbnQgaGFzIGJlZW4gYWx0ZXJlZC4KICAgICAg
ICAgZWxzZSBpZiAoIXN0cmNtcChjb21tYW5kLCBXRUJLSVRfRURJVElOR19DT01NQU5EX1VORE8p
KQotICAgICAgICAgICAgZ19hc3NlcnQobV9jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQgPT0gd2Vi
a2l0X2VkaXRvcl9zdGF0ZV9pc191bmRvX2F2YWlsYWJsZShlZGl0b3JTdGF0ZSgpKSk7CisgICAg
ICAgICAgICBnX2Fzc2VydF9jbXBpbnQobV9jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQsID09LCB3
ZWJraXRfZWRpdG9yX3N0YXRlX2lzX3VuZG9fYXZhaWxhYmxlKGVkaXRvclN0YXRlKCkpKTsKICAg
ICAgICAgZWxzZSBpZiAoIXN0cmNtcChjb21tYW5kLCBXRUJLSVRfRURJVElOR19DT01NQU5EX1JF
RE8pKQotICAgICAgICAgICAgZ19hc3NlcnQobV9jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQgPT0g
d2Via2l0X2VkaXRvcl9zdGF0ZV9pc19yZWRvX2F2YWlsYWJsZShlZGl0b3JTdGF0ZSgpKSk7Cisg
ICAgICAgICAgICBnX2Fzc2VydF9jbXBpbnQobV9jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQsID09
LCB3ZWJraXRfZWRpdG9yX3N0YXRlX2lzX3JlZG9fYXZhaWxhYmxlKGVkaXRvclN0YXRlKCkpKTsK
IAogICAgICAgICByZXR1cm4gbV9jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQ7CiAgICAgfQpAQCAt
MTA1LDggKzEwNSw4IEBAIHB1YmxpYzoKIAogICAgIGdjaGFyKiBjdXRTZWxlY3Rpb24oKQogICAg
IHsKLSAgICAgICAgZ19hc3NlcnQoY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElU
SU5HX0NPTU1BTkRfQ1VUKSk7Ci0gICAgICAgIGdfYXNzZXJ0KGNhbkV4ZWN1dGVFZGl0aW5nQ29t
bWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1BBU1RFKSk7CisgICAgICAgIGdfYXNzZXJ0X3Ry
dWUoY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUKSk7
CisgICAgICAgIGdfYXNzZXJ0X3RydWUoY2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9F
RElUSU5HX0NPTU1BTkRfUEFTVEUpKTsKIAogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0
ZV9lZGl0aW5nX2NvbW1hbmQobV93ZWJWaWV3LCBXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVCk7
CiAgICAgICAgIC8vIFRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cgd2hlbiB0aGUgc2VsZWN0aW9uIGhh
cyBiZWVuIGN1dCB0bwpAQCAtMTYyLDIwICsxNjIsMjAgQEAgc3RhdGljIGNvbnN0IGNoYXIqIHNl
bGVjdGVkU3BhbkhUTUxGb3JtYXQgPQogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JDdXRD
b3B5UGFzdGVOb25FZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewog
ICAgIC8vIE5vdGhpbmcgbG9hZGVkIHlldC4KLSAgICBnX2Fzc2VydCghdGVzdC0+Y2FuRXhlY3V0
ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ1VUKSk7Ci0gICAgZ19hc3Nl
cnQoIXRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5E
X0NPUFkpKTsKLSAgICBnX2Fzc2VydCghdGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdF
QktJVF9FRElUSU5HX0NPTU1BTkRfUEFTVEUpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5j
YW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DVVQpKTsKKyAg
ICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VE
SVRJTkdfQ09NTUFORF9DT1BZKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+Y2FuRXhlY3V0
ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfUEFTVEUpKTsKIAogICAgIEdV
bmlxdWVQdHI8Y2hhcj4gc2VsZWN0ZWRTcGFuSFRNTChnX3N0cmR1cF9wcmludGYoc2VsZWN0ZWRT
cGFuSFRNTEZvcm1hdCwgImZhbHNlIikpOwogICAgIHRlc3QtPmxvYWRIdG1sKHNlbGVjdGVkU3Bh
bkhUTUwuZ2V0KCksIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgp
OwogICAgIHRlc3QtPmZsdXNoRWRpdG9yU3RhdGUoKTsKIAotICAgIGdfYXNzZXJ0KHRlc3QtPmNh
bkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX0NPUFkpKTsKKyAg
ICBnX2Fzc2VydF90cnVlKHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJ
VElOR19DT01NQU5EX0NPUFkpKTsKICAgICAvLyBJdCdzIG5vdCBwb3NzaWJsZSB0byBjdXQgYW5k
IHBhc3RlIHdoZW4gY29udGVudCBpcyBub3QgZWRpdGFibGUKICAgICAvLyBldmVuIGlmIHRoZXJl
J3MgYSBzZWxlY3Rpb24uCi0gICAgZ19hc3NlcnQoIXRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29t
bWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVCkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5j
YW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9QQVNURSkpOwor
ICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRf
RURJVElOR19DT01NQU5EX0NVVCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmNhbkV4ZWN1
dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1BBU1RFKSk7CiAKICAgICB0
ZXN0LT5jb3B5Q2xpcGJvYXJkKCk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjbGlwYm9hcmRUZXh0
KGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4dCh0ZXN0LT5tX2NsaXBib2FyZCkpOwpAQCAtMTg1
LDEzICsxODUsMTMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JDdXRDb3B5UGFzdGVO
b25FZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2kKIHN0YXRpYyB2b2lkIHRlc3RX
ZWJWaWV3RWRpdG9yQ3V0Q29weVBhc3RlRWRpdGFibGUoRWRpdG9yVGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKIHsKICAgICAvLyBOb3RoaW5nIGxvYWRlZCB5ZXQuCi0gICAgZ19hc3NlcnQoIXRl
c3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVCkp
OwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VE
SVRJTkdfQ09NTUFORF9DT1BZKSk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPmNhbkV4ZWN1dGVFZGl0
aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1BBU1RFKSk7CisgICAgZ19hc3NlcnRf
ZmFsc2UodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1B
TkRfQ1VUKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21t
YW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRfQ09QWSkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRl
c3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1BBU1RF
KSk7CiAKLSAgICBnX2Fzc2VydCghdGVzdC0+aXNFZGl0YWJsZSgpKTsKKyAgICBnX2Fzc2VydF9m
YWxzZSh0ZXN0LT5pc0VkaXRhYmxlKCkpOwogICAgIHRlc3QtPnNldEVkaXRhYmxlKHRydWUpOwot
ICAgIGdfYXNzZXJ0KHRlc3QtPmlzRWRpdGFibGUoKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0
LT5pc0VkaXRhYmxlKCkpOwogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzZWxlY3RlZFNwYW5IVE1M
KGdfc3RyZHVwX3ByaW50ZihzZWxlY3RlZFNwYW5IVE1MRm9ybWF0LCAiZmFsc2UiKSk7CiAgICAg
dGVzdC0+bG9hZEh0bWwoc2VsZWN0ZWRTcGFuSFRNTC5nZXQoKSwgbnVsbHB0cik7CkBAIC0xOTks
OSArMTk5LDkgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JDdXRDb3B5UGFzdGVFZGl0
YWJsZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGUKICAgICB0ZXN0LT5mbHVzaEVkaXRv
clN0YXRlKCk7CiAKICAgICAvLyBUaGVyZSdzIGEgc2VsZWN0aW9uLgotICAgIGdfYXNzZXJ0KHRl
c3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX0NVVCkp
OwotICAgIGdfYXNzZXJ0KHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJ
VElOR19DT01NQU5EX0NPUFkpKTsKLSAgICBnX2Fzc2VydCh0ZXN0LT5jYW5FeGVjdXRlRWRpdGlu
Z0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9QQVNURSkpOworICAgIGdfYXNzZXJ0X3Ry
dWUodGVzdC0+Y2FuRXhlY3V0ZUVkaXRpbmdDb21tYW5kKFdFQktJVF9FRElUSU5HX0NPTU1BTkRf
Q1VUKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQo
V0VCS0lUX0VESVRJTkdfQ09NTUFORF9DT1BZKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5j
YW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9QQVNURSkpOwog
CiAgICAgdGVzdC0+Y29weUNsaXBib2FyZCgpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY2xpcGJv
YXJkVGV4dChndGtfY2xpcGJvYXJkX3dhaXRfZm9yX3RleHQodGVzdC0+bV9jbGlwYm9hcmQpKTsK
QEAgLTIxMCwxNCArMjEwLDE0IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RWRpdG9yQ3V0Q29w
eVBhc3RlRWRpdGFibGUoRWRpdG9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlCiAKIHN0YXRpYyB2
b2lkIHRlc3RXZWJWaWV3RWRpdG9yU2VsZWN0QWxsTm9uRWRpdGFibGUoRWRpdG9yVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKIHsKLSAgICBnX2Fzc2VydCh0ZXN0LT5jYW5FeGVjdXRlRWRpdGlu
Z0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9TRUxFQ1RfQUxMKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZSh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09N
TUFORF9TRUxFQ1RfQUxMKSk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNlbGVjdGVkU3BhbkhU
TUwoZ19zdHJkdXBfcHJpbnRmKHNlbGVjdGVkU3BhbkhUTUxGb3JtYXQsICJmYWxzZSIpKTsKICAg
ICB0ZXN0LT5sb2FkSHRtbChzZWxlY3RlZFNwYW5IVE1MLmdldCgpLCBudWxscHRyKTsKICAgICB0
ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICB0ZXN0LT5mbHVzaEVkaXRvclN0YXRl
KCk7CiAKLSAgICBnX2Fzc2VydCh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lU
X0VESVRJTkdfQ09NTUFORF9TRUxFQ1RfQUxMKSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5j
YW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9TRUxFQ1RfQUxM
KSk7CiAKICAgICB0ZXN0LT5jb3B5Q2xpcGJvYXJkKCk7CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBj
bGlwYm9hcmRUZXh0KGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4dCh0ZXN0LT5tX2NsaXBib2Fy
ZCkpOwpAQCAtMjM1LDE4ICsyMzUsMTggQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JT
ZWxlY3RBbGxOb25FZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGUKIAogc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JTZWxlY3RBbGxFZGl0YWJsZShFZGl0b3JUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQogewotICAgIGdfYXNzZXJ0KHRlc3QtPmNhbkV4ZWN1dGVFZGl0
aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX1NFTEVDVF9BTEwpKTsKKyAgICBnX2Fz
c2VydF90cnVlKHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19D
T01NQU5EX1NFTEVDVF9BTEwpKTsKIAotICAgIGdfYXNzZXJ0KCF0ZXN0LT5pc0VkaXRhYmxlKCkp
OworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmlzRWRpdGFibGUoKSk7CiAgICAgdGVzdC0+c2V0
RWRpdGFibGUodHJ1ZSk7Ci0gICAgZ19hc3NlcnQodGVzdC0+aXNFZGl0YWJsZSgpKTsKKyAgICBn
X2Fzc2VydF90cnVlKHRlc3QtPmlzRWRpdGFibGUoKSk7CiAKICAgICBHVW5pcXVlUHRyPGNoYXI+
IHNlbGVjdGVkU3BhbkhUTUwoZ19zdHJkdXBfcHJpbnRmKHNlbGVjdGVkU3BhbkhUTUxGb3JtYXQs
ICJmYWxzZSIpKTsKICAgICB0ZXN0LT5sb2FkSHRtbChzZWxlY3RlZFNwYW5IVE1MLmdldCgpLCBu
dWxscHRyKTsKICAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICB0ZXN0LT5m
bHVzaEVkaXRvclN0YXRlKCk7CiAKLSAgICBnX2Fzc2VydCh0ZXN0LT5jYW5FeGVjdXRlRWRpdGlu
Z0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9TRUxFQ1RfQUxMKSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZSh0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0NvbW1hbmQoV0VCS0lUX0VESVRJTkdfQ09N
TUFORF9TRUxFQ1RfQUxMKSk7CiAKICAgICB0ZXN0LT5jb3B5Q2xpcGJvYXJkKCk7CiAgICAgR1Vu
aXF1ZVB0cjxjaGFyPiBjbGlwYm9hcmRUZXh0KGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4dCh0
ZXN0LT5tX2NsaXBib2FyZCkpOwpAQCAtMjY1LDE2ICsyNjUsMTYgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYlZpZXdFZGl0b3JTZWxlY3RBbGxFZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0LCBnY29uc3Rw
b2ludGVyKQogc3RhdGljIHZvaWQgbG9hZENvbnRlbnRzQW5kVHJ5VG9DdXRTZWxlY3Rpb24oRWRp
dG9yVGVzdCogdGVzdCwgYm9vbCBjb250ZW50RWRpdGFibGUpCiB7CiAgICAgLy8gVmlldyBpcyBu
b3QgZWRpdGFibGUgYnkgZGVmYXVsdC4KLSAgICBnX2Fzc2VydCghdGVzdC0+aXNFZGl0YWJsZSgp
KTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5pc0VkaXRhYmxlKCkpOwogCiAgICAgR1VuaXF1
ZVB0cjxjaGFyPiBzZWxlY3RlZFNwYW5IVE1MKGdfc3RyZHVwX3ByaW50ZihzZWxlY3RlZFNwYW5I
VE1MRm9ybWF0LCBjb250ZW50RWRpdGFibGUgPyAidHJ1ZSIgOiAiZmFsc2UiKSk7CiAgICAgdGVz
dC0+bG9hZEh0bWwoc2VsZWN0ZWRTcGFuSFRNTC5nZXQoKSwgbnVsbHB0cik7CiAgICAgdGVzdC0+
d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CiAgICAgdGVzdC0+Zmx1c2hFZGl0b3JTdGF0ZSgpOwog
Ci0gICAgZ19hc3NlcnQoIXRlc3QtPmlzRWRpdGFibGUoKSk7CisgICAgZ19hc3NlcnRfZmFsc2Uo
dGVzdC0+aXNFZGl0YWJsZSgpKTsKICAgICB0ZXN0LT5zZXRFZGl0YWJsZSh0cnVlKTsKLSAgICBn
X2Fzc2VydCh0ZXN0LT5pc0VkaXRhYmxlKCkpOworICAgIGdfYXNzZXJ0X3RydWUodGVzdC0+aXNF
ZGl0YWJsZSgpKTsKIAogICAgIHRlc3QtPmZsdXNoRWRpdG9yU3RhdGUoKTsKIApAQCAtMjg0LDcg
KzI4NCw3IEBAIHN0YXRpYyB2b2lkIGxvYWRDb250ZW50c0FuZFRyeVRvQ3V0U2VsZWN0aW9uKEVk
aXRvclRlc3QqIHRlc3QsIGJvb2wgY29udGVudEVkaXRhCiAKICAgICAvLyBSZXNldCB0aGUgZWRp
dGFibGUgZm9yIG5leHQgdGVzdC4KICAgICB0ZXN0LT5zZXRFZGl0YWJsZShmYWxzZSk7Ci0gICAg
Z19hc3NlcnQoIXRlc3QtPmlzRWRpdGFibGUoKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+
aXNFZGl0YWJsZSgpKTsKIH0KIAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JOb25FZGl0
YWJsZShFZGl0b3JUZXN0KiB0ZXN0KQpAQCAtMjk0LDE1ICsyOTQsMTUgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdFZGl0b3JOb25FZGl0YWJsZShFZGl0b3JUZXN0KiB0ZXN0KQogICAgIHRlc3Qt
PndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOwogICAgIHRlc3QtPmZsdXNoRWRpdG9yU3RhdGUoKTsK
IAotICAgIGdfYXNzZXJ0KCF0ZXN0LT5pc0VkaXRhYmxlKCkpOworICAgIGdfYXNzZXJ0X2ZhbHNl
KHRlc3QtPmlzRWRpdGFibGUoKSk7CiAgICAgdGVzdC0+c2V0RWRpdGFibGUodHJ1ZSk7Ci0gICAg
Z19hc3NlcnQodGVzdC0+aXNFZGl0YWJsZSgpKTsKKyAgICBnX2Fzc2VydF90cnVlKHRlc3QtPmlz
RWRpdGFibGUoKSk7CiAgICAgdGVzdC0+c2V0RWRpdGFibGUoZmFsc2UpOwotICAgIGdfYXNzZXJ0
KCF0ZXN0LT5pc0VkaXRhYmxlKCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmlzRWRpdGFi
bGUoKSk7CiAKICAgICAvLyBDaGVjayBpZiB2aWV3IGlzIGluZGVlZCBub24tZWRpdGFibGUuCi0g
ICAgZ19hc3NlcnQoIXRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElO
R19DT01NQU5EX0NVVCkpOwotICAgIGdfYXNzZXJ0KCF0ZXN0LT5jYW5FeGVjdXRlRWRpdGluZ0Nv
bW1hbmQoV0VCS0lUX0VESVRJTkdfQ09NTUFORF9QQVNURSkpOworICAgIGdfYXNzZXJ0X2ZhbHNl
KHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChXRUJLSVRfRURJVElOR19DT01NQU5EX0NV
VCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHRlc3QtPmNhbkV4ZWN1dGVFZGl0aW5nQ29tbWFuZChX
RUJLSVRfRURJVElOR19DT01NQU5EX1BBU1RFKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RXZWJW
aWV3RWRpdG9yRWRpdGFibGUoRWRpdG9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTMx
MSwxMyArMzExLDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RWRpdG9yRWRpdGFibGUoRWRp
dG9yVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKIAogICAgIC8vIFJlc2V0IHRoZSBlZGl0YWJs
ZSBmb3IgbmV4dCB0ZXN0LgogICAgIHRlc3QtPnNldEVkaXRhYmxlKGZhbHNlKTsKLSAgICBnX2Fz
c2VydCghdGVzdC0+aXNFZGl0YWJsZSgpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0LT5pc0Vk
aXRhYmxlKCkpOwogCiAgICAgbG9hZENvbnRlbnRzQW5kVHJ5VG9DdXRTZWxlY3Rpb24odGVzdCwg
dHJ1ZSk7CiAKICAgICAvLyBSZXNldCB0aGUgZWRpdGFibGUgZm9yIG5leHQgdGVzdC4KICAgICB0
ZXN0LT5zZXRFZGl0YWJsZShmYWxzZSk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPmlzRWRpdGFibGUo
KSk7CisgICAgZ19hc3NlcnRfZmFsc2UodGVzdC0+aXNFZGl0YWJsZSgpKTsKIAogICAgIGxvYWRD
b250ZW50c0FuZFRyeVRvQ3V0U2VsZWN0aW9uKHRlc3QsIGZhbHNlKTsKIH0KQEAgLTM0Miw0NiAr
MzQyLDQ2IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3RWRpdG9yRWRpdG9yU3RhdGVUeXBpbmdB
dHRyaWJ1dGVzKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zCiAgICAgd2Via2l0X3dlYl92aWV3X2V4
ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywgIk1vdmVGb3J3YXJkIik7CiAg
ICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmll
dywgIk1vdmVGb3J3YXJkIik7CiAgICAgdHlwaW5nQXR0cmlidXRlcyA9IHRlc3QtPndhaXRVbnRp
bFR5cGluZ0F0dHJpYnV0ZXNDaGFuZ2VkKCk7Ci0gICAgZ19hc3NlcnQodHlwaW5nQXR0cmlidXRl
cyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9CT0xEKTsKLSAgICBnX2Fzc2VydCgh
KHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfSVRBTElD
KSk7Ci0gICAgZ19hc3NlcnQoISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJ
TkdfQVRUUklCVVRFX1VOREVSTElORSkpOwotICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0cmlidXRl
cyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9TVFJJS0VUSFJPVUdIKSk7CisgICAg
Z19hc3NlcnRfdHJ1ZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRU
UklCVVRFX0JPTEQpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJL
SVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfSVRBTElDKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0
eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1VOREVSTElO
RSk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1Jf
VFlQSU5HX0FUVFJJQlVURV9TVFJJS0VUSFJPVUdIKTsKIAogICAgIHdlYmtpdF93ZWJfdmlld19l
eGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJNb3ZlV29yZEZvcndhcmQi
KTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93
ZWJWaWV3LCAiTW92ZUZvcndhcmQiKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0
aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZUZvcndhcmQiKTsKICAgICB0eXBpbmdB
dHRyaWJ1dGVzID0gdGVzdC0+d2FpdFVudGlsVHlwaW5nQXR0cmlidXRlc0NoYW5nZWQoKTsKLSAg
ICBnX2Fzc2VydCghKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRS
SUJVVEVfQk9MRCkpOwotICAgIGdfYXNzZXJ0KHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJ
VE9SX1RZUElOR19BVFRSSUJVVEVfSVRBTElDKTsKLSAgICBnX2Fzc2VydCghKHR5cGluZ0F0dHJp
YnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfVU5ERVJMSU5FKSk7Ci0gICAg
Z19hc3NlcnQoISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklC
VVRFX1NUUklLRVRIUk9VR0gpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0eXBpbmdBdHRyaWJ1dGVz
ICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0JPTEQpOworICAgIGdfYXNzZXJ0X3Ry
dWUodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9JVEFM
SUMpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9S
X1RZUElOR19BVFRSSUJVVEVfVU5ERVJMSU5FKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0eXBpbmdB
dHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1NUUklLRVRIUk9VR0gp
OwogCiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1f
d2ViVmlldywgIk1vdmVXb3JkRm9yd2FyZCIpOwogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRl
X2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJNb3ZlRm9yd2FyZCIpOwogICAgIHdl
YmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJN
b3ZlRm9yd2FyZCIpOwogICAgIHR5cGluZ0F0dHJpYnV0ZXMgPSB0ZXN0LT53YWl0VW50aWxUeXBp
bmdBdHRyaWJ1dGVzQ2hhbmdlZCgpOwotICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0cmlidXRlcyAm
IFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9CT0xEKSk7Ci0gICAgZ19hc3NlcnQoISh0
eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0lUQUxJQykp
OwotICAgIGdfYXNzZXJ0KHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19B
VFRSSUJVVEVfVU5ERVJMSU5FKTsKLSAgICBnX2Fzc2VydCghKHR5cGluZ0F0dHJpYnV0ZXMgJiBX
RUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfU1RSSUtFVEhST1VHSCkpOworICAgIGdfYXNz
ZXJ0X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJV
VEVfQk9MRCk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9F
RElUT1JfVFlQSU5HX0FUVFJJQlVURV9JVEFMSUMpOworICAgIGdfYXNzZXJ0X3RydWUodHlwaW5n
QXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9VTkRFUkxJTkUpOwor
ICAgIGdfYXNzZXJ0X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElO
R19BVFRSSUJVVEVfU1RSSUtFVEhST1VHSCk7CiAKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0
ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZVdvcmRGb3J3YXJkIik7CiAg
ICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmll
dywgIk1vdmVGb3J3YXJkIik7CiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19j
b21tYW5kKHRlc3QtPm1fd2ViVmlldywgIk1vdmVGb3J3YXJkIik7CiAgICAgdHlwaW5nQXR0cmli
dXRlcyA9IHRlc3QtPndhaXRVbnRpbFR5cGluZ0F0dHJpYnV0ZXNDaGFuZ2VkKCk7Ci0gICAgZ19h
c3NlcnQoISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRF
X0JPTEQpKTsKLSAgICBnX2Fzc2VydCghKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9S
X1RZUElOR19BVFRSSUJVVEVfSVRBTElDKSk7Ci0gICAgZ19hc3NlcnQoISh0eXBpbmdBdHRyaWJ1
dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1VOREVSTElORSkpOwotICAgIGdf
YXNzZXJ0KHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVf
U1RSSUtFVEhST1VHSCk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRlcyAmIFdF
QktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9CT0xEKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0
eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0lUQUxJQyk7
CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQ
SU5HX0FUVFJJQlVURV9VTkRFUkxJTkUpOworICAgIGdfYXNzZXJ0X3RydWUodHlwaW5nQXR0cmli
dXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9TVFJJS0VUSFJPVUdIKTsKIAog
ICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZp
ZXcsICJNb3ZlV29yZEZvcndhcmQiKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0
aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZUZvcndhcmQiKTsKICAgICB3ZWJraXRf
d2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZUZv
cndhcmQiKTsKICAgICB0eXBpbmdBdHRyaWJ1dGVzID0gdGVzdC0+d2FpdFVudGlsVHlwaW5nQXR0
cmlidXRlc0NoYW5nZWQoKTsKLSAgICBnX2Fzc2VydCh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lU
X0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0JPTEQpOwotICAgIGdfYXNzZXJ0KHR5cGluZ0F0dHJp
YnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfSVRBTElDKTsKLSAgICBnX2Fz
c2VydCghKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVf
VU5ERVJMSU5FKSk7Ci0gICAgZ19hc3NlcnQoISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VE
SVRPUl9UWVBJTkdfQVRUUklCVVRFX1NUUklLRVRIUk9VR0gpKTsKKyAgICBnX2Fzc2VydF90cnVl
KHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfQk9MRCk7
CisgICAgZ19hc3NlcnRfdHJ1ZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJ
TkdfQVRUUklCVVRFX0lUQUxJQyk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRl
cyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9VTkRFUkxJTkUpOworICAgIGdfYXNz
ZXJ0X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJV
VEVfU1RSSUtFVEhST1VHSCk7CiAKICAgICAvLyBTZWxlY3Rpb25zLgogICAgIHdlYmtpdF93ZWJf
dmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJNb3ZlVG9CZWdp
bm5pbmdPZkRvY3VtZW50Iik7CkBAIC0zOTMsNDYgKzM5Myw0NiBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld0VkaXRvckVkaXRvclN0YXRlVHlwaW5nQXR0cmlidXRlcyhFZGl0b3JUZXN0KiB0ZXN0
LCBnY29ucwogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0
LT5tX3dlYlZpZXcsICJNb3ZlRm9yd2FyZCIpOwogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRl
X2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJNb3ZlV29yZEZvcndhcmRBbmRNb2Rp
ZnlTZWxlY3Rpb24iKTsKICAgICB0eXBpbmdBdHRyaWJ1dGVzID0gdGVzdC0+d2FpdFVudGlsVHlw
aW5nQXR0cmlidXRlc0NoYW5nZWQoKTsKLSAgICBnX2Fzc2VydCh0eXBpbmdBdHRyaWJ1dGVzICYg
V0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0JPTEQpOwotICAgIGdfYXNzZXJ0KCEodHlw
aW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9JVEFMSUMpKTsK
LSAgICBnX2Fzc2VydCghKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19B
VFRSSUJVVEVfVU5ERVJMSU5FKSk7Ci0gICAgZ19hc3NlcnQoISh0eXBpbmdBdHRyaWJ1dGVzICYg
V0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1NUUklLRVRIUk9VR0gpKTsKKyAgICBnX2Fz
c2VydF90cnVlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJV
VEVfQk9MRCk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9F
RElUT1JfVFlQSU5HX0FUVFJJQlVURV9JVEFMSUMpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHR5cGlu
Z0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfVU5ERVJMSU5FKTsK
KyAgICBnX2Fzc2VydF9mYWxzZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJ
TkdfQVRUUklCVVRFX1NUUklLRVRIUk9VR0gpOwogCiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1
dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywgIk1vdmVGb3J3YXJkIik7CiAgICAg
d2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywg
Ik1vdmVGb3J3YXJkIik7CiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21t
YW5kKHRlc3QtPm1fd2ViVmlldywgIk1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIp
OwogICAgIHR5cGluZ0F0dHJpYnV0ZXMgPSB0ZXN0LT53YWl0VW50aWxUeXBpbmdBdHRyaWJ1dGVz
Q2hhbmdlZCgpOwotICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElU
T1JfVFlQSU5HX0FUVFJJQlVURV9CT0xEKSk7Ci0gICAgZ19hc3NlcnQodHlwaW5nQXR0cmlidXRl
cyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9JVEFMSUMpOwotICAgIGdfYXNzZXJ0
KCEodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9VTkRF
UkxJTkUpKTsKLSAgICBnX2Fzc2VydCghKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9S
X1RZUElOR19BVFRSSUJVVEVfU1RSSUtFVEhST1VHSCkpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHR5
cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfQk9MRCk7Cisg
ICAgZ19hc3NlcnRfdHJ1ZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdf
QVRUUklCVVRFX0lUQUxJQyk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRlcyAm
IFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9VTkRFUkxJTkUpOworICAgIGdfYXNzZXJ0
X2ZhbHNlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVf
U1RSSUtFVEhST1VHSCk7CiAKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2Nv
bW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZUZvcndhcmQiKTsKICAgICB3ZWJraXRfd2ViX3Zp
ZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93ZWJWaWV3LCAiTW92ZUZvcndhcmQi
KTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmQodGVzdC0+bV93
ZWJWaWV3LCAiTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIik7CiAgICAgdHlwaW5n
QXR0cmlidXRlcyA9IHRlc3QtPndhaXRVbnRpbFR5cGluZ0F0dHJpYnV0ZXNDaGFuZ2VkKCk7Ci0g
ICAgZ19hc3NlcnQoISh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRU
UklCVVRFX0JPTEQpKTsKLSAgICBnX2Fzc2VydCghKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRf
RURJVE9SX1RZUElOR19BVFRSSUJVVEVfSVRBTElDKSk7Ci0gICAgZ19hc3NlcnQodHlwaW5nQXR0
cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9VTkRFUkxJTkUpOwotICAg
IGdfYXNzZXJ0KCEodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJ
QlVURV9TVFJJS0VUSFJPVUdIKSk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRl
cyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9CT0xEKTsKKyAgICBnX2Fzc2VydF9m
YWxzZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX0lU
QUxJQyk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRP
Ul9UWVBJTkdfQVRUUklCVVRFX1VOREVSTElORSk7CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5n
QXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9TVFJJS0VUSFJPVUdI
KTsKIAogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5t
X3dlYlZpZXcsICJNb3ZlRm9yd2FyZCIpOwogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2Vk
aXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJNb3ZlRm9yd2FyZCIpOwogICAgIHdlYmtp
dF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJNb3Zl
V29yZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iKTsKICAgICB0eXBpbmdBdHRyaWJ1dGVzID0g
dGVzdC0+d2FpdFVudGlsVHlwaW5nQXR0cmlidXRlc0NoYW5nZWQoKTsKLSAgICBnX2Fzc2VydCgh
KHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfQk9MRCkp
OwotICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5H
X0FUVFJJQlVURV9JVEFMSUMpKTsKLSAgICBnX2Fzc2VydCghKHR5cGluZ0F0dHJpYnV0ZXMgJiBX
RUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfVU5ERVJMSU5FKSk7Ci0gICAgZ19hc3NlcnQo
dHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9TVFJJS0VU
SFJPVUdIKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VE
SVRPUl9UWVBJTkdfQVRUUklCVVRFX0JPTEQpOworICAgIGdfYXNzZXJ0X2ZhbHNlKHR5cGluZ0F0
dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfSVRBTElDKTsKKyAgICBn
X2Fzc2VydF9mYWxzZSh0eXBpbmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRU
UklCVVRFX1VOREVSTElORSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh0eXBpbmdBdHRyaWJ1dGVzICYg
V0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1NUUklLRVRIUk9VR0gpOwogCiAgICAgd2Vi
a2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywgIk1v
dmVGb3J3YXJkIik7CiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5k
KHRlc3QtPm1fd2ViVmlldywgIk1vdmVGb3J3YXJkIik7CiAgICAgd2Via2l0X3dlYl92aWV3X2V4
ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywgIk1vdmVXb3JkRm9yd2FyZEFu
ZE1vZGlmeVNlbGVjdGlvbiIpOwogICAgIHR5cGluZ0F0dHJpYnV0ZXMgPSB0ZXN0LT53YWl0VW50
aWxUeXBpbmdBdHRyaWJ1dGVzQ2hhbmdlZCgpOwotICAgIGdfYXNzZXJ0KHR5cGluZ0F0dHJpYnV0
ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfQk9MRCk7Ci0gICAgZ19hc3NlcnQo
dHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJQlVURV9JVEFMSUMp
OwotICAgIGdfYXNzZXJ0KCEodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5H
X0FUVFJJQlVURV9VTkRFUkxJTkUpKTsKLSAgICBnX2Fzc2VydCghKHR5cGluZ0F0dHJpYnV0ZXMg
JiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfU1RSSUtFVEhST1VHSCkpOworICAgIGdf
YXNzZXJ0X3RydWUodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQSU5HX0FUVFJJ
QlVURV9CT0xEKTsKKyAgICBnX2Fzc2VydF90cnVlKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRf
RURJVE9SX1RZUElOR19BVFRSSUJVVEVfSVRBTElDKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh0eXBp
bmdBdHRyaWJ1dGVzICYgV0VCS0lUX0VESVRPUl9UWVBJTkdfQVRUUklCVVRFX1VOREVSTElORSk7
CisgICAgZ19hc3NlcnRfZmFsc2UodHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQ
SU5HX0FUVFJJQlVURV9TVFJJS0VUSFJPVUdIKTsKIAogICAgIHdlYmtpdF93ZWJfdmlld19leGVj
dXRlX2VkaXRpbmdfY29tbWFuZCh0ZXN0LT5tX3dlYlZpZXcsICJTZWxlY3RBbGwiKTsKICAgICB0
eXBpbmdBdHRyaWJ1dGVzID0gdGVzdC0+d2FpdFVudGlsVHlwaW5nQXR0cmlidXRlc0NoYW5nZWQo
KTsKQEAgLTQ1MSw4ICs0NTEsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0VkaXRvckluc2Vy
dEltYWdlKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0X3dlYl92
aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kX3dpdGhfYXJndW1lbnQodGVzdC0+bV93ZWJWaWV3
LCBXRUJLSVRfRURJVElOR19DT01NQU5EX0lOU0VSVF9JTUFHRSwgaW1hZ2VVUkkuZ2V0KCkpOwog
ICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBXZWJLaXRKYXZhc2NyaXB0UmVz
dWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZp
bmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnSU1HJylbMF0uc3JjIiwgJmVy
cm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fz
c2VydCghZXJyb3IpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNjcmlwdFJlc3VsdCk7Cisg
ICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4g
cmVzdWx0U3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFz
Y3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIocmVzdWx0U3RyaW5nLmdldCgpLCA9
PSwgaW1hZ2VVUkkuZ2V0KCkpOwogfQpAQCAtNDY4LDEzICs0NjgsMTMgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYlZpZXdFZGl0b3JDcmVhdGVMaW5rKEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50
ZXIpCiAgICAgd2Via2l0X3dlYl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kX3dpdGhfYXJn
dW1lbnQodGVzdC0+bV93ZWJWaWV3LCBXRUJLSVRfRURJVElOR19DT01NQU5EX0NSRUFURV9MSU5L
LCB3ZWJraXRHVEtVUkwpOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBX
ZWJLaXRKYXZhc2NyaXB0UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNj
cmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
QScpWzBdLmhyZWY7IiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0
UmVzdWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3IpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2
YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwogICAg
IEdVbmlxdWVQdHI8Y2hhcj4gcmVzdWx0U3RyaW5nKFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVz
dWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIocmVz
dWx0U3RyaW5nLmdldCgpLCA9PSwgd2Via2l0R1RLVVJMKTsKICAgICBqYXZhc2NyaXB0UmVzdWx0
ID0gdGVzdC0+cnVuSmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgnQScpWzBdLmlubmVyVGV4dDsiLCAmZXJyb3Iub3V0UHRyKCkpOwot
ICAgIGdfYXNzZXJ0KGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNzZXJ0KCFlcnJvcik7Cisg
ICAgZ19hc3NlcnRfbm9ubnVsbChqYXZhc2NyaXB0UmVzdWx0KTsKKyAgICBnX2Fzc2VydF9ub19l
cnJvcihlcnJvci5nZXQoKSk7CiAgICAgcmVzdWx0U3RyaW5nLnJlc2V0KFdlYlZpZXdUZXN0Ojpq
YXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKGphdmFzY3JpcHRSZXN1bHQpKTsKICAgICBnX2Fzc2Vy
dF9jbXBzdHIocmVzdWx0U3RyaW5nLmdldCgpLCA9PSwgIndlYmtpdGd0ay5vcmciKTsKIApAQCAt
NDgyLDEzICs0ODIsMTMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdFZGl0b3JDcmVhdGVMaW5r
KEVkaXRvclRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgd2Via2l0X3dlYl92aWV3X2V4
ZWN1dGVfZWRpdGluZ19jb21tYW5kKHRlc3QtPm1fd2ViVmlldywgIk1vdmVUb0VuZE9mTGluZSIp
OwogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZF93aXRoX2FyZ3Vt
ZW50KHRlc3QtPm1fd2ViVmlldywgV0VCS0lUX0VESVRJTkdfQ09NTUFORF9DUkVBVEVfTElOSywg
d2Via2l0R1RLVVJMKTsKICAgICBqYXZhc2NyaXB0UmVzdWx0ID0gdGVzdC0+cnVuSmF2YVNjcmlw
dEFuZFdhaXRVbnRpbEZpbmlzaGVkKCJkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnQScp
WzFdLmhyZWY7IiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChqYXZhc2NyaXB0UmVz
dWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3IpOworICAgIGdfYXNzZXJ0X25vbm51bGwoamF2YXNj
cmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0KCkpOwogICAgIHJl
c3VsdFN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdFRvQ1N0cmluZyhq
YXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHJlc3VsdFN0cmluZy5nZXQo
KSwgPT0sIHdlYmtpdEdUS1VSTCk7CiAgICAgamF2YXNjcmlwdFJlc3VsdCA9IHRlc3QtPnJ1bkph
dmFTY3JpcHRBbmRXYWl0VW50aWxGaW5pc2hlZCgiZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ0EnKVsxXS5pbm5lclRleHQ7IiwgJmVycm9yLm91dFB0cigpKTsKLSAgICBnX2Fzc2VydChq
YXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2VydCghZXJyb3IpOworICAgIGdfYXNzZXJ0X25v
bm51bGwoamF2YXNjcmlwdFJlc3VsdCk7CisgICAgZ19hc3NlcnRfbm9fZXJyb3IoZXJyb3IuZ2V0
KCkpOwogICAgIHJlc3VsdFN0cmluZy5yZXNldChXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3Vs
dFRvQ1N0cmluZyhqYXZhc2NyaXB0UmVzdWx0KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHJlc3Vs
dFN0cmluZy5nZXQoKSwgPT0sIHdlYmtpdEdUS1VSTCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9Mb2FkVHJhY2tpbmdUZXN0LmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL0xvYWRUcmFja2luZ1Rlc3QuY3BwCmluZGV4
IGU2YTM0ODJkM2U5MWQ3NWI5ZWQ4N2QyMWYyYThjNzVjMzk2NjM5MDEuLjJkZGRlY2EzNjJlOWIy
MjgyNDc2Zjk5NWQzMjY3NzFiNWE4ODUyMGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL0xvYWRUcmFja2luZ1Rlc3QuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL0xvYWRUcmFja2luZ1Rlc3QuY3BwCkBAIC0yNCwzOCAr
MjQsMzggQEAgc3RhdGljIHZvaWQgbG9hZENoYW5nZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW4KIHsKICAgICBzd2l0Y2ggKGxvYWRFdmVu
dCkgewogICAgIGNhc2UgV0VCS0lUX0xPQURfU1RBUlRFRDoKLSAgICAgICAgZ19hc3NlcnQod2Vi
a2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmlldykpOworICAgICAgICBnX2Fzc2VydF90cnVl
KHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHdlYlZpZXcpKTsKICAgICAgICAgZ19hc3NlcnRf
Y21wc3RyKHRlc3QtPm1fYWN0aXZlVVJJLmRhdGEoKSwgPT0sIHdlYmtpdF93ZWJfdmlld19nZXRf
dXJpKHdlYlZpZXcpKTsKICAgICAgICAgdGVzdC0+cHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFdFQktJVF9MT0FEX1JFRElSRUNURUQ6Ci0gICAgICAg
IGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHdlYlZpZXcpKTsKKyAgICAgICAg
Z19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSk7CiAgICAg
ICAgIHRlc3QtPm1fYWN0aXZlVVJJID0gd2Via2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldyk7
CiAgICAgICAgIGlmICghdGVzdC0+bV9yZWRpcmVjdFVSSS5pc051bGwoKSkKICAgICAgICAgICAg
IGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX3JlZGlyZWN0VVJJLmRhdGEoKSwgPT0sIHRlc3QtPm1f
YWN0aXZlVVJJLmRhdGEoKSk7CiAgICAgICAgIHRlc3QtPnByb3Zpc2lvbmFsTG9hZFJlY2VpdmVk
U2VydmVyUmVkaXJlY3QoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXRUJLSVRfTE9BRF9D
T01NSVRURUQ6IHsKLSAgICAgICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmco
d2ViVmlldykpOworICAgICAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19pc19sb2Fk
aW5nKHdlYlZpZXcpKTsKICAgICAgICAgdGVzdC0+bV9hY3RpdmVVUkkgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3VyaSh3ZWJWaWV3KTsKIAogICAgICAgICAvLyBDaGVjayB0aGF0IG9uIGNvbW1pdHRl
ZCB3ZSBhbHdheXMgaGF2ZSBhIG1haW4gcmVzb3VyY2Ugd2l0aCBhIHJlc3BvbnNlLgogICAgICAg
ICBXZWJLaXRXZWJSZXNvdXJjZSogcmVzb3VyY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5f
cmVzb3VyY2Uod2ViVmlldyk7Ci0gICAgICAgIGdfYXNzZXJ0KHJlc291cmNlKTsKLSAgICAgICAg
Z19hc3NlcnQod2Via2l0X3dlYl9yZXNvdXJjZV9nZXRfcmVzcG9uc2UocmVzb3VyY2UpKTsKKyAg
ICAgICAgZ19hc3NlcnRfbm9ubnVsbChyZXNvdXJjZSk7CisgICAgICAgIGdfYXNzZXJ0X25vbm51
bGwod2Via2l0X3dlYl9yZXNvdXJjZV9nZXRfcmVzcG9uc2UocmVzb3VyY2UpKTsKIAogICAgICAg
ICB0ZXN0LT5sb2FkQ29tbWl0dGVkKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IFdFQktJVF9MT0FEX0ZJTklTSEVEOgogICAgICAgICBpZiAoIXRlc3QtPm1fbG9hZEZhaWxlZCkg
ewotICAgICAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKHdlYlZp
ZXcpKTsKKyAgICAgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKHdlYmtpdF93ZWJfdmlld19pc19sb2Fk
aW5nKHdlYlZpZXcpKTsKICAgICAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXN0LT5tX2FjdGl2
ZVVSSS5kYXRhKCksID09LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoIWdfZXJyb3JfbWF0Y2hlcyh0ZXN0LT5tX2Vycm9yLmdldCgpLCBXRUJL
SVRfTkVUV09SS19FUlJPUiwgV0VCS0lUX05FVFdPUktfRVJST1JfQ0FOQ0VMTEVEKSkgewogICAg
ICAgICAgICAgLy8gV2hlbiBhIG5ldyBsb2FkIGlzIHN0YXJ0ZWQgYmVmb3JlIHRoZSBwcmV2aW91
cyBvbmUgaGFzIGZpbmlzaGVkLCB3ZSByZWNlaXZlIHRoZSBsb2FkLWZpbmlzaGVkIHNpZ25hbAog
ICAgICAgICAgICAgLy8gb2YgdGhlIG9uZ29pbmcgbG9hZCB3aGlsZSB3ZSBhbHJlYWR5IGhhdmUg
YSBwcm92aXNpb25hbCBVUkwgZm9yIHRoZSBuZXcgbG9hZC4gVGhpcyBpcyB0aGUgb25seSBjYXNl
CiAgICAgICAgICAgICAvLyB3aGVyZSBpc2xvYWRpbmcgaXMgdHJ1ZSB3aGVuIHRoZSBsb2FkIGhh
cyBmaW5pc2hlZC4KLSAgICAgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfaXNfbG9h
ZGluZyh3ZWJWaWV3KSk7CisgICAgICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3Zp
ZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSk7CiAgICAgICAgIH0KICAgICAgICAgdGVzdC0+bG9hZEZp
bmlzaGVkKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtNjgsMTQgKzY4LDE0IEBAIHN0YXRpYyB2b2lk
IGxvYWRGYWlsZWRDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZl
bnQgbG9hZEV2ZW50CiB7CiAgICAgdGVzdC0+bV9sb2FkRmFpbGVkID0gdHJ1ZTsKIAotICAgIGdf
YXNzZXJ0KGVycm9yKTsKKyAgICBnX2Fzc2VydF9ub25udWxsKGVycm9yKTsKICAgICB0ZXN0LT5t
X2Vycm9yLnJlc2V0KGdfZXJyb3JfY29weShlcnJvcikpOwogCiAgICAgaWYgKCFnX2Vycm9yX21h
dGNoZXMoZXJyb3IsIFdFQktJVF9ORVRXT1JLX0VSUk9SLCBXRUJLSVRfTkVUV09SS19FUlJPUl9D
QU5DRUxMRUQpKSB7CiAgICAgICAgIC8vIFdoZW4gYSBuZXcgbG9hZCBpcyBzdGFydGVkIGJlZm9y
ZSB0aGUgcHJldmlvdXMgb25lIGhhcyBmaW5pc2hlZCwgd2UgcmVjZWl2ZSB0aGUgbG9hZC1mYWls
ZWQgc2lnbmFsCiAgICAgICAgIC8vIG9mIHRoZSBvbmdvaW5nIGxvYWQgd2hpbGUgd2UgYWxyZWFk
eSBoYXZlIGEgcHJvdmlzaW9uYWwgVVJMIGZvciB0aGUgbmV3IGxvYWQuIFRoaXMgaXMgdGhlIG9u
bHkgY2FzZQogICAgICAgICAvLyB3aGVyZSBpcy1sb2FkaW5nIGlzIHRydWUgd2hlbiB0aGUgbG9h
ZCBoYXMgZmFpbGVkLgotICAgICAgICBnX2Fzc2VydCghd2Via2l0X3dlYl92aWV3X2lzX2xvYWRp
bmcod2ViVmlldykpOworICAgICAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2ViX3ZpZXdfaXNf
bG9hZGluZyh3ZWJWaWV3KSk7CiAgICAgfQogCiAgICAgc3dpdGNoIChsb2FkRXZlbnQpIHsKQEAg
LTk1LDEwICs5NSwxMCBAQCBzdGF0aWMgdm9pZCBsb2FkRmFpbGVkQ2FsbGJhY2soV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudAogc3RhdGljIGdib29sZWFu
IGxvYWRGYWlsZWRXaXRoVExTRXJyb3JzQ2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywg
Y29uc3QgY2hhciogZmFpbGluZ1VSSSwgR1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSwgR1Rs
c0NlcnRpZmljYXRlRmxhZ3MgdGxzRXJyb3JzLCBMb2FkVHJhY2tpbmdUZXN0KiB0ZXN0KQogewog
ICAgIHRlc3QtPm1fbG9hZEZhaWxlZCA9IHRydWU7Ci0gICAgZ19hc3NlcnQoIXdlYmtpdF93ZWJf
dmlld19pc19sb2FkaW5nKHdlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF9mYWxzZSh3ZWJraXRfd2Vi
X3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHRlc3QtPm1f
YWN0aXZlVVJJLmRhdGEoKSwgPT0sIGZhaWxpbmdVUkkpOwotICAgIGdfYXNzZXJ0KEdfSVNfVExT
X0NFUlRJRklDQVRFKGNlcnRpZmljYXRlKSk7Ci0gICAgZ19hc3NlcnQodGxzRXJyb3JzKTsKKyAg
ICBnX2Fzc2VydF90cnVlKEdfSVNfVExTX0NFUlRJRklDQVRFKGNlcnRpZmljYXRlKSk7CisgICAg
Z19hc3NlcnRfY21wdWludCh0bHNFcnJvcnMsICE9LCAwKTsKICAgICByZXR1cm4gdGVzdC0+bG9h
ZEZhaWxlZFdpdGhUTFNFcnJvcnMoZmFpbGluZ1VSSSwgY2VydGlmaWNhdGUsIHRsc0Vycm9ycyk7
CiB9CiAKQEAgLTExNiw3ICsxMTYsNyBAQCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkVHJhY2tpbmdU
ZXN0KCkKICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImxvYWQtZmFpbGVkLXdpdGgt
dGxzLWVycm9ycyIsIEdfQ0FMTEJBQ0sobG9hZEZhaWxlZFdpdGhUTFNFcnJvcnNDYWxsYmFjayks
IHRoaXMpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93ZWJWaWV3LCAibm90aWZ5Ojplc3RpbWF0
ZWQtbG9hZC1wcm9ncmVzcyIsIEdfQ0FMTEJBQ0soZXN0aW1hdGVkUHJvZ3Jlc3NDaGFuZ2VkQ2Fs
bGJhY2spLCB0aGlzKTsKIAotICAgIGdfYXNzZXJ0KCF3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSht
X3dlYlZpZXcpKTsKKyAgICBnX2Fzc2VydF9udWxsKHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKG1f
d2ViVmlldykpOwogfQogCiBMb2FkVHJhY2tpbmdUZXN0Ojp+TG9hZFRyYWNraW5nVGVzdCgpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5jcHAKaW5k
ZXggYzc2OTlkNDRjMjRjYWMzYzc0ODUwOTRkOGVhOTlmYzJkMGZmY2MyZC4uYTE1NWE1MTAwYTZi
YmFlZGYwYWUxYjUyNzY5YTczODcxOGEwZjVjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmNwcApAQCAtNDIsNyArNDIsNyBAQCBzdGF0aWMg
dm9pZCByZWdpc3RlckdSZXNvdXJjZSh2b2lkKQogewogICAgIEdVbmlxdWVQdHI8Y2hhcj4gcmVz
b3VyY2VzUGF0aChnX2J1aWxkX2ZpbGVuYW1lKFdFQktJVF9URVNUX1JFU09VUkNFU19ESVIsICJ3
ZWJraXRnbGliLXRlc3RzLXJlc291cmNlcy5ncmVzb3VyY2UiLCBudWxscHRyKSk7CiAgICAgR1Jl
c291cmNlKiByZXNvdXJjZSA9IGdfcmVzb3VyY2VfbG9hZChyZXNvdXJjZXNQYXRoLmdldCgpLCBu
dWxscHRyKTsKLSAgICBnX2Fzc2VydChyZXNvdXJjZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChy
ZXNvdXJjZSk7CiAKICAgICBnX3Jlc291cmNlc19yZWdpc3RlcihyZXNvdXJjZSk7CiAgICAgZ19y
ZXNvdXJjZV91bnJlZihyZXNvdXJjZSk7CkBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyR1Jlc291cmNlKHZvaWQpCiBzdGF0aWMgdm9pZCByZW1vdmVOb25FbXB0eURpcmVjdG9y
eShjb25zdCBjaGFyKiBkaXJlY3RvcnlQYXRoKQogewogICAgIEdEaXIqIGRpcmVjdG9yeSA9IGdf
ZGlyX29wZW4oZGlyZWN0b3J5UGF0aCwgMCwgMCk7Ci0gICAgZ19hc3NlcnQoZGlyZWN0b3J5KTsK
KyAgICBnX2Fzc2VydF9ub25udWxsKGRpcmVjdG9yeSk7CiAgICAgY29uc3QgY2hhciogZmlsZU5h
bWU7CiAgICAgd2hpbGUgKChmaWxlTmFtZSA9IGdfZGlyX3JlYWRfbmFtZShkaXJlY3RvcnkpKSkg
ewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZpbGVQYXRoKGdfYnVpbGRfZmlsZW5hbWUoZGly
ZWN0b3J5UGF0aCwgZmlsZU5hbWUsIG51bGxwdHIpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RNYWluLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2dsaWIvV2ViS2l0R0xpYi9UZXN0TWFpbi5oCmluZGV4IDMxM2YyMTc3MWJjZmIzMmY0OTFkZmJl
NThhZGY3OTI1YzBiMjI3M2YuLmIwMzM0YTgyZmJhNDJlMTM0ZjdjZDEwODQ0ZDA5ZTJkYzk0MDli
ODcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1Rlc3RN
YWluLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvVGVzdE1haW4u
aApAQCAtODUsOSArODUsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgR1JlZlB0cjxXZWJLaXRX
ZWJWaWV3PiBhZG9wdFZpZXcoZ3BvaW50ZXIgdmlldykKICAgICB7Ci0gICAgICAgIGdfYXNzZXJ0
KFdFQktJVF9JU19XRUJfVklFVyh2aWV3KSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoV0VCS0lU
X0lTX1dFQl9WSUVXKHZpZXcpKTsKICNpZiBQTEFURk9STShHVEspCi0gICAgICAgIGdfYXNzZXJ0
KGdfb2JqZWN0X2lzX2Zsb2F0aW5nKHZpZXcpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShnX29i
amVjdF9pc19mbG9hdGluZyh2aWV3KSk7CiAgICAgICAgIHJldHVybiBHUmVmUHRyPFdlYktpdFdl
YlZpZXc+KFdFQktJVF9XRUJfVklFVyh2aWV3KSk7CiAjZWxpZiBQTEFURk9STShXUEUpCiAgICAg
ICAgIHJldHVybiBhZG9wdEdSZWYoV0VCS0lUX1dFQl9WSUVXKHZpZXcpKTsKQEAgLTEzMCw3ICsx
MzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBnX3ByaW50KCIgJXMoJXApIiwgZ190eXBlX25h
bWVfZnJvbV9pbnN0YW5jZShyZWludGVycHJldF9jYXN0PEdUeXBlSW5zdGFuY2UqPigqaXQpKSwg
Kml0KTsKICAgICAgICAgZ19wcmludCgiXG4iKTsKIAotICAgICAgICBnX2Fzc2VydChtX3dhdGNo
ZWRPYmplY3RzLmlzRW1wdHkoKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUobV93YXRjaGVkT2Jq
ZWN0cy5pc0VtcHR5KCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplV2Vi
RXh0ZW5zaW9ucygpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9XZWJLaXRUZXN0QnVzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRH
TGliL1dlYktpdFRlc3RCdXMuY3BwCmluZGV4IDg0ZGRjNWRkODk4OTg5MzRjYjBhMDQzZGQyNzI3
OGUyNDk3NDIxNGIuLmJhNjQ3NmM4ZGExNWJiNGIzYjg0NjY0MGFhMzk3YTU2N2Q2NDUyNWIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RC
dXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRl
c3RCdXMuY3BwCkBAIC00OCwxMSArNDgsMTEgQEAgR0RCdXNDb25uZWN0aW9uKiBXZWJLaXRUZXN0
QnVzOjpnZXRPckNyZWF0ZUNvbm5lY3Rpb24oKQogICAgIGlmIChtX2Nvbm5lY3Rpb24pCiAgICAg
ICAgIHJldHVybiBtX2Nvbm5lY3Rpb24uZ2V0KCk7CiAKLSAgICBnX2Fzc2VydCghbV9hZGRyZXNz
LmlzTnVsbCgpKTsKKyAgICBnX2Fzc2VydF9mYWxzZShtX2FkZHJlc3MuaXNOdWxsKCkpOwogICAg
IG1fY29ubmVjdGlvbiA9IGFkb3B0R1JlZihnX2RidXNfY29ubmVjdGlvbl9uZXdfZm9yX2FkZHJl
c3Nfc3luYyhtX2FkZHJlc3MuZGF0YSgpLAogICAgICAgICBzdGF0aWNfY2FzdDxHREJ1c0Nvbm5l
Y3Rpb25GbGFncz4oR19EQlVTX0NPTk5FQ1RJT05fRkxBR1NfQVVUSEVOVElDQVRJT05fQ0xJRU5U
IHwgR19EQlVTX0NPTk5FQ1RJT05fRkxBR1NfTUVTU0FHRV9CVVNfQ09OTkVDVElPTiksCiAgICAg
ICAgIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpKTsKLSAgICBnX2Fzc2VydChtX2Nvbm5lY3Rp
b24uZ2V0KCkpOworICAgIGdfYXNzZXJ0X25vbm51bGwobV9jb25uZWN0aW9uLmdldCgpKTsKICAg
ICByZXR1cm4gbV9jb25uZWN0aW9uLmdldCgpOwogfQogCkBAIC03Niw2ICs3Niw2IEBAIEdEQnVz
UHJveHkqIFdlYktpdFRlc3RCdXM6OmNyZWF0ZVByb3h5KGNvbnN0IGNoYXIqIHNlcnZpY2VOYW1l
LCBjb25zdCBjaGFyKiBvYmplCiAgICAgICAgIGludGVyZmFjZU5hbWUsCiAgICAgICAgIG51bGxw
dHIsIC8vIEdDYW5jZWxsYWJsZQogICAgICAgICBudWxscHRyKTsKLSAgICBnX2Fzc2VydChwcm94
eSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChwcm94eSk7CiAgICAgcmV0dXJuIHByb3h5OwogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVz
dFNlcnZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRU
ZXN0U2VydmVyLmNwcAppbmRleCBmZDE2MjNjOWY2YzdlOTdhZmRhN2RiOGU3OGUzMDgwZWM1ODg3
YThiLi43ODJmZTM5M2M4ZjU4NGNlYjVhMDI3N2RmNTZlNGIzNThjMWU0MTZlIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2Vy
dmVyLmNwcApAQCAtMTAxLDggKzEwMSw4IEBAIHZvaWQgV2ViS2l0VGVzdFNlcnZlcjo6cmVtb3Zl
V2ViU29ja2V0SGFuZGxlcigpCiAKIENTdHJpbmcgV2ViS2l0VGVzdFNlcnZlcjo6Z2V0V2ViU29j
a2V0VVJJRm9yUGF0aChjb25zdCBjaGFyKiBwYXRoKSBjb25zdAogewotICAgIGdfYXNzZXJ0KG1f
YmFzZVdlYlNvY2tldFVSSSk7Ci0gICAgZ19hc3NlcnQocGF0aCAmJiAqcGF0aCA9PSAnLycpOwor
ICAgIGdfYXNzZXJ0X25vbm51bGwobV9iYXNlV2ViU29ja2V0VVJJKTsKKyAgICBnX2Fzc2VydF90
cnVlKHBhdGggJiYgKnBhdGggPT0gJy8nKTsKICAgICBTb3VwVVJJKiB1cmkgPSBzb3VwX3VyaV9u
ZXdfd2l0aF9iYXNlKG1fYmFzZVdlYlNvY2tldFVSSSwgcGF0aCArIDEpOyAvLyBJZ25vcmUgdGhl
IGxlYWRpbmcgc2xhc2guCiAgICAgR1VuaXF1ZVB0cjxnY2hhcj4gdXJpU3RyaW5nKHNvdXBfdXJp
X3RvX3N0cmluZyh1cmksIEZBTFNFKSk7CiAgICAgc291cF91cmlfZnJlZSh1cmkpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViVmlld1Rlc3QuY3BwCmlu
ZGV4IGU0MjBjM2UyYjQ3MzRhOTI5MTY4N2ZjNzczOTgwZWVjYTVlNjFkNTQuLmVmZDlmYmY0NTQ0
OTU2ZTI3MmI5YzM2N2YxODdhMGU4ZGUzNzZlN2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYlZpZXdUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJWaWV3VGVzdC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAg
V2ViVmlld1Rlc3Q6On5XZWJWaWV3VGVzdCgpCiAKIHZvaWQgV2ViVmlld1Rlc3Q6OmluaXRpYWxp
emVXZWJWaWV3KCkKIHsKLSAgICBnX2Fzc2VydCghbV93ZWJWaWV3KTsKKyAgICBnX2Fzc2VydF9u
dWxsKG1fd2ViVmlldyk7CiAKICAgICBtX3dlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXLAogI2lmIFBMQVRGT1JNKFdQRSkKQEAgLTc2LDcg
Kzc2LDcgQEAgdm9pZCBXZWJWaWV3VGVzdDo6bG9hZFVSSShjb25zdCBjaGFyKiB1cmkpCiB7CiAg
ICAgbV9hY3RpdmVVUkkgPSB1cmk7CiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKG1fd2Vi
VmlldywgdXJpKTsKLSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyhtX3dl
YlZpZXcpKTsKKyAgICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKG1f
d2ViVmlldykpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSht
X3dlYlZpZXcpLCA9PSwgbV9hY3RpdmVVUkkuZGF0YSgpKTsKIH0KIApAQCAtODcsNyArODcsNyBA
QCB2b2lkIFdlYlZpZXdUZXN0Ojpsb2FkSHRtbChjb25zdCBjaGFyKiBodG1sLCBjb25zdCBjaGFy
KiBiYXNlVVJJKQogICAgIGVsc2UKICAgICAgICAgbV9hY3RpdmVVUkkgPSBiYXNlVVJJOwogICAg
IHdlYmtpdF93ZWJfdmlld19sb2FkX2h0bWwobV93ZWJWaWV3LCBodG1sLCBiYXNlVVJJKTsKLSAg
ICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyhtX3dlYlZpZXcpKTsKKyAgICBn
X2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKG1fd2ViVmlldykpOwogICAg
IGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaShtX3dlYlZpZXcpLCA9PSwg
bV9hY3RpdmVVUkkuZGF0YSgpKTsKIH0KIApAQCAtOTUsNyArOTUsNyBAQCB2b2lkIFdlYlZpZXdU
ZXN0Ojpsb2FkUGxhaW5UZXh0KGNvbnN0IGNoYXIqIHBsYWluVGV4dCkKIHsKICAgICBtX2FjdGl2
ZVVSSSA9ICJhYm91dDpibGFuayI7CiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfcGxhaW5fdGV4
dChtX3dlYlZpZXcsIHBsYWluVGV4dCk7Ci0gICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2lz
X2xvYWRpbmcobV93ZWJWaWV3KSk7CisgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdf
aXNfbG9hZGluZyhtX3dlYlZpZXcpKTsKICAgICBnX2Fzc2VydF9jbXBzdHIod2Via2l0X3dlYl92
aWV3X2dldF91cmkobV93ZWJWaWV3KSwgPT0sIG1fYWN0aXZlVVJJLmRhdGEoKSk7CiB9CiAKQEAg
LTEwNiw3ICsxMDYsNyBAQCB2b2lkIFdlYlZpZXdUZXN0Ojpsb2FkQnl0ZXMoR0J5dGVzKiBieXRl
cywgY29uc3QgY2hhciogbWltZVR5cGUsIGNvbnN0IGNoYXIqIGVuYwogICAgIGVsc2UKICAgICAg
ICAgbV9hY3RpdmVVUkkgPSBiYXNlVVJJOwogICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX2J5dGVz
KG1fd2ViVmlldywgYnl0ZXMsIG1pbWVUeXBlLCBlbmNvZGluZywgYmFzZVVSSSk7Ci0gICAgZ19h
c3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcobV93ZWJWaWV3KSk7CisgICAgZ19hc3Nl
cnRfdHJ1ZSh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyhtX3dlYlZpZXcpKTsKICAgICBnX2Fz
c2VydF9jbXBzdHIod2Via2l0X3dlYl92aWV3X2dldF91cmkobV93ZWJWaWV3KSwgPT0sIG1fYWN0
aXZlVVJJLmRhdGEoKSk7CiB9CiAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFdlYlZpZXdUZXN0
Ojpsb2FkUmVxdWVzdChXZWJLaXRVUklSZXF1ZXN0KiByZXF1ZXN0KQogewogICAgIG1fYWN0aXZl
VVJJID0gd2Via2l0X3VyaV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCk7CiAgICAgd2Via2l0X3dl
Yl92aWV3X2xvYWRfcmVxdWVzdChtX3dlYlZpZXcsIHJlcXVlc3QpOwotICAgIGdfYXNzZXJ0KHdl
YmtpdF93ZWJfdmlld19pc19sb2FkaW5nKG1fd2ViVmlldykpOworICAgIGdfYXNzZXJ0X3RydWUo
d2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcobV93ZWJWaWV3KSk7CiAgICAgZ19hc3NlcnRfY21w
c3RyKHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKG1fd2ViVmlldyksID09LCBtX2FjdGl2ZVVSSS5k
YXRhKCkpOwogfQogCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBXZWJWaWV3VGVzdDo6bG9hZEFs
dGVybmF0ZUhUTUwoY29uc3QgY2hhciogaHRtbCwgY29uc3QgY2hhciogY29udGVudFVSSSwgY28K
IHsKICAgICBtX2FjdGl2ZVVSSSA9IGNvbnRlbnRVUkk7CiAgICAgd2Via2l0X3dlYl92aWV3X2xv
YWRfYWx0ZXJuYXRlX2h0bWwobV93ZWJWaWV3LCBodG1sLCBjb250ZW50VVJJLCBiYXNlVVJJKTsK
LSAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyhtX3dlYlZpZXcpKTsKKyAg
ICBnX2Fzc2VydF90cnVlKHdlYmtpdF93ZWJfdmlld19pc19sb2FkaW5nKG1fd2ViVmlldykpOwog
ICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaShtX3dlYlZpZXcpLCA9
PSwgbV9hY3RpdmVVUkkuZGF0YSgpKTsKIH0KIApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgV2Vi
Vmlld1Rlc3Q6OmdvQmFjaygpCiAgICAgLy8gQ2FsbCBnb19iYWNrIGV2ZW4gd2hlbiBjYW5fZ29f
YmFjayByZXR1cm5zIEZBTFNFIHRvIGNoZWNrIG5vdGhpbmcgaGFwcGVucy4KICAgICB3ZWJraXRf
d2ViX3ZpZXdfZ29fYmFjayhtX3dlYlZpZXcpOwogICAgIGlmIChjYW5Hb0JhY2spIHsKLSAgICAg
ICAgZ19hc3NlcnQod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcobV93ZWJWaWV3KSk7CisgICAg
ICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmcobV93ZWJWaWV3KSk7
CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cih3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaShtX3dlYlZp
ZXcpLCA9PSwgbV9hY3RpdmVVUkkuZGF0YSgpKTsKICAgICB9CiB9CkBAIC0xNTUsNyArMTU1LDcg
QEAgdm9pZCBXZWJWaWV3VGVzdDo6Z29Gb3J3YXJkKCkKICAgICAvLyBDYWxsIGdvX2ZvcndhcmQg
ZXZlbiB3aGVuIGNhbl9nb19mb3J3YXJkIHJldHVybnMgRkFMU0UgdG8gY2hlY2sgbm90aGluZyBo
YXBwZW5zLgogICAgIHdlYmtpdF93ZWJfdmlld19nb19mb3J3YXJkKG1fd2ViVmlldyk7CiAgICAg
aWYgKGNhbkdvRm9yd2FyZCkgewotICAgICAgICBnX2Fzc2VydCh3ZWJraXRfd2ViX3ZpZXdfaXNf
bG9hZGluZyhtX3dlYlZpZXcpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZSh3ZWJraXRfd2ViX3Zp
ZXdfaXNfbG9hZGluZyhtX3dlYlZpZXcpKTsKICAgICAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtp
dF93ZWJfdmlld19nZXRfdXJpKG1fd2ViVmlldyksID09LCBtX2FjdGl2ZVVSSS5kYXRhKCkpOwog
ICAgIH0KIH0KQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFdlYlZpZXdUZXN0Ojpnb1RvQmFja0Zv
cndhcmRMaXN0SXRlbShXZWJLaXRCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtKQogewogICAgIG1f
YWN0aXZlVVJJID0gd2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fZ2V0X29yaWdpbmFsX3Vy
aShpdGVtKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfZ29fdG9fYmFja19mb3J3YXJkX2xpc3RfaXRl
bShtX3dlYlZpZXcsIGl0ZW0pOwotICAgIGdfYXNzZXJ0KHdlYmtpdF93ZWJfdmlld19pc19sb2Fk
aW5nKG1fd2ViVmlldykpOworICAgIGdfYXNzZXJ0X3RydWUod2Via2l0X3dlYl92aWV3X2lzX2xv
YWRpbmcobV93ZWJWaWV3KSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfdmlld19n
ZXRfdXJpKG1fd2ViVmlldyksID09LCBtX2FjdGl2ZVVSSS5kYXRhKCkpOwogfQogCkBAIC0yMzgs
NyArMjM4LDcgQEAgc3RhdGljIHZvaWQgcmVzb3VyY2VHZXREYXRhQ2FsbGJhY2soR09iamVjdCog
b2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW4KICAgICBzaXplX3QgZGF0YVNpemU7
CiAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIHVuc2lnbmVkIGNoYXIqIGRh
dGEgPSB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9kYXRhX2ZpbmlzaChXRUJLSVRfV0VCX1JFU09V
UkNFKG9iamVjdCksIHJlc3VsdCwgJmRhdGFTaXplLCAmZXJyb3Iub3V0UHRyKCkpOwotICAgIGdf
YXNzZXJ0KGRhdGEpOworICAgIGdfYXNzZXJ0X25vbm51bGwoZGF0YSk7CiAKICAgICBXZWJWaWV3
VGVzdCogdGVzdCA9IHN0YXRpY19jYXN0PFdlYlZpZXdUZXN0Kj4odXNlckRhdGEpOwogICAgIHRl
c3QtPm1fcmVzb3VyY2VEYXRhLnJlc2V0KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGRhdGEpKTsK
QEAgLTI1MSw3ICsyNTEsNyBAQCBjb25zdCBjaGFyKiBXZWJWaWV3VGVzdDo6bWFpblJlc291cmNl
RGF0YShzaXplX3QmIG1haW5SZXNvdXJjZURhdGFTaXplKQogICAgIG1fcmVzb3VyY2VEYXRhU2l6
ZSA9IDA7CiAgICAgbV9yZXNvdXJjZURhdGEucmVzZXQoKTsKICAgICBXZWJLaXRXZWJSZXNvdXJj
ZSogcmVzb3VyY2UgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fcmVzb3VyY2UobV93ZWJWaWV3
KTsKLSAgICBnX2Fzc2VydChyZXNvdXJjZSk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChyZXNvdXJj
ZSk7CiAKICAgICB3ZWJraXRfd2ViX3Jlc291cmNlX2dldF9kYXRhKHJlc291cmNlLCAwLCByZXNv
dXJjZUdldERhdGFDYWxsYmFjaywgdGhpcyk7CiAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxv
b3ApOwpAQCAtMzE3LDM4ICszMTcsMzggQEAgV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogV2ViVmll
d1Rlc3Q6OnJ1bkphdmFTY3JpcHRJbldvcmxkQW5kV2FpdFVudGlsRmluaXNoZWQoY28KIGNoYXIq
IFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9DU3RyaW5nKFdlYktpdEphdmFzY3JpcHRS
ZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQpCiB7CiAgICAgYXV0byogdmFsdWUgPSB3ZWJraXRfamF2
YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRSZXN1bHQpOwotICAgIGdfYXNz
ZXJ0KEpTQ19JU19WQUxVRSh2YWx1ZSkpOwotICAgIGdfYXNzZXJ0KGpzY192YWx1ZV9pc19zdHJp
bmcodmFsdWUpKTsKKyAgICBnX2Fzc2VydF90cnVlKEpTQ19JU19WQUxVRSh2YWx1ZSkpOworICAg
IGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVlX2lzX3N0cmluZyh2YWx1ZSkpOwogICAgIHJldHVybiBq
c2NfdmFsdWVfdG9fc3RyaW5nKHZhbHVlKTsKIH0KIAogZG91YmxlIFdlYlZpZXdUZXN0OjpqYXZh
c2NyaXB0UmVzdWx0VG9OdW1iZXIoV2ViS2l0SmF2YXNjcmlwdFJlc3VsdCogamF2YXNjcmlwdFJl
c3VsdCkKIHsKICAgICBhdXRvKiB2YWx1ZSA9IHdlYmtpdF9qYXZhc2NyaXB0X3Jlc3VsdF9nZXRf
anNfdmFsdWUoamF2YXNjcmlwdFJlc3VsdCk7Ci0gICAgZ19hc3NlcnQoSlNDX0lTX1ZBTFVFKHZh
bHVlKSk7Ci0gICAgZ19hc3NlcnQoanNjX3ZhbHVlX2lzX251bWJlcih2YWx1ZSkpOworICAgIGdf
YXNzZXJ0X3RydWUoSlNDX0lTX1ZBTFVFKHZhbHVlKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShqc2Nf
dmFsdWVfaXNfbnVtYmVyKHZhbHVlKSk7CiAgICAgcmV0dXJuIGpzY192YWx1ZV90b19kb3VibGUo
dmFsdWUpOwogfQogCiBib29sIFdlYlZpZXdUZXN0OjpqYXZhc2NyaXB0UmVzdWx0VG9Cb29sZWFu
KFdlYktpdEphdmFzY3JpcHRSZXN1bHQqIGphdmFzY3JpcHRSZXN1bHQpCiB7CiAgICAgYXV0byog
dmFsdWUgPSB3ZWJraXRfamF2YXNjcmlwdF9yZXN1bHRfZ2V0X2pzX3ZhbHVlKGphdmFzY3JpcHRS
ZXN1bHQpOwotICAgIGdfYXNzZXJ0KEpTQ19JU19WQUxVRSh2YWx1ZSkpOwotICAgIGdfYXNzZXJ0
KGpzY192YWx1ZV9pc19ib29sZWFuKHZhbHVlKSk7CisgICAgZ19hc3NlcnRfdHJ1ZShKU0NfSVNf
VkFMVUUodmFsdWUpKTsKKyAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9pc19ib29sZWFuKHZh
bHVlKSk7CiAgICAgcmV0dXJuIGpzY192YWx1ZV90b19ib29sZWFuKHZhbHVlKTsKIH0KIAogYm9v
bCBXZWJWaWV3VGVzdDo6amF2YXNjcmlwdFJlc3VsdElzTnVsbChXZWJLaXRKYXZhc2NyaXB0UmVz
dWx0KiBqYXZhc2NyaXB0UmVzdWx0KQogewogICAgIGF1dG8qIHZhbHVlID0gd2Via2l0X2phdmFz
Y3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fzc2Vy
dChKU0NfSVNfVkFMVUUodmFsdWUpKTsKKyAgICBnX2Fzc2VydF90cnVlKEpTQ19JU19WQUxVRSh2
YWx1ZSkpOwogICAgIHJldHVybiBqc2NfdmFsdWVfaXNfbnVsbCh2YWx1ZSk7CiB9CiAKIGJvb2wg
V2ViVmlld1Rlc3Q6OmphdmFzY3JpcHRSZXN1bHRJc1VuZGVmaW5lZChXZWJLaXRKYXZhc2NyaXB0
UmVzdWx0KiBqYXZhc2NyaXB0UmVzdWx0KQogewogICAgIGF1dG8qIHZhbHVlID0gd2Via2l0X2ph
dmFzY3JpcHRfcmVzdWx0X2dldF9qc192YWx1ZShqYXZhc2NyaXB0UmVzdWx0KTsKLSAgICBnX2Fz
c2VydChKU0NfSVNfVkFMVUUodmFsdWUpKTsKKyAgICBnX2Fzc2VydF90cnVlKEpTQ19JU19WQUxV
RSh2YWx1ZSkpOwogICAgIHJldHVybiBqc2NfdmFsdWVfaXNfdW5kZWZpbmVkKHZhbHVlKTsKIH0K
IApAQCAtMzU3LDcgKzM1Nyw3IEBAIHN0YXRpYyB2b2lkIG9uU25hcHNob3RSZWFkeShXZWJLaXRX
ZWJWaWV3KiB3ZWJfdmlldywgR0FzeW5jUmVzdWx0KiByZXMsIFdlYlZpZXdUCiB7CiAgICAgR1Vu
aXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgIHRlc3QtPm1fc3VyZmFjZSA9IHdlYmtpdF93
ZWJfdmlld19nZXRfc25hcHNob3RfZmluaXNoKHdlYl92aWV3LCByZXMsICZlcnJvci5vdXRQdHIo
KSk7Ci0gICAgZ19hc3NlcnQoIXRlc3QtPm1fc3VyZmFjZSB8fCAhZXJyb3IuZ2V0KCkpOworICAg
IGdfYXNzZXJ0X3RydWUoIXRlc3QtPm1fc3VyZmFjZSB8fCAhZXJyb3IuZ2V0KCkpOwogICAgIGlm
IChlcnJvcikKICAgICAgICAgZ19hc3NlcnRfZXJyb3IoZXJyb3IuZ2V0KCksIFdFQktJVF9TTkFQ
U0hPVF9FUlJPUiwgV0VCS0lUX1NOQVBTSE9UX0VSUk9SX0ZBSUxFRF9UT19DUkVBVEUpOwogICAg
IHRlc3QtPnF1aXRNYWluTG9vcCgpOwpAQCAtMzg4LDcgKzM4OCw3IEBAIGJvb2wgV2ViVmlld1Rl
c3Q6OnJ1bldlYlByb2Nlc3NUZXN0KGNvbnN0IGNoYXIqIHN1aXRlTmFtZSwgY29uc3QgY2hhciog
dGVzdE5hbWUsCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzY3JpcHQoZ19zdHJkdXBfcHJpbnRmKCJX
ZWJQcm9jZXNzVGVzdFJ1bm5lci5ydW5UZXN0KCclcy8lcycpOyIsIHN1aXRlTmFtZSwgdGVzdE5h
bWUpKTsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgV2ViS2l0SmF2YXNj
cmlwdFJlc3VsdCogamF2YXNjcmlwdFJlc3VsdCA9IHJ1bkphdmFTY3JpcHRBbmRXYWl0VW50aWxG
aW5pc2hlZChzY3JpcHQuZ2V0KCksICZlcnJvci5vdXRQdHIoKSk7Ci0gICAgZ19hc3NlcnQoIWVy
cm9yKTsKKyAgICBnX2Fzc2VydF9ub19lcnJvcihlcnJvci5nZXQoKSk7CiAgICAgbG9hZFVSSSgi
YWJvdXQ6YmxhbmsiKTsKICAgICB3YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKICAgICByZXR1cm4g
amF2YXNjcmlwdFJlc3VsdFRvQm9vbGVhbihqYXZhc2NyaXB0UmVzdWx0KTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL2d0ay9XZWJWaWV3VGVzdEd0ay5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9ndGsvV2ViVmlld1Rlc3RH
dGsuY3BwCmluZGV4IGExMzQxYTY4NDhkZjFlY2EyNzhjYThkNjQyZDdkNmE4N2E0OGMzYTQuLmJi
YTg0YjAyZDk2NmRhODYyYmE1YzQ3ZTA0M2U4MWU0NDZhY2I5ZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL2d0ay9XZWJWaWV3VGVzdEd0ay5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvZ3RrL1dlYlZpZXdUZXN0R3Rr
LmNwcApAQCAtMzIsOCArMzIsOCBAQCB2b2lkIFdlYlZpZXdUZXN0OjpwbGF0Zm9ybURlc3Ryb3ko
KQogCiB2b2lkIFdlYlZpZXdUZXN0OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJWaWV3KCkKIHsKLSAg
ICBnX2Fzc2VydChXRUJLSVRfV0VCX1ZJRVcobV93ZWJWaWV3KSk7Ci0gICAgZ19hc3NlcnQoZ19v
YmplY3RfaXNfZmxvYXRpbmcobV93ZWJWaWV3KSk7CisgICAgZ19hc3NlcnRfdHJ1ZShXRUJLSVRf
V0VCX1ZJRVcobV93ZWJWaWV3KSk7CisgICAgZ19hc3NlcnRfdHJ1ZShnX29iamVjdF9pc19mbG9h
dGluZyhtX3dlYlZpZXcpKTsKICAgICBnX29iamVjdF9yZWZfc2luayhtX3dlYlZpZXcpOwogfQog
CkBAIC03MCw3ICs3MCw3IEBAIHN0YXRpYyBnYm9vbGVhbiBwYXJlbnRXaW5kb3dNYXBwZWQoR3Rr
V2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50KiwgV2ViVmlld1Rlc3QqIHRlCiAKIHZvaWQgV2ViVmll
d1Rlc3Q6OnNob3dJbldpbmRvdyhHdGtXaW5kb3dUeXBlIHdpbmRvd1R5cGUpCiB7Ci0gICAgZ19h
c3NlcnQoIW1fcGFyZW50V2luZG93KTsKKyAgICBnX2Fzc2VydF9udWxsKG1fcGFyZW50V2luZG93
KTsKICAgICBtX3BhcmVudFdpbmRvdyA9IGd0a193aW5kb3dfbmV3KHdpbmRvd1R5cGUpOwogICAg
IGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIobV9wYXJlbnRXaW5kb3cpLCBHVEtfV0lE
R0VUKG1fd2ViVmlldykpOwogICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKG1fd2ViVmll
dykpOwpAQCAtNzksNyArNzksNyBAQCB2b2lkIFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3coR3Rr
V2luZG93VHlwZSB3aW5kb3dUeXBlKQogCiB2b2lkIFdlYlZpZXdUZXN0OjpzaG93SW5XaW5kb3dB
bmRXYWl0VW50aWxNYXBwZWQoR3RrV2luZG93VHlwZSB3aW5kb3dUeXBlLCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpCiB7Ci0gICAgZ19hc3NlcnQoIW1fcGFyZW50V2luZG93KTsKKyAgICBnX2Fzc2Vy
dF9udWxsKG1fcGFyZW50V2luZG93KTsKICAgICBtX3BhcmVudFdpbmRvdyA9IGd0a193aW5kb3df
bmV3KHdpbmRvd1R5cGUpOwogICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpCiAgICAgICAgIGd0a193
aW5kb3dfcmVzaXplKEdUS19XSU5ET1cobV9wYXJlbnRXaW5kb3cpLCB3aWR0aCwgaGVpZ2h0KTsK
QEAgLTkzLDkgKzkzLDkgQEAgdm9pZCBXZWJWaWV3VGVzdDo6c2hvd0luV2luZG93QW5kV2FpdFVu
dGlsTWFwcGVkKEd0a1dpbmRvd1R5cGUgd2luZG93VHlwZSwgaW50IHcKIAogdm9pZCBXZWJWaWV3
VGVzdDo6bW91c2VNb3ZlVG8oaW50IHgsIGludCB5LCB1bnNpZ25lZCBtb3VzZU1vZGlmaWVycykK
IHsKLSAgICBnX2Fzc2VydChtX3BhcmVudFdpbmRvdyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbCht
X3BhcmVudFdpbmRvdyk7CiAgICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0ID0gR1RLX1dJREdFVCht
X3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KGd0a193aWRnZXRfZ2V0X3JlYWxpemVkKHZpZXdXaWRn
ZXQpKTsKKyAgICBnX2Fzc2VydF90cnVlKGd0a193aWRnZXRfZ2V0X3JlYWxpemVkKHZpZXdXaWRn
ZXQpKTsKIAogICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9uZXcoR0RL
X01PVElPTl9OT1RJRlkpKTsKICAgICBldmVudC0+bW90aW9uLnggPSB4OwpAQCAtMTI0LDcgKzEy
NCw3IEBAIHZvaWQgV2ViVmlld1Rlc3Q6OmNsaWNrTW91c2VCdXR0b24oaW50IHgsIGludCB5LCB1
bnNpZ25lZCBidXR0b24sIHVuc2lnbmVkIG1vdXNlCiB2b2lkIFdlYlZpZXdUZXN0OjplbWl0UG9w
dXBNZW51U2lnbmFsKCkKIHsKICAgICBHdGtXaWRnZXQqIHZpZXdXaWRnZXQgPSBHVEtfV0lER0VU
KG1fd2ViVmlldyk7Ci0gICAgZ19hc3NlcnQoZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQodmlld1dp
ZGdldCkpOworICAgIGdfYXNzZXJ0X3RydWUoZ3RrX3dpZGdldF9nZXRfcmVhbGl6ZWQodmlld1dp
ZGdldCkpOwogCiAgICAgZ2Jvb2xlYW4gaGFuZGxlZDsKICAgICBnX3NpZ25hbF9lbWl0X2J5X25h
bWUodmlld1dpZGdldCwgInBvcHVwLW1lbnUiLCAmaGFuZGxlZCk7CkBAIC0xMzIsOSArMTMyLDkg
QEAgdm9pZCBXZWJWaWV3VGVzdDo6ZW1pdFBvcHVwTWVudVNpZ25hbCgpCiAKIHZvaWQgV2ViVmll
d1Rlc3Q6OmtleVN0cm9rZSh1bnNpZ25lZCBrZXlWYWwsIHVuc2lnbmVkIGtleU1vZGlmaWVycykK
IHsKLSAgICBnX2Fzc2VydChtX3BhcmVudFdpbmRvdyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbCht
X3BhcmVudFdpbmRvdyk7CiAgICAgR3RrV2lkZ2V0KiB2aWV3V2lkZ2V0ID0gR1RLX1dJREdFVCht
X3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KGd0a193aWRnZXRfZ2V0X3JlYWxpemVkKHZpZXdXaWRn
ZXQpKTsKKyAgICBnX2Fzc2VydF90cnVlKGd0a193aWRnZXRfZ2V0X3JlYWxpemVkKHZpZXdXaWRn
ZXQpKTsKIAogICAgIEdVbmlxdWVQdHI8R2RrRXZlbnQ+IGV2ZW50KGdka19ldmVudF9uZXcoR0RL
X0tFWV9QUkVTUykpOwogICAgIGV2ZW50LT5rZXkua2V5dmFsID0ga2V5VmFsOwpAQCAtMTU4LDkg
KzE1OCw5IEBAIHZvaWQgV2ViVmlld1Rlc3Q6OmtleVN0cm9rZSh1bnNpZ25lZCBrZXlWYWwsIHVu
c2lnbmVkIGtleU1vZGlmaWVycykKIAogdm9pZCBXZWJWaWV3VGVzdDo6ZG9Nb3VzZUJ1dHRvbkV2
ZW50KEdka0V2ZW50VHlwZSBldmVudFR5cGUsIGludCB4LCBpbnQgeSwgdW5zaWduZWQgYnV0dG9u
LCB1bnNpZ25lZCBtb3VzZU1vZGlmaWVycykKIHsKLSAgICBnX2Fzc2VydChtX3BhcmVudFdpbmRv
dyk7CisgICAgZ19hc3NlcnRfbm9ubnVsbChtX3BhcmVudFdpbmRvdyk7CiAgICAgR3RrV2lkZ2V0
KiB2aWV3V2lkZ2V0ID0gR1RLX1dJREdFVChtX3dlYlZpZXcpOwotICAgIGdfYXNzZXJ0KGd0a193
aWRnZXRfZ2V0X3JlYWxpemVkKHZpZXdXaWRnZXQpKTsKKyAgICBnX2Fzc2VydF90cnVlKGd0a193
aWRnZXRfZ2V0X3JlYWxpemVkKHZpZXdXaWRnZXQpKTsKIAogICAgIEdVbmlxdWVQdHI8R2RrRXZl
bnQ+IGV2ZW50KGdka19ldmVudF9uZXcoZXZlbnRUeXBlKSk7CiAgICAgZXZlbnQtPmJ1dHRvbi53
aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3codmlld1dpZGdldCk7Cg==
</data>
<flag name="review"
          id="375053"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>