<?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>60862</bug_id>
          
          <creation_ts>2011-05-15 17:42:58 -0700</creation_ts>
          <short_desc>Convert api tester over to using gtest expectations directly</short_desc>
          <delta_ts>2011-05-16 13:30:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>dslomov</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>404229</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-05-15 17:42:58 -0700</bug_when>
    <thetext>Convert api tester over to using gtest expectations directly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404230</commentid>
    <comment_count>1</comment_count>
      <attachid>93595</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-05-15 17:45:30 -0700</bug_when>
    <thetext>Created attachment 93595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404232</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-05-15 17:46:59 -0700</bug_when>
    <thetext>I am new to this gtest thing, so I am not sure how idiomatic these changes are.  I couldn&apos;t find a good way to state the expectation that a pointer was not null for instance, so I am just using EXPECT_TRUE(pointer).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404233</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-15 17:47:23 -0700</bug_when>
    <thetext>Attachment 93595 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/TestWebKitAPI/Ja...&quot; exit_code: 1

Tools/TestWebKitAPI/PlatformUtilities.h:57:  The parameter name &quot;string&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404235</commentid>
    <comment_count>4</comment_count>
      <attachid>93597</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-05-15 17:49:14 -0700</bug_when>
    <thetext>Created attachment 93597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404236</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-15 17:51:09 -0700</bug_when>
    <thetext>Attachment 93597 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/TestWebKitAPI/Ja...&quot; exit_code: 1

Tools/TestWebKitAPI/PlatformUtilities.h:57:  The parameter name &quot;string&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404259</commentid>
    <comment_count>6</comment_count>
      <attachid>93597</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-05-15 20:20:33 -0700</bug_when>
    <thetext>Comment on attachment 93597
Patch

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

&gt; Tools/TestWebKitAPI/PlatformUtilities.h:58
&gt;  std::string toSTD(WKStringRef string);
&gt; +std::string toSTD(WKRetainPtr&lt;WKStringRef&gt; string);
&gt; +std::string toSTD(const char* string);

That StyleQueue is so smart. We should remove those names!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404268</commentid>
    <comment_count>7</comment_count>
      <attachid>93597</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-05-15 21:46:53 -0700</bug_when>
    <thetext>Comment on attachment 93597
Patch

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

&gt; Tools/TestWebKitAPI/PlatformUtilities.h:63
&gt; +static inline ::testing::AssertionResult assertWKStrigEqual(const char* expected_expression, const char* actual_expression, T expected, U actual)

typo: Strig

I&apos;m surprised that EXPECT_STREQ just didn&apos;t work but this is perfect.

&gt; Tools/TestWebKitAPI/Tests/WebKit2/AboutBlankLoad.cpp:38
&gt; +    EXPECT_WK_STREQ(Util::MIMETypeForWKURLResponse(response), &quot;text/html&quot;);

This is fine. The one odd thing about this way of doing it is that your expected and actual are reversed, so if there is a mismatch, then it will say
EXPECT: &quot;foo&quot;
ACTUAL: &quot;text/html&quot;

I always find the ordering of this to be odd, but I think it was done to be consistent with what other pre-existing test frameworks were doing like JUnit.

(This ordering issue to true throughout these changes.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404269</commentid>
    <comment_count>8</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-05-15 21:49:11 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I couldn&apos;t find a good way to state the expectation that a pointer was not null for instance, so I am just using EXPECT_TRUE(pointer).

That&apos;s perfect. I think it was debated at one point about adding something specifically for this but I think they didn&apos;t see enough value over just plain EXPECT_TRUE. (Actually, I&apos;m not 100% sure of the reasons, but I could probably find out why there isn&apos;t a specific EXPECT for this if you want to know.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404573</commentid>
    <comment_count>9</comment_count>
      <attachid>93665</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-05-16 10:26:29 -0700</bug_when>
    <thetext>Created attachment 93665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404574</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-05-16 10:27:46 -0700</bug_when>
    <thetext>This version fixes the expected/actual ordering issue and adds NULL/NON_NULL macros for convenience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404586</commentid>
    <comment_count>11</comment_count>
      <attachid>93665</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-05-16 10:37:40 -0700</bug_when>
    <thetext>Comment on attachment 93665
Patch

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

&gt; Tools/TestWebKitAPI/PlatformUtilities.h:63
&gt; +static inline ::testing::AssertionResult assertWKStrigEqual(const char* expected_expression, const char* actual_expression, T expected, U actual)

typo: strig

I&apos;m surprised that EXPECT_STREQ doesn&apos;t work for you. (I see you used it with char* inside of TEST(WebKit2, WKString)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404629</commentid>
    <comment_count>12</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-05-16 11:36:03 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 93665 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=93665&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/PlatformUtilities.h:63
&gt; &gt; +static inline ::testing::AssertionResult assertWKStrigEqual(const char* expected_expression, const char* actual_expression, T expected, U actual)
&gt; 
&gt; typo: strig
&gt; 
&gt; I&apos;m surprised that EXPECT_STREQ doesn&apos;t work for you. (I see you used it with char* inside of TEST(WebKit2, WKString)

EXPECT_STREQ only works with char*, the idea of this is you can pass a WKStringRef or a WKRetainPtr&lt;WKStringRef&gt; as either parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>404677</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-05-16 13:28:25 -0700</bug_when>
    <thetext>Committed r86602: &lt;http://trac.webkit.org/changeset/86602&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93595</attachid>
            <date>2011-05-15 17:45:30 -0700</date>
            <delta_ts>2011-05-15 17:49:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60862-20110515174529.patch</filename>
            <type>text/plain</type>
            <size>37982</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg2NTE1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjIgQEAKKzIwMTEtMDUtMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IGFwaSB0
ZXN0ZXIgb3ZlciB0byB1c2luZyBndGVzdCBleHBlY3RhdGlvbnMgZGlyZWN0bHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwODYyCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnRvU1REKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRp
bGl0aWVzLmg6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjphc3NlcnRXS1N0cmlnRXF1
YWwpOgorICAgICAgICBBZGQgY29udmVuaWVuY2UgbWFjcm8gdG8gY29tcGFyZSBXSzIgc3RyaW5n
cy4gQWRkIHNvbWUgb3ZlcmxvYWRzIG9mIHRvU1REIHRvIG1ha2UKKyAgICAgICAgdGhlIGltcGxl
bWVudGF0aW9uIG9mIHRoZSBtYWNybyBzaW1wbGVyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0Lmg6CisgICAgICAgIFJlbW92ZSBURVNUX0FTU0VSVCBmb3J3YXJkZXIuCisKKyAgICAg
ICAgW1Rlc3QgY2hhbmdlcyBlbGlkZWRdCisKIDIwMTEtMDUtMTUgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENocmlzIEplcmRvbmVrLgpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAJKHJldmlzaW9uIDg2NTA5
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDEzICs0OCwxMyBAQCBzdGF0aWMgdm9pZCBqYXZhU2NyaXB0Q2FsbGJhY2soV0tT
ZXJpYWxpCiAgICAgSmF2YVNjcmlwdENhbGxiYWNrQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19j
YXN0PEphdmFTY3JpcHRDYWxsYmFja0NvbnRleHQqPihjdHgpOwogCiAgICAgSlNHbG9iYWxDb250
ZXh0UmVmIHNjcmlwdENvbnRleHQgPSBKU0dsb2JhbENvbnRleHRDcmVhdGUoMCk7Ci0gICAgVEVT
VF9BU1NFUlQoc2NyaXB0Q29udGV4dCk7CisgICAgRVhQRUNUX1RSVUUoc2NyaXB0Q29udGV4dCk7
CiAKICAgICBKU1ZhbHVlUmVmIHNjcmlwdFZhbHVlID0gV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVE
ZXNlcmlhbGl6ZShyZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUsIHNjcmlwdENvbnRleHQsIDAp
OwotICAgIFRFU1RfQVNTRVJUKHNjcmlwdFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShzY3JpcHRW
YWx1ZSk7CiAKICAgICBKU1N0cmluZ1JlZiBzY3JpcHRTdHJpbmcgPSBKU1ZhbHVlVG9TdHJpbmdD
b3B5KHNjcmlwdENvbnRleHQsIHNjcmlwdFZhbHVlLCAwKTsKLSAgICBURVNUX0FTU0VSVChzY3Jp
cHRTdHJpbmcpOworICAgIEVYUEVDVF9UUlVFKHNjcmlwdFN0cmluZyk7CiAKICAgICBjb250ZXh0
LT5kaWRGaW5pc2ggPSB0cnVlOwogICAgIGNvbnRleHQtPmRpZE1hdGNoRXhwZWN0ZWRTdHJpbmcg
PSBKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHNjcmlwdFN0cmluZywgY29udGV4dC0+ZXhw
ZWN0ZWRTdHJpbmcpOwpAQCAtNjIsMTggKzYyLDEzIEBAIHN0YXRpYyB2b2lkIGphdmFTY3JpcHRD
YWxsYmFjayhXS1NlcmlhbGkKICAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0U3RyaW5nKTsKICAg
ICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKHNjcmlwdENvbnRleHQpOwogCi0gICAgVEVTVF9BU1NF
UlQoIWVycm9yKTsKLX0KLQotc3RhdGljIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3ayhjb25z
dCBjaGFyKiB1dGY4U3RyaW5nKQotewotICAgIHJldHVybiBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4oQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXRmOFN0cmluZykpOwor
ICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7CiB9CiAKIGJvb2wgcnVuSlNUZXN0KFdLUGFnZVJlZiBw
YWdlLCBjb25zdCBjaGFyKiBzY3JpcHQsIGNvbnN0IGNoYXIqIGV4cGVjdGVkUmVzdWx0KQogewog
ICAgIEphdmFTY3JpcHRDYWxsYmFja0NvbnRleHQgY29udGV4dChleHBlY3RlZFJlc3VsdCk7Ci0g
ICAgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHBhZ2UsIHdrKHNjcmlwdCkuZ2V0KCks
ICZjb250ZXh0LCBqYXZhU2NyaXB0Q2FsbGJhY2spOworICAgIFdLUGFnZVJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZShwYWdlLCBVdGlsOjp0b1dLKHNjcmlwdCkuZ2V0KCksICZjb250ZXh0LCBqYXZh
U2NyaXB0Q2FsbGJhY2spOwogICAgIFV0aWw6OnJ1bigmY29udGV4dC5kaWRGaW5pc2gpOwogICAg
IHJldHVybiBjb250ZXh0LmRpZE1hdGNoRXhwZWN0ZWRTdHJpbmc7CiB9CkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gODY1MDkpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTgsNiArNTgsMTYgQEAgc3RkOjpzdHJpbmcgdG9TVEQoV0tTdHJpbmdSZWYgc3RyaW5nKQog
ICAgIHJldHVybiBzdGQ6OnN0cmluZyhidWZmZXIuZ2V0KCksIHN0cmluZ0xlbmd0aCAtIDEpOwog
fQogCitzdGQ6OnN0cmluZyB0b1NURChXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gc3RyaW5nKQor
eworICAgIHJldHVybiB0b1NURChzdHJpbmcuZ2V0KCkpOworfQorCitzdGQ6OnN0cmluZyB0b1NU
RChjb25zdCBjaGFyKiBzdHJpbmcpCit7CisgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKHN0cmluZyk7
Cit9CisKIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0b1dLKGNvbnN0IGNoYXIqIHV0ZjhTdHJp
bmcpCiB7CiAgICAgcmV0dXJuIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPihBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1dGY4U3RyaW5nKSk7CkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCShyZXZpc2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTAg
KzI2LDExIEBACiAjaWZuZGVmIFBsYXRmb3JtVXRpbGl0aWVzX2gKICNkZWZpbmUgUGxhdGZvcm1V
dGlsaXRpZXNfaAogCi0jaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQyLmg+CiAjaW5jbHVkZSA8V2Vi
S2l0Mi9XS1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUg
PFdlYktpdDIvV2ViS2l0Mi5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVkZSA8
c3RyaW5nPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiBuYW1lc3BhY2UgVXRpbCB7CkBAIC01Myw4ICs1NCwyMCBAQCBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gTUlNRVR5cGVGb3JXS1VSCiBib29sIGlzS2V5RG93bihXS05hdGl2ZUV2ZW50
UHRyKTsKIAogc3RkOjpzdHJpbmcgdG9TVEQoV0tTdHJpbmdSZWYgc3RyaW5nKTsKK3N0ZDo6c3Ry
aW5nIHRvU1REKFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdHJpbmcpOworc3RkOjpzdHJpbmcg
dG9TVEQoY29uc3QgY2hhciogc3RyaW5nKTsKKwogV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRv
V0soY29uc3QgY2hhciogdXRmOFN0cmluZyk7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+CitzdGF0aWMgaW5saW5lIDo6dGVzdGluZzo6QXNzZXJ0aW9uUmVzdWx0IGFzc2VydFdL
U3RyaWdFcXVhbChjb25zdCBjaGFyKiBleHBlY3RlZF9leHByZXNzaW9uLCBjb25zdCBjaGFyKiBh
Y3R1YWxfZXhwcmVzc2lvbiwgVCBleHBlY3RlZCwgVSBhY3R1YWwpCit7CisgICAgcmV0dXJuIDo6
dGVzdGluZzo6aW50ZXJuYWw6OkNtcEhlbHBlclNUUkVRKGV4cGVjdGVkX2V4cHJlc3Npb24sIGFj
dHVhbF9leHByZXNzaW9uLCBVdGlsOjp0b1NURChleHBlY3RlZCkuY19zdHIoKSwgVXRpbDo6dG9T
VEQoYWN0dWFsKS5jX3N0cigpKTsKK30KKworI2RlZmluZSBFWFBFQ1RfV0tfU1RSRVEoZXhwZWN0
ZWQsIGFjdHVhbCkgXAorICAgIEVYUEVDVF9QUkVEX0ZPUk1BVDIoVGVzdFdlYktpdEFQSTo6VXRp
bDo6YXNzZXJ0V0tTdHJpZ0VxdWFsLCBleHBlY3RlZCwgYWN0dWFsKQorCiB9IC8vIG5hbWVzcGFj
ZSBVdGlsCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdC5o
CShyZXZpc2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwxMyArMjYsMTAgQEAKICNpZm5kZWYgVGVzdF9oCiAjZGVmaW5lIFRlc3Rf
aAogCi0jaW5jbHVkZSAiVGVzdHNDb250cm9sbGVyLmgiCi0KICNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLSNkZWZpbmUgVEVTVF9BU1NFUlQo
ZXhwcmVzc2lvbikgRVhQRUNUX1RSVUUoZXhwcmVzc2lvbikKICNkZWZpbmUgVEVTVF9BU1NFUlRf
UkVUVVJOKGV4cHJlc3Npb24sIHJldHVyblZhbHVlKSBcCiAgICAgZG8geyBcCiAgICAgICAgIGlm
ICghKGV4cHJlc3Npb24pKSB7IFwKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9BYm91dEJsYW5rTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL0Fib3V0QmxhbmtMb2FkLmNwcAkocmV2aXNpb24gODY1MDkpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQWJvdXRCbGFua0xvYWQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHN0YXRpYyBib29sIGRvbmU7CiAKIHN0YXRpYyB2
b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tVUkxS
ZXNwb25zZVJlZiByZXNwb25zZSwgV0tVUkxSZXF1ZXN0UmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVu
ZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCiB7Ci0gICAgVEVTVF9BU1NF
UlQoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhVdGlsOjpNSU1FVHlwZUZvcldLVVJMUmVz
cG9uc2UocmVzcG9uc2UpLmdldCgpLCAidGV4dC9odG1sIikpOworICAgIEVYUEVDVF9XS19TVFJF
UShVdGlsOjpNSU1FVHlwZUZvcldLVVJMUmVzcG9uc2UocmVzcG9uc2UpLCAidGV4dC9odG1sIik7
CiAKICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2UobGlzdGVuZXIpOwogICAgIGRvbmUgPSB0
cnVlOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0NhbkhhbmRsZVJl
cXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9DYW5IYW5kbGVSZXF1ZXN0LmNwcAkocmV2aXNpb24gODY1MDkpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvQ2FuSGFuZGxlUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDggKzM5LDkgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0
ZQogewogICAgIGRpZFJlY2VpdmVNZXNzYWdlID0gdHJ1ZTsKIAotICAgIFRFU1RfQVNTRVJUKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJEaWRDaGVja0NhbkhhbmRs
ZVJlcXVlc3QiKSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tHZXRUeXBlSUQoYm9keSkgPT0gV0tCb29s
ZWFuR2V0VHlwZUlEKCkpOworICAgIEVYUEVDVF9XS19TVFJFUShtZXNzYWdlTmFtZSwgIkRpZENo
ZWNrQ2FuSGFuZGxlUmVxdWVzdCIpOworICAgIEVYUEVDVF9FUShXS0dldFR5cGVJRChib2R5KSwg
V0tCb29sZWFuR2V0VHlwZUlEKCkpOworCiAgICAgY2FuSGFuZGxlUmVxdWVzdCA9IFdLQm9vbGVh
bkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oYm9keSkpOwogfQogCkBAIC02Niw3
ICs2Nyw3IEBAIFRFU1QoV2ViS2l0MiwgQ2FuSGFuZGxlUmVxdWVzdCkKIAogICAgIFdLQ29udGV4
dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShjb250ZXh0LmdldCgpLCBVdGlsOjp0b1dLKCJD
aGVja0NhbkhhbmRsZVJlcXVlc3QiKS5nZXQoKSwgMCk7CiAgICAgVXRpbDo6cnVuKCZkaWRSZWNl
aXZlTWVzc2FnZSk7Ci0gICAgVEVTVF9BU1NFUlQoY2FuSGFuZGxlUmVxdWVzdCk7CisgICAgRVhQ
RUNUX1RSVUUoY2FuSGFuZGxlUmVxdWVzdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Db29raWVNYW5h
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
Q29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDg2NTA5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL0Nvb2tpZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4
ICs0MSw5IEBAIHN0YXRpYyBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IHdrQ29udGUKIAogc3Rh
dGljIHZvaWQgZGlkR2V0VGVzdEhUVFBDb29raWVBY2NlcHRQb2xpY3koV0tIVFRQQ29va2llQWNj
ZXB0UG9saWN5IHBvbGljeSwgV0tFcnJvclJlZiwgdm9pZCogY29udGV4dCkKIHsKLSAgICBURVNU
X0FTU0VSVChjb250ZXh0ID09IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4MTIzNDU3OCkpOwot
ICAgIFRFU1RfQVNTRVJUKHBvbGljeSA9PSB0ZXN0UG9saWN5KTsKKyAgICBFWFBFQ1RfRVEoY29u
dGV4dCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMHgxMjM0NTc4KSk7CisgICAgRVhQRUNUX0VR
KHBvbGljeSwgdGVzdFBvbGljeSk7CisKICAgICBXS0Nvb2tpZU1hbmFnZXJSZWYgY29va2llTWFu
YWdlciA9IFdLQ29udGV4dEdldENvb2tpZU1hbmFnZXIod2tDb250ZXh0LmdldCgpKTsKICAgICBX
S0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNvb2tpZU1hbmFnZXIsIHVz
ZXJQb2xpY3kpOwogCkBAIC01MSw3ICs1Miw3IEBAIHN0YXRpYyB2b2lkIGRpZEdldFRlc3RIVFRQ
Q29va2llQWNjZXB0UG8KIAogc3RhdGljIHZvaWQgZGlkR2V0VXNlckhUVFBDb29raWVBY2NlcHRQ
b2xpY3koV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgV0tFcnJvclJlZiwgdm9pZCog
Y29udGV4dCkKIHsKLSAgICBURVNUX0FTU0VSVChjb250ZXh0ID09IHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KDB4MTIzNDU3OCkpOworICAgIEVYUEVDVF9FUShjb250ZXh0LCByZWludGVycHJldF9j
YXN0PHZvaWQqPigweDEyMzQ1NzgpKTsKIAogICAgIHVzZXJQb2xpY3kgPSBwb2xpY3k7CiAKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Eb2N1bWVudFN0YXJ0VXNlclNj
cmlwdEFsZXJ0Q3Jhc2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9Eb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2guY3BwCShyZXZpc2lv
biA4NjUwOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Eb2N1bWVudFN0
YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW5jbHVkZSA8V2ViS2l0Mi9XZWJL
aXQyLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYktp
dDIvV0tSZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC0zNiw5
ICszNyw5IEBAIHN0YXRpYyBib29sIGRvbmU7CiAKIHN0YXRpYyB2b2lkIHJ1bkphdmFTY3JpcHRB
bGVydChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgYWxlcnRUZXh0LCBXS0ZyYW1lUmVmIGZy
YW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIFRFU1RfQVNTRVJUKGZyYW1lKTsK
LSAgICBURVNUX0FTU0VSVChXS0ZyYW1lR2V0UGFnZShmcmFtZSkgPT0gcGFnZSk7Ci0gICAgVEVT
VF9BU1NFUlQoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhhbGVydFRleHQsICJhbiBhbGVy
dCIpKTsKKyAgICBBU1NFUlRfVFJVRShmcmFtZSk7CisgICAgRVhQRUNUX0VRKFdLRnJhbWVHZXRQ
YWdlKGZyYW1lKSwgcGFnZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKGFsZXJ0VGV4dCwgImFuIGFs
ZXJ0Iik7CiAKICAgICBkb25lID0gdHJ1ZTsKIH0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9FdmFsdWF0ZUphdmFTY3JpcHQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9FdmFsdWF0ZUphdmFTY3JpcHQuY3BwCShyZXZp
c2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9FdmFsdWF0
ZUphdmFTY3JpcHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMiArMzgsMTIgQEAgc3RhdGlj
IGJvb2wgdGVzdERvbmU7CiAKIHN0YXRpYyB2b2lkIGRpZFJ1bkphdmFTY3JpcHQoV0tTZXJpYWxp
emVkU2NyaXB0VmFsdWVSZWYgcmVzdWx0U2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVm
IGVycm9yLCB2b2lkKiBjb250ZXh0KQogewotICAgIFRFU1RfQVNTRVJUKGNvbnRleHQgPT0gcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oMHgxMjM0NTc4KSk7Ci0gICAgVEVTVF9BU1NFUlQoIXJlc3Vs
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CisgICAgRVhQRUNUX0VRKGNvbnRleHQsIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KDB4MTIzNDU3OCkpOworICAgIEFTU0VSVF9UUlVFKCFyZXN1bHRTZXJp
YWxpemVkU2NyaXB0VmFsdWUpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhbHNvIGNoZWNr
IHRoZSBlcnJvciwgYnV0IHJpZ2h0IG5vdyBpdCdzIGFsd2F5cyBudWxsLgogICAgIC8vIEFzc2Vy
dCB0aGF0IGl0J3MgbnVsbCBzbyB3ZSBjYW4gcmV2aXNpdCB3aGVuIHRoaXMgY2hhbmdlcy4KLSAg
ICBURVNUX0FTU0VSVCghZXJyb3IpOworICAgIEFTU0VSVF9UUlVFKCFlcnJvcik7CiAKICAgICB0
ZXN0RG9uZSA9IHRydWU7CiB9CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvRmFpbGVkTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL0ZhaWxlZExvYWQuY3BwCShyZXZpc2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9GYWlsZWRMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsMTAgKzM4LDEwIEBAIHN0YXRpYyBib29sIHRlc3REb25lOwogCiBzdGF0aWMgdm9pZCBkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJh
bWVSZWYgZnJhbWUsIFdLRXJyb3JSZWYgZXJyb3IsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBURVNUX0FTU0VSVChXS0ZyYW1lR2V0RnJhbWVMb2Fk
U3RhdGUoZnJhbWUpID09IGtXS0ZyYW1lTG9hZFN0YXRlRmluaXNoZWQpOworICAgIEVYUEVDVF9F
UShXS0ZyYW1lR2V0RnJhbWVMb2FkU3RhdGUoZnJhbWUpLCBrV0tGcmFtZUxvYWRTdGF0ZUZpbmlz
aGVkKTsKIAogICAgIFdLVVJMUmVmIHVybCA9IFdLRnJhbWVDb3B5UHJvdmlzaW9uYWxVUkwoZnJh
bWUpOwotICAgIFRFU1RfQVNTRVJUKCF1cmwpOworICAgIEVYUEVDVF9UUlVFKCF1cmwpOwogCiAg
ICAgdGVzdERvbmUgPSB0cnVlOwogfQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL0ZpbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9GaW5kLmNwcAkocmV2aXNpb24gODY1MDkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvRmluZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDggKzQyLDggQEAg
c3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZQogCiBzdGF0aWMgdm9pZCBk
aWRDb3VudFN0cmluZ01hdGNoZXMoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHN0cmluZywg
dW5zaWduZWQgbnVtTWF0Y2hlcywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBURVNU
X0FTU0VSVChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHN0cmluZywgIkhlbGxvIikpOwot
ICAgIFRFU1RfQVNTRVJUKG51bU1hdGNoZXMgPT0gMyk7CisgICAgRVhQRUNUX1dLX1NUUkVRKHN0
cmluZywgIkhlbGxvIik7CisgICAgRVhQRUNUX0VRKG51bU1hdGNoZXMsIDN1KTsKIAogICAgIGRp
ZENhbGxDb3VudFN0cmluZ01hdGNoZXMgPSB0cnVlOwogfQpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL0ZvcmNlUmVwYWludC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZvcmNlUmVwYWludC5jcHAJKHJldmlzaW9uIDg2
NTA5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZvcmNlUmVwYWludC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGJvb2wgdGVzdDJEb25l
OwogICAgIAogdm9pZCBkaWRGb3JjZVJlcGFpbnQoV0tFcnJvclJlZiBlcnJvciwgdm9pZCopCiB7
Ci0gICAgVEVTVF9BU1NFUlQoIWVycm9yKTsKKyAgICBFWFBFQ1RfVFJVRSghZXJyb3IpOwogICAg
IHRlc3QyRG9uZSA9IHRydWU7CiB9CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9GcmFtZU1JTUVUeXBlSFRNTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZyYW1lTUlNRVR5cGVIVE1MLmNwcAkocmV2aXNpb24gODY1
MDkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRnJhbWVNSU1FVHlwZUhU
TUwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwyMCArMzYsMjAgQEAgc3RhdGljIGJvb2wgdGVz
dERvbmU7CiAKIHN0YXRpYyB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQ
YWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tNSU1F
KEFkb3B0V0ssIFdLRnJhbWVDb3B5TUlNRVR5cGUoZnJhbWUpKTsKLSAgICBURVNUX0FTU0VSVChX
S1N0cmluZ0lzRW1wdHkod2tNSU1FLmdldCgpKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHdrTUlNRSA9IGFkb3B0V0soV0tGcmFtZUNvcHlNSU1FVHlwZShmcmFtZSkpOworICAgIEVY
UEVDVF9UUlVFKFdLU3RyaW5nSXNFbXB0eSh3a01JTUUuZ2V0KCkpKTsKIH0KIAogc3RhdGljIHZv
aWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1l
LCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTUlNRShBZG9wdFdLLCBXS0ZyYW1lQ29weU1JTUVUeXBl
KGZyYW1lKSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyh3
a01JTUUuZ2V0KCksICJ0ZXh0L2h0bWwiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IHdrTUlNRSA9IGFkb3B0V0soV0tGcmFtZUNvcHlNSU1FVHlwZShmcmFtZSkpOworICAgIEVYUEVD
VF9XS19TVFJFUSh3a01JTUUsICJ0ZXh0L2h0bWwiKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkRmlu
aXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVS
ZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IHdrTUlNRShBZG9wdFdLLCBXS0ZyYW1lQ29weU1JTUVUeXBlKGZyYW1lKSk7
Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyh3a01JTUUuZ2V0
KCksICJ0ZXh0L2h0bWwiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTUlNRSA9
IGFkb3B0V0soV0tGcmFtZUNvcHlNSU1FVHlwZShmcmFtZSkpOworICAgIEVYUEVDVF9XS19TVFJF
USh3a01JTUUsICJ0ZXh0L2h0bWwiKTsKIAogICAgIHRlc3REb25lID0gdHJ1ZTsKIH0KSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9GcmFtZU1JTUVUeXBlUE5HLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRnJhbWVNSU1F
VHlwZVBORy5jcHAJKHJldmlzaW9uIDg2NTA5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL0ZyYW1lTUlNRVR5cGVQTkcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwyMCAr
MzYsMjAgQEAgc3RhdGljIGJvb2wgdGVzdERvbmU7CiAKIHN0YXRpYyB2b2lkIGRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdL
VHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gd2tNSU1FKEFkb3B0V0ssIFdLRnJhbWVDb3B5TUlNRVR5cGUoZnJh
bWUpKTsKLSAgICBURVNUX0FTU0VSVChXS1N0cmluZ0lzRW1wdHkod2tNSU1FLmdldCgpKSk7Cisg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTUlNRSA9IGFkb3B0V0soV0tGcmFtZUNvcHlN
SU1FVHlwZShmcmFtZSkpOworICAgIEVYUEVDVF9UUlVFKFdLU3RyaW5nSXNFbXB0eSh3a01JTUUu
Z2V0KCkpKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJl
ZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTUlNRShBZG9w
dFdLLCBXS0ZyYW1lQ29weU1JTUVUeXBlKGZyYW1lKSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyh3a01JTUUuZ2V0KCksICJpbWFnZS9wbmciKSk7CisgICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTUlNRSA9IGFkb3B0V0soV0tGcmFtZUNvcHlNSU1F
VHlwZShmcmFtZSkpOworICAgIEVYUEVDVF9XS19TVFJFUSh3a01JTUUsICJpbWFnZS9wbmciKTsK
IH0KIAogc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBX
S0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTUlNRShBZG9wdFdLLCBXS0Zy
YW1lQ29weU1JTUVUeXBlKGZyYW1lKSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyh3a01JTUUuZ2V0KCksICJpbWFnZS9wbmciKSk7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHdrTUlNRSA9IGFkb3B0V0soV0tGcmFtZUNvcHlNSU1FVHlwZShmcmFt
ZSkpOworICAgIEVYUEVDVF9XS19TVFJFUSh3a01JTUUsICJpbWFnZS9wbmciKTsKIAogICAgIHRl
c3REb25lID0gdHJ1ZTsKIH0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9JbmplY3RlZEJ1bmRsZUJhc2ljX0J1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlQmFzaWNfQnVuZGxlLmNwcAko
cmV2aXNpb24gODY1MDkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5q
ZWN0ZWRCdW5kbGVCYXNpY19CdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCw4
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVm
IGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgewotICAgICAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gZG9uZU1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJEb25lTWVzc2FnZU5hbWUiKSk7Ci0gICAgICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBkb25lTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIkRvbmVNZXNzYWdlQm9keSIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IGRvbmVNZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkRvbmVNZXNzYWdlTmFtZSIpKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IGRvbmVNZXNzYWdlQm9keSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkRvbmVNZXNzYWdlQm9keSIpKTsKICAgICAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShidW5k
bGUsIGRvbmVNZXNzYWdlTmFtZS5nZXQoKSwgZG9uZU1lc3NhZ2VCb2R5LmdldCgpKTsKICAgICB9
CiB9OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL01vdXNlTW92ZUFm
dGVyQ3Jhc2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9Nb3VzZU1vdmVBZnRlckNyYXNoLmNwcAkocmV2aXNpb24gODY1MDkpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTW91c2VNb3ZlQWZ0ZXJDcmFzaC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTgzLDEzICs4MywxMyBAQCBURVNUKFdlYktpdDIsIE1vdXNlTW92ZUFmdGVy
Q3Jhc2gpCiAgICAgLy8gV2FpdCB1bnRpbCB3ZSBsb2FkIHRoZSBwYWdlIGEgc2Vjb25kIHRpbWUg
KHZpYSByZWxvYWRpbmcgdGhlIHBhZ2UgaW4gcHJvY2Vzc0RpZENyYXNoKS4KICAgICBVdGlsOjpy
dW4oJmRpZEZpbmlzaExvYWQpOwogCi0gICAgVEVTVF9BU1NFUlQocnVuSlNUZXN0KHdlYlZpZXcu
cGFnZSgpLCAiZGlkTW92ZU1vdXNlKCkiLCAiZmFsc2UiKSk7CisgICAgRVhQRUNUX1RSVUUocnVu
SlNUZXN0KHdlYlZpZXcucGFnZSgpLCAiZGlkTW92ZU1vdXNlKCkiLCAiZmFsc2UiKSk7CiAKICAg
ICAvLyBPbmNlIHRoZSBwYWdlIGhhcyByZWxvYWRlZCwgdHJ5IG1vdmluZyB0aGUgbW91c2UgdG8g
dmVyaWZ5IHRoYXQgd2UgZ2V0IG1vdXNlIG1vdmUgZXZlbnRzLgogICAgIHdlYlZpZXcuc2ltdWxh
dGVNb3VzZU1vdmUoMTAsIDEwKTsKICAgICB3ZWJWaWV3LnNpbXVsYXRlTW91c2VNb3ZlKDIwLCAy
MCk7CiAKLSAgICBURVNUX0FTU0VSVChydW5KU1Rlc3Qod2ViVmlldy5wYWdlKCksICJkaWRNb3Zl
TW91c2UoKSIsICJ0cnVlIikpOworICAgIEVYUEVDVF9UUlVFKHJ1bkpTVGVzdCh3ZWJWaWV3LnBh
Z2UoKSwgImRpZE1vdmVNb3VzZSgpIiwgInRydWUiKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYWdl
TG9hZEJhc2ljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvUGFnZUxvYWRCYXNpYy5jcHAJKHJldmlzaW9uIDg2NTA5KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VMb2FkQmFzaWMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MCwxNCArNTAsMTMgQEAgc3RydWN0IFN0YXRlIHsKIHN0YXRpYyB2b2lkIGRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdL
VHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBTdGF0ZSog
c3RhdGUgPSByZWludGVycHJldF9jYXN0PFN0YXRlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpOwotICAgIFRFU1RfQVNTRVJUKHN0YXRlLT5kaWREZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKTsKLSAgICBURVNUX0FTU0VSVCghc3RhdGUtPmRpZENvbW1pdExvYWRGb3JGcmFt
ZSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUtPmRpZERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24pOworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS0+ZGlkQ29tbWl0TG9hZEZvckZyYW1lKTsK
IAogICAgIC8vIFRoZSBjb21taXRlZCBVUkwgc2hvdWxkIGJlIG51bGwuCi0gICAgVEVTVF9BU1NF
UlQoIVdLRnJhbWVDb3B5VVJMKGZyYW1lKSk7Ci0KLSAgICBURVNUX0FTU0VSVCghc3RhdGUtPmRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOworICAgIEVYUEVDVF9UUlVFKCFXS0ZyYW1l
Q29weVVSTChmcmFtZSkpOwogCisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLT5kaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKTsKIAogICAgIHN0YXRlLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lID0gdHJ1ZTsKIH0KQEAgLTY1LDExICs2NCwxMSBAQCBzdGF0aWMgdm9pZCBkaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyCiBzdGF0aWMgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJh
bWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAgICBTdGF0ZSogc3RhdGUgPSByZWludGVycHJl
dF9jYXN0PFN0YXRlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotICAgIFRFU1Rf
QVNTRVJUKHN0YXRlLT5kaWREZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKTsKLSAgICBU
RVNUX0FTU0VSVChzdGF0ZS0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk7CisgICAg
RVhQRUNUX1RSVUUoc3RhdGUtPmRpZERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOwor
ICAgIEVYUEVDVF9UUlVFKHN0YXRlLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTsK
IAogICAgIC8vIFRoZSBwcm92aXNpb25hbCBVUkwgc2hvdWxkIGJlIG51bGwuCi0gICAgVEVTVF9B
U1NFUlQoIVdLRnJhbWVDb3B5UHJvdmlzaW9uYWxVUkwoZnJhbWUpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoV0tGcmFtZUNvcHlQcm92aXNpb25hbFVSTChmcmFtZSkpOwogCiAgICAgc3RhdGUtPmRpZENv
bW1pdExvYWRGb3JGcmFtZSA9IHRydWU7CiB9CkBAIC03NywxMiArNzYsMTIgQEAgc3RhdGljIHZv
aWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZQogc3RhdGljIHZvaWQgZGlkRmluaXNoTG9h
ZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNl
ckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgU3RhdGUqIHN0YXRlID0gcmVp
bnRlcnByZXRfY2FzdDxTdGF0ZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLSAg
ICBURVNUX0FTU0VSVChzdGF0ZS0+ZGlkRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik7
Ci0gICAgVEVTVF9BU1NFUlQoc3RhdGUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUp
OwotICAgIFRFU1RfQVNTRVJUKHN0YXRlLT5kaWRDb21taXRMb2FkRm9yRnJhbWUpOworICAgIEVY
UEVDVF9UUlVFKHN0YXRlLT5kaWREZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKTsKKyAg
ICBFWFBFQ1RfVFJVRShzdGF0ZS0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk7Cisg
ICAgRVhQRUNUX1RSVUUoc3RhdGUtPmRpZENvbW1pdExvYWRGb3JGcmFtZSk7CiAKICAgICAvLyBU
aGUgcHJvdmlzaW9uYWwgVVJMIHNob3VsZCBiZSBudWxsLgotICAgIFRFU1RfQVNTRVJUKCFXS0Zy
YW1lQ29weVByb3Zpc2lvbmFsVVJMKGZyYW1lKSk7CisgICAgRVhQRUNUX1RSVUUoIVdLRnJhbWVD
b3B5UHJvdmlzaW9uYWxVUkwoZnJhbWUpKTsKIAogICAgIHRlc3QxRG9uZSA9IHRydWU7CiB9CkBA
IC05MCw4ICs4OSw4IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2UK
IHN0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV0tQYWdlUmVmIHBh
Z2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlw
ZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRvbiBtb3VzZUJ1
dHRvbiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBs
aXN0ZW5lciwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewog
ICAgIFN0YXRlKiBzdGF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8U3RhdGUqPihjb25zdF9jYXN0PHZv
aWQqPihjbGllbnRJbmZvKSk7Ci0gICAgVEVTVF9BU1NFUlQoIXN0YXRlLT5kaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKTsKLSAgICBURVNUX0FTU0VSVCghc3RhdGUtPmRpZENvbW1pdExv
YWRGb3JGcmFtZSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLT5kaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUtPmRpZENvbW1pdExvYWRGb3JG
cmFtZSk7CiAKICAgICBzdGF0ZS0+ZGlkRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9
IHRydWU7CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYWdlTG9h
ZERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFnZUxvYWREaWRDaGFuZ2VMb2NhdGlv
bldpdGhpblBhZ2VGb3JGcmFtZS5jcHAJKHJldmlzaW9uIDg2NTA5KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdl
Rm9yRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMyArNDcsMTMgQEAgc3RhdGljIGJv
b2wgZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlOwogc3RhdGljIHZvaWQgZGlkU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbkZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uVHlwZSB0eXBlLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQogewogICAgIGlm
ICghZGlkUG9wU3RhdGVXaXRoaW5QYWdlKSB7Ci0gICAgICAgIFRFU1RfQVNTRVJUKHR5cGUgPT0g
a1dLU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVBvcCk7Ci0gICAgICAgIFRFU1Rf
QVNTRVJUKCFkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UpOworICAgICAgICBFWFBFQ1RfRVEo
dHlwZSwga1dLU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVBvcCk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UpOwogICAgICAgICBkaWRQ
b3BTdGF0ZVdpdGhpblBhZ2UgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
VEVTVF9BU1NFUlQodHlwZSA9PSBrV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uQW5jaG9yTmF2aWdh
dGlvbik7CisgICAgRVhQRUNUX0VRKHR5cGUsIGtXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25BbmNo
b3JOYXZpZ2F0aW9uKTsKICAgICBkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UgPSB0cnVlOwog
fQogCkBAIC03OSw3ICs3OSw3IEBAIFRFU1QoV2ViS2l0MiwgUGFnZUxvYWREaWRDaGFuZ2VMb2Nh
dGlvblcKIAogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmxBZnRlckFuY2hvckNsaWNrID0g
YWRvcHRXSyhXS0ZyYW1lQ29weVVSTChXS1BhZ2VHZXRNYWluRnJhbWUod2ViVmlldy5wYWdlKCkp
KSk7CiAKLSAgICBURVNUX0FTU0VSVCghV0tVUkxJc0VxdWFsKGluaXRpYWxVUkwuZ2V0KCksIHVy
bEFmdGVyQW5jaG9yQ2xpY2suZ2V0KCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV0tVUkxJc0VxdWFs
KGluaXRpYWxVUkwuZ2V0KCksIHVybEFmdGVyQW5jaG9yQ2xpY2suZ2V0KCkpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL1ByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1ByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAJKHJl
dmlzaW9uIDg2NTA5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1ByZXZl
bnRFbXB0eVVzZXJBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE3ICszOCwxNyBAQCBz
dGF0aWMgYm9vbCB0ZXN0RG9uZTsKIAogc3RhdGljIHZvaWQgZGlkUnVuSmF2YVNjcmlwdChXS1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiByZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJy
b3JSZWYgZXJyb3IsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgVEVTVF9BU1NFUlQoY29udGV4dCA9
PSByZWludGVycHJldF9jYXN0PHZvaWQqPigweDEyMzQ1NzgpKTsKLSAgICBURVNUX0FTU0VSVChy
ZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUpOworICAgIEVYUEVDVF9FUShjb250ZXh0LCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPigweDEyMzQ1NzgpKTsKKyAgICBFWFBFQ1RfVFJVRShyZXN1bHRT
ZXJpYWxpemVkU2NyaXB0VmFsdWUpOwogCiAgICAgSlNHbG9iYWxDb250ZXh0UmVmIHNjcmlwdENv
bnRleHQgPSBKU0dsb2JhbENvbnRleHRDcmVhdGUoMCk7CiAgICAgSlNWYWx1ZVJlZiBzY3JpcHRW
YWx1ZSA9IFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlRGVzZXJpYWxpemUocmVzdWx0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBzY3JpcHRDb250ZXh0LCAwKTsKLSAgICBURVNUX0FTU0VSVChKU1ZhbHVl
SXNTdHJpbmcoc2NyaXB0Q29udGV4dCwgc2NyaXB0VmFsdWUpKTsKKyAgICBFWFBFQ1RfVFJVRShK
U1ZhbHVlSXNTdHJpbmcoc2NyaXB0Q29udGV4dCwgc2NyaXB0VmFsdWUpKTsKIAogICAgIC8vIE1h
a2Ugc3VyZSB0aGF0IHRoZSByZXN1bHQgb2YgbmF2aWdhdG9yLnVzZXJBZ2VudCBpc24ndCBlbXB0
eSwgZXZlbiBpZiB3ZSBzZXQgdGhlIGN1c3RvbQogICAgIC8vIHVzZXIgYWdlbnQgdG8gdGhlIGVt
cHR5IHN0cmluZy4KICAgICBKU1N0cmluZ1JlZiBzY3JpcHRTdHJpbmcgPSBKU1ZhbHVlVG9TdHJp
bmdDb3B5KHNjcmlwdENvbnRleHQsIHNjcmlwdFZhbHVlLCAwKTsKLSAgICBURVNUX0FTU0VSVChK
U1N0cmluZ0dldExlbmd0aChzY3JpcHRTdHJpbmcpKTsKKyAgICBFWFBFQ1RfR1QoSlNTdHJpbmdH
ZXRMZW5ndGgoc2NyaXB0U3RyaW5nKSwgMHUpOwogCiAgICAgSlNTdHJpbmdSZWxlYXNlKHNjcmlw
dFN0cmluZyk7CiAgICAgSlNHbG9iYWxDb250ZXh0UmVsZWFzZShzY3JpcHRDb250ZXh0KTsKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9SZXNwb25zaXZlbmVzc1RpbWVy
RG9lc250RmlyZUVhcmx5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5jcHAJKHJldmlz
aW9uIDg2NTA5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1Jlc3BvbnNp
dmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICsz
Nyw3IEBAIHN0YXRpYyBib29sIGRpZEJyaWVmbHlQYXVzZTsKIHN0YXRpYyB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiwgV0tTdHJpbmdSZWYgbWVz
c2FnZU5hbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCiB7CiAgICAgZGlkQnJpZWZseVBhdXNl
ID0gdHJ1ZTsKLSAgICBURVNUX0FTU0VSVChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiRGlkQnJpZWZseVBhdXNlIikpOworICAgIEVYUEVDVF9XS19TVFJFUShtZXNz
YWdlTmFtZSwgIkRpZEJyaWVmbHlQYXVzZSIpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRGaW5pc2hM
b2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQq
KQpAQCAtOTIsNyArOTIsOCBAQCBURVNUKFdlYktpdDIsIFJlc3BvbnNpdmVuZXNzVGltZXJEb2Vz
bnRGCiAgICAgd2ViVmlldy5zaW11bGF0ZVNwYWNlYmFyS2V5UHJlc3MoKTsKIAogICAgIFV0aWw6
OnJ1bigmZGlkQnJpZWZseVBhdXNlKTsKLSAgICBURVNUX0FTU0VSVCghZGlkQmVjb21lVW5yZXNw
b25zaXZlKTsKKworICAgIEVYUEVDVF9GQUxTRShkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvUmVzdG9yZVNlc3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1Jlc3RvcmVT
ZXNzaW9uU3RhdGVDb250YWluaW5nRm9ybURhdGEuY3BwCShyZXZpc2lvbiA4NjUwOSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9SZXN0b3JlU2Vzc2lvblN0YXRlQ29udGFp
bmluZ0Zvcm1EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsMTIgKzc1LDEyIEBAIFRFU1Qo
V2ViS2l0MiwgUmVzdG9yZVNlc3Npb25TdGF0ZUNvbnRhaW4KICAgICBzZXRQYWdlTG9hZGVyQ2xp
ZW50KHdlYlZpZXcucGFnZSgpKTsKIAogICAgIFdLUmV0YWluUHRyPFdLRGF0YVJlZj4gZGF0YSA9
IGNyZWF0ZVNlc3Npb25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YShjb250ZXh0LmdldCgpKTsKLSAg
ICBURVNUX0FTU0VSVChkYXRhKTsKKyAgICBFWFBFQ1RfVFJVRShkYXRhKTsKIAogICAgIFdLUGFn
ZVJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKHdlYlZpZXcucGFnZSgpLCBkYXRhLmdldCgpKTsKICAg
ICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOwogCi0gICAgVEVTVF9BU1NFUlQoV0tQYWdlQ2Fu
R29CYWNrKHdlYlZpZXcucGFnZSgpKSk7CisgICAgRVhQRUNUX1RSVUUoV0tQYWdlQ2FuR29CYWNr
KHdlYlZpZXcucGFnZSgpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9TcGFjZWJhclNjcm9sbGluZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1NwYWNl
YmFyU2Nyb2xsaW5nLmNwcAkocmV2aXNpb24gODY1MDkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvU3BhY2ViYXJTY3JvbGxpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
OCwzNCArNjgsMzUgQEAgVEVTVChXZWJLaXQyLCBTcGFjZWJhclNjcm9sbGluZykKICAgICBXS1Bh
Z2VMb2FkVVJMKHdlYlZpZXcucGFnZSgpLCB1cmwuZ2V0KCkpOwogICAgIFV0aWw6OnJ1bigmZGlk
RmluaXNoTG9hZCk7CiAKLSAgICBURVNUX0FTU0VSVChydW5KU1Rlc3Qod2ViVmlldy5wYWdlKCks
ICJpc0RvY3VtZW50U2Nyb2xsZWQoKSIsICJmYWxzZSIpKTsKLSAgICBURVNUX0FTU0VSVChydW5K
U1Rlc3Qod2ViVmlldy5wYWdlKCksICJ0ZXh0RmllbGRDb250YWluc1NwYWNlKCkiLCAiZmFsc2Ui
KSk7CisgICAgRVhQRUNUX1RSVUUocnVuSlNUZXN0KHdlYlZpZXcucGFnZSgpLCAiaXNEb2N1bWVu
dFNjcm9sbGVkKCkiLCAiZmFsc2UiKSk7CisgICAgRVhQRUNUX1RSVUUocnVuSlNUZXN0KHdlYlZp
ZXcucGFnZSgpLCAidGV4dEZpZWxkQ29udGFpbnNTcGFjZSgpIiwgImZhbHNlIikpOwogCiAgICAg
d2ViVmlldy5zaW11bGF0ZVNwYWNlYmFyS2V5UHJlc3MoKTsKIAotICAgIFRFU1RfQVNTRVJUKHJ1
bkpTVGVzdCh3ZWJWaWV3LnBhZ2UoKSwgImlzRG9jdW1lbnRTY3JvbGxlZCgpIiwgImZhbHNlIikp
OwotICAgIFRFU1RfQVNTRVJUKHJ1bkpTVGVzdCh3ZWJWaWV3LnBhZ2UoKSwgInRleHRGaWVsZENv
bnRhaW5zU3BhY2UoKSIsICJ0cnVlIikpOworICAgIEVYUEVDVF9UUlVFKHJ1bkpTVGVzdCh3ZWJW
aWV3LnBhZ2UoKSwgImlzRG9jdW1lbnRTY3JvbGxlZCgpIiwgImZhbHNlIikpOworICAgIEVYUEVD
VF9UUlVFKHJ1bkpTVGVzdCh3ZWJWaWV3LnBhZ2UoKSwgInRleHRGaWVsZENvbnRhaW5zU3BhY2Uo
KSIsICJ0cnVlIikpOwogCiAgICAgLy8gT24gTWFjLCBhIGtleSBkb3duIGV2ZW50IHJlcHJlc2Vu
dHMgYm90aCBhIHJhdyBrZXkgZG93biBhbmQgYSBrZXkgcHJlc3MuIE9uIFdpbmRvd3MsIGEga2V5
CiAgICAgLy8gZG93biBldmVudCBvbmx5IHJlcHJlc2VudHMgYSByYXcga2V5IGRvd24uIFdlIGV4
cGVjdCB0aGUga2V5IHByZXNzIHRvIGJlIGhhbmRsZWQgKGJlY2F1c2UgaXQKICAgICAvLyBpbnNl
cnRzIHRleHQgaW50byB0aGUgdGV4dCBmaWVsZCkuIEJ1dCB0aGUgcmF3IGtleSBkb3duIHNob3Vs
ZCBub3QgYmUgaGFuZGxlZC4KICNpZiBQTEFURk9STShNQUMpCi0gICAgVEVTVF9BU1NFUlQoIWRp
ZE5vdEhhbmRsZUtleURvd25FdmVudCk7CisgICAgRVhQRUNUX0ZBTFNFKGRpZE5vdEhhbmRsZUtl
eURvd25FdmVudCk7CiAjZWxpZiBQTEFURk9STShXSU4pCi0gICAgVEVTVF9BU1NFUlQoZGlkTm90
SGFuZGxlS2V5RG93bkV2ZW50KTsKKyAgICBFWFBFQ1RfVFJVRShkaWROb3RIYW5kbGVLZXlEb3du
RXZlbnQpOwogI2VuZGlmCiAKLSAgICBURVNUX0FTU0VSVChydW5KU1Rlc3Qod2ViVmlldy5wYWdl
KCksICJibHVyVGV4dEZpZWxkKCkiLCAidW5kZWZpbmVkIikpOworICAgIEVYUEVDVF9UUlVFKHJ1
bkpTVGVzdCh3ZWJWaWV3LnBhZ2UoKSwgImJsdXJUZXh0RmllbGQoKSIsICJ1bmRlZmluZWQiKSk7
CiAKICAgICBkaWROb3RIYW5kbGVLZXlEb3duRXZlbnQgPSBmYWxzZTsKICAgICB3ZWJWaWV3LnNp
bXVsYXRlU3BhY2ViYXJLZXlQcmVzcygpOwogCi0gICAgVEVTVF9BU1NFUlQocnVuSlNUZXN0KHdl
YlZpZXcucGFnZSgpLCAiaXNEb2N1bWVudFNjcm9sbGVkKCkiLCAidHJ1ZSIpKTsKLSAgICBURVNU
X0FTU0VSVChydW5KU1Rlc3Qod2ViVmlldy5wYWdlKCksICJ0ZXh0RmllbGRDb250YWluc1NwYWNl
KCkiLCAidHJ1ZSIpKTsKKyAgICBFWFBFQ1RfVFJVRShydW5KU1Rlc3Qod2ViVmlldy5wYWdlKCks
ICJpc0RvY3VtZW50U2Nyb2xsZWQoKSIsICJ0cnVlIikpOworICAgIEVYUEVDVF9UUlVFKHJ1bkpT
VGVzdCh3ZWJWaWV3LnBhZ2UoKSwgInRleHRGaWVsZENvbnRhaW5zU3BhY2UoKSIsICJ0cnVlIikp
OworCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFRFU1RfQVNTRVJUKCFkaWROb3RIYW5kbGVLZXlE
b3duRXZlbnQpOworICAgIEVYUEVDVF9GQUxTRShkaWROb3RIYW5kbGVLZXlEb3duRXZlbnQpOwog
I2VsaWYgUExBVEZPUk0oV0lOKQotICAgIFRFU1RfQVNTRVJUKGRpZE5vdEhhbmRsZUtleURvd25F
dmVudCk7CisgICAgRVhQRUNUX1RSVUUoZGlkTm90SGFuZGxlS2V5RG93bkV2ZW50KTsKICNlbmRp
ZgogfQogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV0tQcmVmZXJl
bmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L1dLUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9XS1ByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUs
NiArMjUsNyBAQAogCiAjaW5jbHVkZSAiVGVzdC5oIgogCisjaW5jbHVkZSAiUGxhdGZvcm1VdGls
aXRpZXMuaCIKICNpbmNsdWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KICNpbmNsdWRlIDxX
ZWJLaXQyL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFp
blB0ci5oPgpAQCAtMzcsNyArMzgsNyBAQCBURVNUKFdlYktpdDIsIFdLUHJlZmVyZW5jZXNCYXNp
YykKIHsKICAgICBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2UgPSBXS1ByZWZlcmVuY2VzQ3Jl
YXRlKCk7CiAKLSAgICBURVNUX0FTU0VSVChXS0dldFR5cGVJRChwcmVmZXJlbmNlKSA9PSBXS1By
ZWZlcmVuY2VzR2V0VHlwZUlEKCkpOworICAgIEVYUEVDVF9FUShXS0dldFR5cGVJRChwcmVmZXJl
bmNlKSwgV0tQcmVmZXJlbmNlc0dldFR5cGVJRCgpKTsKIAogICAgIFdLUmVsZWFzZShwcmVmZXJl
bmNlKTsKIH0KQEAgLTYyLDQzICs2MywzNyBAQCBURVNUKFdlYktpdDIsIFdLUHJlZmVyZW5jZXNE
ZWZhdWx0cykKIAogICAgIFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZSA9IFdLUHJlZmVyZW5j
ZXNDcmVhdGUoKTsKIAotICAgIFRFU1RfQVNTRVJUKFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0
RW5hYmxlZChwcmVmZXJlbmNlKSA9PSB0cnVlKTsKLSAgICBURVNUX0FTU0VSVChXS1ByZWZlcmVu
Y2VzR2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHByZWZlcmVuY2UpID09IHRydWUpOwotICAg
IFRFU1RfQVNTRVJUKFdLUHJlZmVyZW5jZXNHZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVu
YWJsZWQocHJlZmVyZW5jZSkgPT0gZmFsc2UpOwotICAgIFRFU1RfQVNTRVJUKFdLUHJlZmVyZW5j
ZXNHZXRMb2NhbFN0b3JhZ2VFbmFibGVkKHByZWZlcmVuY2UpID09IHRydWUpOwotICAgIFRFU1Rf
QVNTRVJUKFdLUHJlZmVyZW5jZXNHZXRYU1NBdWRpdG9yRW5hYmxlZChwcmVmZXJlbmNlKSA9PSB0
cnVlKTsKLSAgICBURVNUX0FTU0VSVChXS1ByZWZlcmVuY2VzR2V0RnJhbWVGbGF0dGVuaW5nRW5h
YmxlZChwcmVmZXJlbmNlKSA9PSBmYWxzZSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tQcmVmZXJlbmNl
c0dldFBsdWdpbnNFbmFibGVkKHByZWZlcmVuY2UpID09IHRydWUpOwotICAgIFRFU1RfQVNTRVJU
KFdLUHJlZmVyZW5jZXNHZXRKYXZhRW5hYmxlZChwcmVmZXJlbmNlKSA9PSB0cnVlKTsKLSAgICBU
RVNUX0FTU0VSVChXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21h
dGljYWxseShwcmVmZXJlbmNlKSA9PSB0cnVlKTsKLSAgICBURVNUX0FTU0VSVChXS1ByZWZlcmVu
Y2VzR2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKHByZWZlcmVuY2UpID09IHRydWUpOwotICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdGFuZGFyZEZvbnRGYW1pbHkoQWRvcHRXSywgV0tQ
cmVmZXJlbmNlc0NvcHlTdGFuZGFyZEZvbnRGYW1pbHkocHJlZmVyZW5jZSkpOwotICAgIFRFU1Rf
QVNTRVJUKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3RhbmRhcmRGb250RmFtaWx5Lmdl
dCgpLCBleHBlY3RlZFN0YW5kYXJkRm9udEZhbWlseSkpOwotICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBmaXhlZEZvbnRGYW1pbHkoQWRvcHRXSywgV0tQcmVmZXJlbmNlc0NvcHlGaXhlZEZv
bnRGYW1pbHkocHJlZmVyZW5jZSkpOwotICAgIFRFU1RfQVNTRVJUKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcoZml4ZWRGb250RmFtaWx5LmdldCgpLCBleHBlY3RlZEZpeGVkRm9udEZhbWls
eSkpOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzZXJpZkZvbnRGYW1pbHkoQWRvcHRX
SywgV0tQcmVmZXJlbmNlc0NvcHlTZXJpZkZvbnRGYW1pbHkocHJlZmVyZW5jZSkpOwotICAgIFRF
U1RfQVNTRVJUKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc2VyaWZGb250RmFtaWx5Lmdl
dCgpLCBleHBlY3RlZFNlcmlmRm9udEZhbWlseSkpOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBzYW5zU2VyaWZGb250RmFtaWx5KEFkb3B0V0ssIFdLUHJlZmVyZW5jZXNDb3B5U2Fuc1Nl
cmlmRm9udEZhbWlseShwcmVmZXJlbmNlKSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhzYW5zU2VyaWZGb250RmFtaWx5LmdldCgpLCBleHBlY3RlZFNhbnNT
ZXJpZkZvbnRGYW1pbHkpKTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gY3Vyc2l2ZUZv
bnRGYW1pbHkoQWRvcHRXSywgV0tQcmVmZXJlbmNlc0NvcHlDdXJzaXZlRm9udEZhbWlseShwcmVm
ZXJlbmNlKSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhj
dXJzaXZlRm9udEZhbWlseS5nZXQoKSwgZXhwZWN0ZWRDdXJzaXZlRm9udEZhbWlseSkpOwotICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBmYW50YXN5Rm9udEZhbWlseShBZG9wdFdLLCBXS1By
ZWZlcmVuY2VzQ29weUZhbnRhc3lGb250RmFtaWx5KHByZWZlcmVuY2UpKTsKLSAgICBURVNUX0FT
U0VSVChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGZhbnRhc3lGb250RmFtaWx5LmdldCgp
LCBleHBlY3RlZEZhbnRhc3lGb250RmFtaWx5KSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tQcmVmZXJl
bmNlc0dldE1pbmltdW1Gb250U2l6ZShwcmVmZXJlbmNlKSA9PSAwKTsKLSAgICBURVNUX0FTU0VS
VChXS1ByZWZlcmVuY2VzR2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcmVmZXJlbmNlKSA9PSBm
YWxzZSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tQcmVmZXJlbmNlc0dldERldmVsb3BlckV4dHJhc0Vu
YWJsZWQocHJlZmVyZW5jZSkgPT0gZmFsc2UpOwotICAgIFRFU1RfQVNTRVJUKFdLUHJlZmVyZW5j
ZXNHZXRUZXh0QXJlYXNBcmVSZXNpemFibGUocHJlZmVyZW5jZSkgPT0gdHJ1ZSk7CisgICAgRVhQ
RUNUX1RSVUUoV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHByZWZlcmVuY2UpKTsK
KyAgICBFWFBFQ1RfVFJVRShXS1ByZWZlcmVuY2VzR2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
KHByZWZlcmVuY2UpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV0tQcmVmZXJlbmNlc0dldE9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChwcmVmZXJlbmNlKSk7CisgICAgRVhQRUNUX1RSVUUo
V0tQcmVmZXJlbmNlc0dldExvY2FsU3RvcmFnZUVuYWJsZWQocHJlZmVyZW5jZSkpOworICAgIEVY
UEVDVF9UUlVFKFdLUHJlZmVyZW5jZXNHZXRYU1NBdWRpdG9yRW5hYmxlZChwcmVmZXJlbmNlKSk7
CisgICAgRVhQRUNUX0ZBTFNFKFdLUHJlZmVyZW5jZXNHZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVk
KHByZWZlcmVuY2UpKTsKKyAgICBFWFBFQ1RfVFJVRShXS1ByZWZlcmVuY2VzR2V0UGx1Z2luc0Vu
YWJsZWQocHJlZmVyZW5jZSkpOworICAgIEVYUEVDVF9UUlVFKFdLUHJlZmVyZW5jZXNHZXRKYXZh
RW5hYmxlZChwcmVmZXJlbmNlKSk7CisgICAgRVhQRUNUX1RSVUUoV0tQcmVmZXJlbmNlc0dldEph
dmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkocHJlZmVyZW5jZSkpOworICAgIEVY
UEVDVF9UUlVFKFdLUHJlZmVyZW5jZXNHZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQocHJlZmVy
ZW5jZSkpOworICAgIEVYUEVDVF9XS19TVFJFUShhZG9wdFdLKFdLUHJlZmVyZW5jZXNDb3B5U3Rh
bmRhcmRGb250RmFtaWx5KHByZWZlcmVuY2UpKSwgZXhwZWN0ZWRTdGFuZGFyZEZvbnRGYW1pbHkp
OworICAgIEVYUEVDVF9XS19TVFJFUShhZG9wdFdLKFdLUHJlZmVyZW5jZXNDb3B5Rml4ZWRGb250
RmFtaWx5KHByZWZlcmVuY2UpKSwgZXhwZWN0ZWRGaXhlZEZvbnRGYW1pbHkpOworICAgIEVYUEVD
VF9XS19TVFJFUShhZG9wdFdLKFdLUHJlZmVyZW5jZXNDb3B5U2VyaWZGb250RmFtaWx5KHByZWZl
cmVuY2UpKSwgZXhwZWN0ZWRTZXJpZkZvbnRGYW1pbHkpOworICAgIEVYUEVDVF9XS19TVFJFUShh
ZG9wdFdLKFdLUHJlZmVyZW5jZXNDb3B5U2Fuc1NlcmlmRm9udEZhbWlseShwcmVmZXJlbmNlKSks
IGV4cGVjdGVkU2Fuc1NlcmlmRm9udEZhbWlseSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKGFkb3B0
V0soV0tQcmVmZXJlbmNlc0NvcHlDdXJzaXZlRm9udEZhbWlseShwcmVmZXJlbmNlKSksIGV4cGVj
dGVkQ3Vyc2l2ZUZvbnRGYW1pbHkpOworICAgIEVYUEVDVF9XS19TVFJFUShhZG9wdFdLKFdLUHJl
ZmVyZW5jZXNDb3B5RmFudGFzeUZvbnRGYW1pbHkocHJlZmVyZW5jZSkpLCBleHBlY3RlZEZhbnRh
c3lGb250RmFtaWx5KTsKKyAgICBFWFBFQ1RfRVEoV0tQcmVmZXJlbmNlc0dldE1pbmltdW1Gb250
U2l6ZShwcmVmZXJlbmNlKSwgMHUpOworICAgIEVYUEVDVF9GQUxTRShXS1ByZWZlcmVuY2VzR2V0
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChwcmVmZXJlbmNlKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdL
UHJlZmVyZW5jZXNHZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHByZWZlcmVuY2UpKTsKKyAgICBF
WFBFQ1RfVFJVRShXS1ByZWZlcmVuY2VzR2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlKHByZWZlcmVu
Y2UpKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBURVNUX0FTU0VSVChXS1ByZWZlcmVuY2Vz
R2V0Rm9udFNtb290aGluZ0xldmVsKHByZWZlcmVuY2UpID09IGtXS0ZvbnRTbW9vdGhpbmdMZXZl
bFdpbmRvd3MpOworICAgIEVYUEVDVF9FUShXS1ByZWZlcmVuY2VzR2V0Rm9udFNtb290aGluZ0xl
dmVsKHByZWZlcmVuY2UpLCBrV0tGb250U21vb3RoaW5nTGV2ZWxXaW5kb3dzKTsKICNlbHNlCi0g
ICAgVEVTVF9BU1NFUlQoV0tQcmVmZXJlbmNlc0dldEZvbnRTbW9vdGhpbmdMZXZlbChwcmVmZXJl
bmNlKSA9PSBrV0tGb250U21vb3RoaW5nTGV2ZWxNZWRpdW0pOworICAgIEVYUEVDVF9FUShXS1By
ZWZlcmVuY2VzR2V0Rm9udFNtb290aGluZ0xldmVsKHByZWZlcmVuY2UpLCBrV0tGb250U21vb3Ro
aW5nTGV2ZWxNZWRpdW0pOwogI2VuZGlmCiAKLSAgICBURVNUX0FTU0VSVChXS1ByZWZlcmVuY2Vz
R2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQocHJlZmVyZW5jZSkgPT0gdHJ1ZSk7Ci0g
ICAgVEVTVF9BU1NFUlQoV0tQcmVmZXJlbmNlc0dldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUo
cHJlZmVyZW5jZSkgPT0gZmFsc2UpOwotICAgIFRFU1RfQVNTRVJUKFdLUHJlZmVyZW5jZXNHZXRD
b21wb3NpdGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGUocHJlZmVyZW5jZSkgPT0gZmFsc2UpOwot
ICAgIFRFU1RfQVNTRVJUKFdLUHJlZmVyZW5jZXNHZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyhw
cmVmZXJlbmNlKSA9PSBmYWxzZSk7CisgICAgRVhQRUNUX1RSVUUoV0tQcmVmZXJlbmNlc0dldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKHByZWZlcmVuY2UpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoV0tQcmVmZXJlbmNlc0dldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUocHJlZmVyZW5jZSkp
OworICAgIEVYUEVDVF9GQUxTRShXS1ByZWZlcmVuY2VzR2V0Q29tcG9zaXRpbmdSZXBhaW50Q291
bnRlcnNWaXNpYmxlKHByZWZlcmVuY2UpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV0tQcmVmZXJlbmNl
c0dldE5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKHByZWZlcmVuY2UpKTsKIAogICAgIFdLUmVsZWFz
ZShwcmVmZXJlbmNlKTsKIH0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9XS1N0cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL1dLU3RyaW5nLmNwcAkocmV2aXNpb24gODY1MDkpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvV0tTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwzOCAr
MzIsMzggQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogVEVTVChXZWJLaXQyLCBXS1N0cmlu
ZykKIHsKICAgICBXS1N0cmluZ1JlZiBzdHJpbmcgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiaGVsbG8iKTsKLSAgICBURVNUX0FTU0VSVCghV0tTdHJpbmdJc0VtcHR5KHN0cmluZykp
OwotICAgIFRFU1RfQVNTRVJUKFdLU3RyaW5nSXNFcXVhbChzdHJpbmcsIHN0cmluZykpOwotICAg
IFRFU1RfQVNTRVJUKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoc3RyaW5nLCAiaGVsbG8i
KSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0
cmluZykgPT0gMTYpOworICAgIEVYUEVDVF9UUlVFKCFXS1N0cmluZ0lzRW1wdHkoc3RyaW5nKSk7
CisgICAgRVhQRUNUX1RSVUUoV0tTdHJpbmdJc0VxdWFsKHN0cmluZywgc3RyaW5nKSk7CisgICAg
RVhQRUNUX1RSVUUoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdHJpbmcsICJoZWxsbyIp
KTsKKyAgICBFWFBFQ1RfRVEoV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmlu
ZyksIDE2dSk7CiAKICAgICBzaXplX3QgbWF4U2l6ZSA9IFdLU3RyaW5nR2V0TWF4aW11bVVURjhD
U3RyaW5nU2l6ZShzdHJpbmcpOwogICAgIGNoYXIqIGJ1ZmZlciA9IG5ldyBjaGFyW21heFNpemVd
OwogCiAgICAgc2l6ZV90IGFjdHVhbFNpemUgPSBXS1N0cmluZ0dldFVURjhDU3RyaW5nKHN0cmlu
ZywgYnVmZmVyLCBtYXhTaXplKTsKLSAgICBURVNUX0FTU0VSVChhY3R1YWxTaXplID09IDYpOwot
ICAgIFRFU1RfQVNTRVJUKHN0cmNtcChidWZmZXIsICJoZWxsbyIpID09IDApOworICAgIEVYUEVD
VF9FUShhY3R1YWxTaXplLCA2dSk7CisgICAgRVhQRUNUX1NUUkVRKGJ1ZmZlciwgImhlbGxvIik7
CiAKICAgICBkZWxldGVbXSBidWZmZXI7CiAgICAgCiAgICAgbWF4U2l6ZSA9IFdLU3RyaW5nR2V0
TGVuZ3RoKHN0cmluZyk7Ci0gICAgVEVTVF9BU1NFUlQobWF4U2l6ZSA9PSA1KTsKKyAgICBFWFBF
Q1RfRVEobWF4U2l6ZSwgNXUpOwogCiAgICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgb25lIGNoYXJh
Y3RlciBsYXJnZXIgdGhhbiB3ZSBuZWVkLgogICAgIFdLQ2hhciogdW5pQnVmZmVyID0gbmV3IFdL
Q2hhclttYXhTaXplKzFdOwogICAgIGFjdHVhbFNpemUgPSBXS1N0cmluZ0dldENoYXJhY3RlcnMo
c3RyaW5nLCB1bmlCdWZmZXIsIG1heFNpemUpOwotICAgIFRFU1RfQVNTRVJUKGFjdHVhbFNpemUg
PT0gNSk7CisgICAgRVhQRUNUX0VRKGFjdHVhbFNpemUsIDV1KTsKICAgICAKICAgICBXS0NoYXIg
aGVsbG9CdWZmZXJbXSA9IHsgJ2gnLCAnZScsICdsJywgJ2wnLCAnbycgfTsKLSAgICBURVNUX0FT
U0VSVCghbWVtY21wKHVuaUJ1ZmZlciwgaGVsbG9CdWZmZXIsIDEwKSk7CisgICAgRVhQRUNUX1RS
VUUoIW1lbWNtcCh1bmlCdWZmZXIsIGhlbGxvQnVmZmVyLCAxMCkpOwogICAgIAogICAgIC8vIFRl
c3QgcGFzc2luZyBhIGJ1ZmZlciBsZW5ndGggPCB0aGUgc3RyaW5nIGxlbmd0aC4KICAgICBhY3R1
YWxTaXplID0gV0tTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0cmluZywgdW5pQnVmZmVyLCBtYXhTaXpl
LTEpOwotICAgIFRFU1RfQVNTRVJUKGFjdHVhbFNpemUgPT0gNCk7CisgICAgRVhQRUNUX0VRKGFj
dHVhbFNpemUsIDR1KTsKICAgICAKICAgICAvLyBUZXN0IHBhc3NpbmcgYSBidWZmZXIgbGVuZ3Ro
ID4gdGhlIHN0cmluZyBsZW5ndGguCiAgICAgYWN0dWFsU2l6ZSA9IFdLU3RyaW5nR2V0Q2hhcmFj
dGVycyhzdHJpbmcsIHVuaUJ1ZmZlciwgbWF4U2l6ZSsxKTsKLSAgICBURVNUX0FTU0VSVChhY3R1
YWxTaXplID09IDUpOworICAgIEVYUEVDVF9FUShhY3R1YWxTaXplLCA1dSk7CiAgICAgCiAgICAg
ZGVsZXRlW10gdW5pQnVmZmVyOwogICAgIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL1dLU3RyaW5nSlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XS1N0cmluZ0pTU3RyaW5nLmNwcAkocmV2aXNpb24gODY1
MDkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV0tTdHJpbmdKU1N0cmlu
Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEwICszNywxMCBAQCBURVNUKFdlYktpdDIsIFdL
U3RyaW5nSlNTdHJpbmcpCiAgICAgSlNTdHJpbmdSZWYganNTdHJpbmcgPSBKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygiaGVsbG8iKTsKICAgICAKICAgICBXS1N0cmluZ1JlZiBjb252ZXJ0
ZWRKU1N0cmluZyA9IFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKGpzU3RyaW5nKTsKLSAgICBU
RVNUX0FTU0VSVChXS1N0cmluZ0lzRXF1YWwod2tTdHJpbmcsIGNvbnZlcnRlZEpTU3RyaW5nKSk7
CisgICAgRVhQRUNUX1RSVUUoV0tTdHJpbmdJc0VxdWFsKHdrU3RyaW5nLCBjb252ZXJ0ZWRKU1N0
cmluZykpOwogICAgIAogICAgIEpTU3RyaW5nUmVmIGNvbnZlcnRlZFdLU3RyaW5nID0gV0tTdHJp
bmdDb3B5SlNTdHJpbmcod2tTdHJpbmcpOwotICAgIFRFU1RfQVNTRVJUKEpTU3RyaW5nSXNFcXVh
bChqc1N0cmluZywgY29udmVydGVkV0tTdHJpbmcpKTsKKyAgICBFWFBFQ1RfVFJVRShKU1N0cmlu
Z0lzRXF1YWwoanNTdHJpbmcsIGNvbnZlcnRlZFdLU3RyaW5nKSk7CiAKICAgICBXS1JlbGVhc2Uo
d2tTdHJpbmcpOwogICAgIFdLUmVsZWFzZShjb252ZXJ0ZWRKU1N0cmluZyk7CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2luL0FsdEtleUdlbmVyYXRlc1dNU3lzQ29t
bWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L3dpbi9BbHRLZXlHZW5lcmF0ZXNXTVN5c0NvbW1hbmQuY3BwCShyZXZpc2lvbiA4NjUwOSkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93aW4vQWx0S2V5R2VuZXJhdGVzV01T
eXNDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBURVNUKFdlYktp
dDIsIEFsdEtleUdlbmVyYXRlc1dNU3lzQ29tbWFuCiAKICAgICAvLyBUaGUgV01fU1lTS0VZVVAg
bWVzc2FnZSBzaG91bGQgaGF2ZSBnZW5lcmF0ZWQgYSBXTV9TWVNDT01NQU5EIG1lc3NhZ2UgdGhh
dCB3YXMgc2VudCB0byB0aGUKICAgICAvLyBXS1ZpZXcncyBwYXJlbnQgd2luZG93LgotICAgIFRF
U1RfQVNTRVJUKG9ic2VydmVyLndpbmRvd0RpZFJlY2VpdmVXTVN5c0NvbW1hbmQoKSk7CisgICAg
RVhQRUNUX1RSVUUob2JzZXJ2ZXIud2luZG93RGlkUmVjZWl2ZVdNU3lzQ29tbWFuZCgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL3dpbi9IaWRlRmluZEluZGljYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3dpbi9IaWRlRmluZEluZGljYXRvci5j
cHAJKHJldmlzaW9uIDg2NTA5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L3dpbi9IaWRlRmluZEluZGljYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDE0ICs3Miwx
NCBAQCBURVNUKFdlYktpdDIsIEhpZGVGaW5kSW5kaWNhdG9yKQogICAgIFV0aWw6OnJ1bigmZmlu
ZEluZGljYXRvckNhbGxiYWNrV2FzQ2FsbGVkKTsKICAgICBmaW5kSW5kaWNhdG9yQ2FsbGJhY2tX
YXNDYWxsZWQgPSBmYWxzZTsKIAotICAgIFRFU1RfQVNTRVJUKGJpdG1hcCk7CisgICAgRVhQRUNU
X1RSVUUoYml0bWFwKTsKICAgICA6OkRlbGV0ZU9iamVjdChiaXRtYXApOwogICAgIGJpdG1hcCA9
IDA7CiAKICAgICBXS1BhZ2VIaWRlRmluZFVJKHdlYlZpZXcucGFnZSgpKTsKICAgICBVdGlsOjpy
dW4oJmZpbmRJbmRpY2F0b3JDYWxsYmFja1dhc0NhbGxlZCk7CiAKLSAgICBURVNUX0FTU0VSVCgh
Yml0bWFwKTsKKyAgICBFWFBFQ1RfVFJVRSghYml0bWFwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3dp
bi9UcmFuc2xhdGVNZXNzYWdlR2VuZXJhdGVzV01DaGFyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2luL1RyYW5zbGF0ZU1lc3NhZ2VHZW5lcmF0
ZXNXTUNoYXIuY3BwCShyZXZpc2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi93aW4vVHJhbnNsYXRlTWVzc2FnZUdlbmVyYXRlc1dNQ2hhci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgVEVTVChXZWJLaXQyLCBUcmFuc2xhdGVNZXNzYWdl
R2VuZXJhdGVzVwogICAgIHJ1bkFuZFdhdGNoRm9yV01DaGFyKCZkaWROb3RIYW5kbGVLZXlFdmVu
dENhbGxlZCk7CiAKICAgICAvLyBXZWJLaXQgc2hvdWxkIG5vdCBoYXZlIGNhbGxlZCBUcmFuc2xh
dGVNZXNzYWdlKCkgb24gdGhlIFdNX0tFWURPV04gbWVzc2FnZSBzaW5jZSB3ZSBpbnN0YWxsZWQg
YSBkaWROb3RIYW5kbGVLZXlFdmVudCBjYWxsYmFjay4KLSAgICBURVNUX0FTU0VSVCghZGlkU2Vl
V01DaGFyKTsKKyAgICBFWFBFQ1RfRkFMU0UoZGlkU2VlV01DaGFyKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93597</attachid>
            <date>2011-05-15 17:49:14 -0700</date>
            <delta_ts>2011-05-16 10:26:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60862-20110515174912.patch</filename>
            <type>text/plain</type>
            <size>38017</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg2NTE1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjIgQEAKKzIwMTEtMDUtMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IGFwaSB0
ZXN0ZXIgb3ZlciB0byB1c2luZyBndGVzdCBleHBlY3RhdGlvbnMgZGlyZWN0bHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwODYyCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnRvU1REKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRp
bGl0aWVzLmg6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjphc3NlcnRXS1N0cmlnRXF1
YWwpOgorICAgICAgICBBZGQgY29udmVuaWVuY2UgbWFjcm8gdG8gY29tcGFyZSBXSzIgc3RyaW5n
cy4gQWRkIHNvbWUgb3ZlcmxvYWRzIG9mIHRvU1REIHRvIG1ha2UKKyAgICAgICAgdGhlIGltcGxl
bWVudGF0aW9uIG9mIHRoZSBtYWNybyBzaW1wbGVyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0Lmg6CisgICAgICAgIFJlbW92ZSBURVNUX0FTU0VSVCBmb3J3YXJkZXIuCisKKyAgICAg
ICAgW1Rlc3QgY2hhbmdlcyBlbGlkZWRdCisKIDIwMTEtMDUtMTUgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENocmlzIEplcmRvbmVrLgpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAJKHJldmlzaW9uIDg2NTA5
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDE4ICs0MywxOCBAQCBzdHJ1Y3QgSmF2YVNjcmlwdENhbGxiYWNrQ29udGV4dCB7
CiAKIHN0YXRpYyB2b2lkIGphdmFTY3JpcHRDYWxsYmFjayhXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZVJlZiByZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQq
IGN0eCkKIHsKLSAgICBURVNUX0FTU0VSVChyZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUpOwor
ICAgIEVYUEVDVF9UUlVFKHJlc3VsdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiAKICAgICBKYXZh
U2NyaXB0Q2FsbGJhY2tDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8SmF2YVNjcmlwdENh
bGxiYWNrQ29udGV4dCo+KGN0eCk7CiAKICAgICBKU0dsb2JhbENvbnRleHRSZWYgc2NyaXB0Q29u
dGV4dCA9IEpTR2xvYmFsQ29udGV4dENyZWF0ZSgwKTsKLSAgICBURVNUX0FTU0VSVChzY3JpcHRD
b250ZXh0KTsKKyAgICBFWFBFQ1RfVFJVRShzY3JpcHRDb250ZXh0KTsKIAogICAgIEpTVmFsdWVS
ZWYgc2NyaXB0VmFsdWUgPSBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZURlc2VyaWFsaXplKHJlc3Vs
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgc2NyaXB0Q29udGV4dCwgMCk7Ci0gICAgVEVTVF9BU1NF
UlQoc2NyaXB0VmFsdWUpOworICAgIEVYUEVDVF9UUlVFKHNjcmlwdFZhbHVlKTsKIAogICAgIEpT
U3RyaW5nUmVmIHNjcmlwdFN0cmluZyA9IEpTVmFsdWVUb1N0cmluZ0NvcHkoc2NyaXB0Q29udGV4
dCwgc2NyaXB0VmFsdWUsIDApOwotICAgIFRFU1RfQVNTRVJUKHNjcmlwdFN0cmluZyk7CisgICAg
RVhQRUNUX1RSVUUoc2NyaXB0U3RyaW5nKTsKIAogICAgIGNvbnRleHQtPmRpZEZpbmlzaCA9IHRy
dWU7CiAgICAgY29udGV4dC0+ZGlkTWF0Y2hFeHBlY3RlZFN0cmluZyA9IEpTU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoc2NyaXB0U3RyaW5nLCBjb250ZXh0LT5leHBlY3RlZFN0cmluZyk7CkBA
IC02MiwxOCArNjIsMTMgQEAgc3RhdGljIHZvaWQgamF2YVNjcmlwdENhbGxiYWNrKFdLU2VyaWFs
aQogICAgIEpTU3RyaW5nUmVsZWFzZShzY3JpcHRTdHJpbmcpOwogICAgIEpTR2xvYmFsQ29udGV4
dFJlbGVhc2Uoc2NyaXB0Q29udGV4dCk7CiAKLSAgICBURVNUX0FTU0VSVCghZXJyb3IpOwotfQot
Ci1zdGF0aWMgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrKGNvbnN0IGNoYXIqIHV0ZjhTdHJp
bmcpCi17Ci0gICAgcmV0dXJuIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPihBZG9wdFdLLCBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1dGY4U3RyaW5nKSk7CisgICAgRVhQRUNUX1RSVUUo
IWVycm9yKTsKIH0KIAogYm9vbCBydW5KU1Rlc3QoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IGNoYXIq
IHNjcmlwdCwgY29uc3QgY2hhciogZXhwZWN0ZWRSZXN1bHQpCiB7CiAgICAgSmF2YVNjcmlwdENh
bGxiYWNrQ29udGV4dCBjb250ZXh0KGV4cGVjdGVkUmVzdWx0KTsKLSAgICBXS1BhZ2VSdW5KYXZh
U2NyaXB0SW5NYWluRnJhbWUocGFnZSwgd2soc2NyaXB0KS5nZXQoKSwgJmNvbnRleHQsIGphdmFT
Y3JpcHRDYWxsYmFjayk7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHBhZ2Us
IFV0aWw6OnRvV0soc2NyaXB0KS5nZXQoKSwgJmNvbnRleHQsIGphdmFTY3JpcHRDYWxsYmFjayk7
CiAgICAgVXRpbDo6cnVuKCZjb250ZXh0LmRpZEZpbmlzaCk7CiAgICAgcmV0dXJuIGNvbnRleHQu
ZGlkTWF0Y2hFeHBlY3RlZFN0cmluZzsKIH0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1VdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1VdGlsaXRpZXMuY3BwCShyZXZpc2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCwxNiBA
QCBzdGQ6OnN0cmluZyB0b1NURChXS1N0cmluZ1JlZiBzdHJpbmcpCiAgICAgcmV0dXJuIHN0ZDo6
c3RyaW5nKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSk7CiB9CiAKK3N0ZDo6c3RyaW5n
IHRvU1REKFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdHJpbmcpCit7CisgICAgcmV0dXJuIHRv
U1REKHN0cmluZy5nZXQoKSk7Cit9CisKK3N0ZDo6c3RyaW5nIHRvU1REKGNvbnN0IGNoYXIqIHN0
cmluZykKK3sKKyAgICByZXR1cm4gc3RkOjpzdHJpbmcoc3RyaW5nKTsKK30KKwogV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHRvV0soY29uc3QgY2hhciogdXRmOFN0cmluZykKIHsKICAgICByZXR1
cm4gV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKHV0ZjhTdHJpbmcpKTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1VdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3Jt
VXRpbGl0aWVzLmgJKHJldmlzaW9uIDg2NTA5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0
Zm9ybVV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsMTEgQEAKICNpZm5k
ZWYgUGxhdGZvcm1VdGlsaXRpZXNfaAogI2RlZmluZSBQbGF0Zm9ybVV0aWxpdGllc19oCiAKLSNp
bmNsdWRlIDxXZWJLaXQyL1dlYktpdDIuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XZWJLaXQy
Lmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIG5hbWVzcGFj
ZSBVdGlsIHsKQEAgLTUzLDggKzU0LDIwIEBAIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBNSU1F
VHlwZUZvcldLVVIKIGJvb2wgaXNLZXlEb3duKFdLTmF0aXZlRXZlbnRQdHIpOwogCiBzdGQ6OnN0
cmluZyB0b1NURChXS1N0cmluZ1JlZiBzdHJpbmcpOworc3RkOjpzdHJpbmcgdG9TVEQoV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IHN0cmluZyk7CitzdGQ6OnN0cmluZyB0b1NURChjb25zdCBjaGFy
KiBzdHJpbmcpOworCiBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdG9XSyhjb25zdCBjaGFyKiB1
dGY4U3RyaW5nKTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3N0YXRpYyBp
bmxpbmUgOjp0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgYXNzZXJ0V0tTdHJpZ0VxdWFsKGNvbnN0
IGNoYXIqIGV4cGVjdGVkX2V4cHJlc3Npb24sIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9u
LCBUIGV4cGVjdGVkLCBVIGFjdHVhbCkKK3sKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5h
bDo6Q21wSGVscGVyU1RSRVEoZXhwZWN0ZWRfZXhwcmVzc2lvbiwgYWN0dWFsX2V4cHJlc3Npb24s
IFV0aWw6OnRvU1REKGV4cGVjdGVkKS5jX3N0cigpLCBVdGlsOjp0b1NURChhY3R1YWwpLmNfc3Ry
KCkpOworfQorCisjZGVmaW5lIEVYUEVDVF9XS19TVFJFUShleHBlY3RlZCwgYWN0dWFsKSBcCisg
ICAgRVhQRUNUX1BSRURfRk9STUFUMihUZXN0V2ViS2l0QVBJOjpVdGlsOjphc3NlcnRXS1N0cmln
RXF1YWwsIGV4cGVjdGVkLCBhY3R1YWwpCisKIH0gLy8gbmFtZXNwYWNlIFV0aWwKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0LmgJKHJldmlzaW9uIDg2NTA5
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEz
ICsyNiwxMCBAQAogI2lmbmRlZiBUZXN0X2gKICNkZWZpbmUgVGVzdF9oCiAKLSNpbmNsdWRlICJU
ZXN0c0NvbnRyb2xsZXIuaCIKLQogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKIAotI2RlZmluZSBURVNUX0FTU0VSVChleHByZXNzaW9uKSBFWFBF
Q1RfVFJVRShleHByZXNzaW9uKQogI2RlZmluZSBURVNUX0FTU0VSVF9SRVRVUk4oZXhwcmVzc2lv
biwgcmV0dXJuVmFsdWUpIFwKICAgICBkbyB7IFwKICAgICAgICAgaWYgKCEoZXhwcmVzc2lvbikp
IHsgXApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0Fib3V0QmxhbmtM
b2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
QWJvdXRCbGFua0xvYWQuY3BwCShyZXZpc2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9BYm91dEJsYW5rTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDcgKzM1LDcgQEAgc3RhdGljIGJvb2wgZG9uZTsKIAogc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1VSTFJlc3BvbnNlUmVmIHJlc3Bv
bnNlLCBXS1VSTFJlcXVlc3RSZWYsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwg
V0tUeXBlUmVmLCBjb25zdCB2b2lkKikKIHsKLSAgICBURVNUX0FTU0VSVChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKFV0aWw6Ok1JTUVUeXBlRm9yV0tVUkxSZXNwb25zZShyZXNwb25zZSku
Z2V0KCksICJ0ZXh0L2h0bWwiKSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKFV0aWw6Ok1JTUVUeXBl
Rm9yV0tVUkxSZXNwb25zZShyZXNwb25zZSksICJ0ZXh0L2h0bWwiKTsKIAogICAgIFdLRnJhbWVQ
b2xpY3lMaXN0ZW5lclVzZShsaXN0ZW5lcik7CiAgICAgZG9uZSA9IHRydWU7CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQ2FuSGFuZGxlUmVxdWVzdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0NhbkhhbmRsZVJlcXVl
c3QuY3BwCShyZXZpc2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9DYW5IYW5kbGVSZXF1ZXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOSBA
QCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlCiB7CiAgICAgZGlkUmVj
ZWl2ZU1lc3NhZ2UgPSB0cnVlOwogCi0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkRpZENoZWNrQ2FuSGFuZGxlUmVxdWVzdCIpKTsKLSAg
ICBURVNUX0FTU0VSVChXS0dldFR5cGVJRChib2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7
CisgICAgRVhQRUNUX1dLX1NUUkVRKG1lc3NhZ2VOYW1lLCAiRGlkQ2hlY2tDYW5IYW5kbGVSZXF1
ZXN0Iik7CisgICAgRVhQRUNUX0VRKFdLR2V0VHlwZUlEKGJvZHkpLCBXS0Jvb2xlYW5HZXRUeXBl
SUQoKSk7CisKICAgICBjYW5IYW5kbGVSZXF1ZXN0ID0gV0tCb29sZWFuR2V0VmFsdWUoc3RhdGlj
X2Nhc3Q8V0tCb29sZWFuUmVmPihib2R5KSk7CiB9CiAKQEAgLTY2LDcgKzY3LDcgQEAgVEVTVChX
ZWJLaXQyLCBDYW5IYW5kbGVSZXF1ZXN0KQogCiAgICAgV0tDb250ZXh0UG9zdE1lc3NhZ2VUb0lu
amVjdGVkQnVuZGxlKGNvbnRleHQuZ2V0KCksIFV0aWw6OnRvV0soIkNoZWNrQ2FuSGFuZGxlUmVx
dWVzdCIpLmdldCgpLCAwKTsKICAgICBVdGlsOjpydW4oJmRpZFJlY2VpdmVNZXNzYWdlKTsKLSAg
ICBURVNUX0FTU0VSVChjYW5IYW5kbGVSZXF1ZXN0KTsKKyAgICBFWFBFQ1RfVFJVRShjYW5IYW5k
bGVSZXF1ZXN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0Nvb2tpZU1hbmFnZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Db29raWVNYW5hZ2VyLmNw
cAkocmV2aXNpb24gODY1MDkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
Q29va2llTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDggKzQxLDkgQEAgc3RhdGlj
IFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gd2tDb250ZQogCiBzdGF0aWMgdm9pZCBkaWRHZXRU
ZXN0SFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5
LCBXS0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0KQogewotICAgIFRFU1RfQVNTRVJUKGNvbnRleHQg
PT0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMHgxMjM0NTc4KSk7Ci0gICAgVEVTVF9BU1NFUlQo
cG9saWN5ID09IHRlc3RQb2xpY3kpOworICAgIEVYUEVDVF9FUShjb250ZXh0LCByZWludGVycHJl
dF9jYXN0PHZvaWQqPigweDEyMzQ1NzgpKTsKKyAgICBFWFBFQ1RfRVEocG9saWN5LCB0ZXN0UG9s
aWN5KTsKKwogICAgIFdLQ29va2llTWFuYWdlclJlZiBjb29raWVNYW5hZ2VyID0gV0tDb250ZXh0
R2V0Q29va2llTWFuYWdlcih3a0NvbnRleHQuZ2V0KCkpOwogICAgIFdLQ29va2llTWFuYWdlclNl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koY29va2llTWFuYWdlciwgdXNlclBvbGljeSk7CiAKQEAg
LTUxLDcgKzUyLDcgQEAgc3RhdGljIHZvaWQgZGlkR2V0VGVzdEhUVFBDb29raWVBY2NlcHRQbwog
CiBzdGF0aWMgdm9pZCBkaWRHZXRVc2VySFRUUENvb2tpZUFjY2VwdFBvbGljeShXS0hUVFBDb29r
aWVBY2NlcHRQb2xpY3kgcG9saWN5LCBXS0Vycm9yUmVmLCB2b2lkKiBjb250ZXh0KQogewotICAg
IFRFU1RfQVNTRVJUKGNvbnRleHQgPT0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMHgxMjM0NTc4
KSk7CisgICAgRVhQRUNUX0VRKGNvbnRleHQsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4MTIz
NDU3OCkpOwogCiAgICAgdXNlclBvbGljeSA9IHBvbGljeTsKIApJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL0RvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RvY3Vt
ZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaC5jcHAJKHJldmlzaW9uIDg2NTA5KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxl
cnRDcmFzaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDkgQEAgc3RhdGljIGJvb2wg
ZG9uZTsKIAogc3RhdGljIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJlZiBwYWdlLCBX
S1N0cmluZ1JlZiBhbGVydFRleHQsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCiB7Ci0gICAgVEVTVF9BU1NFUlQoZnJhbWUpOwotICAgIFRFU1RfQVNTRVJUKFdLRnJh
bWVHZXRQYWdlKGZyYW1lKSA9PSBwYWdlKTsKLSAgICBURVNUX0FTU0VSVChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKGFsZXJ0VGV4dCwgImFuIGFsZXJ0IikpOworICAgIEFTU0VSVF9UUlVF
KGZyYW1lKTsKKyAgICBFWFBFQ1RfRVEoV0tGcmFtZUdldFBhZ2UoZnJhbWUpLCBwYWdlKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoYWxlcnRUZXh0LCAiYW4gYWxlcnQiKTsKIAogICAgIGRvbmUgPSB0
cnVlOwogfQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0V2YWx1YXRl
SmF2YVNjcmlwdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL0V2YWx1YXRlSmF2YVNjcmlwdC5jcHAJKHJldmlzaW9uIDg2NTA5KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0V2YWx1YXRlSmF2YVNjcmlwdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDEyICszOCwxMiBAQCBzdGF0aWMgYm9vbCB0ZXN0RG9uZTsKIAogc3Rh
dGljIHZvaWQgZGlkUnVuSmF2YVNjcmlwdChXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiByZXN1
bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQqIGNvbnRleHQp
CiB7Ci0gICAgVEVTVF9BU1NFUlQoY29udGV4dCA9PSByZWludGVycHJldF9jYXN0PHZvaWQqPigw
eDEyMzQ1NzgpKTsKLSAgICBURVNUX0FTU0VSVCghcmVzdWx0U2VyaWFsaXplZFNjcmlwdFZhbHVl
KTsKKyAgICBFWFBFQ1RfRVEoY29udGV4dCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMHgxMjM0
NTc4KSk7CisgICAgQVNTRVJUX1RSVUUoIXJlc3VsdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiAK
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFsc28gY2hlY2sgdGhlIGVycm9yLCBidXQgcmlnaHQg
bm93IGl0J3MgYWx3YXlzIG51bGwuCiAgICAgLy8gQXNzZXJ0IHRoYXQgaXQncyBudWxsIHNvIHdl
IGNhbiByZXZpc2l0IHdoZW4gdGhpcyBjaGFuZ2VzLgotICAgIFRFU1RfQVNTRVJUKCFlcnJvcik7
CisgICAgQVNTRVJUX1RSVUUoIWVycm9yKTsKIAogICAgIHRlc3REb25lID0gdHJ1ZTsKIH0KSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9GYWlsZWRMb2FkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRmFpbGVkTG9hZC5j
cHAJKHJldmlzaW9uIDg2NTA5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L0ZhaWxlZExvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTAgQEAgc3RhdGlj
IGJvb2wgdGVzdERvbmU7CiAKIHN0YXRpYyB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRo
RXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tFcnJvclJl
ZiBlcnJvciwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewot
ICAgIFRFU1RfQVNTRVJUKFdLRnJhbWVHZXRGcmFtZUxvYWRTdGF0ZShmcmFtZSkgPT0ga1dLRnJh
bWVMb2FkU3RhdGVGaW5pc2hlZCk7CisgICAgRVhQRUNUX0VRKFdLRnJhbWVHZXRGcmFtZUxvYWRT
dGF0ZShmcmFtZSksIGtXS0ZyYW1lTG9hZFN0YXRlRmluaXNoZWQpOwogCiAgICAgV0tVUkxSZWYg
dXJsID0gV0tGcmFtZUNvcHlQcm92aXNpb25hbFVSTChmcmFtZSk7Ci0gICAgVEVTVF9BU1NFUlQo
IXVybCk7CisgICAgRVhQRUNUX1RSVUUoIXVybCk7CiAKICAgICB0ZXN0RG9uZSA9IHRydWU7CiB9
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRmluZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZpbmQuY3BwCShyZXZp
c2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9GaW5kLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIsOCBAQCBzdGF0aWMgdm9pZCBkaWRGaW5pc2hM
b2FkRm9yRnJhbWUoV0tQYWdlCiAKIHN0YXRpYyB2b2lkIGRpZENvdW50U3RyaW5nTWF0Y2hlcyhX
S1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgc3RyaW5nLCB1bnNpZ25lZCBudW1NYXRjaGVzLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIFRFU1RfQVNTRVJUKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcoc3RyaW5nLCAiSGVsbG8iKSk7Ci0gICAgVEVTVF9BU1NFUlQobnVtTWF0
Y2hlcyA9PSAzKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoc3RyaW5nLCAiSGVsbG8iKTsKKyAgICBF
WFBFQ1RfRVEobnVtTWF0Y2hlcywgM3UpOwogCiAgICAgZGlkQ2FsbENvdW50U3RyaW5nTWF0Y2hl
cyA9IHRydWU7CiB9CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRm9y
Y2VSZXBhaW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvRm9yY2VSZXBhaW50LmNwcAkocmV2aXNpb24gODY1MDkpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvRm9yY2VSZXBhaW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNyArMzcsNyBAQCBzdGF0aWMgYm9vbCB0ZXN0MkRvbmU7CiAgICAgCiB2b2lkIGRpZEZvcmNl
UmVwYWludChXS0Vycm9yUmVmIGVycm9yLCB2b2lkKikKIHsKLSAgICBURVNUX0FTU0VSVCghZXJy
b3IpOworICAgIEVYUEVDVF9UUlVFKCFlcnJvcik7CiAgICAgdGVzdDJEb25lID0gdHJ1ZTsKIH0K
IApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZyYW1lTUlNRVR5cGVI
VE1MLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
RnJhbWVNSU1FVHlwZUhUTUwuY3BwCShyZXZpc2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9GcmFtZU1JTUVUeXBlSFRNTC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDIwICszNiwyMCBAQCBzdGF0aWMgYm9vbCB0ZXN0RG9uZTsKIAogc3RhdGljIHZvaWQg
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJl
ZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewot
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a01JTUUoQWRvcHRXSywgV0tGcmFtZUNvcHlN
SU1FVHlwZShmcmFtZSkpOwotICAgIFRFU1RfQVNTRVJUKFdLU3RyaW5nSXNFbXB0eSh3a01JTUUu
Z2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tNSU1FID0gYWRvcHRXSyhX
S0ZyYW1lQ29weU1JTUVUeXBlKGZyYW1lKSk7CisgICAgRVhQRUNUX1RSVUUoV0tTdHJpbmdJc0Vt
cHR5KHdrTUlNRS5nZXQoKSkpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJh
bWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
d2tNSU1FKEFkb3B0V0ssIFdLRnJhbWVDb3B5TUlNRVR5cGUoZnJhbWUpKTsKLSAgICBURVNUX0FT
U0VSVChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHdrTUlNRS5nZXQoKSwgInRleHQvaHRt
bCIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tNSU1FID0gYWRvcHRXSyhXS0Zy
YW1lQ29weU1JTUVUeXBlKGZyYW1lKSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKHdrTUlNRSwgInRl
eHQvaHRtbCIpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdl
UmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKIHsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tNSU1FKEFk
b3B0V0ssIFdLRnJhbWVDb3B5TUlNRVR5cGUoZnJhbWUpKTsKLSAgICBURVNUX0FTU0VSVChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHdrTUlNRS5nZXQoKSwgInRleHQvaHRtbCIpKTsKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tNSU1FID0gYWRvcHRXSyhXS0ZyYW1lQ29weU1J
TUVUeXBlKGZyYW1lKSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKHdrTUlNRSwgInRleHQvaHRtbCIp
OwogCiAgICAgdGVzdERvbmUgPSB0cnVlOwogfQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL0ZyYW1lTUlNRVR5cGVQTkcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9GcmFtZU1JTUVUeXBlUE5HLmNwcAkocmV2aXNpb24g
ODY1MDkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRnJhbWVNSU1FVHlw
ZVBORy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDIwICszNiwyMCBAQCBzdGF0aWMgYm9vbCB0
ZXN0RG9uZTsKIAogc3RhdGljIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShX
S1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3a01J
TUUoQWRvcHRXSywgV0tGcmFtZUNvcHlNSU1FVHlwZShmcmFtZSkpOwotICAgIFRFU1RfQVNTRVJU
KFdLU3RyaW5nSXNFbXB0eSh3a01JTUUuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gd2tNSU1FID0gYWRvcHRXSyhXS0ZyYW1lQ29weU1JTUVUeXBlKGZyYW1lKSk7CisgICAg
RVhQRUNUX1RSVUUoV0tTdHJpbmdJc0VtcHR5KHdrTUlNRS5nZXQoKSkpOwogfQogCiBzdGF0aWMg
dm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJh
bWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tNSU1FKEFkb3B0V0ssIFdLRnJhbWVDb3B5TUlNRVR5
cGUoZnJhbWUpKTsKLSAgICBURVNUX0FTU0VSVChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KHdrTUlNRS5nZXQoKSwgImltYWdlL3BuZyIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gd2tNSU1FID0gYWRvcHRXSyhXS0ZyYW1lQ29weU1JTUVUeXBlKGZyYW1lKSk7CisgICAgRVhQ
RUNUX1dLX1NUUkVRKHdrTUlNRSwgImltYWdlL3BuZyIpOwogfQogCiBzdGF0aWMgdm9pZCBkaWRG
aW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlw
ZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gd2tNSU1FKEFkb3B0V0ssIFdLRnJhbWVDb3B5TUlNRVR5cGUoZnJhbWUp
KTsKLSAgICBURVNUX0FTU0VSVChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHdrTUlNRS5n
ZXQoKSwgImltYWdlL3BuZyIpKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tNSU1F
ID0gYWRvcHRXSyhXS0ZyYW1lQ29weU1JTUVUeXBlKGZyYW1lKSk7CisgICAgRVhQRUNUX1dLX1NU
UkVRKHdrTUlNRSwgImltYWdlL3BuZyIpOwogCiAgICAgdGVzdERvbmUgPSB0cnVlOwogfQpJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlQmFzaWNf
QnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvSW5qZWN0ZWRCdW5kbGVCYXNpY19CdW5kbGUuY3BwCShyZXZpc2lvbiA4NjUwOSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUJhc2ljX0J1bmRs
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDggKzM4LDggQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSkKICAgICB7Ci0gICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBkb25lTWVz
c2FnZU5hbWUoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkRvbmVNZXNz
YWdlTmFtZSIpKTsKLSAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGRvbmVNZXNzYWdl
Qm9keShBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRG9uZU1lc3NhZ2VC
b2R5IikpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZG9uZU1lc3NhZ2VOYW1l
ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRG9uZU1lc3NhZ2VOYW1l
IikpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZG9uZU1lc3NhZ2VCb2R5ID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRG9uZU1lc3NhZ2VCb2R5Iikp
OwogICAgICAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKGJ1bmRsZSwgZG9uZU1lc3NhZ2VOYW1lLmdl
dCgpLCBkb25lTWVzc2FnZUJvZHkuZ2V0KCkpOwogICAgIH0KIH07CkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTW91c2VNb3ZlQWZ0ZXJDcmFzaC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL01vdXNlTW92ZUFmdGVyQ3Jh
c2guY3BwCShyZXZpc2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9Nb3VzZU1vdmVBZnRlckNyYXNoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsMTMgKzgz
LDEzIEBAIFRFU1QoV2ViS2l0MiwgTW91c2VNb3ZlQWZ0ZXJDcmFzaCkKICAgICAvLyBXYWl0IHVu
dGlsIHdlIGxvYWQgdGhlIHBhZ2UgYSBzZWNvbmQgdGltZSAodmlhIHJlbG9hZGluZyB0aGUgcGFn
ZSBpbiBwcm9jZXNzRGlkQ3Jhc2gpLgogICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CiAK
LSAgICBURVNUX0FTU0VSVChydW5KU1Rlc3Qod2ViVmlldy5wYWdlKCksICJkaWRNb3ZlTW91c2Uo
KSIsICJmYWxzZSIpKTsKKyAgICBFWFBFQ1RfVFJVRShydW5KU1Rlc3Qod2ViVmlldy5wYWdlKCks
ICJkaWRNb3ZlTW91c2UoKSIsICJmYWxzZSIpKTsKIAogICAgIC8vIE9uY2UgdGhlIHBhZ2UgaGFz
IHJlbG9hZGVkLCB0cnkgbW92aW5nIHRoZSBtb3VzZSB0byB2ZXJpZnkgdGhhdCB3ZSBnZXQgbW91
c2UgbW92ZSBldmVudHMuCiAgICAgd2ViVmlldy5zaW11bGF0ZU1vdXNlTW92ZSgxMCwgMTApOwog
ICAgIHdlYlZpZXcuc2ltdWxhdGVNb3VzZU1vdmUoMjAsIDIwKTsKIAotICAgIFRFU1RfQVNTRVJU
KHJ1bkpTVGVzdCh3ZWJWaWV3LnBhZ2UoKSwgImRpZE1vdmVNb3VzZSgpIiwgInRydWUiKSk7Cisg
ICAgRVhQRUNUX1RSVUUocnVuSlNUZXN0KHdlYlZpZXcucGFnZSgpLCAiZGlkTW92ZU1vdXNlKCki
LCAidHJ1ZSIpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VMb2FkQmFzaWMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYWdlTG9hZEJhc2ljLmNw
cAkocmV2aXNpb24gODY1MDkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
UGFnZUxvYWRCYXNpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDE0ICs1MCwxMyBAQCBzdHJ1
Y3QgU3RhdGUgewogc3RhdGljIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShX
S1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIFN0YXRlKiBzdGF0ZSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8U3RhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0gICAgVEVTVF9BU1NF
UlQoc3RhdGUtPmRpZERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOwotICAgIFRFU1Rf
QVNTRVJUKCFzdGF0ZS0+ZGlkQ29tbWl0TG9hZEZvckZyYW1lKTsKKyAgICBFWFBFQ1RfVFJVRShz
dGF0ZS0+ZGlkRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik7CisgICAgRVhQRUNUX0ZB
TFNFKHN0YXRlLT5kaWRDb21taXRMb2FkRm9yRnJhbWUpOwogCiAgICAgLy8gVGhlIGNvbW1pdGVk
IFVSTCBzaG91bGQgYmUgbnVsbC4KLSAgICBURVNUX0FTU0VSVCghV0tGcmFtZUNvcHlVUkwoZnJh
bWUpKTsKLQotICAgIFRFU1RfQVNTRVJUKCFzdGF0ZS0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZSk7CisgICAgRVhQRUNUX1RSVUUoIVdLRnJhbWVDb3B5VVJMKGZyYW1lKSk7CiAKKyAg
ICBFWFBFQ1RfRkFMU0Uoc3RhdGUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOwog
CiAgICAgc3RhdGUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgPSB0cnVlOwogfQpA
QCAtNjUsMTEgKzY0LDExIEBAIHN0YXRpYyB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnIKIHN0YXRpYyB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tG
cmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQogewogICAgIFN0YXRlKiBzdGF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8U3RhdGUqPihjb25zdF9j
YXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0gICAgVEVTVF9BU1NFUlQoc3RhdGUtPmRpZERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOwotICAgIFRFU1RfQVNTRVJUKHN0YXRlLT5kaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS0+ZGlk
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUt
PmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOwogCiAgICAgLy8gVGhlIHByb3Zpc2lv
bmFsIFVSTCBzaG91bGQgYmUgbnVsbC4KLSAgICBURVNUX0FTU0VSVCghV0tGcmFtZUNvcHlQcm92
aXNpb25hbFVSTChmcmFtZSkpOworICAgIEVYUEVDVF9GQUxTRShXS0ZyYW1lQ29weVByb3Zpc2lv
bmFsVVJMKGZyYW1lKSk7CiAKICAgICBzdGF0ZS0+ZGlkQ29tbWl0TG9hZEZvckZyYW1lID0gdHJ1
ZTsKIH0KQEAgLTc3LDEyICs3NiwxMiBAQCBzdGF0aWMgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJh
bWUoV0tQYWdlCiBzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBh
Z2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKIHsKICAgICBTdGF0ZSogc3RhdGUgPSByZWludGVycHJldF9jYXN0PFN0YXRlKj4o
Y29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotICAgIFRFU1RfQVNTRVJUKHN0YXRlLT5k
aWREZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKTsKLSAgICBURVNUX0FTU0VSVChzdGF0
ZS0+ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk7Ci0gICAgVEVTVF9BU1NFUlQoc3Rh
dGUtPmRpZENvbW1pdExvYWRGb3JGcmFtZSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUtPmRpZERl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLT5k
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS0+
ZGlkQ29tbWl0TG9hZEZvckZyYW1lKTsKIAogICAgIC8vIFRoZSBwcm92aXNpb25hbCBVUkwgc2hv
dWxkIGJlIG51bGwuCi0gICAgVEVTVF9BU1NFUlQoIVdLRnJhbWVDb3B5UHJvdmlzaW9uYWxVUkwo
ZnJhbWUpKTsKKyAgICBFWFBFQ1RfVFJVRSghV0tGcmFtZUNvcHlQcm92aXNpb25hbFVSTChmcmFt
ZSkpOwogCiAgICAgdGVzdDFEb25lID0gdHJ1ZTsKIH0KQEAgLTkwLDggKzg5LDggQEAgc3RhdGlj
IHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZQogc3RhdGljIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwg
V0tGcmFtZU5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBXS0V2ZW50TW9kaWZpZXJzIG1v
ZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9uIG1vdXNlQnV0dG9uLCBXS1VSTFJlcXVlc3RSZWYg
cmVxdWVzdCwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYgdXNl
ckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgU3RhdGUqIHN0YXRlID0gcmVp
bnRlcnByZXRfY2FzdDxTdGF0ZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLSAg
ICBURVNUX0FTU0VSVCghc3RhdGUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOwot
ICAgIFRFU1RfQVNTRVJUKCFzdGF0ZS0+ZGlkQ29tbWl0TG9hZEZvckZyYW1lKTsKKyAgICBFWFBF
Q1RfRkFMU0Uoc3RhdGUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOworICAgIEVY
UEVDVF9GQUxTRShzdGF0ZS0+ZGlkQ29tbWl0TG9hZEZvckZyYW1lKTsKIAogICAgIHN0YXRlLT5k
aWREZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0gdHJ1ZTsKIApJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRo
aW5QYWdlRm9yRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9QYWdlTG9hZERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lLmNw
cAkocmV2aXNpb24gODY1MDkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
UGFnZUxvYWREaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDEzICs0NywxMyBAQCBzdGF0aWMgYm9vbCBkaWRDaGFuZ2VMb2NhdGlvbldp
dGhpblBhZ2U7CiBzdGF0aWMgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIHR5cGUs
IFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCiB7CiAgICAgaWYgKCFkaWRQb3BTdGF0ZVdpdGhpblBh
Z2UpIHsKLSAgICAgICAgVEVTVF9BU1NFUlQodHlwZSA9PSBrV0tTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uU2Vzc2lvblN0YXRlUG9wKTsKLSAgICAgICAgVEVTVF9BU1NFUlQoIWRpZENoYW5nZUxvY2F0
aW9uV2l0aGluUGFnZSk7CisgICAgICAgIEVYUEVDVF9FUSh0eXBlLCBrV0tTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uU2Vzc2lvblN0YXRlUG9wKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGRpZENoYW5n
ZUxvY2F0aW9uV2l0aGluUGFnZSk7CiAgICAgICAgIGRpZFBvcFN0YXRlV2l0aGluUGFnZSA9IHRy
dWU7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBURVNUX0FTU0VSVCh0eXBlID09IGtX
S1NhbWVEb2N1bWVudE5hdmlnYXRpb25BbmNob3JOYXZpZ2F0aW9uKTsKKyAgICBFWFBFQ1RfRVEo
dHlwZSwga1dLU2FtZURvY3VtZW50TmF2aWdhdGlvbkFuY2hvck5hdmlnYXRpb24pOwogICAgIGRp
ZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSA9IHRydWU7CiB9CiAKQEAgLTc5LDcgKzc5LDcgQEAg
VEVTVChXZWJLaXQyLCBQYWdlTG9hZERpZENoYW5nZUxvY2F0aW9uVwogCiAgICAgV0tSZXRhaW5Q
dHI8V0tVUkxSZWY+IHVybEFmdGVyQW5jaG9yQ2xpY2sgPSBhZG9wdFdLKFdLRnJhbWVDb3B5VVJM
KFdLUGFnZUdldE1haW5GcmFtZSh3ZWJWaWV3LnBhZ2UoKSkpKTsKIAotICAgIFRFU1RfQVNTRVJU
KCFXS1VSTElzRXF1YWwoaW5pdGlhbFVSTC5nZXQoKSwgdXJsQWZ0ZXJBbmNob3JDbGljay5nZXQo
KSkpOworICAgIEVYUEVDVF9GQUxTRShXS1VSTElzRXF1YWwoaW5pdGlhbFVSTC5nZXQoKSwgdXJs
QWZ0ZXJBbmNob3JDbGljay5nZXQoKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUHJldmVudEVtcHR5
VXNlckFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvUHJldmVudEVtcHR5VXNlckFnZW50LmNwcAkocmV2aXNpb24gODY1MDkpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUHJldmVudEVtcHR5VXNlckFnZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzgsMTcgKzM4LDE3IEBAIHN0YXRpYyBib29sIHRlc3REb25lOwog
CiBzdGF0aWMgdm9pZCBkaWRSdW5KYXZhU2NyaXB0KFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVm
IHJlc3VsdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvciwgdm9pZCogY29u
dGV4dCkKIHsKLSAgICBURVNUX0FTU0VSVChjb250ZXh0ID09IHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KDB4MTIzNDU3OCkpOwotICAgIFRFU1RfQVNTRVJUKHJlc3VsdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSk7CisgICAgRVhQRUNUX0VRKGNvbnRleHQsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4
MTIzNDU3OCkpOworICAgIEVYUEVDVF9UUlVFKHJlc3VsdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7
CiAKICAgICBKU0dsb2JhbENvbnRleHRSZWYgc2NyaXB0Q29udGV4dCA9IEpTR2xvYmFsQ29udGV4
dENyZWF0ZSgwKTsKICAgICBKU1ZhbHVlUmVmIHNjcmlwdFZhbHVlID0gV0tTZXJpYWxpemVkU2Ny
aXB0VmFsdWVEZXNlcmlhbGl6ZShyZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUsIHNjcmlwdENv
bnRleHQsIDApOwotICAgIFRFU1RfQVNTRVJUKEpTVmFsdWVJc1N0cmluZyhzY3JpcHRDb250ZXh0
LCBzY3JpcHRWYWx1ZSkpOworICAgIEVYUEVDVF9UUlVFKEpTVmFsdWVJc1N0cmluZyhzY3JpcHRD
b250ZXh0LCBzY3JpcHRWYWx1ZSkpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIHJlc3Vs
dCBvZiBuYXZpZ2F0b3IudXNlckFnZW50IGlzbid0IGVtcHR5LCBldmVuIGlmIHdlIHNldCB0aGUg
Y3VzdG9tCiAgICAgLy8gdXNlciBhZ2VudCB0byB0aGUgZW1wdHkgc3RyaW5nLgogICAgIEpTU3Ry
aW5nUmVmIHNjcmlwdFN0cmluZyA9IEpTVmFsdWVUb1N0cmluZ0NvcHkoc2NyaXB0Q29udGV4dCwg
c2NyaXB0VmFsdWUsIDApOwotICAgIFRFU1RfQVNTRVJUKEpTU3RyaW5nR2V0TGVuZ3RoKHNjcmlw
dFN0cmluZykpOworICAgIEVYUEVDVF9HVChKU1N0cmluZ0dldExlbmd0aChzY3JpcHRTdHJpbmcp
LCAwdSk7CiAKICAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0U3RyaW5nKTsKICAgICBKU0dsb2Jh
bENvbnRleHRSZWxlYXNlKHNjcmlwdENvbnRleHQpOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9SZXNwb25zaXZl
bmVzc1RpbWVyRG9lc250RmlyZUVhcmx5LmNwcAkocmV2aXNpb24gODY1MDkpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVF
YXJseS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgc3RhdGljIGJvb2wgZGlk
QnJpZWZseVBhdXNlOwogc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUoV0tDb250ZXh0UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmLCBj
b25zdCB2b2lkKikKIHsKICAgICBkaWRCcmllZmx5UGF1c2UgPSB0cnVlOwotICAgIFRFU1RfQVNT
RVJUKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJEaWRCcmllZmx5
UGF1c2UiKSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKG1lc3NhZ2VOYW1lLCAiRGlkQnJpZWZseVBh
dXNlIik7CiB9CiAKIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYs
IFdLRnJhbWVSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCkBAIC05Miw3ICs5Miw4IEBAIFRF
U1QoV2ViS2l0MiwgUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEYKICAgICB3ZWJWaWV3LnNpbXVs
YXRlU3BhY2ViYXJLZXlQcmVzcygpOwogCiAgICAgVXRpbDo6cnVuKCZkaWRCcmllZmx5UGF1c2Up
OwotICAgIFRFU1RfQVNTRVJUKCFkaWRCZWNvbWVVbnJlc3BvbnNpdmUpOworCisgICAgRVhQRUNU
X0ZBTFNFKGRpZEJlY29tZVVucmVzcG9uc2l2ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9SZXN0b3Jl
U2Vzc2lvblN0YXRlQ29udGFpbmluZ0Zvcm1EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUmVzdG9yZVNlc3Npb25TdGF0ZUNvbnRhaW5pbmdG
b3JtRGF0YS5jcHAJKHJldmlzaW9uIDg2NTA5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL1Jlc3RvcmVTZXNzaW9uU3RhdGVDb250YWluaW5nRm9ybURhdGEuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NSwxMiArNzUsMTIgQEAgVEVTVChXZWJLaXQyLCBSZXN0b3JlU2Vzc2lv
blN0YXRlQ29udGFpbgogICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCkpOwog
CiAgICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiBkYXRhID0gY3JlYXRlU2Vzc2lvblN0YXRlQ29u
dGFpbmluZ0Zvcm1EYXRhKGNvbnRleHQuZ2V0KCkpOwotICAgIFRFU1RfQVNTRVJUKGRhdGEpOwor
ICAgIEVYUEVDVF9UUlVFKGRhdGEpOwogCiAgICAgV0tQYWdlUmVzdG9yZUZyb21TZXNzaW9uU3Rh
dGUod2ViVmlldy5wYWdlKCksIGRhdGEuZ2V0KCkpOwogICAgIFV0aWw6OnJ1bigmZGlkRmluaXNo
TG9hZCk7CiAKLSAgICBURVNUX0FTU0VSVChXS1BhZ2VDYW5Hb0JhY2sod2ViVmlldy5wYWdlKCkp
KTsKKyAgICBFWFBFQ1RfVFJVRShXS1BhZ2VDYW5Hb0JhY2sod2ViVmlldy5wYWdlKCkpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL1NwYWNlYmFyU2Nyb2xsaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvU3BhY2ViYXJTY3JvbGxpbmcuY3BwCShyZXZp
c2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9TcGFjZWJh
clNjcm9sbGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDM0ICs2OCwzNSBAQCBURVNUKFdl
YktpdDIsIFNwYWNlYmFyU2Nyb2xsaW5nKQogICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdl
KCksIHVybC5nZXQoKSk7CiAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKIAotICAgIFRF
U1RfQVNTRVJUKHJ1bkpTVGVzdCh3ZWJWaWV3LnBhZ2UoKSwgImlzRG9jdW1lbnRTY3JvbGxlZCgp
IiwgImZhbHNlIikpOwotICAgIFRFU1RfQVNTRVJUKHJ1bkpTVGVzdCh3ZWJWaWV3LnBhZ2UoKSwg
InRleHRGaWVsZENvbnRhaW5zU3BhY2UoKSIsICJmYWxzZSIpKTsKKyAgICBFWFBFQ1RfVFJVRShy
dW5KU1Rlc3Qod2ViVmlldy5wYWdlKCksICJpc0RvY3VtZW50U2Nyb2xsZWQoKSIsICJmYWxzZSIp
KTsKKyAgICBFWFBFQ1RfVFJVRShydW5KU1Rlc3Qod2ViVmlldy5wYWdlKCksICJ0ZXh0RmllbGRD
b250YWluc1NwYWNlKCkiLCAiZmFsc2UiKSk7CiAKICAgICB3ZWJWaWV3LnNpbXVsYXRlU3BhY2Vi
YXJLZXlQcmVzcygpOwogCi0gICAgVEVTVF9BU1NFUlQocnVuSlNUZXN0KHdlYlZpZXcucGFnZSgp
LCAiaXNEb2N1bWVudFNjcm9sbGVkKCkiLCAiZmFsc2UiKSk7Ci0gICAgVEVTVF9BU1NFUlQocnVu
SlNUZXN0KHdlYlZpZXcucGFnZSgpLCAidGV4dEZpZWxkQ29udGFpbnNTcGFjZSgpIiwgInRydWUi
KSk7CisgICAgRVhQRUNUX1RSVUUocnVuSlNUZXN0KHdlYlZpZXcucGFnZSgpLCAiaXNEb2N1bWVu
dFNjcm9sbGVkKCkiLCAiZmFsc2UiKSk7CisgICAgRVhQRUNUX1RSVUUocnVuSlNUZXN0KHdlYlZp
ZXcucGFnZSgpLCAidGV4dEZpZWxkQ29udGFpbnNTcGFjZSgpIiwgInRydWUiKSk7CiAKICAgICAv
LyBPbiBNYWMsIGEga2V5IGRvd24gZXZlbnQgcmVwcmVzZW50cyBib3RoIGEgcmF3IGtleSBkb3du
IGFuZCBhIGtleSBwcmVzcy4gT24gV2luZG93cywgYSBrZXkKICAgICAvLyBkb3duIGV2ZW50IG9u
bHkgcmVwcmVzZW50cyBhIHJhdyBrZXkgZG93bi4gV2UgZXhwZWN0IHRoZSBrZXkgcHJlc3MgdG8g
YmUgaGFuZGxlZCAoYmVjYXVzZSBpdAogICAgIC8vIGluc2VydHMgdGV4dCBpbnRvIHRoZSB0ZXh0
IGZpZWxkKS4gQnV0IHRoZSByYXcga2V5IGRvd24gc2hvdWxkIG5vdCBiZSBoYW5kbGVkLgogI2lm
IFBMQVRGT1JNKE1BQykKLSAgICBURVNUX0FTU0VSVCghZGlkTm90SGFuZGxlS2V5RG93bkV2ZW50
KTsKKyAgICBFWFBFQ1RfRkFMU0UoZGlkTm90SGFuZGxlS2V5RG93bkV2ZW50KTsKICNlbGlmIFBM
QVRGT1JNKFdJTikKLSAgICBURVNUX0FTU0VSVChkaWROb3RIYW5kbGVLZXlEb3duRXZlbnQpOwor
ICAgIEVYUEVDVF9UUlVFKGRpZE5vdEhhbmRsZUtleURvd25FdmVudCk7CiAjZW5kaWYKIAotICAg
IFRFU1RfQVNTRVJUKHJ1bkpTVGVzdCh3ZWJWaWV3LnBhZ2UoKSwgImJsdXJUZXh0RmllbGQoKSIs
ICJ1bmRlZmluZWQiKSk7CisgICAgRVhQRUNUX1RSVUUocnVuSlNUZXN0KHdlYlZpZXcucGFnZSgp
LCAiYmx1clRleHRGaWVsZCgpIiwgInVuZGVmaW5lZCIpKTsKIAogICAgIGRpZE5vdEhhbmRsZUtl
eURvd25FdmVudCA9IGZhbHNlOwogICAgIHdlYlZpZXcuc2ltdWxhdGVTcGFjZWJhcktleVByZXNz
KCk7CiAKLSAgICBURVNUX0FTU0VSVChydW5KU1Rlc3Qod2ViVmlldy5wYWdlKCksICJpc0RvY3Vt
ZW50U2Nyb2xsZWQoKSIsICJ0cnVlIikpOwotICAgIFRFU1RfQVNTRVJUKHJ1bkpTVGVzdCh3ZWJW
aWV3LnBhZ2UoKSwgInRleHRGaWVsZENvbnRhaW5zU3BhY2UoKSIsICJ0cnVlIikpOworICAgIEVY
UEVDVF9UUlVFKHJ1bkpTVGVzdCh3ZWJWaWV3LnBhZ2UoKSwgImlzRG9jdW1lbnRTY3JvbGxlZCgp
IiwgInRydWUiKSk7CisgICAgRVhQRUNUX1RSVUUocnVuSlNUZXN0KHdlYlZpZXcucGFnZSgpLCAi
dGV4dEZpZWxkQ29udGFpbnNTcGFjZSgpIiwgInRydWUiKSk7CisKICNpZiBQTEFURk9STShNQUMp
Ci0gICAgVEVTVF9BU1NFUlQoIWRpZE5vdEhhbmRsZUtleURvd25FdmVudCk7CisgICAgRVhQRUNU
X0ZBTFNFKGRpZE5vdEhhbmRsZUtleURvd25FdmVudCk7CiAjZWxpZiBQTEFURk9STShXSU4pCi0g
ICAgVEVTVF9BU1NFUlQoZGlkTm90SGFuZGxlS2V5RG93bkV2ZW50KTsKKyAgICBFWFBFQ1RfVFJV
RShkaWROb3RIYW5kbGVLZXlEb3duRXZlbnQpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV0tQcmVmZXJlbmNlcy5jcHAJKHJl
dmlzaW9uIDg2NTA5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dLUHJl
ZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRl
ICJUZXN0LmgiCiAKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2luY2x1ZGUgPFdl
YktpdDIvV0tQcmVmZXJlbmNlcy5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNlc1By
aXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CkBAIC0zNyw3ICszOCw3
IEBAIFRFU1QoV2ViS2l0MiwgV0tQcmVmZXJlbmNlc0Jhc2ljKQogewogICAgIFdLUHJlZmVyZW5j
ZXNSZWYgcHJlZmVyZW5jZSA9IFdLUHJlZmVyZW5jZXNDcmVhdGUoKTsKIAotICAgIFRFU1RfQVNT
RVJUKFdLR2V0VHlwZUlEKHByZWZlcmVuY2UpID09IFdLUHJlZmVyZW5jZXNHZXRUeXBlSUQoKSk7
CisgICAgRVhQRUNUX0VRKFdLR2V0VHlwZUlEKHByZWZlcmVuY2UpLCBXS1ByZWZlcmVuY2VzR2V0
VHlwZUlEKCkpOwogCiAgICAgV0tSZWxlYXNlKHByZWZlcmVuY2UpOwogfQpAQCAtNjIsNDMgKzYz
LDM3IEBAIFRFU1QoV2ViS2l0MiwgV0tQcmVmZXJlbmNlc0RlZmF1bHRzKQogCiAgICAgV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlID0gV0tQcmVmZXJlbmNlc0NyZWF0ZSgpOwogCi0gICAgVEVT
VF9BU1NFUlQoV0tQcmVmZXJlbmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHByZWZlcmVuY2UpID09
IHRydWUpOwotICAgIFRFU1RfQVNTRVJUKFdLUHJlZmVyZW5jZXNHZXRMb2Fkc0ltYWdlc0F1dG9t
YXRpY2FsbHkocHJlZmVyZW5jZSkgPT0gdHJ1ZSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tQcmVmZXJl
bmNlc0dldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChwcmVmZXJlbmNlKSA9PSBm
YWxzZSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tQcmVmZXJlbmNlc0dldExvY2FsU3RvcmFnZUVuYWJs
ZWQocHJlZmVyZW5jZSkgPT0gdHJ1ZSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tQcmVmZXJlbmNlc0dl
dFhTU0F1ZGl0b3JFbmFibGVkKHByZWZlcmVuY2UpID09IHRydWUpOwotICAgIFRFU1RfQVNTRVJU
KFdLUHJlZmVyZW5jZXNHZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHByZWZlcmVuY2UpID09IGZh
bHNlKTsKLSAgICBURVNUX0FTU0VSVChXS1ByZWZlcmVuY2VzR2V0UGx1Z2luc0VuYWJsZWQocHJl
ZmVyZW5jZSkgPT0gdHJ1ZSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tQcmVmZXJlbmNlc0dldEphdmFF
bmFibGVkKHByZWZlcmVuY2UpID09IHRydWUpOwotICAgIFRFU1RfQVNTRVJUKFdLUHJlZmVyZW5j
ZXNHZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHByZWZlcmVuY2UpID09
IHRydWUpOwotICAgIFRFU1RfQVNTRVJUKFdLUHJlZmVyZW5jZXNHZXRIeXBlcmxpbmtBdWRpdGlu
Z0VuYWJsZWQocHJlZmVyZW5jZSkgPT0gdHJ1ZSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHN0YW5kYXJkRm9udEZhbWlseShBZG9wdFdLLCBXS1ByZWZlcmVuY2VzQ29weVN0YW5kYXJk
Rm9udEZhbWlseShwcmVmZXJlbmNlKSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhzdGFuZGFyZEZvbnRGYW1pbHkuZ2V0KCksIGV4cGVjdGVkU3RhbmRhcmRG
b250RmFtaWx5KSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGZpeGVkRm9udEZhbWls
eShBZG9wdFdLLCBXS1ByZWZlcmVuY2VzQ29weUZpeGVkRm9udEZhbWlseShwcmVmZXJlbmNlKSk7
Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhmaXhlZEZvbnRG
YW1pbHkuZ2V0KCksIGV4cGVjdGVkRml4ZWRGb250RmFtaWx5KSk7Ci0gICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IHNlcmlmRm9udEZhbWlseShBZG9wdFdLLCBXS1ByZWZlcmVuY2VzQ29weVNl
cmlmRm9udEZhbWlseShwcmVmZXJlbmNlKSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhzZXJpZkZvbnRGYW1pbHkuZ2V0KCksIGV4cGVjdGVkU2VyaWZGb250
RmFtaWx5KSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNhbnNTZXJpZkZvbnRGYW1p
bHkoQWRvcHRXSywgV0tQcmVmZXJlbmNlc0NvcHlTYW5zU2VyaWZGb250RmFtaWx5KHByZWZlcmVu
Y2UpKTsKLSAgICBURVNUX0FTU0VSVChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHNhbnNT
ZXJpZkZvbnRGYW1pbHkuZ2V0KCksIGV4cGVjdGVkU2Fuc1NlcmlmRm9udEZhbWlseSkpOwotICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBjdXJzaXZlRm9udEZhbWlseShBZG9wdFdLLCBXS1By
ZWZlcmVuY2VzQ29weUN1cnNpdmVGb250RmFtaWx5KHByZWZlcmVuY2UpKTsKLSAgICBURVNUX0FT
U0VSVChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGN1cnNpdmVGb250RmFtaWx5LmdldCgp
LCBleHBlY3RlZEN1cnNpdmVGb250RmFtaWx5KSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IGZhbnRhc3lGb250RmFtaWx5KEFkb3B0V0ssIFdLUHJlZmVyZW5jZXNDb3B5RmFudGFzeUZv
bnRGYW1pbHkocHJlZmVyZW5jZSkpOwotICAgIFRFU1RfQVNTRVJUKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcoZmFudGFzeUZvbnRGYW1pbHkuZ2V0KCksIGV4cGVjdGVkRmFudGFzeUZvbnRG
YW1pbHkpKTsKLSAgICBURVNUX0FTU0VSVChXS1ByZWZlcmVuY2VzR2V0TWluaW11bUZvbnRTaXpl
KHByZWZlcmVuY2UpID09IDApOwotICAgIFRFU1RfQVNTRVJUKFdLUHJlZmVyZW5jZXNHZXRQcml2
YXRlQnJvd3NpbmdFbmFibGVkKHByZWZlcmVuY2UpID09IGZhbHNlKTsKLSAgICBURVNUX0FTU0VS
VChXS1ByZWZlcmVuY2VzR2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChwcmVmZXJlbmNlKSA9PSBm
YWxzZSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tQcmVmZXJlbmNlc0dldFRleHRBcmVhc0FyZVJlc2l6
YWJsZShwcmVmZXJlbmNlKSA9PSB0cnVlKTsKKyAgICBFWFBFQ1RfVFJVRShXS1ByZWZlcmVuY2Vz
R2V0SmF2YVNjcmlwdEVuYWJsZWQocHJlZmVyZW5jZSkpOworICAgIEVYUEVDVF9UUlVFKFdLUHJl
ZmVyZW5jZXNHZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkocHJlZmVyZW5jZSkpOworICAgIEVY
UEVDVF9GQUxTRShXS1ByZWZlcmVuY2VzR2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkKHByZWZlcmVuY2UpKTsKKyAgICBFWFBFQ1RfVFJVRShXS1ByZWZlcmVuY2VzR2V0TG9jYWxT
dG9yYWdlRW5hYmxlZChwcmVmZXJlbmNlKSk7CisgICAgRVhQRUNUX1RSVUUoV0tQcmVmZXJlbmNl
c0dldFhTU0F1ZGl0b3JFbmFibGVkKHByZWZlcmVuY2UpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV0tQ
cmVmZXJlbmNlc0dldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJlZmVyZW5jZSkpOworICAgIEVY
UEVDVF9UUlVFKFdLUHJlZmVyZW5jZXNHZXRQbHVnaW5zRW5hYmxlZChwcmVmZXJlbmNlKSk7Cisg
ICAgRVhQRUNUX1RSVUUoV0tQcmVmZXJlbmNlc0dldEphdmFFbmFibGVkKHByZWZlcmVuY2UpKTsK
KyAgICBFWFBFQ1RfVFJVRShXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dz
QXV0b21hdGljYWxseShwcmVmZXJlbmNlKSk7CisgICAgRVhQRUNUX1RSVUUoV0tQcmVmZXJlbmNl
c0dldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChwcmVmZXJlbmNlKSk7CisgICAgRVhQRUNUX1dL
X1NUUkVRKGFkb3B0V0soV0tQcmVmZXJlbmNlc0NvcHlTdGFuZGFyZEZvbnRGYW1pbHkocHJlZmVy
ZW5jZSkpLCBleHBlY3RlZFN0YW5kYXJkRm9udEZhbWlseSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KGFkb3B0V0soV0tQcmVmZXJlbmNlc0NvcHlGaXhlZEZvbnRGYW1pbHkocHJlZmVyZW5jZSkpLCBl
eHBlY3RlZEZpeGVkRm9udEZhbWlseSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKGFkb3B0V0soV0tQ
cmVmZXJlbmNlc0NvcHlTZXJpZkZvbnRGYW1pbHkocHJlZmVyZW5jZSkpLCBleHBlY3RlZFNlcmlm
Rm9udEZhbWlseSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKGFkb3B0V0soV0tQcmVmZXJlbmNlc0Nv
cHlTYW5zU2VyaWZGb250RmFtaWx5KHByZWZlcmVuY2UpKSwgZXhwZWN0ZWRTYW5zU2VyaWZGb250
RmFtaWx5KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoYWRvcHRXSyhXS1ByZWZlcmVuY2VzQ29weUN1
cnNpdmVGb250RmFtaWx5KHByZWZlcmVuY2UpKSwgZXhwZWN0ZWRDdXJzaXZlRm9udEZhbWlseSk7
CisgICAgRVhQRUNUX1dLX1NUUkVRKGFkb3B0V0soV0tQcmVmZXJlbmNlc0NvcHlGYW50YXN5Rm9u
dEZhbWlseShwcmVmZXJlbmNlKSksIGV4cGVjdGVkRmFudGFzeUZvbnRGYW1pbHkpOworICAgIEVY
UEVDVF9FUShXS1ByZWZlcmVuY2VzR2V0TWluaW11bUZvbnRTaXplKHByZWZlcmVuY2UpLCAwdSk7
CisgICAgRVhQRUNUX0ZBTFNFKFdLUHJlZmVyZW5jZXNHZXRQcml2YXRlQnJvd3NpbmdFbmFibGVk
KHByZWZlcmVuY2UpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV0tQcmVmZXJlbmNlc0dldERldmVsb3Bl
ckV4dHJhc0VuYWJsZWQocHJlZmVyZW5jZSkpOworICAgIEVYUEVDVF9UUlVFKFdLUHJlZmVyZW5j
ZXNHZXRUZXh0QXJlYXNBcmVSZXNpemFibGUocHJlZmVyZW5jZSkpOwogCiAjaWYgUExBVEZPUk0o
V0lOKQotICAgIFRFU1RfQVNTRVJUKFdLUHJlZmVyZW5jZXNHZXRGb250U21vb3RoaW5nTGV2ZWwo
cHJlZmVyZW5jZSkgPT0ga1dLRm9udFNtb290aGluZ0xldmVsV2luZG93cyk7CisgICAgRVhQRUNU
X0VRKFdLUHJlZmVyZW5jZXNHZXRGb250U21vb3RoaW5nTGV2ZWwocHJlZmVyZW5jZSksIGtXS0Zv
bnRTbW9vdGhpbmdMZXZlbFdpbmRvd3MpOwogI2Vsc2UKLSAgICBURVNUX0FTU0VSVChXS1ByZWZl
cmVuY2VzR2V0Rm9udFNtb290aGluZ0xldmVsKHByZWZlcmVuY2UpID09IGtXS0ZvbnRTbW9vdGhp
bmdMZXZlbE1lZGl1bSk7CisgICAgRVhQRUNUX0VRKFdLUHJlZmVyZW5jZXNHZXRGb250U21vb3Ro
aW5nTGV2ZWwocHJlZmVyZW5jZSksIGtXS0ZvbnRTbW9vdGhpbmdMZXZlbE1lZGl1bSk7CiAjZW5k
aWYKIAotICAgIFRFU1RfQVNTRVJUKFdLUHJlZmVyZW5jZXNHZXRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nRW5hYmxlZChwcmVmZXJlbmNlKSA9PSB0cnVlKTsKLSAgICBURVNUX0FTU0VSVChXS1ByZWZl
cmVuY2VzR2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShwcmVmZXJlbmNlKSA9PSBmYWxzZSk7
Ci0gICAgVEVTVF9BU1NFUlQoV0tQcmVmZXJlbmNlc0dldENvbXBvc2l0aW5nUmVwYWludENvdW50
ZXJzVmlzaWJsZShwcmVmZXJlbmNlKSA9PSBmYWxzZSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tQcmVm
ZXJlbmNlc0dldE5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKHByZWZlcmVuY2UpID09IGZhbHNlKTsK
KyAgICBFWFBFQ1RfVFJVRShXS1ByZWZlcmVuY2VzR2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Vu
YWJsZWQocHJlZmVyZW5jZSkpOworICAgIEVYUEVDVF9GQUxTRShXS1ByZWZlcmVuY2VzR2V0Q29t
cG9zaXRpbmdCb3JkZXJzVmlzaWJsZShwcmVmZXJlbmNlKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdL
UHJlZmVyZW5jZXNHZXRDb21wb3NpdGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGUocHJlZmVyZW5j
ZSkpOworICAgIEVYUEVDVF9GQUxTRShXS1ByZWZlcmVuY2VzR2V0TmVlZHNTaXRlU3BlY2lmaWNR
dWlya3MocHJlZmVyZW5jZSkpOwogCiAgICAgV0tSZWxlYXNlKHByZWZlcmVuY2UpOwogfQpJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dLU3RyaW5nLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV0tTdHJpbmcuY3BwCShy
ZXZpc2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XS1N0
cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDM4ICszMiwzOCBAQCBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CiBURVNUKFdlYktpdDIsIFdLU3RyaW5nKQogewogICAgIFdLU3RyaW5nUmVm
IHN0cmluZyA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJoZWxsbyIpOwotICAgIFRF
U1RfQVNTRVJUKCFXS1N0cmluZ0lzRW1wdHkoc3RyaW5nKSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tT
dHJpbmdJc0VxdWFsKHN0cmluZywgc3RyaW5nKSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhzdHJpbmcsICJoZWxsbyIpKTsKLSAgICBURVNUX0FTU0VSVChX
S1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKSA9PSAxNik7CisgICAgRVhQ
RUNUX1RSVUUoIVdLU3RyaW5nSXNFbXB0eShzdHJpbmcpKTsKKyAgICBFWFBFQ1RfVFJVRShXS1N0
cmluZ0lzRXF1YWwoc3RyaW5nLCBzdHJpbmcpKTsKKyAgICBFWFBFQ1RfVFJVRShXS1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKHN0cmluZywgImhlbGxvIikpOworICAgIEVYUEVDVF9FUShXS1N0
cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoc3RyaW5nKSwgMTZ1KTsKIAogICAgIHNpemVf
dCBtYXhTaXplID0gV0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmluZyk7CiAg
ICAgY2hhciogYnVmZmVyID0gbmV3IGNoYXJbbWF4U2l6ZV07CiAKICAgICBzaXplX3QgYWN0dWFs
U2l6ZSA9IFdLU3RyaW5nR2V0VVRGOENTdHJpbmcoc3RyaW5nLCBidWZmZXIsIG1heFNpemUpOwot
ICAgIFRFU1RfQVNTRVJUKGFjdHVhbFNpemUgPT0gNik7Ci0gICAgVEVTVF9BU1NFUlQoc3RyY21w
KGJ1ZmZlciwgImhlbGxvIikgPT0gMCk7CisgICAgRVhQRUNUX0VRKGFjdHVhbFNpemUsIDZ1KTsK
KyAgICBFWFBFQ1RfU1RSRVEoYnVmZmVyLCAiaGVsbG8iKTsKIAogICAgIGRlbGV0ZVtdIGJ1ZmZl
cjsKICAgICAKICAgICBtYXhTaXplID0gV0tTdHJpbmdHZXRMZW5ndGgoc3RyaW5nKTsKLSAgICBU
RVNUX0FTU0VSVChtYXhTaXplID09IDUpOworICAgIEVYUEVDVF9FUShtYXhTaXplLCA1dSk7CiAK
ICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBvbmUgY2hhcmFjdGVyIGxhcmdlciB0aGFuIHdlIG5l
ZWQuCiAgICAgV0tDaGFyKiB1bmlCdWZmZXIgPSBuZXcgV0tDaGFyW21heFNpemUrMV07CiAgICAg
YWN0dWFsU2l6ZSA9IFdLU3RyaW5nR2V0Q2hhcmFjdGVycyhzdHJpbmcsIHVuaUJ1ZmZlciwgbWF4
U2l6ZSk7Ci0gICAgVEVTVF9BU1NFUlQoYWN0dWFsU2l6ZSA9PSA1KTsKKyAgICBFWFBFQ1RfRVEo
YWN0dWFsU2l6ZSwgNXUpOwogICAgIAogICAgIFdLQ2hhciBoZWxsb0J1ZmZlcltdID0geyAnaCcs
ICdlJywgJ2wnLCAnbCcsICdvJyB9OwotICAgIFRFU1RfQVNTRVJUKCFtZW1jbXAodW5pQnVmZmVy
LCBoZWxsb0J1ZmZlciwgMTApKTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKHVuaUJ1ZmZlciwg
aGVsbG9CdWZmZXIsIDEwKSk7CiAgICAgCiAgICAgLy8gVGVzdCBwYXNzaW5nIGEgYnVmZmVyIGxl
bmd0aCA8IHRoZSBzdHJpbmcgbGVuZ3RoLgogICAgIGFjdHVhbFNpemUgPSBXS1N0cmluZ0dldENo
YXJhY3RlcnMoc3RyaW5nLCB1bmlCdWZmZXIsIG1heFNpemUtMSk7Ci0gICAgVEVTVF9BU1NFUlQo
YWN0dWFsU2l6ZSA9PSA0KTsKKyAgICBFWFBFQ1RfRVEoYWN0dWFsU2l6ZSwgNHUpOwogICAgIAog
ICAgIC8vIFRlc3QgcGFzc2luZyBhIGJ1ZmZlciBsZW5ndGggPiB0aGUgc3RyaW5nIGxlbmd0aC4K
ICAgICBhY3R1YWxTaXplID0gV0tTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0cmluZywgdW5pQnVmZmVy
LCBtYXhTaXplKzEpOwotICAgIFRFU1RfQVNTRVJUKGFjdHVhbFNpemUgPT0gNSk7CisgICAgRVhQ
RUNUX0VRKGFjdHVhbFNpemUsIDV1KTsKICAgICAKICAgICBkZWxldGVbXSB1bmlCdWZmZXI7CiAg
ICAgCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV0tTdHJpbmdKU1N0
cmluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L1dLU3RyaW5nSlNTdHJpbmcuY3BwCShyZXZpc2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9XS1N0cmluZ0pTU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcsMTAgKzM3LDEwIEBAIFRFU1QoV2ViS2l0MiwgV0tTdHJpbmdKU1N0cmluZykKICAgICBK
U1N0cmluZ1JlZiBqc1N0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJoZWxs
byIpOwogICAgIAogICAgIFdLU3RyaW5nUmVmIGNvbnZlcnRlZEpTU3RyaW5nID0gV0tTdHJpbmdD
cmVhdGVXaXRoSlNTdHJpbmcoanNTdHJpbmcpOwotICAgIFRFU1RfQVNTRVJUKFdLU3RyaW5nSXNF
cXVhbCh3a1N0cmluZywgY29udmVydGVkSlNTdHJpbmcpKTsKKyAgICBFWFBFQ1RfVFJVRShXS1N0
cmluZ0lzRXF1YWwod2tTdHJpbmcsIGNvbnZlcnRlZEpTU3RyaW5nKSk7CiAgICAgCiAgICAgSlNT
dHJpbmdSZWYgY29udmVydGVkV0tTdHJpbmcgPSBXS1N0cmluZ0NvcHlKU1N0cmluZyh3a1N0cmlu
Zyk7Ci0gICAgVEVTVF9BU1NFUlQoSlNTdHJpbmdJc0VxdWFsKGpzU3RyaW5nLCBjb252ZXJ0ZWRX
S1N0cmluZykpOworICAgIEVYUEVDVF9UUlVFKEpTU3RyaW5nSXNFcXVhbChqc1N0cmluZywgY29u
dmVydGVkV0tTdHJpbmcpKTsKIAogICAgIFdLUmVsZWFzZSh3a1N0cmluZyk7CiAgICAgV0tSZWxl
YXNlKGNvbnZlcnRlZEpTU3RyaW5nKTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi93aW4vQWx0S2V5R2VuZXJhdGVzV01TeXNDb21tYW5kLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2luL0FsdEtleUdlbmVyYXRlc1dN
U3lzQ29tbWFuZC5jcHAJKHJldmlzaW9uIDg2NTA5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL3dpbi9BbHRLZXlHZW5lcmF0ZXNXTVN5c0NvbW1hbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MCw3ICs4MCw3IEBAIFRFU1QoV2ViS2l0MiwgQWx0S2V5R2VuZXJhdGVzV01T
eXNDb21tYW4KIAogICAgIC8vIFRoZSBXTV9TWVNLRVlVUCBtZXNzYWdlIHNob3VsZCBoYXZlIGdl
bmVyYXRlZCBhIFdNX1NZU0NPTU1BTkQgbWVzc2FnZSB0aGF0IHdhcyBzZW50IHRvIHRoZQogICAg
IC8vIFdLVmlldydzIHBhcmVudCB3aW5kb3cuCi0gICAgVEVTVF9BU1NFUlQob2JzZXJ2ZXIud2lu
ZG93RGlkUmVjZWl2ZVdNU3lzQ29tbWFuZCgpKTsKKyAgICBFWFBFQ1RfVFJVRShvYnNlcnZlci53
aW5kb3dEaWRSZWNlaXZlV01TeXNDb21tYW5kKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2luL0hp
ZGVGaW5kSW5kaWNhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvd2luL0hpZGVGaW5kSW5kaWNhdG9yLmNwcAkocmV2aXNpb24gODY1MDkpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2luL0hpZGVGaW5kSW5kaWNhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsMTQgKzcyLDE0IEBAIFRFU1QoV2ViS2l0MiwgSGlk
ZUZpbmRJbmRpY2F0b3IpCiAgICAgVXRpbDo6cnVuKCZmaW5kSW5kaWNhdG9yQ2FsbGJhY2tXYXND
YWxsZWQpOwogICAgIGZpbmRJbmRpY2F0b3JDYWxsYmFja1dhc0NhbGxlZCA9IGZhbHNlOwogCi0g
ICAgVEVTVF9BU1NFUlQoYml0bWFwKTsKKyAgICBFWFBFQ1RfVFJVRShiaXRtYXApOwogICAgIDo6
RGVsZXRlT2JqZWN0KGJpdG1hcCk7CiAgICAgYml0bWFwID0gMDsKIAogICAgIFdLUGFnZUhpZGVG
aW5kVUkod2ViVmlldy5wYWdlKCkpOwogICAgIFV0aWw6OnJ1bigmZmluZEluZGljYXRvckNhbGxi
YWNrV2FzQ2FsbGVkKTsKIAotICAgIFRFU1RfQVNTRVJUKCFiaXRtYXApOworICAgIEVYUEVDVF9U
UlVFKCFiaXRtYXApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2luL1RyYW5zbGF0ZU1lc3NhZ2VHZW5l
cmF0ZXNXTUNoYXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi93aW4vVHJhbnNsYXRlTWVzc2FnZUdlbmVyYXRlc1dNQ2hhci5jcHAJKHJldmlzaW9u
IDg2NTA5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3dpbi9UcmFuc2xh
dGVNZXNzYWdlR2VuZXJhdGVzV01DaGFyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUs
NyBAQCBURVNUKFdlYktpdDIsIFRyYW5zbGF0ZU1lc3NhZ2VHZW5lcmF0ZXNXCiAgICAgcnVuQW5k
V2F0Y2hGb3JXTUNoYXIoJmRpZE5vdEhhbmRsZUtleUV2ZW50Q2FsbGVkKTsKIAogICAgIC8vIFdl
YktpdCBzaG91bGQgbm90IGhhdmUgY2FsbGVkIFRyYW5zbGF0ZU1lc3NhZ2UoKSBvbiB0aGUgV01f
S0VZRE9XTiBtZXNzYWdlIHNpbmNlIHdlIGluc3RhbGxlZCBhIGRpZE5vdEhhbmRsZUtleUV2ZW50
IGNhbGxiYWNrLgotICAgIFRFU1RfQVNTRVJUKCFkaWRTZWVXTUNoYXIpOworICAgIEVYUEVDVF9G
QUxTRShkaWRTZWVXTUNoYXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93665</attachid>
            <date>2011-05-16 10:26:29 -0700</date>
            <delta_ts>2011-05-16 10:37:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60862-20110516102628.patch</filename>
            <type>text/plain</type>
            <size>39117</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg2NTE1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjIgQEAKKzIwMTEtMDUtMTUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb252ZXJ0IGFwaSB0
ZXN0ZXIgb3ZlciB0byB1c2luZyBndGVzdCBleHBlY3RhdGlvbnMgZGlyZWN0bHkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwODYyCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnRvU1REKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRp
bGl0aWVzLmg6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjphc3NlcnRXS1N0cmlnRXF1
YWwpOgorICAgICAgICBBZGQgY29udmVuaWVuY2UgbWFjcm8gdG8gY29tcGFyZSBXSzIgc3RyaW5n
cy4gQWRkIHNvbWUgb3ZlcmxvYWRzIG9mIHRvU1REIHRvIG1ha2UKKyAgICAgICAgdGhlIGltcGxl
bWVudGF0aW9uIG9mIHRoZSBtYWNybyBzaW1wbGVyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0Lmg6CisgICAgICAgIFJlbW92ZSBURVNUX0FTU0VSVCBmb3J3YXJkZXIuCisKKyAgICAg
ICAgW1Rlc3QgY2hhbmdlcyBlbGlkZWRdCisKIDIwMTEtMDUtMTUgIERhbmllbCBCYXRlcyAgPGRi
YXRlc0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENocmlzIEplcmRvbmVrLgpJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAJKHJldmlzaW9uIDg2NTA5
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9KYXZhU2NyaXB0VGVzdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDE4ICs0MywxOCBAQCBzdHJ1Y3QgSmF2YVNjcmlwdENhbGxiYWNrQ29udGV4dCB7
CiAKIHN0YXRpYyB2b2lkIGphdmFTY3JpcHRDYWxsYmFjayhXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZVJlZiByZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQq
IGN0eCkKIHsKLSAgICBURVNUX0FTU0VSVChyZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUpOwor
ICAgIEFTU0VSVF9OT1RfTlVMTChyZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUpOwogCiAgICAg
SmF2YVNjcmlwdENhbGxiYWNrQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PEphdmFTY3Jp
cHRDYWxsYmFja0NvbnRleHQqPihjdHgpOwogCiAgICAgSlNHbG9iYWxDb250ZXh0UmVmIHNjcmlw
dENvbnRleHQgPSBKU0dsb2JhbENvbnRleHRDcmVhdGUoMCk7Ci0gICAgVEVTVF9BU1NFUlQoc2Ny
aXB0Q29udGV4dCk7CisgICAgQVNTRVJUX05PVF9OVUxMKHNjcmlwdENvbnRleHQpOwogCiAgICAg
SlNWYWx1ZVJlZiBzY3JpcHRWYWx1ZSA9IFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlRGVzZXJpYWxp
emUocmVzdWx0U2VyaWFsaXplZFNjcmlwdFZhbHVlLCBzY3JpcHRDb250ZXh0LCAwKTsKLSAgICBU
RVNUX0FTU0VSVChzY3JpcHRWYWx1ZSk7CisgICAgQVNTRVJUX05PVF9OVUxMKHNjcmlwdFZhbHVl
KTsKIAogICAgIEpTU3RyaW5nUmVmIHNjcmlwdFN0cmluZyA9IEpTVmFsdWVUb1N0cmluZ0NvcHko
c2NyaXB0Q29udGV4dCwgc2NyaXB0VmFsdWUsIDApOwotICAgIFRFU1RfQVNTRVJUKHNjcmlwdFN0
cmluZyk7CisgICAgQVNTRVJUX05PVF9OVUxMKHNjcmlwdFN0cmluZyk7CiAKICAgICBjb250ZXh0
LT5kaWRGaW5pc2ggPSB0cnVlOwogICAgIGNvbnRleHQtPmRpZE1hdGNoRXhwZWN0ZWRTdHJpbmcg
PSBKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHNjcmlwdFN0cmluZywgY29udGV4dC0+ZXhw
ZWN0ZWRTdHJpbmcpOwpAQCAtNjIsMTggKzYyLDEzIEBAIHN0YXRpYyB2b2lkIGphdmFTY3JpcHRD
YWxsYmFjayhXS1NlcmlhbGkKICAgICBKU1N0cmluZ1JlbGVhc2Uoc2NyaXB0U3RyaW5nKTsKICAg
ICBKU0dsb2JhbENvbnRleHRSZWxlYXNlKHNjcmlwdENvbnRleHQpOwogCi0gICAgVEVTVF9BU1NF
UlQoIWVycm9yKTsKLX0KLQotc3RhdGljIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB3ayhjb25z
dCBjaGFyKiB1dGY4U3RyaW5nKQotewotICAgIHJldHVybiBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4oQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXRmOFN0cmluZykpOwor
ICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKIH0KIAogYm9vbCBydW5KU1Rlc3QoV0tQYWdlUmVmIHBh
Z2UsIGNvbnN0IGNoYXIqIHNjcmlwdCwgY29uc3QgY2hhciogZXhwZWN0ZWRSZXN1bHQpCiB7CiAg
ICAgSmF2YVNjcmlwdENhbGxiYWNrQ29udGV4dCBjb250ZXh0KGV4cGVjdGVkUmVzdWx0KTsKLSAg
ICBXS1BhZ2VSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUocGFnZSwgd2soc2NyaXB0KS5nZXQoKSwg
JmNvbnRleHQsIGphdmFTY3JpcHRDYWxsYmFjayk7CisgICAgV0tQYWdlUnVuSmF2YVNjcmlwdElu
TWFpbkZyYW1lKHBhZ2UsIFV0aWw6OnRvV0soc2NyaXB0KS5nZXQoKSwgJmNvbnRleHQsIGphdmFT
Y3JpcHRDYWxsYmFjayk7CiAgICAgVXRpbDo6cnVuKCZjb250ZXh0LmRpZEZpbmlzaCk7CiAgICAg
cmV0dXJuIGNvbnRleHQuZGlkTWF0Y2hFeHBlY3RlZFN0cmluZzsKIH0KSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCShyZXZpc2lvbiA4NjUwOSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01OCw2ICs1OCwxNiBAQCBzdGQ6OnN0cmluZyB0b1NURChXS1N0cmluZ1JlZiBzdHJpbmcpCiAg
ICAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZmZlci5nZXQoKSwgc3RyaW5nTGVuZ3RoIC0gMSk7CiB9
CiAKK3N0ZDo6c3RyaW5nIHRvU1REKFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBzdHJpbmcpCit7
CisgICAgcmV0dXJuIHRvU1REKHN0cmluZy5nZXQoKSk7Cit9CisKK3N0ZDo6c3RyaW5nIHRvU1RE
KGNvbnN0IGNoYXIqIHN0cmluZykKK3sKKyAgICByZXR1cm4gc3RkOjpzdHJpbmcoc3RyaW5nKTsK
K30KKwogV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHRvV0soY29uc3QgY2hhciogdXRmOFN0cmlu
ZykKIHsKICAgICByZXR1cm4gV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+KEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHV0ZjhTdHJpbmcpKTsKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgJKHJldmlzaW9uIDg2NTA5KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCAr
MjYsMTEgQEAKICNpZm5kZWYgUGxhdGZvcm1VdGlsaXRpZXNfaAogI2RlZmluZSBQbGF0Zm9ybVV0
aWxpdGllc19oCiAKLSNpbmNsdWRlIDxXZWJLaXQyL1dlYktpdDIuaD4KICNpbmNsdWRlIDxXZWJL
aXQyL1dLUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8
V2ViS2l0Mi9XZWJLaXQyLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDxz
dHJpbmc+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKIG5hbWVzcGFjZSBVdGlsIHsKQEAgLTUyLDkgKzUzLDIxIEBAIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBNSU1FVHlwZUZvcldLVVIKIAogYm9vbCBpc0tleURvd24oV0tOYXRpdmVFdmVu
dFB0cik7CiAKLXN0ZDo6c3RyaW5nIHRvU1REKFdLU3RyaW5nUmVmIHN0cmluZyk7CitzdGQ6OnN0
cmluZyB0b1NURChXS1N0cmluZ1JlZik7CitzdGQ6OnN0cmluZyB0b1NURChXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4pOworc3RkOjpzdHJpbmcgdG9TVEQoY29uc3QgY2hhciopOworCiBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gdG9XSyhjb25zdCBjaGFyKiB1dGY4U3RyaW5nKTsKIAordGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3N0YXRpYyBpbmxpbmUgOjp0ZXN0aW5nOjpBc3Nl
cnRpb25SZXN1bHQgYXNzZXJ0V0tTdHJpZ0VxdWFsKGNvbnN0IGNoYXIqIGV4cGVjdGVkX2V4cHJl
c3Npb24sIGNvbnN0IGNoYXIqIGFjdHVhbF9leHByZXNzaW9uLCBUIGV4cGVjdGVkLCBVIGFjdHVh
bCkKK3sKKyAgICByZXR1cm4gOjp0ZXN0aW5nOjppbnRlcm5hbDo6Q21wSGVscGVyU1RSRVEoZXhw
ZWN0ZWRfZXhwcmVzc2lvbiwgYWN0dWFsX2V4cHJlc3Npb24sIFV0aWw6OnRvU1REKGV4cGVjdGVk
KS5jX3N0cigpLCBVdGlsOjp0b1NURChhY3R1YWwpLmNfc3RyKCkpOworfQorCisjZGVmaW5lIEVY
UEVDVF9XS19TVFJFUShleHBlY3RlZCwgYWN0dWFsKSBcCisgICAgRVhQRUNUX1BSRURfRk9STUFU
MihUZXN0V2ViS2l0QVBJOjpVdGlsOjphc3NlcnRXS1N0cmlnRXF1YWwsIGV4cGVjdGVkLCBhY3R1
YWwpCisKIH0gLy8gbmFtZXNwYWNlIFV0aWwKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
IApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0LmgJKHJldmlzaW9uIDg2NTA5KQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwyMiBAQAogI2lmbmRlZiBU
ZXN0X2gKICNkZWZpbmUgVGVzdF9oCiAKLSNpbmNsdWRlICJUZXN0c0NvbnRyb2xsZXIuaCIKLQog
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAot
I2RlZmluZSBURVNUX0FTU0VSVChleHByZXNzaW9uKSBFWFBFQ1RfVFJVRShleHByZXNzaW9uKQor
I2RlZmluZSBFWFBFQ1RfTk9UX05VTEwoZXhwcmVzc2lvbikgXAorICAgIEVYUEVDVF9UUlVFKGV4
cHJlc3Npb24pCisKKyNkZWZpbmUgRVhQRUNUX05VTEwoZXhwcmVzc2lvbikgXAorICAgIEVYUEVD
VF9UUlVFKCEoZXhwcmVzc2lvbikpCisKKyNkZWZpbmUgQVNTRVJUX05PVF9OVUxMKGV4cHJlc3Np
b24pIFwKKyAgICBBU1NFUlRfVFJVRShleHByZXNzaW9uKQorCisjZGVmaW5lIEFTU0VSVF9OVUxM
KGV4cHJlc3Npb24pIFwKKyAgICBBU1NFUlRfVFJVRSghKGV4cHJlc3Npb24pKQorCiAjZGVmaW5l
IFRFU1RfQVNTRVJUX1JFVFVSTihleHByZXNzaW9uLCByZXR1cm5WYWx1ZSkgXAogICAgIGRvIHsg
XAogICAgICAgICBpZiAoIShleHByZXNzaW9uKSkgeyBcCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9WZWN0b3JCYXNpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVmVjdG9yQmFzaWMuY3BwCShyZXZpc2lvbiA4NjUwOSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1ZlY3RvckJhc2ljLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBURVNUKFdURiwg
VmVjdG9yQmFzaWMpCiB7CiAgICAgVmVjdG9yPGludD4gaW50VmVjdG9yOwotICAgIEFTU0VSVF9U
UlVFKGludFZlY3Rvci5pc0VtcHR5KCkpOwotICAgIEFTU0VSVF9FUSgwdWwsIGludFZlY3Rvci5z
aXplKCkpOwotICAgIEFTU0VSVF9FUSgwdWwsIGludFZlY3Rvci5jYXBhY2l0eSgpKTsKKyAgICBF
WFBFQ1RfVFJVRShpbnRWZWN0b3IuaXNFbXB0eSgpKTsKKyAgICBFWFBFQ1RfRVEoMHVsLCBpbnRW
ZWN0b3Iuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMHVsLCBpbnRWZWN0b3IuY2FwYWNpdHkoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9BYm91dEJsYW5rTG9hZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0Fib3V0QmxhbmtMb2FkLmNwcAkocmV2aXNp
b24gODY1MDkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQWJvdXRCbGFu
a0xvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIHN0YXRpYyBib29sIGRv
bmU7CiAKIHN0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiwgV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgV0tVUkxSZXF1ZXN0UmVmLCBXS0Zy
YW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCiB7
Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhVdGlsOjpNSU1F
VHlwZUZvcldLVVJMUmVzcG9uc2UocmVzcG9uc2UpLmdldCgpLCAidGV4dC9odG1sIikpOworICAg
IEVYUEVDVF9XS19TVFJFUSgidGV4dC9odG1sIiwgVXRpbDo6TUlNRVR5cGVGb3JXS1VSTFJlc3Bv
bnNlKHJlc3BvbnNlKSk7CiAKICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2UobGlzdGVuZXIp
OwogICAgIGRvbmUgPSB0cnVlOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL0NhbkhhbmRsZVJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9DYW5IYW5kbGVSZXF1ZXN0LmNwcAkocmV2aXNpb24gODY1MDkpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQ2FuSGFuZGxlUmVxdWVzdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDkgQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tSW5qZWN0ZQogewogICAgIGRpZFJlY2VpdmVNZXNzYWdlID0gdHJ1ZTsKIAotICAg
IFRFU1RfQVNTRVJUKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJE
aWRDaGVja0NhbkhhbmRsZVJlcXVlc3QiKSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tHZXRUeXBlSUQo
Ym9keSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOworICAgIEVYUEVDVF9XS19TVFJFUSgiRGlk
Q2hlY2tDYW5IYW5kbGVSZXF1ZXN0IiwgbWVzc2FnZU5hbWUpOworICAgIEVYUEVDVF9FUShXS0Jv
b2xlYW5HZXRUeXBlSUQoKSwgV0tHZXRUeXBlSUQoYm9keSkpOworCiAgICAgY2FuSGFuZGxlUmVx
dWVzdCA9IFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4oYm9keSkp
OwogfQogCkBAIC02Niw3ICs2Nyw3IEBAIFRFU1QoV2ViS2l0MiwgQ2FuSGFuZGxlUmVxdWVzdCkK
IAogICAgIFdLQ29udGV4dFBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShjb250ZXh0LmdldCgp
LCBVdGlsOjp0b1dLKCJDaGVja0NhbkhhbmRsZVJlcXVlc3QiKS5nZXQoKSwgMCk7CiAgICAgVXRp
bDo6cnVuKCZkaWRSZWNlaXZlTWVzc2FnZSk7Ci0gICAgVEVTVF9BU1NFUlQoY2FuSGFuZGxlUmVx
dWVzdCk7CisgICAgRVhQRUNUX1RSVUUoY2FuSGFuZGxlUmVxdWVzdCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9Db29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvQ29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDg2NTA5KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0Nvb2tpZU1hbmFnZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw4ICs0MSw5IEBAIHN0YXRpYyBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+
IHdrQ29udGUKIAogc3RhdGljIHZvaWQgZGlkR2V0VGVzdEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
V0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgV0tFcnJvclJlZiwgdm9pZCogY29udGV4
dCkKIHsKLSAgICBURVNUX0FTU0VSVChjb250ZXh0ID09IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KDB4MTIzNDU3OCkpOwotICAgIFRFU1RfQVNTRVJUKHBvbGljeSA9PSB0ZXN0UG9saWN5KTsKKyAg
ICBFWFBFQ1RfRVEocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMHgxMjM0NTc4KSwgY29udGV4dCk7
CisgICAgRVhQRUNUX0VRKHRlc3RQb2xpY3ksIHBvbGljeSk7CisKICAgICBXS0Nvb2tpZU1hbmFn
ZXJSZWYgY29va2llTWFuYWdlciA9IFdLQ29udGV4dEdldENvb2tpZU1hbmFnZXIod2tDb250ZXh0
LmdldCgpKTsKICAgICBXS0Nvb2tpZU1hbmFnZXJTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNv
b2tpZU1hbmFnZXIsIHVzZXJQb2xpY3kpOwogCkBAIC01MSw3ICs1Miw3IEBAIHN0YXRpYyB2b2lk
IGRpZEdldFRlc3RIVFRQQ29va2llQWNjZXB0UG8KIAogc3RhdGljIHZvaWQgZGlkR2V0VXNlckhU
VFBDb29raWVBY2NlcHRQb2xpY3koV0tIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSwgV0tF
cnJvclJlZiwgdm9pZCogY29udGV4dCkKIHsKLSAgICBURVNUX0FTU0VSVChjb250ZXh0ID09IHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4MTIzNDU3OCkpOworICAgIEVYUEVDVF9FUShyZWludGVy
cHJldF9jYXN0PHZvaWQqPigweDEyMzQ1NzgpLCBjb250ZXh0KTsKIAogICAgIHVzZXJQb2xpY3kg
PSBwb2xpY3k7CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Eb2N1
bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Eb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jh
c2guY3BwCShyZXZpc2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9Eb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw5ICszNiwxMCBAQCBzdGF0aWMgYm9vbCBkb25lOwogCiBzdGF0aWMgdm9pZCBydW5K
YXZhU2NyaXB0QWxlcnQoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIGFsZXJ0VGV4dCwgV0tG
cmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBURVNUX0FTU0VS
VChmcmFtZSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tGcmFtZUdldFBhZ2UoZnJhbWUpID09IHBhZ2Up
OwotICAgIFRFU1RfQVNTRVJUKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoYWxlcnRUZXh0
LCAiYW4gYWxlcnQiKSk7CisgICAgQVNTRVJUX05PVF9OVUxMKGZyYW1lKTsKKworICAgIEVYUEVD
VF9FUShwYWdlLCBXS0ZyYW1lR2V0UGFnZShmcmFtZSkpOworICAgIEVYUEVDVF9XS19TVFJFUSgi
YW4gYWxlcnQiLCBhbGVydFRleHQpOwogCiAgICAgZG9uZSA9IHRydWU7CiB9CkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRXZhbHVhdGVKYXZhU2NyaXB0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRXZhbHVhdGVKYXZh
U2NyaXB0LmNwcAkocmV2aXNpb24gODY1MDkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvRXZhbHVhdGVKYXZhU2NyaXB0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTIg
KzM4LDEyIEBAIHN0YXRpYyBib29sIHRlc3REb25lOwogCiBzdGF0aWMgdm9pZCBkaWRSdW5KYXZh
U2NyaXB0KFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHJlc3VsdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSwgV0tFcnJvclJlZiBlcnJvciwgdm9pZCogY29udGV4dCkKIHsKLSAgICBURVNUX0FTU0VS
VChjb250ZXh0ID09IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDB4MTIzNDU3OCkpOwotICAgIFRF
U1RfQVNTRVJUKCFyZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUpOworICAgIEVYUEVDVF9FUShy
ZWludGVycHJldF9jYXN0PHZvaWQqPigweDEyMzQ1NzgpLCBjb250ZXh0KTsKKyAgICBFWFBFQ1Rf
TlVMTChyZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUpOwogCiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBhbHNvIGNoZWNrIHRoZSBlcnJvciwgYnV0IHJpZ2h0IG5vdyBpdCdzIGFsd2F5cyBudWxs
LgogICAgIC8vIEFzc2VydCB0aGF0IGl0J3MgbnVsbCBzbyB3ZSBjYW4gcmV2aXNpdCB3aGVuIHRo
aXMgY2hhbmdlcy4KLSAgICBURVNUX0FTU0VSVCghZXJyb3IpOworICAgIEVYUEVDVF9OVUxMKGVy
cm9yKTsKIAogICAgIHRlc3REb25lID0gdHJ1ZTsKIH0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9GYWlsZWRMb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRmFpbGVkTG9hZC5jcHAJKHJldmlzaW9uIDg2NTA5KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZhaWxlZExvYWQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTAgQEAgc3RhdGljIGJvb2wgdGVzdERvbmU7CiAKIHN0
YXRpYyB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VS
ZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tFcnJvclJlZiBlcnJvciwgV0tUeXBlUmVmIHVz
ZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIFRFU1RfQVNTRVJUKFdLRnJh
bWVHZXRGcmFtZUxvYWRTdGF0ZShmcmFtZSkgPT0ga1dLRnJhbWVMb2FkU3RhdGVGaW5pc2hlZCk7
CisgICAgRVhQRUNUX0VRKGtXS0ZyYW1lTG9hZFN0YXRlRmluaXNoZWQsIFdLRnJhbWVHZXRGcmFt
ZUxvYWRTdGF0ZShmcmFtZSkpOwogCiAgICAgV0tVUkxSZWYgdXJsID0gV0tGcmFtZUNvcHlQcm92
aXNpb25hbFVSTChmcmFtZSk7Ci0gICAgVEVTVF9BU1NFUlQoIXVybCk7CisgICAgRVhQRUNUX05V
TEwodXJsKTsKIAogICAgIHRlc3REb25lID0gdHJ1ZTsKIH0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9GaW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvRmluZC5jcHAJKHJldmlzaW9uIDg2NTA5KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZpbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw4ICs0Miw4IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2UKIAog
c3RhdGljIHZvaWQgZGlkQ291bnRTdHJpbmdNYXRjaGVzKFdLUGFnZVJlZiBwYWdlLCBXS1N0cmlu
Z1JlZiBzdHJpbmcsIHVuc2lnbmVkIG51bU1hdGNoZXMsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
CiB7Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdHJpbmcs
ICJIZWxsbyIpKTsKLSAgICBURVNUX0FTU0VSVChudW1NYXRjaGVzID09IDMpOworICAgIEVYUEVD
VF9XS19TVFJFUSgiSGVsbG8iLCBzdHJpbmcpOworICAgIEVYUEVDVF9FUSgzdSwgbnVtTWF0Y2hl
cyk7CiAKICAgICBkaWRDYWxsQ291bnRTdHJpbmdNYXRjaGVzID0gdHJ1ZTsKIH0KSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Gb3JjZVJlcGFpbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Gb3JjZVJlcGFpbnQuY3Bw
CShyZXZpc2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9G
b3JjZVJlcGFpbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHN0YXRpYyBi
b29sIHRlc3QyRG9uZTsKICAgICAKIHZvaWQgZGlkRm9yY2VSZXBhaW50KFdLRXJyb3JSZWYgZXJy
b3IsIHZvaWQqKQogewotICAgIFRFU1RfQVNTRVJUKCFlcnJvcik7CisgICAgRVhQRUNUX05VTEwo
ZXJyb3IpOwogICAgIHRlc3QyRG9uZSA9IHRydWU7CiB9CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9GcmFtZU1JTUVUeXBlSFRNTC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZyYW1lTUlNRVR5cGVIVE1MLmNwcAko
cmV2aXNpb24gODY1MDkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRnJh
bWVNSU1FVHlwZUhUTUwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwyMCArMzYsMjAgQEAgc3Rh
dGljIGJvb2wgdGVzdERvbmU7CiAKIHN0YXRpYyB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2Vy
RGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gd2tNSU1FKEFkb3B0V0ssIFdLRnJhbWVDb3B5TUlNRVR5cGUoZnJhbWUpKTsKLSAgICBU
RVNUX0FTU0VSVChXS1N0cmluZ0lzRW1wdHkod2tNSU1FLmdldCgpKSk7CisgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IHdrTUlNRSA9IGFkb3B0V0soV0tGcmFtZUNvcHlNSU1FVHlwZShmcmFt
ZSkpOworICAgIEVYUEVDVF9UUlVFKFdLU3RyaW5nSXNFbXB0eSh3a01JTUUuZ2V0KCkpKTsKIH0K
IAogc3RhdGljIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
CiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTUlNRShBZG9wdFdLLCBXS0ZyYW1l
Q29weU1JTUVUeXBlKGZyYW1lKSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyh3a01JTUUuZ2V0KCksICJ0ZXh0L2h0bWwiKSk7CisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IHdrTUlNRSA9IGFkb3B0V0soV0tGcmFtZUNvcHlNSU1FVHlwZShmcmFtZSkp
OworICAgIEVYUEVDVF9XS19TVFJFUSgidGV4dC9odG1sIiwgd2tNSU1FKTsKIH0KIAogc3RhdGlj
IHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZy
YW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTUlNRShBZG9wdFdLLCBXS0ZyYW1lQ29weU1JTUVU
eXBlKGZyYW1lKSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
Zyh3a01JTUUuZ2V0KCksICJ0ZXh0L2h0bWwiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IHdrTUlNRSA9IGFkb3B0V0soV0tGcmFtZUNvcHlNSU1FVHlwZShmcmFtZSkpOworICAgIEVY
UEVDVF9XS19TVFJFUSgidGV4dC9odG1sIiwgd2tNSU1FKTsKIAogICAgIHRlc3REb25lID0gdHJ1
ZTsKIH0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9GcmFtZU1JTUVU
eXBlUE5HLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvRnJhbWVNSU1FVHlwZVBORy5jcHAJKHJldmlzaW9uIDg2NTA5KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL0ZyYW1lTUlNRVR5cGVQTkcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiwyMCArMzYsMjAgQEAgc3RhdGljIGJvb2wgdGVzdERvbmU7CiAKIHN0YXRpYyB2b2lk
IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVS
ZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsK
LSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tNSU1FKEFkb3B0V0ssIFdLRnJhbWVDb3B5
TUlNRVR5cGUoZnJhbWUpKTsKLSAgICBURVNUX0FTU0VSVChXS1N0cmluZ0lzRW1wdHkod2tNSU1F
LmdldCgpKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTUlNRSA9IGFkb3B0V0so
V0tGcmFtZUNvcHlNSU1FVHlwZShmcmFtZSkpOworICAgIEVYUEVDVF9UUlVFKFdLU3RyaW5nSXNF
bXB0eSh3a01JTUUuZ2V0KCkpKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZy
YW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IHdrTUlNRShBZG9wdFdLLCBXS0ZyYW1lQ29weU1JTUVUeXBlKGZyYW1lKSk7Ci0gICAgVEVTVF9B
U1NFUlQoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyh3a01JTUUuZ2V0KCksICJpbWFnZS9w
bmciKSk7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTUlNRSA9IGFkb3B0V0soV0tG
cmFtZUNvcHlNSU1FVHlwZShmcmFtZSkpOworICAgIEVYUEVDVF9XS19TVFJFUSgiaW1hZ2UvcG5n
Iiwgd2tNSU1FKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFn
ZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTUlNRShB
ZG9wdFdLLCBXS0ZyYW1lQ29weU1JTUVUeXBlKGZyYW1lKSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyh3a01JTUUuZ2V0KCksICJpbWFnZS9wbmciKSk7Cisg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHdrTUlNRSA9IGFkb3B0V0soV0tGcmFtZUNvcHlN
SU1FVHlwZShmcmFtZSkpOworICAgIEVYUEVDVF9XS19TVFJFUSgiaW1hZ2UvcG5nIiwgd2tNSU1F
KTsKIAogICAgIHRlc3REb25lID0gdHJ1ZTsKIH0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUJhc2ljX0J1bmRsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlQmFzaWNf
QnVuZGxlLmNwcAkocmV2aXNpb24gODY1MDkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVCYXNpY19CdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw4ICszOCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVQYWdl
KFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UpCiAgICAgewotICAgICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZG9uZU1lc3NhZ2VOYW1lKEFkb3B0V0ssIFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJEb25lTWVzc2FnZU5hbWUiKSk7Ci0gICAgICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBkb25lTWVzc2FnZUJvZHkoQWRvcHRXSywgV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIkRvbmVNZXNzYWdlQm9keSIpKTsKKyAgICAgICAgV0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+IGRvbmVNZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkRvbmVNZXNzYWdlTmFtZSIpKTsKKyAgICAgICAgV0tSZXRhaW5Q
dHI8V0tTdHJpbmdSZWY+IGRvbmVNZXNzYWdlQm9keSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIkRvbmVNZXNzYWdlQm9keSIpKTsKICAgICAgICAgV0tCdW5kbGVQb3N0
TWVzc2FnZShidW5kbGUsIGRvbmVNZXNzYWdlTmFtZS5nZXQoKSwgZG9uZU1lc3NhZ2VCb2R5Lmdl
dCgpKTsKICAgICB9CiB9OwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L01vdXNlTW92ZUFmdGVyQ3Jhc2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9Nb3VzZU1vdmVBZnRlckNyYXNoLmNwcAkocmV2aXNpb24gODY1MDkp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTW91c2VNb3ZlQWZ0ZXJDcmFz
aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDEzICs4MywxMyBAQCBURVNUKFdlYktpdDIsIE1v
dXNlTW92ZUFmdGVyQ3Jhc2gpCiAgICAgLy8gV2FpdCB1bnRpbCB3ZSBsb2FkIHRoZSBwYWdlIGEg
c2Vjb25kIHRpbWUgKHZpYSByZWxvYWRpbmcgdGhlIHBhZ2UgaW4gcHJvY2Vzc0RpZENyYXNoKS4K
ICAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOwogCi0gICAgVEVTVF9BU1NFUlQocnVuSlNU
ZXN0KHdlYlZpZXcucGFnZSgpLCAiZGlkTW92ZU1vdXNlKCkiLCAiZmFsc2UiKSk7CisgICAgRVhQ
RUNUX1RSVUUocnVuSlNUZXN0KHdlYlZpZXcucGFnZSgpLCAiZGlkTW92ZU1vdXNlKCkiLCAiZmFs
c2UiKSk7CiAKICAgICAvLyBPbmNlIHRoZSBwYWdlIGhhcyByZWxvYWRlZCwgdHJ5IG1vdmluZyB0
aGUgbW91c2UgdG8gdmVyaWZ5IHRoYXQgd2UgZ2V0IG1vdXNlIG1vdmUgZXZlbnRzLgogICAgIHdl
YlZpZXcuc2ltdWxhdGVNb3VzZU1vdmUoMTAsIDEwKTsKICAgICB3ZWJWaWV3LnNpbXVsYXRlTW91
c2VNb3ZlKDIwLCAyMCk7CiAKLSAgICBURVNUX0FTU0VSVChydW5KU1Rlc3Qod2ViVmlldy5wYWdl
KCksICJkaWRNb3ZlTW91c2UoKSIsICJ0cnVlIikpOworICAgIEVYUEVDVF9UUlVFKHJ1bkpTVGVz
dCh3ZWJWaWV3LnBhZ2UoKSwgImRpZE1vdmVNb3VzZSgpIiwgInRydWUiKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9QYWdlTG9hZEJhc2ljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvUGFnZUxvYWRCYXNpYy5jcHAJKHJldmlzaW9uIDg2NTA5KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VMb2FkQmFzaWMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCwxNCArNTAsMTMgQEAgc3RydWN0IFN0YXRlIHsKIHN0YXRpYyB2b2lk
IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVS
ZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsK
ICAgICBTdGF0ZSogc3RhdGUgPSByZWludGVycHJldF9jYXN0PFN0YXRlKj4oY29uc3RfY2FzdDx2
b2lkKj4oY2xpZW50SW5mbykpOwotICAgIFRFU1RfQVNTRVJUKHN0YXRlLT5kaWREZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKTsKLSAgICBURVNUX0FTU0VSVCghc3RhdGUtPmRpZENvbW1p
dExvYWRGb3JGcmFtZSk7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUtPmRpZERlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24pOworICAgIEVYUEVDVF9GQUxTRShzdGF0ZS0+ZGlkQ29tbWl0TG9h
ZEZvckZyYW1lKTsKIAogICAgIC8vIFRoZSBjb21taXRlZCBVUkwgc2hvdWxkIGJlIG51bGwuCi0g
ICAgVEVTVF9BU1NFUlQoIVdLRnJhbWVDb3B5VVJMKGZyYW1lKSk7Ci0KLSAgICBURVNUX0FTU0VS
VCghc3RhdGUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOworICAgIEVYUEVDVF9O
VUxMKFdLRnJhbWVDb3B5VVJMKGZyYW1lKSk7CiAKKyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUtPmRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOwogCiAgICAgc3RhdGUtPmRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUgPSB0cnVlOwogfQpAQCAtNjUsMTEgKzY0LDExIEBAIHN0YXRp
YyB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnIKIHN0YXRpYyB2b2lkIGRpZENvbW1p
dExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVm
IHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIFN0YXRlKiBzdGF0ZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8U3RhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7
Ci0gICAgVEVTVF9BU1NFUlQoc3RhdGUtPmRpZERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOwotICAgIFRFU1RfQVNTRVJUKHN0YXRlLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS0+ZGlkRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbik7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUpOwogCiAgICAgLy8gVGhlIHByb3Zpc2lvbmFsIFVSTCBzaG91bGQgYmUgbnVsbC4K
LSAgICBURVNUX0FTU0VSVCghV0tGcmFtZUNvcHlQcm92aXNpb25hbFVSTChmcmFtZSkpOworICAg
IEVYUEVDVF9OVUxMKFdLRnJhbWVDb3B5UHJvdmlzaW9uYWxVUkwoZnJhbWUpKTsKIAogICAgIHN0
YXRlLT5kaWRDb21taXRMb2FkRm9yRnJhbWUgPSB0cnVlOwogfQpAQCAtNzcsMTIgKzc2LDEyIEBA
IHN0YXRpYyB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2UKIHN0YXRpYyB2b2lkIGRp
ZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tU
eXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIFN0YXRlKiBz
dGF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8U3RhdGUqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJ
bmZvKSk7Ci0gICAgVEVTVF9BU1NFUlQoc3RhdGUtPmRpZERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24pOwotICAgIFRFU1RfQVNTRVJUKHN0YXRlLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKTsKLSAgICBURVNUX0FTU0VSVChzdGF0ZS0+ZGlkQ29tbWl0TG9hZEZvckZyYW1l
KTsKKyAgICBFWFBFQ1RfVFJVRShzdGF0ZS0+ZGlkRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbik7CisgICAgRVhQRUNUX1RSVUUoc3RhdGUtPmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUpOworICAgIEVYUEVDVF9UUlVFKHN0YXRlLT5kaWRDb21taXRMb2FkRm9yRnJhbWUpOwog
CiAgICAgLy8gVGhlIHByb3Zpc2lvbmFsIFVSTCBzaG91bGQgYmUgbnVsbC4KLSAgICBURVNUX0FT
U0VSVCghV0tGcmFtZUNvcHlQcm92aXNpb25hbFVSTChmcmFtZSkpOworICAgIEVYUEVDVF9OVUxM
KFdLRnJhbWVDb3B5UHJvdmlzaW9uYWxVUkwoZnJhbWUpKTsKIAogICAgIHRlc3QxRG9uZSA9IHRy
dWU7CiB9CkBAIC05MCw4ICs4OSw4IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFt
ZShXS1BhZ2UKIHN0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV0tQ
YWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVOYXZpZ2F0aW9uVHlwZSBuYXZp
Z2F0aW9uVHlwZSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLRXZlbnRNb3VzZUJ1dHRv
biBtb3VzZUJ1dHRvbiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIFdLRnJhbWVQb2xpY3lMaXN0
ZW5lclJlZiBsaXN0ZW5lciwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQogewogICAgIFN0YXRlKiBzdGF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8U3RhdGUqPihjb25z
dF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0gICAgVEVTVF9BU1NFUlQoIXN0YXRlLT5kaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKTsKLSAgICBURVNUX0FTU0VSVCghc3RhdGUtPmRp
ZENvbW1pdExvYWRGb3JGcmFtZSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0YXRlLT5kaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RhdGUtPmRpZENvbW1p
dExvYWRGb3JGcmFtZSk7CiAKICAgICBzdGF0ZS0+ZGlkRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbiA9IHRydWU7CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9QYWdlTG9hZERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFnZUxvYWREaWRDaGFu
Z2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZS5jcHAJKHJldmlzaW9uIDg2NTA5KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25X
aXRoaW5QYWdlRm9yRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMyArNDcsMTMgQEAg
c3RhdGljIGJvb2wgZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlOwogc3RhdGljIHZvaWQgZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSB0eXBlLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQog
ewogICAgIGlmICghZGlkUG9wU3RhdGVXaXRoaW5QYWdlKSB7Ci0gICAgICAgIFRFU1RfQVNTRVJU
KHR5cGUgPT0ga1dLU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVBvcCk7Ci0gICAg
ICAgIFRFU1RfQVNTRVJUKCFkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UpOworICAgICAgICBF
WFBFQ1RfRVEodHlwZSwga1dLU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVBvcCk7
CisgICAgICAgIEVYUEVDVF9GQUxTRShkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UpOwogICAg
ICAgICBkaWRQb3BTdGF0ZVdpdGhpblBhZ2UgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgVEVTVF9BU1NFUlQodHlwZSA9PSBrV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uQW5j
aG9yTmF2aWdhdGlvbik7CisgICAgRVhQRUNUX0VRKGtXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25B
bmNob3JOYXZpZ2F0aW9uLCB0eXBlKTsKICAgICBkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2Ug
PSB0cnVlOwogfQogCkBAIC03OSw3ICs3OSw3IEBAIFRFU1QoV2ViS2l0MiwgUGFnZUxvYWREaWRD
aGFuZ2VMb2NhdGlvblcKIAogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmxBZnRlckFuY2hv
ckNsaWNrID0gYWRvcHRXSyhXS0ZyYW1lQ29weVVSTChXS1BhZ2VHZXRNYWluRnJhbWUod2ViVmll
dy5wYWdlKCkpKSk7CiAKLSAgICBURVNUX0FTU0VSVCghV0tVUkxJc0VxdWFsKGluaXRpYWxVUkwu
Z2V0KCksIHVybEFmdGVyQW5jaG9yQ2xpY2suZ2V0KCkpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV0tV
UkxJc0VxdWFsKGluaXRpYWxVUkwuZ2V0KCksIHVybEFmdGVyQW5jaG9yQ2xpY2suZ2V0KCkpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL1ByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1ByZXZlbnRFbXB0eVVzZXJBZ2Vu
dC5jcHAJKHJldmlzaW9uIDg2NTA5KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL1ByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE3ICsz
OCwxNyBAQCBzdGF0aWMgYm9vbCB0ZXN0RG9uZTsKIAogc3RhdGljIHZvaWQgZGlkUnVuSmF2YVNj
cmlwdChXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiByZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFs
dWUsIFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgVEVTVF9BU1NFUlQo
Y29udGV4dCA9PSByZWludGVycHJldF9jYXN0PHZvaWQqPigweDEyMzQ1NzgpKTsKLSAgICBURVNU
X0FTU0VSVChyZXN1bHRTZXJpYWxpemVkU2NyaXB0VmFsdWUpOworICAgIEVYUEVDVF9FUShyZWlu
dGVycHJldF9jYXN0PHZvaWQqPigweDEyMzQ1NzgpLCBjb250ZXh0KTsKKyAgICBFWFBFQ1RfTk9U
X05VTEwocmVzdWx0U2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKIAogICAgIEpTR2xvYmFsQ29udGV4
dFJlZiBzY3JpcHRDb250ZXh0ID0gSlNHbG9iYWxDb250ZXh0Q3JlYXRlKDApOwogICAgIEpTVmFs
dWVSZWYgc2NyaXB0VmFsdWUgPSBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZURlc2VyaWFsaXplKHJl
c3VsdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgc2NyaXB0Q29udGV4dCwgMCk7Ci0gICAgVEVTVF9B
U1NFUlQoSlNWYWx1ZUlzU3RyaW5nKHNjcmlwdENvbnRleHQsIHNjcmlwdFZhbHVlKSk7CisgICAg
RVhQRUNUX1RSVUUoSlNWYWx1ZUlzU3RyaW5nKHNjcmlwdENvbnRleHQsIHNjcmlwdFZhbHVlKSk7
CiAKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgcmVzdWx0IG9mIG5hdmlnYXRvci51c2VyQWdl
bnQgaXNuJ3QgZW1wdHksIGV2ZW4gaWYgd2Ugc2V0IHRoZSBjdXN0b20KICAgICAvLyB1c2VyIGFn
ZW50IHRvIHRoZSBlbXB0eSBzdHJpbmcuCiAgICAgSlNTdHJpbmdSZWYgc2NyaXB0U3RyaW5nID0g
SlNWYWx1ZVRvU3RyaW5nQ29weShzY3JpcHRDb250ZXh0LCBzY3JpcHRWYWx1ZSwgMCk7Ci0gICAg
VEVTVF9BU1NFUlQoSlNTdHJpbmdHZXRMZW5ndGgoc2NyaXB0U3RyaW5nKSk7CisgICAgRVhQRUNU
X0dUKEpTU3RyaW5nR2V0TGVuZ3RoKHNjcmlwdFN0cmluZyksIDB1KTsKIAogICAgIEpTU3RyaW5n
UmVsZWFzZShzY3JpcHRTdHJpbmcpOwogICAgIEpTR2xvYmFsQ29udGV4dFJlbGVhc2Uoc2NyaXB0
Q29udGV4dCk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUmVzcG9u
c2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFy
bHkuY3BwCShyZXZpc2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9SZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsNyBAQCBzdGF0aWMgYm9vbCBkaWRCcmllZmx5UGF1c2U7CiBzdGF0aWMg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYsIFdL
U3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQogewogICAgIGRp
ZEJyaWVmbHlQYXVzZSA9IHRydWU7Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkRpZEJyaWVmbHlQYXVzZSIpKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIkRpZEJyaWVmbHlQYXVzZSIsIG1lc3NhZ2VOYW1lKTsKIH0KIAogc3RhdGljIHZv
aWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVm
LCBjb25zdCB2b2lkKikKQEAgLTkyLDcgKzkyLDggQEAgVEVTVChXZWJLaXQyLCBSZXNwb25zaXZl
bmVzc1RpbWVyRG9lc250RgogICAgIHdlYlZpZXcuc2ltdWxhdGVTcGFjZWJhcktleVByZXNzKCk7
CiAKICAgICBVdGlsOjpydW4oJmRpZEJyaWVmbHlQYXVzZSk7Ci0gICAgVEVTVF9BU1NFUlQoIWRp
ZEJlY29tZVVucmVzcG9uc2l2ZSk7CisKKyAgICBFWFBFQ1RfRkFMU0UoZGlkQmVjb21lVW5yZXNw
b25zaXZlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1Jlc3RvcmVTZXNzaW9uU3RhdGVDb250YWluaW5n
Rm9ybURhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9SZXN0b3JlU2Vzc2lvblN0YXRlQ29udGFpbmluZ0Zvcm1EYXRhLmNwcAkocmV2aXNpb24g
ODY1MDkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUmVzdG9yZVNlc3Np
b25TdGF0ZUNvbnRhaW5pbmdGb3JtRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDEyICs3
NSwxMiBAQCBURVNUKFdlYktpdDIsIFJlc3RvcmVTZXNzaW9uU3RhdGVDb250YWluCiAgICAgc2V0
UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7CiAKICAgICBXS1JldGFpblB0cjxXS0Rh
dGFSZWY+IGRhdGEgPSBjcmVhdGVTZXNzaW9uU3RhdGVDb250YWluaW5nRm9ybURhdGEoY29udGV4
dC5nZXQoKSk7Ci0gICAgVEVTVF9BU1NFUlQoZGF0YSk7CisgICAgRVhQRUNUX05PVF9OVUxMKGRh
dGEpOwogCiAgICAgV0tQYWdlUmVzdG9yZUZyb21TZXNzaW9uU3RhdGUod2ViVmlldy5wYWdlKCks
IGRhdGEuZ2V0KCkpOwogICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CiAKLSAgICBURVNU
X0FTU0VSVChXS1BhZ2VDYW5Hb0JhY2sod2ViVmlldy5wYWdlKCkpKTsKKyAgICBFWFBFQ1RfVFJV
RShXS1BhZ2VDYW5Hb0JhY2sod2ViVmlldy5wYWdlKCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1Nw
YWNlYmFyU2Nyb2xsaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvU3BhY2ViYXJTY3JvbGxpbmcuY3BwCShyZXZpc2lvbiA4NjUwOSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9TcGFjZWJhclNjcm9sbGluZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY4LDM0ICs2OCwzNSBAQCBURVNUKFdlYktpdDIsIFNwYWNlYmFyU2Ny
b2xsaW5nKQogICAgIFdLUGFnZUxvYWRVUkwod2ViVmlldy5wYWdlKCksIHVybC5nZXQoKSk7CiAg
ICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKIAotICAgIFRFU1RfQVNTRVJUKHJ1bkpTVGVz
dCh3ZWJWaWV3LnBhZ2UoKSwgImlzRG9jdW1lbnRTY3JvbGxlZCgpIiwgImZhbHNlIikpOwotICAg
IFRFU1RfQVNTRVJUKHJ1bkpTVGVzdCh3ZWJWaWV3LnBhZ2UoKSwgInRleHRGaWVsZENvbnRhaW5z
U3BhY2UoKSIsICJmYWxzZSIpKTsKKyAgICBFWFBFQ1RfVFJVRShydW5KU1Rlc3Qod2ViVmlldy5w
YWdlKCksICJpc0RvY3VtZW50U2Nyb2xsZWQoKSIsICJmYWxzZSIpKTsKKyAgICBFWFBFQ1RfVFJV
RShydW5KU1Rlc3Qod2ViVmlldy5wYWdlKCksICJ0ZXh0RmllbGRDb250YWluc1NwYWNlKCkiLCAi
ZmFsc2UiKSk7CiAKICAgICB3ZWJWaWV3LnNpbXVsYXRlU3BhY2ViYXJLZXlQcmVzcygpOwogCi0g
ICAgVEVTVF9BU1NFUlQocnVuSlNUZXN0KHdlYlZpZXcucGFnZSgpLCAiaXNEb2N1bWVudFNjcm9s
bGVkKCkiLCAiZmFsc2UiKSk7Ci0gICAgVEVTVF9BU1NFUlQocnVuSlNUZXN0KHdlYlZpZXcucGFn
ZSgpLCAidGV4dEZpZWxkQ29udGFpbnNTcGFjZSgpIiwgInRydWUiKSk7CisgICAgRVhQRUNUX1RS
VUUocnVuSlNUZXN0KHdlYlZpZXcucGFnZSgpLCAiaXNEb2N1bWVudFNjcm9sbGVkKCkiLCAiZmFs
c2UiKSk7CisgICAgRVhQRUNUX1RSVUUocnVuSlNUZXN0KHdlYlZpZXcucGFnZSgpLCAidGV4dEZp
ZWxkQ29udGFpbnNTcGFjZSgpIiwgInRydWUiKSk7CiAKICAgICAvLyBPbiBNYWMsIGEga2V5IGRv
d24gZXZlbnQgcmVwcmVzZW50cyBib3RoIGEgcmF3IGtleSBkb3duIGFuZCBhIGtleSBwcmVzcy4g
T24gV2luZG93cywgYSBrZXkKICAgICAvLyBkb3duIGV2ZW50IG9ubHkgcmVwcmVzZW50cyBhIHJh
dyBrZXkgZG93bi4gV2UgZXhwZWN0IHRoZSBrZXkgcHJlc3MgdG8gYmUgaGFuZGxlZCAoYmVjYXVz
ZSBpdAogICAgIC8vIGluc2VydHMgdGV4dCBpbnRvIHRoZSB0ZXh0IGZpZWxkKS4gQnV0IHRoZSBy
YXcga2V5IGRvd24gc2hvdWxkIG5vdCBiZSBoYW5kbGVkLgogI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICBURVNUX0FTU0VSVCghZGlkTm90SGFuZGxlS2V5RG93bkV2ZW50KTsKKyAgICBFWFBFQ1RfRkFM
U0UoZGlkTm90SGFuZGxlS2V5RG93bkV2ZW50KTsKICNlbGlmIFBMQVRGT1JNKFdJTikKLSAgICBU
RVNUX0FTU0VSVChkaWROb3RIYW5kbGVLZXlEb3duRXZlbnQpOworICAgIEVYUEVDVF9UUlVFKGRp
ZE5vdEhhbmRsZUtleURvd25FdmVudCk7CiAjZW5kaWYKIAotICAgIFRFU1RfQVNTRVJUKHJ1bkpT
VGVzdCh3ZWJWaWV3LnBhZ2UoKSwgImJsdXJUZXh0RmllbGQoKSIsICJ1bmRlZmluZWQiKSk7Cisg
ICAgRVhQRUNUX1RSVUUocnVuSlNUZXN0KHdlYlZpZXcucGFnZSgpLCAiYmx1clRleHRGaWVsZCgp
IiwgInVuZGVmaW5lZCIpKTsKIAogICAgIGRpZE5vdEhhbmRsZUtleURvd25FdmVudCA9IGZhbHNl
OwogICAgIHdlYlZpZXcuc2ltdWxhdGVTcGFjZWJhcktleVByZXNzKCk7CiAKLSAgICBURVNUX0FT
U0VSVChydW5KU1Rlc3Qod2ViVmlldy5wYWdlKCksICJpc0RvY3VtZW50U2Nyb2xsZWQoKSIsICJ0
cnVlIikpOwotICAgIFRFU1RfQVNTRVJUKHJ1bkpTVGVzdCh3ZWJWaWV3LnBhZ2UoKSwgInRleHRG
aWVsZENvbnRhaW5zU3BhY2UoKSIsICJ0cnVlIikpOworICAgIEVYUEVDVF9UUlVFKHJ1bkpTVGVz
dCh3ZWJWaWV3LnBhZ2UoKSwgImlzRG9jdW1lbnRTY3JvbGxlZCgpIiwgInRydWUiKSk7CisgICAg
RVhQRUNUX1RSVUUocnVuSlNUZXN0KHdlYlZpZXcucGFnZSgpLCAidGV4dEZpZWxkQ29udGFpbnNT
cGFjZSgpIiwgInRydWUiKSk7CisKICNpZiBQTEFURk9STShNQUMpCi0gICAgVEVTVF9BU1NFUlQo
IWRpZE5vdEhhbmRsZUtleURvd25FdmVudCk7CisgICAgRVhQRUNUX0ZBTFNFKGRpZE5vdEhhbmRs
ZUtleURvd25FdmVudCk7CiAjZWxpZiBQTEFURk9STShXSU4pCi0gICAgVEVTVF9BU1NFUlQoZGlk
Tm90SGFuZGxlS2V5RG93bkV2ZW50KTsKKyAgICBFWFBFQ1RfVFJVRShkaWROb3RIYW5kbGVLZXlE
b3duRXZlbnQpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvV0tQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDg2NTA5KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dLUHJlZmVyZW5jZXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJUZXN0LmgiCiAKKyNpbmNs
dWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNl
cy5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbmNsdWRl
IDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CkBAIC0zNyw3ICszOCw3IEBAIFRFU1QoV2ViS2l0Miwg
V0tQcmVmZXJlbmNlc0Jhc2ljKQogewogICAgIFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZSA9
IFdLUHJlZmVyZW5jZXNDcmVhdGUoKTsKIAotICAgIFRFU1RfQVNTRVJUKFdLR2V0VHlwZUlEKHBy
ZWZlcmVuY2UpID09IFdLUHJlZmVyZW5jZXNHZXRUeXBlSUQoKSk7CisgICAgRVhQRUNUX0VRKFdL
UHJlZmVyZW5jZXNHZXRUeXBlSUQoKSwgV0tHZXRUeXBlSUQocHJlZmVyZW5jZSkpOwogCiAgICAg
V0tSZWxlYXNlKHByZWZlcmVuY2UpOwogfQpAQCAtNjIsNDMgKzYzLDM3IEBAIFRFU1QoV2ViS2l0
MiwgV0tQcmVmZXJlbmNlc0RlZmF1bHRzKQogCiAgICAgV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJl
bmNlID0gV0tQcmVmZXJlbmNlc0NyZWF0ZSgpOwogCi0gICAgVEVTVF9BU1NFUlQoV0tQcmVmZXJl
bmNlc0dldEphdmFTY3JpcHRFbmFibGVkKHByZWZlcmVuY2UpID09IHRydWUpOwotICAgIFRFU1Rf
QVNTRVJUKFdLUHJlZmVyZW5jZXNHZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkocHJlZmVyZW5j
ZSkgPT0gdHJ1ZSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tQcmVmZXJlbmNlc0dldE9mZmxpbmVXZWJB
cHBsaWNhdGlvbkNhY2hlRW5hYmxlZChwcmVmZXJlbmNlKSA9PSBmYWxzZSk7Ci0gICAgVEVTVF9B
U1NFUlQoV0tQcmVmZXJlbmNlc0dldExvY2FsU3RvcmFnZUVuYWJsZWQocHJlZmVyZW5jZSkgPT0g
dHJ1ZSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tQcmVmZXJlbmNlc0dldFhTU0F1ZGl0b3JFbmFibGVk
KHByZWZlcmVuY2UpID09IHRydWUpOwotICAgIFRFU1RfQVNTRVJUKFdLUHJlZmVyZW5jZXNHZXRG
cmFtZUZsYXR0ZW5pbmdFbmFibGVkKHByZWZlcmVuY2UpID09IGZhbHNlKTsKLSAgICBURVNUX0FT
U0VSVChXS1ByZWZlcmVuY2VzR2V0UGx1Z2luc0VuYWJsZWQocHJlZmVyZW5jZSkgPT0gdHJ1ZSk7
Ci0gICAgVEVTVF9BU1NFUlQoV0tQcmVmZXJlbmNlc0dldEphdmFFbmFibGVkKHByZWZlcmVuY2Up
ID09IHRydWUpOwotICAgIFRFU1RfQVNTRVJUKFdLUHJlZmVyZW5jZXNHZXRKYXZhU2NyaXB0Q2Fu
T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KHByZWZlcmVuY2UpID09IHRydWUpOwotICAgIFRFU1Rf
QVNTRVJUKFdLUHJlZmVyZW5jZXNHZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQocHJlZmVyZW5j
ZSkgPT0gdHJ1ZSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHN0YW5kYXJkRm9udEZh
bWlseShBZG9wdFdLLCBXS1ByZWZlcmVuY2VzQ29weVN0YW5kYXJkRm9udEZhbWlseShwcmVmZXJl
bmNlKSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhzdGFu
ZGFyZEZvbnRGYW1pbHkuZ2V0KCksIGV4cGVjdGVkU3RhbmRhcmRGb250RmFtaWx5KSk7Ci0gICAg
V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGZpeGVkRm9udEZhbWlseShBZG9wdFdLLCBXS1ByZWZl
cmVuY2VzQ29weUZpeGVkRm9udEZhbWlseShwcmVmZXJlbmNlKSk7Ci0gICAgVEVTVF9BU1NFUlQo
V0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhmaXhlZEZvbnRGYW1pbHkuZ2V0KCksIGV4cGVj
dGVkRml4ZWRGb250RmFtaWx5KSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNlcmlm
Rm9udEZhbWlseShBZG9wdFdLLCBXS1ByZWZlcmVuY2VzQ29weVNlcmlmRm9udEZhbWlseShwcmVm
ZXJlbmNlKSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhz
ZXJpZkZvbnRGYW1pbHkuZ2V0KCksIGV4cGVjdGVkU2VyaWZGb250RmFtaWx5KSk7Ci0gICAgV0tS
ZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHNhbnNTZXJpZkZvbnRGYW1pbHkoQWRvcHRXSywgV0tQcmVm
ZXJlbmNlc0NvcHlTYW5zU2VyaWZGb250RmFtaWx5KHByZWZlcmVuY2UpKTsKLSAgICBURVNUX0FT
U0VSVChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKHNhbnNTZXJpZkZvbnRGYW1pbHkuZ2V0
KCksIGV4cGVjdGVkU2Fuc1NlcmlmRm9udEZhbWlseSkpOwotICAgIFdLUmV0YWluUHRyPFdLU3Ry
aW5nUmVmPiBjdXJzaXZlRm9udEZhbWlseShBZG9wdFdLLCBXS1ByZWZlcmVuY2VzQ29weUN1cnNp
dmVGb250RmFtaWx5KHByZWZlcmVuY2UpKTsKLSAgICBURVNUX0FTU0VSVChXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKGN1cnNpdmVGb250RmFtaWx5LmdldCgpLCBleHBlY3RlZEN1cnNpdmVG
b250RmFtaWx5KSk7Ci0gICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGZhbnRhc3lGb250RmFt
aWx5KEFkb3B0V0ssIFdLUHJlZmVyZW5jZXNDb3B5RmFudGFzeUZvbnRGYW1pbHkocHJlZmVyZW5j
ZSkpOwotICAgIFRFU1RfQVNTRVJUKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoZmFudGFz
eUZvbnRGYW1pbHkuZ2V0KCksIGV4cGVjdGVkRmFudGFzeUZvbnRGYW1pbHkpKTsKLSAgICBURVNU
X0FTU0VSVChXS1ByZWZlcmVuY2VzR2V0TWluaW11bUZvbnRTaXplKHByZWZlcmVuY2UpID09IDAp
OwotICAgIFRFU1RfQVNTRVJUKFdLUHJlZmVyZW5jZXNHZXRQcml2YXRlQnJvd3NpbmdFbmFibGVk
KHByZWZlcmVuY2UpID09IGZhbHNlKTsKLSAgICBURVNUX0FTU0VSVChXS1ByZWZlcmVuY2VzR2V0
RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZChwcmVmZXJlbmNlKSA9PSBmYWxzZSk7Ci0gICAgVEVTVF9B
U1NFUlQoV0tQcmVmZXJlbmNlc0dldFRleHRBcmVhc0FyZVJlc2l6YWJsZShwcmVmZXJlbmNlKSA9
PSB0cnVlKTsKKyAgICBFWFBFQ1RfVFJVRShXS1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdEVuYWJs
ZWQocHJlZmVyZW5jZSkpOworICAgIEVYUEVDVF9UUlVFKFdLUHJlZmVyZW5jZXNHZXRMb2Fkc0lt
YWdlc0F1dG9tYXRpY2FsbHkocHJlZmVyZW5jZSkpOworICAgIEVYUEVDVF9GQUxTRShXS1ByZWZl
cmVuY2VzR2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHByZWZlcmVuY2UpKTsK
KyAgICBFWFBFQ1RfVFJVRShXS1ByZWZlcmVuY2VzR2V0TG9jYWxTdG9yYWdlRW5hYmxlZChwcmVm
ZXJlbmNlKSk7CisgICAgRVhQRUNUX1RSVUUoV0tQcmVmZXJlbmNlc0dldFhTU0F1ZGl0b3JFbmFi
bGVkKHByZWZlcmVuY2UpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV0tQcmVmZXJlbmNlc0dldEZyYW1l
RmxhdHRlbmluZ0VuYWJsZWQocHJlZmVyZW5jZSkpOworICAgIEVYUEVDVF9UUlVFKFdLUHJlZmVy
ZW5jZXNHZXRQbHVnaW5zRW5hYmxlZChwcmVmZXJlbmNlKSk7CisgICAgRVhQRUNUX1RSVUUoV0tQ
cmVmZXJlbmNlc0dldEphdmFFbmFibGVkKHByZWZlcmVuY2UpKTsKKyAgICBFWFBFQ1RfVFJVRShX
S1ByZWZlcmVuY2VzR2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShwcmVm
ZXJlbmNlKSk7CisgICAgRVhQRUNUX1RSVUUoV0tQcmVmZXJlbmNlc0dldEh5cGVybGlua0F1ZGl0
aW5nRW5hYmxlZChwcmVmZXJlbmNlKSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkU3Rh
bmRhcmRGb250RmFtaWx5LCBhZG9wdFdLKFdLUHJlZmVyZW5jZXNDb3B5U3RhbmRhcmRGb250RmFt
aWx5KHByZWZlcmVuY2UpKSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkRml4ZWRGb250
RmFtaWx5LCBhZG9wdFdLKFdLUHJlZmVyZW5jZXNDb3B5Rml4ZWRGb250RmFtaWx5KHByZWZlcmVu
Y2UpKSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkU2VyaWZGb250RmFtaWx5LCBhZG9w
dFdLKFdLUHJlZmVyZW5jZXNDb3B5U2VyaWZGb250RmFtaWx5KHByZWZlcmVuY2UpKSk7CisgICAg
RVhQRUNUX1dLX1NUUkVRKGV4cGVjdGVkU2Fuc1NlcmlmRm9udEZhbWlseSwgYWRvcHRXSyhXS1By
ZWZlcmVuY2VzQ29weVNhbnNTZXJpZkZvbnRGYW1pbHkocHJlZmVyZW5jZSkpKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoZXhwZWN0ZWRDdXJzaXZlRm9udEZhbWlseSwgYWRvcHRXSyhXS1ByZWZlcmVu
Y2VzQ29weUN1cnNpdmVGb250RmFtaWx5KHByZWZlcmVuY2UpKSk7CisgICAgRVhQRUNUX1dLX1NU
UkVRKGV4cGVjdGVkRmFudGFzeUZvbnRGYW1pbHksIGFkb3B0V0soV0tQcmVmZXJlbmNlc0NvcHlG
YW50YXN5Rm9udEZhbWlseShwcmVmZXJlbmNlKSkpOworICAgIEVYUEVDVF9FUSgwdSwgV0tQcmVm
ZXJlbmNlc0dldE1pbmltdW1Gb250U2l6ZShwcmVmZXJlbmNlKSk7CisgICAgRVhQRUNUX0ZBTFNF
KFdLUHJlZmVyZW5jZXNHZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHByZWZlcmVuY2UpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoV0tQcmVmZXJlbmNlc0dldERldmVsb3BlckV4dHJhc0VuYWJsZWQocHJl
ZmVyZW5jZSkpOworICAgIEVYUEVDVF9UUlVFKFdLUHJlZmVyZW5jZXNHZXRUZXh0QXJlYXNBcmVS
ZXNpemFibGUocHJlZmVyZW5jZSkpOwogCiAjaWYgUExBVEZPUk0oV0lOKQotICAgIFRFU1RfQVNT
RVJUKFdLUHJlZmVyZW5jZXNHZXRGb250U21vb3RoaW5nTGV2ZWwocHJlZmVyZW5jZSkgPT0ga1dL
Rm9udFNtb290aGluZ0xldmVsV2luZG93cyk7CisgICAgRVhQRUNUX0VRKGtXS0ZvbnRTbW9vdGhp
bmdMZXZlbFdpbmRvd3MsIFdLUHJlZmVyZW5jZXNHZXRGb250U21vb3RoaW5nTGV2ZWwocHJlZmVy
ZW5jZSkpOwogI2Vsc2UKLSAgICBURVNUX0FTU0VSVChXS1ByZWZlcmVuY2VzR2V0Rm9udFNtb290
aGluZ0xldmVsKHByZWZlcmVuY2UpID09IGtXS0ZvbnRTbW9vdGhpbmdMZXZlbE1lZGl1bSk7Cisg
ICAgRVhQRUNUX0VRKGtXS0ZvbnRTbW9vdGhpbmdMZXZlbE1lZGl1bSwgV0tQcmVmZXJlbmNlc0dl
dEZvbnRTbW9vdGhpbmdMZXZlbChwcmVmZXJlbmNlKSk7CiAjZW5kaWYKIAotICAgIFRFU1RfQVNT
RVJUKFdLUHJlZmVyZW5jZXNHZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChwcmVmZXJl
bmNlKSA9PSB0cnVlKTsKLSAgICBURVNUX0FTU0VSVChXS1ByZWZlcmVuY2VzR2V0Q29tcG9zaXRp
bmdCb3JkZXJzVmlzaWJsZShwcmVmZXJlbmNlKSA9PSBmYWxzZSk7Ci0gICAgVEVTVF9BU1NFUlQo
V0tQcmVmZXJlbmNlc0dldENvbXBvc2l0aW5nUmVwYWludENvdW50ZXJzVmlzaWJsZShwcmVmZXJl
bmNlKSA9PSBmYWxzZSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tQcmVmZXJlbmNlc0dldE5lZWRzU2l0
ZVNwZWNpZmljUXVpcmtzKHByZWZlcmVuY2UpID09IGZhbHNlKTsKKyAgICBFWFBFQ1RfVFJVRShX
S1ByZWZlcmVuY2VzR2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQocHJlZmVyZW5jZSkp
OworICAgIEVYUEVDVF9GQUxTRShXS1ByZWZlcmVuY2VzR2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlz
aWJsZShwcmVmZXJlbmNlKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdLUHJlZmVyZW5jZXNHZXRDb21w
b3NpdGluZ1JlcGFpbnRDb3VudGVyc1Zpc2libGUocHJlZmVyZW5jZSkpOworICAgIEVYUEVDVF9G
QUxTRShXS1ByZWZlcmVuY2VzR2V0TmVlZHNTaXRlU3BlY2lmaWNRdWlya3MocHJlZmVyZW5jZSkp
OwogCiAgICAgV0tSZWxlYXNlKHByZWZlcmVuY2UpOwogfQpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL1dLU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV0tTdHJpbmcuY3BwCShyZXZpc2lvbiA4NjUwOSkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XS1N0cmluZy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDM4ICszMiwzOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBURVNU
KFdlYktpdDIsIFdLU3RyaW5nKQogewogICAgIFdLU3RyaW5nUmVmIHN0cmluZyA9IFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJoZWxsbyIpOwotICAgIFRFU1RfQVNTRVJUKCFXS1N0cmlu
Z0lzRW1wdHkoc3RyaW5nKSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJc0VxdWFsKHN0cmlu
Zywgc3RyaW5nKSk7Ci0gICAgVEVTVF9BU1NFUlQoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmlu
ZyhzdHJpbmcsICJoZWxsbyIpKTsKLSAgICBURVNUX0FTU0VSVChXS1N0cmluZ0dldE1heGltdW1V
VEY4Q1N0cmluZ1NpemUoc3RyaW5nKSA9PSAxNik7CisgICAgRVhQRUNUX1RSVUUoIVdLU3RyaW5n
SXNFbXB0eShzdHJpbmcpKTsKKyAgICBFWFBFQ1RfVFJVRShXS1N0cmluZ0lzRXF1YWwoc3RyaW5n
LCBzdHJpbmcpKTsKKyAgICBFWFBFQ1RfVFJVRShXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KHN0cmluZywgImhlbGxvIikpOworICAgIEVYUEVDVF9FUSgxNnUsIFdLU3RyaW5nR2V0TWF4aW11
bVVURjhDU3RyaW5nU2l6ZShzdHJpbmcpKTsKIAogICAgIHNpemVfdCBtYXhTaXplID0gV0tTdHJp
bmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKHN0cmluZyk7CiAgICAgY2hhciogYnVmZmVyID0g
bmV3IGNoYXJbbWF4U2l6ZV07CiAKICAgICBzaXplX3QgYWN0dWFsU2l6ZSA9IFdLU3RyaW5nR2V0
VVRGOENTdHJpbmcoc3RyaW5nLCBidWZmZXIsIG1heFNpemUpOwotICAgIFRFU1RfQVNTRVJUKGFj
dHVhbFNpemUgPT0gNik7Ci0gICAgVEVTVF9BU1NFUlQoc3RyY21wKGJ1ZmZlciwgImhlbGxvIikg
PT0gMCk7CisgICAgRVhQRUNUX0VRKDZ1LCBhY3R1YWxTaXplKTsKKyAgICBFWFBFQ1RfU1RSRVEo
ImhlbGxvIiwgYnVmZmVyKTsKIAogICAgIGRlbGV0ZVtdIGJ1ZmZlcjsKICAgICAKICAgICBtYXhT
aXplID0gV0tTdHJpbmdHZXRMZW5ndGgoc3RyaW5nKTsKLSAgICBURVNUX0FTU0VSVChtYXhTaXpl
ID09IDUpOworICAgIEVYUEVDVF9FUSg1dSwgbWF4U2l6ZSk7CiAKICAgICAvLyBBbGxvY2F0ZSBh
IGJ1ZmZlciBvbmUgY2hhcmFjdGVyIGxhcmdlciB0aGFuIHdlIG5lZWQuCiAgICAgV0tDaGFyKiB1
bmlCdWZmZXIgPSBuZXcgV0tDaGFyW21heFNpemUrMV07CiAgICAgYWN0dWFsU2l6ZSA9IFdLU3Ry
aW5nR2V0Q2hhcmFjdGVycyhzdHJpbmcsIHVuaUJ1ZmZlciwgbWF4U2l6ZSk7Ci0gICAgVEVTVF9B
U1NFUlQoYWN0dWFsU2l6ZSA9PSA1KTsKKyAgICBFWFBFQ1RfRVEoNXUsIGFjdHVhbFNpemUpOwog
ICAgIAogICAgIFdLQ2hhciBoZWxsb0J1ZmZlcltdID0geyAnaCcsICdlJywgJ2wnLCAnbCcsICdv
JyB9OwotICAgIFRFU1RfQVNTRVJUKCFtZW1jbXAodW5pQnVmZmVyLCBoZWxsb0J1ZmZlciwgMTAp
KTsKKyAgICBFWFBFQ1RfVFJVRSghbWVtY21wKHVuaUJ1ZmZlciwgaGVsbG9CdWZmZXIsIDEwKSk7
CiAgICAgCiAgICAgLy8gVGVzdCBwYXNzaW5nIGEgYnVmZmVyIGxlbmd0aCA8IHRoZSBzdHJpbmcg
bGVuZ3RoLgotICAgIGFjdHVhbFNpemUgPSBXS1N0cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCB1
bmlCdWZmZXIsIG1heFNpemUtMSk7Ci0gICAgVEVTVF9BU1NFUlQoYWN0dWFsU2l6ZSA9PSA0KTsK
KyAgICBhY3R1YWxTaXplID0gV0tTdHJpbmdHZXRDaGFyYWN0ZXJzKHN0cmluZywgdW5pQnVmZmVy
LCBtYXhTaXplIC0gMSk7CisgICAgRVhQRUNUX0VRKDR1LCBhY3R1YWxTaXplKTsKICAgICAKICAg
ICAvLyBUZXN0IHBhc3NpbmcgYSBidWZmZXIgbGVuZ3RoID4gdGhlIHN0cmluZyBsZW5ndGguCi0g
ICAgYWN0dWFsU2l6ZSA9IFdLU3RyaW5nR2V0Q2hhcmFjdGVycyhzdHJpbmcsIHVuaUJ1ZmZlciwg
bWF4U2l6ZSsxKTsKLSAgICBURVNUX0FTU0VSVChhY3R1YWxTaXplID09IDUpOworICAgIGFjdHVh
bFNpemUgPSBXS1N0cmluZ0dldENoYXJhY3RlcnMoc3RyaW5nLCB1bmlCdWZmZXIsIG1heFNpemUg
KyAxKTsKKyAgICBFWFBFQ1RfRVEoNXUsIGFjdHVhbFNpemUpOwogICAgIAogICAgIGRlbGV0ZVtd
IHVuaUJ1ZmZlcjsKICAgICAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9XS1N0cmluZ0pTU3RyaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvV0tTdHJpbmdKU1N0cmluZy5jcHAJKHJldmlzaW9uIDg2NTA5KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dLU3RyaW5nSlNTdHJpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNywxMCArMzcsMTAgQEAgVEVTVChXZWJLaXQyLCBXS1N0cmluZ0pT
U3RyaW5nKQogICAgIEpTU3RyaW5nUmVmIGpzU3RyaW5nID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoImhlbGxvIik7CiAgICAgCiAgICAgV0tTdHJpbmdSZWYgY29udmVydGVkSlNTdHJp
bmcgPSBXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhqc1N0cmluZyk7Ci0gICAgVEVTVF9BU1NF
UlQoV0tTdHJpbmdJc0VxdWFsKHdrU3RyaW5nLCBjb252ZXJ0ZWRKU1N0cmluZykpOworICAgIEVY
UEVDVF9UUlVFKFdLU3RyaW5nSXNFcXVhbCh3a1N0cmluZywgY29udmVydGVkSlNTdHJpbmcpKTsK
ICAgICAKICAgICBKU1N0cmluZ1JlZiBjb252ZXJ0ZWRXS1N0cmluZyA9IFdLU3RyaW5nQ29weUpT
U3RyaW5nKHdrU3RyaW5nKTsKLSAgICBURVNUX0FTU0VSVChKU1N0cmluZ0lzRXF1YWwoanNTdHJp
bmcsIGNvbnZlcnRlZFdLU3RyaW5nKSk7CisgICAgRVhQRUNUX1RSVUUoSlNTdHJpbmdJc0VxdWFs
KGpzU3RyaW5nLCBjb252ZXJ0ZWRXS1N0cmluZykpOwogCiAgICAgV0tSZWxlYXNlKHdrU3RyaW5n
KTsKICAgICBXS1JlbGVhc2UoY29udmVydGVkSlNTdHJpbmcpOwpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL3dpbi9BbHRLZXlHZW5lcmF0ZXNXTVN5c0NvbW1hbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93aW4vQWx0
S2V5R2VuZXJhdGVzV01TeXNDb21tYW5kLmNwcAkocmV2aXNpb24gODY1MDkpCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvd2luL0FsdEtleUdlbmVyYXRlc1dNU3lzQ29tbWFu
ZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgVEVTVChXZWJLaXQyLCBBbHRL
ZXlHZW5lcmF0ZXNXTVN5c0NvbW1hbgogCiAgICAgLy8gVGhlIFdNX1NZU0tFWVVQIG1lc3NhZ2Ug
c2hvdWxkIGhhdmUgZ2VuZXJhdGVkIGEgV01fU1lTQ09NTUFORCBtZXNzYWdlIHRoYXQgd2FzIHNl
bnQgdG8gdGhlCiAgICAgLy8gV0tWaWV3J3MgcGFyZW50IHdpbmRvdy4KLSAgICBURVNUX0FTU0VS
VChvYnNlcnZlci53aW5kb3dEaWRSZWNlaXZlV01TeXNDb21tYW5kKCkpOworICAgIEVYUEVDVF9U
UlVFKG9ic2VydmVyLndpbmRvd0RpZFJlY2VpdmVXTVN5c0NvbW1hbmQoKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi93aW4vSGlkZUZpbmRJbmRpY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93aW4vSGlkZUZpbmRJbmRpY2F0b3IuY3BwCShyZXZp
c2lvbiA4NjUwOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93aW4vSGlk
ZUZpbmRJbmRpY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MiwxNCArNzIsMTQgQEAgVEVT
VChXZWJLaXQyLCBIaWRlRmluZEluZGljYXRvcikKICAgICBVdGlsOjpydW4oJmZpbmRJbmRpY2F0
b3JDYWxsYmFja1dhc0NhbGxlZCk7CiAgICAgZmluZEluZGljYXRvckNhbGxiYWNrV2FzQ2FsbGVk
ID0gZmFsc2U7CiAKLSAgICBURVNUX0FTU0VSVChiaXRtYXApOworICAgIEVYUEVDVF9OT1RfTlVM
TChiaXRtYXApOwogICAgIDo6RGVsZXRlT2JqZWN0KGJpdG1hcCk7CiAgICAgYml0bWFwID0gMDsK
IAogICAgIFdLUGFnZUhpZGVGaW5kVUkod2ViVmlldy5wYWdlKCkpOwogICAgIFV0aWw6OnJ1bigm
ZmluZEluZGljYXRvckNhbGxiYWNrV2FzQ2FsbGVkKTsKIAotICAgIFRFU1RfQVNTRVJUKCFiaXRt
YXApOworICAgIEVYUEVDVF9OVUxMKGJpdG1hcCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi93aW4vVHJh
bnNsYXRlTWVzc2FnZUdlbmVyYXRlc1dNQ2hhci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL3dpbi9UcmFuc2xhdGVNZXNzYWdlR2VuZXJhdGVzV01D
aGFyLmNwcAkocmV2aXNpb24gODY1MDkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvd2luL1RyYW5zbGF0ZU1lc3NhZ2VHZW5lcmF0ZXNXTUNoYXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04NSw3ICs4NSw3IEBAIFRFU1QoV2ViS2l0MiwgVHJhbnNsYXRlTWVzc2FnZUdlbmVy
YXRlc1cKICAgICBydW5BbmRXYXRjaEZvcldNQ2hhcigmZGlkTm90SGFuZGxlS2V5RXZlbnRDYWxs
ZWQpOwogCiAgICAgLy8gV2ViS2l0IHNob3VsZCBub3QgaGF2ZSBjYWxsZWQgVHJhbnNsYXRlTWVz
c2FnZSgpIG9uIHRoZSBXTV9LRVlET1dOIG1lc3NhZ2Ugc2luY2Ugd2UgaW5zdGFsbGVkIGEgZGlk
Tm90SGFuZGxlS2V5RXZlbnQgY2FsbGJhY2suCi0gICAgVEVTVF9BU1NFUlQoIWRpZFNlZVdNQ2hh
cik7CisgICAgRVhQRUNUX0ZBTFNFKGRpZFNlZVdNQ2hhcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="86875"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>